From 643bc154a28c9307916da4cdaab09eb28bc7df16 Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Mon, 10 Mar 2025 13:07:07 +0200 Subject: [PATCH 1/9] improvements --- crypto/gogo2/_notes.md | 7 +- crypto/gogo2/cuda.py | 4 + crypto/gogo2/main.py | 594 +++++++++++++++++++++++++++++++---------- crypto/gogo2/readme.md | 6 + 4 files changed, 473 insertions(+), 138 deletions(-) create mode 100644 crypto/gogo2/cuda.py diff --git a/crypto/gogo2/_notes.md b/crypto/gogo2/_notes.md index 0cb4fd6..5ef19f9 100644 --- a/crypto/gogo2/_notes.md +++ b/crypto/gogo2/_notes.md @@ -16,4 +16,9 @@ C:\Users\popov\miniforge3\Lib\site-packages\torch\amp\grad_scaler.py:132: UserWa 2025-03-10 12:11:30,927 - INFO - Starting training on device: cpu 2025-03-10 12:11:30,928 - ERROR - Training failed: 'TradingEnvironment' object has no attribute 'initialize_price_predictor' 2025-03-10 12:11:30,928 - INFO - Exchange connection closed -Backend tkagg is interactive backend. Turning interactive mode on. \ No newline at end of file +Backend tkagg is interactive backend. Turning interactive mode on. + + + + +2025-03-10 12:35:14,489 - INFO - Episode 34: Reward=232.41, Balance=$98.47, Win Rate=70.6%, Trades=17, Episode PnL=$-1.33, Total PnL=$-559.78, Max Drawdown=7.0%, Pred Accuracy=99.9% \ No newline at end of file diff --git a/crypto/gogo2/cuda.py b/crypto/gogo2/cuda.py new file mode 100644 index 0000000..727e960 --- /dev/null +++ b/crypto/gogo2/cuda.py @@ -0,0 +1,4 @@ +import torch +print(f"PyTorch version: {torch.__version__}") +print(f"CUDA available: {torch.cuda.is_available()}") +print(f"CUDA version: {torch.version.cuda if torch.cuda.is_available() else 'Not available'}") \ No newline at end of file diff --git a/crypto/gogo2/main.py b/crypto/gogo2/main.py index d149888..a580720 100644 --- a/crypto/gogo2/main.py +++ b/crypto/gogo2/main.py @@ -22,6 +22,7 @@ from sklearn.preprocessing import MinMaxScaler import copy import argparse import traceback +import math # Configure logging logging.basicConfig( @@ -93,6 +94,9 @@ class DQN(nn.Module): def __init__(self, state_size, action_size, hidden_size=384, lstm_layers=2, attention_heads=4): super(DQN, self).__init__() + # Ensure model parameters are float32 + self.float() + self.state_size = state_size self.hidden_size = hidden_size self.lstm_layers = lstm_layers @@ -224,7 +228,12 @@ class PricePredictionModel(nn.Module): predictions = self.postprocess(scaled_predictions) return predictions - def train_on_new_data(self, price_history, optimizer, epochs=10): + def train_on_new_data(self, price_history, optimizer, epochs=5): + """Train the model on new price data""" + # Convert to numpy array if it's not already + if isinstance(price_history, list): + price_history = np.array(price_history, dtype=np.float32) # Force float32 + if len(price_history) < 35: # Need enough history for training return 0.0 @@ -320,6 +329,9 @@ class TradingEnvironment: self.optimal_tops = [] self.optimal_signals = np.array([]) + # Add risk factor for curriculum learning + self.risk_factor = 1.0 # Default risk factor + def reset(self): """Reset the environment to initial state""" self.balance = self.initial_balance @@ -635,14 +647,14 @@ class TradingEnvironment: """Create state representation for the agent""" if len(self.data) < 30 or len(self.features['price']) == 0: # Return zeros if not enough data - return np.zeros(STATE_SIZE) + return np.zeros(STATE_SIZE, dtype=np.float32) # Ensure float32 # Create a normalized state vector with recent price action and indicators state_components = [] # Price features (normalize recent prices by the latest price) latest_price = self.features['price'][-1] - price_features = np.array(self.features['price'][-10:]) / latest_price - 1.0 + price_features = np.array(self.features['price'][-10:], dtype=np.float32) / latest_price - 1.0 state_components.append(price_features) # Volume features (normalize by max volume) @@ -732,43 +744,46 @@ class TradingEnvironment: state = state[:STATE_SIZE] elif len(state) < STATE_SIZE: # Pad with zeros if too short - padding = np.zeros(STATE_SIZE - len(state)) + padding = np.zeros(STATE_SIZE - len(state), dtype=np.float32) # Ensure float32 state = np.concatenate([state, padding]) - return state + # Ensure float32 type + return state.astype(np.float32) def calculate_reward(self, action): """Calculate reward for the given action with improved penalties for losing trades""" reward = 0 + # Store previous balance for direct PnL calculation + prev_balance = self.balance + # Base reward for actions if action == 0: # HOLD - reward = -0.01 # Small penalty for doing nothing + # Small penalty for doing nothing to encourage action + # But make it context-dependent - holding during high volatility should be penalized more + volatility = self.get_recent_volatility() + reward = -0.01 * (1 + volatility) elif action == 1: # BUY/LONG if self.position == 'flat': # Opening a long position self.position = 'long' self.entry_price = self.current_price + self.entry_index = self.current_step self.position_size = self.calculate_position_size() - self.stop_loss = self.entry_price * (1 - STOP_LOSS_PERCENT/100) - self.take_profit = self.entry_price * (1 + TAKE_PROFIT_PERCENT/100) - # Check if this is an optimal buy point (bottom) - current_idx = len(self.features['price']) - 1 - if hasattr(self, 'optimal_bottoms') and current_idx in self.optimal_bottoms: - reward += 2.0 # Bonus for buying at a bottom - else: - # Check if we're buying in a downtrend (bad) - if self.is_downtrend(): - reward -= 0.5 # Penalty for buying in downtrend - else: - reward += 0.1 # Small reward for opening a position + # Calculate stop loss and take profit levels + self.stop_loss = self.entry_price * (1 - STOP_LOSS_PERCENT / 100) + self.take_profit = self.entry_price * (1 + TAKE_PROFIT_PERCENT / 100) + + # Check if this is a good entry point based on technical indicators + entry_quality = self.evaluate_entry_quality('long') + reward += entry_quality * 0.5 # Scale the reward based on entry quality logger.info(f"OPENED LONG at {self.entry_price} | Stop loss: {self.stop_loss} | Take profit: {self.take_profit}") elif self.position == 'short': - # Close short and open long + # Closing a short position pnl_percent = (self.entry_price - self.current_price) / self.entry_price * 100 pnl_dollar = pnl_percent / 100 * self.position_size @@ -778,46 +793,39 @@ class TradingEnvironment: # Update balance self.balance += pnl_dollar self.total_pnl += pnl_dollar + self.episode_pnl += pnl_dollar # Record trade - trade_duration = len(self.features['price']) - self.entry_index self.trades.append({ 'type': 'short', 'entry': self.entry_price, 'exit': self.current_price, 'pnl_percent': pnl_percent, 'pnl_dollar': pnl_dollar, - 'duration': trade_duration, - 'market_direction': self.get_market_direction() + 'duration': self.current_step - self.entry_index, + 'market_direction': self.get_market_direction(), + 'reason': 'manual_close' }) - # Reward based on PnL with stronger penalties for losses + # Update win/loss count if pnl_dollar > 0: - reward += 1.0 + pnl_dollar / 10 # Positive reward for profit self.win_count += 1 + reward += 1.0 + (pnl_percent / 2) # Bonus for winning trade else: - # Stronger penalty for losses, scaled by the size of the loss - loss_penalty = 1.0 + abs(pnl_dollar) / 5 - reward -= loss_penalty self.loss_count += 1 - - # Extra penalty for closing a losing trade too quickly - if trade_duration < 5: - reward -= 0.5 # Penalty for very short losing trades + reward -= 1.0 + (abs(pnl_percent) / 2) # Penalty for losing trade logger.info(f"CLOSED short at {self.current_price} | PnL: {pnl_percent:.2f}% | ${pnl_dollar:.2f}") - # Now open long + # Reset position and open new long self.position = 'long' self.entry_price = self.current_price - self.entry_index = len(self.features['price']) - 1 + self.entry_index = self.current_step self.position_size = self.calculate_position_size() - self.stop_loss = self.entry_price * (1 - STOP_LOSS_PERCENT/100) - self.take_profit = self.entry_price * (1 + TAKE_PROFIT_PERCENT/100) - # Check if this is an optimal buy point - if hasattr(self, 'optimal_bottoms') and self.entry_index in self.optimal_bottoms: - reward += 2.0 # Bonus for buying at a bottom + # Calculate stop loss and take profit levels + self.stop_loss = self.entry_price * (1 - STOP_LOSS_PERCENT / 100) + self.take_profit = self.entry_price * (1 + TAKE_PROFIT_PERCENT / 100) logger.info(f"OPENED LONG at {self.entry_price} | Stop loss: {self.stop_loss} | Take profit: {self.take_profit}") @@ -975,7 +983,14 @@ class TradingEnvironment: self.stop_loss = 0 self.take_profit = 0 - # Add prediction accuracy component to reward + # Add reward based on direct PnL change + balance_change = self.balance - prev_balance + if balance_change > 0: + reward += balance_change * 0.5 # Positive reward for making money + else: + reward += balance_change * 1.0 # Stronger negative reward for losing money + + # Add reward for predicted price movement alignment if hasattr(self, 'predicted_prices') and len(self.predicted_prices) > 0: # Compare the first prediction with actual price if len(self.data) > 1: @@ -985,12 +1000,106 @@ class TradingEnvironment: # Reward accurate predictions, penalize bad ones if prediction_error < 0.005: # Less than 0.5% error - reward += 0.5 + reward += 0.2 elif prediction_error > 0.02: # More than 2% error - reward -= 0.5 + reward -= 0.2 + + # Add reward/penalty based on market trend alignment + market_direction = self.get_market_direction() + if (self.position == 'long' and market_direction == 'uptrend') or \ + (self.position == 'short' and market_direction == 'downtrend'): + reward += 0.2 # Reward for trading with the trend + elif (self.position == 'long' and market_direction == 'downtrend') or \ + (self.position == 'short' and market_direction == 'uptrend'): + reward -= 0.3 # Stronger penalty for trading against the trend return reward + def evaluate_entry_quality(self, position_type): + """Evaluate the quality of an entry point based on technical indicators""" + score = 0 + + # Get current indicators + rsi = self.features['rsi'][-1] if len(self.features['rsi']) > 0 else 50 + macd = self.features['macd'][-1] if len(self.features['macd']) > 0 else 0 + macd_signal = self.features['macd_signal'][-1] if len(self.features['macd_signal']) > 0 else 0 + stoch_k = self.features['stoch_k'][-1] if len(self.features['stoch_k']) > 0 else 50 + stoch_d = self.features['stoch_d'][-1] if len(self.features['stoch_d']) > 0 else 50 + + if position_type == 'long': + # RSI oversold condition (good for long) + if rsi < 30: + score += 0.5 + elif rsi < 40: + score += 0.2 + elif rsi > 70: + score -= 0.5 # Overbought, bad for long + + # MACD crossover (bullish) + if macd > macd_signal and macd > 0: + score += 0.3 + elif macd < macd_signal and macd < 0: + score -= 0.3 + + # Stochastic oversold + if stoch_k < 20 and stoch_d < 20: + score += 0.3 + elif stoch_k > 80 and stoch_d > 80: + score -= 0.3 + + elif position_type == 'short': + # RSI overbought condition (good for short) + if rsi > 70: + score += 0.5 + elif rsi > 60: + score += 0.2 + elif rsi < 30: + score -= 0.5 # Oversold, bad for short + + # MACD crossover (bearish) + if macd < macd_signal and macd < 0: + score += 0.3 + elif macd > macd_signal and macd > 0: + score -= 0.3 + + # Stochastic overbought + if stoch_k > 80 and stoch_d > 80: + score += 0.3 + elif stoch_k < 20 and stoch_d < 20: + score -= 0.3 + + # Check price relative to moving averages + if len(self.features['ema_9']) > 0 and len(self.features['ema_21']) > 0: + ema_9 = self.features['ema_9'][-1] + ema_21 = self.features['ema_21'][-1] + + if position_type == 'long': + if self.current_price > ema_9 > ema_21: # Strong uptrend + score += 0.4 + elif self.current_price < ema_9 < ema_21: # Strong downtrend + score -= 0.4 + elif position_type == 'short': + if self.current_price < ema_9 < ema_21: # Strong downtrend + score += 0.4 + elif self.current_price > ema_9 > ema_21: # Strong uptrend + score -= 0.4 + + return score + + def get_recent_volatility(self): + """Calculate recent price volatility""" + if len(self.features['price']) < 10: + return 0 + + # Use ATR if available + if len(self.features['atr']) > 0: + return self.features['atr'][-1] / self.current_price + + # Otherwise calculate simple volatility + recent_prices = self.features['price'][-10:] + returns = [recent_prices[i] / recent_prices[i-1] - 1 for i in range(1, len(recent_prices))] + return np.std(returns) * 100 # Volatility as percentage + def is_downtrend(self): """Check if the market is in a downtrend""" if len(self.features['price']) < 20: @@ -1016,13 +1125,49 @@ class TradingEnvironment: return short_ema > long_ema def get_market_direction(self): - """Get the current market direction""" - if self.is_uptrend(): - return "uptrend" - elif self.is_downtrend(): - return "downtrend" - else: - return "sideways" + """Determine the current market direction (uptrend, downtrend, or sideways)""" + if len(self.features['price']) < 20: + return 'unknown' + + # Use EMAs to determine trend + if len(self.features['ema_9']) > 0 and len(self.features['ema_21']) > 0: + ema_9 = self.features['ema_9'][-5:] + ema_21 = self.features['ema_21'][-5:] + price = self.features['price'][-5:] + + # Check if price is above/below EMAs + price_above_ema9 = sum(p > e for p, e in zip(price, ema_9)) + price_above_ema21 = sum(p > e for p, e in zip(price, ema_21)) + ema9_above_ema21 = sum(e9 > e21 for e9, e21 in zip(ema_9, ema_21)) + + # Strong uptrend: price > EMA9 > EMA21 + if price_above_ema9 >= 4 and price_above_ema21 >= 4 and ema9_above_ema21 >= 4: + return 'uptrend' + + # Strong downtrend: price < EMA9 < EMA21 + elif price_above_ema9 <= 1 and price_above_ema21 <= 1 and ema9_above_ema21 <= 1: + return 'downtrend' + + # Check price action + price_data = self.features['price'][-20:] + price_change = (price_data[-1] / price_data[0] - 1) * 100 + + if price_change > 1.0: + return 'uptrend' + elif price_change < -1.0: + return 'downtrend' + + # Check RSI for trend confirmation + if len(self.features['rsi']) > 0: + rsi = self.features['rsi'][-5:] + avg_rsi = sum(rsi) / len(rsi) + + if avg_rsi > 60: + return 'uptrend' + elif avg_rsi < 40: + return 'downtrend' + + return 'sideways' def analyze_trades(self): """Analyze completed trades to identify patterns""" @@ -1119,12 +1264,17 @@ class TradingEnvironment: logger.info(f"Identified {len(bottoms)} optimal buy points and {len(tops)} optimal sell points") def calculate_position_size(self): - """Calculate position size based on current balance and risk parameters""" - # Use a fixed percentage of balance for each trade - risk_percent = 5.0 # Risk 5% of balance per trade + """Calculate position size based on current balance, volatility and risk parameters""" + # Base risk percentage (adjust based on volatility) + volatility = self.get_recent_volatility() + + # Reduce risk during high volatility + base_risk = 5.0 # Base risk percentage + adjusted_risk = base_risk / (1 + volatility * 5) # Reduce risk as volatility increases + adjusted_risk = max(1.0, min(adjusted_risk, base_risk)) # Cap between 1% and base_risk # Calculate position size with leverage - position_size = self.balance * (risk_percent / 100) * MAX_LEVERAGE + position_size = self.balance * (adjusted_risk / 100) * MAX_LEVERAGE # Apply a safety factor to avoid liquidation safety_factor = 0.8 @@ -1138,6 +1288,14 @@ class TradingEnvironment: max_position = self.balance * MAX_LEVERAGE position_size = min(position_size, max_position) + # Adjust stop loss based on volatility + global STOP_LOSS_PERCENT, TAKE_PROFIT_PERCENT + STOP_LOSS_PERCENT = 0.5 * (1 + volatility) # Wider stop loss during high volatility + TAKE_PROFIT_PERCENT = 1.5 * (1 + volatility * 0.5) # Higher take profit during high volatility + + # Apply risk factor from curriculum learning + position_size *= self.risk_factor + return position_size def calculate_fees(self, position_size): @@ -1152,15 +1310,15 @@ class TradingEnvironment: # Ensure GPU usage if available def get_device(): - """Get the best available device (CUDA GPU or CPU)""" + """Get the device to use (GPU or CPU)""" if torch.cuda.is_available(): device = torch.device("cuda") + # Set default tensor type to float32 for CUDA + torch.set_default_tensor_type(torch.FloatTensor) logger.info(f"Using GPU: {torch.cuda.get_device_name(0)}") - # Set up for mixed precision training - torch.backends.cudnn.benchmark = True else: device = torch.device("cpu") - logger.info("GPU not available, using CPU") + logger.info("Using CPU") return device # Update Agent class to use GPU properly @@ -1180,6 +1338,8 @@ class Agent: # Initialize policy and target networks self.policy_net = DQN(state_size, action_size, hidden_size, lstm_layers, attention_heads).to(self.device) self.target_net = DQN(state_size, action_size, hidden_size, lstm_layers, attention_heads).to(self.device) + ensure_float32(self.policy_net) + ensure_float32(self.target_net) self.target_net.load_state_dict(self.policy_net.state_dict()) self.target_net.eval() @@ -1194,6 +1354,16 @@ class Agent: # Create models directory if it doesn't exist os.makedirs("models", exist_ok=True) + + # Use pinned memory for faster CPU-to-GPU transfers + if self.device.type == "cuda": + self.use_pinned_memory = True + else: + self.use_pinned_memory = False + + # Ensure models are using float32 + self.policy_net.float() + self.target_net.float() def expand_model(self, new_state_size, new_hidden_size=512, new_lstm_layers=3, new_attention_heads=8): """Expand the model to handle more features or increase capacity""" @@ -1245,20 +1415,34 @@ class Agent: return True def select_action(self, state, training=True): + """Select an action using epsilon-greedy policy""" sample = random.random() + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + math.exp(-1. * self.steps_done / self.epsilon_decay) if training: - # Epsilon decay - self.epsilon = EPSILON_END + (EPSILON_START - EPSILON_END) * \ - np.exp(-1. * self.steps_done / EPSILON_DECAY) - self.steps_done += 1 - - if sample > self.epsilon or not training: - with torch.no_grad(): - state_tensor = torch.FloatTensor(state).to(self.device) - action_values = self.policy_net(state_tensor) - return action_values.max(1)[1].item() + self.epsilon = eps_threshold else: + self.epsilon = 0.0 # No exploration during evaluation/live trading + + self.steps_done += 1 + + if sample > self.epsilon: + with torch.no_grad(): + # Convert state to tensor and ensure it's float32 (not double/float64) + state_tensor = torch.FloatTensor(state).to(self.device) + + # Ensure state has correct shape + if state_tensor.dim() == 1: + state_tensor = state_tensor.unsqueeze(0) + + # Get Q values + q_values = self.policy_net(state_tensor) + + # Return action with highest Q value + return q_values.max(1)[1].item() + else: + # Random action return random.randrange(self.action_size) def learn(self): @@ -1270,12 +1454,27 @@ class Agent: # Sample a batch of experiences experiences = self.memory.sample(BATCH_SIZE) - # Convert experiences to tensors - states = torch.FloatTensor([e.state for e in experiences]).to(self.device) - actions = torch.LongTensor([e.action for e in experiences]).to(self.device) - rewards = torch.FloatTensor([e.reward for e in experiences]).to(self.device) - next_states = torch.FloatTensor([e.next_state for e in experiences]).to(self.device) - dones = torch.FloatTensor([e.done for e in experiences]).to(self.device) + # Convert experiences to tensors more efficiently + # First create numpy arrays, then convert to tensors + states_np = np.array([e.state for e in experiences], dtype=np.float32) # Ensure float32 + actions_np = np.array([e.action for e in experiences], dtype=np.int64) # Ensure int64 + rewards_np = np.array([e.reward for e in experiences], dtype=np.float32) # Ensure float32 + next_states_np = np.array([e.next_state for e in experiences], dtype=np.float32) # Ensure float32 + dones_np = np.array([e.done for e in experiences], dtype=np.float32) # Ensure float32 + + # Convert numpy arrays to tensors with pinned memory if using GPU + if self.use_pinned_memory: + states = torch.from_numpy(states_np).pin_memory().to(self.device, non_blocking=True) + actions = torch.from_numpy(actions_np).long().pin_memory().to(self.device, non_blocking=True) + rewards = torch.from_numpy(rewards_np).pin_memory().to(self.device, non_blocking=True) + next_states = torch.from_numpy(next_states_np).pin_memory().to(self.device, non_blocking=True) + dones = torch.from_numpy(dones_np).pin_memory().to(self.device, non_blocking=True) + else: + states = torch.FloatTensor(states_np).to(self.device) + actions = torch.LongTensor(actions_np).to(self.device) + rewards = torch.FloatTensor(rewards_np).to(self.device) + next_states = torch.FloatTensor(next_states_np).to(self.device) + dones = torch.FloatTensor(dones_np).to(self.device) # Use mixed precision for forward/backward passes if self.device.type == "cuda": @@ -1346,29 +1545,60 @@ class Agent: def update_target_network(self): self.target_net.load_state_dict(self.policy_net.state_dict()) - def save(self, path="models/trading_agent.pt"): - os.makedirs(os.path.dirname(path), exist_ok=True) - torch.save({ - 'policy_net': self.policy_net.state_dict(), - 'target_net': self.target_net.state_dict(), - 'optimizer': self.optimizer.state_dict(), - 'epsilon': self.epsilon, - 'steps_done': self.steps_done - }, path) - logger.info(f"Model saved to {path}") - - def load(self, path="models/trading_agent.pt"): - if os.path.isfile(path): - checkpoint = torch.load(path) - self.policy_net.load_state_dict(checkpoint['policy_net']) - self.target_net.load_state_dict(checkpoint['target_net']) - self.optimizer.load_state_dict(checkpoint['optimizer']) - self.epsilon = checkpoint['epsilon'] - self.steps_done = checkpoint['steps_done'] - logger.info(f"Model loaded from {path}") - return True - logger.warning(f"No model found at {path}") - return False + def save(self, path): + """Save model to path""" + try: + # Create directory if it doesn't exist + os.makedirs(os.path.dirname(path), exist_ok=True) + + # Save model state + torch.save({ + 'policy_net': self.policy_net.state_dict(), + 'target_net': self.target_net.state_dict(), + 'optimizer': self.optimizer.state_dict(), + 'steps_done': self.steps_done + }, path) + + logger.info(f"Model saved to {path}") + except Exception as e: + logger.error(f"Failed to save model: {e}") + logger.error(f"Traceback: {traceback.format_exc()}") + + def load(self, path): + """Load model from path with proper error handling for PyTorch 2.6+""" + try: + logger.info(f"Loading model from {path}") + + # First try with weights_only=True (safer) + try: + # Add numpy scalar to safe globals first + import torch.serialization + torch.serialization.add_safe_globals(['numpy._core.multiarray.scalar']) + + # Load the model + checkpoint = torch.load(path, map_location=self.device) + self.policy_net.load_state_dict(checkpoint['policy_net']) + self.target_net.load_state_dict(checkpoint['target_net']) + self.optimizer.load_state_dict(checkpoint['optimizer']) + self.steps_done = checkpoint.get('steps_done', 0) + logger.info(f"Model loaded successfully with weights_only=True") + + except Exception as e: + logger.warning(f"Could not load with weights_only=True: {e}") + logger.warning("Attempting to load with weights_only=False (less secure)") + + # Fall back to weights_only=False (less secure but more compatible) + checkpoint = torch.load(path, map_location=self.device, weights_only=False) + self.policy_net.load_state_dict(checkpoint['policy_net']) + self.target_net.load_state_dict(checkpoint['target_net']) + self.optimizer.load_state_dict(checkpoint['optimizer']) + self.steps_done = checkpoint.get('steps_done', 0) + logger.info(f"Model loaded successfully with weights_only=False") + + except Exception as e: + logger.error(f"Failed to load model: {e}") + logger.error(f"Traceback: {traceback.format_exc()}") + raise async def get_live_prices(symbol="ETH/USDT", timeframe="1m"): """Get live price data using websockets""" @@ -1408,10 +1638,28 @@ async def get_live_prices(symbol="ETH/USDT", timeframe="1m"): await asyncio.sleep(5) break -async def train_agent(agent, env, num_episodes=1000, max_steps_per_episode=1000): +async def train_agent(agent, env, num_episodes=1000, max_steps_per_episode=1000, exchange=None): """Train the agent using historical and live data with GPU acceleration""" logger.info(f"Starting training on device: {agent.device}") + # Add early stopping based on performance + patience = 50 # Episodes to wait for improvement + best_pnl = -float('inf') + episodes_without_improvement = 0 + + # Add adaptive learning rate + initial_lr = LEARNING_RATE + min_lr = LEARNING_RATE / 10 + + # Add curriculum learning + curriculum_stages = [ + {"episodes": 100, "risk_factor": 0.5, "exploration": 0.3}, # Conservative trading + {"episodes": 200, "risk_factor": 0.75, "exploration": 0.2}, # Moderate risk + {"episodes": 300, "risk_factor": 1.0, "exploration": 0.1}, # Normal risk + {"episodes": 400, "risk_factor": 1.25, "exploration": 0.05} # Aggressive trading + ] + current_stage = 0 + stats = { 'episode_rewards': [], 'episode_lengths': [], @@ -1420,19 +1668,45 @@ async def train_agent(agent, env, num_episodes=1000, max_steps_per_episode=1000) 'episode_pnls': [], 'cumulative_pnl': [], 'drawdowns': [], - 'prediction_accuracy': [], - 'trade_analysis': [] + 'prediction_accuracy': [] } - best_reward = -float('inf') - best_pnl = -float('inf') - try: # Initialize price predictor env.initialize_price_predictor(agent.device) for episode in range(num_episodes): try: + # Update curriculum stage if needed + if current_stage < len(curriculum_stages) - 1 and episode >= curriculum_stages[current_stage]["episodes"]: + current_stage += 1 + logger.info(f"Moving to curriculum stage {current_stage+1}: " + f"risk_factor={curriculum_stages[current_stage]['risk_factor']}, " + f"exploration={curriculum_stages[current_stage]['exploration']}") + + # Apply curriculum settings + risk_factor = curriculum_stages[current_stage]["risk_factor"] + exploration = curriculum_stages[current_stage]["exploration"] + + # Set exploration rate for this episode + agent.epsilon = exploration + + # Set risk factor for this episode + env.risk_factor = risk_factor + + # Refresh data with latest candles if exchange is provided + if exchange is not None: + try: + logger.info(f"Fetching latest data for episode {episode}") + latest_data = await fetch_ohlcv_data(exchange, "ETH/USDT", "1m", 100) + if latest_data: + # Add new data to environment + for candle in latest_data: + env.add_data(candle) + logger.info(f"Added {len(latest_data)} new candles for episode {episode}") + except Exception as e: + logger.error(f"Error refreshing data: {e}") + # Reset environment state = env.reset() episode_reward = 0 @@ -1457,49 +1731,34 @@ async def train_agent(agent, env, num_episodes=1000, max_steps_per_episode=1000) # Store experience agent.memory.push(state, action, reward, next_state, done) + # Learn from experience + loss = agent.learn() + + # Update state and reward state = next_state episode_reward += reward - # Learn from experience with mixed precision - try: - loss = agent.learn() - if loss is not None: - agent.writer.add_scalar('Loss/train', loss, agent.steps_done) - except Exception as e: - logger.error(f"Learning error in episode {episode}, step {step}: {e}") - - # Update price predictions periodically - if step % 10 == 0: - env.update_price_predictions() - + # Break if done if done: break - # Update target network - if episode % TARGET_UPDATE == 0: - agent.target_net.load_state_dict(agent.policy_net.state_dict()) - # Calculate win rate - if len(env.trades) > 0: - wins = sum(1 for trade in env.trades if trade.get('pnl_percent', 0) > 0) - win_rate = wins / len(env.trades) * 100 - else: - win_rate = 0 - - # Analyze trades - trade_analysis = env.analyze_trades() - stats['trade_analysis'].append(trade_analysis) + total_trades = env.win_count + env.loss_count + win_rate = (env.win_count / total_trades * 100) if total_trades > 0 else 0 # Calculate prediction accuracy - prediction_accuracy = 0.0 if hasattr(env, 'predicted_prices') and len(env.predicted_prices) > 0: - if len(env.data) > 5: - actual_prices = [candle['close'] for candle in env.data[-5:]] - predicted = env.predicted_prices[:min(5, len(actual_prices))] - errors = [abs(p - a) / a for p, a in zip(predicted, actual_prices[:len(predicted)])] - prediction_accuracy = 100 * (1 - sum(errors) / len(errors)) + # Compare predictions with actual prices + actual_prices = env.features['price'][-len(env.predicted_prices):] + prediction_errors = np.abs(env.predicted_prices - actual_prices) / actual_prices + prediction_accuracy = 100 * (1 - np.mean(prediction_errors)) + else: + prediction_accuracy = 0 - # Log statistics + # Analyze trades + trade_analysis = env.analyze_trades() if hasattr(env, 'analyze_trades') else {} + + # Update stats stats['episode_rewards'].append(episode_reward) stats['episode_lengths'].append(step + 1) stats['balances'].append(env.balance) @@ -1534,18 +1793,60 @@ async def train_agent(agent, env, num_episodes=1000, max_steps_per_episode=1000) if episode_reward > best_reward: best_reward = episode_reward agent.save("models/trading_agent_best_reward.pt") + logger.info(f"New best reward model saved: {episode_reward:.2f}") # Save best model by PnL if env.episode_pnl > best_pnl: best_pnl = env.episode_pnl agent.save("models/trading_agent_best_pnl.pt") + logger.info(f"New best PnL model saved: ${env.episode_pnl:.2f}") - # Save checkpoint + # Save best model by win rate (if enough trades) + if total_trades >= 10 and win_rate > best_win_rate: + best_win_rate = win_rate + agent.save("models/trading_agent_best_winrate.pt") + logger.info(f"New best win rate model saved: {win_rate:.1f}%") + + # Save checkpoint every 10 episodes if episode % 10 == 0: - agent.save(f"models/trading_agent_episode_{episode}.pt") + checkpoint_path = f"checkpoints/trading_agent_episode_{episode}.pt" + agent.save(checkpoint_path) + # Save best metrics to resume training if interrupted + best_metrics = { + 'best_reward': float(best_reward), + 'best_pnl': float(best_pnl), + 'best_win_rate': float(best_win_rate), + 'last_episode': episode, + 'timestamp': datetime.datetime.now().isoformat() + } + with open("checkpoints/best_metrics.json", 'w') as f: + json.dump(best_metrics, f) + + logger.info(f"Checkpoint saved at episode {episode}") + + # Check for early stopping + if env.episode_pnl > best_pnl: + best_pnl = env.episode_pnl + episodes_without_improvement = 0 + else: + episodes_without_improvement += 1 + + # Adjust learning rate based on performance + if episodes_without_improvement > 20: + # Reduce learning rate + for param_group in agent.optimizer.param_groups: + param_group['lr'] = max(param_group['lr'] * 0.9, min_lr) + logger.info(f"Reducing learning rate to {agent.optimizer.param_groups[0]['lr']:.6f}") + + # Early stopping check + if episodes_without_improvement >= patience: + logger.info(f"Early stopping triggered after {episode+1} episodes without improvement") + break + except Exception as e: logger.error(f"Error in episode {episode}: {e}") + logger.error(f"Traceback: {traceback.format_exc()}") continue # Save final model @@ -1556,7 +1857,14 @@ async def train_agent(agent, env, num_episodes=1000, max_steps_per_episode=1000) except Exception as e: logger.error(f"Training failed: {e}") - raise + logger.error(f"Traceback: {traceback.format_exc()}") + + # Save emergency checkpoint + try: + agent.save("models/trading_agent_emergency.pt") + logger.info("Emergency model saved due to training failure") + except Exception as save_error: + logger.error(f"Failed to save emergency model: {save_error}") return stats @@ -1901,6 +2209,7 @@ async def main(): help='Mode to run the bot in') parser.add_argument('--episodes', type=int, default=1000, help='Number of episodes to train') parser.add_argument('--demo', action='store_true', help='Run in demo mode (no real trades)') + parser.add_argument('--refresh-data', action='store_true', help='Refresh data during training') args = parser.parse_args() # Get device (GPU or CPU) @@ -1924,7 +2233,13 @@ async def main(): if args.mode == 'train': # Train the agent logger.info(f"Starting training for {args.episodes} episodes...") - stats = await train_agent(agent, env, num_episodes=args.episodes) + + # Pass exchange to training function if refresh-data is enabled + if args.refresh_data: + logger.info("Data refresh enabled during training") + stats = await train_agent(agent, env, num_episodes=args.episodes, exchange=exchange) + else: + stats = await train_agent(agent, env, num_episodes=args.episodes) elif args.mode == 'evaluate': # Load trained model @@ -1955,6 +2270,11 @@ async def main(): except Exception as e: logger.warning(f"Could not properly close exchange connection: {e}") +def ensure_float32(model): + """Ensure all model parameters are float32""" + for param in model.parameters(): + param.data = param.data.float() # Convert to float32 + if __name__ == "__main__": try: asyncio.run(main()) diff --git a/crypto/gogo2/readme.md b/crypto/gogo2/readme.md index e6a8ce8..72eb4d4 100644 --- a/crypto/gogo2/readme.md +++ b/crypto/gogo2/readme.md @@ -46,6 +46,12 @@ pip install -r requirements.txt ```bash MEXC_API_KEY=your_api_key MEXC_API_SECRET=your_api_secret + + +cuda support + +```bash +pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 ``` ## Usage From 2b1f00cbfc770c9742967e5e817fa01f627b483c Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Mon, 10 Mar 2025 13:15:30 +0200 Subject: [PATCH 2/9] working on GPU --- crypto/gogo2/checkpoints/best_metrics.json | 1 + crypto/gogo2/main.py | 240 ++++++++++++++++++--- 2 files changed, 214 insertions(+), 27 deletions(-) create mode 100644 crypto/gogo2/checkpoints/best_metrics.json diff --git a/crypto/gogo2/checkpoints/best_metrics.json b/crypto/gogo2/checkpoints/best_metrics.json new file mode 100644 index 0000000..5f5dcc1 --- /dev/null +++ b/crypto/gogo2/checkpoints/best_metrics.json @@ -0,0 +1 @@ +{"best_reward": 202.7441047517104, "best_pnl": -10.072078721366783, "best_win_rate": 30.864197530864196, "last_episode": 10, "timestamp": "2025-03-10T12:45:27.247997"} \ No newline at end of file diff --git a/crypto/gogo2/main.py b/crypto/gogo2/main.py index a580720..7dd2f6b 100644 --- a/crypto/gogo2/main.py +++ b/crypto/gogo2/main.py @@ -124,16 +124,24 @@ class DQN(nn.Module): self.advantage_stream = nn.Linear(hidden_size // 2, action_size) # Transformer encoder for more complex pattern recognition - encoder_layer = nn.TransformerEncoderLayer(d_model=hidden_size, nhead=attention_heads, dropout=0.1) + encoder_layer = nn.TransformerEncoderLayer( + d_model=hidden_size, + nhead=attention_heads, + dropout=0.1, + batch_first=True # Add this parameter + ) self.transformer_encoder = nn.TransformerEncoder(encoder_layer, num_layers=2) def forward(self, x): batch_size = x.size(0) if x.dim() > 1 else 1 - # Ensure input has correct shape + # Ensure input has correct shape and type if x.dim() == 1: x = x.unsqueeze(0) # Add batch dimension - + + # Ensure float32 type + x = x.float() + # Check if state size matches expected input size if x.size(1) != self.state_size: # Handle mismatched input by either truncating or padding @@ -158,8 +166,8 @@ class DQN(nn.Module): # Process through transformer for more complex patterns transformer_input = x.unsqueeze(1) if x.dim() == 2 else x - transformer_out = self.transformer_encoder(transformer_input.transpose(0, 1)) - transformer_out = transformer_out.transpose(0, 1).mean(dim=1) + transformer_out = self.transformer_encoder(transformer_input) + transformer_out = transformer_out.mean(dim=1) # Average across sequence dimension # Combine LSTM and transformer outputs x = lstm_out + transformer_out @@ -1309,48 +1317,62 @@ class TradingEnvironment: return fee # Ensure GPU usage if available -def get_device(): - """Get the device to use (GPU or CPU)""" - if torch.cuda.is_available(): +def get_device(device_preference='gpu'): + """Get the device to use (GPU or CPU) based on preference and availability""" + if device_preference.lower() == 'gpu' and torch.cuda.is_available(): device = torch.device("cuda") # Set default tensor type to float32 for CUDA torch.set_default_tensor_type(torch.FloatTensor) logger.info(f"Using GPU: {torch.cuda.get_device_name(0)}") else: device = torch.device("cpu") - logger.info("Using CPU") + if device_preference.lower() == 'gpu': + logger.info("GPU requested but not available, using CPU instead") + else: + logger.info("Using CPU as requested") return device # Update Agent class to use GPU properly class Agent: - def __init__(self, state_size, action_size, hidden_size=256, lstm_layers=2, attention_heads=4, - device=None): - if device is None: - self.device = get_device() - else: - self.device = device - + def __init__(self, state_size, action_size, hidden_size=256, lstm_layers=2, attention_heads=4, device=None): + """Initialize the agent with the policy and target networks""" self.state_size = state_size self.action_size = action_size - self.memory = ReplayMemory(MEMORY_SIZE) - self.steps_done = 0 - # Initialize policy and target networks + # Set device (GPU or CPU) + if device is None: + self.device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + else: + self.device = device + + # Initialize networks self.policy_net = DQN(state_size, action_size, hidden_size, lstm_layers, attention_heads).to(self.device) self.target_net = DQN(state_size, action_size, hidden_size, lstm_layers, attention_heads).to(self.device) - ensure_float32(self.policy_net) - ensure_float32(self.target_net) + ensure_model_float32(self.policy_net) + ensure_model_float32(self.target_net) self.target_net.load_state_dict(self.policy_net.state_dict()) self.target_net.eval() # Initialize optimizer with weight decay for regularization self.optimizer = optim.Adam(self.policy_net.parameters(), lr=LEARNING_RATE, weight_decay=1e-5) - # Initialize gradient scaler for mixed precision training + # Initialize experience replay memory + self.memory = ReplayMemory(MEMORY_SIZE) + + # Initialize steps counter + self.steps_done = 0 + + # Initialize epsilon for exploration + self.epsilon = EPSILON_START + self.epsilon_start = EPSILON_START + self.epsilon_end = EPSILON_END + self.epsilon_decay = EPSILON_DECAY + + # Initialize mixed precision scaler self.scaler = amp.GradScaler() - # TensorBoard writer - self.writer = SummaryWriter() + # Initialize TensorBoard writer + self.writer = SummaryWriter(f'runs/trading_agent_{datetime.datetime.now().strftime("%Y%m%d_%H%M%S")}') # Create models directory if it doesn't exist os.makedirs("models", exist_ok=True) @@ -2210,10 +2232,12 @@ async def main(): parser.add_argument('--episodes', type=int, default=1000, help='Number of episodes to train') parser.add_argument('--demo', action='store_true', help='Run in demo mode (no real trades)') parser.add_argument('--refresh-data', action='store_true', help='Refresh data during training') + parser.add_argument('--device', type=str, default='gpu', choices=['gpu', 'cpu'], + help='Device to use for training (gpu or cpu)') args = parser.parse_args() - # Get device (GPU or CPU) - device = get_device() + # Get device based on argument and availability + device = get_device(args.device) exchange = None @@ -2270,10 +2294,172 @@ async def main(): except Exception as e: logger.warning(f"Could not properly close exchange connection: {e}") -def ensure_float32(model): +def ensure_model_float32(model): """Ensure all model parameters are float32""" for param in model.parameters(): param.data = param.data.float() # Convert to float32 + return model + +def ensure_float32(tensor_or_array): + """Ensure the input is a float32 tensor or numpy array""" + if isinstance(tensor_or_array, torch.Tensor): + return tensor_or_array.float() + elif isinstance(tensor_or_array, np.ndarray): + return tensor_or_array.astype(np.float32) + else: + return np.array(tensor_or_array, dtype=np.float32) + +def visualize_training_results(env, agent, episode_num): + """Visualize the training results with OHLCV data, actions, and predictions""" + try: + # Create directory for visualizations if it doesn't exist + os.makedirs("visualizations", exist_ok=True) + + # Get the data for visualization + if len(env.data) < 100: + logger.warning("Not enough data for visualization") + return + + # Use the last 100 candles for visualization + data = env.data[-100:] + + # Create a pandas DataFrame for easier plotting + df = pd.DataFrame([{ + 'timestamp': candle['timestamp'], + 'open': candle['open'], + 'high': candle['high'], + 'low': candle['low'], + 'close': candle['close'], + 'volume': candle['volume'] + } for candle in data]) + + # Convert timestamp to datetime + df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms') + df.set_index('timestamp', inplace=True) + + # Create the plot + plt.figure(figsize=(16, 12)) + + # Plot OHLC data + ax1 = plt.subplot(3, 1, 1) + ax1.set_title(f'Training Visualization - Episode {episode_num}') + + # Plot candlestick chart + from mplfinance.original_flavor import candlestick_ohlc + import matplotlib.dates as mdates + + # Convert date to numerical format for candlestick + df_ohlc = df.reset_index() + df_ohlc['timestamp'] = df_ohlc['timestamp'].map(mdates.date2num) + + candlestick_ohlc(ax1, df_ohlc[['timestamp', 'open', 'high', 'low', 'close']].values, + width=0.6, colorup='green', colordown='red') + + ax1.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H:%M')) + ax1.set_ylabel('Price (USD)') + + # Plot buy/sell actions if available + if hasattr(env, 'trades') and env.trades: + # Filter trades that occurred in the visualization window + recent_trades = [t for t in env.trades if t.get('timestamp', 0) >= df.index[0].timestamp() * 1000] + + for trade in recent_trades: + if trade['type'] == 'long': + # Buy point + entry_time = pd.to_datetime(trade['entry_time'], unit='ms') + ax1.scatter(mdates.date2num(entry_time), trade['entry'], + marker='^', color='green', s=100, label='Buy') + + # Sell point if closed + if 'exit' in trade and trade['exit'] > 0: + exit_time = pd.to_datetime(trade['exit_time'], unit='ms') + ax1.scatter(mdates.date2num(exit_time), trade['exit'], + marker='v', color='blue', s=100, label='Sell Long') + + # Draw line connecting entry and exit + ax1.plot([mdates.date2num(entry_time), mdates.date2num(exit_time)], + [trade['entry'], trade['exit']], 'g--', alpha=0.5) + + elif trade['type'] == 'short': + # Sell short point + entry_time = pd.to_datetime(trade['entry_time'], unit='ms') + ax1.scatter(mdates.date2num(entry_time), trade['entry'], + marker='v', color='red', s=100, label='Sell Short') + + # Buy to cover point if closed + if 'exit' in trade and trade['exit'] > 0: + exit_time = pd.to_datetime(trade['exit_time'], unit='ms') + ax1.scatter(mdates.date2num(exit_time), trade['exit'], + marker='^', color='orange', s=100, label='Buy to Cover') + + # Draw line connecting entry and exit + ax1.plot([mdates.date2num(entry_time), mdates.date2num(exit_time)], + [trade['entry'], trade['exit']], 'r--', alpha=0.5) + + # Plot predicted prices if available + if hasattr(env, 'predicted_prices') and len(env.predicted_prices) > 0: + ax2 = plt.subplot(3, 1, 2, sharex=ax1) + ax2.set_title('Price Predictions vs Actual') + + # Plot actual prices + ax2.plot(df.index[-len(env.predicted_prices):], df['close'][-len(env.predicted_prices):], + label='Actual Price', color='blue') + + # Plot predicted prices + # Align predictions with their corresponding timestamps + prediction_dates = df.index[-len(env.predicted_prices)-1:-1] + if len(prediction_dates) == len(env.predicted_prices): + ax2.plot(prediction_dates, env.predicted_prices, + label='Predicted Price', color='orange', linestyle='--') + + # Calculate prediction error + actual = df['close'][-len(env.predicted_prices)-1:-1].values + predicted = env.predicted_prices + mape = np.mean(np.abs((actual - predicted) / actual)) * 100 + ax2.set_ylabel('Price (USD)') + ax2.set_title(f'Price Predictions vs Actual (MAPE: {mape:.2f}%)') + ax2.legend() + + # Plot technical indicators + ax3 = plt.subplot(3, 1, 3, sharex=ax1) + ax3.set_title('Technical Indicators') + + # Plot RSI if available + if 'rsi' in env.features and len(env.features['rsi']) > 0: + rsi_values = env.features['rsi'][-len(df):] + if len(rsi_values) == len(df): + ax3.plot(df.index, rsi_values, label='RSI', color='purple') + + # Add RSI overbought/oversold lines + ax3.axhline(y=70, color='r', linestyle='-', alpha=0.3) + ax3.axhline(y=30, color='g', linestyle='-', alpha=0.3) + + # Plot MACD if available + if 'macd' in env.features and 'macd_signal' in env.features: + macd_values = env.features['macd'][-len(df):] + signal_values = env.features['macd_signal'][-len(df):] + + if len(macd_values) == len(df) and len(signal_values) == len(df): + ax3.plot(df.index, macd_values, label='MACD', color='blue') + ax3.plot(df.index, signal_values, label='Signal', color='red') + + ax3.set_ylabel('Indicator Value') + ax3.legend() + + # Format x-axis + plt.xticks(rotation=45) + plt.tight_layout() + + # Save the figure + plt.savefig(f"visualizations/training_episode_{episode_num}.png") + logger.info(f"Visualization saved for episode {episode_num}") + + # Close the figure to free memory + plt.close() + + except Exception as e: + logger.error(f"Error creating visualization: {e}") + logger.error(f"Traceback: {traceback.format_exc()}") if __name__ == "__main__": try: From 715261a3f9d1b0454a2221abd8a2190d2a563616 Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Mon, 10 Mar 2025 13:32:35 +0200 Subject: [PATCH 3/9] improvements --- crypto/gogo2/checkpoints/best_metrics.json | 2 +- crypto/gogo2/main.py | 94 +++++++++++++++++----- 2 files changed, 75 insertions(+), 21 deletions(-) diff --git a/crypto/gogo2/checkpoints/best_metrics.json b/crypto/gogo2/checkpoints/best_metrics.json index 5f5dcc1..73f16e3 100644 --- a/crypto/gogo2/checkpoints/best_metrics.json +++ b/crypto/gogo2/checkpoints/best_metrics.json @@ -1 +1 @@ -{"best_reward": 202.7441047517104, "best_pnl": -10.072078721366783, "best_win_rate": 30.864197530864196, "last_episode": 10, "timestamp": "2025-03-10T12:45:27.247997"} \ No newline at end of file +{"best_reward": 202.7441047517104, "best_pnl": -1.285678343969877, "best_win_rate": 38.70967741935484, "last_episode": 20, "timestamp": "2025-03-10T13:31:02.938465"} \ No newline at end of file diff --git a/crypto/gogo2/main.py b/crypto/gogo2/main.py index 7dd2f6b..2559b6b 100644 --- a/crypto/gogo2/main.py +++ b/crypto/gogo2/main.py @@ -499,6 +499,8 @@ class TradingEnvironment: 'type': 'long', 'entry': self.entry_price, 'exit': self.stop_loss, + 'entry_time': self.data[self.entry_index]['timestamp'], + 'exit_time': self.data[self.current_step]['timestamp'], 'pnl_percent': pnl_percent, 'pnl_dollar': pnl_dollar, 'duration': self.current_step - self.entry_index, @@ -542,6 +544,8 @@ class TradingEnvironment: 'type': 'long', 'entry': self.entry_price, 'exit': self.take_profit, + 'entry_time': self.data[self.entry_index]['timestamp'], + 'exit_time': self.data[self.current_step]['timestamp'], 'pnl_percent': pnl_percent, 'pnl_dollar': pnl_dollar, 'duration': self.current_step - self.entry_index, @@ -588,6 +592,8 @@ class TradingEnvironment: 'type': 'short', 'entry': self.entry_price, 'exit': self.stop_loss, + 'entry_time': self.data[self.entry_index]['timestamp'], + 'exit_time': self.data[self.current_step]['timestamp'], 'pnl_percent': pnl_percent, 'pnl_dollar': pnl_dollar, 'duration': self.current_step - self.entry_index, @@ -631,6 +637,8 @@ class TradingEnvironment: 'type': 'short', 'entry': self.entry_price, 'exit': self.take_profit, + 'entry_time': self.data[self.entry_index]['timestamp'], + 'exit_time': self.data[self.current_step]['timestamp'], 'pnl_percent': pnl_percent, 'pnl_dollar': pnl_dollar, 'duration': self.current_step - self.entry_index, @@ -808,6 +816,8 @@ class TradingEnvironment: 'type': 'short', 'entry': self.entry_price, 'exit': self.current_price, + 'entry_time': self.data[self.entry_index]['timestamp'], + 'exit_time': self.data[self.current_step]['timestamp'], 'pnl_percent': pnl_percent, 'pnl_dollar': pnl_dollar, 'duration': self.current_step - self.entry_index, @@ -872,6 +882,8 @@ class TradingEnvironment: 'type': 'long', 'entry': self.entry_price, 'exit': self.current_price, + 'entry_time': self.data[self.entry_index]['timestamp'], + 'exit_time': self.data[self.current_step]['timestamp'], 'pnl_percent': pnl_percent, 'pnl_dollar': pnl_dollar }) @@ -925,6 +937,8 @@ class TradingEnvironment: 'type': 'long', 'entry': self.entry_price, 'exit': self.current_price, + 'entry_time': self.data[self.entry_index]['timestamp'], + 'exit_time': self.data[self.current_step]['timestamp'], 'pnl_percent': pnl_percent, 'pnl_dollar': pnl_dollar }) @@ -970,6 +984,8 @@ class TradingEnvironment: 'type': 'short', 'entry': self.entry_price, 'exit': self.current_price, + 'entry_time': self.data[self.entry_index]['timestamp'], + 'exit_time': self.data[self.current_step]['timestamp'], 'pnl_percent': pnl_percent, 'pnl_dollar': pnl_dollar }) @@ -1667,6 +1683,8 @@ async def train_agent(agent, env, num_episodes=1000, max_steps_per_episode=1000, # Add early stopping based on performance patience = 50 # Episodes to wait for improvement best_pnl = -float('inf') + best_reward = -float('inf') # Initialize best_reward + best_win_rate = 0 # Initialize best_win_rate episodes_without_improvement = 0 # Add adaptive learning rate @@ -1684,18 +1702,42 @@ async def train_agent(agent, env, num_episodes=1000, max_steps_per_episode=1000, stats = { 'episode_rewards': [], - 'episode_lengths': [], - 'balances': [], + 'episode_profits': [], 'win_rates': [], - 'episode_pnls': [], - 'cumulative_pnl': [], - 'drawdowns': [], - 'prediction_accuracy': [] + 'trade_counts': [], + 'prediction_accuracies': [] } + # Create checkpoint directory if it doesn't exist + os.makedirs("checkpoints", exist_ok=True) + + # Load best model if it exists (to resume training) + best_model_path = "models/trading_agent_best_pnl.pt" + if os.path.exists(best_model_path): + try: + logger.info(f"Loading best model from {best_model_path} to resume training") + agent.load(best_model_path) + # Try to load best metrics from checkpoint file + checkpoint_info_path = "checkpoints/best_metrics.json" + if os.path.exists(checkpoint_info_path): + with open(checkpoint_info_path, 'r') as f: + best_metrics = json.load(f) + best_reward = best_metrics.get('best_reward', best_reward) + best_pnl = best_metrics.get('best_pnl', best_pnl) + best_win_rate = best_metrics.get('best_win_rate', best_win_rate) + logger.info(f"Resumed with best metrics - Reward: {best_reward:.2f}, PnL: ${best_pnl:.2f}, Win Rate: {best_win_rate:.1f}%") + except Exception as e: + logger.warning(f"Could not load best model: {e}") + try: - # Initialize price predictor - env.initialize_price_predictor(agent.device) + # Initialize price predictor and attach it to the environment + price_predictor = PricePredictionModel(input_size=30, hidden_size=128, output_size=5) + price_predictor.to(agent.device) + price_predictor_optimizer = optim.Adam(price_predictor.parameters(), lr=1e-4) + + # Attach the price predictor to the environment + env.price_predictor = price_predictor + env.price_predictor_optimizer = price_predictor_optimizer for episode in range(num_episodes): try: @@ -1731,11 +1773,22 @@ async def train_agent(agent, env, num_episodes=1000, max_steps_per_episode=1000, # Reset environment state = env.reset() - episode_reward = 0 - env.episode_pnl = 0.0 # Reset episode PnL - # Identify optimal trade points for this episode - env.identify_optimal_trades() + # Initialize episode variables + episode_reward = 0 + done = False + step = 0 + + # Initialize trade analysis dictionary + trade_analysis = { + 'win_rate': 0, + 'uptrend_win_rate': 0, + 'downtrend_win_rate': 0, + 'sideways_win_rate': 0, + 'avg_win_pnl': 0, + 'avg_loss_pnl': 0, + 'max_drawdown': 0 + } # Train price predictor prediction_loss = env.train_price_predictor() @@ -1743,7 +1796,7 @@ async def train_agent(agent, env, num_episodes=1000, max_steps_per_episode=1000, # Update price predictions env.update_price_predictions() - for step in range(max_steps_per_episode): + while not done: # Select action action = agent.select_action(state) @@ -1782,13 +1835,10 @@ async def train_agent(agent, env, num_episodes=1000, max_steps_per_episode=1000, # Update stats stats['episode_rewards'].append(episode_reward) - stats['episode_lengths'].append(step + 1) - stats['balances'].append(env.balance) + stats['episode_profits'].append(env.episode_pnl) stats['win_rates'].append(win_rate) - stats['episode_pnls'].append(env.episode_pnl) - stats['cumulative_pnl'].append(env.total_pnl) - stats['drawdowns'].append(env.max_drawdown * 100) - stats['prediction_accuracy'].append(prediction_accuracy) + stats['trade_counts'].append(total_trades) + stats['prediction_accuracies'].append(prediction_accuracy) # Log detailed trade analysis if trade_analysis: @@ -1866,6 +1916,10 @@ async def train_agent(agent, env, num_episodes=1000, max_steps_per_episode=1000, logger.info(f"Early stopping triggered after {episode+1} episodes without improvement") break + # Create visualization every 10 episodes or on the last episode + if episode % 10 == 0 or episode == num_episodes - 1: + visualize_training_results(env, agent, episode) + except Exception as e: logger.error(f"Error in episode {episode}: {e}") logger.error(f"Traceback: {traceback.format_exc()}") @@ -1903,7 +1957,7 @@ def plot_training_results(stats): # Plot balance plt.subplot(3, 2, 2) - plt.plot(stats['balances']) + plt.plot(stats['episode_profits']) plt.title('Account Balance') plt.xlabel('Episode') plt.ylabel('Balance ($)') From 6f78703ba18dd768d9cf5e265000f63522e7908a Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Mon, 10 Mar 2025 14:48:29 +0200 Subject: [PATCH 4/9] plot charts --- crypto/gogo2/checkpoints/best_metrics.json | 2 +- crypto/gogo2/main.py | 302 ++++++++++++++++++--- 2 files changed, 265 insertions(+), 39 deletions(-) diff --git a/crypto/gogo2/checkpoints/best_metrics.json b/crypto/gogo2/checkpoints/best_metrics.json index 73f16e3..2656a75 100644 --- a/crypto/gogo2/checkpoints/best_metrics.json +++ b/crypto/gogo2/checkpoints/best_metrics.json @@ -1 +1 @@ -{"best_reward": 202.7441047517104, "best_pnl": -1.285678343969877, "best_win_rate": 38.70967741935484, "last_episode": 20, "timestamp": "2025-03-10T13:31:02.938465"} \ No newline at end of file +{"best_reward": 202.7441047517104, "best_pnl": 0.25999080227362914, "best_win_rate": 44.44444444444444, "last_episode": 0, "timestamp": "2025-03-10T14:42:11.838854"} \ No newline at end of file diff --git a/crypto/gogo2/main.py b/crypto/gogo2/main.py index 2559b6b..ad806c6 100644 --- a/crypto/gogo2/main.py +++ b/crypto/gogo2/main.py @@ -23,6 +23,9 @@ import copy import argparse import traceback import math +import matplotlib.dates as mdates +from matplotlib.figure import Figure +from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas # Configure logging logging.basicConfig( @@ -1758,18 +1761,11 @@ async def train_agent(agent, env, num_episodes=1000, max_steps_per_episode=1000, # Set risk factor for this episode env.risk_factor = risk_factor - # Refresh data with latest candles if exchange is provided - if exchange is not None: - try: - logger.info(f"Fetching latest data for episode {episode}") - latest_data = await fetch_ohlcv_data(exchange, "ETH/USDT", "1m", 100) - if latest_data: - # Add new data to environment - for candle in latest_data: - env.add_data(candle) - logger.info(f"Added {len(latest_data)} new candles for episode {episode}") - except Exception as e: - logger.error(f"Error refreshing data: {e}") + # Update training data if exchange is available + if exchange and args.refresh_data: + # Fetch new data at the start of each episode + logger.info(f"Refreshing data for episode {episode}") + await env.fetch_new_data(exchange, "ETH/USDT", "1m", 100) # Reset environment state = env.reset() @@ -1796,6 +1792,59 @@ async def train_agent(agent, env, num_episodes=1000, max_steps_per_episode=1000, # Update price predictions env.update_price_predictions() + # Log OHLCV data to TensorBoard at the start of the episode + if episode % 5 == 0: # Log every 5 episodes to avoid too much data + # Create a DataFrame from the environment's data + df_ohlcv = pd.DataFrame([{ + 'timestamp': candle['timestamp'], + 'open': candle['open'], + 'high': candle['high'], + 'low': candle['low'], + 'close': candle['close'], + 'volume': candle['volume'] + } for candle in env.data[-100:]]) # Use last 100 candles + + # Convert timestamp to datetime + df_ohlcv['timestamp'] = pd.to_datetime(df_ohlcv['timestamp'], unit='ms') + df_ohlcv.set_index('timestamp', inplace=True) + + # Extract buy/sell signals from trades + buy_signals = [] + sell_signals = [] + + if hasattr(env, 'trades') and env.trades: + for trade in env.trades: + if 'entry_time' in trade and 'entry' in trade: + if trade['type'] == 'long': + # Buy signal + entry_time = pd.to_datetime(trade['entry_time'], unit='ms') + buy_signals.append((entry_time, trade['entry'])) + + # Sell signal if closed + if 'exit_time' in trade and 'exit' in trade and trade['exit'] > 0: + exit_time = pd.to_datetime(trade['exit_time'], unit='ms') + sell_signals.append((exit_time, trade['exit'])) + + elif trade['type'] == 'short': + # Sell short signal + entry_time = pd.to_datetime(trade['entry_time'], unit='ms') + sell_signals.append((entry_time, trade['entry'])) + + # Buy to cover signal if closed + if 'exit_time' in trade and 'exit' in trade and trade['exit'] > 0: + exit_time = pd.to_datetime(trade['exit_time'], unit='ms') + buy_signals.append((exit_time, trade['exit'])) + + # Log to TensorBoard + log_ohlcv_to_tensorboard( + agent.writer, + df_ohlcv, + buy_signals, + sell_signals, + episode, + tag_prefix=f"episode_{episode}" + ) + while not done: # Select action action = agent.select_action(state) @@ -1920,6 +1969,72 @@ async def train_agent(agent, env, num_episodes=1000, max_steps_per_episode=1000, if episode % 10 == 0 or episode == num_episodes - 1: visualize_training_results(env, agent, episode) + # After episode is complete, log final state with all trades + if episode % 10 == 0 or episode == num_episodes - 1: + # Create a DataFrame from the environment's data + df_ohlcv = pd.DataFrame([{ + 'timestamp': candle['timestamp'], + 'open': candle['open'], + 'high': candle['high'], + 'low': candle['low'], + 'close': candle['close'], + 'volume': candle['volume'] + } for candle in env.data[-100:]]) # Use last 100 candles + + # Convert timestamp to datetime + df_ohlcv['timestamp'] = pd.to_datetime(df_ohlcv['timestamp'], unit='ms') + df_ohlcv.set_index('timestamp', inplace=True) + + # Extract buy/sell signals from trades + buy_signals = [] + sell_signals = [] + + if hasattr(env, 'trades') and env.trades: + for trade in env.trades: + if 'entry_time' in trade and 'entry' in trade: + if trade['type'] == 'long': + # Buy signal + entry_time = pd.to_datetime(trade['entry_time'], unit='ms') + buy_signals.append((entry_time, trade['entry'])) + + # Sell signal if closed + if 'exit_time' in trade and 'exit' in trade and trade['exit'] > 0: + exit_time = pd.to_datetime(trade['exit_time'], unit='ms') + sell_signals.append((exit_time, trade['exit'])) + + elif trade['type'] == 'short': + # Sell short signal + entry_time = pd.to_datetime(trade['entry_time'], unit='ms') + sell_signals.append((entry_time, trade['entry'])) + + # Buy to cover signal if closed + if 'exit_time' in trade and 'exit' in trade and trade['exit'] > 0: + exit_time = pd.to_datetime(trade['exit_time'], unit='ms') + buy_signals.append((exit_time, trade['exit'])) + + # Log to TensorBoard - use a fixed tag to overwrite previous charts + log_ohlcv_to_tensorboard( + agent.writer, + df_ohlcv, + buy_signals, + sell_signals, + episode, + tag_prefix="latest_trading_data" # Use a fixed tag to overwrite previous charts + ) + + # Create visualization - only keep the latest one + os.makedirs("visualizations", exist_ok=True) + # Remove previous visualizations to save disk space + for file in os.listdir("visualizations"): + if file.startswith("training_episode_") and file.endswith(".png"): + try: + os.remove(os.path.join("visualizations", file)) + except: + pass + + # Create new visualization + visualize_training_results(env, agent, episode) + except Exception as e: logger.error(f"Error in episode {episode}: {e}") logger.error(f"Traceback: {traceback.format_exc()}") @@ -1945,8 +2060,8 @@ async def train_agent(agent, env, num_episodes=1000, max_steps_per_episode=1000, return stats def plot_training_results(stats): - """Plot detailed training results""" - plt.figure(figsize=(20, 15)) + """Plot training results""" + plt.figure(figsize=(15, 15)) # Plot rewards plt.subplot(3, 2, 1) @@ -1957,10 +2072,10 @@ def plot_training_results(stats): # Plot balance plt.subplot(3, 2, 2) - plt.plot(stats['episode_profits']) - plt.title('Account Balance') + plt.plot(stats['episode_profits']) # Changed from 'episode_pnls' + plt.title('Episode Profits') plt.xlabel('Episode') - plt.ylabel('Balance ($)') + plt.ylabel('Profit ($)') # Plot win rate plt.subplot(3, 2, 3) @@ -1969,35 +2084,24 @@ def plot_training_results(stats): plt.xlabel('Episode') plt.ylabel('Win Rate (%)') - # Plot episode PnL + # Plot trade count plt.subplot(3, 2, 4) - plt.plot(stats['episode_pnls']) - plt.title('Episode PnL') + plt.plot(stats['trade_counts']) # Changed from 'episode_lengths' + plt.title('Number of Trades') plt.xlabel('Episode') - plt.ylabel('PnL ($)') + plt.ylabel('Trades') - # Plot cumulative PnL + # Plot prediction accuracy plt.subplot(3, 2, 5) - plt.plot(stats['cumulative_pnl']) - plt.title('Cumulative PnL') + plt.plot(stats['prediction_accuracies']) # Changed from 'prediction_accuracy' + plt.title('Prediction Accuracy') plt.xlabel('Episode') - plt.ylabel('Cumulative PnL ($)') - - # Plot drawdown - plt.subplot(3, 2, 6) - plt.plot(stats['drawdowns']) - plt.title('Maximum Drawdown') - plt.xlabel('Episode') - plt.ylabel('Drawdown (%)') + plt.ylabel('Accuracy (%)') + # Save the figure plt.tight_layout() plt.savefig('training_results.png') - - # Save statistics to CSV - df = pd.DataFrame(stats) - df.to_csv('training_stats.csv', index=False) - - logger.info("Training statistics saved to training_stats.csv and training_results.png") + plt.close() def evaluate_agent(agent, env, num_episodes=10): """Evaluate the agent on test data""" @@ -2515,6 +2619,128 @@ def visualize_training_results(env, agent, episode_num): logger.error(f"Error creating visualization: {e}") logger.error(f"Traceback: {traceback.format_exc()}") +def log_ohlcv_to_tensorboard(writer, df_ohlcv, buy_signals, sell_signals, step, tag_prefix="trading"): + """ + Log OHLCV chart with buy/sell signals to TensorBoard + + Parameters: + ----------- + writer : torch.utils.tensorboard.SummaryWriter + TensorBoard writer instance + df_ohlcv : pandas.DataFrame + DataFrame with OHLCV data + buy_signals : list of tuples + List of (datetime, price) tuples for buy signals + sell_signals : list of tuples + List of (datetime, price) tuples for sell signals + step : int + Global step value to record + tag_prefix : str + Prefix for the tag in TensorBoard + """ + try: + import matplotlib.pyplot as plt + import matplotlib.dates as mdates + from matplotlib.figure import Figure + from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas + import numpy as np + + # Check if DataFrame is empty + if df_ohlcv.empty: + logger.warning("Empty OHLCV DataFrame, skipping visualization") + return + + # Create figure + fig = Figure(figsize=(12, 8)) + canvas = FigureCanvas(fig) + + # Create subplots for price and volume + ax1 = fig.add_subplot(2, 1, 1) # Price chart + ax2 = fig.add_subplot(2, 1, 2, sharex=ax1) # Volume chart + + # Plot OHLC + dates = mdates.date2num(df_ohlcv.index.to_pydatetime()) + ohlc = np.column_stack((dates, df_ohlcv['open'], df_ohlcv['high'], df_ohlcv['low'], df_ohlcv['close'])) + + # Plot candlestick chart + from matplotlib.lines import Line2D + from matplotlib.patches import Rectangle + + width = 0.6 / (len(df_ohlcv) + 1) # Adjust width based on number of candles + + for i, (date, open_price, high, low, close) in enumerate(ohlc): + # Determine candle color + if close >= open_price: + color = 'green' + body_bottom = open_price + body_height = close - open_price + else: + color = 'red' + body_bottom = close + body_height = open_price - close + + # Plot candle body + rect = Rectangle( + xy=(date - width/2, body_bottom), + width=width, + height=body_height, + facecolor=color, + edgecolor='black', + alpha=0.8 + ) + ax1.add_patch(rect) + + # Plot wick + ax1.plot([date, date], [low, high], color='black', linewidth=1) + + # Plot buy signals + if buy_signals: + buy_dates = mdates.date2num([x[0] for x in buy_signals]) + buy_prices = [x[1] for x in buy_signals] + ax1.scatter(buy_dates, buy_prices, marker='^', color='green', s=100, label='Buy') + + # Plot sell signals + if sell_signals: + sell_dates = mdates.date2num([x[0] for x in sell_signals]) + sell_prices = [x[1] for x in sell_signals] + ax1.scatter(sell_dates, sell_prices, marker='v', color='red', s=100, label='Sell') + + # Plot volume + ax2.bar(dates, df_ohlcv['volume'], width=width, color='blue', alpha=0.5) + + # Format axes + ax1.set_title(f'OHLC with Buy/Sell Signals - {tag_prefix}') + ax1.set_ylabel('Price') + ax1.legend() + ax1.grid(True) + + ax2.set_xlabel('Date') + ax2.set_ylabel('Volume') + ax2.grid(True) + + # Format date + date_format = mdates.DateFormatter('%Y-%m-%d %H:%M') + ax2.xaxis.set_major_formatter(date_format) + fig.autofmt_xdate() + + # Adjust layout + fig.tight_layout() + + # Log to TensorBoard + if tag_prefix == "latest_trading_data": + # For the latest data, use a fixed tag without step to overwrite previous charts + writer.add_figure(f"{tag_prefix}/ohlcv_chart", fig) + else: + # For other charts, include the step + writer.add_figure(f"{tag_prefix}/ohlcv_chart", fig, global_step=step) + + # Clean up + plt.close(fig) + + except Exception as e: + logger.error(f"Error in log_ohlcv_to_tensorboard: {e}") + logger.error(f"Traceback: {traceback.format_exc()}") + if __name__ == "__main__": try: asyncio.run(main()) From cfddc996d70af5c7ecb2f666913c2cf0605ee1a7 Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Mon, 10 Mar 2025 14:53:21 +0200 Subject: [PATCH 5/9] fixes --- crypto/gogo2/main.py | 116 ++++++++++++++++++++++++---------- crypto/gogo2/requirements.txt | 3 +- 2 files changed, 86 insertions(+), 33 deletions(-) diff --git a/crypto/gogo2/main.py b/crypto/gogo2/main.py index ad806c6..6260071 100644 --- a/crypto/gogo2/main.py +++ b/crypto/gogo2/main.py @@ -1703,6 +1703,7 @@ async def train_agent(agent, env, num_episodes=1000, max_steps_per_episode=1000, ] current_stage = 0 + # Initialize stats dictionary with the correct keys stats = { 'episode_rewards': [], 'episode_profits': [], @@ -2070,9 +2071,9 @@ def plot_training_results(stats): plt.xlabel('Episode') plt.ylabel('Reward') - # Plot balance + # Plot balance/profits plt.subplot(3, 2, 2) - plt.plot(stats['episode_profits']) # Changed from 'episode_pnls' + plt.plot(stats['episode_profits']) plt.title('Episode Profits') plt.xlabel('Episode') plt.ylabel('Profit ($)') @@ -2086,14 +2087,14 @@ def plot_training_results(stats): # Plot trade count plt.subplot(3, 2, 4) - plt.plot(stats['trade_counts']) # Changed from 'episode_lengths' + plt.plot(stats['trade_counts']) plt.title('Number of Trades') plt.xlabel('Episode') plt.ylabel('Trades') # Plot prediction accuracy plt.subplot(3, 2, 5) - plt.plot(stats['prediction_accuracies']) # Changed from 'prediction_accuracy' + plt.plot(stats['prediction_accuracies']) plt.title('Prediction Accuracy') plt.xlabel('Episode') plt.ylabel('Accuracy (%)') @@ -2102,6 +2103,8 @@ def plot_training_results(stats): plt.tight_layout() plt.savefig('training_results.png') plt.close() + + logger.info("Training results saved to training_results.png") def evaluate_agent(agent, env, num_episodes=10): """Evaluate the agent on test data""" @@ -2385,8 +2388,9 @@ async def fetch_ohlcv_data(exchange, symbol, timeframe, limit): async def main(): """Main function to run the trading bot""" parser = argparse.ArgumentParser(description='Crypto Trading Bot') - parser.add_argument('--mode', type=str, default='train', choices=['train', 'evaluate', 'live'], - help='Mode to run the bot in') + parser.add_argument('--mode', type=str, default='train', + choices=['train', 'evaluate', 'live', 'continuous'], + help='Mode to run the bot in (train, evaluate, live, or continuous)') parser.add_argument('--episodes', type=int, default=1000, help='Number of episodes to train') parser.add_argument('--demo', action='store_true', help='Run in demo mode (no real trades)') parser.add_argument('--refresh-data', action='store_true', help='Refresh data during training') @@ -2398,56 +2402,104 @@ async def main(): device = get_device(args.device) exchange = None - try: # Initialize exchange - exchange = await initialize_exchange() - - # Create environment - env = TradingEnvironment(initial_balance=INITIAL_BALANCE, window_size=30, demo=args.demo) + exchange_id = 'mexc' + exchange_class = getattr(ccxt, exchange_id) + exchange = exchange_class({ + 'apiKey': MEXC_API_KEY, + 'secret': MEXC_SECRET_KEY, + 'enableRateLimit': True, + 'options': { + 'defaultType': 'future', + } + }) + logger.info(f"Exchange initialized with standard CCXT: {exchange.id}") # Fetch initial data - await env.fetch_initial_data(exchange, "ETH/USDT", "1m", 1000) + logger.info("Fetching initial data for ETH/USDT") + data = await fetch_ohlcv_data(exchange, "ETH/USDT", "1m", 500) - # Create agent + # Initialize environment + env = TradingEnvironment( + data=data, + symbol="ETH/USDT", + timeframe="1m", + leverage=MAX_LEVERAGE, + initial_balance=INITIAL_BALANCE, + is_demo=args.demo or args.mode != 'live' + ) + logger.info(f"Initialized environment with {len(data)} candles") + + # Initialize agent agent = Agent(STATE_SIZE, 4, hidden_size=384, lstm_layers=2, attention_heads=4, device=device) if args.mode == 'train': # Train the agent - logger.info(f"Starting training for {args.episodes} episodes...") + stats = await train_agent(agent, env, num_episodes=args.episodes, exchange=exchange) - # Pass exchange to training function if refresh-data is enabled - if args.refresh_data: - logger.info("Data refresh enabled during training") - stats = await train_agent(agent, env, num_episodes=args.episodes, exchange=exchange) - else: - stats = await train_agent(agent, env, num_episodes=args.episodes) + elif args.mode == 'continuous': + # Run in continuous mode - train indefinitely + logger.info("Starting continuous training mode. Press Ctrl+C to stop.") + episode_counter = 0 + try: + while True: # Run indefinitely until manually stopped + # Train for a batch of episodes + batch_size = 50 # Train in batches of 50 episodes + logger.info(f"Starting training batch {episode_counter // batch_size + 1}") + + # Refresh data at the start of each batch + if exchange: + logger.info("Refreshing data for new training batch") + new_data = await fetch_ohlcv_data(exchange, "ETH/USDT", "1m", 500) + if new_data: + # Replace environment data with fresh data + env.data = new_data + env.reset() + logger.info(f"Updated environment with {len(new_data)} fresh candles") + + # Train for a batch of episodes + stats = await train_agent(agent, env, num_episodes=batch_size, exchange=exchange) + + # Save model after each batch + agent.save(f"models/trading_agent_continuous_{episode_counter}.pt") + + # Increment counter + episode_counter += batch_size + + # Sleep briefly to prevent excessive API calls + await asyncio.sleep(5) + + except KeyboardInterrupt: + logger.info("Continuous training stopped by user") + # Save final model + agent.save("models/trading_agent_continuous_final.pt") + logger.info("Final model saved") elif args.mode == 'evaluate': - # Load trained model + # Load the best model agent.load("models/trading_agent_best_pnl.pt") # Evaluate the agent - logger.info("Evaluating agent...") - avg_reward, avg_profit, win_rate = evaluate_agent(agent, env) + results = evaluate_agent(agent, env, num_episodes=10) + logger.info(f"Evaluation results: {results}") elif args.mode == 'live': - # Load trained model + # Load the best model agent.load("models/trading_agent_best_pnl.pt") # Run live trading logger.info("Starting live trading...") - await live_trading(agent, env, exchange, demo=args.demo) - + await live_trading(agent, env, exchange) + + except Exception as e: + logger.error(f"Error: {e}") + logger.error(f"Traceback: {traceback.format_exc()}") finally: - # Clean up exchange connection - safely close if possible + # Close exchange connection if exchange: try: - # Some CCXT exchanges have close method, others don't - if hasattr(exchange, 'close'): - await exchange.close() - elif hasattr(exchange, 'client') and hasattr(exchange.client, 'close'): - await exchange.client.close() + await exchange.client.close() logger.info("Exchange connection closed") except Exception as e: logger.warning(f"Could not properly close exchange connection: {e}") diff --git a/crypto/gogo2/requirements.txt b/crypto/gogo2/requirements.txt index 5a89b65..cda528e 100644 --- a/crypto/gogo2/requirements.txt +++ b/crypto/gogo2/requirements.txt @@ -6,4 +6,5 @@ python-dotenv>=0.19.0 ccxt>=2.0.0 websockets>=10.0 tensorboard>=2.6.0 -scikit-learn \ No newline at end of file +scikit-learn +mplfinance \ No newline at end of file From e884f0c9e64a4445d185af32595794a65d6cf109 Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Mon, 10 Mar 2025 15:37:02 +0200 Subject: [PATCH 6/9] added continious mode. fixed errors --- crypto/gogo2/.vscode/launch.json | 11 +++++- crypto/gogo2/main.py | 58 +++++++++++++------------------- 2 files changed, 33 insertions(+), 36 deletions(-) diff --git a/crypto/gogo2/.vscode/launch.json b/crypto/gogo2/.vscode/launch.json index 7e77d5b..5245d38 100644 --- a/crypto/gogo2/.vscode/launch.json +++ b/crypto/gogo2/.vscode/launch.json @@ -6,7 +6,7 @@ "type": "python", "request": "launch", "program": "main.py", - "args": ["--mode", "train", "--episodes", "1000"], + "args": ["--mode", "train", "--episodes", "100"], "console": "integratedTerminal", "justMyCode": true }, @@ -36,6 +36,15 @@ "args": ["--mode", "live"], "console": "integratedTerminal", "justMyCode": true + }, + { + "name": "Continuous Training", + "type": "python", + "request": "launch", + "program": "main.py", + "args": ["--mode", "continuous", "--refresh-data"], + "console": "integratedTerminal", + "justMyCode": true } ] } \ No newline at end of file diff --git a/crypto/gogo2/main.py b/crypto/gogo2/main.py index 6260071..e8bb07a 100644 --- a/crypto/gogo2/main.py +++ b/crypto/gogo2/main.py @@ -1679,7 +1679,7 @@ async def get_live_prices(symbol="ETH/USDT", timeframe="1m"): await asyncio.sleep(5) break -async def train_agent(agent, env, num_episodes=1000, max_steps_per_episode=1000, exchange=None): +async def train_agent(agent, env, num_episodes=1000, max_steps_per_episode=1000, exchange=None, args=None): """Train the agent using historical and live data with GPU acceleration""" logger.info(f"Starting training on device: {agent.device}") @@ -2404,39 +2404,26 @@ async def main(): exchange = None try: # Initialize exchange - exchange_id = 'mexc' - exchange_class = getattr(ccxt, exchange_id) - exchange = exchange_class({ - 'apiKey': MEXC_API_KEY, - 'secret': MEXC_SECRET_KEY, - 'enableRateLimit': True, - 'options': { - 'defaultType': 'future', - } - }) - logger.info(f"Exchange initialized with standard CCXT: {exchange.id}") + exchange = await initialize_exchange() + + # Create environment with the correct parameters + env = TradingEnvironment( + initial_balance=INITIAL_BALANCE, + window_size=30, + demo=args.demo or args.mode != 'live' + ) # Fetch initial data logger.info("Fetching initial data for ETH/USDT") - data = await fetch_ohlcv_data(exchange, "ETH/USDT", "1m", 500) - - # Initialize environment - env = TradingEnvironment( - data=data, - symbol="ETH/USDT", - timeframe="1m", - leverage=MAX_LEVERAGE, - initial_balance=INITIAL_BALANCE, - is_demo=args.demo or args.mode != 'live' - ) - logger.info(f"Initialized environment with {len(data)} candles") + await env.fetch_initial_data(exchange, "ETH/USDT", "1m", 500) # Initialize agent agent = Agent(STATE_SIZE, 4, hidden_size=384, lstm_layers=2, attention_heads=4, device=device) if args.mode == 'train': # Train the agent - stats = await train_agent(agent, env, num_episodes=args.episodes, exchange=exchange) + logger.info(f"Starting training for {args.episodes} episodes...") + stats = await train_agent(agent, env, num_episodes=args.episodes, exchange=exchange, args=args) elif args.mode == 'continuous': # Run in continuous mode - train indefinitely @@ -2449,17 +2436,13 @@ async def main(): logger.info(f"Starting training batch {episode_counter // batch_size + 1}") # Refresh data at the start of each batch - if exchange: + if exchange and args.refresh_data: logger.info("Refreshing data for new training batch") - new_data = await fetch_ohlcv_data(exchange, "ETH/USDT", "1m", 500) - if new_data: - # Replace environment data with fresh data - env.data = new_data - env.reset() - logger.info(f"Updated environment with {len(new_data)} fresh candles") + await env.fetch_new_data(exchange, "ETH/USDT", "1m", 500) + logger.info(f"Updated environment with fresh candles") # Train for a batch of episodes - stats = await train_agent(agent, env, num_episodes=batch_size, exchange=exchange) + stats = await train_agent(agent, env, num_episodes=args.episodes, exchange=exchange, args=args) # Save model after each batch agent.save(f"models/trading_agent_continuous_{episode_counter}.pt") @@ -2481,6 +2464,7 @@ async def main(): agent.load("models/trading_agent_best_pnl.pt") # Evaluate the agent + logger.info("Evaluating agent...") results = evaluate_agent(agent, env, num_episodes=10) logger.info(f"Evaluation results: {results}") @@ -2490,7 +2474,7 @@ async def main(): # Run live trading logger.info("Starting live trading...") - await live_trading(agent, env, exchange) + await live_trading(agent, env, exchange, demo=args.demo) except Exception as e: logger.error(f"Error: {e}") @@ -2499,7 +2483,11 @@ async def main(): # Close exchange connection if exchange: try: - await exchange.client.close() + # Some CCXT exchanges have close method, others don't + if hasattr(exchange, 'close'): + await exchange.close() + elif hasattr(exchange, 'client') and hasattr(exchange.client, 'close'): + await exchange.client.close() logger.info("Exchange connection closed") except Exception as e: logger.warning(f"Could not properly close exchange connection: {e}") From 08b8da7c8f8e8284ea3911d03dbb37bf181f9338 Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Mon, 10 Mar 2025 16:38:37 +0200 Subject: [PATCH 7/9] fix refactoring --- crypto/gogo2/main.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/crypto/gogo2/main.py b/crypto/gogo2/main.py index e8bb07a..e5c7e02 100644 --- a/crypto/gogo2/main.py +++ b/crypto/gogo2/main.py @@ -429,7 +429,12 @@ class TradingEnvironment: def _update_features(self): """Update technical indicators with new data""" self._initialize_features() # Recalculate all features - + + async def fetch_new_data(env, exchange, symbol="ETH/USDT", timeframe="1m", limit=1000): + """Fetch new data for the environment""" + # Call the environment's fetch_initial_data method + return await env.fetch_initial_data(exchange, symbol, timeframe, limit) + async def fetch_initial_data(self, exchange, symbol="ETH/USDT", timeframe="1m", limit=1000): """Fetch initial historical data for the environment""" try: @@ -2344,6 +2349,7 @@ async def get_latest_candle(exchange, symbol): except Exception as e: logger.error(f"Failed to fetch latest candle: {e}") return None + async def fetch_ohlcv_data(exchange, symbol, timeframe, limit): """Fetch OHLCV data with proper handling for both async and standard CCXT""" From 621a2505bd55db0f8295e5379638d7b1c7523620 Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Mon, 10 Mar 2025 16:42:49 +0200 Subject: [PATCH 8/9] models --- .gitignore | 2 +- crypto/gogo2/checkpoints/best_metrics.json | 2 +- ...s.out.tfevents.1741602105.GW-DOBRI.27544.0 | Bin 0 -> 846455 bytes ...s.out.tfevents.1741602105.GW-DOBRI.27544.0 | Bin 375601 -> 0 bytes ....out.tfevents.1741616740.GW-DOBRI.140636.0 | Bin 0 -> 88 bytes crypto/gogo2/trading_bot.log | 174558 +++++++++++++++ crypto/gogo2/training_results.png | Bin 61691 -> 191358 bytes .../visualizations/training_episode_30.png | Bin 0 -> 84555 bytes 8 files changed, 174560 insertions(+), 2 deletions(-) create mode 100644 crypto/gogo2/runs/Mar10_12-21-45_GW-DOBRI-baseline/events.out.tfevents.1741602105.GW-DOBRI.27544.0 delete mode 100644 crypto/gogo2/runs/Mar10_12-21-45_GW-DOBRI/events.out.tfevents.1741602105.GW-DOBRI.27544.0 create mode 100644 crypto/gogo2/runs/trading_agent_20250310_162540/events.out.tfevents.1741616740.GW-DOBRI.140636.0 create mode 100644 crypto/gogo2/visualizations/training_episode_30.png diff --git a/.gitignore b/.gitignore index 07b353e..5937e74 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,6 @@ crypto/sol/.vs/* crypto/brian/models/best/* crypto/brian/models/last/* crypto/brian/live_chart.html -crypto/gogo2/models/* crypto/gogo2/trading_bot.log *.log +crypto/gogo2/checkpoints/trading_agent_episode_30.pt diff --git a/crypto/gogo2/checkpoints/best_metrics.json b/crypto/gogo2/checkpoints/best_metrics.json index 2656a75..5d82d0b 100644 --- a/crypto/gogo2/checkpoints/best_metrics.json +++ b/crypto/gogo2/checkpoints/best_metrics.json @@ -1 +1 @@ -{"best_reward": 202.7441047517104, "best_pnl": 0.25999080227362914, "best_win_rate": 44.44444444444444, "last_episode": 0, "timestamp": "2025-03-10T14:42:11.838854"} \ No newline at end of file +{"best_reward": 202.7441047517104, "best_pnl": 9.19044876852315, "best_win_rate": 73.33333333333333, "last_episode": 30, "timestamp": "2025-03-10T16:25:14.651996"} \ No newline at end of file diff --git a/crypto/gogo2/runs/Mar10_12-21-45_GW-DOBRI-baseline/events.out.tfevents.1741602105.GW-DOBRI.27544.0 b/crypto/gogo2/runs/Mar10_12-21-45_GW-DOBRI-baseline/events.out.tfevents.1741602105.GW-DOBRI.27544.0 new file mode 100644 index 0000000000000000000000000000000000000000..80e3de8a37cb696e4160ba33e209914343295095 GIT binary patch literal 846455 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

&3M3BHi)<;cvx!#kmP}X!?B1q%_LWDtb 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

C5TLCDe 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

-Po3Ab{oF@QD-PUueMALeaXhUSoAXab;} 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%0AE4j))(1~fBr&4=NCk|XT}FGaI@Vq&k{K~M+Z$Ts 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

&3M3BHi)<;cvx!#kmP}X!?B1q%_LWDtb z$2L>aB(vv}5nSY;xy>B-hn@#Cea=Wq^!5t2Y z4{5_p{S~sL(-%H2MUch8tq&97i)zSL0)ijABFN_8?!$g?ZjT4;gOI!jf*cNv29Jla z$0pIMr1sboK`sYl97aG@@su*sq~v*C2p)1EZ>0czQ~Y-mutU@bK^_O2w=2T@Yier< zcz$Fpf_x5+4UmVr^D4CTc*E8Y!BY+nj~)en)-Lq1TP(2=K>-KrTqNM-fB*~9q~N&C z2nsovmX#}Ly8edVhht{j5EOABUvXD(@xWFJrrgEF`51`LDV}pGN$~Z9X(1OIBmlu$$v?V4OK{*Fat5o5e z!fRTanQU+XK?MiL#yl2WopnKmWRTt;hM zB!XHFX8rvxSS>Ghjr5^G`ZR(%4o*pmLVSth1@aaj^-~B&$%zjXA27phW6!(Y{`FQi z;jrGh*%@k+NP_>4A1ppdT*7LZ*D`Ncw|@b*;)PbAt`hKnfVrODGnV=Nf8cDUm6gMl z{fWx|dQXtE-DHJ+|D9owxU6`8CvSTLH($^7J}cbh8glRD99l4Hv)aGHH^~UP{wG{s zTuxl_zrtPp*Z6xa^Yh%`CKsb?e1CfVa|Mlm2`iml4*w&Dh|7yhPhPid;|iaR-UhyI z>s))@VJEj__yntgjozRCuPp1_R(QJldHQ(&*Guf=?8`q09NaZNjrdoV^^Vm-|C2>g ze2BQL(|-#~S6Baa%Un0hS(rVr>LuYoH#)rLKE?aj!0(^P{%?YiDbb6_<+U6596=)o z2^H#avgY*&0_@XXAZX&id`w@k$khlWplC}mf@Tha8%IFt0Z+QDUjMNKK??`Z-;D;v z$1C2D3_EAMLD0s5QnERi^isDb;8VYH1nnH0_BVttuQbgG@LyMfpo0U|L46^|SiPG7 zhu$9$ba5b^r2s8<+s6`cDE1?QZVp1%&Vc}XB{2fF4ET&7pbuNliSBO|1jvsSCg5jh z4T3-pycf&C+4vt6NU#5fU@r$R+f`vr_bj@suFtDS5X8Zy;WAL-5libKs}vg%gmCc9 zU<8zWG8swwkQmW~-~b1EPW2q5EfzXPfP}~|1fd-K>{5jXLq}dDz-oOffC1er)PM5W&HzWnRMrPYE1W6otHH`qnvA1TE4A<7EAV}um+-E&_ zKBuFJfMP{;1SuR0OL!rOm*0>_fb4Zm1gRWk`Pzb{R(>l1s-{{9(m2Q*IRq?}y{rgm zyDX)`Ok4<4^*=Z8AZS!$E&@DUfXHMeF7JewiW23-^sXO;-^IoR#C29`H( zNg)|dESZepDF?$86row~G98Qyt8EYzaIno^1D^Z$3L+VD{cRBxa*!)$2Qf>%Hxr z(DmC0Hog7$iez{^cMgIw4sOKEgZlNO9S9KlGY>&I2ik|_z@udSWCBK?T8N;6gApC} z5NJG(?u@hzc0o|d!JqvzAZpq9mn4J#sig?2IPkeYALjI*@Rxvn-?n(qT90Z?}h5nbD=p^xb^eP0k97IM8hx@J3-Xz1* zZZ8CN9Ar$AhU}rTw+M*#@j=kQfu5@~Oq{ogKC;pZ*CJ@-VCf=bSmxkHM~z}5KLkx2 z4DTy|F%9K^G1E z7xRgSNs}xscOYozV0X``p?W1&hk#V^00bQzTu^WX|HNEV0-7TN5p;1-H?rsTKj(eu zN8?!SUIg7790*+ki4tGvK(_x@FoJ--Z2d4UQWeBBTB1mkB32(j5Xgb7y%l7b4X0aL zXMctw*vrA&AR*}7P)$oT5cD6wP6If&y(*0~DOxiEK?nzms*7RJ+C_AG)Fm+z z!2u3TPinx(%eRV12D=T%5rlGZ=E(%O`sqvs0W!Z&AUMQ9-!eH+kiD!*fXbFw1mPUa za-0c$?`W(hAhq`y1Q8q*-4%iO$!i7^P$+j6K_mxz7Z^g#g)emfNH8b?K@9praKAMPK`aMHC(1(pg!>x^ z@XEV};4}v>H7uavrWDO!u9k`*j)T}EEC%N*GL z?AadG(AiHwjO~2{NgOOFoCy1bW6lwv@$dnHWDcIFFM_xFKY|H(wK@+$3J0!T-eB!? zpRTfAz0OCF%E51G6WDE;P3PWf^PV9{<6u|0FsS-}tS3#f{P`R~ItS~$_25X?2%4d4 zR}q2?4vq}e>UkxwWE{ybSMe2sI~=r2_ALC`4>%Igz3nxEEDpB3UjW^XejWszcPT@V z&B3#EJ-@qtq)dm(kGIMZbZ?$m5`;pAFo!uNp=&6!!gsAfJOKHzm-v^!iG`LB(1GPdUi%*_LbW z%Atcm`|&yi1soK#jE1Qi<7lmNL30CwLJlq~T7r$$WeO}-{yl~U}HjO1_6GzL}vX{Bdg?K zTg(htuT(?7q5(5{BdFqF^I$0m?ERCD8q4MTBBX(+hs~2sO8}1tL5-?)!EVHD%HBkBBqNkiI3(G5N4%-ppk>ZOPb*Bu?h(Ayf+j<69-D2%XATRanLR80^=3_t*Ca`*Z@H{2U90Gg6H+# z^gx28s3C%Yer)}4KTZdteTw>%t7ITK7C|5fg-fJhp-akH0_MCiL9mwtTah8qmNtGa z0UpKU5d?A2kv9PzDLbbV5M(Yu5W>OjP2*wPCHFQ0G*TxbIKaUPXIF6iv6YtXL@lil zgmN&zS{;&_v*iT&cO+>T z@$ZEQ;yBo?ZdcP5eyQFh)4k~t8XGzg@_j?z-RN{lap6b?dzrbFkqMRffzNO(PhR1U_}OoL5@ zuj!1;aK1l+G!EAK+d%QgMoZF%zn?cENatYurXcX!GL}{yCT`t=AcKQhLl?m_Z3{Yu z8}M!$f;$|D?@^2OR;@$}usjmh(vH{Yh4?_|{5Ip4IZLk7pftLXRWv&Mi&@E)3>y%Kpp*mmv6e72sML%Ajbrf$$~bstI~S&_Wz%`9zTJ5Q zs+|6u+ouaXjzwppo)Wx z!ohII;LsWZ&ebL(sOBJaYF`llH0cfjPmW(l@RwHzFMFaZqWZg>&kP@jRIj)Qw`!$GD|Es_B1s7wS69Gvh}23wocw01v3 zHXA`B2V%_P-Dx^+`2ayP2gkamL)vnU0Ft4oHfn<|K|ugICvgr z3L>uac91^o=zM{oi-R$$S|BLtb|zrYyJ7_09LSB=gl${a(%pg5g|86=h_m&>xpnd& zs<(VA$#77k3_&0VM{mu5ujl&H8QJ*nAeNI=}eL)b)fwqnr9J;HeO)}Uv ze?@SJgNKSfkP|J;h+1?+79|_!(^nE5trsAsKeh{(&Hp zgTAR#;P;LxbmW_U?k9pM4qUqxVB&>)bW3E&;T8nZ9Qel#hEBhiw34_}_cwwV4(d-0 zfRN;TI?RM#`GX*qgUFsE)6rvp(mpKu(~00T2QJbQ0JjFwWtq%^ZUk{0Xvxe5Ip&SEA1W6o3feA?b2>oVFW?AccbuHjc3P<6XMS8v9xfK`I9iokc(=^ZaGfq#frJ5TtR? z*}WLPR;{HcLJrSRM3Byb(n>F=8qrScOA`hRN07lm|FKgb_v*jBigwf?6$E!U_%LN0 z2wnP32eL=z>IkwpNcv+7YIQMma&oUo6G1iyPS#2g{w0srjE61PLXgA3w8y_g++707 zJZB-O=3w(`Bbc)_g;pIx-p)brnS-!E0ZhK|;V;S1dUQU58V-bwbRkpyMm+&*HY`F= z%fSr2N$`BF9G#KHD=a}!$HA5}=5Rfx*K?9#@u6i18aVi)z6w@(522ebjs`0bG;%O` zs{_a`TDX^FkhtxRpoxQ1tA_%7nKP6CH9JoP%^VExWeAqNw+tb`{LN|vEgYDf(E;0n z`LzUO`FSH~<6!KxNwC=H2%X)_8LUOn&cTXS1*mBpNgpT=o~=jF!NF=H4e&B8q;rk? zn>HZm;^2_XbZFS;Cm?-j|Gf!8HwQOtCP0T?(rp4>oZpHdpg&tb*z1|X$);|4s-<(n z4g`T5=zfxiao66`67a8UyAbT<;Hvr%Fv|C#pCxnEKm0QD zgRMqA?+{)&Q;L95p}`0aaA3cCFf2czPDj3ZN(T^xa`4P`I(TQ*&LbIS9u7rth=bO@ znh+Q+pcCEteuoi+bD;Zq6%5WkNQe8ydygQ9;9&Xaa4>1l%p*-YXd8(jl7rv_n?NXa z+!+F%*GD0U;$VyX7|^^rB$I$A`6m!Wb6_Emf(;$P6A5_j9E%`^gM<--K+9&yc>-ds zPa}xsV6m3USp=s!2;Q|1Zr;B4jez&{=Mcnk;Mc7K+gFKJ6Oi#L5kWi$ zORKFxKH1Tn0M(#N2og9@a&Z9Fl3(<)7VbPM#{xXeLZ&!4vxl^H;PjHY!j4M7qITNd?vr?>jgCmC`rZXrnKApX5BJlXJ( zg7}i#2vRs$9_b9~B1WG{hG{uj2vRxdjW=*t)^w{knx2GayYR0W(j+rwbFs?*ux?Oxg1m#j)S4T zHL9dZep6o|c*wyKuRvJkTTZ{CcZZcC$m1YnrxkoZ=RclgSe#piAfJP)C)A*Dy~lb2 zdR=~p;3)@vx6Oxn%^`Hbanh_3K>-JrHRC6%)%q&Q-8A<1S zD~|m|@RL1BP2f@Tg*rt3iGb6;1IVgFfK1T7rIw2y!%1)HA|@c6MDf;JAMSL(tw zbMuV^%zdYTpq+zHCAx6Ob#X8O8p(Ez_s zITZxm9PC-pvnj80*Nxb8Ftl=Xz^faNQRO< zS_t-X;B{>T1iF_zAi(;74uT*K=6#z7zIUJhAVADhA3+EQs=In#s4_Mojer34F$fND zuzAZAFi@`=LqNtQBLtxwJXt#n`o3I~LBP(4aR?4^U?;BwzH+zdaPR49h9H~+za}Rz zH?J}y86KBRKoG&f?cl)>wV{>{#`R8sAd-V~`lhf$@e4gG{oLIWK@|logM_d?At^#l-=Ed;2{U@T{^JC z<_E1x%XkDJ$m1ZkemF=g-*zV%2B!xi$mgK*{6YwQRnUik_X_(EJmnyIy&Rku4gXGn zS9CCf0uJUG8o{aek53ZN+UEd*LJqWRdc)q5RQeUwKOBmnh=XZPn(*jFsWZvYWquez zF$b3OX28HX_OxuL{p1LO5)Oo09AT4F&JmK~`us=)r5vmZZWhefn@gY5=j);nlyRVQ zQ5DqJN6aM|Rcpu5|G_f9?|m-5jjiVgn=R-%B7F zRO+4~2#{dwhk55bz)iShG6AQ|3K0Zy5It8PF4+B|S4kqG2*F+s{^kt=sf!jDNQTL} zuMh-rAaippG_RaQC+p91ULy$Mpw}rq@Lgc0NizI#D?@OAgZmqepilD_x*wO<>m7nn z4sQ5Ogx)IxX<^W2%XjQ#t4r88s8y*dQZ92ma|f#Zkl z>16$5cLRbL4jMOl!jyq>@}v*_-~B)k%fTuGU6}P|dkF!)h0O>~b0C{y4emjAVhH#< zr4>OO2X`Es1W9f}Q3O~@v?GY;pjdALSiAP78Is?3AV}aqw#phjkH*qT;+OS*5hQY; zqqr3mepb^ZP1tPVx&IWTE^-hiGZj3%Cn=LYjIb6(aG8U_^^y?uYcW0h^Q}M(K@tZu z+~&YyhefoaYqqu@f@BWf2H3*Gxgy4-N&W)|AV}fhuI4^i@%S0N4~ZU<2vRw?({Bbu zrhlOi6pfS82+}xMKV%e?2YeYynsnY_AcAxbCYzc;o2-`)0T0&>Mv%e5UC@S_c4=D1 z_6i?@;0_0$#AM)1O*H*@Z`D&mki~&`yD`|Do6EC-`kEiWX%PgDazE(hO?I;(eO~f@%)dT^I}1<>TpcAZ4Eug3lbd+Zn);wg-1flV&u|Kv2WMnsKcH zhp&5=5is$}Yy`C&WSnt=vPnL)jNQ6w9)da!VCV+0FMCf{C^w}SB52@Xnec3IG}?KT zH0f>TVg!vGNc?gEyYzT^nqr;tQUpyLxEcXOzrRVp)9Z_tBWUJe);Mb@|JpugsJygQFB%f=rLKyZKql{2HjspuoUae3{52tqk%^%w(dORnrE zO$uML55XZ09FwMii&*bd1Sk&;K@iSCFYB40Gel)L0WUHRAc)}L+oq|oHEm&*kiFHWtQ@-0{=c%YcWb*>XXJdc6pSWs%Kl&AKfPW1OY4pME;l!? zA@9BZU*b@)2C*V9yYJuuWIGL%>w6X9zBHFfPv=9_5wM`*7;@a|B5oyjLCpp6-$KKFot+1cZ^7RhajDU?!QXVTWJv8o4f^;2r@XBr>O>WtVioC=?CXkJ1UVdBySNi{Y^DZ~ z4CC+AA;{%mps4_EEt*wEK-|pl2p)3qcAXLowJzC5z^E5L5ae;N`qg%LyL!fW0`liK zBgp4qhHL-`?Qo?#R!`+y5j^GKwDN2yj=!2sGDu(lji7*oKLNwRs^$F*0xZ^aASmQu zSI=MA{upmShsrx8T?mRe7!|r2-VXR+Niz7}5SsT-ji;D{u=9K1_fRVx0U4gi9y1(4 zEeA)%6rle1A0yJ~^EE06>Nr?1WHDHoHFy%RDpDOm0|%*Y&JgnX@B#udMvXww$U(xE z5is|0kPHFcMOp}&I7pONhS{f2OeCOqn+}3z4z7G0309AsvIy{z&_~e1fu*iJR669i z60omqG=eq`3RN|seP}qXZeLwxgrNODfEoeZc%5>LWDsi~i=cx8*=v1a=O7una49}x zilB=F{qrlpRB4SE$zV8f0)lQ1UYvIYQ?U=D39z>V1OZZPd6yN{^EZn#MCK5nR&IeH zkOOD0uY%j>=F^?@p#75&?B!roVPAOZ|Ar2g5kfWyf;h-pHwuQ1?4l2L=QC3ggmAF! z`6Ac|iFCy&EN6${00$%107QN9qvO)oTn7Z99LVS@f!J`X`82S0~Rh0I42ItY;Z zy8uBH2M%wv;KXquI`?)BS&Sf>gRkHUiKil+NQMBRr3hj;DBiXV^yWJW6Hv8mIf7UY z+=9nJlj7w_0-VL%5S-@VmXINIW__Y%r=8gz2;w*xJ@FW)X9`ysf@!MTAdV6^e$Bm$f+Z9tI3fth#DJMxbHrIoNHs+$ocb5K3c4sNY}L{Bta z4cdwzg@c*<#=+6MZ|NRD&h#A!QaSij&<9eg|LrFQ<)3#UNaJ8wu`Oi3%cRSJb5{Zp zq;pVFY65RMY!k^kAtK2zRTpG;<{im!upj|J z5eFG9&frj@|AT<*p%)MobD&$|0OpJKSragL#bpE~930lMhAkmQ^pW-SQ4)eu4jN7< zL({-tZ%BrDtF9p^gx!~Ik?nI0K;C44kHJmxZ93gQ#K^aI&*`K)|h! z*$6&!pqx7iEDZPDjI<}rYUx}cL1Lb>DAzk;3A!*W!?H>_z zbKp8|He}}>`%J(to6iUWq}lo*=t`@g&x269%39n1D}q1{%6dvI_m?f8C!+Pkz9HDl zfz~Js@U2?0m^A67ZUcfK4vfXcK{#za%^;rKh#-Umy)&EOSYRxjRql8HiQoVS%}ewl zE)X(ElfovqAPD8)daNlNQvH%mz`4XW1cx}-^;rle*a_3I^@!0Q1mPSsMmm9ep9)%q zdvdlDK?DciUMPUKPT#+zNyF{C5kzuux0eNkrTv;sK;%8)`Tta~qBy9`83nJe)!ic? z*+~>ZGzVt)`+(V-Us?prx-NzwhJ)U#?7-vD`#=KrZ|a92mV-JQ5g21|rk;SXNBt3; z=HSJy@z5|_I9?DKOfo2p7>FQ&gEQ4* z!S&<;I$5`gkVBBjfrZT+h}=8TgJd`ntAOAl2V1&_Lcamq;|Qpjq=?`$2VP@`fS3^6 zC*XF=Fa${)3{EqEg7Zpe30NJZf*_d#p|REwJaH9W9;+y+BS_(3!HW?+$G}^=NCu-{ zng~)k_)#?yJb(0kLco(`Ed*&Clqye!)&1wR5MZ)Y2SGXqO9JLWuvWrW0v3wvBgo*O zspps8_lMb2@aFhv1a~+H+PMM}eeXOX8N?Ng5M*)C^BOl0)|x0FVCK@X2(meNbbkzl zv^!2DV6%lOf*cMMH#P|_dCjG@%J)ylBgp08af&M(do$_=$>5VGK=6=*)pz@W&*dko z1cZ#XK#<3Qzs?94Wsy@#fNhQyf_x6{-_?Kvd2{HAH|O=%2%d7VUT-KI>ix-`WLPt9 zDuMzInzhD2`^ouj1jq(YLr}eTf>I8ozpKOWb%y5%Fvy;Rpo|0AUK8Mr zQKcUNr>y5ADCeN1)*I$-c}%a8e$7Gz6&&bAm_u`BDE+m`1#=e!l^m>Yo(tdlD(odq za(uNEK@|tmN1R~nHc1}>;_6%xRC5qvIss-G_ctNHa-lnd&m7qGv4XyOwsh1`s$Geo zhJ&mA+OXQki|#a?@K}wYmV-eq!=eAQXnI-qykCQ$jsy25H#n&nOph)!Jn==)z(H2p zK5#p*f^I_YoUk52BL^>6j)Fz^j?v$Ov{m{eXyPFJy#eU$lK)LE>zm!15HxepeYH3I zPCc(oz)rEP2wFJUt)>WtqP?355Z$sJK^q703kE^qwitB+F174L(9XeM69I%}G>jxb zuxB@d4i1h*0o1n%)52hr^wVWv3& z2i-0sh~ePJ=_#;f#IcGa0gJ3K&;%z?$xeh{{_fi5`mUpzvP!huw@HB@Piqq7;;_4x==Ir!7p2Nq}lrbV@k z_NNHaI7szv6jWzhjVD*>n(cE0=^VV?tOx0*?ne+{_U;9O3=Wc_=7WQrt~CL%9>oam zaG*a>4-AETCK51K@->1i4sr{$A$IvGT6GwCpM&IIN}zr>W&{Chw`vePgl((7b%1QaC*BdFm(;@(u4fBc><0SgxQLr}}X)^B~`-hm%F z1ngcp5J4RW$*6P0Bc2Q z1dSZbFmZstqECkt@b2hf1Wg=#gPwYNT08AJWKWer(9FRXQ)#%?6;9vsIy+4kK??`Y zU#G$GoK$+Y%Knx|(8|H(0n5Pf)@TQE45CF!2--L>9k>`q9Q?SGfT?R$5VUi!X7eye z=(zcW0N05l5p-}M^1u$1@6>K3z$9G*K_>?{RRpl+-Z&8gDvoL+=;GkvKshLTwcuhxqbaQaRdkAbyk*3!};7NT1euG&3aJPFKELwU0CrLOlbTk5g4pyZ)K~#1s9a7>+ zBLo2)e7q|K^~QHUlLRko69j=AsJ^y_qEA8eHgoBXDS{vlF0QH+Ov?EBjwHY;a|FR0 zZ2zK*c%>1fd*Uaxj4T!m2R@{B^QM5XQm#A(k*+ zBA!mLUX@Hj5YEBh7h6DOrc^6QxZyGxK?Db%w#vcJ<<+zn4KsB_5Xr&PN0T98r9=uz zh-sdJAc})6+T%fbwdWNAHu+3L5Y54^^UCmkh#l>>9<6XeaGC?_4|XuY=C&wFQ1hFG zAeMtePyOM!vTZK{yn^N+h~uD3%n;^I`9^1CIxpuTILColsy+;iJpF?t94T3V-~tCT zpUs2wvm9tcDtqff1o0fmezpMp=AflC;qPJu2^@HTTMozEjsy^p^I#c*L=L`dP6M%S z^;HCfE%QW>#DQ0t0hn(Oq$U2<##IQCIoSVZGT1!(QB4vaxUNBv!ojUCQ+oD%(a$EJ zvY$7CR1V%4yF!@GP;~;dUTi>+#=(_U%>rq$3G`e#uzNFtbPn<-41zO%lZ8k^tHU+~ z862!wt^?oZUH2s5_xBwLvN(8uQVaIJetD4q&2hUB+~L4>zXrVaoJDI<VVb+Z#p^gTp5a>kb{;b=8)K=O;=tO z^o}AZ=D=WzbkEKQGPFUfReKCU2?vI2biwBRA-WixRUV0;l!Fe_MNr%FfW8s3JLx2X z=N$C%TMiRTj?iX*>*>=7$~X``VGG%RJJ*trb#2KR1mzrT7(5z28wQ>xz-!|<1Qi_o z7VBBX|L~oz0|}m8L{Q1W?cN@cy)WfDNqG7t0YMc9&Ksses^Ocf1Pu4Rf}om%#lKWR z&q3-v0bc6K2x>SukrxPmZrr9HtId}b1hpJE+|h!A@|$T-VCMT92BdF)Vy=w~i#M#kq=)Tt(2pTx}_S71lN_-3_3F6_m5j1k}C}1NL=}n+5;1Jnt z1Wg>c4psrN{HL^}F-^=t(9D5GrZoikZWJR!$}D?;poN3T*)}lz{G<{BtYh*Kv~qA? zrx(okwi!mi5JI(5jI{1$;f2X8Y0#Rqm|dA4X_2&ld{7C{~dQB$Shaa;|3ph!+NMUc;d?OSEI zW_F&QtwxW`5EO8b5F!aP#NOW}LrT9dKv2j*@(mr>E96cKj@NM(2#PuQtuO-iMmf@R z$#cIof)WlwpNN3`p@v0dNFJ+g5tMS!c&ka!V6U!7K-{0n2%dAWx|cYl{P5XDz*0je z1Z5mp1e<_PXdhbwrk-?0P|iVnXFoV}?GT;a8;zQdpn?M@hZXQ6pkM|`SoUcKf=UiF zdR~*f`$u6W0qK6O2&y;`shSJhYWmVA&~nGQ2&y?KcxnN$-|Xl__qUT9f*KCY0>^;s zlVJ&DNH)LS5!7;UEPNc4x~bD^x^?9u1a%yI&+!JSc8w5{FhYMRf_e^iq#MCF&q6xU zT_dytK?4W&y(Yk^Vf$8)gozO=5j1kJ%y&F!Oq!odK*$m=1Wg<~QXT~($ERu%u?j9>_t) z@MKykinsV8=;C0=1{H9hIF_zj3N7?U(9OYJ7bn-n`Ue7{qYoko;K16gTToRx+nxXejSvKZ9GF(SLdUT=vk7Rt z5Q-p(1CySDqwf1pT4gEgA4L$%!R=obptL!M&d7eeI))&GgXt@Jx^UY+oFYRSzaSDp zClA`;4(z|HfY&+q`vklck3|r{!3@b+ zFxLj$t2;s)_DX`987*`4n-oFHwf_jaS=f@2c{dQ!Loj4 zmIRCnNI-C!gS|fI4Dt6gFns_qe;Sr zbtwqWad6RJ6QbX4zD9uU=o<(wa4^G03Dyt(`Ii9SsGA7lIWX>7_8(&{% zgbeA_(n19390+e#hhgFsRRoBMJVB7b!4y*~@LVpYO~9`WPZ4Bs(EGr02+ur9`x*{U zo*}ryflu2+P^{8WAPHOMlp)CGpl_N8L_N$|On`iHIf5JxYVF2@hu?Km0-BUxBgp08 z?kQ(*I4Jjv0H5eL2=X|%`NaoBElla6%O9y~1o<3n>T3ty@l)tb;H_T`f&vb@O@9lt zYjZ@%kirXV5fpN;Y`z|Z9eMJUfUH9w5fpQ9%C=oF-S-|nmojHJASmI$?3N+CKI=lK z($~rx5tMSU>8m5Cof<$p>nW;V5j^K$!va&t7c0~v$6(g*4M7*y#WH6BFxWod~Kp z7+t;tR=VDmBtyEK`xikq2jAU$!v?9J^cbAR_ICTHgH^-9#NR5ge&PlC*j;JX7eOrt z@d{=zJ7C)cGNgrz2Oy~9V1({uc)mK6KI4WQ7e!Fd!7sT9uqvjTwojX?#St`cutK>~ zkZ-0#e_61Z7O3se}wVW{s0yt>7VG7ktw2TSZY%vx=AP2*AWx)2n%6}(-EBJ;Mxj( z2p#!-FFA%=8)hPi<-l;N5;*PudyZ92ocP>S=mN{0#w}f94`M$HCgbI)S}z zKiaEYdfW}c1rD-}XMnxWbO(|!(a8frJO^qPYawy;HXQ=`*DgYkz(MSSsj&RE@FN0l zE?^b z2XEKvfa-BA+UI-xWG#YJ4*FbjfWmLtQ-K*DRt3O(H^o06X3fp7bD#0&jf#JGUWasODf&bcLJ3vA>_r)@a#bl4| zf0_T@V>{ej!Rlz@u&4ib65V6l{YGy=)Ws8RWRLBCCH?>Hv2C7{XQeZCPZ&7?oPM0b z?=y#gpDt#GFtO0wnSjs1u?TWGkkua9^WRtB>8$8VXB>h&4&Ju)>?|*2MTfNJz>Z&}W}CJW3l%zkAOI2?z=~n3iD+3oDc964&P`R}d6)@Y{3} zgiMUvKt3g%LCFY8I2e$$5n4Y?quo5c(=^lbA4%XED5lk5&N2gKt8o3CnIoR|~2x>W)+_)HoWrb*yw94x-f;tWqUKqja5qaOqkiK0hLQu~^ ze@h+MzV0raFt3#?LD0a#+SSUSG%eYYB$!+(MbOB>!R|S5I(hkg0^ZJgfuM;4iJt(2 zcZQ!Jz&P|Jf@Ti7-JM|fwG&nZ{Q33@K??_4y2W5|!#3I~a9dZ2pp}DOFWLoDRIKS7 z-a!5>f;J8=R*V7(i%+zsEl7KZpq+zZ7skT+pyp}h7*>z2MbN>4T*44oTGqXQfa6E& z5Oi{2aBl*P_IN5F;JVc(1YI2TJ8J@cxA{#Wz)HUnK{p4VPZ)#67;6Or*4}PH;3vb% zyOGA~kSP@Nihx>)ZwUN3u=+g$G_EC%C*X6_cLV_(OuH)&OIzgWN{P*!HUxnjm`M+U z`2DkGNWzi7?FfQ6(6nC!Mayz&O?xrnH-caeK1{U+<;?QIB;iW?9|R#BsBe^o-ACQ& zUE{b%H-bhn=RtVC7!)i(9&T2!dD+ERHq_RBmmdHEs7d83b`0 z%xThrw!{US$T7^_B#Yo22hY-+AlCa9oe2b1$RoJG!4j!H&{69xMH2RZQ$i5WLCjHr zfRH-+J#2MSL6E>f;v`F`JK-Kp5+=P@Ly*Wp?`aj$0^|}k5F~Lh_`^uJHPe=^ z;OgaTBS_|8@@g}vTMx8a8~H#NK?(;yQ{_Q>u7KW`T8o6iz3DQr4|Vh)P`=)sdKVYdi4*fj$| z2?sr;2Ivi{p)XlzZgxdb%7K!CI?Sx?Cr1+Ih|ERsoCEvff$&T6Q4|4E&*vj3<6!*D znQ-{QVp^81N_R(4&Ou523TU2Q_?{#QV%i9LyY~0^x-- za|w7>upB`Z2OmEQ;K87#dj#aaU5TKYgS8$5!M{XAiGW|RUI=P9_~1Mcq-QtN1*p)d zbqH!X(A{YTZmCO)NrI>31_X5+IOh)q&q?R{5fHO}6M}jUG<~d~^yEoeyk?YaLD0a# ziFF#FxibGKNzh-n9YG@pxf@MD@>0eV0w(_PLD0lOaqJK{87Zz!!1+hJ5j1n~V7daF zYOpIJKxLsHf))-A4O4_2`}Ecmu;{Npf>sWu4I2r|w#p_E(7tCsf;J9Ths=S*tK%jR zVBdTIK|2Ri=GlS8mDv&m1e*pU=-@z3#Rg9N9{-$xl$H<#og7@Zw}GTPHwF^$&Ep7y zE)G1W41m>|-oFV*`gIgRHwU$Q`@?VPELvJl2#rACH;mN}QvD~v$+TJFB*A9v2?YKe zbYJTayJK&iA>dQiNdy5LfXHHKY<0Ruz~kW42m(3SHhTmlZS=1rpnPpCf*=mANEv}i z>v!7d^*wtQK`;l8W_}Ue2SZwAy^+3vAcTXZtNK7hv=42n-AIi`5Xymftr`qJwO*VY zgR$IY1YsOFPZm;) z2qHOHv{4rpS#fS7|B14ipl#Ad32hA38p!&jbCjom69wLb6AhdQNl(zcQ_dYtBA0bHK;LlHgXslMJ zulWspP>3LrgIl_TLE+Cce=?*)GoBzw;vjbYc!=1)N|bTACkT=inkhK< z96<^P5muJ4HfSa7&BTVjM3BmX<<=2!Eb|S$^PMrMK#<149uPo)rpYrhq{I6v5u|gl zIHnJ5xxSrN>=#YnBFNytw{svIGGS30Cg%Rs;ncbPX5+FQwH+kc71C zHUxznNcQ}`OIhV_3juNSe<3L5VAKRXSZ~>Sg@CtNzY&yhFePysyq-Rh_B93{?m|$? zL6oi@JZ@TfkR+(h?dASYL+UvP^G!{__m4*v0oqfA5tMPT?V%WmB@b9eK+gPr2+BE_ z=)E4aM_znDfQ`{W1Qi^t`SeR5x7vy4+AlX=Qo2%0!(5m$jlXUEfzRqV_t1kD`Ws2%}t_jr1fV=x}0kD!GE zg-0f!EVxD2AH3oX5wvn3Zf^itjm7i{)HK8hK^q4KtH;8#irq`dkp5g9i=dr@llL7V zr0(i)0&46`5p-}6o_heaHErl`Hpgb0A?W1be$Oj%HLla?)ZtHr06`ZAQ?vWS&hh=} zY{u8$0zo$ipLa|Gt$u&#sUa+4jlgd>s~0s$7nr$wPF$ie-30Gc)+-yPus|+ z^x@281OXffDG7mal+Hc^96B8k1ae^gbOManyf2=BahsL+5jn63xJZ{d2Sm<95c(g$T?iuIAEsyP_;s@pgmGZ3 ztO(YE5A=f=Qh7u8a7&|*3Z5kzv}QZEA^ zVnqiL@Uia_1W_Ce`1(r_V}F&lfW6)?LlDiu@vXt|GG!H=!X>AAA~?-~)Ors%+dpJF z8ItF>)d*t$1ANhg5#tT$xwQ5CS_E+%+|M$Fao>VydE7mFJ%V!_oHBhX(4C=WPln|E zXCs0O96YHT1c%NP)8f@jXe)wv4mMR-!^X`bbk3LmU^{{Y4r0g2!Sc{Y^q?iC?L?5s zfgo5H95jOIGwxd1ZUjjjgy-qPfHCUU-P1VpO_AxPsube0MnpL~$^j5V$XBS`1q;jGc{((Q9C zNw7>mj39#pN4rr_P}dK^_NM z=Y*iF*G2l+eFkv|@;OM<@`S%iOUlTQtoEKmP{6^imI2^nsQ8(HyZtXBDCEGxeH;|O zI6-g5Vp}dDDCVF}XcR0~kfxpWez}(slyD%rMjw={pSzJEU0jrepp*k!b%2NWz7`PB zPxBgr=NugJm4U9OR{9|Q8~!w->!wbp3}$~kaZwgBd+q^c00)0K{( zf`hPMS}^)%>jLg`awY5xNHQ~9Bhx* z1g+{wAi%OE2SE)7x+i3ydZwg10WQH05Y%!oub(bhRV|_m+PYKn5!7+u?5zgcG7YCm zLP%`^f_e_F)o8(;vPRn6G>k#DMIWvnSq`?aW%^d8VA_L;TAclZH1IiJ!aIipI9YWswP9tFG)(Qlz9Q^Gm zX_OPZCJ>;j^aep22MYZM_VkQzrV_Az&07TR9H<`~4oNruOeNq{;X4E!9Bjx|fXxek z_9ozdKrMn!4wk+%>iJ*l8T4aSmH3FDi-U&y6G0H6q(u_0CVWEB%|XbE{t#V!o|ebZ z{276tEUO<5e4hbDX}iCXggbUk2>dyCd|V4YZ|bJ&K$m5{Aqe2W)oKRRw@F?m368hF zBM9W+=W%1WT{ZO;0h7Jk5Cn11Icz#;^!r{(z!2MC2!c5{^+^d5PRK4Mz(A!FK?nzf z)_6g$Z7#Gt-dos(Ae4g;MP2aSogz;XUQFxdf$uMIaQN?3C^iz6BjC@S-Uz}usF*ey zDt>#sCqQ~|Ujz{xL_Ri#O3aE^mDyW0e-FONG)fVznsf(sm^{2m3tbKU84dYq^tf_M(@ z_gr!3mkFI92`(!}AV}cg)E7Irzem50fHUh=5hQZZ+sOmWds)+`=`_0SEE*v<19wixGl!4h}~)3iK;xn2;e=7@8o+;9%atZSZTq#~%VZ zn@ka8anQJG2yD-IwVZ&*#pVd^aPUM}8EV$0(Ru4pH$afhf!JP4I4x0siX<3+vOti- zfy|E?5OjSm?dVRaw?>f5!4DfJu$=yxK7mx5Y!T#f;Ok)kG5U*5$&ifv>=ER1ka5@u z#PZ2@sk$9YHY%zFUQ1(fn`~r zWRmcC<#q%O983~Z0iB0dp#&JK?L^SX!Hj`cki6^1BLW1{dk{2nAT2Ti62|rmC!ns< z4?!~r_g2}0=<7-J)Od4sAA%MRZkroI^HU|dL|E}K5J4*kX9E|&^30H@WJt#Q44`V{>(<^+On4&0ttfM7`-?ZRaoh(_Qi$LfcQ-#ve# zZtiA74%%i^3<7@+O6wMZ`dUBwe9*``gCKx|6P1#1KiqF4Nf5ho4nZIXnS1ph{*?3% z0z!^oL=eP*W2^zRZG2WlfLlZYf?y7YWQv2_ro!miowhC{2_Ht>KoHJBrMMEP*J}+YK+t^?K?Da| zBF*8OLJYmPW+Y}Hh~(g!tR&cL_4z;&rUu+b5XFH`hY2iMSs6({;{0p`(H#7eo&cwh z6rUtOPvJg-(;T#|Jteqw`C1hLLuK+1#ByM{(-4YOF4INGirjnzaU67PGk}l3UYe5x z>9vm$oZ~=l%T%Zd{%JwL*Y(8+E^wgLIv)Cq?VnG8!i1*?;yIWpFAU*9eKQHLeftbS z0tcgGW#OvR8wmogx0E4Bc7V8WK{Rgu@k%SF*wGq^F;QL+@G{>)VCg9`-T?7pryx2YrG=xHE zg_4zRfS{3sRf=Qarj)QSNqD|s41y*Ou9nL~{)r7v1juQQMbOMa)@w@`Ab*3NOIIXK z5wviy*jFAd{q2L}UM6`<|4gAf4$Lv0asa`1Jo7Hm3cKA3`+Yv!G2P4<$fOf|?TLOfOoDulRv-&~&-dDlT#RusmQE1zA1pXYPxLSbF+O-2n z!m+J05d?7X`GF4ny|rTx0ajyYBM9Wc@$V=&A!Qp!fYBgrKN32qHN+IZz5# zm4BtpP35iL2%Z zF@%Aat>{f4|5`ADBo5r#^uac7vpN~lr{#wcBy$imS`8{}#-|eSQ#A}h3J341ltA)$ z={Ew-z79u_%7K}iBZfk&4-7?s4(N7kYBXAxv^FiXeb52@pM-iJ*`JrMQ8hEN^py zfbEO!ASmYG^Kdngbx4aKKxE%N1SK4#2}{Aecvl?)3=?t@lyXp+)$=mxm`8Lu;rPLa z2%d8wG&Elz5ztMdug2Mo_~+T+gd*d#0s(kc5;)RS0T1usYob?m7L>Rz%*D-XW;tV9-ZJ$iAOW zyKp9T?-A5<@I1fgkBN2%9414u@~lJ9z(MLvaTq#sswe@HmY)zba`5$-C~Vr`RYE}U z@J0kp96b8gv)%L#9r|MO=b9!2%^X~F>lC-G%x*wpo0U` z>Eh7GBbKf|9J<$yppyfY5;@qDe$0*>gU$xwMgKHHx;R)B-}4jJ><_&Nkc;kzpqqp4 zNj8w$8frzrw+#ak_$jdZLBD9+E{;GD#zBgT3JlG8cY^@? zL#hbEIr!Eh4l~>b)7ImSIqC=^IQS(Z=xO$EJ53U1%4;Er_jv`=IiZOy%4je|P zKzX+#twnA2jYAN}LCp9TLH@C2yGX)9Z!-kvIG9n_^TwdYfG-4OP8T4!z=2b~9#mY2 z+ekpRx&?xG4&?eNzz0J$dNVFjvqq4>L7=ZX)cM__75n&elMp0wFl~P?Sh}z~o(yTG z?PLT=92`5W1Y?#&4<_L7T?Yio9K5_a4Q$U$`bt3NmMI8QI5^@t5wtxFZxZm;WEz50 z4$cqOg;+`J-vl)NbU~2D!T##i5dUR^9|1eR&q9#Sfv}t+{J!__G691h&OwmDL35Eb z^!s>^-j@Lv-WIw;TgCwl;aYt~6gKq^rQ@GW&^q@n<7a_>zz%)<^%Crri zl7vaOmLSOCKx>&h{5df^fB?k>%Ms*qFnaG$(A52(KQ=Wxw-P}f2a^?6!V>+(#v~!) zz88Xg4qR_&gS3SjJzFF4)*&e1puKY#Jp3`9POx0!HXtbEK&{OX3_4rs%(yIQGlF6c zWM7VhDQ**KCvj=pRs?m$q=f#JaU;5z**P4E`mh2S{{75So2 zG~bTSW~xT}A}HgaPkDHxl@9vra1Qi@i|1cAJ=Z$|s z4ting0R)vC>Wa_02G zw0GSd{5~7`_qin60*pMLWRVj<;lVuwO&mPmWe&~5a_QS*9*1)gG;^?{_^lvqY`{g5 zaL(r;f))-sB@Mt(wxo~%Stvlz%0aQ8IW%30q-BNi(?SGo9Blor4%UXp=sR`!7Echg zb5QL!5>`r&4kklV&3lTVgM+E_hk%>$R9d2z-*}FolY{py%FuB;hL(5h54=Rs#lelX zK49){>`R8EGrj^rHwSML_Cfj}+du*`)!rcRQ)K1c_oIVh+u%iK2uOeN7J)wp83Rn< zY@Kug65!9ht*f7r139-ZWz%>Rubk^}Y5 z8bS5``?UA`%&!YU6bFwt4uUS<#q^CgAJ1Nk|LI;tbC4rx1VhXsOUXe;8VVyg&4F2X zKM=3;s3yQqsULz^4(^ZCfQv^}8VN{I9*7{01D7OwP}OMvOn`g4D1vhwEZ^G~MlUf> zBVa+g1cD13XgwPMVHW!=2`G=1Mi9@zYI!G6ohL@0_fNJBL6E?~emx1;-s|~ylHl$! z3_&6X7fS=dL^tU;0ZT395F~M+zIrlL4LM4yguO2n5F~T3Zgi(0`iVGgsJxFGfgptg zhnDg1x_p~58It`~RRpOVoCwf>;+|dP2^g|h9YGogM|=8IW>cThEAHZ8Ed=QtY+c{e zvWe29s|>;8Mj^=Hpz-Bk=(pOLP6b^n^$=unFreqJp+7j@qpxwCd~1l{4hL^njR)QC z*cfuqOZOQe$mZaKMlVQ`?L%i!IzA={ayYmsDgx^lsNW_D0?qLVaydBky)Rsy;!aD{ z`3KDrc#0%^D|0|l%0Yg2 zUs&ybaXkTFJf|Rd&Oy%k{%|h8nHDZr?oUNf#zE^DTS!w%dFDmds+p9jiLPx1&jE<77SB?l9IO<;U{7%h$FKbni6iUWrilR)g=C_2$q z-0p^;ngcxg77(DSyb3`B2Pv&G5FOA#-^x%Lvj#yU2P3mh z;MmTubasEJc^!f#4jyFu5-dFbhaU99?Hdp@bFkJ`9WH+_p)V*HYHdc)!huM^1X$nq zGc5-$4c~^Kl>@0|BG6TToUYaDr|dw`#)0?wxnN>;{}=gK$F13gpq+!}*8^ZozCAtp ze#`qJ=-^y+s9Cw_YXf-Vj!6Qx0?++;6FkbfVD zpqqnhnS)@-DxfEyQ3N>HTtpDT!NzO-;Hu+SI)&?#ehEP&2U~O$p?}o}Z<4Sr zJP|<@2ZjshLrKqnwGrSo|0;rL4mMslhJFiA?INH?Bn81~4vZBX!ESxkaspZwr6P#s zpyc99!JRYhw56Z-G7Ui-2a_)j1*!E4{v;tZ=@x=>96bHF3S0_CO(I~aMHYe!9DJUp z1{3SF=-j*F{2c`G96Sy5gRBv2=&aIW;5`Hh9F+brhN_uUb;yuPQtu;3BA;{(6Yve+(tu6E*3EHl;2=X{cX;y;_nWgUt z_#pBTK|TlXlMLYbX9L-KDb{l}mnWOZPHO;jVK_LfK8utaZf2FRIAw5|1 z6+tlvuC^+0trTMDU!0 zC9fo*;i~gQ0yHoELQuxR-FjzO7g%UQzzsnsf^rTfeIE@qPt)!Z&~%{-K?MgsN9V$0 zyZC+t=rngDsN^8a&k-^`mQNv|Yk)`%gfx0(mOd+wpoN1GU=LB|`fCYrw@^aR%E44e zWr%lArE|W`GAan#IMAr>5F`|PB$9+(S!xK{IruzP9A-|DrVAD#_8JH}H~_yPP%=P^ z7Ow~NwGni3u=cS6)S5n~&*@R;Mw74>@Q% zhtUZ9MzH!py=p!9#r`TJz+=2I0)Gyi&DMdj&toM5p2&|w5WvA#98mbaIpFkTy(25X?b$G{DB+r@j%OB5#Etgo76o zCP2lD$@HPvooRz0l!KeiN>FNJ@}4A|7T6&O<3OTMq2RQmNI3y(`a2*9=io||9C#%d zy(M78DJKLG9GEZGgH3(L+aZm9>B;m;F=?J1Yh+b+ArOO_M5};5# z13@$gJ8q4JpU#H#M&_2~ir_Q{ADVi8jrjSKBuPlRJQqPM2e-`4Ky-u)ZF%WhyCI0< zpy;bBG~SjQN)jeix+6Hpf!3=iFgp8~eoD6;79+U8!B`^)h$}d@k|Z=AUxpx_gSe6X z!9V1-s-5lJW*xe-AM2WJOMLFh$m+QIrXatne~4isJ)fMava5t8s; zVmpE~4(@DHg=XDq+7oDu_d$@(LCwk)5ae=hD@o8Dz8gUX2ThxLekSBUC!Bz3k-iAB zI50dS0w;CdLxXCejv^@Fz^GXj^uDQHBL}_GF#1L?S5Wz~+=2h`-ymkR%i& zoJ3H61(dvXlda&981b6gxm|w^!bpJ zlZBvx1F7boE?oTDr6l3G_+12z9PAV~g58}Cw8Y<+a}Pli2f?F!KaS|f^H60ri_IRZNJS4P)w*m;HS*$2W4qPxUM>f7U1^l z-yrbk;8?&w7@OXiLlW#>yhRYe!SEv!;i%GN`cQP+Sc4#tgIDXvgI(!3+R@$6`vZa? z4hH=l1g-nh=!{J3&_@Kp9DLO8*;^rSGQEKA%Qheg;lS!=zCcmEK;nVhG|n2w(bBpdGe=9>dLg2?Plo zG(B3{Q=u#xMvmd=GHC>f9K7gIhpxi2bavl6Z!m%+4))LO3mJRd=zS?aSO!5d2a*R( zA-ldeo&Ge9l0}fhfzJnV=pWcHiyVV|kvxJ_4)z$?z_FOx7y_baDIrMXVBh{S!LIL} z^ox5etAZe%125;%uuUc2pCo+kR6~%#fkww#(ApYEpK-&^X&}hr;H}MQ5O+MXnIxRH z(ME8G0|}3*utI+JUjo`QM(<#LDC6MBkVQ~lB2Vi$m3~eL z$~jn?y$pJN9!4j+qdz$#sNf*uq8xZ!zD(C2&hMU%pppaMC1#MPB{ZLWN?V;~BBUEcuo&y89Y}Z30rmC5Y%#Ts((K? zA#w5*0ay0BBdFtGWQQ93k|_8?fL_N!1oa%e?D=!0-CC!d2$*tg34#U=^5XQN+WRkD5W_T}%2Y?KSm5(8B!Vyw4qLjz zo`x<89QvO`5YEB9SHj?}A5CAbUc3Jkf(Q=gi}V5?)0rp8K~I#3MG(osZ-pI@_^yH8 zHL6155JYiM)JGK_|Jk>MB)pq<9ziq*G2;hA`0IYOqdQ719>Hl2hF%&3HYMG(c%6Sf z0YNMW1vlnG@sO+Z?mbE43W7KeeCiG0om4BG=<3&9MR1OT>un+s*!JrUIq0V{DF`lb zaQ@kRSiWTtz2aV_q#}stU{2mN$UWdhE5(~*ZX!tFK>3#&gy;^cAVd0e^cI3d4)*Lf zhWy|kbU8t`Iuk(>2ip$*6l{BQVjM}hzWNS=WDZ`t8WzHKDOAy@Qpr~F9mR~WrK@u9C zmLkaJpkL?^5Zt>+ued+wUm(cgz{|`I1iwA2NWy84as;^?d@0fcy{#8I2{0P>8bKZh zH=E^QQ%W{1UOh|SAjsz+CVd#_MpO+T2?s2z5fpH+GhH8QsyEQqW2w-41ce+_b8Ds1kX8;z4TpB`AL`l*0OO$GlDV>l$Ue~%oF!1Gg`d;5cgAG?I`f^cz7H2QIHhg0ZHFFagQe{~)O5 z;7%VMh$_!>Bp}7S8$k^R%6i6N=i6sI0dtClmi^Pgs^#E!szuN0vFLjO_RZ*nppJt* z>!7DiG3_-0TJQTIsOP{t!U_Ub1k&kG>EnS28aPm@>uDnNm8m2Na~#AFG;*-oAVm;V zA9H~KGkHk_O&q-M(1gb?onI0#q*59|GY4|x<-z&gSbES-JBA==;b6)H9T<`xNhc={ zHHIN*j4Fao4hA-9LeI_{6nHzRBk1B_bCd>1eU6?;5;BFg5Oj0kY6&6fvju`M4t(s@;7CavePj)4utpHh zfya@}kX0MtONMmjfh~dv4(jI1fY=6`1q57mwMP)i!PKJP0+|uV>0~{imlJ|04$g*- zhsPz~2a*KCqs|DTIas)2D7>|du_s`w%X9>%Igm|P1pQfcVFU!U%|H;#LCg*jD3N~M zP5|6=MG(h9+i3&%Gd+yXmqbeDA~?svJijsUcKCHVg*!UO4Z#Ht6emi;g0o)9WJoy` z?g-*J7~N|nX!~T-nLxsuMF~4t%H!CIDJjB1q;ScX5W`UP}lqk4>Vy5TtN0krpnN{h9GArf;$|jdCCa()ql(&;A~A0f_x74 ze&}i2CCB$Apnm%y1O*&OtvD~Zxv)S*At>hH=JScr zuweOK0uncdBPij(@WBWOpCvz+fIhOv5tMQe9MK=zdC3HvT} zd!zu#o|g1%4VOtmP|HDdsUCO=Y;TbvUA&QuppJw7pT>dl!@KkqLy6$)2I(8pHD+kKs%|X9v9G&P2Ddiz( z;~>%55MXH9cal&Tn2(^HgN+JO@bFO!eF9C?e2k!jgMETnfvt}yy{5`Mgx9ONomgR@f8dIH{by+RPc!TW==K=Fbqy=zQsszeaT!NB2*VYf)~Op-8t z`db7+9Hft$0I%;KeNVu7*%}1F94xMx1FfD~DFj@2Sc@QpgTMQ<;Y{AKXacVJd_)k+ zfnsU3Kz+A}5CPdz4G6+GNS>qxCuT1J0@lYjA_(UoH)`>W4T5B1D7U=GLsTA z50#-bxtF3O5v5V{q|#}gXObkTBuOPnQc02|AtA|>BvC>VQc048FRAgK71@gp3nUj}x%x zwhDp-4n}wO2EE`H)dalUtA-$vgCQm6V6}f6ofvet)_(xI$Hu#7MUW*;y`MbHmF}QHX$JO-ADvE94t6J6DCzB zn-MT*?`Q;h9F#W>gq1M|dgx?oX# zemsIg4(ux53!|UZRFWob`f7=wh=ZG9J;B}OFFM(ODSi@yVh-Na0qhA`c$p+P9_VDk_-zh?Y7Rm#TY_rk zky`|G^K(W}%faz210ZtrWm-Q>D_ww~j)St^!(nrUc^pZ2Xto%^XAb5+o(^M*?Ue~w zn7L60x4h6JdN*@U2#gYmtb z;6*~nd;)H--GZQ_pJXL7n?1c)jpa z7)eNR+=IYflhqI1ZcXfZ@0Qsy0>V1?A@Ja!%JeTNdwHEss)gToL*U6luQMgWyzss? zBw?qk2Ldk+yy`4q*}U=p8vcwrjKG_N{73!3*0+j|W;%WxLEyu|%&@M1)mBu}PwB`Z z9|XP}R67}irs133qz|(1eG#1CAUR?XI3AeoK)?XElL-7cuzjZk?qlNV@8PY4KLURa zgyYsQb>g8ia>n)xqyGUt{^N{o*9+oSVgt|Rkpr{;A^zix?M>!~EahLzdi|e-p0O<= zVqy=;-*99e#woU#26^WSG|_w(vu z8FlaIr~f;Np0Vww`pR5;!H(VJjO~9U{cmS%-!6G#*>A%)TFBq}8jaU8fM3r!hdYJ- z_r~gx&uxIu9Rz_KTz+Z;5!NG)5YVn4haiZ9Z>93E>Dn?{(_VNGkKjB96^(y{z;OrY zbVrBQ0|dbw6g->=c_UZR-IG(FBq0dlV5YDXDuk?L(uYglDF{M2n6XF$jQUQzM}U+` z8iFtmmQ?=~Dn%ZxB;eNm#|XkXSZ^{COu|&?P*C*G69f?)s8s5~bpM)BB;nNcECkm% z_!U_qNR4ffBw*5kTm+FE+?NsqvG#tn%(m`)h9HWAC3o9|S#w3Ml7!X^1qh-!xGbp$ z`%)tY5D+%>C4v|Z+81nt2V3vbGJBZED+I9|e0tCgCI-!+1BBQ8Un7X)U`V86t)fnyY7hwZ7$cav@N07n6zyl-TFOQLQ2;w&78-h#@jz60M<&NfbwMVMxJAy0@+OE!k z@>p%5i-6S976f@5oHkGd2{pw-1Q=+wA;{-Ida^0Bj|ihh zaKi212nskjKfe#Ojme^`JqH(eA}Hj*dYu-;Y#4iiLnl8`>QH-gt3+adHT% zI8a<#BP1)zuchFU0)lD|{61)c%E5G50`8>^Kv2s;+ZTU0GTn}DP&oT&5P~`m=E!si zu7Rtkkc2@ost7)F;Oi$2wx{;fLVm5&5Cruc3_day!sm(50kdYBCV~bIQUz1Ew&*0S zX*Cw=AZX;^aBn5}bmpil>BFaNJp@f0`1Gj~PN#jM*Wr4MA%bQO?#)#OZMEDMl5lCp za0D$JNSPSJ`eg-lL}nmnf}oXyCEJW4asSgHBw<4N2n6jM9DdX$M18wUH`W@A8ik;P zgXYKmplIJ1I;G!UI0iu{2L~(X!0c!<+i0$eiyfd>cX z(XWN@!hvrH5VlW1;K_l_0ChO@+@B7x^op$zcyTan<#nO?qv!6401i&-^#bP&qy7+(EI~U*`vv?OurBJO@9u3}O4`Q?#T}F`P#-zmd|-xp~~(?iAwK_Ukg^GzU4sG@g`oVUIRk~zpwl!Y0I z;V(%aJeQtCkix;DRt3mBu{M{0yaWCSQaN~Xu@7WPrqcr4W$76N=^R{GJ_M5Y#nQWX z504-O8622>R01!LoDHN&02dHsau6Ff9<;BED-j@h_acHU4w@IV34cU&=xpAQgP{m= zI0*7|fV6q?P9!0sH4H%>2iuc}f|R)=osoPSeHB4I2L~d0Ll47%9V9`-={kY}4*Dxt z!NH5GX&v{lAQC|#2Z=QzaCFmK4U(|)^eqHM92loa!kfA!wD9Yk6oa6cgXHOIVDznU zEJBuO- z$LePTNhqJ4kD#7|=hkh)h6+VGGWPHF0zm@@Ee@s-v$mLy1ilo$M9|2=o9SAxR0OSW5x8r!`r+vu0k(;(r$5oDHeV5VaB%3IBv|KMrvt2GGe1WZ^Wh9HoGluJ|KbXL$e0%V?u zBM9Qa`NJd-oBXPb0Le>|2+nihVJrjj=LRk$;C??T1i>7<{iX#yLhsNyfyePO2tqip z{b>ysXSmRNYu`EY2tqjs?RsVBgvVEUktW&MDob0%M;- z0{Sk{Mi9lp?)!=`;mwE@1PmOmhaj2*V~?&oUt{e90#pMG5X5lcmNFHp)pY5IY%L5! z5X(XF{I35-y)U^-680GzBZ%X`|K4V#uDF`w-__Cr8h-N)YCm{QP9fB+lY^IvQyklX{2{_Wv0YMH2x12TMnP{JV1XQI@ zN07(C(_^C{asAuB2(WoR6G1))-Dj2yb4PEc6N5Jo%t27VL2FvEkRNimFG-lwG!H=` z2Zv>CK*L}O{fW-rz5qcH2dg`~{v~}iS%D-hxUd*OF$Yd6GO%EG3oXme4_t=eH3t*y z7s35;qV&P;oV@};DF@bnM#K8;%G*hkUcXv}pp1j~K`p}Jo=Wt)WP8;WK?MiB+Vw&A zxFMZH@L07DK_v(AYMRh*hYP(`hKg)NP{l!RT{rk{?-EJ+(7$6df@%&<-|l*E@7YB9 zZPg6hhM<-Md$VEiQnD}ol=`3DiJ*>yZV98H?~Xh4CZM@_4}#AeOy8&qS7+JK8fdZj zegyR#*zZt<`N<1umG$cgs&}avgdbdn0J(VB4c95UJfXiU9MW#}Kq|kUUurhFia*75lz##}Tx0U?ryj zU*5{n3s-Z^4?#NzZwpPqUcZL^7v$sR(+D~^7;Q2Uyo{3Rq}u$5Km?r}nErVxytn#A z|0a~_aSnmI4yzx^zl?(buYTd=Q~Kfth6^I_AFSOoqY zObRlFAI(PNNR#}o#vusc;FiQ7_&Pd`7U1#A?;{B0U_#f%0uitF2$CTF`vHO=4y>O4 z6ja0;PZO}}a594P9KabgDmCqE(A2sdVwI41D6C-P}WkJO+e*#GqYaIjN%0_w>GoJnseAPL8w zHy}vm;Qkafs5|vw4FOlKen*hbfsNraq2%dens8sM89@dIlSLKb#!O8*`(qo^f*_Lv z_qCJZ`=kvNMBHjakj24!X)(wgu{N6YVbF{Y1UVdRnXd`YpL%{PfQV3piFi=VvUa7gdQxGhJ zpp*moclywMfdm~&EB2K~P{x5{@2e=*>H3gIrRC2IL zwHI{nIe_kUcqgNRpo)WYDFdKiNku;C^o1x@1l1hK_8$a^A7?)#;9#dZf?5t7vnvIY z!SDPD7;-=pK^+I=Xy9P zzEdIW@j5y(eiA4k=-{BpZxr|?d~GBNZA-=@=;T19j~v_=cck}LMR_X(?z*gg@Eq1D z^pHJ#jU*VporJ)HgFE%};6cD{I$m07V1vMugKeo(;B})5T?cxhG!=mt2T!_ApeRu~ zT}PVq_^CYtZw?ZU_J+uQaXSgHa(6`F!$IP6aoE{Ci;nKaDrO+?<>1vd3#eFp@f=Bz ziJXPt1P6<9ro*$`4ZjJ{SUwkl9|!&+CNO^Hn(G93naoGv&q3K25h#B6uUGD5DKA10 zz`;$6p{EFFc3is2e-Q`Lu&PXT8n-0>(HdB6!WgAxT}ZT0Cwz0bz0v5tMRpD)qCl)XHlx0Sfyc zAt>YEi1{EGaeg>m+ub3Zj-Y}A)49dMwYmwkq%m{JKv2oSuI$B-*F%3iY0{i$nFy*l z=y6McP4j1sCgA#>Yy{ODXjH1fklq>ef$~PkLr}|s?(NsY@SE@GS7StLK7u+9G~SxS z721<*jofm99&MMA5(##nFE(Wsu1-mkUm9A zGAa?YaIky1IRs8Mbt4IX&HaF&m4l+mnjmVNZ%x3??==Y8Ie1a04qKE4>ktsSy$(SK z2d`GBLxSRUI=a6j{RKfM2hz)igZHfkJ|to0imwRV^;rF&a7r2s#R6zab75p70uK(p z9y5kdVmCkagh{vhz>Anma%Oza#@?;7=cL|p%#Upm1->t8Y; z`%9ykB#g1?j=+zDyTgaT+27~-6VUHTPXzuP9J?wHO84*0BcRYw3_$<~M;{LY{bL{K zgI$OcM-a$C>CqwJa!6_|Nm%<#5JVu9NgYw1MO{t^ayxUH3mTf2j{em;PRwMIw2Ku#~eW-2ckX3!A9LVTS-EKtp$Q) z4o1t4g+tk9LkXB~VTmAxgTwkuA)&wQ9Riv~CLu`Wp!3d1SYdw1hyYO;8wBYbw9e`a zPmXA`60mjrR0J6uxSZ}iLW6EI@`Rs@wC?D?Ptr%p&-CSdB69SEv8&<+=cuYTP% z3GiOG8$mS(b8Y89&gX*?1nhU)hoF`N$>;8{cS1rA0a>}0jaN#M&QH2 zF=KTIwi_dm1X-m!2z)u%X*voFYout2KSeAK!3hprd6k$2P4a51OXh>Ptt%!d+$mDrjC4sAdrLj=c7SBcC0=D zYeLcx1aYuUdoK8g{G~;}ubmkP&U27{&<5^5Sx?7HyJkK`5X`}^*6E;QeqEL%ytB_i z5W<08)@-ofx_mMLD&o%&gmUm_h80}=+T1dSwSmqM&cySqmNDelPvWJ2m zB?Ae#=$aN4+CEkZ;>x0eJgT-F~!76*z8=0M3DQF_;Kagaff!vP$Vg>5T$ zRFj0medH13aiF=a7i8p`pCjPbcSQvG92lKz5=y4;iX^~0OBq1{2TQf};Qoym`il!c zu7aSDgSn-K5Ps_M29ogNjVgj74t7*)L!0KySOU&38-k#igSZ1m@IZHS9|Go&*Fx}` z17kaJ=<`a6Rw&h9bP$wsu;7q6G(>vS2fNy4eFSA3Tzg{zQx5yn!HJ^&Py`hmtTPw| z-)>HxN&3(cG#o)C2Z?i(VC7*KdK0*{#RNeW2f_L#;MJpU2}u|{W+Z}Y4#Lg7U~*bt zLju~;Mj@!>VE!i=*fJ&8pMb4qV-eJGuxMU~(6V+Ft=K1&n0J)95Oi>$zg!8{h(0<@5*%gbBIx9xVW}DnTTs(L zz!RhS2;2=={ScX}12Zy{>Ao5Bq=g7PIOxc%6GU%bdQB2qk1j#r$-$#Zrm*N{AG*1E z)Y0V#yg1l(3PA4Ti|Hicl)VcAZw|UXX^@ZH|C4}M9jg)eaIn>BI5^()pe4SH_gVzL z9876)haQRn%SeK%?Ro?!IJlo}3zfIiB?&N*+=Rf7gW|XPux*BrM!?OiEeQNMSnnwX zAJ-<*NrVHM+YtnCpwsLM0S1d*NrH0yP6UA*lqY-@hL^O{ach+E9t1%gxCHkH2X`mB z`?P1tJ_P4Ekh@|HF;=Z2q)BfcxFHDU;JX*VkCAPw2vD~1KoG)#w}uw9)~=#M>7Z|( z2tqmVtnUHcR9Y93gl`!~5QK41A2=1#M!lqW?{2Gn5QKAZ+DZkSQ%;>B3HyqD5kzos zr$H08J>FnSz^kh#5nSiMrSprhD)zw(0yGBuBZ%ZcIa3w1H)w4lVBq!u1W_D}el`Kj zDi6}ThUDS12%j7dlSk;2Z{?vZ4W>hPwnlAL_~5Aa`SY)3qv zk$%7Af+aa)`yb}N&)B|oCwan`IE&r?cM?5gJ7vOC^G>x5 zevKf91KUJHSSTlRkbp5m-y+E4;PISBVeS20^p8jntSb=YbI`KJ86;n=p%Ytcq~9Yb z;9$z+AHw0#9i5~}H#0sUDC8hNpj!B)kVGF$pTcVq6mjrlqcv14G8sS;GN*n*P|U&V zn2B(|;vl`51ox~*@S20)n+L;o#ffy^$BeKB1f?8wGi?-ZK|Njl+|>2Ti@#?t$~f@Y zZU}$GqUb&P*Yair6&!4@`XjW>7idkpvZ@6^B?rIrN5bdWuvYRZU76B`po#;@;NBpN zo7s(kug$*^RC924kvudg&ZR$~BS$+C)N*iA{*z$r+WQ?zP*4~B>+esgj)Px&T7=-$ zMo|R3-rEDgXAS}ecLN>mHCY7wl<$q8o`bHJVS|$Aqdx?^xYP$h0|zNzb>KE!NgyC@ zvjl=h4nhkTz@#4)bk%KYM?VBj99W)O4K6dw<4HpIWN8G=926eW2e{%PL%{knIRq^n zto$Gcy4Oe3$+?M{iU?XcsI7B?MNNHvkpyRVWd!XUJheB0beD1TtFd6I3W5#}Vg~~( z{}M_UZ_<~jA?W1bY`X#oYU_HECV7i#AaFNi<(<}4D-b4b@gYF;nic{N4k}d?ptG!j z&gNZr)3!Jt81&ml=W+9H^fd03Uw!J4-<4$}tH1 zI7s(b1CfF~^zJ>dW*h>44sOfT3uY|`X?bUQ3lIcw;A++#?(`T%r#q$DNy3!Fwg`ebxGQc53A2x_ zAVA&O9zh5PMf>exqS+Zb(R;Dp0YNAS3$oRqz*goCN!SxR13?%E&8nI(Ll@|Sy)$eU zf^ZIw8jC{joa9Q9Fk<&y1Q8rezGVnoH#bZnz+&%w1lKu`J2f8^dK=Pd*dG>)5JYnD z{;dv(-0Ss%BveT+MG(conQ$xEBf6b_HR}7WKoHHrp0#~pcHo#el5l+SDg-ece6*2) z8z&CXkwCM%D}q=Ku1FcdLaRU0Btic8Is|bXJc-c&Cm9d=1M0VTBZ7Di3`8WrKfzjq zBn-N-1wjG_`cJgM%B24`0;XhaN07+Ds`Vq`p2bUA1h*XAg&>&&sjF77J9qSHl5l6j zUIZx|+`rHhd^%0l36S4@06{7T%g#u_=UsR538L7<)9s}N z0d>93At>a)NHSp*)>k~=n{xKFoH3ye6MgnYA zp`-g_QTGtka&Ww90*q)5PA3UL>k|;vap09c9Ikr~eMx}4aT0>h9CRIi0*mk5yh*^+ zwucDnIncbN1vV}Y^t&XkkcOavgYu?J!VnEdZ<6q*_A!D+4#Zg`gJAZqp+K_>@^6HOts zU60nHZ>GOR;69Yq51a4XgIvrp7n0yVtpb4u2im)8go&{e$_N-P`W}HN2WDm!LaoR3 zMFc1)S0nJ^z{4h0C~OXVMZk{ES_Ix4j95Py=6{#7CLlrOGXftD>O2%7KItW0iy82| z9)T|hvRMj{AW~>b5?;E0LvVtFgSLI(%AFc}0$MIKA@JkiPS`MLA3by-0kv;`BJk(H zOGXirN@V&I5LeTRAbV+4=;2g2;yMudZ{b%SQh~r?&O$iXmdHjt4n-&8E@f@TyH47izdd(w1^U^Q`2^@%AaE99O zCC&tl^EO71$icHYQ(*nme|=jgZytdlnS--&8t}uj+=C?8+l@ky!hz_RQDC>y(BBmHog_?9utJc@ z!Pjg>xPNE#I08O)PC}5yL9&b{XnI_u&xf^jHVAS!c#>rR*H+A?<$$}S9fCX#oV9ww zYe&}yq)7^54hZr&_;jTkI88C26^i%k=?DrqsPUG7Q#&>3x3zoAOaz4-9G|5Q4$|Iq zV$e}%E`lNs%qmsVA!G#8y}SoCE%{uA_T8FP+VjL%k>v;CLr|k z5(K3j{DJ{6;YNHp0Y$FM5tMPD_h1{GX)>XA?|qss2r4*`*{lM+dv2n0GusT;AgJVE zwX-uMyLO|~*t0&ZMNq|o#FyT%aLZa+yc#vFM^MedK<$apIi}N>blS9W6M|X}%6iGe z(k%T21Z@4e6+s;bpFVbNRov1@Kh{U3I}m*4pshk1@?0`fNkVhsZUprl_$gUHaDFxr z(3ZUqK?4VSr)a?1KWpX?a6H=$K_dr&qa>mC_ic17E9!~|f+i036)Hg87T8D<8Xg}; z(9FT|&f)NF@^`v3y=;p&f));}2a3QHarHqYArp=vXysskg&OSX+Lla!^84cm+BsMg zZUo_0q8A7-J>`d>gM&G|K+DGv1YR6CRlg7%>gDMC z(!o!c5qNX3SG`k^xw^lCBs@D3j=+b5)!!6By(FDJP@c(NL*UE7*)=v0U29CIDMojX zL~w$Gmc&Ugu-6Vh(xl|{C`8M{5rlBCtxg;URc!i0niRj~F@jJI>fIH=)8Yxe z&1~(Hi6D%Fqi$mGP<-8dl2DhLg&>>*85MPiN3i<*RP6=TrX@(xe#&ULc6%K=X9hH{z-XhM+6!8NlH5a2z8R_rkP zCxUbiy4~w~Ep^DsV$!6awyg*P$F(}XAq0-6;2At>bFZnP@6`|8oMEWca|K@kTZ-3;M= z;{AOvL`D5;HtM{8215m2#M6+s0DZM%&D*7c;%X$y%V2r4;f9ylHJ6UylzQO-mQ zK@|t;e%+uf%>F!SlDoJrf@%&5K8nD4?|n`Lw22!asO2E+(Tc9WcGS}G(zZ845!7+u zR;dCf9s5ln2?>Qp2tIT0Zrec6JhO!U3vOC~DS~u0tG+wen z(80miHG^Sf^0~tV7)_aqpp%0~H>N<*mPWeha;?oCf%|Y)KUAeF!X%q+bc08!yCVV* z4)hKb2s?dT+(?sN$vGkLzl=qvp1i=Xo7GKqd>B-;6 zk%XTa%Mkc+;1)XuPFXb5nZ#=cS0eD|AYrgN+@7vWS2*U%uSO8S!Lc7EaAWOkOVXry zPhAlNa&Y|7c3AEFnl70~g|0&o#6h^~3J?oaA50SNjogUfJO@<^#z4&e-Npor{k<7M zFbDQOwIFUo@>>E9)@(x%!oiVZHHfRXqbskc3wI(25fW;2BBqTe=597zblA zJ_tWOZ_v_m+M|64!a1mQnhVw2hMJLtBhGFJA~+aZ(jY7tc5XHS_T>i=T<0M9R;2K5 zLQxn2wZWbUB0134*$4-YJ&qX}58oY*pDn}m#(HsmC(}F|A9{vO< z+8jp^!@;jz1E4ikpVreYc_$IXa!_5Q4qvJ}L`cGiGJgbd92ox5gr2)<=-iC+&@%|) zIhbdl2Dxqz={k_ald}jCI1p)*g2^iH=`XH!-+2Uy9Qa&QfISVp>B3Rlyo(5uIoQ2_ zIfUNGr90J@4i80;!hxwtsj%VZ&usE3#SXcGAeDo}+I}$3YRpvv(u%GkNax^UfjSI5 zJpBd%OG2+B$l&0h(;!%pI`%OEQ*~}4$mC$rS~VD1UaU%hf^;;3EDnY{cKuyTcgGR} z$_rx<WJMFw<~~4B zz`@f`0Cg<~XlWVvCka6z2X3zg*i)-SH>tcnmV%&&15Jx4L8bp{IyW=5Pa1+^4x}#+ zg@Cr`0McolsK*Fib1=4#1|)k*(HShe<(UXdIe65n0>uvcv{Ll5$wpAd!S?0Pgj<$V z=;(fXM=pX24t%c;gDguWS|0yQ%STYj!Jkvgps6iIuXNzF7YM32xO8tbKD&PGDo>e7|B*CxrGlCWl&W4TvCxd^z zjp@GER|Ksb{F*iZVlKzftvo$uH6m!|VB0D^Xusutk2FcTwFyB72N2Npnv~IQX9)PX z>nDOv4sN{85^8R!$q}$ly%mAG5vw1P2KIyJ_eM7maN~MA0uK(xo@^49XRF2$V72QH z0#6QHYx}~v@_JgK%$(e9!{4(%UL3q1(I1W$h=-5_!=K#|cyll)dO0jxUrBGqi@bUv z@Zn&&y)LYIElSI>%~Sgz@a14eZEsk-N?x8cX`!?Pf)gB+)Yb{se}2;Y()Zea2>dvB zpW6!#$hKb~392uo5%_bUprQeLhC7`lVCh9U1OXiE&0Yg5500aQ#IaF|2m(16*lY*q z2A9zqXm*M+f*=lxx|_nAk4x$7&y3M32+nhG^n@79Xr4nK?BaQ<2!c5{Hb4bB2mh!c zoxYqn1VIP~zbq}Fb&mOH0uJ}oLJ-QqqI@xUvD1al!nqyNK@i5l_MmUV>=N;#B;lx( zK7w!#4D|-WLEQ`VI$R4kL=eHj&qua!WTTBWNpLeBj^H{65AOGX)q1yj67c$(F@i`A z>>CV0uHYiAMJGFsKoG@&yZ0ZVWVz^8lHhRJ3_&ypL*L0l$oJ971bpj020;u5oBIf` zXzc+yly0&ahai@NT01is(0*bsN!Wf@KoG})=uHC{;vh@=@I+@kf_M(}`wajE{X5De zA*00-K>`O)RVRW$&Vlkj%l(ZW?gS!M>D$QX5+Y zDIEA(zY(5$zKSB?M3EhWR1QMod%-Z-Ao|t#bkhMrItOQx2gC8dmV1$e2D=#uGC1fJ zBnxK~uk;|mzGWtYOb%+NcL*kmZDk~8R2wB_((1o<3fSL(n`>GvB*lX`qvilBglc#B~WbaSx{ z0d3AJ5EOFIz3VS~s%IkTo$p|r3xXmJa(8y^il6A^OcE~7UxT2SgZT%$j@NzK@_>NF z&1(_7=0H1E0n*Qi(_O${FRe#V%E71!ijZAVKawOk%-w{bj05-EE1_rm%wGg7Ro{xB zf`h$Uqd;6|+7AN8%?JfjW95h)=L++n^O#)2R_9Cd};Fm-% zc;0d@fPme1_ams~Kq5{Bn)N&AbJ|bd9YGxj&PP|n*Zz;_&YVy29tb{jAl+L89#|fr zAM2b+hY{3suyIF?5PdXhAnAk8*CPlTI57Uw9r}guphLK=Q+*ILa&YLUEx5gzO`i{q zmA(j?I2dGP2%}dj&`GtVbte%tb8u_kAjsJ&M#rt|3r`_v;b7wYHleyTas=sg!MFef ztsGp5>ke=03R(!LZ4E@w&cVIje+1pzC+i95yYC!=4i3^@>x0ahM7ktW3&99FIS95@ zgB0&N4U*9IA_RfEF{>Y5C5b@5H`gixjvTp+z=MOqx^2S16C3LYNE;fCz>|Z(fuDr_ zyH!sU@Gd+8ffom{%RUHD?{k)bejV2lcyn-J@lv=D?LwEP)V*&a@Zn(0XE88tS}}zr zcp60`@a14pXdkGwNGc{^-`f}jCpfsg#}&@(z0!w(=>6mopkZWG`wlZzmXgK^Jh!hnT|bh+6e`x%084!%oDf?mcO`ULuI zSb!jcgO6Q*>9*UQyPhl{4y?G(oPImr>wed{X(ksRDs?gsbbmNgTwzN`d6 z6bF{&!$ITTF}l)Zd88CUGzYgLd%)aNC3K?vzE(Mc7!JNTj02c&Kp!Xv%HAP}<)HS% zcu-kUMW>724yr;B$HC+;W5D}tp%UrzWv^-k@f-~DY7$J(bk8Lqv-?K`2^{pxiWWxd zH7XJ?Chil0L=HwpEQE7o+fEUXU|x?PnFF^8O7P`;?sEcGW;Y;6;b6;DXz8D0GH&iH{Kor6i@R&eRz({|FNk7rvDWN`4Xs4pD5)5DK|pBill zGC3F_F%-1FsG1Sr`QbN$EDm}Gjs|hD7!$Gi`0?eIRHJ>C%xr%Q5d&(=1 zgT$OZ;A}jX{y8&hOHTy(983xu0=+I;)2T;GO)&%o96U(v5Nh|j(%*xNL0<%g9NauD z21E9*q02fmFGwON;-LIU5BOLTP9KVEJf#p6bFenZ7#5t?@Fbtor2(=CUUQ(msXzQR zev=9TqfW{rDCJ=NFbR-2`k|J9a2q8AWgLjkk%eKOn&_}SddDmZYt+Z)V}ymKH4 zE$%7^Dmi%3_0`ySCyYKHLI=(h~tkiIlFv@cXf@%)7|LA(Rq?`vG39MhG zg`k#$A$?v5NmKRd$oNdL4uU!kvP~v}Ri-SR2&wVcNAQ^gnRN<~Be#RrKq{de1PvTKQyv8m(-#dTpVFTW69kPMByH{i;Z@eO4|;n>B52}Z+UOo# zo97OFAqg_=qYyN6@aNik=zYjNj{w{Ju?Si?xIcOb)NgikB|yhfK+wv;#tY&wcT)&m zr3q-YK+w)X)FPmr&(ud`< zY!JAcu==6QN*DUOC($+bm-15)cyQ2>XAQs8BNI2VC02fw77 zgyhm3S`Hj?n2+ED2Z0)0hfbXwO7BYs%?lCuad0wPA9kFVrYlVv$Ce=Q=RmIi=dSyb zN-xrBL*3;F0yucMe=wZQo2)~?tFV;_0y&5 zvt1FK=fJ(f2!3ukKnuThXV)PJ=3w|2ZIC@P>JLdcFk>Tv5Dt!Z(}mQ@nXv>+)8B$1 zl!GWwZIJHQ8whyRx(z`X2Y2*l!ix*abiq3BD?hynr97G!Eg4(#f^y_VT+6O@_2h(3ogx;(DUXTQ@ z@y8LwanNms9_XzbTS0)my&r;j4$hRC!0uUxv+^# zTi+sIf>mKg&>E6S!tSJVc}m)niT#l8bKZhkH!sx)6yCt1QZ6` zL6FZu+cI^yHsMte0Xn1N5EO8*Xn%K*3JuOCVC|`R1ce+dd1(rHs}7APKu6*Mf+7yC zl}SKM=r7voclVPJ6m#HrO#^(5M$%m^moifjyyhTJqHEi5T?j4w>>s5eDCHo;NDDgJ zvPO|UD4)wfP{u*tjR|nU?qwU7cj>~B@44p)syTq%9IY?k2AJ+PIR-ZE4uiJkof5TAM!V$XKYXYImj~m!S-^} zk$(_&#wkd%I%E5<%iGiUjh`t&&e;Bk`R_BfrFZnVv(K)(2%0!B?mGaUTZk5Hxe3pFR{SHwTIlptrmOK??`N#|;F7 zvW^@A4q1zA`g>BSm4p1QQvCF< z;9$4mWYFKP_mF@SDryM)I4JH~_*j(UTSmUf^;6~a4u#2^OM-tvl)JG7+!8vIah*|e_H38=;3=y2?p#NtR$o%N3 zNWfO-;Ru2`kc+$`h;LS(LBQBg#t1?GO{4cDCMoTuvH z`3RCZkV{j6(RShoNkXp1A_OTMyjnO367tW{F?{}`B?wYEC@T3TT>9A_O%gU6FGrBh zfxW<a@bZL%=hyl?XC85b4nejElu-U9P6H8bKxp!Wu`oRkZL5N$7sd6+spU+O}da zYK9fBMVe&onO*AjppNicu60YM%Izx@V7dEv`J1kBj789_b=&mZYP*SqC* z5^%w68-fB3tRD=ABR?0cB|xcd2ZBNl@^mT%4Z9Lr>8QNeji88w>Iw-khiz6QA>MW$ zf?^JIy9=PNsy2=QUkf(`uQ@RJFcvC)f8S5Q-CG9{lyb29t0Fkc9HC3^2TeQ?lyQ)_ zRuiV*noGalUK&RbRB&)YSr(q}DWq#LdtV$yP{~2J_m&WU@?WQeR$cZ*P{o09i!ro5 zxRpyfeR}Fi1l1hKztV?|{+~<;==^aCK`jUCFR6ptdrSIlJ$)_!K^+I@&zL~$t~6Re zinyFb@R@@t%0uCEz^(?;Bv0G(2J=)188j2rNC9RZ~~t|4gQ z;I7mU!P0sEBm(CDyn&#VgYb`9kTmqwTLShSjY81QLC1DYFnj7vYaq$-w-I!3FkEUp zcnzDok0gu|i$&1MLAhtV@HzegomJIqjzi!+g4GYJ#e0K`;?O%Jq2T^~1RfmpvX=)b z#cy=+X3U601fCo?+#d$}brpY-gz$)D1YR8IJ?{clCpcLDYzSBs%y1@PNl`We zKMo#hIl;-Z#`Jdo*TFml{v7P?Y!wbGC1sI>pdHT<1aPo^!U%Y;+Oh41i>8qnm-Og z-wzu=fX~%(1R)%V4%Gyk?Xp`4Fkf1UAe4iYfkqIT`Su0@wt62BgmLh;AzRpTLbr~9 z<&iZA!Z~>LLk?t$m1!T057Z%u;9!>XaQLwQ6dfcUH2Q+zItRHC0!WOipbwPA`Ck!4 za-dZ(5UQ7p(D|i_NsS1iI568(A%q*8q3hgAdOr|EbCA2SUC8{t@i6(60##cO#Bd;z z)E7z<72gmbm)(jWmV+yMN5jiW<#e#_Eb|*d90%FA*Flx5$0?Ffe(4W_cn|W8HQC z<2O$sGK2~xQicqbsMiwBlSU1i=hEnEo|9CP3?)gDRFZ@wNs^F+BuNqy5|SiI$k%bN z&ky&y*8P3|0gvOk_c^@w-fQo3pCRx~=%;al&IGh$dLhW*;EKE>%-Fw{_QC0{8iGs? zZvJBpYMp0RkUqTC(Lj*J!Ng#5cxoU3lR$s z(~S=~$-xK;Ip}-jiEzug<|%2?(Yr2bb&?!i&>##w0=P!UzQA9IWZ85`@3RIZ$%7htV~S8%UF?#Q;Gy2P%Gjp-WA-gn$#*#~`TTpiWK; z#;p9;sXaZLu?T88aN0W&yfjbHvyIAc#v`cb;JsP0aKk^vgfz+0YZ8J64m5jr|3I>j zBkjXEwW$aiIe4%}0uI-9h>?Vi>!u@U;$Y@idAP9Oi4IwvZ)PB9=HP3_Xqep?Jc%Sc z+AteI3kQR3^MvI}y;c!WX5)yUm4mkKf1sZ_%Djz$pKbFIv~h4{tTudHGi5pf>48oN z+BtaQIko#jd7A8AgXmG0@vYe z{oqre2zA@6d1XLo{CWiL9E8r)0@LLO%t*q(@f#7G;J_)Z zUZ_(kqhC>^4YNYAdsNO&R$;XtcE2dwOZuaX4W94`c+92iPy zK%k{YH~~LQd=P|jQ12`PPXtx^#=T4SLvWn~`%AJgYQ_#Bz`(^oEH-UNcFsiMWO!j)T45`hmLF1X^D@ZWE3m zo`c1WYS8I7Mu{Yd`a~c|;K1a_Sa?$|<3K>K(YFyKaxik*Flalw!iNASooEC}9Msho z3uj#K&?3TuJFy6oIS|p31^e})aU>ym`#l6H9OPMOF60y1m_5^6iKSGef!B=AuSn!VxonQ@)evBZKgR)(3ggBRgM3QiE zcq)P{4*vSe!&mJ$rwO=pEe%072e-Np?D!8%r_19Z9?uZua?m>et#BpaA+3AwTAYO- zj{|wpJYkzK_&aHmgi{WJd=7^D=|Gw1sXYW_kH|w%z=6&;1271Pjw0YmT0Vk84pw`O zhx_M_A0?n_`x^vB9Ef*LgSi$1rOqy&2ClcIkNRuvE)gY+mKyIZIOsx6W)q{aKwFqiBs7tnoLicGZB;kbLR|K^j z)Lb`(V-I7R2za-l5kWl%nd0iup5;n6j+W2BPe5{ayl|r~LN%*z$4}xY6E(f*>_r81Q6ObX+iJ*mpr#D7|ep0+L z0n?JY5VUgeB~c#4?@P!NFlo8ic09ktL8_SyOm}ZxO@L3W1cG)BI%gZe`t-(41ZAL@7C{#Whi^}W8;UPzr}z5HBXAwT)(=^?XM(b?C_S%XDA5yv z8wdCE=fc97;p0e?RBM$HxN~rCgek$fiDLdipucL{}wIVHJ;K(aFzqHQ8~gg52zps*BlKI_;X;lv0gZyWb~4N zVef_@2;g8*Z(SIZbA|3@15XeCP-^XL==(Al7r`NR*<;l7<~v7Zk~i7ii11n?O<2$^XepFkMvXo(Hu;9+aJ`{ zw$gE0J9IjNSPq&zJ_;R|R?+vNWy(whaU5LpXcJy(7o?CTbv&MpAfAK#X)|G>cBTsf z2d6tCNZ?@VB6E=FI6-%hoBA(6kjO!=vMxbn@)}x&dza{hAc=z?%UcD5wr8@WNj^)L zAV}umZlM{BZ*|#Ez^UeC2vRt>xpgvBH~n2g!2SIz5u|dkv_c-#?cSvkptfiYf;0|} zR4c>UflahFv(R8Yf(#C3b>s><*^lTOH#@)?K_&;`CK`}Gb&wfp(zd>v5oB?o?)^pB zIVhCY`SdfkBFN@o&(S8~v5X;oY79F64}x3{+SYXmt53b@Lz?uU?@k1H9F(Lg!_=mY zrwG`Vw;Mq|2krXuaD4jhy9BH@-iM%o18W~`@Rf0zOh8%D0R)8{nEIGPzJexwdjGw6 z7(o#SW|1bKdR}HLNwBs&ilCT-C3o!L!6B_M0yfNaM^M5+@5#Mj+a1%_1f+~QiJ+7N z+r9GO>vce!fcw&(2+BF=Ge-m7{!yoEp!Rex1Qi_I_-+A0X8s_OQ1s3RK_v%2KnDit z6wq^(aof)#sOBK&TZiz>;66RCQCRMepoW8}Mh*DK^YUBLq}RVLAgJZwT&66vBrKuR zpYht45Y%(9XSoE(U2dk!vWm$e2pTv@itiFEBiGF!O)8VSilC8$(8U&Td~9S60k>VR zA!y>jR9PQx+f1hutSei>5j1mfsX-0idxRb!3BJp2A!y;?LbU)r=ak(epua&Bf>sXl z4-SNv+hs!usNWESppAoMbv3Xbt&vAS%G@{v?Hmk?840F+HNFra*&2_alY`KGqabnV zlidUqS|%ds;y~ogEJ)WlLp!}r;SmB?E4F^Hiq(VI51qLr;lqQ+2;4YGap(sD@4h`J zz~p!;0(TCUm^TRN4O2A$dtOhX?e$Zbhlt~vM@aLd(+;gGIU)7x?9Q#m=Ab^9{f23ho z+n!{ue^*l+K(pZ5Ym;?Wt1;Tk{bvlZ+ zoT)+(!h!rWbr|O7rcV-%Oshc<%0byeW0+OE?>7OXN7f+-k@01LBx`o`sLYC{ms!TPBMLf;sNU8E1Gb?pdZImmN2h1yNQ zn+fpS{}(|V2cry?V1`vL9kOBviSGDM^(UT#{OD#OW%!SUB*FExID!NY`UFbAcrcG4 zV997H1c@9toa(+EROJu-@F{4?B1q!EvdRc{56qztva?=25F~T3ru$`;G`tZ_n$#e! zh#-XnqZ}33du9~frI9I8LXgUV{s|G7Bliz|mHZ#8AV}ljvfdxT%f@vIY0}2E>IgD8 zcI6!x(Al4T1^|&a5+m+xmV^1pFE%AgJVEi>VPzUD-fqGgCg;BB5F$}Db1Wg=#?mpG>CgqMfY0?F$ z*$A3BNclV%%4f#Xs&sSmTm&r~tiPlMmn3vDNWyT}`3PD$D5}$ zCcw{U6M_>Q)Obz;sjLfhHZynoRsqC9|WEpl-Vi5u`#u+q)B`4 z??B+i!G5`3kR1Dm9@Lk$-HpJTgM06^K+^Y^3rXnNycdBl2Y(mNg2UiNrw$9e4VY|hJe+cLq;ejBSgHiA2gWm6TI|=x(<}`v34)kYhL1fCN z4g&Hgc_Rqrz{$B$s1eJc1*uvQKLlYMe3{%E-i21aCJC#5oI`M(gZeH#SR&Za*^Ify z1q9(7xI7ev#TE5*u5rBmB7z7GdU&WnkA&;=oN=*VFoH-9p6t_y%kr1#ro8c-D+r=E zkeoXJ-ek>KOFA7nJ`6!L2P!W=3q1}Ur$6NCt#JcEEC-SABZag*J?P}*>Gzum;yBpY zWed{=>eKmB-=s(c@f`dkBL&fq7ATNDME!FIK>`PZ)Sn6$qD1J!*f%!@K_UkxflY$P z`@eKMp)fQKK@tb2tW;q}>hT)Vq-|dJ5hQb9AfW&sTE@~MLUUvyf)oxG#?OMS4iD`} zLb7o(f>aI?URp!;XJ+5N{vnFqS&5HM*% z27*iuZcOO`Woxg}$4p+|=LoVmXbF2INUm5-&sDaDy+Dx7LBBuNa3VU9zDgD;xd?JO zkbAERIvu?pl0KY?e1#y7gTann!uI2N!32z6Sb!j(gH>bHA;s$>ZPJ_RZxIx5u*|4K za9b7lo+KP!T#TTQgV%0iAUCS>836|N9}pCA5b#3=%KDwJCt!qk8G>RCJP-5+m8C~w z36R`afuMwg>ppYA@4LY2^>mLwWdvOuxJdSc{f1CLUe?}j zst8=I+4>=5X+KzfNg{#(zxv(?+&EAS)P*oneOegw|3?dfI|o)0k!%wFohF+v!)d#?%DCSq?4^><91N zl_?)84f8$u5APioH+?WI0q{t zY~WVIzCQ#QES-uVf&)icB`|;T>^lKt#ycR0n&yNcjswr~dxHPQn#&~N z{-GrZ;yJjh^+FKo5T%dGjcb-8NZ>%2D+aj^eo-W0#jI5b5;+*+V-D`WB-aq&(RVF^ zBo5U3bPBJWOuY$+$ykpdnFA$@o-iq3TRZ`q&TT}H!hv197A$HB3Ls#eZP zW%@@UX!dDM0xns4At>Tt$j}0z^hSOu0qJf&2#Pt#>pnM=J@hi|w0+`P1SK4--~Cb0 zoBW7AHP*~HkD!zTZ3icKp0-pVO}e`w5J5Qy=Xxo_#VIOp3GizVLQuiM8I5r;^Tyr; z0xX|gMo`It*r#?OLuoqQ&^|CX6hSoy&Kp(0YtY0te9oay@__#O(%^Z9@(|zst0b^Q~)*f&lK??`_?)QgH z3upBs2{l(9AZX>_qM1Cb&ex^y!;_JPxe5b!(hDS|Ez-Vg5$ORkQf=L8%tWgu|1Ve5w_2O0$^nL}p+ z$E}_taO1#rTe@&dR5G13X}{+S1nwOC8YvIKCl&4!;HR96-~|X%ITcWzxmKApNh0bE0xu4H9Y=y~+zNVVE9+Dd0&fm1 z_v(P?Ue_X$pgs9L0$&bna-|@0jP6Nt$F|4v{|BUpsL83w$m-rudY-jygYyaWQYnA_#&^xwQ&+cn)J4NLR>BxVjusgP2e14FsA+@58 z+W7|q$uzhl4!}tF?iQcho)@$o%(Svtl$Q|4N zmGu92$F{bArhSC8v=(_88p6Kg`+1hXp9}Adf{PY~bYSXV(2T&JgTDI;g;V-NO-Mre zsb2^JIB=ZR7yPOU-VhMBpbbGF2ahc^;po;rlL^R@?LZL3!ToWAp?b=%(F8p4`->o$ zgGH7~FlY4(I>Wv$i0=ANQ7D9i&c}1X-0G=3NwDZ4fgqHFU(K^%%oY(^I{WrU3PBhL zGfS4ixz!6^kOb?gvIwqo@T132h}w3P))oRgdmsqsV4SlN1czFelZ0Py6cI#lFic+^ zb`SHPL%^V4N(dr3@QSbkU%gF0fa4<-1W_D(_+|v{C2h2neBiJ;f@lu@8nz3eQwt?X zg4|CH1hE`!e9#YitbF$m0sSNTAc*5&p_?k0n%(O~K#G+%f_M&OE-Au8r|7-}to@^l zAc2G6ImWQUcb6Uk1}pRsByu3KG*+mSP^Sx*waNMjk~qlj*BcBw+b)uXubT`JBy(W4 zwo_L+PoE2Nn|$6mXE+UCn#ib6|gx;MP6~K_LhCblQXq*LGzRFzd!t1VtRg zTaE$vaCj5}ryLy+6mzh?`>%T*O;DuOZHJnf2ue6e*As&qT2~K|1f9w`2ueAa`K1@c z7(b+=Xi)1s1mzr@(-46^uZLbB3GXTwBBfkN}EgZN-jsi8S$+SLVY_JzWD+m5D zeZb|3@?ny&um1rAZ5-4os&=1kJVh75wvLApv~w_|P7+Lh{A=aE!R07|P7X4{`@_WT z^;1ccq^Gze=;Gk$I5BY1PfaF3&*UTm*HLVF7f@*nzn?WvB%puRDFkjD46zY|y3I~@ z1n78sA#mqF`_ym2F5R3iAQKn*AUMInqmNoJe8*EdBa3+Jhrok_ui|20G}`2~dl^fWV7`2QN5$ZhigNJ%8s8T}I%` zLF6_7Ma3z1NkT8NPy}Z=$R9Zvq|e-0LBP_8Fa-V_>|2*8T)G(OK!BY24Fmxk%-MfW z2wG&?ML@vAn+O6q_`FgKid62MH~Z9OV416GEc< z(*k3*Q~`oS4#XcR!m2?Y*`!H!wS@?hI5<+S0r$5j-Xp;L(mMpn92B&*2{v<-=yU1N z@DcI3=clpqhg< zRm!j%_R)3Rm{mOy)NqhvFAl%|Xg?$g(tnf@)N-I3WC&Blb!q+l$URjA^&IHP>BFk3 zpLFj1^iXdE4IKOm6bCK)3K!C(n|-tpG;*-EIYQW)+iFXIZCzgkO&lbs8p6gqUv3jH zP!%Hav=3s4m$R3KS#jRt!4z;j=q(HxqZdyR-^JPTLc~)OqlXfC@cI!i<>KY*dy@dVExN}Ahz}E zY|@7s(eVhpI0!FP0*&X!^i`55pNPPlgREymA^rRdT12S-J_Ug<2W69g31Ro9(dEGJ z)zcB2<=}Xn6)aPp9zy!?vS20xe-4Ie=LkKkOQi`Yt(t=%fP)Sb3z#xP(v5)EKjt9_ z^wXOAZ8d^04m`ti1?RtEEhOP$^*RLCIe6Chs<71j z#%2PxopVMI&VlG)DM)&lOqTcB$hCk~nx5rv#<#iFDq2uj3?wWDZX491K#jG9yVJPUm?dNa5h~5OIiD zT}UTbJ3`JNNaet!Lmjr3mG&VCvG%?Q(m2@DQx?k1Gj0$tRs0-+3=VpB|E-*HQ~e?W zlGDy3$mAf!;=7=J?G`QeS62ig$l~Ds{1qU&^&MRv*B`uuAe(~$GvpyR=K}qTiYSL5 z$mL+Joh3MK$}A&&m=G33OM*= z-UoXB5uqcHsCxv0LJltO7T{!yKV45p8sA1x#DSKc1{}{&RVGb(=5Yr>F$WqgUxlkV zcj!ddQ8gAp2?yz8dqG!kNr5CNo{K|J%0cvR4ak{&Hi>|t}v$r zr9MDV!NId5DzISVzy3^y4XlS`NmK?iA`Y@6l4r;rNax2r{A=@EBY zZ}r_=jG&!^Q>7h(Py&V~lp*Niz$wKFR?6(AW8A}o z6$o4fwtm>SO$#=x>9d<8sK`_yaO2?CQgLXv9PLWLpc9`FxN|UAQWr!;S}90&szq>u zgFSoOg4x?xvknCQ9ITV>E|mLa(F<07{rrm{fP*bp3x)kZZRuLn^qT0N|5SehIq)m*2coW` z>7)+|IuZziICwgI0yuuRq?7eChole$bKvdrTJSiYtVt4nn#&>x;lO!_9n>$mPCptE z2|W;ma*!jh3wL{#(bE+9x{3(GIH>bfgR*QlS~=0Zri9=+2Oi&5A*Ol$LDC1isVWG< zImqib6l6Ysr27wcm1+ngI7qwwMfhP|K;LOA7YziF9JtzbUs)1`h0qB&?9r2}u(Z0syk@Cayn<={>d){2=SNamn)ZKp7O?~EY?82VWtNZ}w$LIQd;H`78$>CoW_ zQaMn0++FPN-1Lhi*lCVLkjBCKgCfwSeNu^l{C748GB{9N`d65;CxK3X4h$0zWOATo z0PrI0_A-)St272d76(%AMIq$OSXw?k)^3j=n}fzQMNqsNL^qBqpN~h7%fZ*eTA{?` z3Vl>Y1W!Vc$ALkvF3i}{zKitX>%yrB@;Rt2R)+TZOX)Q9ovj0c0uGMNQv%O^p>%@v z`|C^ug&c&mT^1%PX~>W!=_SrVP{hIe?!)q5AN``!pF)*+2#Ptd>?{<-L<90jLe04a z2ue7Ro~sB$9=@S_yE1i72ueA45nCe^%PpEh5}cftASmZRCSe&gyx&5rKe9uXBdFjY zdbl0z70a$C3HQQQBBNB18d47pWJ=NhLcu18SA!Q}%o z@UDmCCDNp&IvWwxa*#W!NeG%Umwvo&ByUDg&%y1PJwSfUzy4j|<&td(8aSBu*&4>b zU3rT%X}HLC1dSXRZl4Q9GuFov;F-M>K@$i2=BdC3y+_&vym-3@K{E$qq{c$=%4Kw- zTd;ROf));ToKS%ugHEcFgaoZa2wFLKG28|ctozv$P_p_6f;J9G$2Q4i0-kFG$}0gA_6ZCY;G+Cvpq{G z@E;Y7z?%d4`3kTltl|(!Fnkn(z?XxoHga%kQzCs?H}AWO;4BAsTUv!mjR#XnLi6)$ z2>dya8EydLdxp~Qbk6B;1OXg$_^ZH)kT-PyA!W`j1c4mrYQ7UTEs>-%0lSyC5d?9t zNl6_lcVy8at12=YK`;jcqGaI7sNMTXr(dYwMG(S4s$LH$bUQkRfZTw42tqkG*t}4Mf8H9>BEqNYYy`0!y!i54cr|p^5t1-?<4Xi_987~O;fvFGx=T}_k&hsr zgW>NI1l71Bbb=N3umC{<2kL9OPj1#t`$?K~qU0@tL=I*?=>d9^J!#o4(yJIj5(hDA z_k~i2Qo8@}OzH!IWDbf{R6!ycf*+ z9in?EqCKk+q;c?IS%zShW3qxY>Ew_a1Q{IE_1Os;6Aaf9;9OOUAd`b%#%eHN`is>B zj63xeK^6z;^BM(>^TR2a=Fo^Bn*&+%DWLeO(1Rr8R5l^V<>0Sfy`cA3+Kzx9_CFEi zad7;kBou5pK8pa!>|Y4-IXG}BQCR1!`H6rx=4}WHI7r_l1`d6!G6?WVX-81V!4f4~ z(C8iQOF+~7zX*yr7(1~`kh)s`oq$QNME3rtzEsSC{=lz-cc%z_E@^HPM^M5+#b-r$ zBeRo!_}pcr5R`Ioq&WQE zB%$E90)k2oMy%)*sx>mF5b)rX5`t5jHGf<_Mh z>>CE=P8u5s72lrDV)EgXczOo1-F za@y%9PYe;Xa&Sdn9Y#oseFcy=|h0wVN(R{9Hjh^1G{^tvk2(g zX^x=X{U;j6mRO%hnHNs|ti~?Yi$t!u-qD z2;4Yut_|G4Wz@3Am4$dI&HL{6-r;}|FoZukuXHTeFTDp<|ixxWs9vo~s z_e(G->3mAS&605lJUMXs;{eqGo9HMy=jKENUL5>5*AwQuj-$(gYrCc(@aDimBwDb{ zilj^YlA+TP_;T<{bTlYy7So+q6Y-e{&T_EtXZKYJ#`nLFPJ1@bM&QrE?HTWdiwZzX zEjAY%5d?5>?4B~5xaK&CB>cX#06`!JAN>VrSz=#Az{%x{5Cn0scN;T)Vv7lqTe=iepZ$-XTJA~>j4R)a9V z({!%!ptlQxNDekl6b0+)0d!_u`*S;jC=O&E6$sl3KhZ71N%6Z7M02qHixG&8|4#Q% z9Ioy~5X-@(7u`3J8-ArVfpIzq5X5mH(S1YFxZR?3u5rHn5Q2CPj3>)N!cvt1mMPT7_#sH+U~WOH zaPVAoBuTK-_D7Jx!BiI$xY5$DmVorS00fyFIQ-)PCO*p|2oNj0h#-rD2fv0w*~MN_ z1dN>*j3Ao>^&KO@T_(8?0V}_TAjsw5^=Ap#JI2+N0KJ=65#(_&Ax;-&<#y2lWuD`8 z1o<31R}+Q)3++#n1eb5&2nslm|7ruvmgmyP%$-NK5EOFodyPFjpCo;iButtfg`kLo z9{#U|^gZXJ39ud&gP@p$p7tUjZ{NEg0ea8wA}HbDM(0N%QEkb20xGu0BPit{@a{_? zPx$0PK)U?{1mzqojx&e1hrFHcz88jVF`-Y5 zk^8F^Ox}bV=FCgHq?Da;5vq_9~``23eCAO^eejJc`X7r4zAoC1j}|f)6(OU zC0`M^bMVVa9g5Bkr_<0Mwv7l*a8TJS0%;#lE+wzhj+Q0_9vtk6vVcYFca{^--0~BF zCkK9`tA!u0Uee=vPS0BrcyXX@sRp}yZJ<@@siXfO@aDj8v?KWa{gOtSG;~)70$&bt zx_@>!Xv0}LWF438LU5LY2;)jY>q12+Noe#I-S?mBk3R=@clCkW0k`R7J!_f-f&dPz zzbSy^?$9M>7(#KV@2!c2``&b5sNx8=naJ#2Gf?y6(FZKex ziuu|ENH{AZ2;pGnpC5vt_?XU@_S-2V2<70jvsw4?ZIfV<1ndu8Vku(jtv1koG>v>IjDUE9Qb00AdZ7%7ey#tpL3spUAv4B#B<9Hd0_hrs6L z^f5D1&kR8#2Sd`5gb$`V$4Nrg8VdwT9Mm0pFUUQ}qh&jB#o-8&Ie70=Cv3ku@j6Mc zjkH3L!ojXPZ9?>nPjp*nz-$`?sT|mL7ZH-rdeL84c-|U~AdQ28>!e}LsekNKP|V~eBFN^T zs=8em*LN;`9}eG}j3AeT%NawUK}Fl1G)aH{Gz57Ze0`z`->u9$3HbTg0YN?o?sw$D zt!_G<{*>*Qg`j`~8xvW${9))(k`OsSaC&-m0clcd z#tH=G9F*9Kf#0UHw+XnsVKssZ4sKMNz$?{7h6IEiT8E&LgPOueLfozzdRDs65N8C{ z97H;b!jJvAbS)ZjcN2md4%VqR3Yo<%^oNbAr?(=g<)ELb37F_-t|NW8+v$R!o`dDt zAA~hkDfI*-zTSbLfrF??gTSI+3Z1vcr|(A4$U*O*nL^)J5p=#ZGj|_?CJydetN_y} zKSk1{Jtq$$Xy(9jjVxGCm~xo_3$-H%S~z$cnI~Ae52FK0{5#0~&#F)}Dww-}L0(TBN z5;WoIAMGim4~p3V2u^UI`1p}v<8ShXfR*PiBJkkgZemXec6{7QfTM0O0#6P!U8X~) z-oMUOUU(mZz>9<5>vTa|yN?q|n0)mr0&foDm1n|L(ZRGyw=AzC@a3RKsW_x+uAWO0 zV)Sn!ILm>H!!Kd4)}^-uY`Sy{fj!C=2FStQM>o9*Xx5HF z5XeE$jx=FSZ~`56e-DU55X8ZhlS(jB%_xKHBVQ_8|f=~_)7OTRJ-=@C^_;dd;f-nx=NXSFurBO==(3q5p;5r9$4@tq! z``HQvw5O&a2l`B>?#FWkksN$))PeP>YiAPB zrJaKyiUU{8ze4chh4i^}z4;}AXby(|)`!&XvtvlY;ZyktVmY|rZvbs0zKtM2XU7`^ zaU9%~QiWVqS9-MVvQ-g+cn+j&m%-_&zc!NuzgNWw5;)l3*(Bsmbq=RM_XC1N4(`ns z0n58n{}NDktqegD2jX@;p-;<1MRLb>@7(_fWd6q;+hV)T$10rqo=+~!{x9)A?%4i* zILQ8h(zhM|C!u$2zni(zzFO%S?fHMDusgP;r3a=i?SHI4x%v9P!2h~qyTUIh?VjC< zHgd=If0_S%$9Asv3pZmHQtUS>Y8>E${>lmhDqAfP)NrtBmlPOlzOE+VZ|n#JwH)Mx zYJzc3M`Z%m_*f&T=U~0G94t&*Fp7Y$!e|5y92i`S5!~A4?-B5>7!Wja@Mv-OMFx*1 zJt5#ru^oaY4xFwiLVarKK?3|AjziGQ!4AKl!nZHZbUmmMFcCou2hBbv5Iz0E29l7! zateZ04t)Aa!ELkMbn*2_ayo)G4!+LX4^?83A|%18a0Y^Q4*EUl{?p@!*Jwc{a?fl8 zog54k3_)LMCq0$%ev2c5E)EVPd=?yz=WCHBiL73Lz}22D?>2V7(}7o$dk`?fWDx>4 z4(9Es5X8j`=}yV-k|hY-IZ!$LN!W92K3%PW-EsscI7qS27dCbb>ra|=D|ICT4-S@i z8$s*9!Cov)9ITL_;Qe`qYvln?z$3S+_n|LSq{#u`7Y$@Wz+FNa@9Ww{5fbft`nrjf89zF zl*)G?2;d<7&UBc)!_h4|J<-Ul3gtLbcgm5rYb{NdL{ACRRF$<0&2<2djr6~+=il+&xliU%6aWJ@{ zMR0NZOP8q6{+>W^or6iv9|WZyHFR>KpLYsDI0rZ9YeV3b@I#~zy*79uh~U6CR~age zzKkQF($EJ%BnQn8CP8ase_DYV+xIMjC=P1Y>wv}Cr|KkOSO4<}qB%I;OAhuQyy#58 z!Uq=+#Bz|c$q06hx_Op>#8*KG;y5T-q6uyrR?tV~q-&QE#B=a@lq7_YIntpB z5;#zNo+D&kNHQkiNq!iDL=Ip>p-`ItpNA9B`s@yZR1W-p8pEKEi>?zee?lyRG!DM&E`Xc{ znUe%WzKKJS!NFjmQ204`g%|-MUiT4Xa!_)vA52YMM<-ahmWc?mI2dwF3To3&+mnPq zu}289IavDmv!JIS_k)1d-j5OFaxkDq0<5&Pw-DgaClx^+2P5w|g59=p6A74qEe%0F z2XafbVV}jn{#Wq#@Mj1LIQSl3D`ah4PRHrFhn^!S?&!JY{d%%MI7we z)gKQ0Q*1|oqhl_DVh+x`_JOktp3zbC^}{>_B^*fi=?&*ZeCcy3a>;81r5uQ*=Ll-n zd*~F-R=yBHIR_RZ-Tz^{@s}LwgQRZ}f(j1483x1i-)9og!{IA}CJvSd zGzyz%oTgu(@Ij3TnmJf6*&BQodafo3ukSY@XyG6_MFu*rB+{w$!$m(4v~r;PXC*Y) zxb!6nUXrZ{+Bn!)paWC0r|&1g??oGeb`A_JT^xL#-6;Hd*?x{BMR0-x(?#vVz<2I+%lE||c?2FDh`;_JJo_Uzgd~g^ z)f0gy2a94Wgsd$BEf*d9s*J#k1F!gA@M%sJt@BwvRz={=LF>t3U=q|u*AH>8dn54W zU{(G*LBg!lD~X`jJjAPc%ai#zA19I{3guI@joJ zY>D7H2WlhC;H~e!-Z+Q9!x4mY;9M^S4wp6Pf@ApZkq9C z4ps;L5mse94kKX5Fabdn2ieuCpd05hn1DV_wg{p*a5<4LsLZDd+n zW@k@FkjTNro{xo5-dVE=m~1l>K@tZNor56k&14$_GRDtAkj%lmM+3T#$gP<`fb7nB z2vRsu+t~*ia_1~0peuVJf>aJFbkrbmaE}rKf|QmZNaJ9ZMU3E6=a5LiNVDY#GB`M$ znkF3FqC%I)iak~#$mBrx&qNTdk))-^hR!tzvN+hDGYtY}j-}hBzM<<8WOLwStqPS* z7i38vrd4f3kjug2capHU;|ASdJy){@K^_NMlOlwMxiM2oLg`@_1o<2|hi3^gHTtf1@}U9@tJxEm1uW zA}Hp-MAs7B3q8F_la9n6Mo_}R+Sx-OWr|V?0eb_EA}Hm+C`SVFWABs_;J?xxK{*E( z8dTxku=G>{WOklJP{D!Yq*TGuYDsSbOqY5hsN^72zC&mUFrz1}MBaEIsOI2K;ZT^q z?BhU^;CH|WK@A5xj};61mUsseV0!W_f?5u43)7+Q{g*ld=1xA3pq_(krsKe8_UY{e zEZ7!^pn(GeEnV=g+xdwA_xKBVIPO&p}ld=2s2bjS)wk44bM!9wSu(3oEQ znk3{eyobPb99uu^?=Ho^(rj5kz^L;32;4aEurPwz4o&o<(GZo0z@39=26IKe?sq5)hg8bF7vQ)Vd$JUCF_CkY+CR`hIRnd(yno*eAxl_3}`vo9o_e)KCH zffomV8omn)n|B8jup>MZfj0*aJw)M|QMw)hEdyR4@a5or_km8=pTkEI5U!bv;4BBT zk8}vT{e628u%k5(fjD*Fam0{~}1>U~E^6&~^9_U7^(86FK;w+Dsw`?_KMJw|x)M zLwEtB#StWN(3IW-3jQX=kv?dqNFqr7AK-!v44fH9caMi}ltGZf!SC+-7F*+&H<-j>HRXFrBm)0sBx`%RSxe9_z z4r0Ei7E2=X~tJG4lMeVa&s)MnYNhoFE1pS*U#%zW+v z@;)5iV}PKLgQz!yVB!7ghY3h-F+@KaBmq}LjSv)bU>^BbQ19$%L4eLW zQv@X(G!Cj0tfIn`2nfqELr}`WfF+9Hb3vWXW*Utw5tMUa^;{0N=?#k~3CYgG5ma!{ z@BAOZ==nou0wRq^BB_HE}4c44$=&fM31FBWU2@(t#!+YWmKl z1Sok=M9}y@fa4{>+C_mr1l}r6LD0m3Pl`IoJboQZ5_Z>5L(t5@hD&2%+m#iT1ne3y z13?Q1S=j?2_2Nr00*vR+M$pQEiJB~kIhGX@Fsx%Pf;JBFwoQTiTi^K*;Bt39f_4r* zXbuONyoGcsea+PgK_>^lyO+o7BDc{UaKAT;5p;177&RL%ERSp_O*(#X83NbwZ2fRj zvp+}=*!!9QeZ`ds+&FkF+bmoz+&M_NZwqw`2OVt* z_}1!zz?%b$1_?-L{6vQ=Pp=&ad^r$i_JRjT>VA?0L2EaHvmB`3Qh_5^uF(3@$Lo6$ z_;WC+p8?b@eg20etP?qaAb^8)eaC>&jc7LlVvim|5XeD}niQ;_6GA)f``r~m5C?0u zx^JLZGdO`H%&~Gu5X`~h$6ti&!s3Sn>_2i6K?nz1Eq@D}Z?7Cjz>`={1fd+9&6NPf z(-yP}S7P9eAdCa&<*$TO-&U+62{#A&A-K+gbdotl840rqSoiT9f^ZIw`F;_$ST@r_ z$ndHF1Q8q@nXwGMC!LNY32P%SB8cR`Zgck^b)9@l*KxD_f)PY<5bmuHM%V7q6XpKO zR}e&VaO0UVEVdLXNt2!(zKS50gM=AR1v8y+di_a#v(}OKw4%Hr1sQVMG~6#+(VGULC-~cApP2ee!Lx35)huj_%({ zH;$GEB_c@Uz%U?DcFPi-UZHL}9}0-Sk0rG%6iIHU}p^?*yk^TTDrlPVLM@kjsH?-(E1?;0&F6?|+ho zAdiEGeU+g#Mqv#}$eogdAfJP`Hzq^tb_051FgpGvf&vbvysr>qv}e*!t4r%E1ce+V z@9PaloAXpjlOUr2K@kU;d(6OTXQVg*BOkp*P|QL7_6hK=%jNiGc*X~pxsNleMxEYM_Jn?{l zb2Fr1dCb(H5^zk`Xn6RpAbU8%Tx6T zYB`wT@LO0G?RblTrRv`h)N}ANqbK~CYD-^MugLER8aVj9U?_wt{}@RUZfp zhd;P<#u)+YWoiK2Dd@Vc#0#7z;%=zcA`Ji@6dVaq=aYB+#&4>NrCREFYNd{ zSzPUIIWru9HwAsM;(V0P61*?kxoso>9}27wPv;Ab%J6SG_^vJhUkaWZ=flPm%smeINJg*9TwV*1K>}Ad8z%fjDqYZvRwJy$uB73=YDel;S@}YAH^La#-}21?(l2?5fp4a6vKqn zla?cpZD0i;k^=pKUF@{7!z2W9KgI;T0YI^AfBg}N!S61r(n#ZCER9I_8F95{&6XQL<;^y4&Vj)J8BV-KeYlt z5(T9xZLFeX`Z5GAh^z*XOo5`KE0u#?PcK(|$ zzP%@C?gEfS!Ok*WzQ#TZ7q1fOdjRB6FuGKb_b+apf{vkR{C)tr6!cp^h!0mj>5IUf zv4;TUQE;zXlpksBl0{(Mdj|md6i8*fXOG5>mPBA#&M^Q56x4Pr^B0Yywjz+X_#}WL z3ZnZ)@mG6n@IKJ&?9%{BDA=@MCN~}yrHm3%yv_nBrGU>I%k5uRyWMq5Dh7|z#Tvp1)BFhv3oAN z@Y*{^{W5@R3O*ly&s+~5z^lqIe=h(v6jWB~arv}2gV2y38TtUIrQq5dU4C_OEnXxl z^!Wm)qd+#JjU~VAk87ZaJJ$g;Q1Hu7n!AkC#_J{3)d2t+DY%i?!HTYK^FzmAJLVRE zCJLH=3Gk(+n=z2M7Yv|<0*%Q^{Ef!NTPUIWLMVVX3bGwPFwytk0tm?I-UZM>!7CX< z-l_LyKLS_Z-2>1`fq=Lrzs;=igfirAB!Dgov<^O2IB8wY%4bc(2d(w-5r94luITV z$p9QJNc|v|Jc8?rufn%?zs^(uXDL{zC&!E9(*@Bn7=B9!;6%aWvkLs}Z^<46OcS01 zaG@Zm@^3jXI2SK}re4kh;7Y+Y|B-xQ%5^*`-d*z&fExwHOGb0QJ>_|5NCpG)0Ju|d z*jAB$XtWrQz`gc-03H-1-JQm}HmpoQVB7ve0G<>mULDBIjnB#rpD|pJ*n1>glAt{=E1rS1kLhE3zt$qssvB4kdCIF!n{C=X(D;&BbQNruO764%s zR6A<&$)Yuj5cuHL4j`O@Hgh@7L&dfuFmy*JfCvhtCTeqsJ$hOQoEZKSKqLh*dIR{{ zQ7Kmt*wy|EKokW(KmPqM(^V$8@LTWR3m}GqFL9OZSGyi=0ShV$ocgDk6GwsZuTFM& zs>)(Cq#L@z0OBdIH8bM2^TqH}Lsdl#Kq3WK4!5&e>Vo)<5Q(?_0VGjioG8hA{mS>D zA?2SG2ars`>nGYgHuyCz2dsJ|0i;l%{HKSlc|Hd(Lz5Q|0+2?*{qg;|Kt+)W8q(l# zg8`&daC@97ziPZ2KPvAv$OFirVDuavK2yg7|E9HDh5*QARPet6s&srn>Fu#X@e3xZjAy^K*4ok0iH8-)dvJx_4EJ~QSde?f<4z+ zn2Er=VtoK56#Smj$C3|U!G9$Z=rayLDFr5OL%6}#uXrD*eEdWJWfYXl%kf3_y7)2E zR%r;JoPx)5B>AF@hZX1;L^e(VP(gwGkq)NRCyH;r35TWusG^|X6&0;r*2`e!jdQKB5L?w36`15iuB5cz@JBJMx0+zRcm08mGP z=Ef5CbC^wkG^AhBa{x3@(7QsF7i8|oos*`Zxd0j|SZg(rt4is$poFuA^8qwb@FIEu zU$bVSB?7t~3jnlGaDJB(cj;J(6AtcN1fY$A5i{yoSAidX2sk<{0nkCgyBlTf)b9Et zXh_S|mILUd;OfICtU2v6UN2pGy%Ind1+zAZ^Vc^tXP|^tHfsQMQxN;$?^62K#LoyU z^|uGmLqXskS^jHJZ36-uXKw`1O92yE$n(DS;NDD%;1&RV6iiMX#2;BI_@jhe#q9tb zXOsHD*?K5GPZY&a!VQnJ0K6$Em#<^J0}OF* zX7@5@06r9a+BcCat~!j@tznJl0r*nz?6x#77grHRLpl@d2EdPks|qUoz_h1$C6ILX z5&(Y+-sEX;v3D{tDB(q|Cx8G7Izt9>GyPV)JFvdu3V=Wg;s%Lu6f1WbBw00^ZZ@P#rTAG>%00!AAH0fbTTLQRUl zU#EiW>Ar740KzFyzi7=p6YhLN3D-++1Bjr&MQ;S}EEux_f!jC307O!d)!dIK9Un0i z0llny0HP@PAfUh_(qeE)Gbb$)Knw+wM!ja6JZkX6xY{EcKpX|)4d2*Koyd4Jq??*? z0OBdw_x>5n_qJ(AU~x@6fJ6$`pDJYUqSf(}&&l!;fFuf<7aH?L%^|-~LhZO@0Lc`z zZ2rW4*Jr;)KsP%DK+69BCpy`L1?qzlXmfZ9AdP~%d%KxkZYF-rL`Y@;NT(q5mJ+wU zYlxRWe%~_zWKa<7EY2P5+O^S;Vh?5m$fO`)oi@+jGY;3HKW5|t$f7_be={!^{1k=~ zY@X%;$f3X^BA2!A=~#e(XY?BYxfD2GR^w+?R}4eo#-1Voc@$`_uV>$Ely)OftNIo| zJ_Y#-wX8Sq)KN}?kJo*BloPw8|{JC?$P-Upq2vt?7`ej@x^)cjqM+X{~s9eKfbXYvUAqV``L$_ z(Fe2tCH}`Zwl{5zHa+_M>Vp3#!Qa>xI6c*L)ph+7=*a(-LcX!Bw>#?TuAM_yqc30o z3;eHdY`Yu@$|w?)zlFZBz1rgcKluOsjqUQAE+%m%Pr6XjzZ4|lZ)~4#)}MCk;FUS( z8{7Xf|F>^!J73B&O-{Hghfc!<2gTF>G`8yK^$dI}%L^W@Kw$M^O#m$v)D#HtI9Jyt2pGQ6 z2GB-n>Nz@c?=#kUK2GuPKhjEgSQwi2!;jI3B6V z6U}A6mdtxO04E9@-p%40Lgw8^z$ecHfC~jj#isEM-Ntx@J^HvA09OjGFI47lmahy( z38k|v0Ju>QJbpC)bHg1sg%)&J0&u4w|Mzh2?wF4^mDhUD1>iwJkf{n+J7(;OhV*#i zd;p#ll&h-oa|WvTN-w*#0Dw0Im)hU5)(eZQQNoi;ivajgu+>V6M^8<}D+=9^B>;RW zuwN<9J^a+nQ9_sfasYl5EYCOQ$LqWfA`m9A3V=Ta#=@0sUhO9j1hSph00^L9_$x&& z`#{zhfhco(0D%-7>QdkvK12^dpfPI$fFKGKizN8@zy@6DSRdI8AcTTnpW4`ltk4dW zaD2%&0HGA@&5`6Hi)R`lP-(amKo|uPad+AA{KyFi_$ciG5Ke)_@&x97YWgMwCj8k4 zAcBH(c|I(&xW63&gK`c6h@`-)=m%4f)C)o2ftdq_p&r>}de;6y(T%V%b)s@Pu-D(^&wC6xe$DGLtq_ ze7B}rIRi+dAhEW9olTJ0jE3|l<2-<53XGzL^ODtX@w;5BH@N{wp zf~y1-*Khzu6g*mbmE8(&!V|mUsQUm)C`fuE$VcqiQHF-pEffWyl!75!o0;?oyA22| zeis9vi~_-$hb&}LtPTSHdmaKPr=TNSnx`AgRzV}BG?E% zd(k%BQ1Muh380RGb2rCxzweFsaUa#21)za~#9cA0X}c3{hiCh}1kgx>G|k0$t+fVzdK=z&51@+zgEup|*Y4zSlu$UQ0zfwf zZV`jIfT1<*&qj4)}g zb6Cf z;g3HcD>{z`S{tJQo zKYjvmr=Y-7nI8?Q$L;XSJ3RnADCjCw;rlHTaCsbV{s(|31*SJ%G1vE!2Iv@4KMFYh z({=Es;HeqsHge*z2$Y@>2H-=%_{vn)@yH|r0n>M)0DLLvTtAr~AAT?zf!$a81Ms6@ z#mZEcs`wn2WgBLS1MsI{eyb?Ac$0+Z2SWuZ009&$0NT#4YMvZsPD8$R3iy~71q)>2BK$ZW|SsjUnB)fGgfHVqDHY;$gUh7;0 z7D{sf=@bmzF_;IBi+Y6sPn!WCgMuRo{dtm*;w%ItZ_fmfNkLMsGH<#%0I%+UYs~_X zMM31fAlA?P$t9GKP&FGs4h5BCo0+gi?qLLe?zIAtOTiVv@qC}P z1x#j58otuub~XU=DcCl9G4~v$co`+U|7;7OfP$~fCh)e|zO4xO-(3u#h=MB%p0dus zey#|dw_6IJgo5C2dfe^t7hK25h^+unO2Oss4wiXueK1N;5?T$QjDlC!Rk%Qn=sN_~ zyj}~SoC0>lly`ST;Et~1(e(f-D43wNkuB(#*Mt&;9XA1}qF~Q>LEcq4uN(n3XDfhe z3SJM3W@oxS;NmqYY&(D&3gV^;@Z)!La8DrKYZri83VwFCvTa`-@iKJP)V%=eC}3-q zcwXjie5Iom4ghGNz{6gYkH4FWYoLjr4gqMSpry8!85yVJr+4oCBLJExD0GNoOWo7) z&f$*h#{slZu;rFA&u6Yr&~;d~@f3hI3U=`ky!@*del9iLI|HDDf`e1~@eym@wxEQJ zA}0Wy6nyg&=9ca|@Z!WN@jQSo3T%sY`S=FY6(}M4v>SkK3O<Uv(dhz?@tD0GufJ?O4mwvjT8=96s_U02c~Q>o&15 zN{#|3p)%(d09Oh&^whHWV_~>LS-&j=fExvya=x?jA*-@b0#myKz@366I(1A%Y7Jhu zy1u;&z=MJZqOmMFXA^#BLd`A$fF}jPkrR2W!{Lc&NRvw=0eDj&Rhi7Bz8t{&4_|jg z1Ms21&~z|YxO*G#$9b)b1K>-6?{E<=9d;Q{Sz-qg0Qga`u{)l1I|<+m_gWzdfIkHj z1!efru*vusWa5(n1W+*e@(f1rSKV_m|UnWx9hi0(Uc>0tliYrc#g# zRyl1%Kz>FBfDj6#-0m}F>1DWR5>3kl5K6&(eQE9-)|!YCJ}l1$5Jo}JfLLa2q9cRA zTb*10;S{|5`)?N04}DWcpt~{;Km-Lt@5u9}9}YPPSUq|JAd&(D(`IHecb5r4>1>{DSo^64PF^P>8t^eOo55TPxh>D zS`tbS>HGp9g#!D~RyIuj@oxmw5*h%cQ7}nXh8M41(TBkEJKq4LQ!q#UC(Fsr-;Thu zuoeIr6bSej^S42ZdJquMYzL4@!G^X}X6O)m9f21q-vMM%AmFUdXIbU1MBue|7l0fJ zCKzTit)m{h5ok2|1t6D#1(T)uVzC}Pu~*#s4Iqz#0SRhcJz*c-u-IhT2Oyt<4J-9| z=1*OG43b7dXZ~py6;L3tcr2g&xUK>nL)u7D07VpZq&Kpw2IKMVJDQ|~@#@{^pfh&~T`&9wdQc!L!!B?2f!ZXmNc|!rzQE>W!02k?~#V<$Pc{B__0|i4i zx3dcmN8#V}U>9uwjTE#_SLH>cYaG!*m(Cgipos#B<>UGHM`8G&Gvr1CXrVxN>JaXb zt?q^rY(MD%XrrKBPMj;amg7F3K#&1|4hpmmzh`SU_QMU@!F)V`P700{&gOL@HcDtn zy7wmn=%OHCX%vfzi>pRp#~~vC-4tBdBg~yA?8YmyeZ5lv^iZI1vyWLxpS*z*Zts`| zpqGNZBS!ECaY5n;TrB4R`Y4zX(#Hn0yv4Wo#E~Wd9OshyL2qUb6TPf`4<&T`nF-)5 z1-%Min4MQ8-q7|xH4A_f1;3`mv)gT_abIJZz9j$`3RJ`fa8+k-Tu-lfW(B~Ng6qrV zxyD_yndlhyU$h3`Mu7ys$?P4R@f_D>vjBiQ1va{Kd7AgbHz=WM=pq0f6fD>~ocEo! zS&Tq(ksSa}3evo$@vFA10fAoUWdOV>P~NS?W&L|UA~4BvB>*1^mM*vEdmIAsb;x?S z8h|eaJjQ@8RvC^z)-z%9IskqY=#(chNv#{kXh^GS)&uaT;MdQXo01*^uPkzV#EUnB%U~#5JkaH4H3T8U1lEw zCtaKX#8B{JTQ!q@_XBV1%&R^RAdZ6hhqd_Qt|yi_)czp=GAQV~H-L90 zPQ`n>jXUlD$fV$rNFFn?+k(NP!p)F=`_4h2UBzhIU|YWTV2 zqZ$n$mx5puEiPZNP7)=Yv4{hZM?vcyDK0VC5f>a12NM9~Q{ZuF3^#I}tbr1u9FqVP zP+;}`zYauXW_)7rg6lB{8@;)nLTt6hGIl;MCWCyglT_ z8I)l5;|+i+3QR}!1qHC6wFKSWFuCj&PL#A!Dj%C z6xcI)UjJzcPFPuA2cU_94Q+q-Ma@n(qJ-+=uK-#o*k>ccbtR+mgE&zianFMsa6{tcjqf>BQ6d3J}Q9ZC?_5;*%$*P)k!Azq?fZ`7eS z1bVE50rXMu=Y1>tbx#zp`HJp~0dSm0>Iai|M{!C3+$nh9R>D$_Oio7$6F#c~@Sxx!7vjSLtuqj)w9^3KNrB%) zQ69b^>ns8;7FqzjDOh)A5|>GtHVuIb<8%P{P*8qpFi$&t`6L2vd=vm*3W9Wm`PiL< z>Jg|ruLr=7f@7;Kx$=yYrw~}T-T;6<1<}e{{7qIYF2G-I9uFXZ0-w(%Oz5zcE=u^i zVG@8q3RZc2VTC%5_(7HzJ{dp|1x~M0nZl6-{A|s6H5EVz1>KJY`0p?;+(}&co&yM_ zU~XzD>$~#`KLna9O#p;ZFl)USf24N;PwX>`%>aZ`u(v0J#e_u#p|hkQI~za*1rlRA zneWv>PZ03GVg(?Qf_A5Fre`=O6#?B6YXDIcxJW4R6#H9vr)jW-Er1vbcE0+;_&7`4 z7}OiN7(g5agWBG*X+Hn?=iQ(3mjZ~VV05GmpD20`|E3SBt^|-s!E=XRR;IZJH>5sI zT>~JAg4w=(?EJz5R_H9vinIriOu@?X7i@c%5`MNiw`~NFLc#VEF-%MDrV2_p{B{d~ zGzvzp9L4LmDqlw6sO$~^=@i6$8papJEd7B%7_bjOCIzRX zKeIRE-0)fYpl}dC76k{QzB5U=h>Iv8X0HQ)918RTGFZ;jXL$E`&4A+oaw%w1Q04=N z%~C`O1ME)$$fF>5jsV}8JrggmtZdEz$fw}SwU2E2pY^X%!s}~J017Cuw5nwdoxb)6 zv=^TTP(;DJodW!A-c$S#_%P=pfD#I>J?LXE=7!*T`r}j&0HqXs{#n8nENcFZh9tk$ z3qTnKi+q2v$)$O62#AFG04S$mhL8k5DsGK$jj+gT04gX5Hq2ssDnDc3z0n^)6$SGf zNAeSCImgkERF>WZP)$Mk$p+?k`WJrOpX|K_poW6Vfzd2$>(DNg(4%u3KrIDhLKOLd zZpEtz_&9_CsH4EBNRThgS&X}(We4s7XrLf-gdAUMCVCSk+$oC$&`81J=C|y3aS6U~ zGC!gLG*R%*SAh4nN8-{le8ocmEfg63eR-}oI2+G#?ne^=v{7)l=kKagvK}XV`S2J( z2L-lyTKq*r5#Gf=dLR`*Ck2Yf3Yp`ts6Xf|S&BUa&_#jhvtpLkXC8sT*IStYx+w_n z>12mKK2Siw>TC{x9tu|54dW}eyv9G##C~}IdMVf!X2|#4lgFKP8|wl9eH4he<*@l1 zBwnH+-Dxid;All5QsOgjEVx!l(p@eOwp8&X0U^u9XoeMt_i$L+ZS^#booLCvl`Z;RcMxeC0 z9)LRqACD;WoO7jX5is8N4S)v)v!7mL{-@-wA)uSw0>G1k)j!>tbCc}{1jJW$0Pv20XE|JP`l^6!aIWWXs>Xk3$JwC;I~kq<~lHaYe3( z6JFnni|OY{_gvG^CS}>Hs1rc(s2#pP2Qq6al^CngAjx zFq_%Jv=7LcBCvL{4uB{M%wsKi^p5`d2#7x%1t5lkBwum9@<}z`II6H110arq3(M-* z_n^zZD51tSPnM=kVHXM`xkaexWNDo z>2&H80Lc{0kS}2_2ZJlpt+02S6qTP8$nYj>j9kx0|_m9)K(g zEDs9syKSDh>#!)o20#u4sy8IL@rgjZ(-hjY5I`;kwe!1}>H20oW%-FN1&~LLg3U8D~VDX~^04gX5wg1j~mVd!Z>6aD`0IDbu6qn*nX=CvcZjJPD0M!({ zyez}>Z}r2EO8LE~0Mt+rlOfB$v_9T|j=@{(EPz@HqPPCt)={y`L*T=6X8?5+Sls){ zE@T(t9ga}73ji7@sQ>zi*##)zmr3jIxdUjV;Mh)azSq&K1Py7#`^x~DC~#KMVZa|>i#1}vt1qDkhnBUY3!w`6I={kT83I-k@&Dqy?&k!j4 z9sr<|g6UHv_?OOjoZzS)1fYuo&CYl>*Y1}&N~pEH4WOHXJw}53`mj?25g5NN3_uSB zdj3W1YeNw(2Yz0?2cVaNZ%(>=SZvW~lIePc zkvv{|tP285gW~|4rQn04I9D~FdJcj69SH!OC{P_G&G(1x#VazQ?T-PtP@v~8&+EE` za0hG8=M(_06r6pc!;^&%FF`|!{h1EHjRJ=i{rJ9}DY%2xJ~R`6I|VwzL-_P-s-IE9 z$UWHrJSf;%@|Xo*xr_UJ12S>}cv7%$t2USE7d;InlnUkp@TOp@!Zo&X>$YeF7S1aK z;6s67=vZE7zrh^=`HB(%z7%v758O3z=qyzDmRII-Dr@1|XDzT=91-B2+jAB@|6<1rSC-L41E+bJ7O) z?)$cP00^gGZB`#k68_vDCFIF<0f?Yr(D6KWJ|GP*bai(B0uV{Tg&IwsDP^?~B?wyg z0*IoZ@RSz!p3|=ofr?H6r+-Sz7z*Z&6z9%GS#uCz`N9C=C|GG?#zkgsS47~DUq1lx z6dZavlV`d-$6bekRRaMeQegb2k|mAah9||2kx~GXD9DNx=6}S+@!NJS1~LGWDTsL9 zkMFK|*@2Ehb+{aW6bcM=I#_FdGJaD{ZX^t|0bPATudduRA zBYq&zG)5gj1_h%kOW78ovfT*G(HRCHlY;T?W4ZO=%W(+Q4c7*cMZv=o0bV6G8ZSdb zq(=bAp`dW>eO7cR2~WGPSB?gdOTo)qvFxy)3SRShT8{ycM}eJs6zdR~C4!IP*jNDh z6zmBs;@(Z*JxNC| zpoGy%mH;X!IPmg4tDSNjw;oS>%>__JLGmp_F1;$D9wi+6Js&_d1;u>>x$dN0rx92o zwh%xK1Sfq3bNOU@Zok-@H}nbxDr4E z1%}=lJi=*eHyYC7wQB)1Qs59|!84k^eL+Cs*^I;T|@0$R$P$2qB zl=~i=vP9I88 z^E?TlmjW3PF`hi*(@O+4Tb=>XM*%Y^V^;$GO%MpraRT6IL+Xc*i)Hx~p}r>w@aXdZ z&QdVoz7Q{ad=am`i^pCB;6%ar{Cd_Lmu7|%b{+Eo;6j1dHbox&%cThcyD~2Tt`z*r z7UoK8Q=1Xk`Ns!<8wDPzRV?AfkFyA@^7aGZPQj$E=S)^iU@Zc9&Nl#fP++5$!9K2x z)Is0aUMv{^VBr7w#`b`N(`TwB6I}7AK%zcunI7Zt2^TV|0MVu+sl_5nzlW# zyowIwUn%4p+k5r*r;l$rcmjR-`d{FGePjE&&ixG6(=poU8{7Xf|N9%;v)`qfgpB{W z@Bf{Izp*W#q%T;k2Tkb8m@}K1qMH!tcBldnLP7T2Hs-6O&k=~e_6a~J1@*&+^5CU` zxNsR)3Yv42_?oWS_!+(RVkdwY3LcA_@$`{5_o9P-@bD*q zI0|>l0a@z4-TV;!+QQcnWsx?_gJrOY%@cfcGB&i4>$|tMluM2k}mNN`j#CKP74s z1;LsVczKPXGD;Y1AqpUwf-y=@*p7YgPaz0=yHO56CIzzbirjF} zLA>a%+olL0i-L15Be?qkSywcqXW7aCawwSQ+>cA2AA)Lz|8sD0P-owmek{`Wo_{4R6l+MfC36;Oc~Eje>T{ogo|HC z11O@v?EEn9dMy(l!`u=207@uu-k`wmFYg+K5+q-a15iqVXL%_*y{Qkk!zV~g0#HW5 z_IsTyL#pZpN^m7 zP;<>1Kph2*FJ$=rlKfNz&ZR8?&_IE_(l}n-T8BHsA95B0Xr$oCW)VK_#oAveVcoH1 z0GcRRdD4I%KB?r6fY9Vs09q)xCfJ|96?YqsfK$y{0Bscfd?CtqY$`0KF9S|NBj_hvsQ`272-82!K8cB7K_K+Y7f_ z&@qHbp8(*vfRuL^dIWh#O9xI^InWWnSqcVSoWpBwp6NshX?xBAaH3$6=-*ES-_5}Z zi8ovTxKLokRru`7Ck;`;pVA8eTqzhl?K?YvP#VAYkv;wr05=L!{2#Cxvn95ngp~rG z0Ng1keig!YcO1b#(F=B00C-SvDnNlZk25Yo3BJ#K0eDg{dCegHZqVu12<%?#55SuO zvmb(dMS7;T>f91-{iKpX|rBZT?9 zSA!bSkj~^50f?vI%am4DS8yIrD8W9Z01_#9I5(T=OgwV~C3KX&2arU8{igTKNZ{Es z1T>{90VGp!*HxC==4#=k^q-^E08%Kpyt9&7iMy{v31`mK0!X9awV4JVDJ+CbOUa0O z0O=ISjFIKZB~ExV(_!Z~02vgV^=@U-M+5M0`r_{v0GSjRhmPc$U-#g}NsUmez?IZ*m(Z0) zWjO%l6bu{H#f-m<(n266P7y!_1xF=yc$kDv5CXp4$^fb;n6giYTc}#%U!3y{bpX{A z)SF0hT{ZUsD8X&oEWtDbOhBV!q42*`kCYOUD6dq99E~mrEC= z79b#>I1xY#1qV{@Gyij2jS%QBGZ{b|1qt6`SYclUUczlzH5EVy1u7DuO#a+lJ(M8b z!U1$rAh5rQb*?nR)9$7{rU1GqFi!saBBAzwK8d<=?koV^6l8BP=Bg<@_|`b(Zwa7> z0v&-2Hrc`dC^`oBmbn0WDVU?9&5cJ!;5DE3E*k)S6sTx^XR}vM$VLg)+KT`<+LHPq zcJy$rAuM?wfw1RG0Gy@ZltUJ~XZ4@Ia=12R1pp@sGWA9I6wm4SCtA|83V;g*R})^c z3C`aKp&?l{t_9#qL9v1aZ{4qn*R4JqHvn*>z~@jV`?2`4FiL36*$lv)0zKCTcHw;t zo=`$Xwgd2>VAA4D_QkQR3nh5k?*iaSfyEmc{>}FdZiMJw+Y7*(g6wc1e)rgqKPX}1 zwF3ZrDA3M4&4=w$&p|-T(gA=k1+kuz{Ac|{{M2~A_ZR>_3hw;Y@Tez)@6_FPol@ zU;Z)`^92x2LClzPc02LL50ntL_d0+G3Jjg4`K71F4k0irGyp&(1#)?^Jo?q(1qd`x z3jz>Dfyb(0d`F(HIs(%+-3AatLGA_tE?T2^1c8}WVF2PNu(haRqKQ{GA#h{IJpl0( z{PYiFm&*k3&38~Q5K;Knexd#HRC|O1Yy^g5{UT0MaN35tHV>|4bi`z`gsa0MaQKC0NY%cWU}0 za6#%BfD8&|<^El3jQDdFfzlHdy!XJEk>wVqdVW0YEtgdXLhX;LH2? zp!W$j0jQwhMaO1dwD0o_be0ZVw*si5py{I#A7?TR|Khx|I{;Ku;5GO=+qFajuLQ1X zbOETL;8|o63t6yi1R7Fe;4c8R6qMA7a+M`7HXyL$aW8;63baz*v70Lz@I2k-EpYyy z;qV{Qxvk;2$i)gYUn>o%M|C0|B&9 zP_{;%=g#iNOSlvfDFAI0++1hO1K;G}Y1hR-20#Y|Wk)`+?{D&Pc|2&l9Dq&=#1C9z zckRRRwELz|5kMCOt%l)jRj?1PcDLxN0O+P**pP+XG51*=I<05sssreuVCn4e8)dtWM_wS~VRuz0&Z04EB3K3`|O&g(BAAiQ8402d0>Dztd>hDHSh7EYT8 zz?Fih9!6YTc`Y8&5N9I*ZWO4klH)4JrEnL{^Mo+~cM7gO6Xuf6)A3?GV9#*da5JW+$aVWdJHhBjc(jlic z0759RJW|TS%ckK*`GPuo0HG8Nny<;rp8Bpr3Eej~0SKdDWNk8Y9TGPRfqGY{j4j9}rkE^%Q`33ZAzO;WLJZ zu0vq1&RGD76dbk|;VQLTae1uy#u-2o1!KLgvi$bVEhxeF@C5+L6!_Y;vo%3u$0DHI z{}O-{3cg=>zg907$#_W|TnuzKe^_Rwq~ zKCPxY(Eti45KEcP!{1&mLkW{};{X&W-I+Y;D*~NXi2zC{xGCeu?B9kYAuz-0 zF@RDEY>)nCdHSPHAdqU60-%h7#d$?+*X~0i2>hDz6hJuz?|FxL| zCH;I4ppk-sR_-izKs%mx?^ag;Xre&s_zZqMYzN>W3*6ugxN>5b& z44{nyxsRWjc&In-I>>p~0qCG0QLdQTRB42x1R2k-06HlMH5$Z+$aXRW)IjuA{pE^iptg+DIP# z+8sZP3oiWv&_{u)&S5UR`o0o62IEh?02~*Q`k_)|CbzUXR*1j~V?oz{ir2FgG(TU! z3qQZb&CP`qL;*NapwlS94byV)+Pigoe*i8Nlz8d#XlMTrG^Ef-aR9CqJRf(BCEkd{ zrKMxA6aY60Ry0iF=X;;{p#-1jG638uxcj1x^{=nTZ-h)PmIL5HLDh3juKqcx79~_G z4gugvf%JxMX3=pJmzGzis{rt(V9SIo*6pzL8cH~LLLGn)1@o#$@yE2o1@hfddGq;NHDdHe=x~yfO~d zH3bks!FIPKwkk4sAxdZvo&_M1f_bs8*e>fJ{N%g2*%Ck$1z|7#u%_+x87M)&Yc7Bo z3RX@w)Vzo?(M+73V>1xGJ6 zFp+J`GSQGsuP+0TM8W=_%KVD=o6`vVIIt2xG6fmWCHSv5CQ%5?JH7@$3I$Hu6Zxx? z&+&yD6JZY^je_Q-t?cv6SbX97TWJBPNx|#If$YJ0!F~vYZQKnYivsJ{fvn=pK)kwle6$Zh4h1)b(%7;yD-=<}>z4-s zgy>01r*G6 z%Vqa22fsj|+3_rZA__#@ZF#>o5xn!d-r5;J2?c+ID%kKdB4P6@r4$?)(#7OI zjKUMj&u13_lur-3E>98x$xuH4)fBY9n92A3zPttj^{+Po)KJi}NQ7Sso_`;K6X}5f zYAM)dzm3P*?#Ig?pCusx>L|Fm{tlCIdGQD(NNl=O6-NVTp`cN}f-RT#yowTrt$PTdje=EP6S&kz zUA)5)bUhJ32L+z%``GUhm(r1 zJ_^ig^thaJ!Zb9bScBI992b-NVe4xZ{_T-Y2?FbE3jmy@VC<%RX0MWNhrp@8VgODQ zi2bQx8BcfOww+~6DF7D=9)1479?o__^eI zsU3hH1!2t0nxg3Bf3X;s5SWb0ZG6MBciU49LaDCpw-nVx* zAh7DCGJrS=S{$O-je+&}7@EJS0f?ty{B}WZdO7$OO7Jh!0FX$*V}%dw)=RN#2&{dt z1t5unCFb2M_?-g2Tl2eg03=gzz_oy_x+{T~4s~lr14yC3TDl)s@(y{6hNKlR20$7G ze=a^{^K^uK5h&;!3m}~Wvtd;%W1-nD1gr!n0?44i^lzVUg84bT!|_bZ2tXzUdr}1W zomORhdoR;929QNTiN+9~nKw@u4Qcy)1|WxmyM-dWVTHg|1Prdt0FX<8;@p9Jd03?q z0(#9e0pw9IC29~K88p8RfqBy{0OV6JtyP-K3Emliz_AZ=02ENLY@ZCbtZQF_z}66J z07VqAk?Pz=>zpP62YeR*D52o`E)#xk{<>iZxQQ(WP)fm9&C%RFPdfsE$3aU0lu>Z- zgdX3%ed!(qMhsmEpqzs5nOgk0#wT3_#!p=Xpn?LM1NAIvh3zo}_6FMnsG>k**K96# z2_Q@3~{fNBa39r(>W93yU`gb}B<0;r+D(cYLJpJ|3)033902Y^}%^kvlfyXCu= zp@h--y8+ZuaBNT+TjDWI0RfwyeE=FLcwaY|AKcII>qz%?4*_VTU}U5ef32*AAC)`S z90AZo!KVIF+{A4zo_5D^H zP;k{qjJv8D{zhOPcLvZ&!F2s;+-q{}aRi!wxdP~-V9gPAt|9eo1Om#(-2rq{aBgZM zvs{;o``%w~UIx%Z!NU!fJhOR|21=Os%^N^31(Tv=c;j;iF9ha~@&(XG!Jh3MEcwYV zTxEU#bRB@B9jPCF?~vnG4Td@>p`ZCp0B0$UlKe#cL*+;77Pdj;7Wm^$7iO|eMB4`Lx}Y~0B#gi#7lC?yfe5rW2YSn zz?}mB?jd~3-gh@p!qIur06ZwTAn<`TUf!`D0nNQ}06Zx;UD=-}EG)`LV0B^w0B;J0 zl^gRbA9L{Peo;{p03Ql!Cf{J2)5qbS!2Q=x0QgdHdd=T%XpSk~9cWte6o4NE79)r7 z6HnLSzDED{3;_NV9CVf8cb)9bnkvcvti4qW0fbQC85qX~?$}X*E}VKw34l-vG)4>Y_U9pZ8EP}U z3_utKPgkk%S<@TzQG$Zn2LRy|*e2=mTUVzzBOs?=1t5Zg_|-bxS!vcP1aeP)0uV`o z|GbI3@au{r2sn7x0*Io(_v-+D-us0a0yfX<0mM)ctFFou&diiUU`%o&fH(>&=f7f! zjlXd{9s8phKs*J5Wc``QaIcFfp=DM(fJ6#hlJb~l-d#ZiraN>3NTQ(jSv6Z`^9%2m z{SxU0kW9h0Wu44z;i7#gq5qlR08%KJtY*N+|FFPaxa=Q&0MaN(U1!28=hn|d2?iI1 z-To<$(<#s#+{0EXy>drjn{z(^85CSTBF48#p2RP0Em|!OAd`Y~_hq=c;NB*bVEa)D zKo$i>mEYK+QCsnz;>-oI0CFhUuQ-%Xv|yuDv!!%4FClceEk~73h$2TMG0|-v;h=RFkwh9 z3wArU0RgwR5dcaknENe<`6!o!A+Y?gE`U-B8s6qJolW8r2*^6?11O_l^(e-@cRj!f zzS-jdlvD5{OOX$l^KLatu#TMwpn`%k$z3c}Slb1Gq3K2dswimoR^md&+g%a(QD_XH znu6)8C-6--{gV(l5XAu0P%vQ25N>w)^JfIQduITsrQpWuemvJuT^RxYcryTX6sUeG zWgGote<6^WWdWdpf(^rtvu9s?J|NH}Zv~){0y{M^o^B+A7rNtCS_5dJpzpvFw!d5W z2TIs|YXN{33e5Wn@QX7};=6TF`yv2s6s(pyTr~QX3`Y>DmM6reIRQ0Dg3fWhw#>yfy;p zp&(}4IKCn5izotbUv2@=OTp2|de%BMe>eiygm(bwqrh`QBKs6RZz=+}=IsXHxP;UX z>R~(c>o?1Ozn~9`d_;zB5gq;w!*IPEbPN@(w*UlCFv+2Ytrl&)Jg;Fg{gU+^sTG6MY?lK@0eFgj0-r#;_x2!X1jDF7lVm}aHHPoFl!QHp#DPW-WK-v99mOJ=Kw!^yLwZE&iL<+no>u^1Rvv~7n z`oMtzk|=mJtCuNOx5uI;eYhzGAejQ&{_;FR_Td8re3wW9NTp!mwGKA(Y8xIw6WV0} zq*I_OGMIY}_<%YhwPVEgNl0P-k!+fvS! zZ-3N^K*8uS017Brn%BYlUEGiBkboiM02ET-c3hC>-t@yD#bpA3A_{bklzG|}Raev` z>$Q^slu+<_t37+)x@al_6Ta#LD5c=LLM7W+>KB1PN7_sPWfWL=;}gDIbwa>=%Q6796o{$~ zEH&BAE&1wJ*6ik|>zyn^K!Z%-5xe2LzqSErr68f9l)X@~x`cr3 znVkUID5$G@#ev^7jpo86g;o!Vr}t#_#L9rbB+VB+(^p1 zcfo(&ZFFCXA6bt6CjnSd(BqrS{0oSf=X2>?qOMo zpVI*e*8n(Cuych7UnBVr-%I;WI|Fc`AZl|5J8f*XRB%q~^t9ZGnu?E}D*g6yHAc=RU;ycg5F*AIX< z1$Qr`u#_JnsVHGqQ2+oR3dR*BvR(Sa@l{fu9}K{kg5O)LnB}Suawx$s`yl{-3jBh5 z+3uz*`1Y=93>nVU>3O1Sy=GC%S z@Lr5qeKddv6uj8{=RmrXqn@Dzfy6ifArxHO{+5;QKe`Wr_3IM>gi-L`?g@KW;)tI> znvt&ngi|m$Z7Mf*`-b0+S>l)mAcBJD`R>fEzB3OsX` zfmKXw`juY@XlIuINTA@ySrz_4)o zU$SMJqwy2y?WDl~N-4;%`NcMk^~85;sF);xG78?5d9tt5hCM=;RXRf&Km`TEo8L3V zo$D$QSipw>sG`88sFCfsatSYCUaC+8P(#7S;CA-(wb2ZeFn_fQfLaQkMiw%=uYq$B z=sB$cpq_$mb74N#0a4hozX$??Z!xmqZ}C1@UiE(&(dD`XS3 z@8K5|bRRAR&_lt3DT;he!d?7~+mOB(KpzErWEJ_z0@(woNl60B0a$J#^@GMtIlf49 zT?Ybcaw`E?QE=Q?{Lh=X8lniyS-S>+H3h0mMfmRdd3Ycz4q6AmmIA@@ayBmOs4+^| z=(!PqJq3gBPT?bRL)RiOC3G_Y2MUtDWwOOJdibT(r7yPuaHQbYz^Clw54UqDA@g za66T4wf(po0jHS50Ng3q7xIRQn0DZGzP?Gv0C-Z6Rx+0B=POS}30}S@0C-ctKD=gn zdz&o~n4f(LfDZ-p4EosRgYPX7sP;Vzz?Xt|&&TjLzMJtob;CR_0Pv?k>d!eHHlG&Z z=d{!nO8@~BggQ>-%Z?ww1KBK}D*%Ehcsfd(zh0NJ3iUxS!WKX<1u8**{%mY-DV|_m z9p(Vw0R|H^YAzBSE(a_5DFSH%GslrCwftns$V+;2%{i&MHq80P{f^fZFU6^ zPC?l;MgDWM9)73psEj*+2nvjLer0{jzy3x|O55)RAd-TU#<$tSo2@eu*l^4TKokXi zX+7+Gf}tq_KlJ?oL{o6HREb;MQjkU9%jp0BF%-O3mF0u~D#=8kV%t3caTKI9d}Y;V zw(mzE&g21r1PUIOF6Z8d_u$3NFKwX!5-AWJHI_zF?PP_(@*UX#@+gq7X<(~dj~zk4IQ2b%0tyzn#xR$I zgYlYx`lSy53Mp_hQRbC12f3q!JMBdPiYV~T>BookUJgZIQTQhSB@`TWFJnut#^J50 zq^acqN-4-K&S#S267UXg;G-%4WfZ(g)8ul)`r|oYRo@o?6%?#86XR}!H{iRKYkUPz zMS)ql7#|U%oP#>uaJCUZ4FzwsGuS!*re+o1=vLI|cw~qhNBmELYIo z_ZR^MDKP-;6qpYg#UK1s!ZR{c6$tYuo)!RG3chHHaG4w1$0BgjSsQ>o z1)oX>^7|u9eGn)}83Vw90`+?jSg~K(1O)a-=>l-1AWAWpT^THh>p1_42>_fZSn8a| z){o?PU1Qy)$pBm^Fn(Ob{BD{LLroGb(+A*6L9+HFK0VEKGy)G7&II5_LDT9%{BUfe zA_DfaH~@DFyzdBc$CAtVJ3aKkTmYUF-2IWr?#cDwIp5RM3jlai&?zg!FSM<9L`^#5 zV*tR1f)dMbY`xSryvVF@W+?z)3igVAWm}Xs;DtfYq!j@CDeyio%C`$%w?j?Rc(@8c z00l3Pd|^>Wzi??;G1CY@5CuKUBbc1Ytmi1<(SZ#Bf+?7gGKNd}>Qx}nzseZE0}76N zoMFiwYS$5XzI_{j5DJV}3UMLvZ!QRA748HOMnQ`CC@#G0`6mP{7VZWRPQj_&Blyjy zfhGv7_1^~|f`Xd1QQRob2XElH-#Y*xl7d0al3d~0$vBiyDR~4y6a_a8>shb=v+oF) zHXa2KO~IN0g8b{(ZFmZIt?f8~7z!>%R5Fi^%FQTYS; z2^44yZD;l`o;*Ma8Nbd0NTlHAEFnJh?J9h0G-qD|kVHY-q8Z%6q8(RRvx2MuBvT+- zm&mHd-5rIRWb?`fKq>`RXO{72E=TZV_rB;=0O=ICOFd(=ybU!`!jR9`0Ax_`Qf>sl zcv2rPs@Za90GSlLnVimMi%ILC1mi8P0J11(GR$Xh#T;`HP_w=TAe(~M2bB0WulsoP zejVlsAeVyA&j#__4t;r)aP;kM0C^Os?e1eESN7YBfM~2QfC37R8x7>Ib6Tq~NWTl9 zkb=p}-!SpmgIx$5O$q`~L_yfLBsOQ@oAU@9{&^oj2?bAfIy1|0C6Wlto)-$Bl!E1! zgZV4LskR8byATebi~`f#O13to5r3y0-aG+NL4k<$cec^kARQ%?c0>WFqF_jqG~eA* z`W1md)ffOZ6s$Wh&4mO@LJ(McBpyI51==PlY*O;MrwD{6B?73YKs8>0k82ge+iL@~ zk^wYOAe%juhn6+s1=`rxX#g52_+6mE2e{1)M@{M!d;_4Fg2&bi`8j8uf9#9uW&voS z;N(wfer8D1E|gIIItM^21yfHeaG`-FS_t%)%LmX#!ABVZ9#AW>1p&RZLICX)3?KBK zP2l=?52d-T7(fRFdEOOlZCWrM`K}6n2GB)8Lc0<_-a04;HR(gY3IIJ6>^%9F#qwFl z5xAyO4WN&LGvhnhH#5`W2L~rl9PAD);S33PK5KuHOOJQZO;_2HSZc3U3i+2>k?LPeE7OS}yk@Sr{eME4Kr1 zpkVoujofdx6@JTW(x6TNjua?1RI|PJdvK>cEqeesQIOdv$62Bs{@`wV2{`>-PrFc% z;*rCicd2edeOT|)4}dELEf+qrdz+i_TaTgQ0|2;D;CD8WIjBi{qJ%&fQ2_1~bY&mr z)^o0&Kp=OL1OQJ8Jl_6h<*LU85Lj_o8h|$irh}xopT{X&i~5NS0pLTyC(p6`NQ2@l zl(1-%A^=|ss%H=6r)o|=LEu`VG5~)H;;W?iR0(zyfi^L9009*Ir7zCIFR9@{;GE-d z06`QitZZbnMwc^`5MDR}KrjXEQcHNf`T;)#oD4?;ctC-kW-hao(N{viXW&=>Arxc; z++-@d)bVoB`)XYPVHB)B8p)ck-oRf`Z)rUM;S`+clH^MFKH;b6xEoUdL{M-;e-Qtq zxD>CPi16v`}AuZuGr_V*a#q% z0$sX$F(_f{1``086x>o} z{P!I{yob{9VK;y*3i4hk@)W}?Jj}ex*ask+g6*ezS+>H0B-EtFx&r`mDHtDH$5yHz z`GSD;=pz8~C>Y|J&#p=|;S&G7`!N6o6pTOZ!M2@L@I?t{RV@G%Qs6ndkEJKtYa?*l z@ic%U3U=qoa@qd-@i23K?|A?v6jbh&;TpEuVklwT$4dZ8DVVWMi3itx

C5TLCDe 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 diff --git a/crypto/gogo2/runs/trading_agent_20250310_162540/events.out.tfevents.1741616740.GW-DOBRI.140636.0 b/crypto/gogo2/runs/trading_agent_20250310_162540/events.out.tfevents.1741616740.GW-DOBRI.140636.0 new file mode 100644 index 0000000000000000000000000000000000000000..68496f45501e334f706e9acee07b5b268b81e9bb GIT binary patch literal 88 zcmeZZfPjCKJmzvr?XsG=_w!9hDc+=_#LPTB*Rs^S5-X!1JuaP+)V$*SqNM!9q7=R2 h(%js{qDsB;qRf)iBE3|Qs`#|boYZ)T$XRx6BLF(^AL9T3 literal 0 HcmV?d00001 diff --git a/crypto/gogo2/trading_bot.log b/crypto/gogo2/trading_bot.log index 3692a42..3382a3e 100644 --- a/crypto/gogo2/trading_bot.log +++ b/crypto/gogo2/trading_bot.log @@ -33910,3 +33910,174561 @@ UnboundLocalError: cannot access local variable 'target_q_values' where it is no 2025-03-10 12:27:37,285 - INFO - OPENED SHORT at 2057.01 | Stop loss: 2067.29505 | Take profit: 2026.1548500000001 2025-03-10 12:27:37,526 - INFO - CLOSED short at 2059.7 | PnL: -0.13% | $-0.93 2025-03-10 12:27:37,679 - INFO - OPENED SHORT at 2064.61 | Stop loss: 2074.93305 | Take profit: 2033.64085 +2025-03-10 12:27:38,607 - INFO - CLOSED short at 2061.18 | PnL: 0.17% | $0.26 +2025-03-10 12:27:38,607 - INFO - OPENED LONG at 2061.18 | Stop loss: 2050.8741 | Take profit: 2092.0977 +2025-03-10 12:27:39,447 - INFO - CLOSED long at 2073.73 | PnL: 0.61% | $2.03 +2025-03-10 12:27:39,619 - INFO - OPENED SHORT at 2072.33 | Stop loss: 2082.6916499999998 | Take profit: 2041.24505 +2025-03-10 12:27:40,351 - INFO - CLOSED short at 2069.34 | PnL: 0.14% | $0.18 +2025-03-10 12:27:40,406 - INFO - OPENED LONG at 2069.19 | Stop loss: 2058.84405 | Take profit: 2100.2278499999998 +2025-03-10 12:27:40,718 - INFO - CLOSED long at 2065.99 | PnL: -0.15% | $-1.04 +2025-03-10 12:27:41,033 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.5555 | Take profit: 2099.9335 +2025-03-10 12:27:41,231 - INFO - CLOSED long at 2070.4 | PnL: 0.07% | $-0.11 +2025-03-10 12:27:41,232 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.752 | Take profit: 2039.344 +2025-03-10 12:27:41,916 - INFO - CLOSED short at 2071.11 | PnL: -0.03% | $-0.54 +2025-03-10 12:27:42,234 - INFO - OPENED SHORT at 2067.46 | Stop loss: 2077.7972999999997 | Take profit: 2036.4481 +2025-03-10 12:27:42,398 - INFO - CLOSED short at 2063.61 | PnL: 0.19% | $0.35 +2025-03-10 12:27:43,213 - INFO - OPENED LONG at 2070.73 | Stop loss: 2060.37635 | Take profit: 2101.7909499999996 +2025-03-10 12:27:43,329 - INFO - CLOSED long at 2068.69 | PnL: -0.10% | $-0.80 +2025-03-10 12:27:43,330 - INFO - OPENED SHORT at 2068.69 | Stop loss: 2079.03345 | Take profit: 2037.65965 +2025-03-10 12:27:43,388 - INFO - CLOSED short at 2067.84 | PnL: 0.04% | $-0.24 +2025-03-10 12:27:43,988 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.01845 | Take profit: 2034.7046500000001 +2025-03-10 12:27:44,266 - INFO - CLOSED short at 2065.26 | PnL: 0.02% | $-0.32 +2025-03-10 12:27:44,267 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.9337 | Take profit: 2096.2389 +2025-03-10 12:27:44,314 - INFO - CLOSED long at 2062.89 | PnL: -0.11% | $-0.85 +2025-03-10 12:27:44,315 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.2044499999997 | Take profit: 2031.9466499999999 +2025-03-10 12:27:44,699 - INFO - CLOSED short at 2066.24 | PnL: -0.16% | $-1.03 +2025-03-10 12:27:44,744 - INFO - OPENED SHORT at 2067.1 | Stop loss: 2077.4354999999996 | Take profit: 2036.0935 +2025-03-10 12:27:44,896 - INFO - CLOSED short at 2064.45 | PnL: 0.13% | $0.11 +2025-03-10 12:27:44,897 - INFO - OPENED LONG at 2064.45 | Stop loss: 2054.1277499999997 | Take profit: 2095.4167499999994 +2025-03-10 12:27:45,590 - INFO - CLOSED long at 2061.8 | PnL: -0.13% | $-0.89 +2025-03-10 12:27:45,646 - INFO - OPENED SHORT at 2064.7 | Stop loss: 2075.0235 | Take profit: 2033.7294999999997 +2025-03-10 12:27:46,027 - INFO - CLOSED short at 2065.36 | PnL: -0.03% | $-0.51 +2025-03-10 12:27:46,028 - INFO - OPENED LONG at 2065.36 | Stop loss: 2055.0332000000003 | Take profit: 2096.3404 +2025-03-10 12:27:46,363 - INFO - CLOSED long at 2063.0 | PnL: -0.11% | $-0.82 +2025-03-10 12:27:46,416 - INFO - OPENED LONG at 2062.6 | Stop loss: 2052.287 | Take profit: 2093.5389999999998 +2025-03-10 12:27:46,937 - INFO - CLOSED long at 2059.46 | PnL: -0.15% | $-0.96 +2025-03-10 12:27:48,442 - INFO - OPENED SHORT at 2067.01 | Stop loss: 2077.34505 | Take profit: 2036.0048500000003 +2025-03-10 12:27:48,773 - INFO - STOP LOSS hit for short at 2077.34505 | PnL: -0.50% | $-2.26 +2025-03-10 12:27:49,175 - INFO - OPENED LONG at 2070.0 | Stop loss: 2059.65 | Take profit: 2101.0499999999997 +2025-03-10 12:27:50,299 - INFO - CLOSED long at 2065.5 | PnL: -0.22% | $-1.17 +2025-03-10 12:27:50,570 - INFO - OPENED LONG at 2066.5 | Stop loss: 2056.1675 | Take profit: 2097.4975 +2025-03-10 12:27:50,782 - INFO - CLOSED long at 2071.35 | PnL: 0.23% | $0.49 +2025-03-10 12:27:50,782 - INFO - OPENED SHORT at 2071.35 | Stop loss: 2081.70675 | Take profit: 2040.27975 +2025-03-10 12:27:50,946 - INFO - CLOSED short at 2070.7 | PnL: 0.03% | $-0.25 +2025-03-10 12:27:51,637 - INFO - OPENED SHORT at 2073.27 | Stop loss: 2083.6363499999998 | Take profit: 2042.17095 +2025-03-10 12:27:52,045 - INFO - CLOSED short at 2069.97 | PnL: 0.16% | $0.22 +2025-03-10 12:27:52,616 - INFO - OPENED SHORT at 2070.1 | Stop loss: 2080.4504999999995 | Take profit: 2039.0484999999999 +2025-03-10 12:27:53,262 - INFO - CLOSED short at 2064.11 | PnL: 0.29% | $0.69 +2025-03-10 12:27:53,485 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0035 | Take profit: 2029.7894999999999 +2025-03-10 12:27:54,300 - INFO - CLOSED short at 2063.9 | PnL: -0.16% | $-0.94 +2025-03-10 12:27:54,301 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.5805 | Take profit: 2094.8585 +2025-03-10 12:27:54,897 - INFO - CLOSED long at 2060.7 | PnL: -0.16% | $-0.93 +2025-03-10 12:27:54,898 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0035 | Take profit: 2029.7894999999999 +2025-03-10 12:27:54,951 - INFO - CLOSED short at 2061.84 | PnL: -0.06% | $-0.56 +2025-03-10 12:27:54,952 - INFO - OPENED LONG at 2061.84 | Stop loss: 2051.5308 | Take profit: 2092.7676 +2025-03-10 12:27:55,729 - INFO - CLOSED long at 2076.08 | PnL: 0.69% | $2.12 +2025-03-10 12:27:56,516 - INFO - OPENED SHORT at 2134.78 | Stop loss: 2145.4539 | Take profit: 2102.7583 +2025-03-10 12:27:57,194 - INFO - CLOSED short at 2119.14 | PnL: 0.73% | $2.32 +2025-03-10 12:27:57,194 - INFO - OPENED LONG at 2119.14 | Stop loss: 2108.5443 | Take profit: 2150.9271 +2025-03-10 12:27:57,379 - INFO - STOP LOSS hit for long at 2108.5443 | PnL: -0.50% | $-2.26 +2025-03-10 12:27:57,869 - INFO - OPENED LONG at 2120.81 | Stop loss: 2110.20595 | Take profit: 2152.6221499999997 +2025-03-10 12:27:58,119 - INFO - STOP LOSS hit for long at 2110.20595 | PnL: -0.50% | $-2.20 +2025-03-10 12:27:58,348 - INFO - OPENED SHORT at 2100.5 | Stop loss: 2111.0024999999996 | Take profit: 2068.9925 +2025-03-10 12:27:58,776 - INFO - CLOSED short at 2100.69 | PnL: -0.01% | $-0.39 +2025-03-10 12:27:59,041 - INFO - OPENED LONG at 2104.68 | Stop loss: 2094.1566 | Take profit: 2136.2501999999995 +2025-03-10 12:27:59,376 - INFO - STOP LOSS hit for long at 2094.1566 | PnL: -0.50% | $-2.14 +2025-03-10 12:27:59,759 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 27.3% in downtrends | Avg Win=$0.87, Avg Loss=$-0.87 +2025-03-10 12:27:59,760 - INFO - Episode 16: Reward=214.64, Balance=$87.04, Win Rate=48.7%, Trades=39, Episode PnL=$-11.58, Total PnL=$-437.30, Max Drawdown=14.6%, Pred Accuracy=99.9% +2025-03-10 12:27:59,926 - INFO - Model saved to models/trading_agent_best_reward.pt +2025-03-10 12:27:59,965 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 12:28:00,290 - INFO - OPENED SHORT at 2056.0 | Stop loss: 2066.2799999999997 | Take profit: 2025.16 +2025-03-10 12:28:00,394 - INFO - CLOSED short at 2059.23 | PnL: -0.16% | $-1.03 +2025-03-10 12:28:00,395 - INFO - OPENED LONG at 2059.23 | Stop loss: 2048.93385 | Take profit: 2090.11845 +2025-03-10 12:28:00,449 - INFO - CLOSED long at 2062.9 | PnL: 0.18% | $0.31 +2025-03-10 12:28:00,606 - INFO - OPENED LONG at 2065.64 | Stop loss: 2055.3118 | Take profit: 2096.6245999999996 +2025-03-10 12:28:00,914 - INFO - CLOSED long at 2061.01 | PnL: -0.22% | $-1.29 +2025-03-10 12:28:00,915 - INFO - OPENED SHORT at 2061.01 | Stop loss: 2071.31505 | Take profit: 2030.0948500000002 +2025-03-10 12:28:01,107 - INFO - CLOSED short at 2062.28 | PnL: -0.06% | $-0.63 +2025-03-10 12:28:01,156 - INFO - OPENED LONG at 2062.5 | Stop loss: 2052.1875 | Take profit: 2093.4375 +2025-03-10 12:28:01,937 - INFO - CLOSED long at 2056.4 | PnL: -0.30% | $-1.54 +2025-03-10 12:28:01,938 - INFO - OPENED SHORT at 2056.4 | Stop loss: 2066.682 | Take profit: 2025.554 +2025-03-10 12:28:01,987 - INFO - CLOSED short at 2055.39 | PnL: 0.05% | $-0.20 +2025-03-10 12:28:01,988 - INFO - OPENED LONG at 2055.39 | Stop loss: 2045.11305 | Take profit: 2086.2208499999997 +2025-03-10 12:28:02,506 - INFO - CLOSED long at 2050.2 | PnL: -0.25% | $-1.35 +2025-03-10 12:28:02,506 - INFO - OPENED SHORT at 2050.2 | Stop loss: 2060.4509999999996 | Take profit: 2019.447 +2025-03-10 12:28:02,647 - INFO - CLOSED short at 2049.61 | PnL: 0.03% | $-0.27 +2025-03-10 12:28:03,032 - INFO - OPENED LONG at 2045.99 | Stop loss: 2035.76005 | Take profit: 2076.67985 +2025-03-10 12:28:03,448 - INFO - CLOSED long at 2051.11 | PnL: 0.25% | $0.56 +2025-03-10 12:28:04,664 - INFO - OPENED LONG at 2057.8 | Stop loss: 2047.5110000000002 | Take profit: 2088.667 +2025-03-10 12:28:04,924 - INFO - CLOSED long at 2061.18 | PnL: 0.16% | $0.24 +2025-03-10 12:28:05,458 - INFO - OPENED LONG at 2068.65 | Stop loss: 2058.30675 | Take profit: 2099.67975 +2025-03-10 12:28:05,667 - INFO - CLOSED long at 2070.26 | PnL: 0.08% | $-0.08 +2025-03-10 12:28:05,668 - INFO - OPENED SHORT at 2070.26 | Stop loss: 2080.6113 | Take profit: 2039.2061 +2025-03-10 12:28:06,275 - INFO - CLOSED short at 2070.28 | PnL: -0.00% | $-0.38 +2025-03-10 12:28:06,276 - INFO - OPENED LONG at 2070.28 | Stop loss: 2059.9286 | Take profit: 2101.3342 +2025-03-10 12:28:06,641 - INFO - CLOSED long at 2069.19 | PnL: -0.05% | $-0.58 +2025-03-10 12:28:07,269 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.2445 | Take profit: 2037.8665 +2025-03-10 12:28:07,363 - INFO - CLOSED short at 2068.59 | PnL: 0.01% | $-0.32 +2025-03-10 12:28:07,364 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.24705 | Take profit: 2099.61885 +2025-03-10 12:28:07,518 - INFO - CLOSED long at 2069.96 | PnL: 0.07% | $-0.13 +2025-03-10 12:28:07,518 - INFO - OPENED SHORT at 2069.96 | Stop loss: 2080.3098 | Take profit: 2038.9106 +2025-03-10 12:28:07,565 - INFO - CLOSED short at 2071.4 | PnL: -0.07% | $-0.63 +2025-03-10 12:28:07,961 - INFO - OPENED SHORT at 2073.9 | Stop loss: 2084.2695 | Take profit: 2042.7915 +2025-03-10 12:28:08,737 - INFO - CLOSED short at 2067.89 | PnL: 0.29% | $0.70 +2025-03-10 12:28:08,890 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.9933 | Take profit: 2100.3801 +2025-03-10 12:28:09,171 - INFO - CLOSED long at 2071.59 | PnL: 0.11% | $0.03 +2025-03-10 12:28:09,264 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.0480000000002 | Take profit: 2101.4559999999997 +2025-03-10 12:28:09,412 - INFO - CLOSED long at 2068.69 | PnL: -0.08% | $-0.68 +2025-03-10 12:28:09,562 - INFO - OPENED SHORT at 2067.86 | Stop loss: 2078.1992999999998 | Take profit: 2036.8421 +2025-03-10 12:28:10,193 - INFO - CLOSED short at 2066.15 | PnL: 0.08% | $-0.06 +2025-03-10 12:28:10,193 - INFO - OPENED LONG at 2066.15 | Stop loss: 2055.81925 | Take profit: 2097.14225 +2025-03-10 12:28:10,818 - INFO - CLOSED long at 2066.09 | PnL: -0.00% | $-0.38 +2025-03-10 12:28:10,819 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.42045 | Take profit: 2035.0986500000001 +2025-03-10 12:28:12,138 - INFO - CLOSED short at 2063.53 | PnL: 0.12% | $0.09 +2025-03-10 12:28:12,138 - INFO - OPENED LONG at 2063.53 | Stop loss: 2053.2123500000002 | Take profit: 2094.48295 +2025-03-10 12:28:13,156 - INFO - CLOSED long at 2059.8 | PnL: -0.18% | $-1.04 +2025-03-10 12:28:13,157 - INFO - OPENED SHORT at 2059.8 | Stop loss: 2070.099 | Take profit: 2028.9030000000002 +2025-03-10 12:28:13,454 - INFO - CLOSED short at 2063.4 | PnL: -0.17% | $-1.00 +2025-03-10 12:28:13,455 - INFO - OPENED LONG at 2063.4 | Stop loss: 2053.083 | Take profit: 2094.351 +2025-03-10 12:28:13,661 - INFO - CLOSED long at 2064.49 | PnL: 0.05% | $-0.17 +2025-03-10 12:28:13,860 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.6666499999997 | Take profit: 2036.3200499999998 +2025-03-10 12:28:14,051 - INFO - CLOSED short at 2072.0 | PnL: -0.23% | $-1.18 +2025-03-10 12:28:14,448 - INFO - OPENED SHORT at 2073.23 | Stop loss: 2083.59615 | Take profit: 2042.13155 +2025-03-10 12:28:14,845 - INFO - CLOSED short at 2072.99 | PnL: 0.01% | $-0.31 +2025-03-10 12:28:14,845 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6250499999996 | Take profit: 2104.0848499999997 +2025-03-10 12:28:15,138 - INFO - CLOSED long at 2065.66 | PnL: -0.35% | $-1.61 +2025-03-10 12:28:15,139 - INFO - OPENED SHORT at 2065.66 | Stop loss: 2075.9882999999995 | Take profit: 2034.6751 +2025-03-10 12:28:15,185 - INFO - CLOSED short at 2063.95 | PnL: 0.08% | $-0.06 +2025-03-10 12:28:15,187 - INFO - OPENED LONG at 2063.95 | Stop loss: 2053.6302499999997 | Take profit: 2094.9092499999997 +2025-03-10 12:28:15,342 - INFO - CLOSED long at 2065.3 | PnL: 0.07% | $-0.12 +2025-03-10 12:28:15,342 - INFO - OPENED SHORT at 2065.3 | Stop loss: 2075.6265 | Take profit: 2034.3205 +2025-03-10 12:28:15,714 - INFO - CLOSED short at 2066.8 | PnL: -0.07% | $-0.60 +2025-03-10 12:28:16,184 - INFO - OPENED SHORT at 2070.8 | Stop loss: 2081.154 | Take profit: 2039.738 +2025-03-10 12:28:16,695 - INFO - CLOSED short at 2075.07 | PnL: -0.21% | $-1.06 +2025-03-10 12:28:17,150 - INFO - OPENED LONG at 2072.09 | Stop loss: 2061.72955 | Take profit: 2103.17135 +2025-03-10 12:28:17,680 - INFO - CLOSED long at 2069.0 | PnL: -0.15% | $-0.85 +2025-03-10 12:28:17,729 - INFO - OPENED LONG at 2070.19 | Stop loss: 2059.83905 | Take profit: 2101.2428499999996 +2025-03-10 12:28:18,131 - INFO - CLOSED long at 2063.39 | PnL: -0.33% | $-1.45 +2025-03-10 12:28:18,748 - INFO - OPENED LONG at 2058.09 | Stop loss: 2047.7995500000002 | Take profit: 2088.96135 +2025-03-10 12:28:18,892 - INFO - CLOSED long at 2053.01 | PnL: -0.25% | $-1.15 +2025-03-10 12:28:18,892 - INFO - OPENED SHORT at 2053.01 | Stop loss: 2063.27505 | Take profit: 2022.2148500000003 +2025-03-10 12:28:19,352 - INFO - STOP LOSS hit for short at 2063.27505 | PnL: -0.50% | $-1.96 +2025-03-10 12:28:20,066 - INFO - OPENED LONG at 2065.72 | Stop loss: 2055.3914 | Take profit: 2096.7057999999997 +2025-03-10 12:28:20,881 - INFO - TAKE PROFIT hit for long at 2096.7057999999997 | PnL: 1.50% | $4.47 +2025-03-10 12:28:21,213 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.0065 | Take profit: 2109.1805 +2025-03-10 12:28:21,415 - INFO - CLOSED short at 2126.99 | PnL: 0.67% | $1.92 +2025-03-10 12:28:21,415 - INFO - OPENED LONG at 2126.99 | Stop loss: 2116.3550499999997 | Take profit: 2158.8948499999997 +2025-03-10 12:28:21,675 - INFO - CLOSED long at 2117.24 | PnL: -0.46% | $-1.93 +2025-03-10 12:28:21,675 - INFO - OPENED SHORT at 2117.24 | Stop loss: 2127.8261999999995 | Take profit: 2085.4813999999997 +2025-03-10 12:28:22,303 - INFO - CLOSED short at 2112.46 | PnL: 0.23% | $0.42 +2025-03-10 12:28:22,304 - INFO - OPENED LONG at 2112.46 | Stop loss: 2101.8977 | Take profit: 2144.1468999999997 +2025-03-10 12:28:22,902 - INFO - STOP LOSS hit for long at 2101.8977 | PnL: -0.50% | $-2.03 +2025-03-10 12:28:23,467 - INFO - OPENED SHORT at 2100.74 | Stop loss: 2111.2436999999995 | Take profit: 2069.2288999999996 +2025-03-10 12:28:23,616 - INFO - CLOSED short at 2101.51 | PnL: -0.04% | $-0.45 +2025-03-10 12:28:23,665 - INFO - OPENED SHORT at 2099.59 | Stop loss: 2110.08795 | Take profit: 2068.0961500000003 +2025-03-10 12:28:23,713 - INFO - CLOSED short at 2100.02 | PnL: -0.02% | $-0.40 +2025-03-10 12:28:24,225 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 28.6% in downtrends | Avg Win=$0.97, Avg Loss=$-0.79 +2025-03-10 12:28:24,225 - INFO - Episode 17: Reward=198.38, Balance=$81.84, Win Rate=44.2%, Trades=43, Episode PnL=$-6.61, Total PnL=$-455.46, Max Drawdown=20.2%, Pred Accuracy=99.8% +2025-03-10 12:28:24,261 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 12:28:24,576 - INFO - OPENED SHORT at 2056.0 | Stop loss: 2066.2799999999997 | Take profit: 2025.16 +2025-03-10 12:28:24,626 - INFO - CLOSED short at 2055.31 | PnL: 0.03% | $-0.27 +2025-03-10 12:28:24,627 - INFO - OPENED LONG at 2055.31 | Stop loss: 2045.03345 | Take profit: 2086.1396499999996 +2025-03-10 12:28:25,548 - INFO - CLOSED long at 2059.03 | PnL: 0.18% | $0.32 +2025-03-10 12:28:25,967 - INFO - OPENED SHORT at 2057.99 | Stop loss: 2068.2799499999996 | Take profit: 2027.1201499999997 +2025-03-10 12:28:26,484 - INFO - CLOSED short at 2053.1 | PnL: 0.24% | $0.55 +2025-03-10 12:28:26,485 - INFO - OPENED LONG at 2053.1 | Stop loss: 2042.8345 | Take profit: 2083.8965 +2025-03-10 12:28:27,119 - INFO - CLOSED long at 2047.4 | PnL: -0.28% | $-1.52 +2025-03-10 12:28:27,323 - INFO - OPENED SHORT at 2045.79 | Stop loss: 2056.0189499999997 | Take profit: 2015.10315 +2025-03-10 12:28:27,529 - INFO - CLOSED short at 2050.0 | PnL: -0.21% | $-1.21 +2025-03-10 12:28:27,680 - INFO - OPENED LONG at 2051.11 | Stop loss: 2040.85445 | Take profit: 2081.87665 +2025-03-10 12:28:28,067 - INFO - CLOSED long at 2060.13 | PnL: 0.44% | $1.33 +2025-03-10 12:28:28,381 - INFO - OPENED SHORT at 2061.61 | Stop loss: 2071.9180499999998 | Take profit: 2030.68585 +2025-03-10 12:28:29,138 - INFO - CLOSED short at 2061.18 | PnL: 0.02% | $-0.31 +2025-03-10 12:28:29,139 - INFO - OPENED LONG at 2061.18 | Stop loss: 2050.8741 | Take profit: 2092.0977 +2025-03-10 12:28:29,287 - INFO - CLOSED long at 2070.58 | PnL: 0.46% | $1.41 +2025-03-10 12:28:29,988 - INFO - OPENED SHORT at 2072.91 | Stop loss: 2083.2745499999996 | Take profit: 2041.8163499999998 +2025-03-10 12:28:30,038 - INFO - CLOSED short at 2072.33 | PnL: 0.03% | $-0.29 +2025-03-10 12:28:30,039 - INFO - OPENED LONG at 2072.33 | Stop loss: 2061.96835 | Take profit: 2103.41495 +2025-03-10 12:28:30,900 - INFO - CLOSED long at 2067.51 | PnL: -0.23% | $-1.33 +2025-03-10 12:28:31,150 - INFO - OPENED LONG at 2066.29 | Stop loss: 2055.95855 | Take profit: 2097.28435 +2025-03-10 12:28:32,146 - INFO - CLOSED long at 2070.4 | PnL: 0.20% | $0.39 +2025-03-10 12:28:32,147 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.752 | Take profit: 2039.344 +2025-03-10 12:28:32,194 - INFO - CLOSED short at 2071.11 | PnL: -0.03% | $-0.53 +2025-03-10 12:28:32,195 - INFO - OPENED LONG at 2071.11 | Stop loss: 2060.75445 | Take profit: 2102.17665 +2025-03-10 12:28:32,339 - INFO - CLOSED long at 2068.32 | PnL: -0.13% | $-0.93 +2025-03-10 12:28:32,339 - INFO - OPENED SHORT at 2068.32 | Stop loss: 2078.6616 | Take profit: 2037.2952 +2025-03-10 12:28:33,536 - INFO - CLOSED short at 2067.86 | PnL: 0.02% | $-0.30 +2025-03-10 12:28:33,741 - INFO - OPENED LONG at 2066.39 | Stop loss: 2056.0580499999996 | Take profit: 2097.3858499999997 +2025-03-10 12:28:33,981 - INFO - CLOSED long at 2065.69 | PnL: -0.03% | $-0.52 +2025-03-10 12:28:34,512 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.9935 | Take profit: 2092.2195 +2025-03-10 12:28:35,167 - INFO - CLOSED long at 2063.5 | PnL: 0.11% | $0.03 +2025-03-10 12:28:35,167 - INFO - OPENED SHORT at 2063.5 | Stop loss: 2073.8174999999997 | Take profit: 2032.5475 +2025-03-10 12:28:35,877 - INFO - CLOSED short at 2064.1 | PnL: -0.03% | $-0.50 +2025-03-10 12:28:35,878 - INFO - OPENED LONG at 2064.1 | Stop loss: 2053.7795 | Take profit: 2095.0615 +2025-03-10 12:28:35,976 - INFO - CLOSED long at 2064.33 | PnL: 0.01% | $-0.34 +2025-03-10 12:28:35,976 - INFO - OPENED SHORT at 2064.33 | Stop loss: 2074.65165 | Take profit: 2033.3650499999999 +2025-03-10 12:28:36,627 - INFO - CLOSED short at 2059.02 | PnL: 0.26% | $0.60 +2025-03-10 12:28:36,681 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.1844499999997 | Take profit: 2028.0066499999998 +2025-03-10 12:28:36,727 - INFO - CLOSED short at 2059.96 | PnL: -0.05% | $-0.59 +2025-03-10 12:28:36,823 - INFO - OPENED SHORT at 2057.4 | Stop loss: 2067.687 | Take profit: 2026.539 +2025-03-10 12:28:36,970 - INFO - CLOSED short at 2055.6 | PnL: 0.09% | $-0.05 +2025-03-10 12:28:37,071 - INFO - OPENED LONG at 2054.83 | Stop loss: 2044.55585 | Take profit: 2085.6524499999996 +2025-03-10 12:28:37,178 - INFO - CLOSED long at 2058.15 | PnL: 0.16% | $0.24 +2025-03-10 12:28:37,178 - INFO - OPENED SHORT at 2058.15 | Stop loss: 2068.4407499999998 | Take profit: 2027.27775 +2025-03-10 12:28:37,537 - INFO - CLOSED short at 2063.4 | PnL: -0.26% | $-1.37 +2025-03-10 12:28:38,107 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.44105 | Take profit: 2100.8368499999997 +2025-03-10 12:28:38,260 - INFO - CLOSED long at 2078.01 | PnL: 0.40% | $1.13 +2025-03-10 12:28:38,624 - INFO - OPENED LONG at 2070.0 | Stop loss: 2059.65 | Take profit: 2101.0499999999997 +2025-03-10 12:28:39,832 - INFO - CLOSED long at 2066.5 | PnL: -0.17% | $-1.03 +2025-03-10 12:28:39,832 - INFO - OPENED SHORT at 2066.5 | Stop loss: 2076.8325 | Take profit: 2035.5025 +2025-03-10 12:28:40,712 - INFO - CLOSED short at 2074.37 | PnL: -0.38% | $-1.83 +2025-03-10 12:28:42,683 - INFO - OPENED SHORT at 2060.2 | Stop loss: 2070.5009999999997 | Take profit: 2029.2969999999998 +2025-03-10 12:28:43,576 - INFO - CLOSED short at 2065.12 | PnL: -0.24% | $-1.26 +2025-03-10 12:28:43,577 - INFO - OPENED LONG at 2065.12 | Stop loss: 2054.7943999999998 | Take profit: 2096.0968 +2025-03-10 12:28:44,839 - INFO - CLOSED long at 2103.02 | PnL: 1.84% | $6.37 +2025-03-10 12:28:44,840 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.5350999999996 | Take profit: 2071.4746999999998 +2025-03-10 12:28:44,889 - INFO - STOP LOSS hit for short at 2113.5350999999996 | PnL: -0.50% | $-2.36 +2025-03-10 12:28:45,077 - INFO - OPENED SHORT at 2137.59 | Stop loss: 2148.2779499999997 | Take profit: 2105.52615 +2025-03-10 12:28:45,328 - INFO - CLOSED short at 2134.78 | PnL: 0.13% | $0.12 +2025-03-10 12:28:45,329 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.1061 | Take profit: 2166.8017 +2025-03-10 12:28:45,545 - INFO - STOP LOSS hit for long at 2124.1061 | PnL: -0.50% | $-2.30 +2025-03-10 12:28:46,141 - INFO - OPENED LONG at 2112.95 | Stop loss: 2102.38525 | Take profit: 2144.64425 +2025-03-10 12:28:46,708 - INFO - STOP LOSS hit for long at 2102.38525 | PnL: -0.50% | $-2.25 +2025-03-10 12:28:47,256 - INFO - OPENED SHORT at 2100.74 | Stop loss: 2111.2436999999995 | Take profit: 2069.2288999999996 +2025-03-10 12:28:47,691 - INFO - CLOSED short at 2093.46 | PnL: 0.35% | $0.90 +2025-03-10 12:28:47,855 - INFO - OPENED SHORT at 2091.1 | Stop loss: 2101.5554999999995 | Take profit: 2059.7335 +2025-03-10 12:28:47,903 - INFO - CLOSED short at 2094.72 | PnL: -0.17% | $-1.01 +2025-03-10 12:28:47,904 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.2464 | Take profit: 2126.1407999999997 +2025-03-10 12:28:48,060 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 16.7% in downtrends | Avg Win=$1.12, Avg Loss=$-1.00 +2025-03-10 12:28:48,062 - INFO - Episode 18: Reward=218.68, Balance=$91.30, Win Rate=52.9%, Trades=34, Episode PnL=$-9.93, Total PnL=$-464.16, Max Drawdown=8.9%, Pred Accuracy=99.9% +2025-03-10 12:28:48,221 - INFO - Model saved to models/trading_agent_best_reward.pt +2025-03-10 12:28:48,254 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 12:28:49,340 - INFO - OPENED LONG at 2062.75 | Stop loss: 2052.43625 | Take profit: 2093.69125 +2025-03-10 12:28:49,844 - INFO - CLOSED long at 2060.1 | PnL: -0.13% | $-0.91 +2025-03-10 12:28:50,260 - INFO - OPENED LONG at 2058.51 | Stop loss: 2048.21745 | Take profit: 2089.38765 +2025-03-10 12:28:51,353 - INFO - STOP LOSS hit for long at 2048.21745 | PnL: -0.50% | $-2.38 +2025-03-10 12:28:53,205 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.2044499999997 | Take profit: 2031.9466499999999 +2025-03-10 12:28:53,694 - INFO - CLOSED short at 2064.32 | PnL: -0.07% | $-0.65 +2025-03-10 12:28:53,913 - INFO - OPENED LONG at 2068.29 | Stop loss: 2057.94855 | Take profit: 2099.3143499999996 +2025-03-10 12:28:54,258 - INFO - CLOSED long at 2068.99 | PnL: 0.03% | $-0.25 +2025-03-10 12:28:54,485 - INFO - OPENED SHORT at 2071.44 | Stop loss: 2081.7972 | Take profit: 2040.3684 +2025-03-10 12:28:54,643 - INFO - CLOSED short at 2072.91 | PnL: -0.07% | $-0.66 +2025-03-10 12:28:54,644 - INFO - OPENED LONG at 2072.91 | Stop loss: 2062.5454499999996 | Take profit: 2104.0036499999997 +2025-03-10 12:28:55,673 - INFO - CLOSED long at 2066.39 | PnL: -0.31% | $-1.58 +2025-03-10 12:28:55,822 - INFO - OPENED SHORT at 2066.29 | Stop loss: 2076.6214499999996 | Take profit: 2035.29565 +2025-03-10 12:28:56,069 - INFO - CLOSED short at 2068.51 | PnL: -0.11% | $-0.78 +2025-03-10 12:28:56,070 - INFO - OPENED LONG at 2068.51 | Stop loss: 2058.1674500000004 | Take profit: 2099.53765 +2025-03-10 12:28:56,275 - INFO - CLOSED long at 2069.96 | PnL: 0.07% | $-0.11 +2025-03-10 12:28:56,275 - INFO - OPENED SHORT at 2069.96 | Stop loss: 2080.3098 | Take profit: 2038.9106 +2025-03-10 12:28:56,994 - INFO - CLOSED short at 2069.35 | PnL: 0.03% | $-0.26 +2025-03-10 12:28:56,995 - INFO - OPENED LONG at 2069.35 | Stop loss: 2059.0032499999998 | Take profit: 2100.39025 +2025-03-10 12:28:59,027 - INFO - CLOSED long at 2066.15 | PnL: -0.15% | $-0.94 +2025-03-10 12:28:59,027 - INFO - OPENED SHORT at 2066.15 | Stop loss: 2076.4807499999997 | Take profit: 2035.15775 +2025-03-10 12:28:59,294 - INFO - CLOSED short at 2059.59 | PnL: 0.32% | $0.80 +2025-03-10 12:28:59,565 - INFO - OPENED LONG at 2067.1 | Stop loss: 2056.7644999999998 | Take profit: 2098.1065 +2025-03-10 12:29:00,022 - INFO - CLOSED long at 2061.6 | PnL: -0.27% | $-1.35 +2025-03-10 12:29:00,023 - INFO - OPENED SHORT at 2061.6 | Stop loss: 2071.908 | Take profit: 2030.676 +2025-03-10 12:29:01,765 - INFO - CLOSED short at 2059.96 | PnL: 0.08% | $-0.07 +2025-03-10 12:29:01,766 - INFO - OPENED LONG at 2059.96 | Stop loss: 2049.6602 | Take profit: 2090.8594 +2025-03-10 12:29:02,207 - INFO - CLOSED long at 2056.71 | PnL: -0.16% | $-0.94 +2025-03-10 12:29:02,208 - INFO - OPENED SHORT at 2056.71 | Stop loss: 2066.9935499999997 | Take profit: 2025.85935 +2025-03-10 12:29:02,374 - INFO - CLOSED short at 2061.66 | PnL: -0.24% | $-1.23 +2025-03-10 12:29:02,533 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.9935 | Take profit: 2092.2195 +2025-03-10 12:29:03,553 - INFO - CLOSED long at 2078.01 | PnL: 0.81% | $2.52 +2025-03-10 12:29:03,554 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.40005 | Take profit: 2046.8398500000003 +2025-03-10 12:29:03,646 - INFO - CLOSED short at 2072.6 | PnL: 0.26% | $0.58 +2025-03-10 12:29:03,835 - INFO - OPENED SHORT at 2073.23 | Stop loss: 2083.59615 | Take profit: 2042.13155 +2025-03-10 12:29:04,312 - INFO - CLOSED short at 2069.87 | PnL: 0.16% | $0.23 +2025-03-10 12:29:04,318 - INFO - OPENED LONG at 2069.87 | Stop loss: 2059.52065 | Take profit: 2100.9180499999998 +2025-03-10 12:29:05,726 - INFO - CLOSED long at 2071.99 | PnL: 0.10% | $0.01 +2025-03-10 12:29:05,727 - INFO - OPENED SHORT at 2071.99 | Stop loss: 2082.3499499999994 | Take profit: 2040.9101499999997 +2025-03-10 12:29:07,307 - INFO - CLOSED short at 2065.7 | PnL: 0.30% | $0.75 +2025-03-10 12:29:07,309 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.3714999999997 | Take profit: 2096.6854999999996 +2025-03-10 12:29:07,411 - INFO - CLOSED long at 2065.07 | PnL: -0.03% | $-0.48 +2025-03-10 12:29:07,411 - INFO - OPENED SHORT at 2065.07 | Stop loss: 2075.39535 | Take profit: 2034.0939500000002 +2025-03-10 12:29:07,636 - INFO - CLOSED short at 2063.98 | PnL: 0.05% | $-0.17 +2025-03-10 12:29:08,790 - INFO - OPENED SHORT at 2062.83 | Stop loss: 2073.1441499999996 | Take profit: 2031.88755 +2025-03-10 12:29:08,832 - INFO - CLOSED short at 2063.9 | PnL: -0.05% | $-0.56 +2025-03-10 12:29:08,832 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.5805 | Take profit: 2094.8585 +2025-03-10 12:29:09,063 - INFO - CLOSED long at 2068.33 | PnL: 0.21% | $0.42 +2025-03-10 12:29:09,064 - INFO - OPENED SHORT at 2068.33 | Stop loss: 2078.6716499999998 | Take profit: 2037.30505 +2025-03-10 12:29:09,506 - INFO - CLOSED short at 2065.72 | PnL: 0.13% | $0.10 +2025-03-10 12:29:09,508 - INFO - OPENED LONG at 2065.72 | Stop loss: 2055.3914 | Take profit: 2096.7057999999997 +2025-03-10 12:29:10,310 - INFO - TAKE PROFIT hit for long at 2096.7057999999997 | PnL: 1.50% | $5.16 +2025-03-10 12:29:10,995 - INFO - OPENED SHORT at 2121.09 | Stop loss: 2131.6954499999997 | Take profit: 2089.27365 +2025-03-10 12:29:11,145 - INFO - CLOSED short at 2119.93 | PnL: 0.05% | $-0.18 +2025-03-10 12:29:11,146 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3303499999997 | Take profit: 2151.7289499999997 +2025-03-10 12:29:11,469 - INFO - STOP LOSS hit for long at 2109.3303499999997 | PnL: -0.50% | $-2.33 +2025-03-10 12:29:11,965 - INFO - OPENED SHORT at 2114.8 | Stop loss: 2125.374 | Take profit: 2083.078 +2025-03-10 12:29:12,908 - INFO - CLOSED short at 2104.68 | PnL: 0.48% | $1.43 +2025-03-10 12:29:12,909 - INFO - OPENED LONG at 2104.68 | Stop loss: 2094.1566 | Take profit: 2136.2501999999995 +2025-03-10 12:29:13,173 - INFO - CLOSED long at 2095.29 | PnL: -0.45% | $-2.10 +2025-03-10 12:29:13,602 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 38.5% in downtrends | Avg Win=$1.20, Avg Loss=$-0.90 +2025-03-10 12:29:13,603 - INFO - Episode 19: Reward=217.85, Balance=$94.06, Win Rate=53.3%, Trades=30, Episode PnL=$-5.07, Total PnL=$-470.10, Max Drawdown=11.3%, Pred Accuracy=99.9% +2025-03-10 12:29:13,762 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 12:29:13,800 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 12:29:15,241 - INFO - OPENED LONG at 2057.59 | Stop loss: 2047.3020500000002 | Take profit: 2088.45385 +2025-03-10 12:29:15,491 - INFO - CLOSED long at 2060.51 | PnL: 0.14% | $0.17 +2025-03-10 12:29:16,036 - INFO - OPENED SHORT at 2055.39 | Stop loss: 2065.66695 | Take profit: 2024.5591499999998 +2025-03-10 12:29:16,086 - INFO - CLOSED short at 2053.56 | PnL: 0.09% | $-0.04 +2025-03-10 12:29:16,086 - INFO - OPENED LONG at 2053.56 | Stop loss: 2043.2921999999999 | Take profit: 2084.3633999999997 +2025-03-10 12:29:16,905 - INFO - CLOSED long at 2047.39 | PnL: -0.30% | $-1.60 +2025-03-10 12:29:17,202 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.2199499999997 | Take profit: 2015.30015 +2025-03-10 12:29:17,943 - INFO - STOP LOSS hit for short at 2056.2199499999997 | PnL: -0.50% | $-2.36 +2025-03-10 12:29:19,233 - INFO - OPENED SHORT at 2064.32 | Stop loss: 2074.6416 | Take profit: 2033.3552000000002 +2025-03-10 12:29:19,581 - INFO - CLOSED short at 2070.99 | PnL: -0.32% | $-1.63 +2025-03-10 12:29:19,726 - INFO - OPENED LONG at 2068.99 | Stop loss: 2058.6450499999996 | Take profit: 2100.02485 +2025-03-10 12:29:19,968 - INFO - CLOSED long at 2073.73 | PnL: 0.23% | $0.49 +2025-03-10 12:29:20,525 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.3601 | Take profit: 2036.9996999999998 +2025-03-10 12:29:20,573 - INFO - CLOSED short at 2067.2 | PnL: 0.04% | $-0.23 +2025-03-10 12:29:20,573 - INFO - OPENED LONG at 2067.2 | Stop loss: 2056.864 | Take profit: 2098.2079999999996 +2025-03-10 12:29:20,770 - INFO - CLOSED long at 2069.34 | PnL: 0.10% | $0.01 +2025-03-10 12:29:20,771 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.6866999999997 | Take profit: 2038.2999000000002 +2025-03-10 12:29:20,917 - INFO - CLOSED short at 2067.6 | PnL: 0.08% | $-0.06 +2025-03-10 12:29:21,763 - INFO - OPENED SHORT at 2071.39 | Stop loss: 2081.7469499999997 | Take profit: 2040.3191499999998 +2025-03-10 12:29:21,963 - INFO - CLOSED short at 2072.7 | PnL: -0.06% | $-0.62 +2025-03-10 12:29:22,501 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.665 | Take profit: 2098.0049999999997 +2025-03-10 12:29:22,823 - INFO - CLOSED long at 2065.26 | PnL: -0.08% | $-0.69 +2025-03-10 12:29:22,824 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.5863 | Take profit: 2034.2811000000002 +2025-03-10 12:29:24,034 - INFO - CLOSED short at 2070.04 | PnL: -0.23% | $-1.24 +2025-03-10 12:29:24,821 - INFO - OPENED SHORT at 2066.24 | Stop loss: 2076.5711999999994 | Take profit: 2035.2463999999998 +2025-03-10 12:29:25,114 - INFO - CLOSED short at 2062.71 | PnL: 0.17% | $0.26 +2025-03-10 12:29:26,991 - INFO - OPENED SHORT at 2058.28 | Stop loss: 2068.5714 | Take profit: 2027.4058000000002 +2025-03-10 12:29:27,368 - INFO - CLOSED short at 2061.66 | PnL: -0.16% | $-0.98 +2025-03-10 12:29:27,369 - INFO - OPENED LONG at 2061.66 | Stop loss: 2051.3516999999997 | Take profit: 2092.5849 +2025-03-10 12:29:28,237 - INFO - CLOSED long at 2072.0 | PnL: 0.50% | $1.47 +2025-03-10 12:29:28,238 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3599999999997 | Take profit: 2040.92 +2025-03-10 12:29:29,638 - INFO - CLOSED short at 2064.4 | PnL: 0.37% | $0.99 +2025-03-10 12:29:29,639 - INFO - OPENED LONG at 2064.4 | Stop loss: 2054.078 | Take profit: 2095.366 +2025-03-10 12:29:30,133 - INFO - CLOSED long at 2070.2 | PnL: 0.28% | $0.68 +2025-03-10 12:29:30,340 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3464999999997 | Take profit: 2101.7604999999994 +2025-03-10 12:29:31,436 - INFO - CLOSED long at 2067.7 | PnL: -0.14% | $-0.93 +2025-03-10 12:29:31,437 - INFO - OPENED SHORT at 2067.7 | Stop loss: 2078.0384999999997 | Take profit: 2036.6844999999998 +2025-03-10 12:29:31,976 - INFO - CLOSED short at 2070.1 | PnL: -0.12% | $-0.81 +2025-03-10 12:29:31,977 - INFO - OPENED LONG at 2070.1 | Stop loss: 2059.7495 | Take profit: 2101.1514999999995 +2025-03-10 12:29:32,277 - INFO - CLOSED long at 2066.09 | PnL: -0.19% | $-1.09 +2025-03-10 12:29:32,278 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.42045 | Take profit: 2035.0986500000001 +2025-03-10 12:29:32,827 - INFO - CLOSED short at 2060.2 | PnL: 0.29% | $0.68 +2025-03-10 12:29:33,615 - INFO - OPENED SHORT at 2062.43 | Stop loss: 2072.7421499999996 | Take profit: 2031.49355 +2025-03-10 12:29:33,923 - INFO - CLOSED short at 2064.08 | PnL: -0.08% | $-0.67 +2025-03-10 12:29:34,379 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.9933 | Take profit: 2100.3801 +2025-03-10 12:29:34,585 - INFO - CLOSED long at 2074.05 | PnL: 0.23% | $0.47 +2025-03-10 12:29:34,585 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.42025 | Take profit: 2042.9392500000001 +2025-03-10 12:29:34,791 - INFO - CLOSED short at 2074.9 | PnL: -0.04% | $-0.52 +2025-03-10 12:29:35,189 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.1211000000003 | Take profit: 2163.7567 +2025-03-10 12:29:35,234 - INFO - CLOSED long at 2133.95 | PnL: 0.10% | $0.01 +2025-03-10 12:29:35,771 - INFO - OPENED LONG at 2121.09 | Stop loss: 2110.48455 | Take profit: 2152.9063499999997 +2025-03-10 12:29:35,984 - INFO - CLOSED long at 2121.4 | PnL: 0.01% | $-0.31 +2025-03-10 12:29:36,654 - INFO - OPENED LONG at 2120.81 | Stop loss: 2110.20595 | Take profit: 2152.6221499999997 +2025-03-10 12:29:36,864 - INFO - STOP LOSS hit for long at 2110.20595 | PnL: -0.50% | $-2.19 +2025-03-10 12:29:37,347 - INFO - OPENED LONG at 2099.25 | Stop loss: 2088.75375 | Take profit: 2130.73875 +2025-03-10 12:29:38,306 - INFO - STOP LOSS hit for long at 2088.75375 | PnL: -0.50% | $-2.14 +2025-03-10 12:29:38,362 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 12.5% in downtrends | Avg Win=$0.52, Avg Loss=$-1.01 +2025-03-10 12:29:38,363 - INFO - Episode 20: Reward=220.91, Balance=$87.11, Win Rate=50.0%, Trades=28, Episode PnL=$-11.07, Total PnL=$-483.00, Max Drawdown=13.0%, Pred Accuracy=99.9% +2025-03-10 12:29:38,525 - INFO - Model saved to models/trading_agent_best_reward.pt +2025-03-10 12:29:38,660 - INFO - Model saved to models/trading_agent_episode_20.pt +2025-03-10 12:29:38,684 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 12:29:39,186 - INFO - OPENED SHORT at 2060.94 | Stop loss: 2071.2446999999997 | Take profit: 2030.0259 +2025-03-10 12:29:41,712 - INFO - CLOSED short at 2047.2 | PnL: 0.67% | $2.27 +2025-03-10 12:29:41,712 - INFO - OPENED LONG at 2047.2 | Stop loss: 2036.964 | Take profit: 2077.908 +2025-03-10 12:29:42,022 - INFO - CLOSED long at 2048.51 | PnL: 0.06% | $-0.15 +2025-03-10 12:29:42,023 - INFO - OPENED SHORT at 2048.51 | Stop loss: 2058.75255 | Take profit: 2017.7823500000002 +2025-03-10 12:29:42,627 - INFO - CLOSED short at 2060.13 | PnL: -0.57% | $-2.73 +2025-03-10 12:29:42,629 - INFO - OPENED LONG at 2060.13 | Stop loss: 2049.82935 | Take profit: 2091.03195 +2025-03-10 12:29:43,393 - INFO - CLOSED long at 2059.49 | PnL: -0.03% | $-0.52 +2025-03-10 12:29:43,394 - INFO - OPENED SHORT at 2059.49 | Stop loss: 2069.7874499999994 | Take profit: 2028.5976499999997 +2025-03-10 12:29:43,869 - INFO - STOP LOSS hit for short at 2069.7874499999994 | PnL: -0.50% | $-2.37 +2025-03-10 12:29:43,918 - INFO - OPENED LONG at 2068.11 | Stop loss: 2057.7694500000002 | Take profit: 2099.13165 +2025-03-10 12:29:44,174 - INFO - CLOSED long at 2069.6 | PnL: 0.07% | $-0.11 +2025-03-10 12:29:44,175 - INFO - OPENED SHORT at 2069.6 | Stop loss: 2079.948 | Take profit: 2038.5559999999998 +2025-03-10 12:29:44,673 - INFO - CLOSED short at 2072.33 | PnL: -0.13% | $-0.89 +2025-03-10 12:29:44,864 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.5455 | Take profit: 2101.9635 +2025-03-10 12:29:45,966 - INFO - CLOSED long at 2068.9 | PnL: -0.10% | $-0.75 +2025-03-10 12:29:45,966 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.2445 | Take profit: 2037.8665 +2025-03-10 12:29:46,012 - INFO - CLOSED short at 2068.51 | PnL: 0.02% | $-0.31 +2025-03-10 12:29:46,013 - INFO - OPENED LONG at 2068.51 | Stop loss: 2058.1674500000004 | Take profit: 2099.53765 +2025-03-10 12:29:46,167 - INFO - CLOSED long at 2070.4 | PnL: 0.09% | $-0.03 +2025-03-10 12:29:47,872 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.9479499999998 | Take profit: 2040.5161500000002 +2025-03-10 12:29:48,248 - INFO - CLOSED short at 2067.11 | PnL: 0.22% | $0.44 +2025-03-10 12:29:48,250 - INFO - OPENED LONG at 2067.11 | Stop loss: 2056.7744500000003 | Take profit: 2098.11665 +2025-03-10 12:29:48,926 - INFO - CLOSED long at 2065.83 | PnL: -0.06% | $-0.61 +2025-03-10 12:29:48,927 - INFO - OPENED SHORT at 2065.83 | Stop loss: 2076.1591499999995 | Take profit: 2034.8425499999998 +2025-03-10 12:29:49,078 - INFO - CLOSED short at 2062.89 | PnL: 0.14% | $0.16 +2025-03-10 12:29:49,509 - INFO - OPENED LONG at 2067.1 | Stop loss: 2056.7644999999998 | Take profit: 2098.1065 +2025-03-10 12:29:50,329 - INFO - CLOSED long at 2064.7 | PnL: -0.12% | $-0.82 +2025-03-10 12:29:51,316 - INFO - OPENED SHORT at 2059.61 | Stop loss: 2069.90805 | Take profit: 2028.71585 +2025-03-10 12:29:51,943 - INFO - CLOSED short at 2056.71 | PnL: 0.14% | $0.15 +2025-03-10 12:29:52,423 - INFO - OPENED SHORT at 2066.01 | Stop loss: 2076.34005 | Take profit: 2035.0198500000001 +2025-03-10 12:29:53,029 - INFO - STOP LOSS hit for short at 2076.34005 | PnL: -0.50% | $-2.25 +2025-03-10 12:29:55,750 - INFO - OPENED LONG at 2075.29 | Stop loss: 2064.9135499999998 | Take profit: 2106.4193499999997 +2025-03-10 12:29:55,845 - INFO - CLOSED long at 2075.61 | PnL: 0.02% | $-0.31 +2025-03-10 12:29:55,992 - INFO - OPENED LONG at 2069.97 | Stop loss: 2059.6201499999997 | Take profit: 2101.0195499999995 +2025-03-10 12:29:56,531 - INFO - CLOSED long at 2070.1 | PnL: 0.01% | $-0.34 +2025-03-10 12:29:56,532 - INFO - OPENED SHORT at 2070.1 | Stop loss: 2080.4504999999995 | Take profit: 2039.0484999999999 +2025-03-10 12:29:56,581 - INFO - CLOSED short at 2067.19 | PnL: 0.14% | $0.15 +2025-03-10 12:29:57,395 - INFO - OPENED LONG at 2060.2 | Stop loss: 2049.899 | Take profit: 2091.1029999999996 +2025-03-10 12:29:57,685 - INFO - STOP LOSS hit for long at 2049.899 | PnL: -0.50% | $-2.18 +2025-03-10 12:29:57,731 - INFO - OPENED SHORT at 2049.5 | Stop loss: 2059.7475 | Take profit: 2018.7575 +2025-03-10 12:29:58,046 - INFO - STOP LOSS hit for short at 2059.7475 | PnL: -0.50% | $-2.13 +2025-03-10 12:29:58,520 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.4003999999995 | Take profit: 2033.1188 +2025-03-10 12:29:59,380 - INFO - STOP LOSS hit for short at 2074.4003999999995 | PnL: -0.50% | $-2.08 +2025-03-10 12:29:59,486 - INFO - OPENED LONG at 2077.61 | Stop loss: 2067.22195 | Take profit: 2108.7741499999997 +2025-03-10 12:29:59,638 - INFO - CLOSED long at 2103.02 | PnL: 1.22% | $3.80 +2025-03-10 12:29:59,639 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.5350999999996 | Take profit: 2071.4746999999998 +2025-03-10 12:29:59,693 - INFO - STOP LOSS hit for short at 2113.5350999999996 | PnL: -0.50% | $-2.12 +2025-03-10 12:30:00,296 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.04655 | Take profit: 2160.6203499999997 +2025-03-10 12:30:00,450 - INFO - STOP LOSS hit for long at 2118.04655 | PnL: -0.50% | $-2.07 +2025-03-10 12:30:00,659 - INFO - OPENED SHORT at 2119.14 | Stop loss: 2129.7356999999997 | Take profit: 2087.3529 +2025-03-10 12:30:01,542 - INFO - CLOSED short at 2103.33 | PnL: 0.75% | $2.18 +2025-03-10 12:30:01,907 - INFO - OPENED SHORT at 2099.25 | Stop loss: 2109.7462499999997 | Take profit: 2067.76125 +2025-03-10 12:30:01,956 - INFO - CLOSED short at 2098.9 | PnL: 0.02% | $-0.29 +2025-03-10 12:30:02,919 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 18.2% in downtrends | Avg Win=$1.31, Avg Loss=$-1.15 +2025-03-10 12:30:02,920 - INFO - Episode 21: Reward=220.94, Balance=$86.08, Win Rate=51.9%, Trades=27, Episode PnL=$-14.91, Total PnL=$-496.92, Max Drawdown=15.8%, Pred Accuracy=99.9% +2025-03-10 12:30:03,075 - INFO - Model saved to models/trading_agent_best_reward.pt +2025-03-10 12:30:03,110 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 12:30:04,391 - INFO - OPENED SHORT at 2057.59 | Stop loss: 2067.87795 | Take profit: 2026.7261500000002 +2025-03-10 12:30:04,443 - INFO - CLOSED short at 2059.03 | PnL: -0.07% | $-0.68 +2025-03-10 12:30:04,549 - INFO - OPENED SHORT at 2060.1 | Stop loss: 2070.4004999999997 | Take profit: 2029.1985 +2025-03-10 12:30:06,389 - INFO - CLOSED short at 2048.51 | PnL: 0.56% | $1.84 +2025-03-10 12:30:06,727 - INFO - OPENED SHORT at 2052.3 | Stop loss: 2062.5615 | Take profit: 2021.5155000000002 +2025-03-10 12:30:06,823 - INFO - CLOSED short at 2057.01 | PnL: -0.23% | $-1.33 +2025-03-10 12:30:06,825 - INFO - OPENED LONG at 2057.01 | Stop loss: 2046.7249500000003 | Take profit: 2087.86515 +2025-03-10 12:30:07,027 - INFO - CLOSED long at 2059.7 | PnL: 0.13% | $0.12 +2025-03-10 12:30:07,028 - INFO - OPENED SHORT at 2059.7 | Stop loss: 2069.9984999999997 | Take profit: 2028.8044999999997 +2025-03-10 12:30:08,188 - INFO - STOP LOSS hit for short at 2069.9984999999997 | PnL: -0.50% | $-2.40 +2025-03-10 12:30:08,549 - INFO - OPENED SHORT at 2068.65 | Stop loss: 2078.99325 | Take profit: 2037.6202500000002 +2025-03-10 12:30:08,597 - INFO - CLOSED short at 2068.99 | PnL: -0.02% | $-0.45 +2025-03-10 12:30:08,598 - INFO - OPENED LONG at 2068.99 | Stop loss: 2058.6450499999996 | Take profit: 2100.02485 +2025-03-10 12:30:10,664 - INFO - CLOSED long at 2071.4 | PnL: 0.12% | $0.06 +2025-03-10 12:30:11,377 - INFO - OPENED LONG at 2068.32 | Stop loss: 2057.9784 | Take profit: 2099.3448 +2025-03-10 12:30:11,479 - INFO - CLOSED long at 2067.79 | PnL: -0.03% | $-0.49 +2025-03-10 12:30:11,479 - INFO - OPENED SHORT at 2067.79 | Stop loss: 2078.12895 | Take profit: 2036.77315 +2025-03-10 12:30:12,903 - INFO - CLOSED short at 2070.04 | PnL: -0.11% | $-0.81 +2025-03-10 12:30:13,719 - INFO - OPENED SHORT at 2066.24 | Stop loss: 2076.5711999999994 | Take profit: 2035.2463999999998 +2025-03-10 12:30:13,913 - INFO - CLOSED short at 2064.45 | PnL: 0.09% | $-0.05 +2025-03-10 12:30:13,914 - INFO - OPENED LONG at 2064.45 | Stop loss: 2054.1277499999997 | Take profit: 2095.4167499999994 +2025-03-10 12:30:14,226 - INFO - CLOSED long at 2061.6 | PnL: -0.14% | $-0.91 +2025-03-10 12:30:14,227 - INFO - OPENED SHORT at 2061.6 | Stop loss: 2071.908 | Take profit: 2030.676 +2025-03-10 12:30:15,785 - INFO - CLOSED short at 2059.96 | PnL: 0.08% | $-0.08 +2025-03-10 12:30:15,786 - INFO - OPENED LONG at 2059.96 | Stop loss: 2049.6602 | Take profit: 2090.8594 +2025-03-10 12:30:17,715 - INFO - CLOSED long at 2070.0 | PnL: 0.49% | $1.47 +2025-03-10 12:30:17,716 - INFO - OPENED SHORT at 2070.0 | Stop loss: 2080.35 | Take profit: 2038.95 +2025-03-10 12:30:18,516 - INFO - CLOSED short at 2063.97 | PnL: 0.29% | $0.74 +2025-03-10 12:30:18,517 - INFO - OPENED LONG at 2063.97 | Stop loss: 2053.65015 | Take profit: 2094.9295499999994 +2025-03-10 12:30:18,768 - INFO - CLOSED long at 2065.5 | PnL: 0.07% | $-0.10 +2025-03-10 12:30:19,050 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.24705 | Take profit: 2099.61885 +2025-03-10 12:30:19,975 - INFO - CLOSED long at 2074.35 | PnL: 0.28% | $0.69 +2025-03-10 12:30:21,001 - INFO - OPENED LONG at 2070.19 | Stop loss: 2059.83905 | Take profit: 2101.2428499999996 +2025-03-10 12:30:22,003 - INFO - STOP LOSS hit for long at 2059.83905 | PnL: -0.50% | $-2.34 +2025-03-10 12:30:22,199 - INFO - OPENED SHORT at 2053.01 | Stop loss: 2063.27505 | Take profit: 2022.2148500000003 +2025-03-10 12:30:22,677 - INFO - STOP LOSS hit for short at 2063.27505 | PnL: -0.50% | $-2.29 +2025-03-10 12:30:23,034 - INFO - OPENED LONG at 2066.59 | Stop loss: 2056.25705 | Take profit: 2097.58885 +2025-03-10 12:30:24,323 - INFO - TAKE PROFIT hit for long at 2097.58885 | PnL: 1.50% | $5.21 +2025-03-10 12:30:25,357 - INFO - OPENED SHORT at 2119.07 | Stop loss: 2129.6653499999998 | Take profit: 2087.28395 +2025-03-10 12:30:25,406 - INFO - CLOSED short at 2115.28 | PnL: 0.18% | $0.31 +2025-03-10 12:30:25,920 - INFO - OPENED LONG at 2116.48 | Stop loss: 2105.8976 | Take profit: 2148.2272 +2025-03-10 12:30:26,218 - INFO - STOP LOSS hit for long at 2105.8976 | PnL: -0.50% | $-2.36 +2025-03-10 12:30:26,310 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.55 | Take profit: 2121.35 +2025-03-10 12:30:27,247 - INFO - CLOSED long at 2093.46 | PnL: 0.17% | $0.25 +2025-03-10 12:30:27,610 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 20.0% in downtrends | Avg Win=$1.19, Avg Loss=$-1.10 +2025-03-10 12:30:27,612 - INFO - Episode 22: Reward=226.19, Balance=$96.39, Win Rate=54.5%, Trades=22, Episode PnL=$-2.62, Total PnL=$-500.53, Max Drawdown=8.1%, Pred Accuracy=99.9% +2025-03-10 12:30:27,768 - INFO - Model saved to models/trading_agent_best_reward.pt +2025-03-10 12:30:27,906 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 12:30:27,929 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 12:30:28,492 - INFO - OPENED SHORT at 2062.5 | Stop loss: 2072.8125 | Take profit: 2031.5625 +2025-03-10 12:30:30,179 - INFO - CLOSED short at 2053.1 | PnL: 0.46% | $1.42 +2025-03-10 12:30:30,274 - INFO - OPENED SHORT at 2050.71 | Stop loss: 2060.96355 | Take profit: 2019.94935 +2025-03-10 12:30:30,941 - INFO - CLOSED short at 2045.99 | PnL: 0.23% | $0.53 +2025-03-10 12:30:31,283 - INFO - OPENED SHORT at 2050.24 | Stop loss: 2060.4911999999995 | Take profit: 2019.4863999999998 +2025-03-10 12:30:31,473 - INFO - CLOSED short at 2051.89 | PnL: -0.08% | $-0.74 +2025-03-10 12:30:31,672 - INFO - OPENED SHORT at 2056.89 | Stop loss: 2067.1744499999995 | Take profit: 2026.0366499999998 +2025-03-10 12:30:31,934 - INFO - CLOSED short at 2063.29 | PnL: -0.31% | $-1.66 +2025-03-10 12:30:31,984 - INFO - OPENED LONG at 2064.61 | Stop loss: 2054.28695 | Take profit: 2095.57915 +2025-03-10 12:30:33,180 - INFO - CLOSED long at 2067.89 | PnL: 0.16% | $0.23 +2025-03-10 12:30:33,181 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.22945 | Take profit: 2036.8716499999998 +2025-03-10 12:30:33,522 - INFO - CLOSED short at 2067.69 | PnL: 0.01% | $-0.36 +2025-03-10 12:30:33,523 - INFO - OPENED LONG at 2067.69 | Stop loss: 2057.35155 | Take profit: 2098.7053499999997 +2025-03-10 12:30:34,084 - INFO - CLOSED long at 2072.8 | PnL: 0.25% | $0.59 +2025-03-10 12:30:34,085 - INFO - OPENED SHORT at 2072.8 | Stop loss: 2083.1639999999998 | Take profit: 2041.708 +2025-03-10 12:30:34,652 - INFO - CLOSED short at 2067.6 | PnL: 0.25% | $0.60 +2025-03-10 12:30:34,653 - INFO - OPENED LONG at 2067.6 | Stop loss: 2057.2619999999997 | Take profit: 2098.6139999999996 +2025-03-10 12:30:35,348 - INFO - CLOSED long at 2070.4 | PnL: 0.14% | $0.14 +2025-03-10 12:30:38,446 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.6352 | Take profit: 2095.9343999999996 +2025-03-10 12:30:39,024 - INFO - CLOSED long at 2060.9 | PnL: -0.20% | $-1.20 +2025-03-10 12:30:39,025 - INFO - OPENED SHORT at 2060.9 | Stop loss: 2071.2045 | Take profit: 2029.9865 +2025-03-10 12:30:39,857 - INFO - CLOSED short at 2065.89 | PnL: -0.24% | $-1.36 +2025-03-10 12:30:39,858 - INFO - OPENED LONG at 2065.89 | Stop loss: 2055.5605499999997 | Take profit: 2096.8783499999995 +2025-03-10 12:30:39,958 - INFO - CLOSED long at 2063.0 | PnL: -0.14% | $-0.94 +2025-03-10 12:30:42,371 - INFO - OPENED SHORT at 2068.15 | Stop loss: 2078.49075 | Take profit: 2037.12775 +2025-03-10 12:30:42,523 - INFO - CLOSED short at 2069.03 | PnL: -0.04% | $-0.55 +2025-03-10 12:30:42,524 - INFO - OPENED LONG at 2069.03 | Stop loss: 2058.68485 | Take profit: 2100.06545 +2025-03-10 12:30:43,166 - INFO - CLOSED long at 2065.3 | PnL: -0.18% | $-1.08 +2025-03-10 12:30:43,166 - INFO - OPENED SHORT at 2065.3 | Stop loss: 2075.6265 | Take profit: 2034.3205 +2025-03-10 12:30:43,413 - INFO - CLOSED short at 2065.29 | PnL: 0.00% | $-0.38 +2025-03-10 12:30:43,414 - INFO - OPENED LONG at 2065.29 | Stop loss: 2054.96355 | Take profit: 2096.2693499999996 +2025-03-10 12:30:43,773 - INFO - CLOSED long at 2071.35 | PnL: 0.29% | $0.74 +2025-03-10 12:30:43,774 - INFO - OPENED SHORT at 2071.35 | Stop loss: 2081.70675 | Take profit: 2040.27975 +2025-03-10 12:30:43,873 - INFO - CLOSED short at 2069.69 | PnL: 0.08% | $-0.08 +2025-03-10 12:30:44,121 - INFO - OPENED LONG at 2071.99 | Stop loss: 2061.6300499999998 | Take profit: 2103.0698499999994 +2025-03-10 12:30:45,059 - INFO - CLOSED long at 2067.0 | PnL: -0.24% | $-1.31 +2025-03-10 12:30:45,060 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.3349999999996 | Take profit: 2035.995 +2025-03-10 12:30:45,211 - INFO - CLOSED short at 2066.89 | PnL: 0.01% | $-0.36 +2025-03-10 12:30:45,212 - INFO - OPENED LONG at 2066.89 | Stop loss: 2056.55555 | Take profit: 2097.89335 +2025-03-10 12:30:46,170 - INFO - CLOSED long at 2064.5 | PnL: -0.12% | $-0.81 +2025-03-10 12:30:46,873 - INFO - OPENED SHORT at 2056.85 | Stop loss: 2067.1342499999996 | Take profit: 2025.99725 +2025-03-10 12:30:47,141 - INFO - CLOSED short at 2065.1 | PnL: -0.40% | $-1.87 +2025-03-10 12:30:47,189 - INFO - OPENED SHORT at 2062.43 | Stop loss: 2072.7421499999996 | Take profit: 2031.49355 +2025-03-10 12:30:47,658 - INFO - CLOSED short at 2060.7 | PnL: 0.08% | $-0.06 +2025-03-10 12:30:47,659 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3965 | Take profit: 2091.6105 +2025-03-10 12:30:48,650 - INFO - TAKE PROFIT hit for long at 2091.6105 | PnL: 1.50% | $5.12 +2025-03-10 12:30:49,312 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.04655 | Take profit: 2160.6203499999997 +2025-03-10 12:30:49,416 - INFO - CLOSED long at 2120.15 | PnL: -0.40% | $-1.94 +2025-03-10 12:30:51,353 - INFO - OPENED LONG at 2101.51 | Stop loss: 2091.0024500000004 | Take profit: 2133.03265 +2025-03-10 12:30:51,811 - INFO - CLOSED long at 2094.72 | PnL: -0.32% | $-1.60 +2025-03-10 12:30:51,911 - INFO - OPENED SHORT at 2088.35 | Stop loss: 2098.79175 | Take profit: 2057.02475 +2025-03-10 12:30:51,958 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 25.0% in downtrends | Avg Win=$1.17, Avg Loss=$-0.96 +2025-03-10 12:30:51,959 - INFO - Episode 23: Reward=215.97, Balance=$93.07, Win Rate=52.0%, Trades=25, Episode PnL=$-2.43, Total PnL=$-507.45, Max Drawdown=10.2%, Pred Accuracy=99.9% +2025-03-10 12:30:52,105 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 12:30:52,140 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 12:30:52,735 - INFO - OPENED SHORT at 2065.64 | Stop loss: 2075.9682 | Take profit: 2034.6553999999999 +2025-03-10 12:30:52,777 - INFO - CLOSED short at 2064.51 | PnL: 0.05% | $-0.18 +2025-03-10 12:30:53,500 - INFO - OPENED SHORT at 2060.1 | Stop loss: 2070.4004999999997 | Take profit: 2029.1985 +2025-03-10 12:30:55,042 - INFO - CLOSED short at 2045.99 | PnL: 0.68% | $2.34 +2025-03-10 12:30:55,193 - INFO - OPENED SHORT at 2048.13 | Stop loss: 2058.37065 | Take profit: 2017.40805 +2025-03-10 12:30:55,874 - INFO - STOP LOSS hit for short at 2058.37065 | PnL: -0.50% | $-2.45 +2025-03-10 12:30:56,719 - INFO - OPENED SHORT at 2057.8 | Stop loss: 2068.089 | Take profit: 2026.9330000000002 +2025-03-10 12:30:57,109 - INFO - STOP LOSS hit for short at 2068.089 | PnL: -0.50% | $-2.39 +2025-03-10 12:30:57,203 - INFO - OPENED LONG at 2068.29 | Stop loss: 2057.94855 | Take profit: 2099.3143499999996 +2025-03-10 12:30:58,138 - INFO - CLOSED long at 2070.9 | PnL: 0.13% | $0.10 +2025-03-10 12:30:58,386 - INFO - OPENED LONG at 2067.2 | Stop loss: 2056.864 | Take profit: 2098.2079999999996 +2025-03-10 12:30:58,824 - INFO - CLOSED long at 2069.01 | PnL: 0.09% | $-0.05 +2025-03-10 12:30:59,501 - INFO - OPENED SHORT at 2069.96 | Stop loss: 2080.3098 | Take profit: 2038.9106 +2025-03-10 12:31:01,164 - INFO - CLOSED short at 2070.4 | PnL: -0.02% | $-0.47 +2025-03-10 12:31:01,164 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.0480000000002 | Take profit: 2101.4559999999997 +2025-03-10 12:31:01,352 - INFO - CLOSED long at 2067.84 | PnL: -0.12% | $-0.87 +2025-03-10 12:31:02,209 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.2044499999997 | Take profit: 2031.9466499999999 +2025-03-10 12:31:02,512 - INFO - CLOSED short at 2064.96 | PnL: -0.10% | $-0.77 +2025-03-10 12:31:03,051 - INFO - OPENED LONG at 2063.5 | Stop loss: 2053.1825 | Take profit: 2094.4525 +2025-03-10 12:31:03,309 - INFO - CLOSED long at 2059.3 | PnL: -0.20% | $-1.16 +2025-03-10 12:31:03,310 - INFO - OPENED SHORT at 2059.3 | Stop loss: 2069.5965 | Take profit: 2028.4105000000002 +2025-03-10 12:31:03,931 - INFO - CLOSED short at 2064.79 | PnL: -0.27% | $-1.38 +2025-03-10 12:31:05,480 - INFO - OPENED LONG at 2066.01 | Stop loss: 2055.67995 | Take profit: 2097.00015 +2025-03-10 12:31:05,899 - INFO - CLOSED long at 2065.69 | PnL: -0.02% | $-0.43 +2025-03-10 12:31:06,458 - INFO - OPENED SHORT at 2070.0 | Stop loss: 2080.35 | Take profit: 2038.95 +2025-03-10 12:31:06,561 - INFO - CLOSED short at 2068.39 | PnL: 0.08% | $-0.08 +2025-03-10 12:31:06,561 - INFO - OPENED LONG at 2068.39 | Stop loss: 2058.04805 | Take profit: 2099.41585 +2025-03-10 12:31:08,964 - INFO - CLOSED long at 2074.0 | PnL: 0.27% | $0.63 +2025-03-10 12:31:08,965 - INFO - OPENED SHORT at 2074.0 | Stop loss: 2084.37 | Take profit: 2042.8899999999999 +2025-03-10 12:31:09,058 - INFO - CLOSED short at 2069.97 | PnL: 0.19% | $0.35 +2025-03-10 12:31:09,059 - INFO - OPENED LONG at 2069.97 | Stop loss: 2059.6201499999997 | Take profit: 2101.0195499999995 +2025-03-10 12:31:09,196 - INFO - CLOSED long at 2067.9 | PnL: -0.10% | $-0.75 +2025-03-10 12:31:09,197 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.2394999999997 | Take profit: 2036.8815 +2025-03-10 12:31:09,584 - INFO - CLOSED short at 2070.1 | PnL: -0.11% | $-0.76 +2025-03-10 12:31:10,461 - INFO - OPENED LONG at 2059.2 | Stop loss: 2048.904 | Take profit: 2090.0879999999997 +2025-03-10 12:31:11,444 - INFO - CLOSED long at 2066.59 | PnL: 0.36% | $0.95 +2025-03-10 12:31:13,224 - INFO - OPENED LONG at 2121.09 | Stop loss: 2110.48455 | Take profit: 2152.9063499999997 +2025-03-10 12:31:13,652 - INFO - STOP LOSS hit for long at 2110.48455 | PnL: -0.50% | $-2.22 +2025-03-10 12:31:14,331 - INFO - OPENED SHORT at 2108.06 | Stop loss: 2118.6002999999996 | Take profit: 2076.4391 +2025-03-10 12:31:14,470 - INFO - CLOSED short at 2090.0 | PnL: 0.86% | $2.74 +2025-03-10 12:31:14,471 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.55 | Take profit: 2121.35 +2025-03-10 12:31:14,806 - INFO - CLOSED long at 2100.69 | PnL: 0.51% | $1.53 +2025-03-10 12:31:14,807 - INFO - OPENED SHORT at 2100.69 | Stop loss: 2111.1934499999998 | Take profit: 2069.17965 +2025-03-10 12:31:15,243 - INFO - CLOSED short at 2098.39 | PnL: 0.11% | $0.04 +2025-03-10 12:31:15,668 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 28.6% in downtrends | Avg Win=$1.08, Avg Loss=$-1.00 +2025-03-10 12:31:15,669 - INFO - Episode 24: Reward=225.39, Balance=$94.71, Win Rate=50.0%, Trades=22, Episode PnL=$-8.08, Total PnL=$-512.74, Max Drawdown=11.5%, Pred Accuracy=99.9% +2025-03-10 12:31:15,703 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 12:31:16,430 - INFO - OPENED SHORT at 2066.35 | Stop loss: 2076.6817499999997 | Take profit: 2035.35475 +2025-03-10 12:31:17,161 - INFO - CLOSED short at 2057.52 | PnL: 0.43% | $1.31 +2025-03-10 12:31:17,162 - INFO - OPENED LONG at 2057.52 | Stop loss: 2047.2323999999999 | Take profit: 2088.3828 +2025-03-10 12:31:17,417 - INFO - CLOSED long at 2058.51 | PnL: 0.05% | $-0.21 +2025-03-10 12:31:17,418 - INFO - OPENED SHORT at 2058.51 | Stop loss: 2068.80255 | Take profit: 2027.63235 +2025-03-10 12:31:17,625 - INFO - CLOSED short at 2055.39 | PnL: 0.15% | $0.21 +2025-03-10 12:31:18,269 - INFO - OPENED SHORT at 2049.61 | Stop loss: 2059.85805 | Take profit: 2018.8658500000001 +2025-03-10 12:31:19,033 - INFO - CLOSED short at 2051.11 | PnL: -0.07% | $-0.70 +2025-03-10 12:31:19,034 - INFO - OPENED LONG at 2051.11 | Stop loss: 2040.85445 | Take profit: 2081.87665 +2025-03-10 12:31:19,370 - INFO - CLOSED long at 2058.39 | PnL: 0.35% | $1.03 +2025-03-10 12:31:19,951 - INFO - OPENED SHORT at 2060.0 | Stop loss: 2070.2999999999997 | Take profit: 2029.1 +2025-03-10 12:31:20,385 - INFO - CLOSED short at 2061.79 | PnL: -0.09% | $-0.76 +2025-03-10 12:31:21,439 - INFO - OPENED LONG at 2071.38 | Stop loss: 2061.0231 | Take profit: 2102.4507 +2025-03-10 12:31:22,481 - INFO - CLOSED long at 2066.19 | PnL: -0.25% | $-1.41 +2025-03-10 12:31:22,483 - INFO - OPENED SHORT at 2066.19 | Stop loss: 2076.5209499999996 | Take profit: 2035.19715 +2025-03-10 12:31:25,096 - INFO - CLOSED short at 2066.39 | PnL: -0.01% | $-0.44 +2025-03-10 12:31:25,097 - INFO - OPENED LONG at 2066.39 | Stop loss: 2056.0580499999996 | Take profit: 2097.3858499999997 +2025-03-10 12:31:25,955 - INFO - CLOSED long at 2066.24 | PnL: -0.01% | $-0.42 +2025-03-10 12:31:26,049 - INFO - OPENED SHORT at 2065.54 | Stop loss: 2075.8677 | Take profit: 2034.5569 +2025-03-10 12:31:27,390 - INFO - CLOSED short at 2063.0 | PnL: 0.12% | $0.09 +2025-03-10 12:31:27,578 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3965 | Take profit: 2091.6105 +2025-03-10 12:31:28,248 - INFO - CLOSED long at 2056.71 | PnL: -0.19% | $-1.16 +2025-03-10 12:31:29,511 - INFO - OPENED SHORT at 2070.01 | Stop loss: 2080.36005 | Take profit: 2038.9598500000002 +2025-03-10 12:31:29,653 - INFO - CLOSED short at 2070.0 | PnL: 0.00% | $-0.39 +2025-03-10 12:31:29,654 - INFO - OPENED LONG at 2070.0 | Stop loss: 2059.65 | Take profit: 2101.0499999999997 +2025-03-10 12:31:30,560 - INFO - CLOSED long at 2064.31 | PnL: -0.27% | $-1.46 +2025-03-10 12:31:30,561 - INFO - OPENED SHORT at 2064.31 | Stop loss: 2074.6315499999996 | Take profit: 2033.3453499999998 +2025-03-10 12:31:30,890 - INFO - CLOSED short at 2068.59 | PnL: -0.21% | $-1.18 +2025-03-10 12:31:30,891 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.24705 | Take profit: 2099.61885 +2025-03-10 12:31:31,559 - INFO - CLOSED long at 2069.78 | PnL: 0.06% | $-0.16 +2025-03-10 12:31:32,439 - INFO - OPENED SHORT at 2066.89 | Stop loss: 2077.2244499999997 | Take profit: 2035.88665 +2025-03-10 12:31:32,680 - INFO - CLOSED short at 2070.19 | PnL: -0.16% | $-0.98 +2025-03-10 12:31:32,724 - INFO - OPENED LONG at 2070.1 | Stop loss: 2059.7495 | Take profit: 2101.1514999999995 +2025-03-10 12:31:32,960 - INFO - CLOSED long at 2065.07 | PnL: -0.24% | $-1.28 +2025-03-10 12:31:32,961 - INFO - OPENED SHORT at 2065.07 | Stop loss: 2075.39535 | Take profit: 2034.0939500000002 +2025-03-10 12:31:33,192 - INFO - CLOSED short at 2066.1 | PnL: -0.05% | $-0.55 +2025-03-10 12:31:33,192 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.7695 | Take profit: 2097.0914999999995 +2025-03-10 12:31:33,758 - INFO - STOP LOSS hit for long at 2055.7695 | PnL: -0.50% | $-2.20 +2025-03-10 12:31:33,804 - INFO - OPENED SHORT at 2049.21 | Stop loss: 2059.45605 | Take profit: 2018.47185 +2025-03-10 12:31:34,142 - INFO - STOP LOSS hit for short at 2059.45605 | PnL: -0.50% | $-2.14 +2025-03-10 12:31:34,819 - INFO - OPENED LONG at 2062.54 | Stop loss: 2052.2273 | Take profit: 2093.4781 +2025-03-10 12:31:35,441 - INFO - CLOSED long at 2076.08 | PnL: 0.66% | $1.94 +2025-03-10 12:31:35,874 - INFO - OPENED LONG at 2137.59 | Stop loss: 2126.90205 | Take profit: 2169.65385 +2025-03-10 12:31:36,202 - INFO - CLOSED long at 2127.3 | PnL: -0.48% | $-2.07 +2025-03-10 12:31:36,574 - INFO - OPENED LONG at 2119.14 | Stop loss: 2108.5443 | Take profit: 2150.9271 +2025-03-10 12:31:36,617 - INFO - CLOSED long at 2119.07 | PnL: -0.00% | $-0.36 +2025-03-10 12:31:37,331 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.9575499999996 | Take profit: 2138.08735 +2025-03-10 12:31:37,427 - INFO - CLOSED long at 2103.33 | PnL: -0.15% | $-0.87 +2025-03-10 12:31:37,428 - INFO - OPENED SHORT at 2103.33 | Stop loss: 2113.8466499999995 | Take profit: 2071.78005 +2025-03-10 12:31:37,666 - INFO - CLOSED short at 2102.19 | PnL: 0.05% | $-0.16 +2025-03-10 12:31:37,667 - INFO - OPENED LONG at 2102.19 | Stop loss: 2091.67905 | Take profit: 2133.7228499999997 +2025-03-10 12:31:37,864 - INFO - CLOSED long at 2100.69 | PnL: -0.07% | $-0.59 +2025-03-10 12:31:37,865 - INFO - OPENED SHORT at 2100.69 | Stop loss: 2111.1934499999998 | Take profit: 2069.17965 +2025-03-10 12:31:38,352 - INFO - CLOSED short at 2095.29 | PnL: 0.26% | $0.53 +2025-03-10 12:31:38,353 - INFO - OPENED LONG at 2095.29 | Stop loss: 2084.81355 | Take profit: 2126.71935 +2025-03-10 12:31:38,741 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 20.0% in downtrends | Avg Win=$0.85, Avg Loss=$-0.93 +2025-03-10 12:31:38,742 - INFO - Episode 25: Reward=211.93, Balance=$85.62, Win Rate=37.0%, Trades=27, Episode PnL=$-6.99, Total PnL=$-527.12, Max Drawdown=14.7%, Pred Accuracy=99.9% +2025-03-10 12:31:38,779 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 12:31:39,367 - INFO - OPENED SHORT at 2065.64 | Stop loss: 2075.9682 | Take profit: 2034.6553999999999 +2025-03-10 12:31:40,801 - INFO - CLOSED short at 2051.66 | PnL: 0.68% | $2.31 +2025-03-10 12:31:41,701 - INFO - OPENED SHORT at 2045.79 | Stop loss: 2056.0189499999997 | Take profit: 2015.10315 +2025-03-10 12:31:42,033 - INFO - CLOSED short at 2051.11 | PnL: -0.26% | $-1.47 +2025-03-10 12:31:42,279 - INFO - OPENED SHORT at 2057.01 | Stop loss: 2067.29505 | Take profit: 2026.1548500000001 +2025-03-10 12:31:42,520 - INFO - CLOSED short at 2061.49 | PnL: -0.22% | $-1.28 +2025-03-10 12:31:43,106 - INFO - OPENED LONG at 2060.31 | Stop loss: 2050.00845 | Take profit: 2091.21465 +2025-03-10 12:31:43,644 - INFO - CLOSED long at 2068.11 | PnL: 0.38% | $1.11 +2025-03-10 12:31:43,645 - INFO - OPENED SHORT at 2068.11 | Stop loss: 2078.45055 | Take profit: 2037.08835 +2025-03-10 12:31:44,172 - INFO - CLOSED short at 2071.44 | PnL: -0.16% | $-1.05 +2025-03-10 12:31:44,173 - INFO - OPENED LONG at 2071.44 | Stop loss: 2061.0828 | Take profit: 2102.5116 +2025-03-10 12:31:44,648 - INFO - CLOSED long at 2070.79 | PnL: -0.03% | $-0.52 +2025-03-10 12:31:45,020 - INFO - OPENED SHORT at 2069.19 | Stop loss: 2079.53595 | Take profit: 2038.1521500000001 +2025-03-10 12:31:45,747 - INFO - CLOSED short at 2069.7 | PnL: -0.02% | $-0.49 +2025-03-10 12:31:45,845 - INFO - OPENED LONG at 2069.96 | Stop loss: 2059.6102 | Take profit: 2101.0094 +2025-03-10 12:31:46,130 - INFO - CLOSED long at 2072.7 | PnL: 0.13% | $0.13 +2025-03-10 12:31:46,131 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.0634999999997 | Take profit: 2041.6094999999998 +2025-03-10 12:31:46,618 - INFO - CLOSED short at 2067.0 | PnL: 0.28% | $0.69 +2025-03-10 12:31:47,351 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.9479499999998 | Take profit: 2040.5161500000002 +2025-03-10 12:31:47,808 - INFO - CLOSED short at 2066.4 | PnL: 0.25% | $0.60 +2025-03-10 12:31:47,809 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.068 | Take profit: 2097.3959999999997 +2025-03-10 12:31:48,302 - INFO - CLOSED long at 2064.99 | PnL: -0.07% | $-0.67 +2025-03-10 12:31:48,302 - INFO - OPENED SHORT at 2064.99 | Stop loss: 2075.3149499999995 | Take profit: 2034.0151499999997 +2025-03-10 12:31:48,769 - INFO - CLOSED short at 2064.96 | PnL: 0.00% | $-0.39 +2025-03-10 12:31:48,769 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.6352 | Take profit: 2095.9343999999996 +2025-03-10 12:31:49,108 - INFO - CLOSED long at 2062.71 | PnL: -0.11% | $-0.83 +2025-03-10 12:31:49,109 - INFO - OPENED SHORT at 2062.71 | Stop loss: 2073.02355 | Take profit: 2031.76935 +2025-03-10 12:31:51,264 - INFO - CLOSED short at 2059.8 | PnL: 0.14% | $0.16 +2025-03-10 12:31:51,265 - INFO - OPENED LONG at 2059.8 | Stop loss: 2049.501 | Take profit: 2090.697 +2025-03-10 12:31:51,417 - INFO - CLOSED long at 2061.6 | PnL: 0.09% | $-0.05 +2025-03-10 12:31:52,064 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.01845 | Take profit: 2034.7046500000001 +2025-03-10 12:31:52,259 - INFO - CLOSED short at 2078.01 | PnL: -0.60% | $-2.74 +2025-03-10 12:31:52,994 - INFO - OPENED LONG at 2069.87 | Stop loss: 2059.52065 | Take profit: 2100.9180499999998 +2025-03-10 12:31:53,636 - INFO - CLOSED long at 2065.29 | PnL: -0.22% | $-1.23 +2025-03-10 12:31:53,637 - INFO - OPENED SHORT at 2065.29 | Stop loss: 2075.6164499999995 | Take profit: 2034.31065 +2025-03-10 12:31:54,803 - INFO - CLOSED short at 2074.35 | PnL: -0.44% | $-2.03 +2025-03-10 12:31:57,489 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.5805 | Take profit: 2094.8585 +2025-03-10 12:31:59,014 - INFO - TAKE PROFIT hit for long at 2094.8585 | PnL: 1.50% | $5.17 +2025-03-10 12:31:59,824 - INFO - OPENED SHORT at 2121.09 | Stop loss: 2131.6954499999997 | Take profit: 2089.27365 +2025-03-10 12:32:00,250 - INFO - CLOSED short at 2115.28 | PnL: 0.27% | $0.68 +2025-03-10 12:32:00,251 - INFO - OPENED LONG at 2115.28 | Stop loss: 2104.7036000000003 | Take profit: 2147.0092 +2025-03-10 12:32:00,357 - INFO - CLOSED long at 2110.6 | PnL: -0.22% | $-1.26 +2025-03-10 12:32:02,588 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.35, Avg Loss=$-1.08 +2025-03-10 12:32:02,589 - INFO - Episode 26: Reward=222.79, Balance=$96.82, Win Rate=47.6%, Trades=21, Episode PnL=$-1.69, Total PnL=$-530.30, Max Drawdown=9.8%, Pred Accuracy=99.9% +2025-03-10 12:32:02,745 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 12:32:02,780 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 12:32:03,890 - INFO - OPENED SHORT at 2063.84 | Stop loss: 2074.1592 | Take profit: 2032.8824000000002 +2025-03-10 12:32:05,811 - INFO - CLOSED short at 2045.79 | PnL: 0.87% | $3.10 +2025-03-10 12:32:06,130 - INFO - OPENED LONG at 2051.11 | Stop loss: 2040.85445 | Take profit: 2081.87665 +2025-03-10 12:32:06,265 - INFO - CLOSED long at 2052.3 | PnL: 0.06% | $-0.17 +2025-03-10 12:32:06,504 - INFO - OPENED SHORT at 2060.13 | Stop loss: 2070.43065 | Take profit: 2029.2280500000002 +2025-03-10 12:32:06,886 - INFO - CLOSED short at 2063.01 | PnL: -0.14% | $-0.99 +2025-03-10 12:32:06,887 - INFO - OPENED LONG at 2063.01 | Stop loss: 2052.69495 | Take profit: 2093.9551500000002 +2025-03-10 12:32:07,910 - INFO - CLOSED long at 2069.6 | PnL: 0.32% | $0.89 +2025-03-10 12:32:08,136 - INFO - OPENED LONG at 2070.26 | Stop loss: 2059.9087000000004 | Take profit: 2101.3139 +2025-03-10 12:32:08,849 - INFO - CLOSED long at 2070.36 | PnL: 0.00% | $-0.39 +2025-03-10 12:32:08,850 - INFO - OPENED SHORT at 2070.36 | Stop loss: 2080.7118 | Take profit: 2039.3046000000002 +2025-03-10 12:32:09,222 - INFO - CLOSED short at 2069.01 | PnL: 0.07% | $-0.14 +2025-03-10 12:32:09,402 - INFO - OPENED LONG at 2066.29 | Stop loss: 2055.95855 | Take profit: 2097.28435 +2025-03-10 12:32:10,421 - INFO - CLOSED long at 2069.46 | PnL: 0.15% | $0.22 +2025-03-10 12:32:10,422 - INFO - OPENED SHORT at 2069.46 | Stop loss: 2079.8073 | Take profit: 2038.4181 +2025-03-10 12:32:11,898 - INFO - CLOSED short at 2070.04 | PnL: -0.03% | $-0.52 +2025-03-10 12:32:11,899 - INFO - OPENED LONG at 2070.04 | Stop loss: 2059.6898 | Take profit: 2101.0905999999995 +2025-03-10 12:32:12,474 - INFO - STOP LOSS hit for long at 2059.6898 | PnL: -0.50% | $-2.45 +2025-03-10 12:32:14,277 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0035 | Take profit: 2029.7894999999999 +2025-03-10 12:32:14,973 - INFO - CLOSED short at 2058.15 | PnL: 0.12% | $0.09 +2025-03-10 12:32:14,974 - INFO - OPENED LONG at 2058.15 | Stop loss: 2047.85925 | Take profit: 2089.02225 +2025-03-10 12:32:15,768 - INFO - CLOSED long at 2065.69 | PnL: 0.37% | $1.06 +2025-03-10 12:32:15,857 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3599999999997 | Take profit: 2040.92 +2025-03-10 12:32:16,088 - INFO - CLOSED short at 2071.04 | PnL: 0.05% | $-0.22 +2025-03-10 12:32:16,089 - INFO - OPENED LONG at 2071.04 | Stop loss: 2060.6848 | Take profit: 2102.1056 +2025-03-10 12:32:17,381 - INFO - CLOSED long at 2065.29 | PnL: -0.28% | $-1.52 +2025-03-10 12:32:17,427 - INFO - OPENED LONG at 2065.31 | Stop loss: 2054.9834499999997 | Take profit: 2096.2896499999997 +2025-03-10 12:32:18,160 - INFO - CLOSED long at 2068.19 | PnL: 0.14% | $0.16 +2025-03-10 12:32:18,162 - INFO - OPENED SHORT at 2068.19 | Stop loss: 2078.53095 | Take profit: 2037.16715 +2025-03-10 12:32:18,557 - INFO - CLOSED short at 2073.27 | PnL: -0.25% | $-1.37 +2025-03-10 12:32:18,557 - INFO - OPENED LONG at 2073.27 | Stop loss: 2062.90365 | Take profit: 2104.36905 +2025-03-10 12:32:19,828 - INFO - STOP LOSS hit for long at 2062.90365 | PnL: -0.50% | $-2.35 +2025-03-10 12:32:21,670 - INFO - OPENED SHORT at 2059.9 | Stop loss: 2070.1994999999997 | Take profit: 2029.0015 +2025-03-10 12:32:21,953 - INFO - STOP LOSS hit for short at 2070.1994999999997 | PnL: -0.50% | $-2.29 +2025-03-10 12:32:22,404 - INFO - OPENED SHORT at 2071.8 | Stop loss: 2082.159 | Take profit: 2040.7230000000002 +2025-03-10 12:32:22,604 - INFO - STOP LOSS hit for short at 2082.159 | PnL: -0.50% | $-2.23 +2025-03-10 12:32:23,459 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.1061 | Take profit: 2166.8017 +2025-03-10 12:32:23,637 - INFO - CLOSED long at 2128.69 | PnL: -0.29% | $-1.40 +2025-03-10 12:32:24,045 - INFO - OPENED SHORT at 2119.14 | Stop loss: 2129.7356999999997 | Take profit: 2087.3529 +2025-03-10 12:32:24,333 - INFO - CLOSED short at 2109.05 | PnL: 0.48% | $1.35 +2025-03-10 12:32:24,589 - INFO - OPENED LONG at 2112.99 | Stop loss: 2102.42505 | Take profit: 2144.6848499999996 +2025-03-10 12:32:24,829 - INFO - CLOSED long at 2108.71 | PnL: -0.20% | $-1.10 +2025-03-10 12:32:25,469 - INFO - OPENED SHORT at 2104.83 | Stop loss: 2115.3541499999997 | Take profit: 2073.25755 +2025-03-10 12:32:25,930 - INFO - CLOSED short at 2095.29 | PnL: 0.45% | $1.27 +2025-03-10 12:32:25,931 - INFO - OPENED LONG at 2095.29 | Stop loss: 2084.81355 | Take profit: 2126.71935 +2025-03-10 12:32:26,326 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 20.0% in downtrends | Avg Win=$1.02, Avg Loss=$-1.22 +2025-03-10 12:32:26,328 - INFO - Episode 27: Reward=224.77, Balance=$91.00, Win Rate=54.5%, Trades=22, Episode PnL=$-7.25, Total PnL=$-539.30, Max Drawdown=13.2%, Pred Accuracy=99.9% +2025-03-10 12:32:26,360 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 12:32:26,899 - INFO - OPENED LONG at 2060.94 | Stop loss: 2050.6353 | Take profit: 2091.8541 +2025-03-10 12:32:28,019 - INFO - CLOSED long at 2057.59 | PnL: -0.16% | $-1.05 +2025-03-10 12:32:28,020 - INFO - OPENED SHORT at 2057.59 | Stop loss: 2067.87795 | Take profit: 2026.7261500000002 +2025-03-10 12:32:28,390 - INFO - CLOSED short at 2055.39 | PnL: 0.11% | $0.03 +2025-03-10 12:32:28,435 - INFO - OPENED LONG at 2053.56 | Stop loss: 2043.2921999999999 | Take profit: 2084.3633999999997 +2025-03-10 12:32:28,736 - INFO - CLOSED long at 2050.71 | PnL: -0.14% | $-0.95 +2025-03-10 12:32:30,150 - INFO - OPENED LONG at 2058.39 | Stop loss: 2048.09805 | Take profit: 2089.26585 +2025-03-10 12:32:30,620 - INFO - CLOSED long at 2060.99 | PnL: 0.13% | $0.10 +2025-03-10 12:32:30,759 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.5805499999997 | Take profit: 2092.8183499999996 +2025-03-10 12:32:30,850 - INFO - CLOSED long at 2060.31 | PnL: -0.08% | $-0.69 +2025-03-10 12:32:31,300 - INFO - OPENED LONG at 2065.86 | Stop loss: 2055.5307000000003 | Take profit: 2096.8478999999998 +2025-03-10 12:32:32,498 - INFO - CLOSED long at 2070.28 | PnL: 0.21% | $0.44 +2025-03-10 12:32:33,507 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.24705 | Take profit: 2099.61885 +2025-03-10 12:32:33,824 - INFO - CLOSED long at 2071.36 | PnL: 0.13% | $0.13 +2025-03-10 12:32:33,825 - INFO - OPENED SHORT at 2071.36 | Stop loss: 2081.7167999999997 | Take profit: 2040.2896 +2025-03-10 12:32:34,521 - INFO - CLOSED short at 2067.79 | PnL: 0.17% | $0.28 +2025-03-10 12:32:35,581 - INFO - OPENED SHORT at 2067.11 | Stop loss: 2077.44555 | Take profit: 2036.10335 +2025-03-10 12:32:36,430 - INFO - CLOSED short at 2062.89 | PnL: 0.20% | $0.41 +2025-03-10 12:32:37,024 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.7596 | Take profit: 2095.0411999999997 +2025-03-10 12:32:37,277 - INFO - CLOSED long at 2061.6 | PnL: -0.12% | $-0.87 +2025-03-10 12:32:37,279 - INFO - OPENED SHORT at 2061.6 | Stop loss: 2071.908 | Take profit: 2030.676 +2025-03-10 12:32:37,580 - INFO - CLOSED short at 2061.8 | PnL: -0.01% | $-0.43 +2025-03-10 12:32:39,188 - INFO - OPENED LONG at 2058.15 | Stop loss: 2047.85925 | Take profit: 2089.02225 +2025-03-10 12:32:40,246 - INFO - CLOSED long at 2078.01 | PnL: 0.96% | $3.37 +2025-03-10 12:32:40,247 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.40005 | Take profit: 2046.8398500000003 +2025-03-10 12:32:40,493 - INFO - CLOSED short at 2071.6 | PnL: 0.31% | $0.84 +2025-03-10 12:32:40,494 - INFO - OPENED LONG at 2071.6 | Stop loss: 2061.2419999999997 | Take profit: 2102.6739999999995 +2025-03-10 12:32:41,588 - INFO - CLOSED long at 2065.5 | PnL: -0.29% | $-1.60 +2025-03-10 12:32:41,589 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.8275 | Take profit: 2034.5175 +2025-03-10 12:32:41,687 - INFO - CLOSED short at 2065.29 | PnL: 0.01% | $-0.36 +2025-03-10 12:32:42,344 - INFO - OPENED LONG at 2070.61 | Stop loss: 2060.25695 | Take profit: 2101.6691499999997 +2025-03-10 12:32:43,609 - INFO - CLOSED long at 2065.45 | PnL: -0.25% | $-1.39 +2025-03-10 12:32:43,609 - INFO - OPENED SHORT at 2065.45 | Stop loss: 2075.7772499999996 | Take profit: 2034.46825 +2025-03-10 12:32:44,052 - INFO - CLOSED short at 2065.8 | PnL: -0.02% | $-0.46 +2025-03-10 12:32:44,397 - INFO - OPENED SHORT at 2065.06 | Stop loss: 2075.3853 | Take profit: 2034.0840999999998 +2025-03-10 12:32:44,629 - INFO - CLOSED short at 2060.7 | PnL: 0.21% | $0.43 +2025-03-10 12:32:45,820 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.4003999999995 | Take profit: 2033.1188 +2025-03-10 12:32:46,538 - INFO - CLOSED short at 2072.99 | PnL: -0.43% | $-2.09 +2025-03-10 12:32:46,539 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6250499999996 | Take profit: 2104.0848499999997 +2025-03-10 12:32:46,752 - INFO - CLOSED long at 2076.08 | PnL: 0.15% | $0.19 +2025-03-10 12:32:46,752 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.4603999999995 | Take profit: 2044.9388 +2025-03-10 12:32:46,907 - INFO - STOP LOSS hit for short at 2086.4603999999995 | PnL: -0.50% | $-2.31 +2025-03-10 12:32:47,202 - INFO - OPENED SHORT at 2137.59 | Stop loss: 2148.2779499999997 | Take profit: 2105.52615 +2025-03-10 12:32:48,929 - INFO - TAKE PROFIT hit for short at 2105.52615 | PnL: 1.50% | $5.27 +2025-03-10 12:32:50,267 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.05, Avg Loss=$-1.11 +2025-03-10 12:32:50,268 - INFO - Episode 28: Reward=225.90, Balance=$99.30, Win Rate=54.5%, Trades=22, Episode PnL=$1.77, Total PnL=$-540.01, Max Drawdown=6.0%, Pred Accuracy=99.9% +2025-03-10 12:32:50,415 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 12:32:50,442 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 12:32:50,811 - INFO - OPENED LONG at 2055.31 | Stop loss: 2045.03345 | Take profit: 2086.1396499999996 +2025-03-10 12:32:51,115 - INFO - CLOSED long at 2064.51 | PnL: 0.45% | $1.39 +2025-03-10 12:32:51,115 - INFO - OPENED SHORT at 2064.51 | Stop loss: 2074.83255 | Take profit: 2033.5423500000002 +2025-03-10 12:32:51,723 - INFO - CLOSED short at 2057.59 | PnL: 0.34% | $0.95 +2025-03-10 12:32:51,724 - INFO - OPENED LONG at 2057.59 | Stop loss: 2047.3020500000002 | Take profit: 2088.45385 +2025-03-10 12:32:52,962 - INFO - CLOSED long at 2050.2 | PnL: -0.36% | $-1.88 +2025-03-10 12:32:53,671 - INFO - OPENED LONG at 2047.59 | Stop loss: 2037.35205 | Take profit: 2078.30385 +2025-03-10 12:32:53,872 - INFO - CLOSED long at 2049.89 | PnL: 0.11% | $0.05 +2025-03-10 12:32:53,872 - INFO - OPENED SHORT at 2049.89 | Stop loss: 2060.1394499999997 | Take profit: 2019.1416499999998 +2025-03-10 12:32:54,434 - INFO - STOP LOSS hit for short at 2060.1394499999997 | PnL: -0.50% | $-2.41 +2025-03-10 12:32:55,836 - INFO - OPENED LONG at 2068.65 | Stop loss: 2058.30675 | Take profit: 2099.67975 +2025-03-10 12:32:58,086 - INFO - CLOSED long at 2072.75 | PnL: 0.20% | $0.39 +2025-03-10 12:32:58,588 - INFO - OPENED LONG at 2069.35 | Stop loss: 2059.0032499999998 | Take profit: 2100.39025 +2025-03-10 12:32:59,548 - INFO - CLOSED long at 2070.4 | PnL: 0.05% | $-0.19 +2025-03-10 12:33:01,519 - INFO - OPENED LONG at 2060.65 | Stop loss: 2050.34675 | Take profit: 2091.55975 +2025-03-10 12:33:03,066 - INFO - CLOSED long at 2058.28 | PnL: -0.12% | $-0.85 +2025-03-10 12:33:03,458 - INFO - OPENED SHORT at 2061.66 | Stop loss: 2071.9682999999995 | Take profit: 2030.7350999999999 +2025-03-10 12:33:04,075 - INFO - CLOSED short at 2066.79 | PnL: -0.25% | $-1.36 +2025-03-10 12:33:04,075 - INFO - OPENED LONG at 2066.79 | Stop loss: 2056.45605 | Take profit: 2097.7918499999996 +2025-03-10 12:33:05,692 - INFO - CLOSED long at 2065.3 | PnL: -0.07% | $-0.66 +2025-03-10 12:33:05,693 - INFO - OPENED SHORT at 2065.3 | Stop loss: 2075.6265 | Take profit: 2034.3205 +2025-03-10 12:33:07,150 - INFO - CLOSED short at 2073.99 | PnL: -0.42% | $-1.99 +2025-03-10 12:33:07,151 - INFO - OPENED LONG at 2073.99 | Stop loss: 2063.62005 | Take profit: 2105.0998499999996 +2025-03-10 12:33:08,006 - INFO - CLOSED long at 2070.19 | PnL: -0.18% | $-1.06 +2025-03-10 12:33:09,191 - INFO - OPENED SHORT at 2049.21 | Stop loss: 2059.45605 | Take profit: 2018.47185 +2025-03-10 12:33:09,529 - INFO - STOP LOSS hit for short at 2059.45605 | PnL: -0.50% | $-2.22 +2025-03-10 12:33:09,575 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.2194999999997 | Take profit: 2032.9415000000001 +2025-03-10 12:33:10,481 - INFO - CLOSED short at 2069.81 | PnL: -0.29% | $-1.39 +2025-03-10 12:33:13,019 - INFO - OPENED SHORT at 2090.0 | Stop loss: 2100.45 | Take profit: 2058.65 +2025-03-10 12:33:13,170 - INFO - STOP LOSS hit for short at 2100.45 | PnL: -0.50% | $-2.13 +2025-03-10 12:33:13,265 - INFO - OPENED LONG at 2099.25 | Stop loss: 2088.75375 | Take profit: 2130.73875 +2025-03-10 12:33:13,309 - INFO - CLOSED long at 2098.9 | PnL: -0.02% | $-0.40 +2025-03-10 12:33:13,310 - INFO - OPENED SHORT at 2098.9 | Stop loss: 2109.3945 | Take profit: 2067.4165000000003 +2025-03-10 12:33:14,265 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 16.7% in downtrends | Avg Win=$0.69, Avg Loss=$-1.38 +2025-03-10 12:33:14,266 - INFO - Episode 29: Reward=221.80, Balance=$86.23, Win Rate=31.2%, Trades=16, Episode PnL=$-11.75, Total PnL=$-553.77, Max Drawdown=13.8%, Pred Accuracy=99.9% +2025-03-10 12:33:14,300 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 12:33:15,007 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.3349999999996 | Take profit: 2035.995 +2025-03-10 12:33:16,712 - INFO - CLOSED short at 2049.49 | PnL: 0.85% | $2.99 +2025-03-10 12:33:17,855 - INFO - OPENED SHORT at 2051.89 | Stop loss: 2062.1494499999994 | Take profit: 2021.1116499999998 +2025-03-10 12:33:18,313 - INFO - STOP LOSS hit for short at 2062.1494499999994 | PnL: -0.50% | $-2.47 +2025-03-10 12:33:20,029 - INFO - OPENED LONG at 2073.73 | Stop loss: 2063.36135 | Take profit: 2104.8359499999997 +2025-03-10 12:33:20,131 - INFO - CLOSED long at 2072.91 | PnL: -0.04% | $-0.56 +2025-03-10 12:33:20,335 - INFO - OPENED LONG at 2069.37 | Stop loss: 2059.02315 | Take profit: 2100.4105499999996 +2025-03-10 12:33:20,599 - INFO - CLOSED long at 2068.02 | PnL: -0.07% | $-0.66 +2025-03-10 12:33:20,600 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.3601 | Take profit: 2036.9996999999998 +2025-03-10 12:33:20,889 - INFO - CLOSED short at 2069.19 | PnL: -0.06% | $-0.62 +2025-03-10 12:33:20,889 - INFO - OPENED LONG at 2069.19 | Stop loss: 2058.84405 | Take profit: 2100.2278499999998 +2025-03-10 12:33:21,193 - INFO - CLOSED long at 2065.99 | PnL: -0.15% | $-1.01 +2025-03-10 12:33:21,193 - INFO - OPENED SHORT at 2065.99 | Stop loss: 2076.3199499999996 | Take profit: 2035.0001499999998 +2025-03-10 12:33:21,983 - INFO - CLOSED short at 2073.11 | PnL: -0.34% | $-1.74 +2025-03-10 12:33:22,233 - INFO - OPENED SHORT at 2071.92 | Stop loss: 2082.2796 | Take profit: 2040.8412 +2025-03-10 12:33:22,665 - INFO - CLOSED short at 2066.8 | PnL: 0.25% | $0.56 +2025-03-10 12:33:23,743 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.4304999999995 | Take profit: 2035.1084999999998 +2025-03-10 12:33:23,883 - INFO - CLOSED short at 2064.47 | PnL: 0.08% | $-0.08 +2025-03-10 12:33:26,473 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.5805499999997 | Take profit: 2092.8183499999996 +2025-03-10 12:33:26,767 - INFO - CLOSED long at 2059.02 | PnL: -0.14% | $-0.92 +2025-03-10 12:33:26,768 - INFO - OPENED SHORT at 2059.02 | Stop loss: 2069.3151 | Take profit: 2028.1347 +2025-03-10 12:33:27,213 - INFO - CLOSED short at 2054.83 | PnL: 0.20% | $0.40 +2025-03-10 12:33:27,213 - INFO - OPENED LONG at 2054.83 | Stop loss: 2044.55585 | Take profit: 2085.6524499999996 +2025-03-10 12:33:28,594 - INFO - CLOSED long at 2075.01 | PnL: 0.98% | $3.38 +2025-03-10 12:33:29,252 - INFO - OPENED SHORT at 2067.44 | Stop loss: 2077.7772 | Take profit: 2036.4284 +2025-03-10 12:33:29,657 - INFO - CLOSED short at 2065.7 | PnL: 0.08% | $-0.06 +2025-03-10 12:33:30,354 - INFO - OPENED LONG at 2066.8 | Stop loss: 2056.4660000000003 | Take profit: 2097.802 +2025-03-10 12:33:31,637 - INFO - CLOSED long at 2076.9 | PnL: 0.49% | $1.54 +2025-03-10 12:33:31,990 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.2394999999997 | Take profit: 2036.8815 +2025-03-10 12:33:33,450 - INFO - CLOSED short at 2056.77 | PnL: 0.54% | $1.77 +2025-03-10 12:33:33,451 - INFO - OPENED LONG at 2056.77 | Stop loss: 2046.48615 | Take profit: 2087.62155 +2025-03-10 12:33:33,703 - INFO - CLOSED long at 2058.3 | PnL: 0.07% | $-0.11 +2025-03-10 12:33:34,351 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.4003999999995 | Take profit: 2033.1188 +2025-03-10 12:33:34,701 - INFO - CLOSED short at 2070.31 | PnL: -0.30% | $-1.65 +2025-03-10 12:33:35,055 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6250499999996 | Take profit: 2104.0848499999997 +2025-03-10 12:33:35,360 - INFO - CLOSED long at 2085.56 | PnL: 0.61% | $2.04 +2025-03-10 12:33:35,740 - INFO - OPENED SHORT at 2137.59 | Stop loss: 2148.2779499999997 | Take profit: 2105.52615 +2025-03-10 12:33:35,884 - INFO - CLOSED short at 2142.68 | PnL: -0.24% | $-1.39 +2025-03-10 12:33:37,337 - INFO - OPENED SHORT at 2108.06 | Stop loss: 2118.6002999999996 | Take profit: 2076.4391 +2025-03-10 12:33:38,471 - INFO - CLOSED short at 2093.33 | PnL: 0.70% | $2.43 +2025-03-10 12:33:38,472 - INFO - OPENED LONG at 2093.33 | Stop loss: 2082.86335 | Take profit: 2124.72995 +2025-03-10 12:33:38,689 - INFO - CLOSED long at 2094.08 | PnL: 0.04% | $-0.27 +2025-03-10 12:33:38,689 - INFO - OPENED SHORT at 2094.08 | Stop loss: 2104.5503999999996 | Take profit: 2062.6688 +2025-03-10 12:33:38,798 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 60.0% in downtrends | Avg Win=$1.89, Avg Loss=$-0.89 +2025-03-10 12:33:38,800 - INFO - Episode 30: Reward=226.15, Balance=$103.58, Win Rate=57.1%, Trades=21, Episode PnL=$2.46, Total PnL=$-550.20, Max Drawdown=6.9%, Pred Accuracy=99.8% +2025-03-10 12:33:38,962 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 12:33:39,092 - INFO - Model saved to models/trading_agent_episode_30.pt +2025-03-10 12:33:39,115 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 12:33:39,580 - INFO - OPENED SHORT at 2059.23 | Stop loss: 2069.5261499999997 | Take profit: 2028.34155 +2025-03-10 12:33:39,742 - INFO - CLOSED short at 2062.5 | PnL: -0.16% | $-1.04 +2025-03-10 12:33:39,742 - INFO - OPENED LONG at 2062.5 | Stop loss: 2052.1875 | Take profit: 2093.4375 +2025-03-10 12:33:40,210 - INFO - CLOSED long at 2062.75 | PnL: 0.01% | $-0.35 +2025-03-10 12:33:40,367 - INFO - OPENED LONG at 2062.5 | Stop loss: 2052.1875 | Take profit: 2093.4375 +2025-03-10 12:33:41,122 - INFO - CLOSED long at 2056.4 | PnL: -0.30% | $-1.56 +2025-03-10 12:33:41,124 - INFO - OPENED SHORT at 2056.4 | Stop loss: 2066.682 | Take profit: 2025.554 +2025-03-10 12:33:42,410 - INFO - CLOSED short at 2050.0 | PnL: 0.31% | $0.82 +2025-03-10 12:33:42,411 - INFO - OPENED LONG at 2050.0 | Stop loss: 2039.75 | Take profit: 2080.75 +2025-03-10 12:33:43,128 - INFO - CLOSED long at 2064.61 | PnL: 0.71% | $2.40 +2025-03-10 12:33:43,129 - INFO - OPENED SHORT at 2064.61 | Stop loss: 2074.93305 | Take profit: 2033.64085 +2025-03-10 12:33:44,166 - INFO - CLOSED short at 2068.11 | PnL: -0.17% | $-1.08 +2025-03-10 12:33:44,167 - INFO - OPENED LONG at 2068.11 | Stop loss: 2057.7694500000002 | Take profit: 2099.13165 +2025-03-10 12:33:44,367 - INFO - CLOSED long at 2070.99 | PnL: 0.14% | $0.16 +2025-03-10 12:33:44,661 - INFO - OPENED SHORT at 2070.26 | Stop loss: 2080.6113 | Take profit: 2039.2061 +2025-03-10 12:33:44,705 - INFO - CLOSED short at 2071.44 | PnL: -0.06% | $-0.62 +2025-03-10 12:33:44,706 - INFO - OPENED LONG at 2071.44 | Stop loss: 2061.0828 | Take profit: 2102.5116 +2025-03-10 12:33:45,295 - INFO - CLOSED long at 2068.02 | PnL: -0.17% | $-1.05 +2025-03-10 12:33:45,504 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.0534999999995 | Take profit: 2039.6394999999998 +2025-03-10 12:33:46,460 - INFO - CLOSED short at 2069.96 | PnL: 0.04% | $-0.25 +2025-03-10 12:33:47,013 - INFO - OPENED SHORT at 2071.11 | Stop loss: 2081.46555 | Take profit: 2040.0433500000001 +2025-03-10 12:33:47,360 - INFO - CLOSED short at 2066.8 | PnL: 0.21% | $0.42 +2025-03-10 12:33:49,019 - INFO - OPENED LONG at 2066.15 | Stop loss: 2055.81925 | Take profit: 2097.14225 +2025-03-10 12:33:49,719 - INFO - CLOSED long at 2064.08 | PnL: -0.10% | $-0.78 +2025-03-10 12:33:53,195 - INFO - OPENED LONG at 2070.01 | Stop loss: 2059.65995 | Take profit: 2101.06015 +2025-03-10 12:33:53,240 - INFO - CLOSED long at 2071.6 | PnL: 0.08% | $-0.09 +2025-03-10 12:33:54,831 - INFO - OPENED SHORT at 2070.9 | Stop loss: 2081.2545 | Take profit: 2039.8365000000001 +2025-03-10 12:33:56,776 - INFO - CLOSED short at 2065.7 | PnL: 0.25% | $0.59 +2025-03-10 12:33:56,966 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.07305 | Take profit: 2094.3408499999996 +2025-03-10 12:33:57,062 - INFO - CLOSED long at 2063.98 | PnL: 0.03% | $-0.28 +2025-03-10 12:33:59,868 - INFO - OPENED LONG at 2141.3 | Stop loss: 2130.5935 | Take profit: 2173.4195 +2025-03-10 12:34:00,050 - INFO - STOP LOSS hit for long at 2130.5935 | PnL: -0.50% | $-2.33 +2025-03-10 12:34:01,127 - INFO - OPENED LONG at 2110.9 | Stop loss: 2100.3455 | Take profit: 2142.5634999999997 +2025-03-10 12:34:01,436 - INFO - STOP LOSS hit for long at 2100.3455 | PnL: -0.50% | $-2.28 +2025-03-10 12:34:01,531 - INFO - OPENED LONG at 2098.1 | Stop loss: 2087.6095 | Take profit: 2129.5714999999996 +2025-03-10 12:34:02,030 - INFO - CLOSED long at 2104.68 | PnL: 0.31% | $0.79 +2025-03-10 12:34:02,219 - INFO - OPENED LONG at 2098.39 | Stop loss: 2087.89805 | Take profit: 2129.8658499999997 +2025-03-10 12:34:02,661 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 16.7% in downtrends | Avg Win=$0.86, Avg Loss=$-0.98 +2025-03-10 12:34:02,662 - INFO - Episode 31: Reward=221.69, Balance=$93.46, Win Rate=55.6%, Trades=18, Episode PnL=$-5.46, Total PnL=$-556.73, Max Drawdown=7.3%, Pred Accuracy=99.9% +2025-03-10 12:34:02,696 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 12:34:05,194 - INFO - OPENED SHORT at 2050.71 | Stop loss: 2060.96355 | Take profit: 2019.94935 +2025-03-10 12:34:05,918 - INFO - CLOSED short at 2045.99 | PnL: 0.23% | $0.52 +2025-03-10 12:34:07,572 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.1794499999996 | Take profit: 2027.02165 +2025-03-10 12:34:07,914 - INFO - STOP LOSS hit for short at 2068.1794499999996 | PnL: -0.50% | $-2.41 +2025-03-10 12:34:08,152 - INFO - OPENED SHORT at 2070.99 | Stop loss: 2081.3449499999997 | Take profit: 2039.9251499999998 +2025-03-10 12:34:09,606 - INFO - CLOSED short at 2066.39 | PnL: 0.22% | $0.48 +2025-03-10 12:34:09,701 - INFO - OPENED LONG at 2066.19 | Stop loss: 2055.85905 | Take profit: 2097.1828499999997 +2025-03-10 12:34:10,427 - INFO - CLOSED long at 2073.11 | PnL: 0.33% | $0.93 +2025-03-10 12:34:11,716 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.0534999999995 | Take profit: 2039.6394999999998 +2025-03-10 12:34:14,907 - INFO - CLOSED short at 2059.16 | PnL: 0.56% | $1.82 +2025-03-10 12:34:14,908 - INFO - OPENED LONG at 2059.16 | Stop loss: 2048.8642 | Take profit: 2090.0473999999995 +2025-03-10 12:34:15,099 - INFO - CLOSED long at 2059.46 | PnL: 0.01% | $-0.35 +2025-03-10 12:34:15,781 - INFO - OPENED SHORT at 2062.69 | Stop loss: 2073.0034499999997 | Take profit: 2031.74965 +2025-03-10 12:34:16,483 - INFO - STOP LOSS hit for short at 2073.0034499999997 | PnL: -0.50% | $-2.42 +2025-03-10 12:34:16,573 - INFO - OPENED LONG at 2075.01 | Stop loss: 2064.63495 | Take profit: 2106.13515 +2025-03-10 12:34:17,061 - INFO - CLOSED long at 2069.03 | PnL: -0.29% | $-1.53 +2025-03-10 12:34:17,062 - INFO - OPENED SHORT at 2069.03 | Stop loss: 2079.37515 | Take profit: 2037.9945500000001 +2025-03-10 12:34:17,472 - INFO - CLOSED short at 2065.7 | PnL: 0.16% | $0.24 +2025-03-10 12:34:17,472 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.3714999999997 | Take profit: 2096.6854999999996 +2025-03-10 12:34:19,215 - INFO - CLOSED long at 2075.32 | PnL: 0.47% | $1.42 +2025-03-10 12:34:19,215 - INFO - OPENED SHORT at 2075.32 | Stop loss: 2085.6965999999998 | Take profit: 2044.1902000000002 +2025-03-10 12:34:20,095 - INFO - CLOSED short at 2067.19 | PnL: 0.39% | $1.15 +2025-03-10 12:34:20,296 - INFO - OPENED SHORT at 2065.07 | Stop loss: 2075.39535 | Take profit: 2034.0939500000002 +2025-03-10 12:34:20,508 - INFO - CLOSED short at 2063.98 | PnL: 0.05% | $-0.19 +2025-03-10 12:34:20,508 - INFO - OPENED LONG at 2063.98 | Stop loss: 2053.6601 | Take profit: 2094.9397 +2025-03-10 12:34:20,809 - INFO - CLOSED long at 2063.01 | PnL: -0.05% | $-0.59 +2025-03-10 12:34:21,780 - INFO - OPENED SHORT at 2065.12 | Stop loss: 2075.4455999999996 | Take profit: 2034.1431999999998 +2025-03-10 12:34:22,015 - INFO - CLOSED short at 2061.21 | PnL: 0.19% | $0.35 +2025-03-10 12:34:22,016 - INFO - OPENED LONG at 2061.21 | Stop loss: 2050.90395 | Take profit: 2092.12815 +2025-03-10 12:34:23,037 - INFO - TAKE PROFIT hit for long at 2092.12815 | PnL: 1.50% | $5.57 +2025-03-10 12:34:23,378 - INFO - OPENED LONG at 2141.3 | Stop loss: 2130.5935 | Take profit: 2173.4195 +2025-03-10 12:34:23,578 - INFO - STOP LOSS hit for long at 2130.5935 | PnL: -0.50% | $-2.52 +2025-03-10 12:34:23,865 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3303499999997 | Take profit: 2151.7289499999997 +2025-03-10 12:34:24,006 - INFO - CLOSED long at 2119.14 | PnL: -0.04% | $-0.56 +2025-03-10 12:34:24,007 - INFO - OPENED SHORT at 2119.14 | Stop loss: 2129.7356999999997 | Take profit: 2087.3529 +2025-03-10 12:34:25,002 - INFO - CLOSED short at 2103.33 | PnL: 0.75% | $2.63 +2025-03-10 12:34:26,301 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.51, Avg Loss=$-1.32 +2025-03-10 12:34:26,302 - INFO - Episode 32: Reward=233.31, Balance=$104.54, Win Rate=66.7%, Trades=18, Episode PnL=$2.99, Total PnL=$-552.19, Max Drawdown=2.4%, Pred Accuracy=99.9% +2025-03-10 12:34:26,444 - INFO - Model saved to models/trading_agent_best_reward.pt +2025-03-10 12:34:26,576 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 12:34:26,598 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 12:34:28,343 - INFO - OPENED SHORT at 2058.51 | Stop loss: 2068.80255 | Take profit: 2027.63235 +2025-03-10 12:34:29,287 - INFO - CLOSED short at 2048.48 | PnL: 0.49% | $1.55 +2025-03-10 12:34:29,288 - INFO - OPENED LONG at 2048.48 | Stop loss: 2038.2376 | Take profit: 2079.2072 +2025-03-10 12:34:30,155 - INFO - CLOSED long at 2055.69 | PnL: 0.35% | $1.02 +2025-03-10 12:34:31,266 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.40055 | Take profit: 2027.23835 +2025-03-10 12:34:31,522 - INFO - STOP LOSS hit for short at 2068.40055 | PnL: -0.50% | $-2.46 +2025-03-10 12:34:31,912 - INFO - OPENED SHORT at 2068.99 | Stop loss: 2079.3349499999995 | Take profit: 2037.9551499999998 +2025-03-10 12:34:32,293 - INFO - CLOSED short at 2072.33 | PnL: -0.16% | $-1.05 +2025-03-10 12:34:32,293 - INFO - OPENED LONG at 2072.33 | Stop loss: 2061.96835 | Take profit: 2103.41495 +2025-03-10 12:34:32,397 - INFO - CLOSED long at 2071.41 | PnL: -0.04% | $-0.57 +2025-03-10 12:34:32,398 - INFO - OPENED SHORT at 2071.41 | Stop loss: 2081.7670499999995 | Take profit: 2040.3388499999999 +2025-03-10 12:34:33,109 - INFO - CLOSED short at 2067.51 | PnL: 0.19% | $0.35 +2025-03-10 12:34:33,110 - INFO - OPENED LONG at 2067.51 | Stop loss: 2057.17245 | Take profit: 2098.52265 +2025-03-10 12:34:33,921 - INFO - CLOSED long at 2071.36 | PnL: 0.19% | $0.34 +2025-03-10 12:34:34,849 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.5863 | Take profit: 2034.2811000000002 +2025-03-10 12:34:40,114 - INFO - STOP LOSS hit for short at 2075.5863 | PnL: -0.50% | $-2.38 +2025-03-10 12:34:40,445 - INFO - OPENED LONG at 2070.0 | Stop loss: 2059.65 | Take profit: 2101.0499999999997 +2025-03-10 12:34:44,014 - INFO - CLOSED long at 2066.1 | PnL: -0.19% | $-1.12 +2025-03-10 12:34:44,693 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.2525 | Take profit: 2080.2425 +2025-03-10 12:34:46,379 - INFO - TAKE PROFIT hit for long at 2080.2425 | PnL: 1.50% | $5.36 +2025-03-10 12:34:46,520 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.0465 | Take profit: 2162.6604999999995 +2025-03-10 12:34:47,272 - INFO - STOP LOSS hit for long at 2120.0465 | PnL: -0.50% | $-2.42 +2025-03-10 12:34:47,579 - INFO - OPENED LONG at 2115.28 | Stop loss: 2104.7036000000003 | Take profit: 2147.0092 +2025-03-10 12:34:48,378 - INFO - STOP LOSS hit for long at 2104.7036000000003 | PnL: -0.50% | $-2.37 +2025-03-10 12:34:48,472 - INFO - OPENED SHORT at 2090.0 | Stop loss: 2100.45 | Take profit: 2058.65 +2025-03-10 12:34:48,635 - INFO - STOP LOSS hit for short at 2100.45 | PnL: -0.50% | $-2.31 +2025-03-10 12:34:49,900 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 33.3% in downtrends | Avg Win=$1.72, Avg Loss=$-1.83 +2025-03-10 12:34:49,901 - INFO - Episode 33: Reward=229.87, Balance=$93.94, Win Rate=38.5%, Trades=13, Episode PnL=$-6.34, Total PnL=$-558.25, Max Drawdown=8.4%, Pred Accuracy=99.9% +2025-03-10 12:34:49,945 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 12:34:51,715 - INFO - OPENED SHORT at 2056.9 | Stop loss: 2067.1845 | Take profit: 2026.0465000000002 +2025-03-10 12:34:53,095 - INFO - CLOSED short at 2047.4 | PnL: 0.46% | $1.45 +2025-03-10 12:34:55,465 - INFO - OPENED SHORT at 2068.29 | Stop loss: 2078.63145 | Take profit: 2037.2656499999998 +2025-03-10 12:34:55,511 - INFO - CLOSED short at 2067.89 | PnL: 0.02% | $-0.33 +2025-03-10 12:34:55,512 - INFO - OPENED LONG at 2067.89 | Stop loss: 2057.55055 | Take profit: 2098.9083499999997 +2025-03-10 12:34:56,511 - INFO - CLOSED long at 2070.79 | PnL: 0.14% | $0.16 +2025-03-10 12:34:56,511 - INFO - OPENED SHORT at 2070.79 | Stop loss: 2081.1439499999997 | Take profit: 2039.72815 +2025-03-10 12:34:59,224 - INFO - CLOSED short at 2067.86 | PnL: 0.14% | $0.17 +2025-03-10 12:34:59,489 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.0534999999995 | Take profit: 2039.6394999999998 +2025-03-10 12:34:59,689 - INFO - CLOSED short at 2068.69 | PnL: 0.10% | $-0.01 +2025-03-10 12:35:00,491 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.5863 | Take profit: 2034.2811000000002 +2025-03-10 12:35:00,623 - INFO - CLOSED short at 2061.78 | PnL: 0.17% | $0.28 +2025-03-10 12:35:00,623 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.4711 | Take profit: 2092.7067 +2025-03-10 12:35:00,858 - INFO - CLOSED long at 2066.24 | PnL: 0.22% | $0.47 +2025-03-10 12:35:00,859 - INFO - OPENED SHORT at 2066.24 | Stop loss: 2076.5711999999994 | Take profit: 2035.2463999999998 +2025-03-10 12:35:02,123 - INFO - CLOSED short at 2063.39 | PnL: 0.14% | $0.16 +2025-03-10 12:35:02,171 - INFO - OPENED LONG at 2064.79 | Stop loss: 2054.46605 | Take profit: 2095.76185 +2025-03-10 12:35:02,607 - INFO - CLOSED long at 2061.09 | PnL: -0.18% | $-1.14 +2025-03-10 12:35:03,180 - INFO - OPENED LONG at 2055.6 | Stop loss: 2045.322 | Take profit: 2086.4339999999997 +2025-03-10 12:35:05,522 - INFO - CLOSED long at 2065.66 | PnL: 0.49% | $1.58 +2025-03-10 12:35:07,225 - INFO - OPENED LONG at 2075.29 | Stop loss: 2064.9135499999998 | Take profit: 2106.4193499999997 +2025-03-10 12:35:07,322 - INFO - CLOSED long at 2075.61 | PnL: 0.02% | $-0.35 +2025-03-10 12:35:07,323 - INFO - OPENED SHORT at 2075.61 | Stop loss: 2085.98805 | Take profit: 2044.47585 +2025-03-10 12:35:08,402 - INFO - CLOSED short at 2062.34 | PnL: 0.64% | $2.21 +2025-03-10 12:35:09,126 - INFO - OPENED SHORT at 2049.21 | Stop loss: 2059.45605 | Take profit: 2018.47185 +2025-03-10 12:35:09,489 - INFO - STOP LOSS hit for short at 2059.45605 | PnL: -0.50% | $-2.51 +2025-03-10 12:35:11,200 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.8423 | Take profit: 2171.6330999999996 +2025-03-10 12:35:11,667 - INFO - STOP LOSS hit for long at 2128.8423 | PnL: -0.50% | $-2.45 +2025-03-10 12:35:12,060 - INFO - OPENED LONG at 2118.52 | Stop loss: 2107.9274 | Take profit: 2150.2978 +2025-03-10 12:35:12,263 - INFO - STOP LOSS hit for long at 2107.9274 | PnL: -0.50% | $-2.39 +2025-03-10 12:35:13,215 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0323500000004 | Take profit: 2131.02295 +2025-03-10 12:35:13,424 - INFO - CLOSED long at 2099.25 | PnL: -0.01% | $-0.44 +2025-03-10 12:35:13,425 - INFO - OPENED SHORT at 2099.25 | Stop loss: 2109.7462499999997 | Take profit: 2067.76125 +2025-03-10 12:35:14,441 - INFO - CLOSED short at 2088.35 | PnL: 0.52% | $1.62 +2025-03-10 12:35:14,487 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 20.0% in downtrends | Avg Win=$0.90, Avg Loss=$-1.20 +2025-03-10 12:35:14,489 - INFO - Episode 34: Reward=232.41, Balance=$98.47, Win Rate=70.6%, Trades=17, Episode PnL=$-1.33, Total PnL=$-559.78, Max Drawdown=7.0%, Pred Accuracy=99.9% +2025-03-10 12:35:14,524 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 12:35:15,941 - INFO - OPENED LONG at 2059.4 | Stop loss: 2049.103 | Take profit: 2090.2909999999997 +2025-03-10 12:35:16,960 - INFO - CLOSED long at 2050.44 | PnL: -0.44% | $-2.14 +2025-03-10 12:35:16,961 - INFO - OPENED SHORT at 2050.44 | Stop loss: 2060.6922 | Take profit: 2019.6834000000001 +2025-03-10 12:35:17,107 - INFO - CLOSED short at 2049.6 | PnL: 0.04% | $-0.23 +2025-03-10 12:35:17,108 - INFO - OPENED LONG at 2049.6 | Stop loss: 2039.3519999999999 | Take profit: 2080.3439999999996 +2025-03-10 12:35:17,161 - INFO - CLOSED long at 2051.99 | PnL: 0.12% | $0.06 +2025-03-10 12:35:17,162 - INFO - OPENED SHORT at 2051.99 | Stop loss: 2062.2499499999994 | Take profit: 2021.2101499999997 +2025-03-10 12:35:18,479 - INFO - CLOSED short at 2058.39 | PnL: -0.31% | $-1.61 +2025-03-10 12:35:20,332 - INFO - OPENED SHORT at 2075.1 | Stop loss: 2085.4754999999996 | Take profit: 2043.9734999999998 +2025-03-10 12:35:21,553 - INFO - CLOSED short at 2066.18 | PnL: 0.43% | $1.27 +2025-03-10 12:35:21,554 - INFO - OPENED LONG at 2066.18 | Stop loss: 2055.8491 | Take profit: 2097.1726999999996 +2025-03-10 12:35:22,202 - INFO - CLOSED long at 2072.15 | PnL: 0.29% | $0.74 +2025-03-10 12:35:22,991 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.22945 | Take profit: 2036.8716499999998 +2025-03-10 12:35:23,084 - INFO - CLOSED short at 2068.8 | PnL: -0.04% | $-0.57 +2025-03-10 12:35:23,855 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.7695 | Take profit: 2097.0914999999995 +2025-03-10 12:35:23,950 - INFO - CLOSED long at 2066.39 | PnL: 0.01% | $-0.34 +2025-03-10 12:35:23,950 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.7219499999997 | Take profit: 2035.3941499999999 +2025-03-10 12:35:26,166 - INFO - CLOSED short at 2063.39 | PnL: 0.15% | $0.18 +2025-03-10 12:35:26,356 - INFO - OPENED SHORT at 2063.0 | Stop loss: 2073.3149999999996 | Take profit: 2032.055 +2025-03-10 12:35:26,403 - INFO - CLOSED short at 2062.6 | PnL: 0.02% | $-0.31 +2025-03-10 12:35:26,543 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0035 | Take profit: 2029.7894999999999 +2025-03-10 12:35:27,101 - INFO - CLOSED short at 2054.89 | PnL: 0.28% | $0.71 +2025-03-10 12:35:27,102 - INFO - OPENED LONG at 2054.89 | Stop loss: 2044.6155499999998 | Take profit: 2085.7133499999995 +2025-03-10 12:35:27,246 - INFO - CLOSED long at 2058.15 | PnL: 0.16% | $0.23 +2025-03-10 12:35:27,246 - INFO - OPENED SHORT at 2058.15 | Stop loss: 2068.4407499999998 | Take profit: 2027.27775 +2025-03-10 12:35:27,447 - INFO - CLOSED short at 2061.6 | PnL: -0.17% | $-1.05 +2025-03-10 12:35:27,448 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.292 | Take profit: 2092.524 +2025-03-10 12:35:28,431 - INFO - CLOSED long at 2071.04 | PnL: 0.46% | $1.39 +2025-03-10 12:35:28,830 - INFO - OPENED SHORT at 2069.03 | Stop loss: 2079.37515 | Take profit: 2037.9945500000001 +2025-03-10 12:35:29,176 - INFO - CLOSED short at 2066.38 | PnL: 0.13% | $0.11 +2025-03-10 12:35:29,177 - INFO - OPENED LONG at 2066.38 | Stop loss: 2056.0481 | Take profit: 2097.3757 +2025-03-10 12:35:29,426 - INFO - CLOSED long at 2064.5 | PnL: -0.09% | $-0.75 +2025-03-10 12:35:29,426 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.8224999999998 | Take profit: 2033.5325 +2025-03-10 12:35:30,417 - INFO - CLOSED short at 2071.99 | PnL: -0.36% | $-1.81 +2025-03-10 12:35:31,319 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.665 | Take profit: 2098.0049999999997 +2025-03-10 12:35:32,793 - INFO - STOP LOSS hit for long at 2056.665 | PnL: -0.50% | $-2.30 +2025-03-10 12:35:34,636 - INFO - OPENED LONG at 2090.49 | Stop loss: 2080.0375499999996 | Take profit: 2121.8473499999996 +2025-03-10 12:35:34,734 - INFO - TAKE PROFIT hit for long at 2121.8473499999996 | PnL: 1.50% | $5.24 +2025-03-10 12:35:35,105 - INFO - OPENED SHORT at 2140.01 | Stop loss: 2150.71005 | Take profit: 2107.90985 +2025-03-10 12:35:35,295 - INFO - CLOSED short at 2128.69 | PnL: 0.53% | $1.70 +2025-03-10 12:35:35,296 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.04655 | Take profit: 2160.6203499999997 +2025-03-10 12:35:35,395 - INFO - CLOSED long at 2120.15 | PnL: -0.40% | $-2.01 +2025-03-10 12:37:08,501 - INFO - GPU not available, using CPU +2025-03-10 12:37:08,522 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 12:37:08,523 - INFO - Fetching initial data for ETH/USDT +2025-03-10 12:37:12,264 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 12:37:12,282 - INFO - Initialized environment with 500 candles +2025-03-10 12:37:14,639 - INFO - Starting training for 1000 episodes... +2025-03-10 12:37:14,639 - INFO - Starting training on device: cpu +2025-03-10 12:37:14,640 - INFO - Loading best model from models/trading_agent_best_pnl.pt to resume training +2025-03-10 12:37:14,774 - WARNING - Could not load best model: Weights only load failed. This file can still be loaded, to do so you have two options, do those steps only if you trust the source of the checkpoint. + (1) In PyTorch 2.6, we changed the default value of the `weights_only` argument in `torch.load` from `False` to `True`. Re-running `torch.load` with `weights_only` set to `False` will likely succeed, but it can result in arbitrary code execution. Do it only if you got the file from a trusted source. + (2) Alternatively, to load with `weights_only=True` please check the recommended steps in the following error message. + WeightsUnpickler error: Unsupported global: GLOBAL numpy._core.multiarray.scalar was not an allowed global by default. Please use `torch.serialization.add_safe_globals([scalar])` or the `torch.serialization.safe_globals([scalar])` context manager to allowlist this global if you trust this class/function. + +Check the documentation of torch.load to learn more about types accepted by default with weights_only https://pytorch.org/docs/stable/generated/torch.load.html. +2025-03-10 12:37:14,799 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 12:37:15,151 - INFO - OPENED SHORT at 2062.28 | Stop loss: 2072.5914 | Take profit: 2031.3458000000003 +2025-03-10 12:37:15,153 - INFO - CLOSED short at 2057.59 | PnL: 0.23% | $0.51 +2025-03-10 12:37:15,154 - INFO - OPENED SHORT at 2059.03 | Stop loss: 2069.32515 | Take profit: 2028.1445500000002 +2025-03-10 12:37:15,155 - INFO - CLOSED short at 2060.1 | PnL: -0.05% | $-0.61 +2025-03-10 12:37:15,155 - INFO - OPENED LONG at 2060.1 | Stop loss: 2049.7995 | Take profit: 2091.0015 +2025-03-10 12:37:15,157 - INFO - CLOSED long at 2056.9 | PnL: -0.16% | $-1.02 +2025-03-10 12:37:15,157 - INFO - OPENED SHORT at 2056.9 | Stop loss: 2067.1845 | Take profit: 2026.0465000000002 +2025-03-10 12:37:15,158 - INFO - CLOSED short at 2057.99 | PnL: -0.05% | $-0.61 +2025-03-10 12:37:15,159 - INFO - OPENED LONG at 2057.99 | Stop loss: 2047.7000499999997 | Take profit: 2088.8598499999994 +2025-03-10 12:37:15,160 - INFO - CLOSED long at 2058.51 | PnL: 0.03% | $-0.29 +2025-03-10 12:37:15,160 - INFO - OPENED SHORT at 2058.51 | Stop loss: 2068.80255 | Take profit: 2027.63235 +2025-03-10 12:37:15,161 - INFO - CLOSED short at 2055.2 | PnL: 0.16% | $0.24 +2025-03-10 12:37:15,162 - INFO - OPENED SHORT at 2056.4 | Stop loss: 2066.682 | Take profit: 2025.554 +2025-03-10 12:37:15,163 - INFO - CLOSED short at 2052.7 | PnL: 0.18% | $0.31 +2025-03-10 12:37:15,163 - INFO - OPENED LONG at 2052.7 | Stop loss: 2042.4364999999998 | Take profit: 2083.4904999999994 +2025-03-10 12:37:15,164 - INFO - CLOSED long at 2051.66 | PnL: -0.05% | $-0.59 +2025-03-10 12:37:15,165 - INFO - OPENED SHORT at 2052.16 | Stop loss: 2062.4207999999994 | Take profit: 2021.3775999999998 +2025-03-10 12:37:15,166 - INFO - CLOSED short at 2053.1 | PnL: -0.05% | $-0.57 +2025-03-10 12:37:15,166 - INFO - OPENED LONG at 2053.1 | Stop loss: 2042.8345 | Take profit: 2083.8965 +2025-03-10 12:37:15,167 - INFO - CLOSED long at 2050.44 | PnL: -0.13% | $-0.89 +2025-03-10 12:37:15,168 - INFO - OPENED SHORT at 2049.49 | Stop loss: 2059.7374499999996 | Take profit: 2018.7476499999998 +2025-03-10 12:37:15,169 - INFO - CLOSED short at 2050.2 | PnL: -0.03% | $-0.52 +2025-03-10 12:37:15,169 - INFO - OPENED SHORT at 2049.6 | Stop loss: 2059.8479999999995 | Take profit: 2018.856 +2025-03-10 12:37:15,170 - INFO - CLOSED short at 2051.99 | PnL: -0.12% | $-0.83 +2025-03-10 12:37:15,170 - INFO - OPENED LONG at 2051.99 | Stop loss: 2041.7300499999997 | Take profit: 2082.7698499999997 +2025-03-10 12:37:15,171 - INFO - CLOSED long at 2049.61 | PnL: -0.12% | $-0.82 +2025-03-10 12:37:15,172 - INFO - OPENED SHORT at 2047.4 | Stop loss: 2057.6369999999997 | Take profit: 2016.689 +2025-03-10 12:37:15,173 - INFO - CLOSED short at 2047.2 | PnL: 0.01% | $-0.34 +2025-03-10 12:37:15,173 - INFO - OPENED LONG at 2047.2 | Stop loss: 2036.964 | Take profit: 2077.908 +2025-03-10 12:37:15,174 - INFO - CLOSED long at 2045.99 | PnL: -0.06% | $-0.60 +2025-03-10 12:37:15,175 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.2199499999997 | Take profit: 2015.30015 +2025-03-10 12:37:15,175 - INFO - CLOSED short at 2045.79 | PnL: 0.01% | $-0.34 +2025-03-10 12:37:15,177 - INFO - OPENED LONG at 2051.11 | Stop loss: 2040.85445 | Take profit: 2081.87665 +2025-03-10 12:37:15,178 - INFO - CLOSED long at 2051.89 | PnL: 0.04% | $-0.23 +2025-03-10 12:37:15,178 - INFO - OPENED SHORT at 2051.89 | Stop loss: 2062.1494499999994 | Take profit: 2021.1116499999998 +2025-03-10 12:37:15,179 - INFO - CLOSED short at 2055.69 | PnL: -0.19% | $-1.06 +2025-03-10 12:37:15,180 - INFO - OPENED LONG at 2055.69 | Stop loss: 2045.41155 | Take profit: 2086.52535 +2025-03-10 12:37:15,181 - INFO - CLOSED long at 2059.7 | PnL: 0.20% | $0.35 +2025-03-10 12:37:15,181 - INFO - OPENED LONG at 2061.49 | Stop loss: 2051.18255 | Take profit: 2092.4123499999996 +2025-03-10 12:37:15,183 - INFO - CLOSED long at 2063.29 | PnL: 0.09% | $-0.05 +2025-03-10 12:37:15,183 - INFO - OPENED SHORT at 2063.29 | Stop loss: 2073.6064499999998 | Take profit: 2032.3406499999999 +2025-03-10 12:37:15,184 - INFO - CLOSED short at 2063.59 | PnL: -0.01% | $-0.42 +2025-03-10 12:37:15,185 - INFO - OPENED SHORT at 2063.01 | Stop loss: 2073.32505 | Take profit: 2032.0648500000002 +2025-03-10 12:37:15,186 - INFO - CLOSED short at 2060.99 | PnL: 0.10% | $-0.01 +2025-03-10 12:37:15,186 - INFO - OPENED LONG at 2060.99 | Stop loss: 2050.6850499999996 | Take profit: 2091.9048499999994 +2025-03-10 12:37:15,247 - INFO - CLOSED long at 2058.3 | PnL: -0.13% | $-0.84 +2025-03-10 12:37:15,610 - INFO - OPENED LONG at 2057.94 | Stop loss: 2047.6503 | Take profit: 2088.8091 +2025-03-10 12:37:15,749 - INFO - CLOSED long at 2061.18 | PnL: 0.16% | $0.21 +2025-03-10 12:37:15,836 - INFO - OPENED SHORT at 2065.86 | Stop loss: 2076.1893 | Take profit: 2034.8721 +2025-03-10 12:37:15,883 - INFO - CLOSED short at 2070.58 | PnL: -0.23% | $-1.20 +2025-03-10 12:37:15,883 - INFO - OPENED LONG at 2070.58 | Stop loss: 2060.2271 | Take profit: 2101.6386999999995 +2025-03-10 12:37:15,973 - INFO - CLOSED long at 2068.29 | PnL: -0.11% | $-0.76 +2025-03-10 12:37:15,974 - INFO - OPENED SHORT at 2068.29 | Stop loss: 2078.63145 | Take profit: 2037.2656499999998 +2025-03-10 12:37:16,100 - INFO - CLOSED short at 2070.99 | PnL: -0.13% | $-0.82 +2025-03-10 12:37:16,186 - INFO - OPENED LONG at 2068.65 | Stop loss: 2058.30675 | Take profit: 2099.67975 +2025-03-10 12:37:16,276 - INFO - CLOSED long at 2067.9 | PnL: -0.04% | $-0.48 +2025-03-10 12:37:16,321 - INFO - OPENED LONG at 2067.69 | Stop loss: 2057.35155 | Take profit: 2098.7053499999997 +2025-03-10 12:37:16,368 - INFO - CLOSED long at 2070.26 | PnL: 0.12% | $0.09 +2025-03-10 12:37:16,369 - INFO - OPENED SHORT at 2070.26 | Stop loss: 2080.6113 | Take profit: 2039.2061 +2025-03-10 12:37:16,417 - INFO - CLOSED short at 2071.44 | PnL: -0.06% | $-0.55 +2025-03-10 12:37:16,552 - INFO - OPENED LONG at 2072.91 | Stop loss: 2062.5454499999996 | Take profit: 2104.0036499999997 +2025-03-10 12:37:16,602 - INFO - CLOSED long at 2072.33 | PnL: -0.03% | $-0.45 +2025-03-10 12:37:16,602 - INFO - OPENED SHORT at 2072.33 | Stop loss: 2082.6916499999998 | Take profit: 2041.24505 +2025-03-10 12:37:16,750 - INFO - CLOSED short at 2069.37 | PnL: 0.14% | $0.15 +2025-03-10 12:37:16,751 - INFO - OPENED LONG at 2069.37 | Stop loss: 2059.02315 | Take profit: 2100.4105499999996 +2025-03-10 12:37:16,846 - INFO - CLOSED long at 2072.8 | PnL: 0.17% | $0.23 +2025-03-10 12:37:17,084 - INFO - OPENED SHORT at 2070.36 | Stop loss: 2080.7118 | Take profit: 2039.3046000000002 +2025-03-10 12:37:17,227 - INFO - CLOSED short at 2069.34 | PnL: 0.05% | $-0.18 +2025-03-10 12:37:17,433 - INFO - OPENED LONG at 2067.51 | Stop loss: 2057.17245 | Take profit: 2098.52265 +2025-03-10 12:37:17,745 - INFO - CLOSED long at 2065.08 | PnL: -0.12% | $-0.76 +2025-03-10 12:37:17,792 - INFO - OPENED SHORT at 2066.18 | Stop loss: 2076.5108999999998 | Take profit: 2035.1872999999998 +2025-03-10 12:37:18,002 - INFO - CLOSED short at 2068.59 | PnL: -0.12% | $-0.75 +2025-03-10 12:37:18,003 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.24705 | Take profit: 2099.61885 +2025-03-10 12:37:18,052 - INFO - CLOSED long at 2069.7 | PnL: 0.05% | $-0.16 +2025-03-10 12:37:18,143 - INFO - OPENED SHORT at 2069.96 | Stop loss: 2080.3098 | Take profit: 2038.9106 +2025-03-10 12:37:18,189 - INFO - CLOSED short at 2071.4 | PnL: -0.07% | $-0.58 +2025-03-10 12:37:18,190 - INFO - OPENED LONG at 2071.4 | Stop loss: 2061.043 | Take profit: 2102.471 +2025-03-10 12:37:18,237 - INFO - CLOSED long at 2071.39 | PnL: -0.00% | $-0.34 +2025-03-10 12:37:18,285 - INFO - OPENED LONG at 2071.36 | Stop loss: 2061.0032 | Take profit: 2102.4303999999997 +2025-03-10 12:37:18,333 - INFO - CLOSED long at 2072.75 | PnL: 0.07% | $-0.11 +2025-03-10 12:37:18,334 - INFO - OPENED SHORT at 2072.75 | Stop loss: 2083.11375 | Take profit: 2041.65875 +2025-03-10 12:37:18,569 - INFO - CLOSED short at 2073.9 | PnL: -0.06% | $-0.52 +2025-03-10 12:37:18,669 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.752 | Take profit: 2039.344 +2025-03-10 12:37:18,718 - INFO - CLOSED short at 2071.11 | PnL: -0.03% | $-0.45 +2025-03-10 12:37:18,919 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.3349999999996 | Take profit: 2035.995 +2025-03-10 12:37:19,202 - INFO - CLOSED short at 2065.26 | PnL: 0.08% | $-0.05 +2025-03-10 12:37:19,251 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.22945 | Take profit: 2036.8716499999998 +2025-03-10 12:37:19,345 - INFO - CLOSED short at 2068.8 | PnL: -0.04% | $-0.48 +2025-03-10 12:37:19,394 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.9933 | Take profit: 2100.3801 +2025-03-10 12:37:19,540 - INFO - CLOSED long at 2069.2 | PnL: -0.01% | $-0.35 +2025-03-10 12:37:19,541 - INFO - OPENED SHORT at 2069.2 | Stop loss: 2079.546 | Take profit: 2038.1619999999998 +2025-03-10 12:37:19,634 - INFO - CLOSED short at 2071.59 | PnL: -0.12% | $-0.71 +2025-03-10 12:37:19,682 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3464999999997 | Take profit: 2101.7604999999994 +2025-03-10 12:37:19,734 - INFO - CLOSED long at 2070.4 | PnL: -0.01% | $-0.37 +2025-03-10 12:37:19,735 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.752 | Take profit: 2039.344 +2025-03-10 12:37:19,784 - INFO - CLOSED short at 2070.73 | PnL: -0.02% | $-0.38 +2025-03-10 12:37:19,924 - INFO - OPENED SHORT at 2067.84 | Stop loss: 2078.1792 | Take profit: 2036.8224 +2025-03-10 12:37:20,187 - INFO - CLOSED short at 2066.39 | PnL: 0.07% | $-0.10 +2025-03-10 12:37:20,188 - INFO - OPENED LONG at 2066.39 | Stop loss: 2056.0580499999996 | Take profit: 2097.3858499999997 +2025-03-10 12:37:20,232 - INFO - CLOSED long at 2064.47 | PnL: -0.09% | $-0.62 +2025-03-10 12:37:20,327 - INFO - OPENED SHORT at 2067.8 | Stop loss: 2078.139 | Take profit: 2036.7830000000001 +2025-03-10 12:37:20,419 - INFO - CLOSED short at 2065.69 | PnL: 0.10% | $0.01 +2025-03-10 12:37:20,463 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.5406000000003 | Take profit: 2098.8982 +2025-03-10 12:37:20,505 - INFO - CLOSED long at 2064.99 | PnL: -0.14% | $-0.77 +2025-03-10 12:37:20,743 - INFO - OPENED SHORT at 2062.65 | Stop loss: 2072.96325 | Take profit: 2031.71025 +2025-03-10 12:37:20,792 - INFO - CLOSED short at 2061.78 | PnL: 0.04% | $-0.18 +2025-03-10 12:37:20,793 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.4711 | Take profit: 2092.7067 +2025-03-10 12:37:20,842 - INFO - CLOSED long at 2059.59 | PnL: -0.11% | $-0.65 +2025-03-10 12:37:20,842 - INFO - OPENED SHORT at 2059.59 | Stop loss: 2069.88795 | Take profit: 2028.6961500000002 +2025-03-10 12:37:20,888 - INFO - CLOSED short at 2061.3 | PnL: -0.08% | $-0.58 +2025-03-10 12:37:20,889 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.9935 | Take profit: 2092.2195 +2025-03-10 12:37:21,120 - INFO - CLOSED long at 2065.54 | PnL: 0.21% | $0.33 +2025-03-10 12:37:21,120 - INFO - OPENED SHORT at 2065.54 | Stop loss: 2075.8677 | Take profit: 2034.5569 +2025-03-10 12:37:21,407 - INFO - CLOSED short at 2064.5 | PnL: 0.05% | $-0.16 +2025-03-10 12:37:21,407 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.1775 | Take profit: 2095.4674999999997 +2025-03-10 12:37:21,555 - INFO - CLOSED long at 2060.9 | PnL: -0.17% | $-0.86 +2025-03-10 12:37:21,697 - INFO - OPENED SHORT at 2059.3 | Stop loss: 2069.5965 | Take profit: 2028.4105000000002 +2025-03-10 12:37:21,743 - INFO - CLOSED short at 2060.31 | PnL: -0.05% | $-0.46 +2025-03-10 12:37:21,743 - INFO - OPENED LONG at 2060.31 | Stop loss: 2050.00845 | Take profit: 2091.21465 +2025-03-10 12:37:21,838 - INFO - CLOSED long at 2064.7 | PnL: 0.21% | $0.35 +2025-03-10 12:37:21,936 - INFO - OPENED LONG at 2060.91 | Stop loss: 2050.60545 | Take profit: 2091.82365 +2025-03-10 12:37:22,031 - INFO - CLOSED long at 2061.13 | PnL: 0.01% | $-0.28 +2025-03-10 12:37:22,032 - INFO - OPENED SHORT at 2061.13 | Stop loss: 2071.43565 | Take profit: 2030.21305 +2025-03-10 12:37:22,220 - INFO - CLOSED short at 2064.33 | PnL: -0.16% | $-0.79 +2025-03-10 12:37:22,267 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.07305 | Take profit: 2094.3408499999996 +2025-03-10 12:37:22,315 - INFO - CLOSED long at 2064.79 | PnL: 0.07% | $-0.10 +2025-03-10 12:37:22,364 - INFO - OPENED LONG at 2065.89 | Stop loss: 2055.5605499999997 | Take profit: 2096.8783499999995 +2025-03-10 12:37:22,464 - INFO - CLOSED long at 2063.0 | PnL: -0.14% | $-0.73 +2025-03-10 12:37:22,518 - INFO - OPENED LONG at 2062.6 | Stop loss: 2052.287 | Take profit: 2093.5389999999998 +2025-03-10 12:37:22,664 - INFO - CLOSED long at 2060.7 | PnL: -0.09% | $-0.58 +2025-03-10 12:37:22,665 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0035 | Take profit: 2029.7894999999999 +2025-03-10 12:37:22,758 - INFO - CLOSED short at 2059.61 | PnL: 0.05% | $-0.14 +2025-03-10 12:37:22,805 - INFO - OPENED LONG at 2059.16 | Stop loss: 2048.8642 | Take profit: 2090.0473999999995 +2025-03-10 12:37:22,851 - INFO - CLOSED long at 2059.02 | PnL: -0.01% | $-0.32 +2025-03-10 12:37:22,942 - INFO - OPENED LONG at 2059.96 | Stop loss: 2049.6602 | Take profit: 2090.8594 +2025-03-10 12:37:23,229 - INFO - CLOSED long at 2054.89 | PnL: -0.25% | $-1.03 +2025-03-10 12:37:23,323 - INFO - OPENED LONG at 2056.71 | Stop loss: 2046.42645 | Take profit: 2087.56065 +2025-03-10 12:37:23,368 - INFO - CLOSED long at 2058.15 | PnL: 0.07% | $-0.09 +2025-03-10 12:37:23,368 - INFO - OPENED SHORT at 2058.15 | Stop loss: 2068.4407499999998 | Take profit: 2027.27775 +2025-03-10 12:37:23,554 - INFO - CLOSED short at 2061.6 | PnL: -0.17% | $-0.78 +2025-03-10 12:37:23,603 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.9935 | Take profit: 2092.2195 +2025-03-10 12:37:23,648 - INFO - CLOSED long at 2062.69 | PnL: 0.07% | $-0.09 +2025-03-10 12:37:23,697 - INFO - OPENED SHORT at 2063.4 | Stop loss: 2073.717 | Take profit: 2032.449 +2025-03-10 12:37:23,745 - INFO - CLOSED short at 2066.36 | PnL: -0.14% | $-0.70 +2025-03-10 12:37:23,842 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.2194999999997 | Take profit: 2032.9415000000001 +2025-03-10 12:37:24,126 - INFO - CLOSED short at 2067.01 | PnL: -0.15% | $-0.72 +2025-03-10 12:37:24,173 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.01845 | Take profit: 2034.7046500000001 +2025-03-10 12:37:24,220 - INFO - CLOSED short at 2069.79 | PnL: -0.20% | $-0.85 +2025-03-10 12:37:24,409 - INFO - OPENED LONG at 2075.01 | Stop loss: 2064.63495 | Take profit: 2106.13515 +2025-03-10 12:37:24,501 - INFO - CLOSED long at 2071.04 | PnL: -0.19% | $-0.82 +2025-03-10 12:37:24,507 - INFO - OPENED SHORT at 2071.04 | Stop loss: 2081.3952 | Take profit: 2039.9743999999998 +2025-03-10 12:37:24,556 - INFO - CLOSED short at 2070.01 | PnL: 0.05% | $-0.14 +2025-03-10 12:37:24,651 - INFO - OPENED LONG at 2073.23 | Stop loss: 2062.86385 | Take profit: 2104.32845 +2025-03-10 12:37:24,753 - INFO - CLOSED long at 2068.15 | PnL: -0.25% | $-0.95 +2025-03-10 12:37:24,801 - INFO - OPENED SHORT at 2068.39 | Stop loss: 2078.73195 | Take profit: 2037.3641499999999 +2025-03-10 12:37:24,944 - INFO - CLOSED short at 2067.44 | PnL: 0.05% | $-0.15 +2025-03-10 12:37:24,988 - INFO - OPENED LONG at 2068.79 | Stop loss: 2058.44605 | Take profit: 2099.82185 +2025-03-10 12:37:25,119 - INFO - CLOSED long at 2069.87 | PnL: 0.05% | $-0.13 +2025-03-10 12:37:25,166 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.9933499999997 | Take profit: 2098.3399499999996 +2025-03-10 12:37:25,298 - INFO - CLOSED long at 2065.66 | PnL: -0.08% | $-0.49 +2025-03-10 12:37:25,347 - INFO - OPENED SHORT at 2063.95 | Stop loss: 2074.2697499999995 | Take profit: 2032.9907499999997 +2025-03-10 12:37:25,436 - INFO - CLOSED short at 2064.5 | PnL: -0.03% | $-0.34 +2025-03-10 12:37:25,436 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.1775 | Take profit: 2095.4674999999997 +2025-03-10 12:37:25,484 - INFO - CLOSED long at 2065.3 | PnL: 0.04% | $-0.16 +2025-03-10 12:37:25,577 - INFO - OPENED LONG at 2064.31 | Stop loss: 2053.98845 | Take profit: 2095.27465 +2025-03-10 12:37:25,670 - INFO - CLOSED long at 2067.53 | PnL: 0.16% | $0.15 +2025-03-10 12:37:25,761 - INFO - OPENED SHORT at 2065.31 | Stop loss: 2075.6365499999997 | Take profit: 2034.33035 +2025-03-10 12:37:25,809 - INFO - CLOSED short at 2066.8 | PnL: -0.07% | $-0.46 +2025-03-10 12:37:25,809 - INFO - OPENED LONG at 2066.8 | Stop loss: 2056.4660000000003 | Take profit: 2097.802 +2025-03-10 12:37:25,861 - INFO - CLOSED long at 2066.5 | PnL: -0.01% | $-0.31 +2025-03-10 12:37:25,965 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.9479499999998 | Take profit: 2040.5161500000002 +2025-03-10 12:37:26,017 - INFO - CLOSED short at 2070.2 | PnL: 0.07% | $-0.09 +2025-03-10 12:37:26,114 - INFO - OPENED SHORT at 2070.9 | Stop loss: 2081.2545 | Take profit: 2039.8365000000001 +2025-03-10 12:37:26,164 - INFO - CLOSED short at 2069.69 | PnL: 0.06% | $-0.11 +2025-03-10 12:37:26,212 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3464999999997 | Take profit: 2101.7604999999994 +2025-03-10 12:37:26,310 - INFO - CLOSED long at 2070.35 | PnL: -0.02% | $-0.31 +2025-03-10 12:37:26,311 - INFO - OPENED SHORT at 2070.35 | Stop loss: 2080.7017499999997 | Take profit: 2039.2947499999998 +2025-03-10 12:37:26,587 - INFO - CLOSED short at 2069.78 | PnL: 0.03% | $-0.19 +2025-03-10 12:37:26,633 - INFO - OPENED SHORT at 2071.61 | Stop loss: 2081.96805 | Take profit: 2040.5358500000002 +2025-03-10 12:37:26,682 - INFO - CLOSED short at 2074.37 | PnL: -0.13% | $-0.61 +2025-03-10 12:37:26,819 - INFO - OPENED SHORT at 2073.27 | Stop loss: 2083.6363499999998 | Take profit: 2042.17095 +2025-03-10 12:37:26,902 - INFO - CLOSED short at 2075.32 | PnL: -0.10% | $-0.52 +2025-03-10 12:37:27,037 - INFO - OPENED LONG at 2075.61 | Stop loss: 2065.2319500000003 | Take profit: 2106.74415 +2025-03-10 12:37:27,122 - INFO - CLOSED long at 2072.09 | PnL: -0.17% | $-0.70 +2025-03-10 12:37:27,207 - INFO - OPENED LONG at 2067.7 | Stop loss: 2057.3615 | Take profit: 2098.7155 +2025-03-10 12:37:27,251 - INFO - CLOSED long at 2067.0 | PnL: -0.03% | $-0.34 +2025-03-10 12:37:27,252 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.3349999999996 | Take profit: 2035.995 +2025-03-10 12:37:27,385 - INFO - CLOSED short at 2066.89 | PnL: 0.01% | $-0.24 +2025-03-10 12:37:27,524 - INFO - OPENED SHORT at 2068.1 | Stop loss: 2078.4404999999997 | Take profit: 2037.0784999999998 +2025-03-10 12:37:27,573 - INFO - CLOSED short at 2069.0 | PnL: -0.04% | $-0.36 +2025-03-10 12:37:27,573 - INFO - OPENED LONG at 2069.0 | Stop loss: 2058.655 | Take profit: 2100.035 +2025-03-10 12:37:27,624 - INFO - CLOSED long at 2070.19 | PnL: 0.06% | $-0.11 +2025-03-10 12:37:27,763 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.1725 | Take profit: 2096.4824999999996 +2025-03-10 12:37:27,816 - INFO - CLOSED long at 2065.7 | PnL: 0.01% | $-0.23 +2025-03-10 12:37:27,818 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.0284999999994 | Take profit: 2034.7144999999998 +2025-03-10 12:37:27,962 - INFO - CLOSED short at 2066.09 | PnL: -0.02% | $-0.30 +2025-03-10 12:37:27,963 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.75955 | Take profit: 2097.08135 +2025-03-10 12:37:28,009 - INFO - CLOSED long at 2063.39 | PnL: -0.13% | $-0.57 +2025-03-10 12:37:28,009 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.70695 | Take profit: 2032.43915 +2025-03-10 12:37:28,104 - INFO - CLOSED short at 2063.98 | PnL: -0.03% | $-0.32 +2025-03-10 12:37:28,147 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.4304999999995 | Take profit: 2035.1084999999998 +2025-03-10 12:37:28,238 - INFO - CLOSED short at 2064.11 | PnL: 0.10% | $-0.01 +2025-03-10 12:37:28,376 - INFO - OPENED SHORT at 2063.01 | Stop loss: 2073.32505 | Take profit: 2032.0648500000002 +2025-03-10 12:37:28,419 - INFO - CLOSED short at 2060.7 | PnL: 0.11% | $0.03 +2025-03-10 12:37:28,420 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3965 | Take profit: 2091.6105 +2025-03-10 12:37:28,464 - INFO - CLOSED long at 2060.2 | PnL: -0.02% | $-0.30 +2025-03-10 12:37:28,465 - INFO - OPENED SHORT at 2060.2 | Stop loss: 2070.5009999999997 | Take profit: 2029.2969999999998 +2025-03-10 12:37:28,554 - INFO - CLOSED short at 2058.09 | PnL: 0.10% | $0.01 +2025-03-10 12:37:28,600 - INFO - OPENED LONG at 2058.65 | Stop loss: 2048.35675 | Take profit: 2089.5297499999997 +2025-03-10 12:37:28,694 - INFO - CLOSED long at 2053.01 | PnL: -0.27% | $-0.91 +2025-03-10 12:37:28,834 - INFO - OPENED SHORT at 2051.99 | Stop loss: 2062.2499499999994 | Take profit: 2021.2101499999997 +2025-03-10 12:37:28,878 - INFO - CLOSED short at 2058.3 | PnL: -0.31% | $-0.98 +2025-03-10 12:37:28,878 - INFO - OPENED LONG at 2058.3 | Stop loss: 2048.0085000000004 | Take profit: 2089.1745 +2025-03-10 12:37:28,928 - INFO - CLOSED long at 2056.85 | PnL: -0.07% | $-0.40 +2025-03-10 12:37:28,929 - INFO - OPENED SHORT at 2056.85 | Stop loss: 2067.1342499999996 | Take profit: 2025.99725 +2025-03-10 12:37:28,976 - INFO - CLOSED short at 2057.11 | PnL: -0.01% | $-0.26 +2025-03-10 12:37:29,024 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.1794499999996 | Take profit: 2027.02165 +2025-03-10 12:37:29,342 - INFO - CLOSED short at 2068.33 | PnL: -0.51% | $-1.42 +2025-03-10 12:37:29,437 - INFO - OPENED LONG at 2066.59 | Stop loss: 2056.25705 | Take profit: 2097.58885 +2025-03-10 12:37:29,567 - INFO - CLOSED long at 2059.9 | PnL: -0.32% | $-0.97 +2025-03-10 12:37:29,567 - INFO - OPENED SHORT at 2059.9 | Stop loss: 2070.1994999999997 | Take profit: 2029.0015 +2025-03-10 12:37:29,661 - INFO - CLOSED short at 2061.84 | PnL: -0.09% | $-0.44 +2025-03-10 12:37:29,753 - INFO - OPENED LONG at 2065.72 | Stop loss: 2055.3914 | Take profit: 2096.7057999999997 +2025-03-10 12:37:29,841 - INFO - CLOSED long at 2070.24 | PnL: 0.22% | $0.26 +2025-03-10 12:37:29,842 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.5911999999994 | Take profit: 2039.1863999999998 +2025-03-10 12:37:30,045 - INFO - CLOSED short at 2073.49 | PnL: -0.16% | $-0.57 +2025-03-10 12:37:30,046 - INFO - OPENED LONG at 2073.49 | Stop loss: 2063.1225499999996 | Take profit: 2104.5923499999994 +2025-03-10 12:37:30,282 - INFO - CLOSED long at 2074.9 | PnL: 0.07% | $-0.07 +2025-03-10 12:37:30,386 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2087.9980499999997 | Take profit: 2046.44585 +2025-03-10 12:37:30,431 - INFO - CLOSED short at 2085.56 | PnL: -0.38% | $-1.07 +2025-03-10 12:37:30,431 - INFO - OPENED LONG at 2085.56 | Stop loss: 2075.1322 | Take profit: 2116.8433999999997 +2025-03-10 12:37:30,568 - INFO - TAKE PROFIT hit for long at 2116.8433999999997 | PnL: 1.50% | $3.04 +2025-03-10 12:37:30,714 - INFO - OPENED LONG at 2133.95 | Stop loss: 2123.28025 | Take profit: 2165.9592499999994 +2025-03-10 12:37:30,763 - INFO - CLOSED long at 2137.59 | PnL: 0.17% | $0.16 +2025-03-10 12:37:30,763 - INFO - OPENED SHORT at 2137.59 | Stop loss: 2148.2779499999997 | Take profit: 2105.52615 +2025-03-10 12:37:30,957 - INFO - CLOSED short at 2140.01 | PnL: -0.11% | $-0.49 +2025-03-10 12:37:31,200 - INFO - OPENED SHORT at 2121.09 | Stop loss: 2131.6954499999997 | Take profit: 2089.27365 +2025-03-10 12:37:31,340 - INFO - CLOSED short at 2119.93 | PnL: 0.05% | $-0.10 +2025-03-10 12:37:31,579 - INFO - OPENED LONG at 2115.28 | Stop loss: 2104.7036000000003 | Take profit: 2147.0092 +2025-03-10 12:37:31,625 - INFO - CLOSED long at 2107.43 | PnL: -0.37% | $-1.07 +2025-03-10 12:37:31,626 - INFO - OPENED SHORT at 2107.43 | Stop loss: 2117.9671499999995 | Take profit: 2075.81855 +2025-03-10 12:37:31,716 - INFO - CLOSED short at 2109.05 | PnL: -0.08% | $-0.39 +2025-03-10 12:37:31,775 - INFO - OPENED LONG at 2112.09 | Stop loss: 2101.52955 | Take profit: 2143.77135 +2025-03-10 12:37:31,824 - INFO - CLOSED long at 2112.95 | PnL: 0.04% | $-0.13 +2025-03-10 12:37:31,875 - INFO - OPENED SHORT at 2112.46 | Stop loss: 2123.0222999999996 | Take profit: 2080.7731 +2025-03-10 12:37:31,920 - INFO - CLOSED short at 2113.24 | PnL: -0.04% | $-0.30 +2025-03-10 12:37:31,968 - INFO - OPENED SHORT at 2112.99 | Stop loss: 2123.5549499999997 | Take profit: 2081.29515 +2025-03-10 12:37:32,014 - INFO - CLOSED short at 2120.81 | PnL: -0.37% | $-1.03 +2025-03-10 12:37:32,014 - INFO - OPENED LONG at 2120.81 | Stop loss: 2110.20595 | Take profit: 2152.6221499999997 +2025-03-10 12:37:32,116 - INFO - CLOSED long at 2114.8 | PnL: -0.28% | $-0.83 +2025-03-10 12:37:32,214 - INFO - OPENED SHORT at 2108.71 | Stop loss: 2119.25355 | Take profit: 2077.07935 +2025-03-10 12:37:32,259 - INFO - CLOSED short at 2106.49 | PnL: 0.11% | $0.01 +2025-03-10 12:37:32,260 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.9575499999996 | Take profit: 2138.08735 +2025-03-10 12:37:32,305 - INFO - CLOSED long at 2108.06 | PnL: 0.07% | $-0.05 +2025-03-10 12:37:32,444 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.55 | Take profit: 2121.35 +2025-03-10 12:37:32,488 - INFO - CLOSED long at 2099.53 | PnL: 0.46% | $0.75 +2025-03-10 12:37:32,488 - INFO - OPENED SHORT at 2099.53 | Stop loss: 2110.02765 | Take profit: 2068.0370500000004 +2025-03-10 12:37:32,584 - INFO - CLOSED short at 2102.19 | PnL: -0.13% | $-0.49 +2025-03-10 12:37:32,585 - INFO - OPENED LONG at 2102.19 | Stop loss: 2091.67905 | Take profit: 2133.7228499999997 +2025-03-10 12:37:32,677 - INFO - CLOSED long at 2099.25 | PnL: -0.14% | $-0.51 +2025-03-10 12:37:32,677 - INFO - OPENED SHORT at 2099.25 | Stop loss: 2109.7462499999997 | Take profit: 2067.76125 +2025-03-10 12:37:32,728 - INFO - CLOSED short at 2098.9 | PnL: 0.02% | $-0.18 +2025-03-10 12:37:32,728 - INFO - OPENED LONG at 2098.9 | Stop loss: 2088.4055000000003 | Take profit: 2130.3835 +2025-03-10 12:37:33,003 - INFO - CLOSED long at 2104.68 | PnL: 0.28% | $0.37 +2025-03-10 12:37:33,091 - INFO - OPENED SHORT at 2099.59 | Stop loss: 2110.08795 | Take profit: 2068.0961500000003 +2025-03-10 12:37:33,143 - INFO - CLOSED short at 2100.02 | PnL: -0.02% | $-0.26 +2025-03-10 12:37:33,143 - INFO - OPENED LONG at 2100.02 | Stop loss: 2089.5199 | Take profit: 2131.5202999999997 +2025-03-10 12:37:33,193 - INFO - CLOSED long at 2098.39 | PnL: -0.08% | $-0.37 +2025-03-10 12:37:33,193 - INFO - OPENED SHORT at 2098.39 | Stop loss: 2108.8819499999995 | Take profit: 2066.91415 +2025-03-10 12:37:33,239 - INFO - CLOSED short at 2095.29 | PnL: 0.15% | $0.10 +2025-03-10 12:37:33,240 - INFO - OPENED LONG at 2095.29 | Stop loss: 2084.81355 | Take profit: 2126.71935 +2025-03-10 12:37:33,426 - INFO - CLOSED long at 2091.1 | PnL: -0.20% | $-0.63 +2025-03-10 12:37:33,426 - INFO - OPENED SHORT at 2091.1 | Stop loss: 2101.5554999999995 | Take profit: 2059.7335 +2025-03-10 12:37:33,475 - INFO - CLOSED short at 2094.72 | PnL: -0.17% | $-0.57 +2025-03-10 12:37:33,475 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.2464 | Take profit: 2126.1407999999997 +2025-03-10 12:37:33,523 - INFO - CLOSED long at 2094.08 | PnL: -0.03% | $-0.27 +2025-03-10 12:37:33,524 - INFO - OPENED SHORT at 2094.08 | Stop loss: 2104.5503999999996 | Take profit: 2062.6688 +2025-03-10 12:37:33,794 - INFO - CLOSED short at 2082.44 | PnL: 0.56% | $0.93 +2025-03-10 12:37:33,932 - INFO - OPENED LONG at 2081.25 | Stop loss: 2070.84375 | Take profit: 2112.46875 +2025-03-10 12:37:33,979 - INFO - CLOSED long at 2083.41 | PnL: 0.10% | $0.01 +2025-03-10 12:37:34,174 - INFO - OPENED SHORT at 2085.8 | Stop loss: 2096.229 | Take profit: 2054.5130000000004 +2025-03-10 12:37:34,220 - INFO - CLOSED short at 2084.72 | PnL: 0.05% | $-0.10 +2025-03-10 12:37:34,221 - INFO - OPENED LONG at 2084.72 | Stop loss: 2074.2963999999997 | Take profit: 2115.9907999999996 +2025-03-10 12:37:34,267 - INFO - CLOSED long at 2085.83 | PnL: 0.05% | $-0.10 +2025-03-10 12:37:34,268 - INFO - OPENED SHORT at 2085.83 | Stop loss: 2096.25915 | Take profit: 2054.54255 +2025-03-10 12:37:34,368 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 17.6% in downtrends | Avg Win=$0.37, Avg Loss=$-0.48 +2025-03-10 12:37:34,369 - INFO - Episode 0: Reward=-127.71, Balance=$51.70, Win Rate=16.2%, Trades=142, Episode PnL=$-23.06, Total PnL=$-48.30, Max Drawdown=48.4%, Pred Accuracy=98.7% +2025-03-10 12:37:34,531 - INFO - Model saved to models/trading_agent_best_reward.pt +2025-03-10 12:37:34,531 - INFO - New best reward model saved: -127.71 +2025-03-10 12:37:34,665 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 12:37:34,666 - INFO - New best PnL model saved: $-23.06 +2025-03-10 12:37:34,768 - INFO - Model saved to models/trading_agent_best_winrate.pt +2025-03-10 12:37:34,769 - INFO - New best win rate model saved: 16.2% +2025-03-10 12:37:34,867 - INFO - Model saved to checkpoints/trading_agent_episode_0.pt +2025-03-10 12:37:34,868 - INFO - Checkpoint saved at episode 0 +2025-03-10 12:37:34,887 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 12:37:35,274 - INFO - OPENED LONG at 2059.4 | Stop loss: 2049.103 | Take profit: 2090.2909999999997 +2025-03-10 12:37:35,461 - INFO - CLOSED long at 2060.1 | PnL: 0.03% | $-0.26 +2025-03-10 12:37:35,462 - INFO - OPENED SHORT at 2060.1 | Stop loss: 2070.4004999999997 | Take profit: 2029.1985 +2025-03-10 12:37:35,617 - INFO - CLOSED short at 2056.9 | PnL: 0.16% | $0.22 +2025-03-10 12:37:35,663 - INFO - OPENED SHORT at 2057.59 | Stop loss: 2067.87795 | Take profit: 2026.7261500000002 +2025-03-10 12:37:35,714 - INFO - CLOSED short at 2057.9 | PnL: -0.02% | $-0.46 +2025-03-10 12:37:35,764 - INFO - OPENED LONG at 2057.99 | Stop loss: 2047.7000499999997 | Take profit: 2088.8598499999994 +2025-03-10 12:37:35,814 - INFO - CLOSED long at 2058.51 | PnL: 0.03% | $-0.30 +2025-03-10 12:37:35,814 - INFO - OPENED SHORT at 2058.51 | Stop loss: 2068.80255 | Take profit: 2027.63235 +2025-03-10 12:37:35,863 - INFO - CLOSED short at 2055.2 | PnL: 0.16% | $0.24 +2025-03-10 12:37:35,863 - INFO - OPENED LONG at 2055.2 | Stop loss: 2044.9239999999998 | Take profit: 2086.028 +2025-03-10 12:37:35,968 - INFO - CLOSED long at 2056.4 | PnL: 0.06% | $-0.17 +2025-03-10 12:37:35,969 - INFO - OPENED SHORT at 2056.4 | Stop loss: 2066.682 | Take profit: 2025.554 +2025-03-10 12:37:36,021 - INFO - CLOSED short at 2055.39 | PnL: 0.05% | $-0.20 +2025-03-10 12:37:36,022 - INFO - OPENED LONG at 2055.39 | Stop loss: 2045.11305 | Take profit: 2086.2208499999997 +2025-03-10 12:37:36,075 - INFO - CLOSED long at 2053.56 | PnL: -0.09% | $-0.75 +2025-03-10 12:37:36,076 - INFO - OPENED SHORT at 2053.56 | Stop loss: 2063.8277999999996 | Take profit: 2022.7566 +2025-03-10 12:37:36,177 - INFO - CLOSED short at 2051.66 | PnL: 0.09% | $-0.03 +2025-03-10 12:37:36,178 - INFO - OPENED LONG at 2051.66 | Stop loss: 2041.4017 | Take profit: 2082.4348999999997 +2025-03-10 12:37:36,228 - INFO - CLOSED long at 2052.16 | PnL: 0.02% | $-0.30 +2025-03-10 12:37:36,276 - INFO - OPENED SHORT at 2053.1 | Stop loss: 2063.3655 | Take profit: 2022.3035 +2025-03-10 12:37:36,380 - INFO - CLOSED short at 2050.71 | PnL: 0.12% | $0.06 +2025-03-10 12:37:36,380 - INFO - OPENED LONG at 2050.71 | Stop loss: 2040.4564500000001 | Take profit: 2081.4706499999998 +2025-03-10 12:37:36,489 - INFO - CLOSED long at 2049.49 | PnL: -0.06% | $-0.63 +2025-03-10 12:37:36,538 - INFO - OPENED SHORT at 2050.2 | Stop loss: 2060.4509999999996 | Take profit: 2019.447 +2025-03-10 12:37:36,635 - INFO - CLOSED short at 2051.99 | PnL: -0.09% | $-0.73 +2025-03-10 12:37:36,687 - INFO - OPENED LONG at 2049.61 | Stop loss: 2039.3619500000002 | Take profit: 2080.35415 +2025-03-10 12:37:36,869 - INFO - CLOSED long at 2046.58 | PnL: -0.15% | $-0.96 +2025-03-10 12:37:36,919 - INFO - OPENED SHORT at 2047.4 | Stop loss: 2057.6369999999997 | Take profit: 2016.689 +2025-03-10 12:37:36,964 - INFO - CLOSED short at 2047.2 | PnL: 0.01% | $-0.35 +2025-03-10 12:37:36,964 - INFO - OPENED LONG at 2047.2 | Stop loss: 2036.964 | Take profit: 2077.908 +2025-03-10 12:37:37,060 - INFO - CLOSED long at 2045.99 | PnL: -0.06% | $-0.61 +2025-03-10 12:37:37,060 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.2199499999997 | Take profit: 2015.30015 +2025-03-10 12:37:37,207 - INFO - CLOSED short at 2047.59 | PnL: -0.08% | $-0.68 +2025-03-10 12:37:37,298 - INFO - OPENED SHORT at 2050.0 | Stop loss: 2060.25 | Take profit: 2019.25 +2025-03-10 12:37:37,395 - INFO - CLOSED short at 2049.89 | PnL: 0.01% | $-0.36 +2025-03-10 12:37:37,395 - INFO - OPENED LONG at 2049.89 | Stop loss: 2039.6405499999998 | Take profit: 2080.6383499999997 +2025-03-10 12:37:37,596 - INFO - CLOSED long at 2052.3 | PnL: 0.12% | $0.07 +2025-03-10 12:37:37,650 - INFO - OPENED LONG at 2055.69 | Stop loss: 2045.41155 | Take profit: 2086.52535 +2025-03-10 12:37:37,752 - INFO - CLOSED long at 2056.89 | PnL: 0.06% | $-0.16 +2025-03-10 12:37:37,752 - INFO - OPENED SHORT at 2056.89 | Stop loss: 2067.1744499999995 | Take profit: 2026.0366499999998 +2025-03-10 12:37:37,802 - INFO - CLOSED short at 2058.39 | PnL: -0.07% | $-0.65 +2025-03-10 12:37:37,803 - INFO - OPENED LONG at 2058.39 | Stop loss: 2048.09805 | Take profit: 2089.26585 +2025-03-10 12:37:37,967 - INFO - CLOSED long at 2059.7 | PnL: 0.06% | $-0.14 +2025-03-10 12:37:38,121 - INFO - OPENED LONG at 2063.29 | Stop loss: 2052.97355 | Take profit: 2094.23935 +2025-03-10 12:37:38,494 - INFO - CLOSED long at 2060.99 | PnL: -0.11% | $-0.79 +2025-03-10 12:37:38,552 - INFO - OPENED SHORT at 2058.3 | Stop loss: 2068.5915 | Take profit: 2027.4255 +2025-03-10 12:37:38,609 - INFO - CLOSED short at 2060.0 | PnL: -0.08% | $-0.67 +2025-03-10 12:37:38,610 - INFO - OPENED LONG at 2060.0 | Stop loss: 2049.7 | Take profit: 2090.8999999999996 +2025-03-10 12:37:38,670 - INFO - CLOSED long at 2061.89 | PnL: 0.09% | $-0.03 +2025-03-10 12:37:38,670 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.1994499999996 | Take profit: 2030.9616499999997 +2025-03-10 12:37:38,725 - INFO - CLOSED short at 2062.89 | PnL: -0.05% | $-0.54 +2025-03-10 12:37:38,778 - INFO - OPENED LONG at 2060.31 | Stop loss: 2050.00845 | Take profit: 2091.21465 +2025-03-10 12:37:38,831 - INFO - CLOSED long at 2059.49 | PnL: -0.04% | $-0.51 +2025-03-10 12:37:38,832 - INFO - OPENED SHORT at 2059.49 | Stop loss: 2069.7874499999994 | Take profit: 2028.5976499999997 +2025-03-10 12:37:39,212 - INFO - CLOSED short at 2061.18 | PnL: -0.08% | $-0.66 +2025-03-10 12:37:39,212 - INFO - OPENED LONG at 2061.18 | Stop loss: 2050.8741 | Take profit: 2092.0977 +2025-03-10 12:37:39,269 - INFO - CLOSED long at 2064.32 | PnL: 0.15% | $0.19 +2025-03-10 12:37:39,270 - INFO - OPENED SHORT at 2064.32 | Stop loss: 2074.6416 | Take profit: 2033.3552000000002 +2025-03-10 12:37:39,330 - INFO - CLOSED short at 2065.86 | PnL: -0.07% | $-0.63 +2025-03-10 12:37:39,437 - INFO - OPENED LONG at 2068.11 | Stop loss: 2057.7694500000002 | Take profit: 2099.13165 +2025-03-10 12:37:39,538 - INFO - CLOSED long at 2067.89 | PnL: -0.01% | $-0.39 +2025-03-10 12:37:39,644 - INFO - OPENED SHORT at 2070.99 | Stop loss: 2081.3449499999997 | Take profit: 2039.9251499999998 +2025-03-10 12:37:39,692 - INFO - CLOSED short at 2069.6 | PnL: 0.07% | $-0.12 +2025-03-10 12:37:39,693 - INFO - OPENED LONG at 2069.6 | Stop loss: 2059.252 | Take profit: 2100.644 +2025-03-10 12:37:39,794 - INFO - CLOSED long at 2068.99 | PnL: -0.03% | $-0.46 +2025-03-10 12:37:40,007 - INFO - OPENED SHORT at 2071.44 | Stop loss: 2081.7972 | Take profit: 2040.3684 +2025-03-10 12:37:40,207 - INFO - CLOSED short at 2072.33 | PnL: -0.04% | $-0.50 +2025-03-10 12:37:40,208 - INFO - OPENED LONG at 2072.33 | Stop loss: 2061.96835 | Take profit: 2103.41495 +2025-03-10 12:37:40,374 - INFO - CLOSED long at 2069.37 | PnL: -0.14% | $-0.85 +2025-03-10 12:37:40,544 - INFO - OPENED SHORT at 2070.79 | Stop loss: 2081.1439499999997 | Take profit: 2039.72815 +2025-03-10 12:37:40,948 - INFO - CLOSED short at 2069.19 | PnL: 0.08% | $-0.08 +2025-03-10 12:37:41,089 - INFO - OPENED SHORT at 2067.51 | Stop loss: 2077.84755 | Take profit: 2036.49735 +2025-03-10 12:37:41,186 - INFO - CLOSED short at 2066.39 | PnL: 0.05% | $-0.16 +2025-03-10 12:37:41,186 - INFO - OPENED LONG at 2066.39 | Stop loss: 2056.0580499999996 | Take profit: 2097.3858499999997 +2025-03-10 12:37:41,326 - INFO - CLOSED long at 2066.29 | PnL: -0.00% | $-0.36 +2025-03-10 12:37:41,326 - INFO - OPENED SHORT at 2066.29 | Stop loss: 2076.6214499999996 | Take profit: 2035.29565 +2025-03-10 12:37:41,374 - INFO - CLOSED short at 2065.08 | PnL: 0.06% | $-0.14 +2025-03-10 12:37:41,755 - INFO - OPENED LONG at 2069.96 | Stop loss: 2059.6102 | Take profit: 2101.0094 +2025-03-10 12:37:42,115 - INFO - CLOSED long at 2072.15 | PnL: 0.11% | $0.02 +2025-03-10 12:37:42,116 - INFO - OPENED SHORT at 2072.15 | Stop loss: 2082.51075 | Take profit: 2041.0677500000002 +2025-03-10 12:37:42,223 - INFO - CLOSED short at 2073.9 | PnL: -0.08% | $-0.64 +2025-03-10 12:37:42,275 - INFO - OPENED SHORT at 2071.92 | Stop loss: 2082.2796 | Take profit: 2040.8412 +2025-03-10 12:37:42,381 - INFO - CLOSED short at 2071.11 | PnL: 0.04% | $-0.21 +2025-03-10 12:37:42,536 - INFO - OPENED LONG at 2068.32 | Stop loss: 2057.9784 | Take profit: 2099.3448 +2025-03-10 12:37:42,586 - INFO - CLOSED long at 2067.0 | PnL: -0.06% | $-0.56 +2025-03-10 12:37:42,801 - INFO - OPENED LONG at 2065.49 | Stop loss: 2055.1625499999996 | Take profit: 2096.4723499999996 +2025-03-10 12:37:42,848 - INFO - CLOSED long at 2063.61 | PnL: -0.09% | $-0.65 +2025-03-10 12:37:42,944 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.22945 | Take profit: 2036.8716499999998 +2025-03-10 12:37:43,048 - INFO - CLOSED short at 2068.8 | PnL: -0.04% | $-0.48 +2025-03-10 12:37:43,099 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.6866999999997 | Take profit: 2038.2999000000002 +2025-03-10 12:37:43,248 - INFO - CLOSED short at 2069.2 | PnL: 0.01% | $-0.31 +2025-03-10 12:37:43,297 - INFO - OPENED LONG at 2070.3 | Stop loss: 2059.9485 | Take profit: 2101.3545 +2025-03-10 12:37:43,402 - INFO - CLOSED long at 2070.7 | PnL: 0.02% | $-0.27 +2025-03-10 12:37:43,403 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.0534999999995 | Take profit: 2039.6394999999998 +2025-03-10 12:37:43,455 - INFO - CLOSED short at 2070.4 | PnL: 0.01% | $-0.28 +2025-03-10 12:37:43,456 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.0480000000002 | Take profit: 2101.4559999999997 +2025-03-10 12:37:43,613 - INFO - CLOSED long at 2068.69 | PnL: -0.08% | $-0.60 +2025-03-10 12:37:43,613 - INFO - OPENED SHORT at 2068.69 | Stop loss: 2079.03345 | Take profit: 2037.65965 +2025-03-10 12:37:43,764 - INFO - CLOSED short at 2067.86 | PnL: 0.04% | $-0.20 +2025-03-10 12:37:43,814 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.068 | Take profit: 2097.3959999999997 +2025-03-10 12:37:43,867 - INFO - CLOSED long at 2066.1 | PnL: -0.01% | $-0.38 +2025-03-10 12:37:43,867 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.4304999999995 | Take profit: 2035.1084999999998 +2025-03-10 12:37:43,962 - INFO - CLOSED short at 2066.39 | PnL: -0.01% | $-0.37 +2025-03-10 12:37:43,968 - INFO - OPENED LONG at 2066.39 | Stop loss: 2056.0580499999996 | Take profit: 2097.3858499999997 +2025-03-10 12:37:44,015 - INFO - CLOSED long at 2064.47 | PnL: -0.09% | $-0.63 +2025-03-10 12:37:44,064 - INFO - OPENED SHORT at 2070.04 | Stop loss: 2080.3902 | Take profit: 2038.9894 +2025-03-10 12:37:44,224 - INFO - CLOSED short at 2065.69 | PnL: 0.21% | $0.36 +2025-03-10 12:37:44,335 - INFO - OPENED SHORT at 2064.99 | Stop loss: 2075.3149499999995 | Take profit: 2034.0151499999997 +2025-03-10 12:37:44,390 - INFO - CLOSED short at 2065.83 | PnL: -0.04% | $-0.46 +2025-03-10 12:37:44,758 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.9935 | Take profit: 2092.2195 +2025-03-10 12:37:44,864 - INFO - CLOSED long at 2064.96 | PnL: 0.18% | $0.25 +2025-03-10 12:37:44,921 - INFO - OPENED SHORT at 2066.24 | Stop loss: 2076.5711999999994 | Take profit: 2035.2463999999998 +2025-03-10 12:37:44,982 - INFO - CLOSED short at 2067.1 | PnL: -0.04% | $-0.46 +2025-03-10 12:37:44,982 - INFO - OPENED LONG at 2067.1 | Stop loss: 2056.7644999999998 | Take profit: 2098.1065 +2025-03-10 12:37:45,223 - INFO - CLOSED long at 2064.08 | PnL: -0.15% | $-0.79 +2025-03-10 12:37:45,282 - INFO - OPENED LONG at 2062.71 | Stop loss: 2052.39645 | Take profit: 2093.65065 +2025-03-10 12:37:45,449 - INFO - CLOSED long at 2063.5 | PnL: 0.04% | $-0.20 +2025-03-10 12:37:45,450 - INFO - OPENED SHORT at 2063.5 | Stop loss: 2073.8174999999997 | Take profit: 2032.5475 +2025-03-10 12:37:45,612 - INFO - CLOSED short at 2060.65 | PnL: 0.14% | $0.12 +2025-03-10 12:37:45,612 - INFO - OPENED LONG at 2060.65 | Stop loss: 2050.34675 | Take profit: 2091.55975 +2025-03-10 12:37:45,815 - INFO - CLOSED long at 2061.8 | PnL: 0.06% | $-0.14 +2025-03-10 12:37:45,815 - INFO - OPENED SHORT at 2061.8 | Stop loss: 2072.109 | Take profit: 2030.873 +2025-03-10 12:37:45,919 - INFO - CLOSED short at 2062.61 | PnL: -0.04% | $-0.44 +2025-03-10 12:37:46,132 - INFO - OPENED LONG at 2061.9 | Stop loss: 2051.5905000000002 | Take profit: 2092.8285 +2025-03-10 12:37:46,397 - INFO - CLOSED long at 2064.79 | PnL: 0.14% | $0.13 +2025-03-10 12:37:46,714 - INFO - OPENED SHORT at 2061.7 | Stop loss: 2072.0084999999995 | Take profit: 2030.7744999999998 +2025-03-10 12:37:46,813 - INFO - CLOSED short at 2061.09 | PnL: 0.03% | $-0.22 +2025-03-10 12:37:46,861 - INFO - OPENED SHORT at 2059.61 | Stop loss: 2069.90805 | Take profit: 2028.71585 +2025-03-10 12:37:46,927 - INFO - CLOSED short at 2059.16 | PnL: 0.02% | $-0.25 +2025-03-10 12:37:46,928 - INFO - OPENED LONG at 2059.16 | Stop loss: 2048.8642 | Take profit: 2090.0473999999995 +2025-03-10 12:37:47,061 - INFO - CLOSED long at 2058.89 | PnL: -0.01% | $-0.36 +2025-03-10 12:37:47,125 - INFO - OPENED LONG at 2059.96 | Stop loss: 2049.6602 | Take profit: 2090.8594 +2025-03-10 12:37:47,186 - INFO - CLOSED long at 2059.46 | PnL: -0.02% | $-0.39 +2025-03-10 12:37:47,312 - INFO - OPENED LONG at 2058.28 | Stop loss: 2047.9886000000001 | Take profit: 2089.1542 +2025-03-10 12:37:47,368 - INFO - CLOSED long at 2056.28 | PnL: -0.10% | $-0.61 +2025-03-10 12:37:47,995 - INFO - OPENED LONG at 2062.69 | Stop loss: 2052.37655 | Take profit: 2093.63035 +2025-03-10 12:37:48,044 - INFO - CLOSED long at 2063.4 | PnL: 0.03% | $-0.20 +2025-03-10 12:37:48,096 - INFO - OPENED LONG at 2066.36 | Stop loss: 2056.0282 | Take profit: 2097.3554 +2025-03-10 12:37:48,148 - INFO - CLOSED long at 2066.01 | PnL: -0.02% | $-0.36 +2025-03-10 12:37:48,537 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.36155 | Take profit: 2096.67535 +2025-03-10 12:37:48,631 - INFO - CLOSED long at 2072.0 | PnL: 0.31% | $0.63 +2025-03-10 12:37:48,631 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3599999999997 | Take profit: 2040.92 +2025-03-10 12:37:48,811 - INFO - CLOSED short at 2072.6 | PnL: -0.03% | $-0.40 +2025-03-10 12:37:48,811 - INFO - OPENED LONG at 2072.6 | Stop loss: 2062.237 | Take profit: 2103.689 +2025-03-10 12:37:48,855 - INFO - CLOSED long at 2071.04 | PnL: -0.08% | $-0.54 +2025-03-10 12:37:48,856 - INFO - OPENED SHORT at 2071.04 | Stop loss: 2081.3952 | Take profit: 2039.9743999999998 +2025-03-10 12:37:48,900 - INFO - CLOSED short at 2070.01 | PnL: 0.05% | $-0.15 +2025-03-10 12:37:48,901 - INFO - OPENED LONG at 2070.01 | Stop loss: 2059.65995 | Take profit: 2101.06015 +2025-03-10 12:37:48,947 - INFO - CLOSED long at 2071.6 | PnL: 0.08% | $-0.07 +2025-03-10 12:37:49,047 - INFO - OPENED LONG at 2070.0 | Stop loss: 2059.65 | Take profit: 2101.0499999999997 +2025-03-10 12:37:49,114 - INFO - CLOSED long at 2068.15 | PnL: -0.09% | $-0.58 +2025-03-10 12:37:49,373 - INFO - OPENED LONG at 2068.79 | Stop loss: 2058.44605 | Take profit: 2099.82185 +2025-03-10 12:37:49,423 - INFO - CLOSED long at 2072.99 | PnL: 0.20% | $0.31 +2025-03-10 12:37:49,474 - INFO - OPENED SHORT at 2071.49 | Stop loss: 2081.8474499999998 | Take profit: 2040.4176499999999 +2025-03-10 12:37:49,524 - INFO - CLOSED short at 2069.87 | PnL: 0.08% | $-0.07 +2025-03-10 12:37:49,524 - INFO - OPENED LONG at 2069.87 | Stop loss: 2059.52065 | Take profit: 2100.9180499999998 +2025-03-10 12:37:49,576 - INFO - CLOSED long at 2067.33 | PnL: -0.12% | $-0.67 +2025-03-10 12:37:49,577 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.6666499999997 | Take profit: 2036.3200499999998 +2025-03-10 12:37:49,630 - INFO - CLOSED short at 2066.38 | PnL: 0.05% | $-0.16 +2025-03-10 12:37:49,631 - INFO - OPENED LONG at 2066.38 | Stop loss: 2056.0481 | Take profit: 2097.3757 +2025-03-10 12:37:50,039 - INFO - CLOSED long at 2064.31 | PnL: -0.10% | $-0.60 +2025-03-10 12:37:50,136 - INFO - OPENED SHORT at 2067.53 | Stop loss: 2077.86765 | Take profit: 2036.5170500000002 +2025-03-10 12:37:50,244 - INFO - CLOSED short at 2065.31 | PnL: 0.11% | $0.02 +2025-03-10 12:37:50,344 - INFO - OPENED SHORT at 2066.5 | Stop loss: 2076.8325 | Take profit: 2035.5025 +2025-03-10 12:37:50,400 - INFO - CLOSED short at 2068.59 | PnL: -0.10% | $-0.60 +2025-03-10 12:37:50,608 - INFO - OPENED SHORT at 2070.9 | Stop loss: 2081.2545 | Take profit: 2039.8365000000001 +2025-03-10 12:37:50,717 - INFO - CLOSED short at 2070.7 | PnL: 0.01% | $-0.27 +2025-03-10 12:37:50,718 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3464999999997 | Take profit: 2101.7604999999994 +2025-03-10 12:37:50,770 - INFO - CLOSED long at 2070.8 | PnL: 0.00% | $-0.28 +2025-03-10 12:37:51,017 - INFO - OPENED LONG at 2068.67 | Stop loss: 2058.32665 | Take profit: 2099.70005 +2025-03-10 12:37:51,119 - INFO - CLOSED long at 2069.78 | PnL: 0.05% | $-0.14 +2025-03-10 12:37:51,171 - INFO - OPENED LONG at 2071.61 | Stop loss: 2061.2519500000003 | Take profit: 2102.68415 +2025-03-10 12:37:51,271 - INFO - CLOSED long at 2075.07 | PnL: 0.17% | $0.20 +2025-03-10 12:37:51,368 - INFO - OPENED SHORT at 2073.27 | Stop loss: 2083.6363499999998 | Take profit: 2042.17095 +2025-03-10 12:37:51,421 - INFO - CLOSED short at 2073.99 | PnL: -0.03% | $-0.39 +2025-03-10 12:37:51,422 - INFO - OPENED LONG at 2073.99 | Stop loss: 2063.62005 | Take profit: 2105.0998499999996 +2025-03-10 12:37:51,579 - INFO - CLOSED long at 2076.9 | PnL: 0.14% | $0.12 +2025-03-10 12:37:51,580 - INFO - OPENED SHORT at 2076.9 | Stop loss: 2087.2844999999998 | Take profit: 2045.7465 +2025-03-10 12:37:51,735 - INFO - CLOSED short at 2072.09 | PnL: 0.23% | $0.38 +2025-03-10 12:37:51,736 - INFO - OPENED LONG at 2072.09 | Stop loss: 2061.72955 | Take profit: 2103.17135 +2025-03-10 12:37:51,872 - INFO - CLOSED long at 2067.0 | PnL: -0.25% | $-1.01 +2025-03-10 12:37:51,873 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.3349999999996 | Take profit: 2035.995 +2025-03-10 12:37:51,919 - INFO - CLOSED short at 2067.9 | PnL: -0.04% | $-0.42 +2025-03-10 12:37:52,024 - INFO - OPENED SHORT at 2066.89 | Stop loss: 2077.2244499999997 | Take profit: 2035.88665 +2025-03-10 12:37:52,074 - INFO - CLOSED short at 2067.88 | PnL: -0.05% | $-0.43 +2025-03-10 12:37:52,168 - INFO - OPENED LONG at 2068.1 | Stop loss: 2057.7595 | Take profit: 2099.1214999999997 +2025-03-10 12:37:52,215 - INFO - CLOSED long at 2069.0 | PnL: 0.04% | $-0.16 +2025-03-10 12:37:52,263 - INFO - OPENED LONG at 2070.19 | Stop loss: 2059.83905 | Take profit: 2101.2428499999996 +2025-03-10 12:37:52,312 - INFO - CLOSED long at 2070.1 | PnL: -0.00% | $-0.30 +2025-03-10 12:37:52,313 - INFO - OPENED SHORT at 2070.1 | Stop loss: 2080.4504999999995 | Take profit: 2039.0484999999999 +2025-03-10 12:37:52,365 - INFO - CLOSED short at 2067.19 | PnL: 0.14% | $0.12 +2025-03-10 12:37:52,366 - INFO - OPENED LONG at 2067.19 | Stop loss: 2056.85405 | Take profit: 2098.19785 +2025-03-10 12:37:52,417 - INFO - CLOSED long at 2065.5 | PnL: -0.08% | $-0.52 +2025-03-10 12:37:52,517 - INFO - OPENED LONG at 2065.8 | Stop loss: 2055.471 | Take profit: 2096.787 +2025-03-10 12:37:52,566 - INFO - CLOSED long at 2065.07 | PnL: -0.04% | $-0.38 +2025-03-10 12:37:52,567 - INFO - OPENED SHORT at 2065.07 | Stop loss: 2075.39535 | Take profit: 2034.0939500000002 +2025-03-10 12:37:52,840 - INFO - CLOSED short at 2065.06 | PnL: 0.00% | $-0.28 +2025-03-10 12:37:52,884 - INFO - OPENED SHORT at 2064.11 | Stop loss: 2074.43055 | Take profit: 2033.1483500000002 +2025-03-10 12:37:53,029 - INFO - CLOSED short at 2063.01 | PnL: 0.05% | $-0.13 +2025-03-10 12:37:53,174 - INFO - OPENED LONG at 2059.2 | Stop loss: 2048.904 | Take profit: 2090.0879999999997 +2025-03-10 12:37:53,274 - INFO - CLOSED long at 2058.65 | PnL: -0.03% | $-0.35 +2025-03-10 12:37:53,275 - INFO - OPENED SHORT at 2058.65 | Stop loss: 2068.94325 | Take profit: 2027.77025 +2025-03-10 12:37:53,330 - INFO - CLOSED short at 2056.77 | PnL: 0.09% | $-0.02 +2025-03-10 12:37:53,480 - INFO - OPENED SHORT at 2049.5 | Stop loss: 2059.7475 | Take profit: 2018.7575 +2025-03-10 12:37:53,580 - INFO - CLOSED short at 2058.3 | PnL: -0.43% | $-1.47 +2025-03-10 12:37:53,580 - INFO - OPENED LONG at 2058.3 | Stop loss: 2048.0085000000004 | Take profit: 2089.1745 +2025-03-10 12:37:53,678 - INFO - CLOSED long at 2057.11 | PnL: -0.06% | $-0.43 +2025-03-10 12:37:53,679 - INFO - OPENED SHORT at 2057.11 | Stop loss: 2067.3955499999997 | Take profit: 2026.2533500000002 +2025-03-10 12:37:53,725 - INFO - CLOSED short at 2057.89 | PnL: -0.04% | $-0.37 +2025-03-10 12:37:54,003 - INFO - OPENED LONG at 2065.12 | Stop loss: 2054.7943999999998 | Take profit: 2096.0968 +2025-03-10 12:37:54,050 - INFO - CLOSED long at 2068.33 | PnL: 0.16% | $0.15 +2025-03-10 12:37:54,052 - INFO - OPENED SHORT at 2068.33 | Stop loss: 2078.6716499999998 | Take profit: 2037.30505 +2025-03-10 12:37:54,102 - INFO - CLOSED short at 2067.49 | PnL: 0.04% | $-0.16 +2025-03-10 12:37:54,149 - INFO - OPENED LONG at 2066.59 | Stop loss: 2056.25705 | Take profit: 2097.58885 +2025-03-10 12:37:54,200 - INFO - CLOSED long at 2064.08 | PnL: -0.12% | $-0.60 +2025-03-10 12:37:54,200 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.4003999999995 | Take profit: 2033.1188 +2025-03-10 12:37:54,304 - INFO - CLOSED short at 2059.9 | PnL: 0.20% | $0.27 +2025-03-10 12:37:54,305 - INFO - OPENED LONG at 2059.9 | Stop loss: 2049.6005 | Take profit: 2090.7985 +2025-03-10 12:37:54,360 - INFO - CLOSED long at 2060.7 | PnL: 0.04% | $-0.16 +2025-03-10 12:37:54,360 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0035 | Take profit: 2029.7894999999999 +2025-03-10 12:37:54,521 - INFO - CLOSED short at 2065.72 | PnL: -0.24% | $-0.92 +2025-03-10 12:37:54,522 - INFO - OPENED LONG at 2065.72 | Stop loss: 2055.3914 | Take profit: 2096.7057999999997 +2025-03-10 12:37:54,570 - INFO - CLOSED long at 2070.31 | PnL: 0.22% | $0.32 +2025-03-10 12:37:54,872 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.42025 | Take profit: 2042.9392500000001 +2025-03-10 12:37:54,923 - INFO - CLOSED short at 2072.99 | PnL: 0.05% | $-0.13 +2025-03-10 12:37:54,975 - INFO - OPENED SHORT at 2071.89 | Stop loss: 2082.24945 | Take profit: 2040.8116499999999 +2025-03-10 12:37:55,072 - INFO - CLOSED short at 2074.9 | PnL: -0.15% | $-0.65 +2025-03-10 12:37:55,072 - INFO - OPENED LONG at 2074.9 | Stop loss: 2064.5255 | Take profit: 2106.0235 +2025-03-10 12:37:55,227 - INFO - CLOSED long at 2085.56 | PnL: 0.51% | $1.08 +2025-03-10 12:37:55,279 - INFO - OPENED LONG at 2090.49 | Stop loss: 2080.0375499999996 | Take profit: 2121.8473499999996 +2025-03-10 12:37:55,383 - INFO - TAKE PROFIT hit for long at 2121.8473499999996 | PnL: 1.50% | $3.72 +2025-03-10 12:37:55,484 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.1211000000003 | Take profit: 2163.7567 +2025-03-10 12:37:55,532 - INFO - CLOSED long at 2133.95 | PnL: 0.10% | $0.01 +2025-03-10 12:37:55,532 - INFO - OPENED SHORT at 2133.95 | Stop loss: 2144.6197499999994 | Take profit: 2101.9407499999998 +2025-03-10 12:37:55,634 - INFO - CLOSED short at 2141.41 | PnL: -0.35% | $-1.26 +2025-03-10 12:37:55,635 - INFO - OPENED LONG at 2141.41 | Stop loss: 2130.70295 | Take profit: 2173.53115 +2025-03-10 12:37:55,877 - INFO - CLOSED long at 2126.99 | PnL: -0.67% | $-2.13 +2025-03-10 12:37:55,924 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.6635 | Take profit: 2159.2095 +2025-03-10 12:37:56,026 - INFO - CLOSED long at 2121.09 | PnL: -0.29% | $-1.05 +2025-03-10 12:37:56,027 - INFO - OPENED SHORT at 2121.09 | Stop loss: 2131.6954499999997 | Take profit: 2089.27365 +2025-03-10 12:37:56,076 - INFO - CLOSED short at 2120.15 | PnL: 0.04% | $-0.15 +2025-03-10 12:37:56,076 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.54925 | Take profit: 2151.95225 +2025-03-10 12:37:56,122 - INFO - CLOSED long at 2117.24 | PnL: -0.14% | $-0.62 +2025-03-10 12:37:56,170 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3303499999997 | Take profit: 2151.7289499999997 +2025-03-10 12:37:56,478 - INFO - CLOSED long at 2107.43 | PnL: -0.59% | $-1.79 +2025-03-10 12:37:56,528 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.047 | Take profit: 2142.2589999999996 +2025-03-10 12:37:56,576 - INFO - CLOSED long at 2109.05 | PnL: -0.07% | $-0.44 +2025-03-10 12:37:56,903 - INFO - OPENED LONG at 2120.81 | Stop loss: 2110.20595 | Take profit: 2152.6221499999997 +2025-03-10 12:37:57,010 - INFO - CLOSED long at 2114.8 | PnL: -0.28% | $-0.96 +2025-03-10 12:37:57,070 - INFO - OPENED LONG at 2110.9 | Stop loss: 2100.3455 | Take profit: 2142.5634999999997 +2025-03-10 12:37:57,121 - INFO - CLOSED long at 2108.71 | PnL: -0.10% | $-0.50 +2025-03-10 12:37:57,122 - INFO - OPENED SHORT at 2108.71 | Stop loss: 2119.25355 | Take profit: 2077.07935 +2025-03-10 12:37:57,229 - INFO - CLOSED short at 2108.06 | PnL: 0.03% | $-0.17 +2025-03-10 12:37:57,229 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.5197 | Take profit: 2139.6809 +2025-03-10 12:37:57,390 - INFO - CLOSED long at 2090.0 | PnL: -0.86% | $-2.34 +2025-03-10 12:37:57,692 - INFO - OPENED LONG at 2099.25 | Stop loss: 2088.75375 | Take profit: 2130.73875 +2025-03-10 12:37:57,749 - INFO - CLOSED long at 2098.9 | PnL: -0.02% | $-0.27 +2025-03-10 12:37:57,750 - INFO - OPENED SHORT at 2098.9 | Stop loss: 2109.3945 | Take profit: 2067.4165000000003 +2025-03-10 12:37:58,135 - INFO - CLOSED short at 2101.51 | PnL: -0.12% | $-0.52 +2025-03-10 12:37:58,190 - INFO - OPENED LONG at 2099.59 | Stop loss: 2089.09205 | Take profit: 2131.08385 +2025-03-10 12:37:58,316 - INFO - CLOSED long at 2098.39 | PnL: -0.06% | $-0.36 +2025-03-10 12:37:58,742 - INFO - OPENED SHORT at 2088.35 | Stop loss: 2098.79175 | Take profit: 2057.02475 +2025-03-10 12:37:58,986 - INFO - CLOSED short at 2082.44 | PnL: 0.28% | $0.42 +2025-03-10 12:37:59,034 - INFO - OPENED SHORT at 2081.49 | Stop loss: 2091.8974499999995 | Take profit: 2050.26765 +2025-03-10 12:37:59,240 - INFO - CLOSED short at 2085.09 | PnL: -0.17% | $-0.63 +2025-03-10 12:37:59,580 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 21.2% in downtrends | Avg Win=$0.39, Avg Loss=$-0.48 +2025-03-10 12:37:59,581 - INFO - Episode 1: Reward=116.14, Balance=$57.34, Win Rate=18.0%, Trades=133, Episode PnL=$-22.86, Total PnL=$-90.96, Max Drawdown=42.7%, Pred Accuracy=99.9% +2025-03-10 12:37:59,728 - INFO - Model saved to models/trading_agent_best_reward.pt +2025-03-10 12:37:59,729 - INFO - New best reward model saved: 116.14 +2025-03-10 12:37:59,858 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 12:37:59,859 - INFO - New best PnL model saved: $-22.86 +2025-03-10 12:37:59,969 - INFO - Model saved to models/trading_agent_best_winrate.pt +2025-03-10 12:37:59,970 - INFO - New best win rate model saved: 18.0% +2025-03-10 12:37:59,992 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 12:38:00,318 - INFO - OPENED SHORT at 2062.28 | Stop loss: 2072.5914 | Take profit: 2031.3458000000003 +2025-03-10 12:38:00,469 - INFO - CLOSED short at 2057.59 | PnL: 0.23% | $0.51 +2025-03-10 12:38:00,470 - INFO - OPENED LONG at 2057.59 | Stop loss: 2047.3020500000002 | Take profit: 2088.45385 +2025-03-10 12:38:00,514 - INFO - CLOSED long at 2059.03 | PnL: 0.07% | $-0.12 +2025-03-10 12:38:00,663 - INFO - OPENED SHORT at 2060.51 | Stop loss: 2070.81255 | Take profit: 2029.6023500000001 +2025-03-10 12:38:00,859 - INFO - CLOSED short at 2057.9 | PnL: 0.13% | $0.11 +2025-03-10 12:38:00,861 - INFO - OPENED LONG at 2057.9 | Stop loss: 2047.6105 | Take profit: 2088.7684999999997 +2025-03-10 12:38:01,114 - INFO - CLOSED long at 2056.4 | PnL: -0.07% | $-0.69 +2025-03-10 12:38:01,162 - INFO - OPENED LONG at 2055.39 | Stop loss: 2045.11305 | Take profit: 2086.2208499999997 +2025-03-10 12:38:01,207 - INFO - CLOSED long at 2053.56 | PnL: -0.09% | $-0.75 +2025-03-10 12:38:01,208 - INFO - OPENED SHORT at 2053.56 | Stop loss: 2063.8277999999996 | Take profit: 2022.7566 +2025-03-10 12:38:01,298 - INFO - CLOSED short at 2051.66 | PnL: 0.09% | $-0.03 +2025-03-10 12:38:01,298 - INFO - OPENED LONG at 2051.66 | Stop loss: 2041.4017 | Take profit: 2082.4348999999997 +2025-03-10 12:38:01,398 - INFO - CLOSED long at 2053.1 | PnL: 0.07% | $-0.12 +2025-03-10 12:38:01,399 - INFO - OPENED SHORT at 2053.1 | Stop loss: 2063.3655 | Take profit: 2022.3035 +2025-03-10 12:38:01,451 - INFO - CLOSED short at 2052.25 | PnL: 0.04% | $-0.23 +2025-03-10 12:38:01,451 - INFO - OPENED LONG at 2052.25 | Stop loss: 2041.98875 | Take profit: 2083.0337499999996 +2025-03-10 12:38:01,501 - INFO - CLOSED long at 2050.71 | PnL: -0.08% | $-0.69 +2025-03-10 12:38:01,650 - INFO - OPENED LONG at 2050.2 | Stop loss: 2039.9489999999998 | Take profit: 2080.9529999999995 +2025-03-10 12:38:01,698 - INFO - CLOSED long at 2049.6 | PnL: -0.03% | $-0.51 +2025-03-10 12:38:01,890 - INFO - OPENED SHORT at 2048.48 | Stop loss: 2058.7223999999997 | Take profit: 2017.7528 +2025-03-10 12:38:01,941 - INFO - CLOSED short at 2047.39 | PnL: 0.05% | $-0.18 +2025-03-10 12:38:01,942 - INFO - OPENED LONG at 2047.39 | Stop loss: 2037.1530500000001 | Take profit: 2078.10085 +2025-03-10 12:38:01,990 - INFO - CLOSED long at 2046.58 | PnL: -0.04% | $-0.54 +2025-03-10 12:38:01,991 - INFO - OPENED SHORT at 2046.58 | Stop loss: 2056.8129 | Take profit: 2015.8813 +2025-03-10 12:38:02,093 - INFO - CLOSED short at 2047.2 | PnL: -0.03% | $-0.50 +2025-03-10 12:38:02,142 - INFO - OPENED LONG at 2045.99 | Stop loss: 2035.76005 | Take profit: 2076.67985 +2025-03-10 12:38:02,238 - INFO - CLOSED long at 2045.79 | PnL: -0.01% | $-0.42 +2025-03-10 12:38:02,333 - INFO - OPENED LONG at 2047.59 | Stop loss: 2037.35205 | Take profit: 2078.30385 +2025-03-10 12:38:02,662 - INFO - CLOSED long at 2051.89 | PnL: 0.21% | $0.42 +2025-03-10 12:38:02,662 - INFO - OPENED SHORT at 2051.89 | Stop loss: 2062.1494499999994 | Take profit: 2021.1116499999998 +2025-03-10 12:38:02,710 - INFO - CLOSED short at 2052.3 | PnL: -0.02% | $-0.46 +2025-03-10 12:38:02,710 - INFO - OPENED LONG at 2052.3 | Stop loss: 2042.0385 | Take profit: 2083.0845 +2025-03-10 12:38:02,811 - INFO - CLOSED long at 2057.01 | PnL: 0.23% | $0.50 +2025-03-10 12:38:02,812 - INFO - OPENED SHORT at 2057.01 | Stop loss: 2067.29505 | Take profit: 2026.1548500000001 +2025-03-10 12:38:03,011 - INFO - CLOSED short at 2059.7 | PnL: -0.13% | $-0.89 +2025-03-10 12:38:03,061 - INFO - OPENED SHORT at 2061.49 | Stop loss: 2071.7974499999996 | Take profit: 2030.5676499999997 +2025-03-10 12:38:03,110 - INFO - CLOSED short at 2063.29 | PnL: -0.09% | $-0.71 +2025-03-10 12:38:03,111 - INFO - OPENED LONG at 2063.29 | Stop loss: 2052.97355 | Take profit: 2094.23935 +2025-03-10 12:38:03,372 - INFO - CLOSED long at 2063.01 | PnL: -0.01% | $-0.43 +2025-03-10 12:38:03,866 - INFO - OPENED SHORT at 2057.94 | Stop loss: 2068.2297 | Take profit: 2027.0709 +2025-03-10 12:38:03,917 - INFO - CLOSED short at 2058.11 | PnL: -0.01% | $-0.41 +2025-03-10 12:38:04,116 - INFO - OPENED SHORT at 2065.86 | Stop loss: 2076.1893 | Take profit: 2034.8721 +2025-03-10 12:38:04,521 - INFO - CLOSED short at 2068.65 | PnL: -0.14% | $-0.88 +2025-03-10 12:38:04,521 - INFO - OPENED LONG at 2068.65 | Stop loss: 2058.30675 | Take profit: 2099.67975 +2025-03-10 12:38:04,688 - INFO - CLOSED long at 2067.69 | PnL: -0.05% | $-0.54 +2025-03-10 12:38:04,688 - INFO - OPENED SHORT at 2067.69 | Stop loss: 2078.02845 | Take profit: 2036.67465 +2025-03-10 12:38:04,737 - INFO - CLOSED short at 2070.26 | PnL: -0.12% | $-0.83 +2025-03-10 12:38:04,738 - INFO - OPENED LONG at 2070.26 | Stop loss: 2059.9087000000004 | Take profit: 2101.3139 +2025-03-10 12:38:04,831 - INFO - CLOSED long at 2073.73 | PnL: 0.17% | $0.25 +2025-03-10 12:38:04,832 - INFO - OPENED SHORT at 2073.73 | Stop loss: 2084.09865 | Take profit: 2042.62405 +2025-03-10 12:38:04,881 - INFO - CLOSED short at 2075.1 | PnL: -0.07% | $-0.61 +2025-03-10 12:38:04,932 - INFO - OPENED LONG at 2072.91 | Stop loss: 2062.5454499999996 | Take profit: 2104.0036499999997 +2025-03-10 12:38:04,986 - INFO - CLOSED long at 2072.33 | PnL: -0.03% | $-0.47 +2025-03-10 12:38:05,150 - INFO - OPENED LONG at 2069.37 | Stop loss: 2059.02315 | Take profit: 2100.4105499999996 +2025-03-10 12:38:05,250 - INFO - CLOSED long at 2072.8 | PnL: 0.17% | $0.24 +2025-03-10 12:38:05,251 - INFO - OPENED SHORT at 2072.8 | Stop loss: 2083.1639999999998 | Take profit: 2041.708 +2025-03-10 12:38:05,300 - INFO - CLOSED short at 2070.79 | PnL: 0.10% | $-0.01 +2025-03-10 12:38:05,301 - INFO - OPENED LONG at 2070.79 | Stop loss: 2060.43605 | Take profit: 2101.8518499999996 +2025-03-10 12:38:05,412 - INFO - CLOSED long at 2068.02 | PnL: -0.13% | $-0.85 +2025-03-10 12:38:05,414 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.3601 | Take profit: 2036.9996999999998 +2025-03-10 12:38:05,515 - INFO - CLOSED short at 2070.36 | PnL: -0.11% | $-0.77 +2025-03-10 12:38:05,516 - INFO - OPENED LONG at 2070.36 | Stop loss: 2060.0082 | Take profit: 2101.4154 +2025-03-10 12:38:05,622 - INFO - CLOSED long at 2070.7 | PnL: 0.02% | $-0.30 +2025-03-10 12:38:05,672 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.6866999999997 | Take profit: 2038.2999000000002 +2025-03-10 12:38:05,720 - INFO - CLOSED short at 2069.19 | PnL: 0.01% | $-0.33 +2025-03-10 12:38:05,721 - INFO - OPENED LONG at 2069.19 | Stop loss: 2058.84405 | Take profit: 2100.2278499999998 +2025-03-10 12:38:05,955 - INFO - CLOSED long at 2066.39 | PnL: -0.14% | $-0.84 +2025-03-10 12:38:05,956 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.7219499999997 | Take profit: 2035.3941499999999 +2025-03-10 12:38:06,049 - INFO - CLOSED short at 2066.19 | PnL: 0.01% | $-0.32 +2025-03-10 12:38:06,050 - INFO - OPENED LONG at 2066.19 | Stop loss: 2055.85905 | Take profit: 2097.1828499999997 +2025-03-10 12:38:06,394 - INFO - CLOSED long at 2068.51 | PnL: 0.11% | $0.04 +2025-03-10 12:38:06,395 - INFO - OPENED SHORT at 2068.51 | Stop loss: 2078.85255 | Take profit: 2037.4823500000002 +2025-03-10 12:38:06,450 - INFO - CLOSED short at 2068.59 | PnL: -0.00% | $-0.36 +2025-03-10 12:38:06,728 - INFO - OPENED LONG at 2071.39 | Stop loss: 2061.03305 | Take profit: 2102.4608499999995 +2025-03-10 12:38:06,785 - INFO - CLOSED long at 2071.36 | PnL: -0.00% | $-0.35 +2025-03-10 12:38:06,785 - INFO - OPENED SHORT at 2071.36 | Stop loss: 2081.7167999999997 | Take profit: 2040.2896 +2025-03-10 12:38:06,839 - INFO - CLOSED short at 2072.75 | PnL: -0.07% | $-0.58 +2025-03-10 12:38:06,938 - INFO - OPENED LONG at 2072.7 | Stop loss: 2062.3365 | Take profit: 2103.7904999999996 +2025-03-10 12:38:07,207 - INFO - CLOSED long at 2070.4 | PnL: -0.11% | $-0.73 +2025-03-10 12:38:07,263 - INFO - OPENED SHORT at 2071.11 | Stop loss: 2081.46555 | Take profit: 2040.0433500000001 +2025-03-10 12:38:07,512 - INFO - CLOSED short at 2067.0 | PnL: 0.20% | $0.34 +2025-03-10 12:38:07,718 - INFO - OPENED LONG at 2065.49 | Stop loss: 2055.1625499999996 | Take profit: 2096.4723499999996 +2025-03-10 12:38:07,823 - INFO - CLOSED long at 2065.26 | PnL: -0.01% | $-0.38 +2025-03-10 12:38:07,935 - INFO - OPENED LONG at 2068.58 | Stop loss: 2058.2371 | Take profit: 2099.6086999999998 +2025-03-10 12:38:08,039 - INFO - CLOSED long at 2069.34 | PnL: 0.04% | $-0.22 +2025-03-10 12:38:08,145 - INFO - OPENED LONG at 2067.59 | Stop loss: 2057.25205 | Take profit: 2098.60385 +2025-03-10 12:38:08,356 - INFO - CLOSED long at 2070.7 | PnL: 0.15% | $0.17 +2025-03-10 12:38:08,552 - INFO - OPENED SHORT at 2068.69 | Stop loss: 2079.03345 | Take profit: 2037.65965 +2025-03-10 12:38:08,598 - INFO - CLOSED short at 2067.84 | PnL: 0.04% | $-0.20 +2025-03-10 12:38:08,645 - INFO - OPENED SHORT at 2067.11 | Stop loss: 2077.44555 | Take profit: 2036.10335 +2025-03-10 12:38:08,797 - INFO - CLOSED short at 2066.1 | PnL: 0.05% | $-0.17 +2025-03-10 12:38:08,847 - INFO - OPENED LONG at 2065.28 | Stop loss: 2054.9536000000003 | Take profit: 2096.2592 +2025-03-10 12:38:08,995 - INFO - CLOSED long at 2070.04 | PnL: 0.23% | $0.44 +2025-03-10 12:38:08,996 - INFO - OPENED SHORT at 2070.04 | Stop loss: 2080.3902 | Take profit: 2038.9894 +2025-03-10 12:38:09,336 - INFO - CLOSED short at 2065.83 | PnL: 0.20% | $0.35 +2025-03-10 12:38:09,645 - INFO - OPENED SHORT at 2061.78 | Stop loss: 2072.0889 | Take profit: 2030.8533000000002 +2025-03-10 12:38:09,953 - INFO - CLOSED short at 2064.96 | PnL: -0.15% | $-0.87 +2025-03-10 12:38:10,091 - INFO - OPENED LONG at 2067.1 | Stop loss: 2056.7644999999998 | Take profit: 2098.1065 +2025-03-10 12:38:10,288 - INFO - CLOSED long at 2064.45 | PnL: -0.13% | $-0.78 +2025-03-10 12:38:10,289 - INFO - OPENED SHORT at 2064.45 | Stop loss: 2074.7722499999995 | Take profit: 2033.4832499999998 +2025-03-10 12:38:10,402 - INFO - CLOSED short at 2062.71 | PnL: 0.08% | $-0.05 +2025-03-10 12:38:10,402 - INFO - OPENED LONG at 2062.71 | Stop loss: 2052.39645 | Take profit: 2093.65065 +2025-03-10 12:38:10,522 - INFO - CLOSED long at 2064.5 | PnL: 0.09% | $-0.04 +2025-03-10 12:38:10,755 - INFO - OPENED LONG at 2060.65 | Stop loss: 2050.34675 | Take profit: 2091.55975 +2025-03-10 12:38:11,141 - INFO - CLOSED long at 2060.91 | PnL: 0.01% | $-0.29 +2025-03-10 12:38:11,142 - INFO - OPENED SHORT at 2060.91 | Stop loss: 2071.2145499999997 | Take profit: 2029.99635 +2025-03-10 12:38:11,196 - INFO - CLOSED short at 2060.3 | PnL: 0.03% | $-0.24 +2025-03-10 12:38:11,196 - INFO - OPENED LONG at 2060.3 | Stop loss: 2049.9985 | Take profit: 2091.2045 +2025-03-10 12:38:11,248 - INFO - CLOSED long at 2061.13 | PnL: 0.04% | $-0.20 +2025-03-10 12:38:11,298 - INFO - OPENED LONG at 2061.9 | Stop loss: 2051.5905000000002 | Take profit: 2092.8285 +2025-03-10 12:38:11,349 - INFO - CLOSED long at 2064.1 | PnL: 0.11% | $0.02 +2025-03-10 12:38:11,350 - INFO - OPENED SHORT at 2064.1 | Stop loss: 2074.4204999999997 | Take profit: 2033.1384999999998 +2025-03-10 12:38:11,454 - INFO - CLOSED short at 2064.33 | PnL: -0.01% | $-0.37 +2025-03-10 12:38:11,455 - INFO - OPENED LONG at 2064.33 | Stop loss: 2054.00835 | Take profit: 2095.2949499999995 +2025-03-10 12:38:11,698 - INFO - CLOSED long at 2063.0 | PnL: -0.06% | $-0.55 +2025-03-10 12:38:11,698 - INFO - OPENED SHORT at 2063.0 | Stop loss: 2073.3149999999996 | Take profit: 2032.055 +2025-03-10 12:38:12,045 - INFO - CLOSED short at 2059.16 | PnL: 0.19% | $0.28 +2025-03-10 12:38:12,091 - INFO - OPENED SHORT at 2059.02 | Stop loss: 2069.3151 | Take profit: 2028.1347 +2025-03-10 12:38:12,138 - INFO - CLOSED short at 2058.89 | PnL: 0.01% | $-0.31 +2025-03-10 12:38:12,237 - INFO - OPENED LONG at 2059.46 | Stop loss: 2049.1627 | Take profit: 2090.3518999999997 +2025-03-10 12:38:12,438 - INFO - CLOSED long at 2055.6 | PnL: -0.19% | $-0.95 +2025-03-10 12:38:12,439 - INFO - OPENED SHORT at 2055.6 | Stop loss: 2065.8779999999997 | Take profit: 2024.7659999999998 +2025-03-10 12:38:12,486 - INFO - CLOSED short at 2054.89 | PnL: 0.03% | $-0.21 +2025-03-10 12:38:12,686 - INFO - OPENED LONG at 2059.8 | Stop loss: 2049.501 | Take profit: 2090.697 +2025-03-10 12:38:12,734 - INFO - CLOSED long at 2061.66 | PnL: 0.09% | $-0.03 +2025-03-10 12:38:12,735 - INFO - OPENED SHORT at 2061.66 | Stop loss: 2071.9682999999995 | Take profit: 2030.7350999999999 +2025-03-10 12:38:12,893 - INFO - CLOSED short at 2061.3 | PnL: 0.02% | $-0.27 +2025-03-10 12:38:13,097 - INFO - OPENED LONG at 2066.01 | Stop loss: 2055.67995 | Take profit: 2097.00015 +2025-03-10 12:38:13,255 - INFO - CLOSED long at 2066.33 | PnL: 0.02% | $-0.27 +2025-03-10 12:38:13,351 - INFO - OPENED SHORT at 2066.79 | Stop loss: 2077.1239499999997 | Take profit: 2035.7881499999999 +2025-03-10 12:38:13,495 - INFO - CLOSED short at 2065.69 | PnL: 0.05% | $-0.15 +2025-03-10 12:38:13,496 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.36155 | Take profit: 2096.67535 +2025-03-10 12:38:13,640 - INFO - CLOSED long at 2074.3 | PnL: 0.42% | $1.02 +2025-03-10 12:38:13,740 - INFO - OPENED LONG at 2075.01 | Stop loss: 2064.63495 | Take profit: 2106.13515 +2025-03-10 12:38:13,896 - INFO - CLOSED long at 2070.01 | PnL: -0.24% | $-1.11 +2025-03-10 12:38:13,997 - INFO - OPENED SHORT at 2073.23 | Stop loss: 2083.59615 | Take profit: 2042.13155 +2025-03-10 12:38:14,048 - INFO - CLOSED short at 2070.0 | PnL: 0.16% | $0.18 +2025-03-10 12:38:14,394 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.3549499999995 | Take profit: 2041.8951499999998 +2025-03-10 12:38:14,444 - INFO - CLOSED short at 2071.49 | PnL: 0.07% | $-0.09 +2025-03-10 12:38:14,444 - INFO - OPENED LONG at 2071.49 | Stop loss: 2061.13255 | Take profit: 2102.5623499999997 +2025-03-10 12:38:14,543 - INFO - CLOSED long at 2067.33 | PnL: -0.20% | $-0.97 +2025-03-10 12:38:14,544 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.6666499999997 | Take profit: 2036.3200499999998 +2025-03-10 12:38:14,800 - INFO - CLOSED short at 2063.97 | PnL: 0.16% | $0.20 +2025-03-10 12:38:14,801 - INFO - OPENED LONG at 2063.97 | Stop loss: 2053.65015 | Take profit: 2094.9295499999994 +2025-03-10 12:39:02,562 - INFO - GPU not available, using CPU +2025-03-10 12:39:02,583 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 12:39:02,583 - INFO - Fetching initial data for ETH/USDT +2025-03-10 12:39:06,057 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 12:39:06,076 - INFO - Initialized environment with 500 candles +2025-03-10 12:39:08,313 - INFO - Starting training for 1000 episodes... +2025-03-10 12:39:08,313 - INFO - Starting training on device: cpu +2025-03-10 12:39:08,314 - INFO - Loading best model from models/trading_agent_best_pnl.pt to resume training +2025-03-10 12:39:08,443 - WARNING - Could not load best model: Weights only load failed. This file can still be loaded, to do so you have two options, do those steps only if you trust the source of the checkpoint. + (1) In PyTorch 2.6, we changed the default value of the `weights_only` argument in `torch.load` from `False` to `True`. Re-running `torch.load` with `weights_only` set to `False` will likely succeed, but it can result in arbitrary code execution. Do it only if you got the file from a trusted source. + (2) Alternatively, to load with `weights_only=True` please check the recommended steps in the following error message. + WeightsUnpickler error: Unsupported global: GLOBAL numpy._core.multiarray.scalar was not an allowed global by default. Please use `torch.serialization.add_safe_globals([scalar])` or the `torch.serialization.safe_globals([scalar])` context manager to allowlist this global if you trust this class/function. + +Check the documentation of torch.load to learn more about types accepted by default with weights_only https://pytorch.org/docs/stable/generated/torch.load.html. +2025-03-10 12:39:08,466 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:39:08,799 - INFO - OPENED LONG at 2059.4 | Stop loss: 2049.103 | Take profit: 2090.2909999999997 +2025-03-10 12:39:08,801 - INFO - CLOSED long at 2060.1 | PnL: 0.03% | $-0.26 +2025-03-10 12:39:08,803 - INFO - OPENED SHORT at 2057.59 | Stop loss: 2067.87795 | Take profit: 2026.7261500000002 +2025-03-10 12:39:08,805 - INFO - CLOSED short at 2056.4 | PnL: 0.06% | $-0.17 +2025-03-10 12:39:08,805 - INFO - OPENED LONG at 2056.4 | Stop loss: 2046.1180000000002 | Take profit: 2087.246 +2025-03-10 12:39:08,806 - INFO - CLOSED long at 2052.7 | PnL: -0.18% | $-1.11 +2025-03-10 12:39:08,807 - INFO - OPENED LONG at 2052.16 | Stop loss: 2041.8991999999998 | Take profit: 2082.9423999999995 +2025-03-10 12:39:08,808 - INFO - CLOSED long at 2052.25 | PnL: 0.00% | $-0.38 +2025-03-10 12:39:08,808 - INFO - OPENED SHORT at 2052.25 | Stop loss: 2062.5112499999996 | Take profit: 2021.46625 +2025-03-10 12:39:08,810 - INFO - CLOSED short at 2050.44 | PnL: 0.09% | $-0.05 +2025-03-10 12:39:08,811 - INFO - OPENED SHORT at 2049.6 | Stop loss: 2059.8479999999995 | Take profit: 2018.856 +2025-03-10 12:39:08,812 - INFO - CLOSED short at 2051.99 | PnL: -0.12% | $-0.85 +2025-03-10 12:39:08,813 - INFO - OPENED SHORT at 2048.48 | Stop loss: 2058.7223999999997 | Take profit: 2017.7528 +2025-03-10 12:39:08,814 - INFO - CLOSED short at 2047.39 | PnL: 0.05% | $-0.18 +2025-03-10 12:39:08,815 - INFO - OPENED LONG at 2047.39 | Stop loss: 2037.1530500000001 | Take profit: 2078.10085 +2025-03-10 12:39:08,816 - INFO - CLOSED long at 2045.99 | PnL: -0.07% | $-0.65 +2025-03-10 12:39:08,817 - INFO - OPENED SHORT at 2045.79 | Stop loss: 2056.0189499999997 | Take profit: 2015.10315 +2025-03-10 12:39:08,818 - INFO - CLOSED short at 2048.13 | PnL: -0.11% | $-0.83 +2025-03-10 12:39:08,818 - INFO - OPENED LONG at 2048.13 | Stop loss: 2037.8893500000001 | Take profit: 2078.8519499999998 +2025-03-10 12:39:08,819 - INFO - CLOSED long at 2047.59 | PnL: -0.03% | $-0.48 +2025-03-10 12:39:08,820 - INFO - OPENED SHORT at 2047.59 | Stop loss: 2057.82795 | Take profit: 2016.8761499999998 +2025-03-10 12:39:08,820 - INFO - CLOSED short at 2050.0 | PnL: -0.12% | $-0.83 +2025-03-10 12:39:08,821 - INFO - OPENED LONG at 2050.0 | Stop loss: 2039.75 | Take profit: 2080.75 +2025-03-10 12:39:08,822 - INFO - CLOSED long at 2053.26 | PnL: 0.16% | $0.22 +2025-03-10 12:39:08,822 - INFO - OPENED SHORT at 2053.26 | Stop loss: 2063.5263 | Take profit: 2022.4611000000002 +2025-03-10 12:39:08,823 - INFO - CLOSED short at 2051.89 | PnL: 0.07% | $-0.13 +2025-03-10 12:39:08,824 - INFO - OPENED SHORT at 2052.3 | Stop loss: 2062.5615 | Take profit: 2021.5155000000002 +2025-03-10 12:39:08,824 - INFO - CLOSED short at 2055.69 | PnL: -0.17% | $-1.00 +2025-03-10 12:39:08,825 - INFO - OPENED SHORT at 2058.39 | Stop loss: 2068.6819499999997 | Take profit: 2027.5141499999997 +2025-03-10 12:39:08,827 - INFO - CLOSED short at 2063.59 | PnL: -0.25% | $-1.32 +2025-03-10 12:39:08,827 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.27205 | Take profit: 2094.54385 +2025-03-10 12:39:08,828 - INFO - CLOSED long at 2061.61 | PnL: -0.10% | $-0.72 +2025-03-10 12:39:08,828 - INFO - OPENED SHORT at 2064.69 | Stop loss: 2075.01345 | Take profit: 2033.71965 +2025-03-10 12:39:08,829 - INFO - CLOSED short at 2063.01 | PnL: 0.08% | $-0.07 +2025-03-10 12:39:08,829 - INFO - OPENED LONG at 2063.01 | Stop loss: 2052.69495 | Take profit: 2093.9551500000002 +2025-03-10 12:39:08,830 - INFO - CLOSED long at 2060.99 | PnL: -0.10% | $-0.72 +2025-03-10 12:39:08,830 - INFO - OPENED SHORT at 2060.99 | Stop loss: 2071.2949499999995 | Take profit: 2030.0751499999997 +2025-03-10 12:39:08,831 - INFO - CLOSED short at 2058.3 | PnL: 0.13% | $0.11 +2025-03-10 12:39:08,831 - INFO - OPENED LONG at 2058.3 | Stop loss: 2048.0085000000004 | Take profit: 2089.1745 +2025-03-10 12:39:08,832 - INFO - CLOSED long at 2060.0 | PnL: 0.08% | $-0.06 +2025-03-10 12:39:08,888 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.5805499999997 | Take profit: 2092.8183499999996 +2025-03-10 12:39:08,972 - INFO - CLOSED long at 2060.31 | PnL: -0.08% | $-0.64 +2025-03-10 12:39:09,016 - INFO - OPENED SHORT at 2059.49 | Stop loss: 2069.7874499999994 | Take profit: 2028.5976499999997 +2025-03-10 12:39:09,104 - INFO - CLOSED short at 2057.89 | PnL: 0.08% | $-0.08 +2025-03-10 12:39:09,147 - INFO - OPENED SHORT at 2057.94 | Stop loss: 2068.2297 | Take profit: 2027.0709 +2025-03-10 12:39:09,229 - INFO - CLOSED short at 2061.79 | PnL: -0.19% | $-1.03 +2025-03-10 12:39:09,275 - INFO - OPENED SHORT at 2061.18 | Stop loss: 2071.4858999999997 | Take profit: 2030.2622999999999 +2025-03-10 12:39:09,321 - INFO - CLOSED short at 2064.32 | PnL: -0.15% | $-0.90 +2025-03-10 12:39:09,321 - INFO - OPENED LONG at 2064.32 | Stop loss: 2053.9984 | Take profit: 2095.2848 +2025-03-10 12:39:09,465 - INFO - CLOSED long at 2068.11 | PnL: 0.18% | $0.29 +2025-03-10 12:39:09,556 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.22945 | Take profit: 2036.8716499999998 +2025-03-10 12:39:09,605 - INFO - CLOSED short at 2071.63 | PnL: -0.18% | $-0.99 +2025-03-10 12:39:09,606 - INFO - OPENED LONG at 2071.63 | Stop loss: 2061.27185 | Take profit: 2102.7044499999997 +2025-03-10 12:39:09,741 - INFO - CLOSED long at 2068.65 | PnL: -0.14% | $-0.85 +2025-03-10 12:39:09,741 - INFO - OPENED SHORT at 2068.65 | Stop loss: 2078.99325 | Take profit: 2037.6202500000002 +2025-03-10 12:39:09,876 - INFO - CLOSED short at 2067.69 | PnL: 0.05% | $-0.19 +2025-03-10 12:39:09,877 - INFO - OPENED LONG at 2067.69 | Stop loss: 2057.35155 | Take profit: 2098.7053499999997 +2025-03-10 12:39:09,922 - INFO - CLOSED long at 2070.26 | PnL: 0.12% | $0.08 +2025-03-10 12:39:09,968 - INFO - OPENED SHORT at 2071.44 | Stop loss: 2081.7972 | Take profit: 2040.3684 +2025-03-10 12:39:10,101 - INFO - CLOSED short at 2072.91 | PnL: -0.07% | $-0.59 +2025-03-10 12:39:10,143 - INFO - OPENED SHORT at 2072.33 | Stop loss: 2082.6916499999998 | Take profit: 2041.24505 +2025-03-10 12:39:10,186 - INFO - CLOSED short at 2071.38 | PnL: 0.05% | $-0.19 +2025-03-10 12:39:10,229 - INFO - OPENED LONG at 2071.41 | Stop loss: 2061.05295 | Take profit: 2102.4811499999996 +2025-03-10 12:39:10,273 - INFO - CLOSED long at 2069.37 | PnL: -0.10% | $-0.68 +2025-03-10 12:39:10,314 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.5455 | Take profit: 2101.9635 +2025-03-10 12:39:10,404 - INFO - CLOSED long at 2070.79 | PnL: -0.01% | $-0.36 +2025-03-10 12:39:10,450 - INFO - OPENED SHORT at 2070.28 | Stop loss: 2080.6313999999998 | Take profit: 2039.2258000000002 +2025-03-10 12:39:10,543 - INFO - CLOSED short at 2067.2 | PnL: 0.15% | $0.16 +2025-03-10 12:39:10,587 - INFO - OPENED SHORT at 2070.36 | Stop loss: 2080.7118 | Take profit: 2039.3046000000002 +2025-03-10 12:39:10,635 - INFO - CLOSED short at 2068.9 | PnL: 0.07% | $-0.10 +2025-03-10 12:39:10,721 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.6866999999997 | Take profit: 2038.2999000000002 +2025-03-10 12:39:10,765 - INFO - CLOSED short at 2069.19 | PnL: 0.01% | $-0.31 +2025-03-10 12:39:10,766 - INFO - OPENED LONG at 2069.19 | Stop loss: 2058.84405 | Take profit: 2100.2278499999998 +2025-03-10 12:39:10,851 - INFO - CLOSED long at 2067.6 | PnL: -0.08% | $-0.60 +2025-03-10 12:39:10,851 - INFO - OPENED SHORT at 2067.6 | Stop loss: 2077.9379999999996 | Take profit: 2036.5859999999998 +2025-03-10 12:39:10,942 - INFO - CLOSED short at 2069.01 | PnL: -0.07% | $-0.56 +2025-03-10 12:39:11,077 - INFO - OPENED LONG at 2066.19 | Stop loss: 2055.85905 | Take profit: 2097.1828499999997 +2025-03-10 12:39:11,165 - INFO - CLOSED long at 2065.08 | PnL: -0.05% | $-0.51 +2025-03-10 12:39:11,166 - INFO - OPENED SHORT at 2065.08 | Stop loss: 2075.4053999999996 | Take profit: 2034.1037999999999 +2025-03-10 12:39:11,213 - INFO - CLOSED short at 2066.18 | PnL: -0.05% | $-0.51 +2025-03-10 12:39:11,213 - INFO - OPENED LONG at 2066.18 | Stop loss: 2055.8491 | Take profit: 2097.1726999999996 +2025-03-10 12:39:11,298 - INFO - CLOSED long at 2068.9 | PnL: 0.13% | $0.10 +2025-03-10 12:39:11,386 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.24705 | Take profit: 2099.61885 +2025-03-10 12:39:11,557 - INFO - CLOSED long at 2071.4 | PnL: 0.14% | $0.12 +2025-03-10 12:39:11,558 - INFO - OPENED SHORT at 2071.4 | Stop loss: 2081.757 | Take profit: 2040.329 +2025-03-10 12:39:11,645 - INFO - CLOSED short at 2071.36 | PnL: 0.00% | $-0.32 +2025-03-10 12:39:11,877 - INFO - OPENED LONG at 2074.29 | Stop loss: 2063.91855 | Take profit: 2105.40435 +2025-03-10 12:39:11,925 - INFO - CLOSED long at 2073.9 | PnL: -0.02% | $-0.39 +2025-03-10 12:39:11,925 - INFO - OPENED SHORT at 2073.9 | Stop loss: 2084.2695 | Take profit: 2042.7915 +2025-03-10 12:39:12,067 - INFO - CLOSED short at 2071.11 | PnL: 0.13% | $0.11 +2025-03-10 12:39:12,068 - INFO - OPENED LONG at 2071.11 | Stop loss: 2060.75445 | Take profit: 2102.17665 +2025-03-10 12:39:12,116 - INFO - CLOSED long at 2069.46 | PnL: -0.08% | $-0.59 +2025-03-10 12:39:12,252 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.3349999999996 | Take profit: 2035.995 +2025-03-10 12:39:12,294 - INFO - CLOSED short at 2067.79 | PnL: -0.04% | $-0.45 +2025-03-10 12:39:12,466 - INFO - OPENED SHORT at 2063.61 | Stop loss: 2073.92805 | Take profit: 2032.65585 +2025-03-10 12:39:12,511 - INFO - CLOSED short at 2065.26 | PnL: -0.08% | $-0.58 +2025-03-10 12:39:12,512 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.9337 | Take profit: 2096.2389 +2025-03-10 12:39:12,597 - INFO - CLOSED long at 2068.58 | PnL: 0.16% | $0.19 +2025-03-10 12:39:12,597 - INFO - OPENED SHORT at 2068.58 | Stop loss: 2078.9228999999996 | Take profit: 2037.5512999999999 +2025-03-10 12:39:12,762 - INFO - CLOSED short at 2067.59 | PnL: 0.05% | $-0.17 +2025-03-10 12:39:12,762 - INFO - OPENED LONG at 2067.59 | Stop loss: 2057.25205 | Take profit: 2098.60385 +2025-03-10 12:39:12,807 - INFO - CLOSED long at 2069.2 | PnL: 0.08% | $-0.07 +2025-03-10 12:39:12,892 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.23205 | Take profit: 2102.66385 +2025-03-10 12:39:12,935 - INFO - CLOSED long at 2070.7 | PnL: -0.04% | $-0.46 +2025-03-10 12:39:13,061 - INFO - OPENED SHORT at 2068.5 | Stop loss: 2078.8424999999997 | Take profit: 2037.4725 +2025-03-10 12:39:13,151 - INFO - CLOSED short at 2067.84 | PnL: 0.03% | $-0.22 +2025-03-10 12:39:13,152 - INFO - OPENED LONG at 2067.84 | Stop loss: 2057.5008000000003 | Take profit: 2098.8576 +2025-03-10 12:39:13,278 - INFO - CLOSED long at 2066.4 | PnL: -0.07% | $-0.54 +2025-03-10 12:39:13,364 - INFO - OPENED LONG at 2065.28 | Stop loss: 2054.9536000000003 | Take profit: 2096.2592 +2025-03-10 12:39:13,408 - INFO - CLOSED long at 2066.39 | PnL: 0.05% | $-0.15 +2025-03-10 12:39:13,408 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.7219499999997 | Take profit: 2035.3941499999999 +2025-03-10 12:39:13,535 - INFO - CLOSED short at 2067.8 | PnL: -0.07% | $-0.53 +2025-03-10 12:39:13,576 - INFO - OPENED SHORT at 2068.18 | Stop loss: 2078.5208999999995 | Take profit: 2037.1572999999999 +2025-03-10 12:39:13,703 - INFO - CLOSED short at 2064.99 | PnL: 0.15% | $0.17 +2025-03-10 12:39:13,838 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.9337 | Take profit: 2096.2389 +2025-03-10 12:39:13,879 - INFO - CLOSED long at 2062.89 | PnL: -0.11% | $-0.67 +2025-03-10 12:39:13,879 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.2044499999997 | Take profit: 2031.9466499999999 +2025-03-10 12:39:14,008 - INFO - CLOSED short at 2059.59 | PnL: 0.16% | $0.19 +2025-03-10 12:39:14,009 - INFO - OPENED LONG at 2059.59 | Stop loss: 2049.29205 | Take profit: 2090.48385 +2025-03-10 12:39:14,050 - INFO - CLOSED long at 2061.3 | PnL: 0.08% | $-0.05 +2025-03-10 12:39:14,051 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.6065 | Take profit: 2030.3805000000002 +2025-03-10 12:39:14,221 - INFO - CLOSED short at 2067.1 | PnL: -0.28% | $-1.19 +2025-03-10 12:39:14,263 - INFO - OPENED SHORT at 2065.54 | Stop loss: 2075.8677 | Take profit: 2034.5569 +2025-03-10 12:39:14,346 - INFO - CLOSED short at 2064.45 | PnL: 0.05% | $-0.14 +2025-03-10 12:39:14,429 - INFO - OPENED SHORT at 2062.71 | Stop loss: 2073.02355 | Take profit: 2031.76935 +2025-03-10 12:39:14,470 - INFO - CLOSED short at 2062.89 | PnL: -0.01% | $-0.33 +2025-03-10 12:39:14,471 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.57555 | Take profit: 2093.83335 +2025-03-10 12:39:14,556 - INFO - CLOSED long at 2063.5 | PnL: 0.03% | $-0.21 +2025-03-10 12:39:14,557 - INFO - OPENED SHORT at 2063.5 | Stop loss: 2073.8174999999997 | Take profit: 2032.5475 +2025-03-10 12:39:14,645 - INFO - CLOSED short at 2060.9 | PnL: 0.13% | $0.08 +2025-03-10 12:39:14,735 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.59555 | Take profit: 2089.7733499999995 +2025-03-10 12:39:14,867 - INFO - CLOSED long at 2061.8 | PnL: 0.14% | $0.13 +2025-03-10 12:39:14,867 - INFO - OPENED SHORT at 2061.8 | Stop loss: 2072.109 | Take profit: 2030.873 +2025-03-10 12:39:14,908 - INFO - CLOSED short at 2064.7 | PnL: -0.14% | $-0.73 +2025-03-10 12:39:14,909 - INFO - OPENED LONG at 2064.7 | Stop loss: 2054.3765 | Take profit: 2095.6704999999997 +2025-03-10 12:39:14,951 - INFO - CLOSED long at 2062.61 | PnL: -0.10% | $-0.61 +2025-03-10 12:39:14,995 - INFO - OPENED SHORT at 2060.91 | Stop loss: 2071.2145499999997 | Take profit: 2029.99635 +2025-03-10 12:39:15,077 - INFO - CLOSED short at 2061.13 | PnL: -0.01% | $-0.33 +2025-03-10 12:39:15,119 - INFO - OPENED SHORT at 2061.9 | Stop loss: 2072.2095 | Take profit: 2030.9715 +2025-03-10 12:39:15,162 - INFO - CLOSED short at 2064.1 | PnL: -0.11% | $-0.61 +2025-03-10 12:39:15,163 - INFO - OPENED LONG at 2064.1 | Stop loss: 2053.7795 | Take profit: 2095.0615 +2025-03-10 12:39:15,208 - INFO - CLOSED long at 2065.36 | PnL: 0.06% | $-0.11 +2025-03-10 12:39:15,208 - INFO - OPENED SHORT at 2065.36 | Stop loss: 2075.6868 | Take profit: 2034.3796000000002 +2025-03-10 12:39:15,424 - INFO - CLOSED short at 2063.53 | PnL: 0.09% | $-0.03 +2025-03-10 12:39:15,470 - INFO - OPENED SHORT at 2063.0 | Stop loss: 2073.3149999999996 | Take profit: 2032.055 +2025-03-10 12:39:15,642 - INFO - CLOSED short at 2060.7 | PnL: 0.11% | $0.03 +2025-03-10 12:39:15,685 - INFO - OPENED SHORT at 2061.09 | Stop loss: 2071.39545 | Take profit: 2030.1736500000002 +2025-03-10 12:39:15,727 - INFO - CLOSED short at 2059.61 | PnL: 0.07% | $-0.08 +2025-03-10 12:39:15,812 - INFO - OPENED SHORT at 2059.02 | Stop loss: 2069.3151 | Take profit: 2028.1347 +2025-03-10 12:39:15,937 - INFO - CLOSED short at 2059.46 | PnL: -0.02% | $-0.36 +2025-03-10 12:39:16,020 - INFO - OPENED LONG at 2058.28 | Stop loss: 2047.9886000000001 | Take profit: 2089.1542 +2025-03-10 12:39:16,189 - INFO - CLOSED long at 2054.83 | PnL: -0.17% | $-0.78 +2025-03-10 12:39:16,232 - INFO - OPENED SHORT at 2056.71 | Stop loss: 2066.9935499999997 | Take profit: 2025.85935 +2025-03-10 12:39:16,325 - INFO - CLOSED short at 2059.8 | PnL: -0.15% | $-0.72 +2025-03-10 12:39:16,326 - INFO - OPENED LONG at 2059.8 | Stop loss: 2049.501 | Take profit: 2090.697 +2025-03-10 12:39:16,416 - INFO - CLOSED long at 2061.5 | PnL: 0.08% | $-0.05 +2025-03-10 12:39:16,503 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.9935 | Take profit: 2092.2195 +2025-03-10 12:39:16,546 - INFO - CLOSED long at 2062.69 | PnL: 0.07% | $-0.09 +2025-03-10 12:39:16,589 - INFO - OPENED SHORT at 2063.4 | Stop loss: 2073.717 | Take profit: 2032.449 +2025-03-10 12:39:16,719 - INFO - CLOSED short at 2063.9 | PnL: -0.02% | $-0.36 +2025-03-10 12:39:16,720 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.5805 | Take profit: 2094.8585 +2025-03-10 12:39:16,855 - INFO - CLOSED long at 2066.34 | PnL: 0.12% | $0.05 +2025-03-10 12:39:16,855 - INFO - OPENED SHORT at 2066.34 | Stop loss: 2076.6717 | Take profit: 2035.3449 +2025-03-10 12:39:16,897 - INFO - CLOSED short at 2066.79 | PnL: -0.02% | $-0.35 +2025-03-10 12:39:16,897 - INFO - OPENED LONG at 2066.79 | Stop loss: 2056.45605 | Take profit: 2097.7918499999996 +2025-03-10 12:39:16,942 - INFO - CLOSED long at 2067.33 | PnL: 0.03% | $-0.21 +2025-03-10 12:39:17,074 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.44105 | Take profit: 2100.8368499999997 +2025-03-10 12:39:17,157 - INFO - CLOSED long at 2074.3 | PnL: 0.22% | $0.33 +2025-03-10 12:39:17,694 - INFO - OPENED SHORT at 2069.03 | Stop loss: 2079.37515 | Take profit: 2037.9945500000001 +2025-03-10 12:39:17,840 - INFO - CLOSED short at 2072.99 | PnL: -0.19% | $-0.83 +2025-03-10 12:39:17,840 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6250499999996 | Take profit: 2104.0848499999997 +2025-03-10 12:39:17,931 - INFO - CLOSED long at 2069.87 | PnL: -0.15% | $-0.70 +2025-03-10 12:39:17,932 - INFO - OPENED SHORT at 2069.87 | Stop loss: 2080.21935 | Take profit: 2038.8219499999998 +2025-03-10 12:39:18,067 - INFO - CLOSED short at 2065.7 | PnL: 0.20% | $0.28 +2025-03-10 12:39:18,200 - INFO - OPENED SHORT at 2063.97 | Stop loss: 2074.2898499999997 | Take profit: 2033.0104499999998 +2025-03-10 12:39:18,376 - INFO - CLOSED short at 2064.31 | PnL: -0.02% | $-0.33 +2025-03-10 12:39:18,376 - INFO - OPENED LONG at 2064.31 | Stop loss: 2053.98845 | Take profit: 2095.27465 +2025-03-10 12:39:18,748 - INFO - CLOSED long at 2071.59 | PnL: 0.35% | $0.70 +2025-03-10 12:39:18,790 - INFO - OPENED SHORT at 2070.2 | Stop loss: 2080.5509999999995 | Take profit: 2039.1469999999997 +2025-03-10 12:39:18,837 - INFO - CLOSED short at 2071.35 | PnL: -0.06% | $-0.44 +2025-03-10 12:39:18,837 - INFO - OPENED LONG at 2071.35 | Stop loss: 2060.99325 | Take profit: 2102.4202499999997 +2025-03-10 12:39:19,054 - INFO - CLOSED long at 2070.35 | PnL: -0.05% | $-0.41 +2025-03-10 12:39:19,054 - INFO - OPENED SHORT at 2070.35 | Stop loss: 2080.7017499999997 | Take profit: 2039.2947499999998 +2025-03-10 12:39:19,099 - INFO - CLOSED short at 2070.61 | PnL: -0.01% | $-0.31 +2025-03-10 12:39:19,100 - INFO - OPENED LONG at 2070.61 | Stop loss: 2060.25695 | Take profit: 2101.6691499999997 +2025-03-10 12:39:19,271 - INFO - CLOSED long at 2070.67 | PnL: 0.00% | $-0.27 +2025-03-10 12:39:19,364 - INFO - OPENED LONG at 2071.61 | Stop loss: 2061.2519500000003 | Take profit: 2102.68415 +2025-03-10 12:39:19,715 - INFO - CLOSED long at 2076.9 | PnL: 0.26% | $0.43 +2025-03-10 12:39:19,716 - INFO - OPENED SHORT at 2076.9 | Stop loss: 2087.2844999999998 | Take profit: 2045.7465 +2025-03-10 12:39:19,804 - INFO - CLOSED short at 2074.0 | PnL: 0.14% | $0.11 +2025-03-10 12:39:19,805 - INFO - OPENED LONG at 2074.0 | Stop loss: 2063.63 | Take profit: 2105.1099999999997 +2025-03-10 12:39:19,855 - INFO - CLOSED long at 2072.09 | PnL: -0.09% | $-0.53 +2025-03-10 12:39:19,855 - INFO - OPENED SHORT at 2072.09 | Stop loss: 2082.45045 | Take profit: 2041.0086500000002 +2025-03-10 12:39:19,903 - INFO - CLOSED short at 2069.97 | PnL: 0.10% | $0.01 +2025-03-10 12:39:19,948 - INFO - OPENED LONG at 2067.7 | Stop loss: 2057.3615 | Take profit: 2098.7155 +2025-03-10 12:39:20,384 - INFO - CLOSED long at 2070.1 | PnL: 0.12% | $0.04 +2025-03-10 12:39:20,386 - INFO - OPENED SHORT at 2070.1 | Stop loss: 2080.4504999999995 | Take profit: 2039.0484999999999 +2025-03-10 12:39:20,529 - INFO - CLOSED short at 2065.7 | PnL: 0.21% | $0.31 +2025-03-10 12:39:20,529 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.3714999999997 | Take profit: 2096.6854999999996 +2025-03-10 12:39:20,756 - INFO - CLOSED long at 2062.34 | PnL: -0.16% | $-0.73 +2025-03-10 12:39:20,757 - INFO - OPENED SHORT at 2062.34 | Stop loss: 2072.6517 | Take profit: 2031.4049000000002 +2025-03-10 12:39:20,801 - INFO - CLOSED short at 2063.98 | PnL: -0.08% | $-0.49 +2025-03-10 12:39:20,802 - INFO - OPENED LONG at 2063.98 | Stop loss: 2053.6601 | Take profit: 2094.9397 +2025-03-10 12:39:20,888 - INFO - CLOSED long at 2065.06 | PnL: 0.05% | $-0.13 +2025-03-10 12:39:20,889 - INFO - OPENED SHORT at 2065.06 | Stop loss: 2075.3853 | Take profit: 2034.0840999999998 +2025-03-10 12:39:20,933 - INFO - CLOSED short at 2064.11 | PnL: 0.05% | $-0.15 +2025-03-10 12:39:20,980 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.1775 | Take profit: 2095.4674999999997 +2025-03-10 12:39:21,026 - INFO - CLOSED long at 2066.33 | PnL: 0.09% | $-0.03 +2025-03-10 12:39:21,027 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6616499999996 | Take profit: 2035.33505 +2025-03-10 12:39:21,112 - INFO - CLOSED short at 2060.7 | PnL: 0.27% | $0.47 +2025-03-10 12:39:21,113 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3965 | Take profit: 2091.6105 +2025-03-10 12:39:21,326 - INFO - CLOSED long at 2056.77 | PnL: -0.19% | $-0.79 +2025-03-10 12:39:21,370 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.7449500000002 | Take profit: 2083.80515 +2025-03-10 12:39:21,413 - INFO - CLOSED long at 2049.21 | PnL: -0.19% | $-0.77 +2025-03-10 12:39:21,414 - INFO - OPENED SHORT at 2049.21 | Stop loss: 2059.45605 | Take profit: 2018.47185 +2025-03-10 12:39:21,457 - INFO - CLOSED short at 2049.5 | PnL: -0.01% | $-0.30 +2025-03-10 12:39:21,670 - INFO - OPENED LONG at 2057.89 | Stop loss: 2047.6005499999999 | Take profit: 2088.7583499999996 +2025-03-10 12:39:21,713 - INFO - CLOSED long at 2062.83 | PnL: 0.24% | $0.37 +2025-03-10 12:39:21,756 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.2194999999997 | Take profit: 2032.9415000000001 +2025-03-10 12:39:21,928 - INFO - CLOSED short at 2065.12 | PnL: -0.06% | $-0.42 +2025-03-10 12:39:22,053 - INFO - OPENED SHORT at 2066.59 | Stop loss: 2076.92295 | Take profit: 2035.5911500000002 +2025-03-10 12:39:22,220 - INFO - CLOSED short at 2060.7 | PnL: 0.29% | $0.49 +2025-03-10 12:39:22,268 - INFO - OPENED SHORT at 2061.84 | Stop loss: 2072.1492 | Take profit: 2030.9124000000002 +2025-03-10 12:39:22,453 - INFO - CLOSED short at 2070.24 | PnL: -0.41% | $-1.35 +2025-03-10 12:39:22,453 - INFO - OPENED LONG at 2070.24 | Stop loss: 2059.8887999999997 | Take profit: 2101.2935999999995 +2025-03-10 12:39:22,542 - INFO - CLOSED long at 2069.81 | PnL: -0.02% | $-0.32 +2025-03-10 12:39:22,542 - INFO - OPENED SHORT at 2069.81 | Stop loss: 2080.1590499999998 | Take profit: 2038.7628499999998 +2025-03-10 12:39:22,585 - INFO - CLOSED short at 2070.41 | PnL: -0.03% | $-0.34 +2025-03-10 12:39:22,585 - INFO - OPENED LONG at 2070.41 | Stop loss: 2060.05795 | Take profit: 2101.4661499999997 +2025-03-10 12:39:22,628 - INFO - CLOSED long at 2073.49 | PnL: 0.15% | $0.13 +2025-03-10 12:39:22,628 - INFO - OPENED SHORT at 2073.49 | Stop loss: 2083.8574499999995 | Take profit: 2042.3876499999997 +2025-03-10 12:39:22,672 - INFO - CLOSED short at 2074.05 | PnL: -0.03% | $-0.33 +2025-03-10 12:39:22,798 - INFO - OPENED SHORT at 2071.8 | Stop loss: 2082.159 | Take profit: 2040.7230000000002 +2025-03-10 12:39:22,973 - INFO - STOP LOSS hit for short at 2082.159 | PnL: -0.50% | $-1.55 +2025-03-10 12:39:23,016 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.9424499999996 | Take profit: 2059.1326499999996 +2025-03-10 12:39:23,061 - INFO - CLOSED short at 2103.02 | PnL: -0.60% | $-1.76 +2025-03-10 12:39:23,153 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2376999999997 | Take profit: 2107.4469 +2025-03-10 12:39:23,281 - INFO - CLOSED short at 2137.59 | PnL: 0.09% | $-0.02 +2025-03-10 12:39:23,282 - INFO - OPENED LONG at 2137.59 | Stop loss: 2126.90205 | Take profit: 2169.65385 +2025-03-10 12:39:23,327 - INFO - CLOSED long at 2141.41 | PnL: 0.18% | $0.19 +2025-03-10 12:39:23,328 - INFO - OPENED SHORT at 2141.41 | Stop loss: 2152.11705 | Take profit: 2109.28885 +2025-03-10 12:39:23,501 - INFO - CLOSED short at 2134.78 | PnL: 0.31% | $0.51 +2025-03-10 12:39:23,502 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.1061 | Take profit: 2166.8017 +2025-03-10 12:39:23,585 - INFO - CLOSED long at 2127.3 | PnL: -0.35% | $-1.11 +2025-03-10 12:39:23,628 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.04655 | Take profit: 2160.6203499999997 +2025-03-10 12:39:23,671 - INFO - CLOSED long at 2121.09 | PnL: -0.36% | $-1.11 +2025-03-10 12:39:23,758 - INFO - OPENED LONG at 2117.24 | Stop loss: 2106.6537999999996 | Take profit: 2148.9985999999994 +2025-03-10 12:39:23,799 - INFO - CLOSED long at 2119.93 | PnL: 0.13% | $0.06 +2025-03-10 12:39:23,800 - INFO - OPENED SHORT at 2119.93 | Stop loss: 2130.5296499999995 | Take profit: 2088.13105 +2025-03-10 12:39:23,891 - INFO - CLOSED short at 2118.52 | PnL: 0.07% | $-0.08 +2025-03-10 12:39:23,936 - INFO - OPENED SHORT at 2119.14 | Stop loss: 2129.7356999999997 | Take profit: 2087.3529 +2025-03-10 12:39:24,063 - INFO - CLOSED short at 2107.43 | PnL: 0.55% | $1.08 +2025-03-10 12:39:24,063 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.8928499999997 | Take profit: 2139.0414499999997 +2025-03-10 12:39:24,105 - INFO - CLOSED long at 2110.6 | PnL: 0.15% | $0.12 +2025-03-10 12:39:24,197 - INFO - OPENED LONG at 2112.09 | Stop loss: 2101.52955 | Take profit: 2143.77135 +2025-03-10 12:39:24,287 - INFO - CLOSED long at 2112.46 | PnL: 0.02% | $-0.20 +2025-03-10 12:39:24,330 - INFO - OPENED SHORT at 2113.24 | Stop loss: 2123.8061999999995 | Take profit: 2081.5413999999996 +2025-03-10 12:39:24,374 - INFO - CLOSED short at 2112.99 | PnL: 0.01% | $-0.21 +2025-03-10 12:39:24,374 - INFO - OPENED LONG at 2112.99 | Stop loss: 2102.42505 | Take profit: 2144.6848499999996 +2025-03-10 12:39:24,419 - INFO - CLOSED long at 2120.81 | PnL: 0.37% | $0.65 +2025-03-10 12:39:24,420 - INFO - OPENED SHORT at 2120.81 | Stop loss: 2131.41405 | Take profit: 2088.9978499999997 +2025-03-10 12:39:24,463 - INFO - CLOSED short at 2116.48 | PnL: 0.20% | $0.25 +2025-03-10 12:39:24,463 - INFO - OPENED LONG at 2116.48 | Stop loss: 2105.8976 | Take profit: 2148.2272 +2025-03-10 12:39:24,508 - INFO - CLOSED long at 2114.8 | PnL: -0.08% | $-0.44 +2025-03-10 12:39:24,508 - INFO - OPENED SHORT at 2114.8 | Stop loss: 2125.374 | Take profit: 2083.078 +2025-03-10 12:39:24,590 - INFO - CLOSED short at 2108.71 | PnL: 0.29% | $0.46 +2025-03-10 12:39:24,590 - INFO - OPENED LONG at 2108.71 | Stop loss: 2098.16645 | Take profit: 2140.3406499999996 +2025-03-10 12:39:24,677 - INFO - CLOSED long at 2108.06 | PnL: -0.03% | $-0.32 +2025-03-10 12:39:24,768 - INFO - OPENED SHORT at 2100.5 | Stop loss: 2111.0024999999996 | Take profit: 2068.9925 +2025-03-10 12:39:24,851 - INFO - CLOSED short at 2099.53 | PnL: 0.05% | $-0.13 +2025-03-10 12:39:24,947 - INFO - OPENED LONG at 2102.19 | Stop loss: 2091.67905 | Take profit: 2133.7228499999997 +2025-03-10 12:39:24,991 - INFO - CLOSED long at 2102.29 | PnL: 0.00% | $-0.23 +2025-03-10 12:39:24,991 - INFO - OPENED SHORT at 2102.29 | Stop loss: 2112.80145 | Take profit: 2070.75565 +2025-03-10 12:39:25,038 - INFO - CLOSED short at 2099.25 | PnL: 0.14% | $0.11 +2025-03-10 12:39:25,084 - INFO - OPENED SHORT at 2098.9 | Stop loss: 2109.3945 | Take profit: 2067.4165000000003 +2025-03-10 12:39:25,132 - INFO - CLOSED short at 2100.69 | PnL: -0.09% | $-0.45 +2025-03-10 12:39:25,178 - INFO - OPENED SHORT at 2104.83 | Stop loss: 2115.3541499999997 | Take profit: 2073.25755 +2025-03-10 12:39:25,222 - INFO - CLOSED short at 2106.39 | PnL: -0.07% | $-0.42 +2025-03-10 12:39:25,352 - INFO - OPENED SHORT at 2104.68 | Stop loss: 2115.2033999999994 | Take profit: 2073.1097999999997 +2025-03-10 12:39:25,394 - INFO - CLOSED short at 2101.51 | PnL: 0.15% | $0.12 +2025-03-10 12:39:25,437 - INFO - OPENED SHORT at 2099.59 | Stop loss: 2110.08795 | Take profit: 2068.0961500000003 +2025-03-10 12:39:25,484 - INFO - CLOSED short at 2100.02 | PnL: -0.02% | $-0.29 +2025-03-10 12:39:25,617 - INFO - OPENED SHORT at 2093.46 | Stop loss: 2103.9273 | Take profit: 2062.0581 +2025-03-10 12:39:25,661 - INFO - CLOSED short at 2093.33 | PnL: 0.01% | $-0.22 +2025-03-10 12:39:25,662 - INFO - OPENED LONG at 2093.33 | Stop loss: 2082.86335 | Take profit: 2124.72995 +2025-03-10 12:39:25,753 - INFO - CLOSED long at 2091.1 | PnL: -0.11% | $-0.49 +2025-03-10 12:39:25,754 - INFO - OPENED SHORT at 2091.1 | Stop loss: 2101.5554999999995 | Take profit: 2059.7335 +2025-03-10 12:39:25,800 - INFO - CLOSED short at 2094.72 | PnL: -0.17% | $-0.64 +2025-03-10 12:39:25,800 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.2464 | Take profit: 2126.1407999999997 +2025-03-10 12:39:25,933 - INFO - STOP LOSS hit for long at 2084.2464 | PnL: -0.50% | $-1.40 +2025-03-10 12:39:26,020 - INFO - OPENED LONG at 2083.97 | Stop loss: 2073.5501499999996 | Take profit: 2115.2295499999996 +2025-03-10 12:39:26,161 - INFO - CLOSED long at 2081.49 | PnL: -0.12% | $-0.50 +2025-03-10 12:39:26,161 - INFO - OPENED SHORT at 2081.49 | Stop loss: 2091.8974499999995 | Take profit: 2050.26765 +2025-03-10 12:39:26,203 - INFO - CLOSED short at 2080.38 | PnL: 0.05% | $-0.11 +2025-03-10 12:39:26,338 - INFO - OPENED SHORT at 2085.09 | Stop loss: 2095.51545 | Take profit: 2053.81365 +2025-03-10 12:39:26,462 - INFO - CLOSED short at 2086.57 | PnL: -0.07% | $-0.38 +2025-03-10 12:39:26,462 - INFO - OPENED LONG at 2086.57 | Stop loss: 2076.13715 | Take profit: 2117.86855 +2025-03-10 12:39:26,588 - INFO - CLOSED long at 2084.72 | PnL: -0.09% | $-0.42 +2025-03-10 12:39:26,648 - INFO - OPENED LONG at 2085.83 | Stop loss: 2075.40085 | Take profit: 2117.1174499999997 +2025-03-10 12:39:26,844 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 22.7% in downtrends | Avg Win=$0.25, Avg Loss=$-0.48 +2025-03-10 12:39:26,845 - INFO - Episode 0: Reward=-99.44, Balance=$55.47, Win Rate=24.8%, Trades=149, Episode PnL=$-24.03, Total PnL=$-44.53, Max Drawdown=44.5%, Pred Accuracy=98.8% +2025-03-10 12:39:26,990 - INFO - Model saved to models/trading_agent_best_reward.pt +2025-03-10 12:39:26,990 - INFO - New best reward model saved: -99.44 +2025-03-10 12:39:27,121 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 12:39:27,121 - INFO - New best PnL model saved: $-24.03 +2025-03-10 12:39:27,222 - INFO - Model saved to models/trading_agent_best_winrate.pt +2025-03-10 12:39:27,223 - INFO - New best win rate model saved: 24.8% +2025-03-10 12:39:27,323 - INFO - Model saved to checkpoints/trading_agent_episode_0.pt +2025-03-10 12:39:27,324 - INFO - Checkpoint saved at episode 0 +2025-03-10 12:39:27,343 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:39:27,661 - INFO - OPENED LONG at 2059.4 | Stop loss: 2049.103 | Take profit: 2090.2909999999997 +2025-03-10 12:39:27,707 - INFO - CLOSED long at 2057.59 | PnL: -0.09% | $-0.75 +2025-03-10 12:39:27,798 - INFO - OPENED LONG at 2059.4 | Stop loss: 2049.103 | Take profit: 2090.2909999999997 +2025-03-10 12:39:27,899 - INFO - CLOSED long at 2060.51 | PnL: 0.05% | $-0.18 +2025-03-10 12:39:27,899 - INFO - OPENED SHORT at 2060.51 | Stop loss: 2070.81255 | Take profit: 2029.6023500000001 +2025-03-10 12:39:27,947 - INFO - CLOSED short at 2057.52 | PnL: 0.15% | $0.18 +2025-03-10 12:39:28,084 - INFO - OPENED LONG at 2057.9 | Stop loss: 2047.6105 | Take profit: 2088.7684999999997 +2025-03-10 12:39:28,228 - INFO - CLOSED long at 2055.2 | PnL: -0.13% | $-0.92 +2025-03-10 12:39:28,273 - INFO - OPENED LONG at 2058.59 | Stop loss: 2048.29705 | Take profit: 2089.4688499999997 +2025-03-10 12:39:28,321 - INFO - CLOSED long at 2056.4 | PnL: -0.11% | $-0.81 +2025-03-10 12:39:28,369 - INFO - OPENED LONG at 2055.39 | Stop loss: 2045.11305 | Take profit: 2086.2208499999997 +2025-03-10 12:39:28,456 - INFO - CLOSED long at 2052.7 | PnL: -0.13% | $-0.90 +2025-03-10 12:39:28,503 - INFO - OPENED SHORT at 2051.66 | Stop loss: 2061.9183 | Take profit: 2020.8850999999997 +2025-03-10 12:39:28,726 - INFO - CLOSED short at 2050.44 | PnL: 0.06% | $-0.16 +2025-03-10 12:39:28,727 - INFO - OPENED LONG at 2050.44 | Stop loss: 2040.1878000000002 | Take profit: 2081.1965999999998 +2025-03-10 12:39:28,771 - INFO - CLOSED long at 2049.49 | PnL: -0.05% | $-0.56 +2025-03-10 12:39:28,772 - INFO - OPENED SHORT at 2049.49 | Stop loss: 2059.7374499999996 | Take profit: 2018.7476499999998 +2025-03-10 12:39:28,861 - INFO - CLOSED short at 2049.6 | PnL: -0.01% | $-0.40 +2025-03-10 12:39:28,862 - INFO - OPENED LONG at 2049.6 | Stop loss: 2039.3519999999999 | Take profit: 2080.3439999999996 +2025-03-10 12:39:28,907 - INFO - CLOSED long at 2051.99 | PnL: 0.12% | $0.06 +2025-03-10 12:39:28,952 - INFO - OPENED SHORT at 2049.61 | Stop loss: 2059.85805 | Take profit: 2018.8658500000001 +2025-03-10 12:39:29,125 - INFO - CLOSED short at 2046.58 | PnL: 0.15% | $0.18 +2025-03-10 12:39:29,126 - INFO - OPENED LONG at 2046.58 | Stop loss: 2036.3471 | Take profit: 2077.2787 +2025-03-10 12:39:29,169 - INFO - CLOSED long at 2047.4 | PnL: 0.04% | $-0.23 +2025-03-10 12:39:29,169 - INFO - OPENED SHORT at 2047.4 | Stop loss: 2057.6369999999997 | Take profit: 2016.689 +2025-03-10 12:39:29,216 - INFO - CLOSED short at 2047.2 | PnL: 0.01% | $-0.34 +2025-03-10 12:39:29,353 - INFO - OPENED LONG at 2045.79 | Stop loss: 2035.56105 | Take profit: 2076.4768499999996 +2025-03-10 12:39:29,396 - INFO - CLOSED long at 2048.13 | PnL: 0.11% | $0.05 +2025-03-10 12:39:29,570 - INFO - OPENED SHORT at 2050.24 | Stop loss: 2060.4911999999995 | Take profit: 2019.4863999999998 +2025-03-10 12:39:29,613 - INFO - CLOSED short at 2049.89 | PnL: 0.02% | $-0.32 +2025-03-10 12:39:29,740 - INFO - OPENED SHORT at 2051.89 | Stop loss: 2062.1494499999994 | Take profit: 2021.1116499999998 +2025-03-10 12:39:29,870 - INFO - CLOSED short at 2057.01 | PnL: -0.25% | $-1.33 +2025-03-10 12:39:29,958 - INFO - OPENED SHORT at 2058.39 | Stop loss: 2068.6819499999997 | Take profit: 2027.5141499999997 +2025-03-10 12:39:30,003 - INFO - CLOSED short at 2060.13 | PnL: -0.08% | $-0.69 +2025-03-10 12:39:30,086 - INFO - OPENED SHORT at 2061.49 | Stop loss: 2071.7974499999996 | Take profit: 2030.5676499999997 +2025-03-10 12:39:30,176 - INFO - CLOSED short at 2064.61 | PnL: -0.15% | $-0.93 +2025-03-10 12:39:30,177 - INFO - OPENED LONG at 2064.61 | Stop loss: 2054.28695 | Take profit: 2095.57915 +2025-03-10 12:39:30,219 - INFO - CLOSED long at 2063.59 | PnL: -0.05% | $-0.55 +2025-03-10 12:39:30,312 - INFO - OPENED LONG at 2064.69 | Stop loss: 2054.36655 | Take profit: 2095.6603499999997 +2025-03-10 12:39:30,442 - INFO - CLOSED long at 2058.3 | PnL: -0.31% | $-1.50 +2025-03-10 12:39:30,533 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.5805499999997 | Take profit: 2092.8183499999996 +2025-03-10 12:39:30,792 - INFO - CLOSED long at 2057.94 | PnL: -0.19% | $-1.05 +2025-03-10 12:39:30,793 - INFO - OPENED SHORT at 2057.94 | Stop loss: 2068.2297 | Take profit: 2027.0709 +2025-03-10 12:39:30,920 - INFO - CLOSED short at 2061.18 | PnL: -0.16% | $-0.91 +2025-03-10 12:39:31,094 - INFO - OPENED SHORT at 2068.11 | Stop loss: 2078.45055 | Take profit: 2037.08835 +2025-03-10 12:39:31,178 - INFO - CLOSED short at 2067.89 | PnL: 0.01% | $-0.31 +2025-03-10 12:39:31,178 - INFO - OPENED LONG at 2067.89 | Stop loss: 2057.55055 | Take profit: 2098.9083499999997 +2025-03-10 12:39:31,220 - INFO - CLOSED long at 2071.63 | PnL: 0.18% | $0.28 +2025-03-10 12:39:31,220 - INFO - OPENED SHORT at 2071.63 | Stop loss: 2081.9881499999997 | Take profit: 2040.55555 +2025-03-10 12:39:31,266 - INFO - CLOSED short at 2070.99 | PnL: 0.03% | $-0.24 +2025-03-10 12:39:31,266 - INFO - OPENED LONG at 2070.99 | Stop loss: 2060.63505 | Take profit: 2102.0548499999995 +2025-03-10 12:39:31,309 - INFO - CLOSED long at 2069.6 | PnL: -0.07% | $-0.59 +2025-03-10 12:39:31,310 - INFO - OPENED SHORT at 2069.6 | Stop loss: 2079.948 | Take profit: 2038.5559999999998 +2025-03-10 12:39:31,357 - INFO - CLOSED short at 2068.65 | PnL: 0.05% | $-0.19 +2025-03-10 12:39:31,357 - INFO - OPENED LONG at 2068.65 | Stop loss: 2058.30675 | Take profit: 2099.67975 +2025-03-10 12:39:31,403 - INFO - CLOSED long at 2068.99 | PnL: 0.02% | $-0.29 +2025-03-10 12:39:31,447 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.5605 | Take profit: 2098.9184999999998 +2025-03-10 12:39:31,493 - INFO - CLOSED long at 2067.69 | PnL: -0.01% | $-0.38 +2025-03-10 12:39:31,494 - INFO - OPENED SHORT at 2067.69 | Stop loss: 2078.02845 | Take profit: 2036.67465 +2025-03-10 12:39:31,666 - INFO - CLOSED short at 2075.1 | PnL: -0.36% | $-1.58 +2025-03-10 12:39:31,764 - INFO - OPENED SHORT at 2072.33 | Stop loss: 2082.6916499999998 | Take profit: 2041.24505 +2025-03-10 12:39:31,810 - INFO - CLOSED short at 2071.38 | PnL: 0.05% | $-0.18 +2025-03-10 12:39:31,979 - INFO - OPENED SHORT at 2072.8 | Stop loss: 2083.1639999999998 | Take profit: 2041.708 +2025-03-10 12:39:32,363 - INFO - CLOSED short at 2069.19 | PnL: 0.17% | $0.25 +2025-03-10 12:39:32,364 - INFO - OPENED LONG at 2069.19 | Stop loss: 2058.84405 | Take profit: 2100.2278499999998 +2025-03-10 12:39:32,455 - INFO - CLOSED long at 2067.6 | PnL: -0.08% | $-0.60 +2025-03-10 12:39:32,627 - INFO - OPENED SHORT at 2065.99 | Stop loss: 2076.3199499999996 | Take profit: 2035.0001499999998 +2025-03-10 12:39:32,674 - INFO - CLOSED short at 2066.19 | PnL: -0.01% | $-0.37 +2025-03-10 12:39:32,815 - INFO - OPENED SHORT at 2066.18 | Stop loss: 2076.5108999999998 | Take profit: 2035.1872999999998 +2025-03-10 12:39:32,857 - INFO - CLOSED short at 2068.76 | PnL: -0.12% | $-0.75 +2025-03-10 12:39:32,858 - INFO - OPENED LONG at 2068.76 | Stop loss: 2058.4162 | Take profit: 2099.7914 +2025-03-10 12:39:32,907 - INFO - CLOSED long at 2068.9 | PnL: 0.01% | $-0.31 +2025-03-10 12:39:33,070 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.0480000000002 | Take profit: 2101.4559999999997 +2025-03-10 12:39:33,113 - INFO - CLOSED long at 2069.96 | PnL: -0.02% | $-0.40 +2025-03-10 12:39:33,113 - INFO - OPENED SHORT at 2069.96 | Stop loss: 2080.3098 | Take profit: 2038.9106 +2025-03-10 12:39:33,203 - INFO - CLOSED short at 2071.39 | PnL: -0.07% | $-0.56 +2025-03-10 12:39:33,247 - INFO - OPENED LONG at 2071.36 | Stop loss: 2061.0032 | Take profit: 2102.4303999999997 +2025-03-10 12:39:33,292 - INFO - CLOSED long at 2072.75 | PnL: 0.07% | $-0.11 +2025-03-10 12:39:33,293 - INFO - OPENED SHORT at 2072.75 | Stop loss: 2083.11375 | Take profit: 2041.65875 +2025-03-10 12:39:33,478 - INFO - CLOSED short at 2074.29 | PnL: -0.07% | $-0.57 +2025-03-10 12:39:33,520 - INFO - OPENED SHORT at 2073.9 | Stop loss: 2084.2695 | Take profit: 2042.7915 +2025-03-10 12:39:33,565 - INFO - CLOSED short at 2071.92 | PnL: 0.10% | $-0.01 +2025-03-10 12:39:33,566 - INFO - OPENED LONG at 2071.92 | Stop loss: 2061.5604 | Take profit: 2102.9988 +2025-03-10 12:39:33,690 - INFO - CLOSED long at 2069.46 | PnL: -0.12% | $-0.71 +2025-03-10 12:39:33,774 - INFO - OPENED LONG at 2068.32 | Stop loss: 2057.9784 | Take profit: 2099.3448 +2025-03-10 12:39:33,818 - INFO - CLOSED long at 2067.0 | PnL: -0.06% | $-0.53 +2025-03-10 12:39:33,819 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.3349999999996 | Take profit: 2035.995 +2025-03-10 12:39:33,863 - INFO - CLOSED short at 2067.79 | PnL: -0.04% | $-0.44 +2025-03-10 12:39:33,864 - INFO - OPENED LONG at 2067.79 | Stop loss: 2057.45105 | Take profit: 2098.80685 +2025-03-10 12:39:33,910 - INFO - CLOSED long at 2067.46 | PnL: -0.02% | $-0.37 +2025-03-10 12:39:34,000 - INFO - OPENED SHORT at 2065.49 | Stop loss: 2075.8174499999996 | Take profit: 2034.5076499999998 +2025-03-10 12:39:34,088 - INFO - CLOSED short at 2065.26 | PnL: 0.01% | $-0.28 +2025-03-10 12:39:34,089 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.9337 | Take profit: 2096.2389 +2025-03-10 12:39:34,173 - INFO - CLOSED long at 2068.58 | PnL: 0.16% | $0.19 +2025-03-10 12:39:34,173 - INFO - OPENED SHORT at 2068.58 | Stop loss: 2078.9228999999996 | Take profit: 2037.5512999999999 +2025-03-10 12:39:34,259 - INFO - CLOSED short at 2069.34 | PnL: -0.04% | $-0.43 +2025-03-10 12:39:34,302 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.5207 | Take profit: 2098.8779 +2025-03-10 12:39:34,431 - INFO - CLOSED long at 2070.3 | PnL: 0.12% | $0.06 +2025-03-10 12:39:34,474 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.9479499999998 | Take profit: 2040.5161500000002 +2025-03-10 12:39:34,519 - INFO - CLOSED short at 2070.7 | PnL: 0.04% | $-0.18 +2025-03-10 12:39:34,520 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3464999999997 | Take profit: 2101.7604999999994 +2025-03-10 12:39:34,650 - INFO - CLOSED long at 2068.5 | PnL: -0.11% | $-0.65 +2025-03-10 12:39:34,733 - INFO - OPENED LONG at 2067.84 | Stop loss: 2057.5008000000003 | Take profit: 2098.8576 +2025-03-10 12:39:34,778 - INFO - CLOSED long at 2067.11 | PnL: -0.04% | $-0.42 +2025-03-10 12:39:34,822 - INFO - OPENED SHORT at 2067.86 | Stop loss: 2078.1992999999998 | Take profit: 2036.8421 +2025-03-10 12:39:35,172 - INFO - CLOSED short at 2068.18 | PnL: -0.02% | $-0.36 +2025-03-10 12:39:35,357 - INFO - OPENED LONG at 2065.83 | Stop loss: 2055.50085 | Take profit: 2096.8174499999996 +2025-03-10 12:39:35,404 - INFO - CLOSED long at 2066.15 | PnL: 0.02% | $-0.26 +2025-03-10 12:39:35,404 - INFO - OPENED SHORT at 2066.15 | Stop loss: 2076.4807499999997 | Take profit: 2035.15775 +2025-03-10 12:39:35,451 - INFO - CLOSED short at 2065.26 | PnL: 0.04% | $-0.17 +2025-03-10 12:39:35,452 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.9337 | Take profit: 2096.2389 +2025-03-10 12:39:35,500 - INFO - CLOSED long at 2062.89 | PnL: -0.11% | $-0.66 +2025-03-10 12:39:35,501 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.2044499999997 | Take profit: 2031.9466499999999 +2025-03-10 12:39:35,547 - INFO - CLOSED short at 2062.65 | PnL: 0.01% | $-0.27 +2025-03-10 12:39:35,548 - INFO - OPENED LONG at 2062.65 | Stop loss: 2052.33675 | Take profit: 2093.58975 +2025-03-10 12:39:35,594 - INFO - CLOSED long at 2061.78 | PnL: -0.04% | $-0.43 +2025-03-10 12:39:35,594 - INFO - OPENED SHORT at 2061.78 | Stop loss: 2072.0889 | Take profit: 2030.8533000000002 +2025-03-10 12:39:35,642 - INFO - CLOSED short at 2059.59 | PnL: 0.11% | $0.02 +2025-03-10 12:39:35,643 - INFO - OPENED LONG at 2059.59 | Stop loss: 2049.29205 | Take profit: 2090.48385 +2025-03-10 12:39:35,731 - INFO - CLOSED long at 2063.59 | PnL: 0.19% | $0.28 +2025-03-10 12:39:35,775 - INFO - OPENED SHORT at 2064.96 | Stop loss: 2075.2848 | Take profit: 2033.9856 +2025-03-10 12:39:35,818 - INFO - CLOSED short at 2066.24 | PnL: -0.06% | $-0.49 +2025-03-10 12:39:35,819 - INFO - OPENED LONG at 2066.24 | Stop loss: 2055.9087999999997 | Take profit: 2097.2335999999996 +2025-03-10 12:39:35,965 - INFO - CLOSED long at 2066.09 | PnL: -0.01% | $-0.32 +2025-03-10 12:39:36,060 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.4003999999995 | Take profit: 2033.1188 +2025-03-10 12:39:36,104 - INFO - CLOSED short at 2062.71 | PnL: 0.07% | $-0.10 +2025-03-10 12:39:36,105 - INFO - OPENED LONG at 2062.71 | Stop loss: 2052.39645 | Take profit: 2093.65065 +2025-03-10 12:39:36,151 - INFO - CLOSED long at 2062.89 | PnL: 0.01% | $-0.27 +2025-03-10 12:39:36,283 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.292 | Take profit: 2092.524 +2025-03-10 12:39:36,377 - INFO - CLOSED long at 2060.65 | PnL: -0.05% | $-0.43 +2025-03-10 12:39:36,557 - INFO - OPENED LONG at 2061.8 | Stop loss: 2051.491 | Take profit: 2092.727 +2025-03-10 12:39:36,598 - INFO - CLOSED long at 2064.7 | PnL: 0.14% | $0.12 +2025-03-10 12:39:36,863 - INFO - OPENED SHORT at 2064.1 | Stop loss: 2074.4204999999997 | Take profit: 2033.1384999999998 +2025-03-10 12:39:36,949 - INFO - CLOSED short at 2064.33 | PnL: -0.01% | $-0.33 +2025-03-10 12:39:37,036 - INFO - OPENED LONG at 2064.79 | Stop loss: 2054.46605 | Take profit: 2095.76185 +2025-03-10 12:39:37,329 - INFO - CLOSED long at 2060.7 | PnL: -0.20% | $-0.88 +2025-03-10 12:39:37,330 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0035 | Take profit: 2029.7894999999999 +2025-03-10 12:39:37,373 - INFO - CLOSED short at 2061.09 | PnL: -0.02% | $-0.35 +2025-03-10 12:39:37,417 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.3119500000003 | Take profit: 2090.5041499999998 +2025-03-10 12:39:37,507 - INFO - CLOSED long at 2059.02 | PnL: -0.03% | $-0.37 +2025-03-10 12:39:37,646 - INFO - OPENED LONG at 2059.46 | Stop loss: 2049.1627 | Take profit: 2090.3518999999997 +2025-03-10 12:39:37,693 - INFO - CLOSED long at 2057.4 | PnL: -0.10% | $-0.58 +2025-03-10 12:39:37,783 - INFO - OPENED SHORT at 2056.28 | Stop loss: 2066.5614 | Take profit: 2025.4358000000002 +2025-03-10 12:39:37,827 - INFO - CLOSED short at 2055.6 | PnL: 0.03% | $-0.19 +2025-03-10 12:39:37,828 - INFO - OPENED LONG at 2055.6 | Stop loss: 2045.322 | Take profit: 2086.4339999999997 +2025-03-10 12:39:37,871 - INFO - CLOSED long at 2054.89 | PnL: -0.03% | $-0.38 +2025-03-10 12:39:37,916 - INFO - OPENED LONG at 2054.83 | Stop loss: 2044.55585 | Take profit: 2085.6524499999996 +2025-03-10 12:39:38,056 - INFO - CLOSED long at 2059.8 | PnL: 0.24% | $0.40 +2025-03-10 12:39:38,056 - INFO - OPENED SHORT at 2059.8 | Stop loss: 2070.099 | Take profit: 2028.9030000000002 +2025-03-10 12:39:38,103 - INFO - CLOSED short at 2061.66 | PnL: -0.09% | $-0.54 +2025-03-10 12:39:38,103 - INFO - OPENED LONG at 2061.66 | Stop loss: 2051.3516999999997 | Take profit: 2092.5849 +2025-03-10 12:39:38,150 - INFO - CLOSED long at 2061.5 | PnL: -0.01% | $-0.30 +2025-03-10 12:39:38,151 - INFO - OPENED SHORT at 2061.5 | Stop loss: 2071.8075 | Take profit: 2030.5774999999999 +2025-03-10 12:39:38,250 - INFO - CLOSED short at 2061.3 | PnL: 0.01% | $-0.25 +2025-03-10 12:39:38,334 - INFO - OPENED SHORT at 2063.4 | Stop loss: 2073.717 | Take profit: 2032.449 +2025-03-10 12:39:38,651 - INFO - CLOSED short at 2066.79 | PnL: -0.16% | $-0.74 +2025-03-10 12:39:38,652 - INFO - OPENED LONG at 2066.79 | Stop loss: 2056.45605 | Take profit: 2097.7918499999996 +2025-03-10 12:39:38,696 - INFO - CLOSED long at 2067.33 | PnL: 0.03% | $-0.21 +2025-03-10 12:39:38,743 - INFO - OPENED LONG at 2067.01 | Stop loss: 2056.67495 | Take profit: 2098.01515 +2025-03-10 12:39:38,788 - INFO - CLOSED long at 2065.69 | PnL: -0.06% | $-0.45 +2025-03-10 12:39:38,879 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3599999999997 | Take profit: 2040.92 +2025-03-10 12:39:38,924 - INFO - CLOSED short at 2074.3 | PnL: -0.11% | $-0.58 +2025-03-10 12:39:38,968 - INFO - OPENED LONG at 2078.01 | Stop loss: 2067.6199500000002 | Take profit: 2109.18015 +2025-03-10 12:39:39,057 - INFO - CLOSED long at 2072.6 | PnL: -0.26% | $-0.98 +2025-03-10 12:39:39,100 - INFO - OPENED LONG at 2071.04 | Stop loss: 2060.6848 | Take profit: 2102.1056 +2025-03-10 12:39:39,276 - INFO - CLOSED long at 2070.0 | PnL: -0.05% | $-0.40 +2025-03-10 12:39:39,276 - INFO - OPENED SHORT at 2070.0 | Stop loss: 2080.35 | Take profit: 2038.95 +2025-03-10 12:39:39,494 - INFO - CLOSED short at 2067.44 | PnL: 0.12% | $0.06 +2025-03-10 12:39:39,586 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6250499999996 | Take profit: 2104.0848499999997 +2025-03-10 12:39:39,674 - INFO - CLOSED long at 2069.87 | PnL: -0.15% | $-0.67 +2025-03-10 12:39:39,762 - INFO - OPENED SHORT at 2066.38 | Stop loss: 2076.7119 | Take profit: 2035.3843000000002 +2025-03-10 12:39:39,807 - INFO - CLOSED short at 2065.7 | PnL: 0.03% | $-0.18 +2025-03-10 12:39:39,807 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.3714999999997 | Take profit: 2096.6854999999996 +2025-03-10 12:39:39,853 - INFO - CLOSED long at 2065.66 | PnL: -0.00% | $-0.27 +2025-03-10 12:39:39,953 - INFO - OPENED SHORT at 2063.97 | Stop loss: 2074.2898499999997 | Take profit: 2033.0104499999998 +2025-03-10 12:39:39,999 - INFO - CLOSED short at 2064.5 | PnL: -0.03% | $-0.33 +2025-03-10 12:39:40,185 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.1725 | Take profit: 2096.4824999999996 +2025-03-10 12:39:40,274 - INFO - CLOSED long at 2065.29 | PnL: -0.01% | $-0.29 +2025-03-10 12:39:40,318 - INFO - OPENED SHORT at 2065.31 | Stop loss: 2075.6365499999997 | Take profit: 2034.33035 +2025-03-10 12:39:40,412 - INFO - CLOSED short at 2066.5 | PnL: -0.06% | $-0.41 +2025-03-10 12:39:40,457 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.93295 | Take profit: 2037.5611500000002 +2025-03-10 12:39:40,679 - INFO - CLOSED short at 2069.69 | PnL: -0.05% | $-0.40 +2025-03-10 12:39:40,679 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.34155 | Take profit: 2100.73535 +2025-03-10 12:39:40,723 - INFO - CLOSED long at 2070.7 | PnL: 0.05% | $-0.13 +2025-03-10 12:39:40,809 - INFO - OPENED LONG at 2070.35 | Stop loss: 2059.99825 | Take profit: 2101.40525 +2025-03-10 12:39:40,854 - INFO - CLOSED long at 2070.61 | PnL: 0.01% | $-0.22 +2025-03-10 12:39:40,854 - INFO - OPENED SHORT at 2070.61 | Stop loss: 2080.96305 | Take profit: 2039.55085 +2025-03-10 12:39:40,902 - INFO - CLOSED short at 2071.99 | PnL: -0.07% | $-0.43 +2025-03-10 12:39:40,994 - INFO - OPENED LONG at 2068.67 | Stop loss: 2058.32665 | Take profit: 2099.70005 +2025-03-10 12:39:41,086 - INFO - CLOSED long at 2069.78 | PnL: 0.05% | $-0.12 +2025-03-10 12:39:41,179 - INFO - OPENED SHORT at 2074.37 | Stop loss: 2084.74185 | Take profit: 2043.25445 +2025-03-10 12:39:41,264 - INFO - CLOSED short at 2074.35 | PnL: 0.00% | $-0.25 +2025-03-10 12:39:41,400 - INFO - OPENED LONG at 2075.32 | Stop loss: 2064.9434 | Take profit: 2106.4498 +2025-03-10 12:39:41,583 - INFO - CLOSED long at 2074.0 | PnL: -0.06% | $-0.41 +2025-03-10 12:39:41,633 - INFO - OPENED SHORT at 2072.09 | Stop loss: 2082.45045 | Take profit: 2041.0086500000002 +2025-03-10 12:39:41,683 - INFO - CLOSED short at 2069.97 | PnL: 0.10% | $0.01 +2025-03-10 12:39:41,683 - INFO - OPENED LONG at 2069.97 | Stop loss: 2059.6201499999997 | Take profit: 2101.0195499999995 +2025-03-10 12:39:41,776 - INFO - CLOSED long at 2067.0 | PnL: -0.14% | $-0.61 +2025-03-10 12:39:41,962 - INFO - OPENED SHORT at 2067.88 | Stop loss: 2078.2194 | Take profit: 2036.8618000000001 +2025-03-10 12:39:42,130 - INFO - CLOSED short at 2070.19 | PnL: -0.11% | $-0.53 +2025-03-10 12:39:42,130 - INFO - OPENED LONG at 2070.19 | Stop loss: 2059.83905 | Take profit: 2101.2428499999996 +2025-03-10 12:39:42,224 - INFO - CLOSED long at 2067.19 | PnL: -0.14% | $-0.60 +2025-03-10 12:39:42,270 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.8275 | Take profit: 2034.5175 +2025-03-10 12:39:42,437 - INFO - CLOSED short at 2066.09 | PnL: -0.03% | $-0.31 +2025-03-10 12:39:42,437 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.75955 | Take profit: 2097.08135 +2025-03-10 12:39:42,484 - INFO - CLOSED long at 2063.39 | PnL: -0.13% | $-0.56 +2025-03-10 12:39:42,485 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.70695 | Take profit: 2032.43915 +2025-03-10 12:39:42,569 - INFO - CLOSED short at 2063.98 | PnL: -0.03% | $-0.31 +2025-03-10 12:39:42,569 - INFO - OPENED LONG at 2063.98 | Stop loss: 2053.6601 | Take profit: 2094.9397 +2025-03-10 12:39:42,654 - INFO - CLOSED long at 2065.06 | PnL: 0.05% | $-0.11 +2025-03-10 12:39:42,745 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.8224999999998 | Take profit: 2033.5325 +2025-03-10 12:39:42,789 - INFO - CLOSED short at 2066.33 | PnL: -0.09% | $-0.45 +2025-03-10 12:39:42,790 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.99835 | Take profit: 2097.3249499999997 +2025-03-10 12:39:42,878 - INFO - CLOSED long at 2060.7 | PnL: -0.27% | $-0.88 +2025-03-10 12:39:42,929 - INFO - OPENED SHORT at 2060.2 | Stop loss: 2070.5009999999997 | Take profit: 2029.2969999999998 +2025-03-10 12:39:43,023 - INFO - CLOSED short at 2058.09 | PnL: 0.10% | $0.01 +2025-03-10 12:39:43,070 - INFO - OPENED SHORT at 2058.65 | Stop loss: 2068.94325 | Take profit: 2027.77025 +2025-03-10 12:39:43,241 - INFO - CLOSED short at 2049.5 | PnL: 0.44% | $0.80 +2025-03-10 12:39:43,242 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.2525 | Take profit: 2080.2425 +2025-03-10 12:39:43,328 - INFO - CLOSED long at 2058.3 | PnL: 0.43% | $0.78 +2025-03-10 12:39:43,416 - INFO - OPENED SHORT at 2057.11 | Stop loss: 2067.3955499999997 | Take profit: 2026.2533500000002 +2025-03-10 12:39:43,543 - INFO - CLOSED short at 2063.9 | PnL: -0.33% | $-1.03 +2025-03-10 12:39:43,584 - INFO - OPENED LONG at 2065.1 | Stop loss: 2054.7745 | Take profit: 2096.0764999999997 +2025-03-10 12:39:43,707 - INFO - CLOSED long at 2065.12 | PnL: 0.00% | $-0.23 +2025-03-10 12:39:43,750 - INFO - OPENED LONG at 2068.33 | Stop loss: 2057.98835 | Take profit: 2099.35495 +2025-03-10 12:39:43,796 - INFO - CLOSED long at 2067.49 | PnL: -0.04% | $-0.33 +2025-03-10 12:39:43,796 - INFO - OPENED SHORT at 2067.49 | Stop loss: 2077.8274499999998 | Take profit: 2036.4776499999998 +2025-03-10 12:39:43,930 - INFO - CLOSED short at 2061.21 | PnL: 0.30% | $0.48 +2025-03-10 12:39:43,977 - INFO - OPENED SHORT at 2059.9 | Stop loss: 2070.1994999999997 | Take profit: 2029.0015 +2025-03-10 12:39:44,063 - INFO - CLOSED short at 2061.84 | PnL: -0.09% | $-0.46 +2025-03-10 12:39:44,105 - INFO - OPENED LONG at 2062.54 | Stop loss: 2052.2273 | Take profit: 2093.4781 +2025-03-10 12:39:44,193 - INFO - CLOSED long at 2070.31 | PnL: 0.38% | $0.65 +2025-03-10 12:39:44,284 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.9933 | Take profit: 2100.3801 +2025-03-10 12:39:44,460 - INFO - CLOSED long at 2074.05 | PnL: 0.23% | $0.30 +2025-03-10 12:39:44,461 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.42025 | Take profit: 2042.9392500000001 +2025-03-10 12:39:44,743 - INFO - CLOSED short at 2077.61 | PnL: -0.17% | $-0.64 +2025-03-10 12:39:44,744 - INFO - OPENED LONG at 2077.61 | Stop loss: 2067.22195 | Take profit: 2108.7741499999997 +2025-03-10 12:39:44,788 - INFO - CLOSED long at 2085.56 | PnL: 0.38% | $0.66 +2025-03-10 12:39:44,789 - INFO - OPENED SHORT at 2085.56 | Stop loss: 2095.9878 | Take profit: 2054.2766 +2025-03-10 12:39:44,878 - INFO - CLOSED short at 2103.02 | PnL: -0.84% | $-2.23 +2025-03-10 12:39:44,878 - INFO - OPENED LONG at 2103.02 | Stop loss: 2092.5049 | Take profit: 2134.5652999999998 +2025-03-10 12:39:44,977 - INFO - CLOSED long at 2139.54 | PnL: 1.74% | $3.74 +2025-03-10 12:39:44,977 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2376999999997 | Take profit: 2107.4469 +2025-03-10 12:39:45,068 - INFO - CLOSED short at 2133.95 | PnL: 0.26% | $0.39 +2025-03-10 12:39:45,115 - INFO - OPENED SHORT at 2137.59 | Stop loss: 2148.2779499999997 | Take profit: 2105.52615 +2025-03-10 12:39:45,159 - INFO - CLOSED short at 2141.41 | PnL: -0.18% | $-0.68 +2025-03-10 12:39:45,160 - INFO - OPENED LONG at 2141.41 | Stop loss: 2130.70295 | Take profit: 2173.53115 +2025-03-10 12:39:45,347 - INFO - CLOSED long at 2134.78 | PnL: -0.31% | $-0.99 +2025-03-10 12:39:45,395 - INFO - OPENED LONG at 2126.99 | Stop loss: 2116.3550499999997 | Take profit: 2158.8948499999997 +2025-03-10 12:39:45,443 - INFO - CLOSED long at 2127.3 | PnL: 0.01% | $-0.20 +2025-03-10 12:39:45,444 - INFO - OPENED SHORT at 2127.3 | Stop loss: 2137.9365 | Take profit: 2095.3905 +2025-03-10 12:39:45,489 - INFO - CLOSED short at 2128.69 | PnL: -0.07% | $-0.39 +2025-03-10 12:39:45,538 - INFO - OPENED LONG at 2121.09 | Stop loss: 2110.48455 | Take profit: 2152.9063499999997 +2025-03-10 12:39:45,587 - INFO - CLOSED long at 2120.15 | PnL: -0.04% | $-0.34 +2025-03-10 12:39:45,634 - INFO - OPENED LONG at 2117.24 | Stop loss: 2106.6537999999996 | Take profit: 2148.9985999999994 +2025-03-10 12:39:46,054 - INFO - CLOSED long at 2109.05 | PnL: -0.39% | $-1.14 +2025-03-10 12:39:46,054 - INFO - OPENED SHORT at 2109.05 | Stop loss: 2119.59525 | Take profit: 2077.4142500000003 +2025-03-10 12:39:46,101 - INFO - CLOSED short at 2112.09 | PnL: -0.14% | $-0.56 +2025-03-10 12:39:46,149 - INFO - OPENED LONG at 2112.95 | Stop loss: 2102.38525 | Take profit: 2144.64425 +2025-03-10 12:39:46,246 - INFO - CLOSED long at 2113.24 | PnL: 0.01% | $-0.20 +2025-03-10 12:39:46,246 - INFO - OPENED SHORT at 2113.24 | Stop loss: 2123.8061999999995 | Take profit: 2081.5413999999996 +2025-03-10 12:39:46,290 - INFO - CLOSED short at 2112.99 | PnL: 0.01% | $-0.20 +2025-03-10 12:39:46,391 - INFO - OPENED SHORT at 2116.48 | Stop loss: 2127.0624 | Take profit: 2084.7327999999998 +2025-03-10 12:39:46,435 - INFO - CLOSED short at 2114.8 | PnL: 0.08% | $-0.05 +2025-03-10 12:39:46,483 - INFO - OPENED SHORT at 2110.9 | Stop loss: 2121.4545 | Take profit: 2079.2365 +2025-03-10 12:39:46,712 - INFO - CLOSED short at 2100.5 | PnL: 0.49% | $0.89 +2025-03-10 12:39:46,712 - INFO - OPENED LONG at 2100.5 | Stop loss: 2089.9975 | Take profit: 2132.0074999999997 +2025-03-10 12:39:46,757 - INFO - CLOSED long at 2090.0 | PnL: -0.50% | $-1.38 +2025-03-10 12:39:46,802 - INFO - OPENED SHORT at 2099.53 | Stop loss: 2110.02765 | Take profit: 2068.0370500000004 +2025-03-10 12:39:46,849 - INFO - CLOSED short at 2098.1 | PnL: 0.07% | $-0.07 +2025-03-10 12:39:46,942 - INFO - OPENED LONG at 2102.29 | Stop loss: 2091.77855 | Take profit: 2133.82435 +2025-03-10 12:39:47,027 - INFO - CLOSED long at 2098.9 | PnL: -0.16% | $-0.58 +2025-03-10 12:39:47,068 - INFO - OPENED SHORT at 2100.69 | Stop loss: 2111.1934499999998 | Take profit: 2069.17965 +2025-03-10 12:39:47,112 - INFO - CLOSED short at 2104.83 | PnL: -0.20% | $-0.66 +2025-03-10 12:39:47,251 - INFO - OPENED LONG at 2103.86 | Stop loss: 2093.3407 | Take profit: 2135.4179 +2025-03-10 12:39:47,299 - INFO - CLOSED long at 2104.68 | PnL: 0.04% | $-0.13 +2025-03-10 12:39:47,300 - INFO - OPENED SHORT at 2104.68 | Stop loss: 2115.2033999999994 | Take profit: 2073.1097999999997 +2025-03-10 12:39:47,351 - INFO - CLOSED short at 2101.51 | PnL: 0.15% | $0.11 +2025-03-10 12:39:47,442 - INFO - OPENED SHORT at 2100.02 | Stop loss: 2110.5200999999997 | Take profit: 2068.5197 +2025-03-10 12:39:47,571 - INFO - CLOSED short at 2093.46 | PnL: 0.31% | $0.46 +2025-03-10 12:39:47,572 - INFO - OPENED LONG at 2093.46 | Stop loss: 2082.9927000000002 | Take profit: 2124.8619 +2025-03-10 12:39:47,663 - INFO - CLOSED long at 2092.46 | PnL: -0.05% | $-0.33 +2025-03-10 12:39:47,663 - INFO - OPENED SHORT at 2092.46 | Stop loss: 2102.9222999999997 | Take profit: 2061.0731 +2025-03-10 12:39:47,802 - INFO - CLOSED short at 2094.08 | PnL: -0.08% | $-0.39 +2025-03-10 12:39:47,803 - INFO - OPENED LONG at 2094.08 | Stop loss: 2083.6096 | Take profit: 2125.4912 +2025-03-10 12:39:47,894 - INFO - CLOSED long at 2083.28 | PnL: -0.52% | $-1.34 +2025-03-10 12:39:47,944 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.9978 | Take profit: 2119.7666 +2025-03-10 12:39:48,400 - INFO - CLOSED long at 2086.57 | PnL: -0.09% | $-0.40 +2025-03-10 12:39:48,448 - INFO - OPENED SHORT at 2085.8 | Stop loss: 2096.229 | Take profit: 2054.5130000000004 +2025-03-10 12:39:48,495 - INFO - CLOSED short at 2084.72 | PnL: 0.05% | $-0.10 +2025-03-10 12:39:48,714 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 20.0% in downtrends | Avg Win=$0.44, Avg Loss=$-0.49 +2025-03-10 12:39:48,715 - INFO - Episode 1: Reward=109.27, Balance=$52.58, Win Rate=17.9%, Trades=145, Episode PnL=$-33.00, Total PnL=$-91.95, Max Drawdown=47.4%, Pred Accuracy=99.7% +2025-03-10 12:39:48,851 - INFO - Model saved to models/trading_agent_best_reward.pt +2025-03-10 12:39:48,852 - INFO - New best reward model saved: 109.27 +2025-03-10 12:39:48,878 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:39:49,166 - INFO - OPENED LONG at 2059.4 | Stop loss: 2049.103 | Take profit: 2090.2909999999997 +2025-03-10 12:39:49,292 - INFO - CLOSED long at 2059.4 | PnL: 0.00% | $-0.40 +2025-03-10 12:39:49,293 - INFO - OPENED SHORT at 2059.4 | Stop loss: 2069.6969999999997 | Take profit: 2028.509 +2025-03-10 12:39:49,384 - INFO - CLOSED short at 2060.51 | PnL: -0.05% | $-0.61 +2025-03-10 12:39:49,385 - INFO - OPENED LONG at 2060.51 | Stop loss: 2050.2074500000003 | Take profit: 2091.41765 +2025-03-10 12:39:49,516 - INFO - CLOSED long at 2057.59 | PnL: -0.14% | $-0.96 +2025-03-10 12:39:49,517 - INFO - OPENED SHORT at 2057.59 | Stop loss: 2067.87795 | Take profit: 2026.7261500000002 +2025-03-10 12:39:49,563 - INFO - CLOSED short at 2057.9 | PnL: -0.02% | $-0.45 +2025-03-10 12:39:49,701 - INFO - OPENED LONG at 2055.2 | Stop loss: 2044.9239999999998 | Take profit: 2086.028 +2025-03-10 12:39:49,751 - INFO - CLOSED long at 2058.59 | PnL: 0.16% | $0.25 +2025-03-10 12:39:49,899 - INFO - OPENED SHORT at 2053.56 | Stop loss: 2063.8277999999996 | Take profit: 2022.7566 +2025-03-10 12:39:50,055 - INFO - CLOSED short at 2052.16 | PnL: 0.07% | $-0.12 +2025-03-10 12:39:50,336 - INFO - OPENED LONG at 2049.49 | Stop loss: 2039.2425499999997 | Take profit: 2080.2323499999998 +2025-03-10 12:39:50,390 - INFO - CLOSED long at 2050.2 | PnL: 0.03% | $-0.26 +2025-03-10 12:39:50,438 - INFO - OPENED SHORT at 2049.6 | Stop loss: 2059.8479999999995 | Take profit: 2018.856 +2025-03-10 12:39:50,488 - INFO - CLOSED short at 2051.99 | PnL: -0.12% | $-0.84 +2025-03-10 12:39:50,488 - INFO - OPENED LONG at 2051.99 | Stop loss: 2041.7300499999997 | Take profit: 2082.7698499999997 +2025-03-10 12:39:50,539 - INFO - CLOSED long at 2049.61 | PnL: -0.12% | $-0.83 +2025-03-10 12:39:50,589 - INFO - OPENED LONG at 2049.24 | Stop loss: 2038.9937999999997 | Take profit: 2079.9785999999995 +2025-03-10 12:39:50,747 - INFO - CLOSED long at 2046.58 | PnL: -0.13% | $-0.88 +2025-03-10 12:39:50,748 - INFO - OPENED SHORT at 2046.58 | Stop loss: 2056.8129 | Take profit: 2015.8813 +2025-03-10 12:39:51,044 - INFO - CLOSED short at 2048.13 | PnL: -0.08% | $-0.67 +2025-03-10 12:39:51,091 - INFO - OPENED LONG at 2047.59 | Stop loss: 2037.35205 | Take profit: 2078.30385 +2025-03-10 12:39:51,234 - INFO - CLOSED long at 2050.24 | PnL: 0.13% | $0.11 +2025-03-10 12:39:51,328 - INFO - OPENED SHORT at 2051.11 | Stop loss: 2061.36555 | Take profit: 2020.34335 +2025-03-10 12:39:51,576 - INFO - CLOSED short at 2057.01 | PnL: -0.29% | $-1.46 +2025-03-10 12:39:51,577 - INFO - OPENED LONG at 2057.01 | Stop loss: 2046.7249500000003 | Take profit: 2087.86515 +2025-03-10 12:39:51,674 - INFO - CLOSED long at 2058.39 | PnL: 0.07% | $-0.12 +2025-03-10 12:39:51,724 - INFO - OPENED LONG at 2060.13 | Stop loss: 2049.82935 | Take profit: 2091.03195 +2025-03-10 12:39:51,772 - INFO - CLOSED long at 2059.7 | PnL: -0.02% | $-0.45 +2025-03-10 12:39:52,083 - INFO - OPENED SHORT at 2064.69 | Stop loss: 2075.01345 | Take profit: 2033.71965 +2025-03-10 12:39:52,231 - INFO - CLOSED short at 2058.3 | PnL: 0.31% | $0.77 +2025-03-10 12:39:52,232 - INFO - OPENED LONG at 2058.3 | Stop loss: 2048.0085000000004 | Take profit: 2089.1745 +2025-03-10 12:39:52,551 - INFO - CLOSED long at 2057.8 | PnL: -0.02% | $-0.46 +2025-03-10 12:39:52,799 - INFO - OPENED LONG at 2061.18 | Stop loss: 2050.8741 | Take profit: 2092.0977 +2025-03-10 12:39:53,173 - INFO - CLOSED long at 2071.63 | PnL: 0.51% | $1.51 +2025-03-10 12:39:53,174 - INFO - OPENED SHORT at 2071.63 | Stop loss: 2081.9881499999997 | Take profit: 2040.55555 +2025-03-10 12:39:53,227 - INFO - CLOSED short at 2070.99 | PnL: 0.03% | $-0.26 +2025-03-10 12:39:53,277 - INFO - OPENED SHORT at 2069.6 | Stop loss: 2079.948 | Take profit: 2038.5559999999998 +2025-03-10 12:39:53,326 - INFO - CLOSED short at 2068.65 | PnL: 0.05% | $-0.20 +2025-03-10 12:39:53,326 - INFO - OPENED LONG at 2068.65 | Stop loss: 2058.30675 | Take profit: 2099.67975 +2025-03-10 12:39:53,383 - INFO - CLOSED long at 2068.99 | PnL: 0.02% | $-0.31 +2025-03-10 12:39:53,384 - INFO - OPENED SHORT at 2068.99 | Stop loss: 2079.3349499999995 | Take profit: 2037.9551499999998 +2025-03-10 12:39:53,484 - INFO - CLOSED short at 2067.69 | PnL: 0.06% | $-0.14 +2025-03-10 12:39:53,580 - INFO - OPENED LONG at 2071.44 | Stop loss: 2061.0828 | Take profit: 2102.5116 +2025-03-10 12:39:53,630 - INFO - CLOSED long at 2073.73 | PnL: 0.11% | $0.04 +2025-03-10 12:39:53,724 - INFO - OPENED SHORT at 2072.91 | Stop loss: 2083.2745499999996 | Take profit: 2041.8163499999998 +2025-03-10 12:39:53,773 - INFO - CLOSED short at 2072.33 | PnL: 0.03% | $-0.27 +2025-03-10 12:39:53,774 - INFO - OPENED LONG at 2072.33 | Stop loss: 2061.96835 | Take profit: 2103.41495 +2025-03-10 12:39:54,058 - INFO - CLOSED long at 2070.79 | PnL: -0.07% | $-0.65 +2025-03-10 12:39:54,120 - INFO - OPENED SHORT at 2070.28 | Stop loss: 2080.6313999999998 | Take profit: 2039.2258000000002 +2025-03-10 12:39:54,179 - INFO - CLOSED short at 2068.02 | PnL: 0.11% | $0.03 +2025-03-10 12:39:54,180 - INFO - OPENED LONG at 2068.02 | Stop loss: 2057.6799 | Take profit: 2099.0402999999997 +2025-03-10 12:39:54,293 - INFO - CLOSED long at 2070.36 | PnL: 0.11% | $0.05 +2025-03-10 12:39:54,347 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.2445 | Take profit: 2037.8665 +2025-03-10 12:39:54,464 - INFO - CLOSED short at 2069.34 | PnL: -0.02% | $-0.45 +2025-03-10 12:39:54,572 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.456 | Take profit: 2099.832 +2025-03-10 12:39:54,632 - INFO - CLOSED long at 2067.6 | PnL: -0.06% | $-0.58 +2025-03-10 12:39:54,779 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.7219499999997 | Take profit: 2035.3941499999999 +2025-03-10 12:39:54,966 - INFO - CLOSED short at 2065.08 | PnL: 0.06% | $-0.13 +2025-03-10 12:39:54,966 - INFO - OPENED LONG at 2065.08 | Stop loss: 2054.7545999999998 | Take profit: 2096.0561999999995 +2025-03-10 12:39:55,017 - INFO - CLOSED long at 2066.18 | PnL: 0.05% | $-0.17 +2025-03-10 12:39:55,017 - INFO - OPENED SHORT at 2066.18 | Stop loss: 2076.5108999999998 | Take profit: 2035.1872999999998 +2025-03-10 12:39:55,066 - INFO - CLOSED short at 2068.76 | PnL: -0.12% | $-0.82 +2025-03-10 12:39:55,067 - INFO - OPENED LONG at 2068.76 | Stop loss: 2058.4162 | Take profit: 2099.7914 +2025-03-10 12:39:55,204 - INFO - CLOSED long at 2068.59 | PnL: -0.01% | $-0.39 +2025-03-10 12:39:55,340 - INFO - OPENED SHORT at 2069.96 | Stop loss: 2080.3098 | Take profit: 2038.9106 +2025-03-10 12:39:55,386 - INFO - CLOSED short at 2071.4 | PnL: -0.07% | $-0.61 +2025-03-10 12:39:55,387 - INFO - OPENED LONG at 2071.4 | Stop loss: 2061.043 | Take profit: 2102.471 +2025-03-10 12:39:55,432 - INFO - CLOSED long at 2071.39 | PnL: -0.00% | $-0.36 +2025-03-10 12:39:55,433 - INFO - OPENED SHORT at 2071.39 | Stop loss: 2081.7469499999997 | Take profit: 2040.3191499999998 +2025-03-10 12:39:55,604 - INFO - CLOSED short at 2072.7 | PnL: -0.06% | $-0.58 +2025-03-10 12:39:55,604 - INFO - OPENED LONG at 2072.7 | Stop loss: 2062.3365 | Take profit: 2103.7904999999996 +2025-03-10 12:39:55,697 - INFO - CLOSED long at 2074.29 | PnL: 0.08% | $-0.08 +2025-03-10 12:39:55,698 - INFO - OPENED SHORT at 2074.29 | Stop loss: 2084.6614499999996 | Take profit: 2043.17565 +2025-03-10 12:39:55,916 - INFO - CLOSED short at 2069.46 | PnL: 0.23% | $0.47 +2025-03-10 12:39:55,917 - INFO - OPENED LONG at 2069.46 | Stop loss: 2059.1127 | Take profit: 2100.5018999999998 +2025-03-10 12:39:56,141 - INFO - CLOSED long at 2067.46 | PnL: -0.10% | $-0.70 +2025-03-10 12:39:56,142 - INFO - OPENED SHORT at 2067.46 | Stop loss: 2077.7972999999997 | Take profit: 2036.4481 +2025-03-10 12:39:56,348 - INFO - CLOSED short at 2067.89 | PnL: -0.02% | $-0.43 +2025-03-10 12:39:56,350 - INFO - OPENED LONG at 2067.89 | Stop loss: 2057.55055 | Take profit: 2098.9083499999997 +2025-03-10 12:39:56,444 - INFO - CLOSED long at 2068.8 | PnL: 0.04% | $-0.20 +2025-03-10 12:39:56,444 - INFO - OPENED SHORT at 2068.8 | Stop loss: 2079.144 | Take profit: 2037.7680000000003 +2025-03-10 12:39:57,001 - INFO - CLOSED short at 2067.84 | PnL: 0.05% | $-0.19 +2025-03-10 12:39:57,002 - INFO - OPENED LONG at 2067.84 | Stop loss: 2057.5008000000003 | Take profit: 2098.8576 +2025-03-10 12:39:57,047 - INFO - CLOSED long at 2067.11 | PnL: -0.04% | $-0.47 +2025-03-10 12:39:57,048 - INFO - OPENED SHORT at 2067.11 | Stop loss: 2077.44555 | Take profit: 2036.10335 +2025-03-10 12:39:57,137 - INFO - CLOSED short at 2066.4 | PnL: 0.03% | $-0.23 +2025-03-10 12:39:57,182 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.4304999999995 | Take profit: 2035.1084999999998 +2025-03-10 12:39:57,271 - INFO - CLOSED short at 2066.39 | PnL: -0.01% | $-0.39 +2025-03-10 12:39:57,271 - INFO - OPENED LONG at 2066.39 | Stop loss: 2056.0580499999996 | Take profit: 2097.3858499999997 +2025-03-10 12:39:57,364 - INFO - CLOSED long at 2070.04 | PnL: 0.18% | $0.26 +2025-03-10 12:39:57,365 - INFO - OPENED SHORT at 2070.04 | Stop loss: 2080.3902 | Take profit: 2038.9894 +2025-03-10 12:39:57,549 - INFO - CLOSED short at 2067.88 | PnL: 0.10% | $0.02 +2025-03-10 12:39:57,598 - INFO - OPENED SHORT at 2064.99 | Stop loss: 2075.3149499999995 | Take profit: 2034.0151499999997 +2025-03-10 12:39:57,644 - INFO - CLOSED short at 2065.83 | PnL: -0.04% | $-0.49 +2025-03-10 12:39:57,737 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.9337 | Take profit: 2096.2389 +2025-03-10 12:39:57,828 - INFO - CLOSED long at 2062.65 | PnL: -0.13% | $-0.78 +2025-03-10 12:39:57,828 - INFO - OPENED SHORT at 2062.65 | Stop loss: 2072.96325 | Take profit: 2031.71025 +2025-03-10 12:39:57,878 - INFO - CLOSED short at 2061.78 | PnL: 0.04% | $-0.20 +2025-03-10 12:39:57,981 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.6065 | Take profit: 2030.3805000000002 +2025-03-10 12:39:58,076 - INFO - CLOSED short at 2064.96 | PnL: -0.18% | $-0.94 +2025-03-10 12:39:58,077 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.6352 | Take profit: 2095.9343999999996 +2025-03-10 12:39:58,386 - INFO - CLOSED long at 2064.08 | PnL: -0.04% | $-0.48 +2025-03-10 12:39:58,386 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.4003999999995 | Take profit: 2033.1188 +2025-03-10 12:39:58,537 - INFO - CLOSED short at 2064.5 | PnL: -0.02% | $-0.40 +2025-03-10 12:39:58,824 - INFO - OPENED SHORT at 2059.3 | Stop loss: 2069.5965 | Take profit: 2028.4105000000002 +2025-03-10 12:39:59,020 - INFO - CLOSED short at 2062.61 | PnL: -0.16% | $-0.87 +2025-03-10 12:39:59,117 - INFO - OPENED LONG at 2060.3 | Stop loss: 2049.9985 | Take profit: 2091.2045 +2025-03-10 12:39:59,208 - INFO - CLOSED long at 2061.9 | PnL: 0.08% | $-0.07 +2025-03-10 12:39:59,253 - INFO - OPENED SHORT at 2064.1 | Stop loss: 2074.4204999999997 | Take profit: 2033.1384999999998 +2025-03-10 12:39:59,393 - INFO - CLOSED short at 2063.39 | PnL: 0.03% | $-0.22 +2025-03-10 12:39:59,393 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.07305 | Take profit: 2094.3408499999996 +2025-03-10 12:39:59,438 - INFO - CLOSED long at 2064.79 | PnL: 0.07% | $-0.11 +2025-03-10 12:39:59,526 - INFO - OPENED SHORT at 2063.53 | Stop loss: 2073.84765 | Take profit: 2032.57705 +2025-03-10 12:39:59,570 - INFO - CLOSED short at 2063.0 | PnL: 0.03% | $-0.24 +2025-03-10 12:39:59,661 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.5805499999997 | Take profit: 2092.8183499999996 +2025-03-10 12:39:59,800 - INFO - CLOSED long at 2061.09 | PnL: -0.04% | $-0.45 +2025-03-10 12:39:59,844 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.3119500000003 | Take profit: 2090.5041499999998 +2025-03-10 12:39:59,891 - INFO - CLOSED long at 2059.16 | PnL: -0.02% | $-0.40 +2025-03-10 12:39:59,891 - INFO - OPENED SHORT at 2059.16 | Stop loss: 2069.4557999999997 | Take profit: 2028.2725999999998 +2025-03-10 12:39:59,935 - INFO - CLOSED short at 2059.02 | PnL: 0.01% | $-0.30 +2025-03-10 12:39:59,986 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.59555 | Take profit: 2089.7733499999995 +2025-03-10 12:40:00,034 - INFO - CLOSED long at 2059.96 | PnL: 0.05% | $-0.15 +2025-03-10 12:40:00,035 - INFO - OPENED SHORT at 2059.96 | Stop loss: 2070.2598 | Take profit: 2029.0606 +2025-03-10 12:40:00,446 - INFO - CLOSED short at 2058.15 | PnL: 0.09% | $-0.04 +2025-03-10 12:40:00,535 - INFO - OPENED SHORT at 2061.66 | Stop loss: 2071.9682999999995 | Take profit: 2030.7350999999999 +2025-03-10 12:40:00,579 - INFO - CLOSED short at 2061.5 | PnL: 0.01% | $-0.30 +2025-03-10 12:40:00,580 - INFO - OPENED LONG at 2061.5 | Stop loss: 2051.1925 | Take profit: 2092.4224999999997 +2025-03-10 12:40:00,665 - INFO - CLOSED long at 2061.3 | PnL: -0.01% | $-0.35 +2025-03-10 12:40:00,752 - INFO - OPENED LONG at 2063.4 | Stop loss: 2053.083 | Take profit: 2094.351 +2025-03-10 12:40:00,970 - INFO - CLOSED long at 2066.33 | PnL: 0.14% | $0.13 +2025-03-10 12:40:01,059 - INFO - OPENED SHORT at 2066.79 | Stop loss: 2077.1239499999997 | Take profit: 2035.7881499999999 +2025-03-10 12:40:01,230 - INFO - CLOSED short at 2069.79 | PnL: -0.15% | $-0.78 +2025-03-10 12:40:01,231 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.44105 | Take profit: 2100.8368499999997 +2025-03-10 12:40:01,319 - INFO - CLOSED long at 2074.3 | PnL: 0.22% | $0.37 +2025-03-10 12:40:01,366 - INFO - OPENED LONG at 2078.01 | Stop loss: 2067.6199500000002 | Take profit: 2109.18015 +2025-03-10 12:40:01,497 - INFO - CLOSED long at 2071.04 | PnL: -0.34% | $-1.38 +2025-03-10 12:40:01,498 - INFO - OPENED SHORT at 2071.04 | Stop loss: 2081.3952 | Take profit: 2039.9743999999998 +2025-03-10 12:40:01,800 - INFO - CLOSED short at 2069.69 | PnL: 0.07% | $-0.11 +2025-03-10 12:40:01,800 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.34155 | Take profit: 2100.73535 +2025-03-10 12:40:01,844 - INFO - CLOSED long at 2069.03 | PnL: -0.03% | $-0.41 +2025-03-10 12:40:01,889 - INFO - OPENED SHORT at 2067.44 | Stop loss: 2077.7772 | Take profit: 2036.4284 +2025-03-10 12:40:01,932 - INFO - CLOSED short at 2068.79 | PnL: -0.07% | $-0.51 +2025-03-10 12:40:01,978 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.3549499999995 | Take profit: 2041.8951499999998 +2025-03-10 12:40:02,064 - INFO - CLOSED short at 2069.87 | PnL: 0.15% | $0.16 +2025-03-10 12:40:02,210 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.3714999999997 | Take profit: 2096.6854999999996 +2025-03-10 12:40:02,306 - INFO - CLOSED long at 2063.95 | PnL: -0.08% | $-0.57 +2025-03-10 12:40:02,306 - INFO - OPENED SHORT at 2063.95 | Stop loss: 2074.2697499999995 | Take profit: 2032.9907499999997 +2025-03-10 12:40:02,352 - INFO - CLOSED short at 2063.97 | PnL: -0.00% | $-0.31 +2025-03-10 12:40:02,352 - INFO - OPENED LONG at 2063.97 | Stop loss: 2053.65015 | Take profit: 2094.9295499999994 +2025-03-10 12:40:02,499 - INFO - CLOSED long at 2064.4 | PnL: 0.02% | $-0.24 +2025-03-10 12:40:02,726 - INFO - OPENED LONG at 2065.29 | Stop loss: 2054.96355 | Take profit: 2096.2693499999996 +2025-03-10 12:40:03,064 - INFO - CLOSED long at 2070.2 | PnL: 0.24% | $0.42 +2025-03-10 12:40:03,121 - INFO - OPENED SHORT at 2071.35 | Stop loss: 2081.70675 | Take profit: 2040.27975 +2025-03-10 12:40:03,333 - INFO - CLOSED short at 2070.8 | PnL: 0.03% | $-0.22 +2025-03-10 12:40:03,494 - INFO - OPENED LONG at 2071.99 | Stop loss: 2061.6300499999998 | Take profit: 2103.0698499999994 +2025-03-10 12:40:03,798 - INFO - CLOSED long at 2074.37 | PnL: 0.11% | $0.05 +2025-03-10 12:40:03,799 - INFO - OPENED SHORT at 2074.37 | Stop loss: 2084.74185 | Take profit: 2043.25445 +2025-03-10 12:40:03,949 - INFO - CLOSED short at 2073.27 | PnL: 0.05% | $-0.14 +2025-03-10 12:40:04,001 - INFO - OPENED SHORT at 2073.99 | Stop loss: 2084.3599499999996 | Take profit: 2042.8801499999997 +2025-03-10 12:40:04,094 - INFO - CLOSED short at 2075.29 | PnL: -0.06% | $-0.49 +2025-03-10 12:40:04,189 - INFO - OPENED SHORT at 2075.61 | Stop loss: 2085.98805 | Take profit: 2044.47585 +2025-03-10 12:40:04,277 - INFO - CLOSED short at 2072.09 | PnL: 0.17% | $0.21 +2025-03-10 12:40:04,278 - INFO - OPENED LONG at 2072.09 | Stop loss: 2061.72955 | Take profit: 2103.17135 +2025-03-10 12:40:04,378 - INFO - CLOSED long at 2067.7 | PnL: -0.21% | $-0.95 +2025-03-10 12:40:04,519 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.732 | Take profit: 2035.404 +2025-03-10 12:40:04,773 - INFO - CLOSED short at 2069.0 | PnL: -0.13% | $-0.68 +2025-03-10 12:40:04,773 - INFO - OPENED LONG at 2069.0 | Stop loss: 2058.655 | Take profit: 2100.035 +2025-03-10 12:40:04,908 - INFO - CLOSED long at 2067.19 | PnL: -0.09% | $-0.56 +2025-03-10 12:40:04,908 - INFO - OPENED SHORT at 2067.19 | Stop loss: 2077.5259499999997 | Take profit: 2036.18215 +2025-03-10 12:40:04,951 - INFO - CLOSED short at 2065.5 | PnL: 0.08% | $-0.05 +2025-03-10 12:40:04,951 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.1725 | Take profit: 2096.4824999999996 +2025-03-10 12:40:05,091 - INFO - CLOSED long at 2065.07 | PnL: -0.02% | $-0.36 +2025-03-10 12:40:05,092 - INFO - OPENED SHORT at 2065.07 | Stop loss: 2075.39535 | Take profit: 2034.0939500000002 +2025-03-10 12:40:05,136 - INFO - CLOSED short at 2066.09 | PnL: -0.05% | $-0.44 +2025-03-10 12:40:05,225 - INFO - OPENED SHORT at 2062.34 | Stop loss: 2072.6517 | Take profit: 2031.4049000000002 +2025-03-10 12:40:05,462 - INFO - CLOSED short at 2064.5 | PnL: -0.10% | $-0.60 +2025-03-10 12:40:05,695 - INFO - OPENED LONG at 2059.2 | Stop loss: 2048.904 | Take profit: 2090.0879999999997 +2025-03-10 12:40:05,832 - INFO - CLOSED long at 2056.77 | PnL: -0.12% | $-0.63 +2025-03-10 12:40:05,967 - INFO - OPENED SHORT at 2049.5 | Stop loss: 2059.7475 | Take profit: 2018.7575 +2025-03-10 12:40:06,063 - INFO - CLOSED short at 2058.3 | PnL: -0.43% | $-1.51 +2025-03-10 12:40:06,316 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.2194999999997 | Take profit: 2032.9415000000001 +2025-03-10 12:40:06,407 - INFO - CLOSED short at 2062.43 | PnL: 0.07% | $-0.08 +2025-03-10 12:40:06,455 - INFO - OPENED SHORT at 2062.55 | Stop loss: 2072.86275 | Take profit: 2031.6117500000003 +2025-03-10 12:40:06,502 - INFO - CLOSED short at 2065.12 | PnL: -0.12% | $-0.63 +2025-03-10 12:40:06,502 - INFO - OPENED LONG at 2065.12 | Stop loss: 2054.7943999999998 | Take profit: 2096.0968 +2025-03-10 12:40:06,551 - INFO - CLOSED long at 2068.33 | PnL: 0.16% | $0.15 +2025-03-10 12:40:06,551 - INFO - OPENED SHORT at 2068.33 | Stop loss: 2078.6716499999998 | Take profit: 2037.30505 +2025-03-10 12:40:06,601 - INFO - CLOSED short at 2067.49 | PnL: 0.04% | $-0.16 +2025-03-10 12:40:06,602 - INFO - OPENED LONG at 2067.49 | Stop loss: 2057.15255 | Take profit: 2098.5023499999998 +2025-03-10 12:40:06,757 - INFO - CLOSED long at 2061.21 | PnL: -0.30% | $-1.12 +2025-03-10 12:40:06,805 - INFO - OPENED LONG at 2059.9 | Stop loss: 2049.6005 | Take profit: 2090.7985 +2025-03-10 12:40:06,854 - INFO - CLOSED long at 2060.7 | PnL: 0.04% | $-0.17 +2025-03-10 12:40:07,000 - INFO - OPENED LONG at 2065.72 | Stop loss: 2055.3914 | Take profit: 2096.7057999999997 +2025-03-10 12:40:07,095 - INFO - CLOSED long at 2070.24 | PnL: 0.22% | $0.32 +2025-03-10 12:40:07,238 - INFO - OPENED SHORT at 2070.41 | Stop loss: 2080.76205 | Take profit: 2039.3538499999997 +2025-03-10 12:40:07,288 - INFO - CLOSED short at 2073.49 | PnL: -0.15% | $-0.68 +2025-03-10 12:40:07,338 - INFO - OPENED LONG at 2074.05 | Stop loss: 2063.6797500000002 | Take profit: 2105.16075 +2025-03-10 12:40:07,564 - INFO - CLOSED long at 2076.08 | PnL: 0.10% | $-0.01 +2025-03-10 12:40:07,607 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2087.9980499999997 | Take profit: 2046.44585 +2025-03-10 12:40:07,700 - INFO - CLOSED short at 2090.49 | PnL: -0.62% | $-1.95 +2025-03-10 12:40:07,974 - INFO - OPENED LONG at 2137.59 | Stop loss: 2126.90205 | Take profit: 2169.65385 +2025-03-10 12:40:08,062 - INFO - CLOSED long at 2141.3 | PnL: 0.17% | $0.19 +2025-03-10 12:40:08,063 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.0065 | Take profit: 2109.1805 +2025-03-10 12:40:08,152 - INFO - CLOSED short at 2140.01 | PnL: 0.06% | $-0.10 +2025-03-10 12:40:08,153 - INFO - OPENED LONG at 2140.01 | Stop loss: 2129.3099500000003 | Take profit: 2172.11015 +2025-03-10 12:40:08,240 - INFO - STOP LOSS hit for long at 2129.3099500000003 | PnL: -0.50% | $-1.58 +2025-03-10 12:40:08,480 - INFO - OPENED LONG at 2117.24 | Stop loss: 2106.6537999999996 | Take profit: 2148.9985999999994 +2025-03-10 12:40:08,647 - INFO - CLOSED long at 2119.14 | PnL: 0.09% | $-0.03 +2025-03-10 12:40:08,786 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.8928499999997 | Take profit: 2139.0414499999997 +2025-03-10 12:40:08,829 - INFO - CLOSED long at 2110.6 | PnL: 0.15% | $0.13 +2025-03-10 12:40:08,830 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.153 | Take profit: 2078.941 +2025-03-10 12:40:08,871 - INFO - CLOSED short at 2109.05 | PnL: 0.07% | $-0.07 +2025-03-10 12:40:08,964 - INFO - OPENED LONG at 2112.95 | Stop loss: 2102.38525 | Take profit: 2144.64425 +2025-03-10 12:40:09,225 - INFO - CLOSED long at 2114.8 | PnL: 0.09% | $-0.03 +2025-03-10 12:40:09,365 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.9575499999996 | Take profit: 2138.08735 +2025-03-10 12:40:09,454 - INFO - CLOSED long at 2103.33 | PnL: -0.15% | $-0.64 +2025-03-10 12:40:09,454 - INFO - OPENED SHORT at 2103.33 | Stop loss: 2113.8466499999995 | Take profit: 2071.78005 +2025-03-10 12:40:09,503 - INFO - CLOSED short at 2100.5 | PnL: 0.13% | $0.09 +2025-03-10 12:40:09,602 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0323500000004 | Take profit: 2131.02295 +2025-03-10 12:40:09,694 - INFO - CLOSED long at 2102.19 | PnL: 0.13% | $0.07 +2025-03-10 12:40:09,785 - INFO - OPENED SHORT at 2099.25 | Stop loss: 2109.7462499999997 | Take profit: 2067.76125 +2025-03-10 12:40:09,828 - INFO - CLOSED short at 2098.9 | PnL: 0.02% | $-0.21 +2025-03-10 12:40:09,829 - INFO - OPENED LONG at 2098.9 | Stop loss: 2088.4055000000003 | Take profit: 2130.3835 +2025-03-10 12:40:09,873 - INFO - CLOSED long at 2100.69 | PnL: 0.09% | $-0.04 +2025-03-10 12:40:09,957 - INFO - OPENED SHORT at 2106.39 | Stop loss: 2116.9219499999995 | Take profit: 2074.7941499999997 +2025-03-10 12:40:10,004 - INFO - CLOSED short at 2100.74 | PnL: 0.27% | $0.43 +2025-03-10 12:40:10,004 - INFO - OPENED LONG at 2100.74 | Stop loss: 2090.2362999999996 | Take profit: 2132.2510999999995 +2025-03-10 12:40:10,200 - INFO - CLOSED long at 2099.59 | PnL: -0.05% | $-0.40 +2025-03-10 12:40:10,615 - INFO - OPENED LONG at 2094.08 | Stop loss: 2083.6096 | Take profit: 2125.4912 +2025-03-10 12:40:10,705 - INFO - CLOSED long at 2083.28 | PnL: -0.52% | $-1.56 +2025-03-10 12:40:10,706 - INFO - OPENED SHORT at 2083.28 | Stop loss: 2093.6964 | Take profit: 2052.0308 +2025-03-10 12:40:10,937 - INFO - CLOSED short at 2081.49 | PnL: 0.09% | $-0.03 +2025-03-10 12:40:11,143 - INFO - OPENED SHORT at 2085.09 | Stop loss: 2095.51545 | Take profit: 2053.81365 +2025-03-10 12:40:11,190 - INFO - CLOSED short at 2083.59 | PnL: 0.07% | $-0.07 +2025-03-10 12:40:11,190 - INFO - OPENED LONG at 2083.59 | Stop loss: 2073.17205 | Take profit: 2114.8438499999997 +2025-03-10 12:40:11,461 - INFO - CLOSED long at 2085.85 | PnL: 0.11% | $0.02 +2025-03-10 12:40:11,614 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 16.1% in downtrends | Avg Win=$0.26, Avg Loss=$-0.47 +2025-03-10 12:40:11,616 - INFO - Episode 2: Reward=-96.61, Balance=$61.85, Win Rate=20.2%, Trades=119, Episode PnL=$-19.85, Total PnL=$-130.10, Max Drawdown=38.2%, Pred Accuracy=99.2% +2025-03-10 12:40:11,783 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 12:40:11,783 - INFO - New best PnL model saved: $-19.85 +2025-03-10 12:40:11,817 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:40:12,205 - INFO - OPENED LONG at 2057.59 | Stop loss: 2047.3020500000002 | Take profit: 2088.45385 +2025-03-10 12:40:12,397 - INFO - CLOSED long at 2060.51 | PnL: 0.14% | $0.17 +2025-03-10 12:40:12,397 - INFO - OPENED SHORT at 2060.51 | Stop loss: 2070.81255 | Take profit: 2029.6023500000001 +2025-03-10 12:40:12,675 - INFO - CLOSED short at 2058.51 | PnL: 0.10% | $-0.01 +2025-03-10 12:40:12,675 - INFO - OPENED LONG at 2058.51 | Stop loss: 2048.21745 | Take profit: 2089.38765 +2025-03-10 12:40:12,769 - INFO - CLOSED long at 2058.59 | PnL: 0.00% | $-0.39 +2025-03-10 12:40:12,881 - INFO - OPENED LONG at 2055.39 | Stop loss: 2045.11305 | Take profit: 2086.2208499999997 +2025-03-10 12:40:12,941 - INFO - CLOSED long at 2053.56 | PnL: -0.09% | $-0.75 +2025-03-10 12:40:13,068 - INFO - OPENED LONG at 2051.66 | Stop loss: 2041.4017 | Take profit: 2082.4348999999997 +2025-03-10 12:40:13,122 - INFO - CLOSED long at 2052.16 | PnL: 0.02% | $-0.30 +2025-03-10 12:40:13,123 - INFO - OPENED SHORT at 2052.16 | Stop loss: 2062.4207999999994 | Take profit: 2021.3775999999998 +2025-03-10 12:40:13,328 - INFO - CLOSED short at 2050.44 | PnL: 0.08% | $-0.06 +2025-03-10 12:40:13,328 - INFO - OPENED LONG at 2050.44 | Stop loss: 2040.1878000000002 | Take profit: 2081.1965999999998 +2025-03-10 12:40:13,516 - INFO - CLOSED long at 2051.99 | PnL: 0.08% | $-0.10 +2025-03-10 12:40:13,998 - INFO - OPENED LONG at 2045.79 | Stop loss: 2035.56105 | Take profit: 2076.4768499999996 +2025-03-10 12:40:14,092 - INFO - CLOSED long at 2047.59 | PnL: 0.09% | $-0.05 +2025-03-10 12:40:14,093 - INFO - OPENED SHORT at 2047.59 | Stop loss: 2057.82795 | Take profit: 2016.8761499999998 +2025-03-10 12:40:14,231 - INFO - CLOSED short at 2050.24 | PnL: -0.13% | $-0.90 +2025-03-10 12:40:14,549 - INFO - OPENED LONG at 2057.01 | Stop loss: 2046.7249500000003 | Take profit: 2087.86515 +2025-03-10 12:40:14,693 - INFO - CLOSED long at 2060.13 | PnL: 0.15% | $0.20 +2025-03-10 12:40:14,694 - INFO - OPENED SHORT at 2060.13 | Stop loss: 2070.43065 | Take profit: 2029.2280500000002 +2025-03-10 12:40:14,795 - INFO - CLOSED short at 2061.49 | PnL: -0.07% | $-0.65 +2025-03-10 12:40:14,846 - INFO - OPENED LONG at 2063.29 | Stop loss: 2052.97355 | Take profit: 2094.23935 +2025-03-10 12:40:14,896 - INFO - CLOSED long at 2064.61 | PnL: 0.06% | $-0.14 +2025-03-10 12:40:14,944 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.27205 | Take profit: 2094.54385 +2025-03-10 12:40:15,140 - INFO - CLOSED long at 2060.99 | PnL: -0.13% | $-0.88 +2025-03-10 12:40:15,140 - INFO - OPENED SHORT at 2060.99 | Stop loss: 2071.2949499999995 | Take profit: 2030.0751499999997 +2025-03-10 12:40:15,279 - INFO - CLOSED short at 2061.89 | PnL: -0.04% | $-0.55 +2025-03-10 12:40:15,281 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.5805499999997 | Take profit: 2092.8183499999996 +2025-03-10 12:40:15,327 - INFO - CLOSED long at 2062.89 | PnL: 0.05% | $-0.20 +2025-03-10 12:40:15,328 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.2044499999997 | Take profit: 2031.9466499999999 +2025-03-10 12:40:15,419 - INFO - CLOSED short at 2059.49 | PnL: 0.16% | $0.25 +2025-03-10 12:40:15,420 - INFO - OPENED LONG at 2059.49 | Stop loss: 2049.1925499999998 | Take profit: 2090.3823499999994 +2025-03-10 12:40:15,510 - INFO - CLOSED long at 2057.89 | PnL: -0.08% | $-0.68 +2025-03-10 12:40:15,698 - INFO - OPENED LONG at 2061.18 | Stop loss: 2050.8741 | Take profit: 2092.0977 +2025-03-10 12:40:15,745 - INFO - CLOSED long at 2064.32 | PnL: 0.15% | $0.20 +2025-03-10 12:40:15,746 - INFO - OPENED SHORT at 2064.32 | Stop loss: 2074.6416 | Take profit: 2033.3552000000002 +2025-03-10 12:40:15,792 - INFO - CLOSED short at 2065.86 | PnL: -0.07% | $-0.66 +2025-03-10 12:40:15,793 - INFO - OPENED LONG at 2065.86 | Stop loss: 2055.5307000000003 | Take profit: 2096.8478999999998 +2025-03-10 12:40:15,976 - INFO - CLOSED long at 2067.89 | PnL: 0.10% | $-0.01 +2025-03-10 12:40:15,976 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.22945 | Take profit: 2036.8716499999998 +2025-03-10 12:40:16,124 - INFO - CLOSED short at 2069.6 | PnL: -0.08% | $-0.69 +2025-03-10 12:40:16,124 - INFO - OPENED LONG at 2069.6 | Stop loss: 2059.252 | Take profit: 2100.644 +2025-03-10 12:40:16,546 - INFO - CLOSED long at 2072.91 | PnL: 0.16% | $0.22 +2025-03-10 12:40:16,681 - INFO - OPENED SHORT at 2071.41 | Stop loss: 2081.7670499999995 | Take profit: 2040.3388499999999 +2025-03-10 12:40:16,825 - INFO - CLOSED short at 2072.8 | PnL: -0.07% | $-0.63 +2025-03-10 12:40:16,826 - INFO - OPENED LONG at 2072.8 | Stop loss: 2062.436 | Take profit: 2103.892 +2025-03-10 12:40:16,970 - INFO - CLOSED long at 2068.02 | PnL: -0.23% | $-1.24 +2025-03-10 12:40:16,970 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.3601 | Take profit: 2036.9996999999998 +2025-03-10 12:40:17,020 - INFO - CLOSED short at 2067.2 | PnL: 0.04% | $-0.22 +2025-03-10 12:40:17,021 - INFO - OPENED LONG at 2067.2 | Stop loss: 2056.864 | Take profit: 2098.2079999999996 +2025-03-10 12:40:17,606 - INFO - CLOSED long at 2066.29 | PnL: -0.04% | $-0.53 +2025-03-10 12:40:17,607 - INFO - OPENED SHORT at 2066.29 | Stop loss: 2076.6214499999996 | Take profit: 2035.29565 +2025-03-10 12:40:17,890 - INFO - CLOSED short at 2068.59 | PnL: -0.11% | $-0.77 +2025-03-10 12:40:17,891 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.24705 | Take profit: 2099.61885 +2025-03-10 12:40:17,939 - INFO - CLOSED long at 2069.7 | PnL: 0.05% | $-0.17 +2025-03-10 12:40:17,940 - INFO - OPENED SHORT at 2069.7 | Stop loss: 2080.0484999999994 | Take profit: 2038.6544999999999 +2025-03-10 12:40:17,989 - INFO - CLOSED short at 2070.4 | PnL: -0.03% | $-0.48 +2025-03-10 12:40:18,046 - INFO - OPENED SHORT at 2069.96 | Stop loss: 2080.3098 | Take profit: 2038.9106 +2025-03-10 12:40:18,382 - INFO - CLOSED short at 2072.15 | PnL: -0.11% | $-0.74 +2025-03-10 12:40:18,382 - INFO - OPENED LONG at 2072.15 | Stop loss: 2061.7892500000003 | Take profit: 2103.23225 +2025-03-10 12:40:18,566 - INFO - CLOSED long at 2070.4 | PnL: -0.08% | $-0.66 +2025-03-10 12:40:18,612 - INFO - OPENED SHORT at 2071.11 | Stop loss: 2081.46555 | Take profit: 2040.0433500000001 +2025-03-10 12:40:18,656 - INFO - CLOSED short at 2069.46 | PnL: 0.08% | $-0.07 +2025-03-10 12:40:18,700 - INFO - OPENED LONG at 2069.35 | Stop loss: 2059.0032499999998 | Take profit: 2100.39025 +2025-03-10 12:40:18,744 - INFO - CLOSED long at 2068.32 | PnL: -0.05% | $-0.53 +2025-03-10 12:40:18,745 - INFO - OPENED SHORT at 2068.32 | Stop loss: 2078.6616 | Take profit: 2037.2952 +2025-03-10 12:40:18,786 - INFO - CLOSED short at 2067.0 | PnL: 0.06% | $-0.13 +2025-03-10 12:40:18,787 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.665 | Take profit: 2098.0049999999997 +2025-03-10 12:40:19,013 - INFO - CLOSED long at 2063.61 | PnL: -0.16% | $-0.93 +2025-03-10 12:40:19,101 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.22945 | Take profit: 2036.8716499999998 +2025-03-10 12:40:19,143 - INFO - CLOSED short at 2068.58 | PnL: -0.03% | $-0.46 +2025-03-10 12:40:19,144 - INFO - OPENED LONG at 2068.58 | Stop loss: 2058.2371 | Take profit: 2099.6086999999998 +2025-03-10 12:40:19,188 - INFO - CLOSED long at 2068.8 | PnL: 0.01% | $-0.31 +2025-03-10 12:40:19,233 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.9933 | Take profit: 2100.3801 +2025-03-10 12:40:19,561 - INFO - CLOSED long at 2070.4 | PnL: 0.05% | $-0.17 +2025-03-10 12:40:19,652 - INFO - OPENED LONG at 2068.5 | Stop loss: 2058.1575 | Take profit: 2099.5274999999997 +2025-03-10 12:40:19,698 - INFO - CLOSED long at 2068.69 | PnL: 0.01% | $-0.31 +2025-03-10 12:40:19,698 - INFO - OPENED SHORT at 2068.69 | Stop loss: 2079.03345 | Take profit: 2037.65965 +2025-03-10 12:40:19,922 - INFO - CLOSED short at 2066.1 | PnL: 0.13% | $0.09 +2025-03-10 12:40:20,011 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.7219499999997 | Take profit: 2035.3941499999999 +2025-03-10 12:40:20,109 - INFO - CLOSED short at 2070.04 | PnL: -0.18% | $-0.95 +2025-03-10 12:40:20,155 - INFO - OPENED SHORT at 2067.8 | Stop loss: 2078.139 | Take profit: 2036.7830000000001 +2025-03-10 12:40:20,347 - INFO - CLOSED short at 2064.99 | PnL: 0.14% | $0.12 +2025-03-10 12:40:20,348 - INFO - OPENED LONG at 2064.99 | Stop loss: 2054.6650499999996 | Take profit: 2095.9648499999994 +2025-03-10 12:40:20,405 - INFO - CLOSED long at 2065.83 | PnL: 0.04% | $-0.20 +2025-03-10 12:40:20,406 - INFO - OPENED SHORT at 2065.83 | Stop loss: 2076.1591499999995 | Take profit: 2034.8425499999998 +2025-03-10 12:40:20,654 - INFO - CLOSED short at 2061.78 | PnL: 0.20% | $0.33 +2025-03-10 12:40:20,882 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.6352 | Take profit: 2095.9343999999996 +2025-03-10 12:40:21,101 - INFO - CLOSED long at 2066.09 | PnL: 0.05% | $-0.15 +2025-03-10 12:40:21,260 - INFO - OPENED LONG at 2062.71 | Stop loss: 2052.39645 | Take profit: 2093.65065 +2025-03-10 12:40:21,588 - INFO - CLOSED long at 2060.65 | PnL: -0.10% | $-0.68 +2025-03-10 12:40:21,589 - INFO - OPENED SHORT at 2060.65 | Stop loss: 2070.95325 | Take profit: 2029.74025 +2025-03-10 12:40:21,690 - INFO - CLOSED short at 2059.3 | PnL: 0.07% | $-0.12 +2025-03-10 12:40:21,690 - INFO - OPENED LONG at 2059.3 | Stop loss: 2049.0035000000003 | Take profit: 2090.1895 +2025-03-10 12:40:21,738 - INFO - CLOSED long at 2060.31 | PnL: 0.05% | $-0.17 +2025-03-10 12:40:21,784 - INFO - OPENED LONG at 2061.8 | Stop loss: 2051.491 | Take profit: 2092.727 +2025-03-10 12:40:21,835 - INFO - CLOSED long at 2064.7 | PnL: 0.14% | $0.14 +2025-03-10 12:40:21,935 - INFO - OPENED SHORT at 2060.91 | Stop loss: 2071.2145499999997 | Take profit: 2029.99635 +2025-03-10 12:40:21,986 - INFO - CLOSED short at 2060.3 | PnL: 0.03% | $-0.24 +2025-03-10 12:40:22,181 - INFO - OPENED SHORT at 2065.36 | Stop loss: 2075.6868 | Take profit: 2034.3796000000002 +2025-03-10 12:40:22,417 - INFO - CLOSED short at 2063.53 | PnL: 0.09% | $-0.04 +2025-03-10 12:40:22,418 - INFO - OPENED LONG at 2063.53 | Stop loss: 2053.2123500000002 | Take profit: 2094.48295 +2025-03-10 12:40:22,468 - INFO - CLOSED long at 2063.0 | PnL: -0.03% | $-0.42 +2025-03-10 12:40:22,517 - INFO - OPENED SHORT at 2062.6 | Stop loss: 2072.9129999999996 | Take profit: 2031.6609999999998 +2025-03-10 12:40:22,566 - INFO - CLOSED short at 2061.89 | PnL: 0.03% | $-0.22 +2025-03-10 12:40:22,612 - INFO - OPENED LONG at 2061.7 | Stop loss: 2051.3914999999997 | Take profit: 2092.6254999999996 +2025-03-10 12:40:22,712 - INFO - CLOSED long at 2061.09 | PnL: -0.03% | $-0.43 +2025-03-10 12:40:22,713 - INFO - OPENED SHORT at 2061.09 | Stop loss: 2071.39545 | Take profit: 2030.1736500000002 +2025-03-10 12:40:22,808 - INFO - CLOSED short at 2059.16 | PnL: 0.09% | $-0.02 +2025-03-10 12:40:22,864 - INFO - OPENED LONG at 2059.02 | Stop loss: 2048.7249 | Take profit: 2089.9053 +2025-03-10 12:40:23,111 - INFO - CLOSED long at 2058.28 | PnL: -0.04% | $-0.45 +2025-03-10 12:40:23,111 - INFO - OPENED SHORT at 2058.28 | Stop loss: 2068.5714 | Take profit: 2027.4058000000002 +2025-03-10 12:40:23,210 - INFO - CLOSED short at 2055.6 | PnL: 0.13% | $0.10 +2025-03-10 12:40:23,252 - INFO - OPENED SHORT at 2054.89 | Stop loss: 2065.1644499999998 | Take profit: 2024.0666499999998 +2025-03-10 12:40:23,342 - INFO - CLOSED short at 2056.71 | PnL: -0.09% | $-0.62 +2025-03-10 12:40:23,435 - INFO - OPENED LONG at 2059.8 | Stop loss: 2049.501 | Take profit: 2090.697 +2025-03-10 12:40:23,805 - INFO - CLOSED long at 2066.01 | PnL: 0.30% | $0.66 +2025-03-10 12:40:23,806 - INFO - OPENED SHORT at 2066.01 | Stop loss: 2076.34005 | Take profit: 2035.0198500000001 +2025-03-10 12:40:23,986 - INFO - CLOSED short at 2066.34 | PnL: -0.02% | $-0.38 +2025-03-10 12:40:23,986 - INFO - OPENED LONG at 2066.34 | Stop loss: 2056.0083 | Take profit: 2097.3351 +2025-03-10 12:40:24,135 - INFO - CLOSED long at 2067.01 | PnL: 0.03% | $-0.22 +2025-03-10 12:40:24,326 - INFO - OPENED SHORT at 2074.3 | Stop loss: 2084.6715 | Take profit: 2043.1855 +2025-03-10 12:40:24,462 - INFO - CLOSED short at 2072.6 | PnL: 0.08% | $-0.06 +2025-03-10 12:40:24,557 - INFO - OPENED LONG at 2070.01 | Stop loss: 2059.65995 | Take profit: 2101.06015 +2025-03-10 12:40:24,606 - INFO - CLOSED long at 2071.6 | PnL: 0.08% | $-0.08 +2025-03-10 12:40:24,785 - INFO - OPENED SHORT at 2068.39 | Stop loss: 2078.73195 | Take profit: 2037.3641499999999 +2025-03-10 12:40:24,835 - INFO - CLOSED short at 2069.69 | PnL: -0.06% | $-0.53 +2025-03-10 12:40:24,837 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.34155 | Take profit: 2100.73535 +2025-03-10 12:40:25,027 - INFO - CLOSED long at 2072.99 | PnL: 0.16% | $0.19 +2025-03-10 12:40:25,028 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.3549499999995 | Take profit: 2041.8951499999998 +2025-03-10 12:40:25,073 - INFO - CLOSED short at 2071.49 | PnL: 0.07% | $-0.09 +2025-03-10 12:40:25,074 - INFO - OPENED LONG at 2071.49 | Stop loss: 2061.13255 | Take profit: 2102.5623499999997 +2025-03-10 12:40:25,225 - INFO - CLOSED long at 2066.38 | PnL: -0.25% | $-1.13 +2025-03-10 12:40:25,226 - INFO - OPENED SHORT at 2066.38 | Stop loss: 2076.7119 | Take profit: 2035.3843000000002 +2025-03-10 12:40:25,273 - INFO - CLOSED short at 2065.7 | PnL: 0.03% | $-0.21 +2025-03-10 12:40:25,318 - INFO - OPENED SHORT at 2065.66 | Stop loss: 2075.9882999999995 | Take profit: 2034.6751 +2025-03-10 12:40:25,413 - INFO - CLOSED short at 2063.97 | PnL: 0.08% | $-0.06 +2025-03-10 12:40:25,414 - INFO - OPENED LONG at 2063.97 | Stop loss: 2053.65015 | Take profit: 2094.9295499999994 +2025-03-10 12:40:25,598 - INFO - CLOSED long at 2064.31 | PnL: 0.02% | $-0.27 +2025-03-10 12:40:25,697 - INFO - OPENED LONG at 2067.53 | Stop loss: 2057.1923500000003 | Take profit: 2098.54295 +2025-03-10 12:40:25,743 - INFO - CLOSED long at 2065.29 | PnL: -0.11% | $-0.66 +2025-03-10 12:40:25,922 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.24705 | Take profit: 2099.61885 +2025-03-10 12:40:25,971 - INFO - CLOSED long at 2071.59 | PnL: 0.15% | $0.14 +2025-03-10 12:40:25,972 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.9479499999998 | Take profit: 2040.5161500000002 +2025-03-10 12:40:26,020 - INFO - CLOSED short at 2070.2 | PnL: 0.07% | $-0.10 +2025-03-10 12:40:26,067 - INFO - OPENED LONG at 2071.35 | Stop loss: 2060.99325 | Take profit: 2102.4202499999997 +2025-03-10 12:40:26,112 - INFO - CLOSED long at 2070.9 | PnL: -0.02% | $-0.38 +2025-03-10 12:40:26,409 - INFO - OPENED LONG at 2071.99 | Stop loss: 2061.6300499999998 | Take profit: 2103.0698499999994 +2025-03-10 12:40:26,502 - INFO - CLOSED long at 2068.67 | PnL: -0.16% | $-0.82 +2025-03-10 12:40:26,503 - INFO - OPENED SHORT at 2068.67 | Stop loss: 2079.0133499999997 | Take profit: 2037.63995 +2025-03-10 12:40:26,549 - INFO - CLOSED short at 2070.67 | PnL: -0.10% | $-0.61 +2025-03-10 12:40:26,549 - INFO - OPENED LONG at 2070.67 | Stop loss: 2060.31665 | Take profit: 2101.7300499999997 +2025-03-10 12:40:26,645 - INFO - CLOSED long at 2071.61 | PnL: 0.05% | $-0.17 +2025-03-10 12:40:26,694 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.99815 | Take profit: 2105.48555 +2025-03-10 12:40:26,742 - INFO - CLOSED long at 2075.07 | PnL: 0.03% | $-0.20 +2025-03-10 12:40:26,744 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.44535 | Take profit: 2043.94395 +2025-03-10 12:40:26,794 - INFO - CLOSED short at 2074.35 | PnL: 0.03% | $-0.20 +2025-03-10 12:40:26,795 - INFO - OPENED LONG at 2074.35 | Stop loss: 2063.97825 | Take profit: 2105.4652499999997 +2025-03-10 12:40:26,845 - INFO - CLOSED long at 2073.27 | PnL: -0.05% | $-0.47 +2025-03-10 12:40:26,846 - INFO - OPENED SHORT at 2073.27 | Stop loss: 2083.6363499999998 | Take profit: 2042.17095 +2025-03-10 12:40:26,895 - INFO - CLOSED short at 2073.99 | PnL: -0.03% | $-0.41 +2025-03-10 12:40:26,896 - INFO - OPENED LONG at 2073.99 | Stop loss: 2063.62005 | Take profit: 2105.0998499999996 +2025-03-10 12:40:27,000 - INFO - CLOSED long at 2075.29 | PnL: 0.06% | $-0.11 +2025-03-10 12:40:27,001 - INFO - OPENED SHORT at 2075.29 | Stop loss: 2085.6664499999997 | Take profit: 2044.16065 +2025-03-10 12:40:27,169 - INFO - CLOSED short at 2074.0 | PnL: 0.06% | $-0.11 +2025-03-10 12:40:27,170 - INFO - OPENED LONG at 2074.0 | Stop loss: 2063.63 | Take profit: 2105.1099999999997 +2025-03-10 12:40:27,219 - INFO - CLOSED long at 2072.09 | PnL: -0.09% | $-0.58 +2025-03-10 12:40:27,219 - INFO - OPENED SHORT at 2072.09 | Stop loss: 2082.45045 | Take profit: 2041.0086500000002 +2025-03-10 12:40:27,274 - INFO - CLOSED short at 2069.97 | PnL: 0.10% | $0.01 +2025-03-10 12:40:27,329 - INFO - OPENED LONG at 2067.7 | Stop loss: 2057.3615 | Take profit: 2098.7155 +2025-03-10 12:40:27,385 - INFO - CLOSED long at 2067.0 | PnL: -0.03% | $-0.40 +2025-03-10 12:40:27,628 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.5406000000003 | Take profit: 2098.8982 +2025-03-10 12:40:27,796 - INFO - CLOSED long at 2069.0 | PnL: 0.05% | $-0.14 +2025-03-10 12:40:27,797 - INFO - OPENED SHORT at 2069.0 | Stop loss: 2079.345 | Take profit: 2037.965 +2025-03-10 12:40:27,850 - INFO - CLOSED short at 2070.19 | PnL: -0.06% | $-0.47 +2025-03-10 12:40:27,850 - INFO - OPENED LONG at 2070.19 | Stop loss: 2059.83905 | Take profit: 2101.2428499999996 +2025-03-10 12:40:28,061 - INFO - CLOSED long at 2065.7 | PnL: -0.22% | $-0.94 +2025-03-10 12:40:28,168 - INFO - OPENED SHORT at 2065.07 | Stop loss: 2075.39535 | Take profit: 2034.0939500000002 +2025-03-10 12:40:28,261 - INFO - CLOSED short at 2063.39 | PnL: 0.08% | $-0.05 +2025-03-10 12:40:28,261 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.07305 | Take profit: 2094.3408499999996 +2025-03-10 12:40:28,308 - INFO - CLOSED long at 2062.34 | PnL: -0.05% | $-0.44 +2025-03-10 12:40:28,560 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.8224999999998 | Take profit: 2033.5325 +2025-03-10 12:40:28,609 - INFO - CLOSED short at 2066.33 | PnL: -0.09% | $-0.55 +2025-03-10 12:40:28,750 - INFO - OPENED LONG at 2060.2 | Stop loss: 2049.899 | Take profit: 2091.1029999999996 +2025-03-10 12:40:28,798 - INFO - CLOSED long at 2059.2 | PnL: -0.05% | $-0.43 +2025-03-10 12:40:28,798 - INFO - OPENED SHORT at 2059.2 | Stop loss: 2069.4959999999996 | Take profit: 2028.312 +2025-03-10 12:40:28,845 - INFO - CLOSED short at 2058.09 | PnL: 0.05% | $-0.13 +2025-03-10 12:40:28,894 - INFO - OPENED LONG at 2058.65 | Stop loss: 2048.35675 | Take profit: 2089.5297499999997 +2025-03-10 12:40:29,521 - INFO - CLOSED long at 2062.43 | PnL: 0.18% | $0.24 +2025-03-10 12:40:29,703 - INFO - OPENED SHORT at 2067.49 | Stop loss: 2077.8274499999998 | Take profit: 2036.4776499999998 +2025-03-10 12:40:29,752 - INFO - CLOSED short at 2066.59 | PnL: 0.04% | $-0.16 +2025-03-10 12:40:29,753 - INFO - OPENED LONG at 2066.59 | Stop loss: 2056.25705 | Take profit: 2097.58885 +2025-03-10 12:40:29,855 - INFO - CLOSED long at 2061.21 | PnL: -0.26% | $-1.03 +2025-03-10 12:40:30,543 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6250499999996 | Take profit: 2104.0848499999997 +2025-03-10 12:40:30,598 - INFO - CLOSED long at 2071.89 | PnL: -0.05% | $-0.43 +2025-03-10 12:40:30,599 - INFO - OPENED SHORT at 2071.89 | Stop loss: 2082.24945 | Take profit: 2040.8116499999999 +2025-03-10 12:40:30,815 - INFO - CLOSED short at 2077.61 | PnL: -0.28% | $-1.05 +2025-03-10 12:40:30,815 - INFO - OPENED LONG at 2077.61 | Stop loss: 2067.22195 | Take profit: 2108.7741499999997 +2025-03-10 12:40:30,866 - INFO - CLOSED long at 2085.56 | PnL: 0.38% | $0.78 +2025-03-10 12:40:30,866 - INFO - OPENED SHORT at 2085.56 | Stop loss: 2095.9878 | Take profit: 2054.2766 +2025-03-10 12:40:30,916 - INFO - CLOSED short at 2090.49 | PnL: -0.24% | $-0.94 +2025-03-10 12:40:31,067 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2376999999997 | Take profit: 2107.4469 +2025-03-10 12:40:31,118 - INFO - CLOSED short at 2131.78 | PnL: 0.36% | $0.72 +2025-03-10 12:40:31,230 - INFO - OPENED SHORT at 2137.59 | Stop loss: 2148.2779499999997 | Take profit: 2105.52615 +2025-03-10 12:40:31,349 - INFO - CLOSED short at 2141.3 | PnL: -0.17% | $-0.76 +2025-03-10 12:40:31,349 - INFO - OPENED LONG at 2141.3 | Stop loss: 2130.5935 | Take profit: 2173.4195 +2025-03-10 12:40:31,403 - INFO - CLOSED long at 2142.68 | PnL: 0.06% | $-0.10 +2025-03-10 12:40:31,403 - INFO - OPENED SHORT at 2142.68 | Stop loss: 2153.3933999999995 | Take profit: 2110.5398 +2025-03-10 12:40:31,670 - INFO - CLOSED short at 2128.69 | PnL: 0.65% | $1.52 +2025-03-10 12:40:31,884 - INFO - OPENED SHORT at 2119.93 | Stop loss: 2130.5296499999995 | Take profit: 2088.13105 +2025-03-10 12:40:31,935 - INFO - CLOSED short at 2121.4 | PnL: -0.07% | $-0.47 +2025-03-10 12:40:31,936 - INFO - OPENED LONG at 2121.4 | Stop loss: 2110.793 | Take profit: 2153.221 +2025-03-10 12:40:32,043 - INFO - CLOSED long at 2119.14 | PnL: -0.11% | $-0.58 +2025-03-10 12:40:32,146 - INFO - OPENED LONG at 2115.28 | Stop loss: 2104.7036000000003 | Take profit: 2147.0092 +2025-03-10 12:40:32,348 - INFO - CLOSED long at 2112.09 | PnL: -0.15% | $-0.69 +2025-03-10 12:40:32,349 - INFO - OPENED SHORT at 2112.09 | Stop loss: 2122.65045 | Take profit: 2080.4086500000003 +2025-03-10 12:40:32,469 - INFO - CLOSED short at 2112.46 | PnL: -0.02% | $-0.32 +2025-03-10 12:40:32,722 - INFO - OPENED LONG at 2114.8 | Stop loss: 2104.226 | Take profit: 2146.522 +2025-03-10 12:40:32,775 - INFO - CLOSED long at 2110.9 | PnL: -0.18% | $-0.77 +2025-03-10 12:40:32,878 - INFO - OPENED SHORT at 2106.49 | Stop loss: 2117.0224499999995 | Take profit: 2074.89265 +2025-03-10 12:40:32,929 - INFO - CLOSED short at 2108.06 | PnL: -0.07% | $-0.47 +2025-03-10 12:40:32,979 - INFO - OPENED LONG at 2103.33 | Stop loss: 2092.81335 | Take profit: 2134.8799499999996 +2025-03-10 12:40:33,031 - INFO - CLOSED long at 2100.5 | PnL: -0.13% | $-0.63 +2025-03-10 12:40:33,083 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.55 | Take profit: 2121.35 +2025-03-10 12:40:33,192 - INFO - CLOSED long at 2098.1 | PnL: 0.39% | $0.76 +2025-03-10 12:40:33,510 - INFO - OPENED LONG at 2100.69 | Stop loss: 2090.18655 | Take profit: 2132.20035 +2025-03-10 12:40:33,625 - INFO - CLOSED long at 2106.39 | PnL: 0.27% | $0.46 +2025-03-10 12:40:33,678 - INFO - OPENED SHORT at 2100.74 | Stop loss: 2111.2436999999995 | Take profit: 2069.2288999999996 +2025-03-10 12:40:34,044 - INFO - CLOSED short at 2095.29 | PnL: 0.26% | $0.43 +2025-03-10 12:40:34,044 - INFO - OPENED LONG at 2095.29 | Stop loss: 2084.81355 | Take profit: 2126.71935 +2025-03-10 12:40:34,153 - INFO - CLOSED long at 2093.33 | PnL: -0.09% | $-0.53 +2025-03-10 12:40:34,260 - INFO - OPENED SHORT at 2091.1 | Stop loss: 2101.5554999999995 | Take profit: 2059.7335 +2025-03-10 12:40:34,312 - INFO - CLOSED short at 2094.72 | PnL: -0.17% | $-0.74 +2025-03-10 12:40:34,313 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.2464 | Take profit: 2126.1407999999997 +2025-03-10 12:40:34,513 - INFO - CLOSED long at 2083.28 | PnL: -0.55% | $-1.72 +2025-03-10 12:40:34,514 - INFO - OPENED SHORT at 2083.28 | Stop loss: 2093.6964 | Take profit: 2052.0308 +2025-03-10 12:40:34,930 - INFO - CLOSED short at 2081.25 | PnL: 0.10% | $-0.01 +2025-03-10 12:40:35,140 - INFO - OPENED SHORT at 2086.57 | Stop loss: 2097.00285 | Take profit: 2055.27145 +2025-03-10 12:40:35,434 - INFO - CLOSED short at 2088.32 | PnL: -0.08% | $-0.48 +2025-03-10 12:40:35,435 - INFO - OPENED LONG at 2088.32 | Stop loss: 2077.8784 | Take profit: 2119.6448 +2025-03-10 12:40:35,481 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 9.4% in downtrends | Avg Win=$0.37, Avg Loss=$-0.44 +2025-03-10 12:40:35,482 - INFO - Episode 3: Reward=-109.66, Balance=$64.37, Win Rate=17.5%, Trades=120, Episode PnL=$-14.32, Total PnL=$-165.74, Max Drawdown=35.2%, Pred Accuracy=99.3% +2025-03-10 12:40:35,622 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 12:40:35,623 - INFO - New best PnL model saved: $-14.32 +2025-03-10 12:40:35,653 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:40:36,105 - INFO - OPENED LONG at 2059.4 | Stop loss: 2049.103 | Take profit: 2090.2909999999997 +2025-03-10 12:40:36,199 - INFO - CLOSED long at 2060.51 | PnL: 0.05% | $-0.18 +2025-03-10 12:40:36,200 - INFO - OPENED SHORT at 2060.51 | Stop loss: 2070.81255 | Take profit: 2029.6023500000001 +2025-03-10 12:40:36,384 - INFO - CLOSED short at 2057.9 | PnL: 0.13% | $0.11 +2025-03-10 12:40:36,478 - INFO - OPENED SHORT at 2058.51 | Stop loss: 2068.80255 | Take profit: 2027.63235 +2025-03-10 12:40:36,745 - INFO - CLOSED short at 2052.7 | PnL: 0.28% | $0.73 +2025-03-10 12:40:37,037 - INFO - OPENED SHORT at 2050.44 | Stop loss: 2060.6922 | Take profit: 2019.6834000000001 +2025-03-10 12:40:37,206 - INFO - CLOSED short at 2049.6 | PnL: 0.04% | $-0.24 +2025-03-10 12:40:37,207 - INFO - OPENED LONG at 2049.6 | Stop loss: 2039.3519999999999 | Take profit: 2080.3439999999996 +2025-03-10 12:40:37,256 - INFO - CLOSED long at 2051.99 | PnL: 0.12% | $0.07 +2025-03-10 12:40:37,305 - INFO - OPENED SHORT at 2049.61 | Stop loss: 2059.85805 | Take profit: 2018.8658500000001 +2025-03-10 12:40:37,554 - INFO - CLOSED short at 2047.4 | PnL: 0.11% | $0.03 +2025-03-10 12:40:37,555 - INFO - OPENED LONG at 2047.4 | Stop loss: 2037.163 | Take profit: 2078.111 +2025-03-10 12:40:37,798 - INFO - CLOSED long at 2048.13 | PnL: 0.04% | $-0.26 +2025-03-10 12:40:37,905 - INFO - OPENED LONG at 2048.51 | Stop loss: 2038.2674500000003 | Take profit: 2079.23765 +2025-03-10 12:40:37,997 - INFO - CLOSED long at 2050.24 | PnL: 0.08% | $-0.06 +2025-03-10 12:40:38,047 - INFO - OPENED SHORT at 2049.89 | Stop loss: 2060.1394499999997 | Take profit: 2019.1416499999998 +2025-03-10 12:40:38,092 - INFO - CLOSED short at 2051.11 | PnL: -0.06% | $-0.64 +2025-03-10 12:40:38,305 - INFO - OPENED LONG at 2055.69 | Stop loss: 2045.41155 | Take profit: 2086.52535 +2025-03-10 12:40:38,722 - INFO - CLOSED long at 2064.61 | PnL: 0.43% | $1.33 +2025-03-10 12:40:38,769 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.27205 | Take profit: 2094.54385 +2025-03-10 12:40:38,817 - INFO - CLOSED long at 2061.61 | PnL: -0.10% | $-0.79 +2025-03-10 12:40:38,959 - INFO - OPENED SHORT at 2060.99 | Stop loss: 2071.2949499999995 | Take profit: 2030.0751499999997 +2025-03-10 12:40:39,187 - INFO - CLOSED short at 2060.31 | PnL: 0.03% | $-0.27 +2025-03-10 12:40:39,188 - INFO - OPENED LONG at 2060.31 | Stop loss: 2050.00845 | Take profit: 2091.21465 +2025-03-10 12:40:39,235 - INFO - CLOSED long at 2059.49 | PnL: -0.04% | $-0.56 +2025-03-10 12:40:39,278 - INFO - OPENED SHORT at 2057.8 | Stop loss: 2068.089 | Take profit: 2026.9330000000002 +2025-03-10 12:40:39,324 - INFO - CLOSED short at 2057.89 | PnL: -0.00% | $-0.41 +2025-03-10 12:40:39,514 - INFO - OPENED SHORT at 2061.18 | Stop loss: 2071.4858999999997 | Take profit: 2030.2622999999999 +2025-03-10 12:40:39,608 - INFO - CLOSED short at 2065.86 | PnL: -0.23% | $-1.29 +2025-03-10 12:40:39,801 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.22945 | Take profit: 2036.8716499999998 +2025-03-10 12:40:40,174 - INFO - CLOSED short at 2067.69 | PnL: 0.01% | $-0.35 +2025-03-10 12:40:40,385 - INFO - OPENED SHORT at 2075.1 | Stop loss: 2085.4754999999996 | Take profit: 2043.9734999999998 +2025-03-10 12:40:40,435 - INFO - CLOSED short at 2072.91 | PnL: 0.11% | $0.02 +2025-03-10 12:40:40,531 - INFO - OPENED LONG at 2071.38 | Stop loss: 2061.0231 | Take profit: 2102.4507 +2025-03-10 12:40:40,727 - INFO - CLOSED long at 2072.8 | PnL: 0.07% | $-0.12 +2025-03-10 12:40:40,780 - INFO - OPENED SHORT at 2070.79 | Stop loss: 2081.1439499999997 | Take profit: 2039.72815 +2025-03-10 12:40:40,836 - INFO - CLOSED short at 2070.28 | PnL: 0.02% | $-0.29 +2025-03-10 12:40:40,836 - INFO - OPENED LONG at 2070.28 | Stop loss: 2059.9286 | Take profit: 2101.3342 +2025-03-10 12:40:40,982 - INFO - CLOSED long at 2070.36 | PnL: 0.00% | $-0.37 +2025-03-10 12:40:40,983 - INFO - OPENED SHORT at 2070.36 | Stop loss: 2080.7118 | Take profit: 2039.3046000000002 +2025-03-10 12:40:41,032 - INFO - CLOSED short at 2068.9 | PnL: 0.07% | $-0.11 +2025-03-10 12:40:41,083 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3464999999997 | Take profit: 2101.7604999999994 +2025-03-10 12:40:41,132 - INFO - CLOSED long at 2069.34 | PnL: -0.07% | $-0.64 +2025-03-10 12:40:41,133 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.6866999999997 | Take profit: 2038.2999000000002 +2025-03-10 12:40:41,181 - INFO - CLOSED short at 2069.19 | PnL: 0.01% | $-0.35 +2025-03-10 12:40:41,332 - INFO - OPENED LONG at 2067.51 | Stop loss: 2057.17245 | Take profit: 2098.52265 +2025-03-10 12:40:41,384 - INFO - CLOSED long at 2069.01 | PnL: 0.07% | $-0.10 +2025-03-10 12:40:41,436 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.7219499999997 | Take profit: 2035.3941499999999 +2025-03-10 12:40:41,486 - INFO - CLOSED short at 2065.99 | PnL: 0.02% | $-0.31 +2025-03-10 12:40:41,535 - INFO - OPENED SHORT at 2066.19 | Stop loss: 2076.5209499999996 | Take profit: 2035.19715 +2025-03-10 12:40:41,585 - INFO - CLOSED short at 2066.29 | PnL: -0.00% | $-0.40 +2025-03-10 12:40:41,586 - INFO - OPENED LONG at 2066.29 | Stop loss: 2055.95855 | Take profit: 2097.28435 +2025-03-10 12:40:41,769 - INFO - CLOSED long at 2068.9 | PnL: 0.13% | $0.10 +2025-03-10 12:40:41,770 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.2445 | Take profit: 2037.8665 +2025-03-10 12:40:42,150 - INFO - CLOSED short at 2071.36 | PnL: -0.12% | $-0.83 +2025-03-10 12:40:42,193 - INFO - OPENED SHORT at 2072.75 | Stop loss: 2083.11375 | Take profit: 2041.65875 +2025-03-10 12:40:42,279 - INFO - CLOSED short at 2072.7 | PnL: 0.00% | $-0.37 +2025-03-10 12:40:42,279 - INFO - OPENED LONG at 2072.7 | Stop loss: 2062.3365 | Take profit: 2103.7904999999996 +2025-03-10 12:40:42,419 - INFO - CLOSED long at 2073.9 | PnL: 0.06% | $-0.16 +2025-03-10 12:40:42,464 - INFO - OPENED SHORT at 2071.92 | Stop loss: 2082.2796 | Take profit: 2040.8412 +2025-03-10 12:40:42,510 - INFO - CLOSED short at 2070.4 | PnL: 0.07% | $-0.10 +2025-03-10 12:40:42,646 - INFO - OPENED SHORT at 2069.35 | Stop loss: 2079.6967499999996 | Take profit: 2038.30975 +2025-03-10 12:40:42,693 - INFO - CLOSED short at 2068.32 | PnL: 0.05% | $-0.19 +2025-03-10 12:40:42,694 - INFO - OPENED LONG at 2068.32 | Stop loss: 2057.9784 | Take profit: 2099.3448 +2025-03-10 12:40:42,928 - INFO - CLOSED long at 2065.49 | PnL: -0.14% | $-0.88 +2025-03-10 12:40:43,020 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.9337 | Take profit: 2096.2389 +2025-03-10 12:40:43,111 - INFO - CLOSED long at 2068.58 | PnL: 0.16% | $0.22 +2025-03-10 12:40:43,112 - INFO - OPENED SHORT at 2068.58 | Stop loss: 2078.9228999999996 | Take profit: 2037.5512999999999 +2025-03-10 12:40:43,384 - INFO - CLOSED short at 2070.3 | PnL: -0.08% | $-0.68 +2025-03-10 12:40:43,432 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.23205 | Take profit: 2102.66385 +2025-03-10 12:40:43,481 - INFO - CLOSED long at 2070.7 | PnL: -0.04% | $-0.52 +2025-03-10 12:40:43,482 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.0534999999995 | Take profit: 2039.6394999999998 +2025-03-10 12:40:43,746 - INFO - CLOSED short at 2067.11 | PnL: 0.17% | $0.27 +2025-03-10 12:40:43,747 - INFO - OPENED LONG at 2067.11 | Stop loss: 2056.7744500000003 | Take profit: 2098.11665 +2025-03-10 12:40:43,836 - INFO - CLOSED long at 2066.4 | PnL: -0.03% | $-0.49 +2025-03-10 12:40:43,836 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.732 | Take profit: 2035.404 +2025-03-10 12:40:43,882 - INFO - CLOSED short at 2066.1 | PnL: 0.01% | $-0.31 +2025-03-10 12:40:43,882 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.7695 | Take profit: 2097.0914999999995 +2025-03-10 12:40:43,979 - INFO - CLOSED long at 2066.39 | PnL: 0.01% | $-0.31 +2025-03-10 12:40:44,073 - INFO - OPENED SHORT at 2070.04 | Stop loss: 2080.3902 | Take profit: 2038.9894 +2025-03-10 12:40:44,412 - INFO - CLOSED short at 2066.15 | PnL: 0.19% | $0.32 +2025-03-10 12:40:44,458 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.9337 | Take profit: 2096.2389 +2025-03-10 12:40:44,636 - INFO - CLOSED long at 2059.59 | PnL: -0.27% | $-1.36 +2025-03-10 12:40:44,637 - INFO - OPENED SHORT at 2059.59 | Stop loss: 2069.88795 | Take profit: 2028.6961500000002 +2025-03-10 12:40:44,684 - INFO - CLOSED short at 2061.3 | PnL: -0.08% | $-0.65 +2025-03-10 12:40:44,832 - INFO - OPENED SHORT at 2066.24 | Stop loss: 2076.5711999999994 | Take profit: 2035.2463999999998 +2025-03-10 12:40:44,978 - INFO - CLOSED short at 2066.09 | PnL: 0.01% | $-0.33 +2025-03-10 12:40:44,979 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.75955 | Take profit: 2097.08135 +2025-03-10 12:40:45,027 - INFO - CLOSED long at 2064.45 | PnL: -0.08% | $-0.63 +2025-03-10 12:40:45,028 - INFO - OPENED SHORT at 2064.45 | Stop loss: 2074.7722499999995 | Take profit: 2033.4832499999998 +2025-03-10 12:40:45,167 - INFO - CLOSED short at 2062.89 | PnL: 0.08% | $-0.09 +2025-03-10 12:40:45,361 - INFO - OPENED LONG at 2060.9 | Stop loss: 2050.5955 | Take profit: 2091.8134999999997 +2025-03-10 12:40:45,501 - INFO - CLOSED long at 2059.3 | PnL: -0.08% | $-0.62 +2025-03-10 12:40:45,836 - INFO - OPENED SHORT at 2061.13 | Stop loss: 2071.43565 | Take profit: 2030.21305 +2025-03-10 12:40:45,881 - INFO - CLOSED short at 2061.9 | PnL: -0.04% | $-0.48 +2025-03-10 12:40:45,928 - INFO - OPENED SHORT at 2064.1 | Stop loss: 2074.4204999999997 | Take profit: 2033.1384999999998 +2025-03-10 12:40:46,016 - INFO - CLOSED short at 2064.33 | PnL: -0.01% | $-0.38 +2025-03-10 12:40:46,161 - INFO - OPENED LONG at 2065.89 | Stop loss: 2055.5605499999997 | Take profit: 2096.8783499999995 +2025-03-10 12:40:46,345 - INFO - CLOSED long at 2061.89 | PnL: -0.19% | $-1.01 +2025-03-10 12:40:46,346 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.1994499999996 | Take profit: 2030.9616499999997 +2025-03-10 12:40:46,490 - INFO - CLOSED short at 2061.09 | PnL: 0.04% | $-0.21 +2025-03-10 12:40:46,537 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.3119500000003 | Take profit: 2090.5041499999998 +2025-03-10 12:40:46,628 - INFO - CLOSED long at 2059.02 | PnL: -0.03% | $-0.44 +2025-03-10 12:40:46,628 - INFO - OPENED SHORT at 2059.02 | Stop loss: 2069.3151 | Take profit: 2028.1347 +2025-03-10 12:40:46,761 - INFO - CLOSED short at 2059.46 | PnL: -0.02% | $-0.41 +2025-03-10 12:40:47,021 - INFO - OPENED SHORT at 2054.83 | Stop loss: 2065.1041499999997 | Take profit: 2024.0075499999998 +2025-03-10 12:40:47,114 - INFO - CLOSED short at 2058.15 | PnL: -0.16% | $-0.88 +2025-03-10 12:40:47,257 - INFO - OPENED LONG at 2061.5 | Stop loss: 2051.1925 | Take profit: 2092.4224999999997 +2025-03-10 12:40:47,623 - INFO - CLOSED long at 2063.9 | PnL: 0.12% | $0.05 +2025-03-10 12:40:47,624 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.2194999999997 | Take profit: 2032.9415000000001 +2025-03-10 12:40:47,666 - INFO - CLOSED short at 2064.49 | PnL: -0.03% | $-0.43 +2025-03-10 12:40:47,667 - INFO - OPENED LONG at 2064.49 | Stop loss: 2054.1675499999997 | Take profit: 2095.4573499999997 +2025-03-10 12:40:47,820 - INFO - CLOSED long at 2066.79 | PnL: 0.11% | $0.04 +2025-03-10 12:40:47,820 - INFO - OPENED SHORT at 2066.79 | Stop loss: 2077.1239499999997 | Take profit: 2035.7881499999999 +2025-03-10 12:40:48,000 - INFO - CLOSED short at 2069.79 | PnL: -0.15% | $-0.81 +2025-03-10 12:40:48,000 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.44105 | Take profit: 2100.8368499999997 +2025-03-10 12:40:48,233 - INFO - CLOSED long at 2072.6 | PnL: 0.14% | $0.12 +2025-03-10 12:40:48,330 - INFO - OPENED SHORT at 2070.01 | Stop loss: 2080.36005 | Take profit: 2038.9598500000002 +2025-03-10 12:40:48,637 - INFO - CLOSED short at 2069.69 | PnL: 0.02% | $-0.28 +2025-03-10 12:40:48,638 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.34155 | Take profit: 2100.73535 +2025-03-10 12:40:48,786 - INFO - CLOSED long at 2068.79 | PnL: -0.04% | $-0.47 +2025-03-10 12:40:48,877 - INFO - OPENED LONG at 2071.49 | Stop loss: 2061.13255 | Take profit: 2102.5623499999997 +2025-03-10 12:40:48,923 - INFO - CLOSED long at 2069.87 | PnL: -0.08% | $-0.58 +2025-03-10 12:40:48,923 - INFO - OPENED SHORT at 2069.87 | Stop loss: 2080.21935 | Take profit: 2038.8219499999998 +2025-03-10 12:40:49,115 - INFO - CLOSED short at 2065.66 | PnL: 0.20% | $0.33 +2025-03-10 12:40:49,257 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.8224999999998 | Take profit: 2033.5325 +2025-03-10 12:40:49,398 - INFO - CLOSED short at 2064.31 | PnL: 0.01% | $-0.29 +2025-03-10 12:40:49,447 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.8275 | Take profit: 2034.5175 +2025-03-10 12:41:02,766 - INFO - GPU not available, using CPU +2025-03-10 12:41:02,786 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 12:41:02,786 - INFO - Fetching initial data for ETH/USDT +2025-03-10 12:41:06,312 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 12:41:06,331 - INFO - Initialized environment with 500 candles +2025-03-10 12:41:08,629 - INFO - Starting training for 1000 episodes... +2025-03-10 12:41:08,629 - INFO - Starting training on device: cpu +2025-03-10 12:41:08,630 - INFO - Loading best model from models/trading_agent_best_pnl.pt to resume training +2025-03-10 12:41:08,630 - INFO - Loading model from models/trading_agent_best_pnl.pt +2025-03-10 12:41:08,756 - WARNING - Could not load with weights_only=True: 'str' object has no attribute '__module__' +2025-03-10 12:41:08,756 - WARNING - Attempting to load with weights_only=False (less secure) +2025-03-10 12:41:08,812 - INFO - Model loaded successfully with weights_only=False +2025-03-10 12:41:08,820 - INFO - Resumed with best metrics - Reward: -99.44, PnL: $-24.03, Win Rate: 24.8% +2025-03-10 12:41:08,851 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:41:09,221 - INFO - OPENED LONG at 2060.1 | Stop loss: 2049.7995 | Take profit: 2091.0015 +2025-03-10 12:41:09,222 - INFO - CLOSED long at 2057.52 | PnL: -0.13% | $-0.90 +2025-03-10 12:41:09,228 - INFO - OPENED SHORT at 2057.9 | Stop loss: 2068.1895 | Take profit: 2027.0315 +2025-03-10 12:41:09,229 - INFO - CLOSED short at 2058.51 | PnL: -0.03% | $-0.51 +2025-03-10 12:41:09,230 - INFO - OPENED LONG at 2058.59 | Stop loss: 2048.29705 | Take profit: 2089.4688499999997 +2025-03-10 12:41:09,237 - INFO - CLOSED long at 2052.7 | PnL: -0.29% | $-1.52 +2025-03-10 12:41:09,238 - INFO - OPENED SHORT at 2052.7 | Stop loss: 2062.9634999999994 | Take profit: 2021.9094999999998 +2025-03-10 12:41:09,239 - INFO - CLOSED short at 2052.16 | PnL: 0.03% | $-0.29 +2025-03-10 12:41:09,239 - INFO - OPENED LONG at 2052.16 | Stop loss: 2041.8991999999998 | Take profit: 2082.9423999999995 +2025-03-10 12:41:09,240 - INFO - CLOSED long at 2053.1 | PnL: 0.05% | $-0.21 +2025-03-10 12:41:09,261 - INFO - OPENED SHORT at 2049.61 | Stop loss: 2059.85805 | Take profit: 2018.8658500000001 +2025-03-10 12:41:09,262 - INFO - CLOSED short at 2049.24 | PnL: 0.02% | $-0.32 +2025-03-10 12:41:09,267 - INFO - OPENED SHORT at 2046.58 | Stop loss: 2056.8129 | Take profit: 2015.8813 +2025-03-10 12:41:09,268 - INFO - CLOSED short at 2045.99 | PnL: 0.03% | $-0.27 +2025-03-10 12:41:09,269 - INFO - OPENED LONG at 2045.99 | Stop loss: 2035.76005 | Take profit: 2076.67985 +2025-03-10 12:41:09,280 - INFO - CLOSED long at 2048.51 | PnL: 0.12% | $0.09 +2025-03-10 12:41:09,280 - INFO - OPENED SHORT at 2048.51 | Stop loss: 2058.75255 | Take profit: 2017.7823500000002 +2025-03-10 12:41:09,281 - INFO - CLOSED short at 2050.0 | PnL: -0.07% | $-0.66 +2025-03-10 12:41:09,281 - INFO - OPENED LONG at 2050.0 | Stop loss: 2039.75 | Take profit: 2080.75 +2025-03-10 12:41:09,288 - INFO - CLOSED long at 2049.89 | PnL: -0.01% | $-0.40 +2025-03-10 12:41:09,289 - INFO - OPENED SHORT at 2053.26 | Stop loss: 2063.5263 | Take profit: 2022.4611000000002 +2025-03-10 12:41:09,290 - INFO - CLOSED short at 2051.89 | PnL: 0.07% | $-0.13 +2025-03-10 12:41:09,296 - INFO - OPENED LONG at 2056.89 | Stop loss: 2046.6055499999998 | Take profit: 2087.7433499999997 +2025-03-10 12:41:09,296 - INFO - CLOSED long at 2058.39 | PnL: 0.07% | $-0.10 +2025-03-10 12:41:09,297 - INFO - OPENED SHORT at 2058.39 | Stop loss: 2068.6819499999997 | Take profit: 2027.5141499999997 +2025-03-10 12:41:09,297 - INFO - CLOSED short at 2060.13 | PnL: -0.08% | $-0.70 +2025-03-10 12:41:09,298 - INFO - OPENED LONG at 2063.29 | Stop loss: 2052.97355 | Take profit: 2094.23935 +2025-03-10 12:41:09,299 - INFO - CLOSED long at 2063.59 | PnL: 0.01% | $-0.32 +2025-03-10 12:41:09,299 - INFO - OPENED SHORT at 2064.69 | Stop loss: 2075.01345 | Take profit: 2033.71965 +2025-03-10 12:41:09,300 - INFO - CLOSED short at 2060.99 | PnL: 0.18% | $0.30 +2025-03-10 12:41:09,307 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.57555 | Take profit: 2093.83335 +2025-03-10 12:41:09,504 - INFO - CLOSED long at 2057.89 | PnL: -0.24% | $-1.29 +2025-03-10 12:41:09,505 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.1794499999996 | Take profit: 2027.02165 +2025-03-10 12:41:09,755 - INFO - CLOSED short at 2064.32 | PnL: -0.31% | $-1.53 +2025-03-10 12:41:09,756 - INFO - OPENED LONG at 2064.32 | Stop loss: 2053.9984 | Take profit: 2095.2848 +2025-03-10 12:41:09,802 - INFO - CLOSED long at 2065.86 | PnL: 0.07% | $-0.09 +2025-03-10 12:41:09,803 - INFO - OPENED SHORT at 2065.86 | Stop loss: 2076.1893 | Take profit: 2034.8721 +2025-03-10 12:41:09,850 - INFO - CLOSED short at 2070.58 | PnL: -0.23% | $-1.20 +2025-03-10 12:41:09,852 - INFO - OPENED LONG at 2070.58 | Stop loss: 2060.2271 | Take profit: 2101.6386999999995 +2025-03-10 12:41:09,899 - INFO - CLOSED long at 2068.11 | PnL: -0.12% | $-0.79 +2025-03-10 12:41:09,945 - INFO - OPENED SHORT at 2068.29 | Stop loss: 2078.63145 | Take profit: 2037.2656499999998 +2025-03-10 12:41:09,999 - INFO - CLOSED short at 2067.89 | PnL: 0.02% | $-0.29 +2025-03-10 12:41:10,045 - INFO - OPENED SHORT at 2071.63 | Stop loss: 2081.9881499999997 | Take profit: 2040.55555 +2025-03-10 12:41:10,335 - INFO - CLOSED short at 2067.69 | PnL: 0.19% | $0.32 +2025-03-10 12:41:10,335 - INFO - OPENED LONG at 2067.69 | Stop loss: 2057.35155 | Take profit: 2098.7053499999997 +2025-03-10 12:41:10,598 - INFO - CLOSED long at 2072.33 | PnL: 0.22% | $0.44 +2025-03-10 12:41:10,600 - INFO - OPENED SHORT at 2072.33 | Stop loss: 2082.6916499999998 | Take profit: 2041.24505 +2025-03-10 12:41:10,793 - INFO - CLOSED short at 2070.9 | PnL: 0.07% | $-0.11 +2025-03-10 12:41:10,794 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.5455 | Take profit: 2101.9635 +2025-03-10 12:41:11,024 - INFO - CLOSED long at 2067.2 | PnL: -0.18% | $-1.00 +2025-03-10 12:41:11,025 - INFO - OPENED SHORT at 2067.2 | Stop loss: 2077.5359999999996 | Take profit: 2036.1919999999998 +2025-03-10 12:41:11,066 - INFO - CLOSED short at 2070.36 | PnL: -0.15% | $-0.90 +2025-03-10 12:41:11,216 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.9933 | Take profit: 2100.3801 +2025-03-10 12:41:11,309 - INFO - CLOSED long at 2068.8 | PnL: -0.03% | $-0.44 +2025-03-10 12:41:11,544 - INFO - OPENED SHORT at 2065.99 | Stop loss: 2076.3199499999996 | Take profit: 2035.0001499999998 +2025-03-10 12:41:11,679 - INFO - CLOSED short at 2065.08 | PnL: 0.04% | $-0.20 +2025-03-10 12:41:11,816 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.5555 | Take profit: 2099.9335 +2025-03-10 12:41:12,031 - INFO - CLOSED long at 2069.96 | PnL: 0.05% | $-0.17 +2025-03-10 12:41:12,032 - INFO - OPENED SHORT at 2069.96 | Stop loss: 2080.3098 | Take profit: 2038.9106 +2025-03-10 12:41:12,120 - INFO - CLOSED short at 2071.39 | PnL: -0.07% | $-0.59 +2025-03-10 12:41:12,349 - INFO - OPENED LONG at 2072.15 | Stop loss: 2061.7892500000003 | Take profit: 2103.23225 +2025-03-10 12:41:12,703 - INFO - CLOSED long at 2068.32 | PnL: -0.18% | $-0.98 +2025-03-10 12:41:12,704 - INFO - OPENED SHORT at 2068.32 | Stop loss: 2078.6616 | Take profit: 2037.2952 +2025-03-10 12:41:12,933 - INFO - CLOSED short at 2065.49 | PnL: 0.14% | $0.13 +2025-03-10 12:41:12,933 - INFO - OPENED LONG at 2065.49 | Stop loss: 2055.1625499999996 | Take profit: 2096.4723499999996 +2025-03-10 12:41:12,981 - INFO - CLOSED long at 2063.61 | PnL: -0.09% | $-0.65 +2025-03-10 12:41:13,120 - INFO - OPENED SHORT at 2068.58 | Stop loss: 2078.9228999999996 | Take profit: 2037.5512999999999 +2025-03-10 12:41:13,163 - INFO - CLOSED short at 2068.8 | PnL: -0.01% | $-0.37 +2025-03-10 12:41:13,163 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.456 | Take profit: 2099.832 +2025-03-10 12:41:13,210 - INFO - CLOSED long at 2069.34 | PnL: 0.03% | $-0.25 +2025-03-10 12:41:13,211 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.6866999999997 | Take profit: 2038.2999000000002 +2025-03-10 12:41:13,343 - INFO - CLOSED short at 2069.2 | PnL: 0.01% | $-0.31 +2025-03-10 12:41:13,439 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.23205 | Take profit: 2102.66385 +2025-03-10 12:41:13,750 - INFO - CLOSED long at 2067.11 | PnL: -0.22% | $-1.06 +2025-03-10 12:41:14,112 - INFO - OPENED LONG at 2067.8 | Stop loss: 2057.4610000000002 | Take profit: 2098.817 +2025-03-10 12:41:14,156 - INFO - CLOSED long at 2068.18 | PnL: 0.02% | $-0.27 +2025-03-10 12:41:14,290 - INFO - OPENED SHORT at 2064.99 | Stop loss: 2075.3149499999995 | Take profit: 2034.0151499999997 +2025-03-10 12:41:14,391 - INFO - CLOSED short at 2066.15 | PnL: -0.06% | $-0.52 +2025-03-10 12:41:14,439 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.5863 | Take profit: 2034.2811000000002 +2025-03-10 12:41:14,627 - INFO - CLOSED short at 2059.59 | PnL: 0.27% | $0.57 +2025-03-10 12:41:14,716 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.27205 | Take profit: 2094.54385 +2025-03-10 12:41:14,818 - INFO - CLOSED long at 2066.24 | PnL: 0.13% | $0.09 +2025-03-10 12:41:15,095 - INFO - OPENED SHORT at 2062.71 | Stop loss: 2073.02355 | Take profit: 2031.76935 +2025-03-10 12:41:15,143 - INFO - CLOSED short at 2062.89 | PnL: -0.01% | $-0.36 +2025-03-10 12:41:15,236 - INFO - OPENED SHORT at 2063.5 | Stop loss: 2073.8174999999997 | Take profit: 2032.5475 +2025-03-10 12:41:15,778 - INFO - CLOSED short at 2060.3 | PnL: 0.16% | $0.18 +2025-03-10 12:41:15,967 - INFO - OPENED SHORT at 2065.36 | Stop loss: 2075.6868 | Take profit: 2034.3796000000002 +2025-03-10 12:41:16,227 - INFO - CLOSED short at 2063.53 | PnL: 0.09% | $-0.04 +2025-03-10 12:41:16,373 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.1994499999996 | Take profit: 2030.9616499999997 +2025-03-10 12:41:16,470 - INFO - CLOSED short at 2060.7 | PnL: 0.06% | $-0.14 +2025-03-10 12:41:16,667 - INFO - OPENED LONG at 2059.02 | Stop loss: 2048.7249 | Take profit: 2089.9053 +2025-03-10 12:41:16,767 - INFO - CLOSED long at 2059.96 | PnL: 0.05% | $-0.18 +2025-03-10 12:41:16,768 - INFO - OPENED SHORT at 2059.96 | Stop loss: 2070.2598 | Take profit: 2029.0606 +2025-03-10 12:41:16,812 - INFO - CLOSED short at 2059.46 | PnL: 0.02% | $-0.25 +2025-03-10 12:41:16,947 - INFO - OPENED SHORT at 2056.28 | Stop loss: 2066.5614 | Take profit: 2025.4358000000002 +2025-03-10 12:41:16,995 - INFO - CLOSED short at 2055.6 | PnL: 0.03% | $-0.22 +2025-03-10 12:41:16,995 - INFO - OPENED LONG at 2055.6 | Stop loss: 2045.322 | Take profit: 2086.4339999999997 +2025-03-10 12:41:17,085 - INFO - CLOSED long at 2054.83 | PnL: -0.04% | $-0.45 +2025-03-10 12:41:17,175 - INFO - OPENED SHORT at 2058.15 | Stop loss: 2068.4407499999998 | Take profit: 2027.27775 +2025-03-10 12:41:17,376 - INFO - CLOSED short at 2061.6 | PnL: -0.17% | $-0.87 +2025-03-10 12:41:17,377 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.292 | Take profit: 2092.524 +2025-03-10 12:41:17,529 - INFO - CLOSED long at 2063.4 | PnL: 0.09% | $-0.04 +2025-03-10 12:41:17,572 - INFO - OPENED LONG at 2066.36 | Stop loss: 2056.0282 | Take profit: 2097.3554 +2025-03-10 12:41:17,721 - INFO - CLOSED long at 2064.49 | PnL: -0.09% | $-0.61 +2025-03-10 12:41:17,815 - INFO - OPENED LONG at 2066.34 | Stop loss: 2056.0083 | Take profit: 2097.3351 +2025-03-10 12:41:17,862 - INFO - CLOSED long at 2066.79 | PnL: 0.02% | $-0.25 +2025-03-10 12:41:17,863 - INFO - OPENED SHORT at 2066.79 | Stop loss: 2077.1239499999997 | Take profit: 2035.7881499999999 +2025-03-10 12:41:17,907 - INFO - CLOSED short at 2067.33 | PnL: -0.03% | $-0.40 +2025-03-10 12:41:18,153 - INFO - OPENED LONG at 2074.3 | Stop loss: 2063.9285 | Take profit: 2105.4145 +2025-03-10 12:41:18,494 - INFO - CLOSED long at 2073.23 | PnL: -0.05% | $-0.48 +2025-03-10 12:41:18,587 - INFO - OPENED SHORT at 2068.15 | Stop loss: 2078.49075 | Take profit: 2037.12775 +2025-03-10 12:41:18,678 - INFO - CLOSED short at 2069.69 | PnL: -0.07% | $-0.55 +2025-03-10 12:41:18,679 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.34155 | Take profit: 2100.73535 +2025-03-10 12:41:18,768 - INFO - CLOSED long at 2067.44 | PnL: -0.11% | $-0.65 +2025-03-10 12:41:18,867 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6250499999996 | Take profit: 2104.0848499999997 +2025-03-10 12:41:18,971 - INFO - CLOSED long at 2069.87 | PnL: -0.15% | $-0.77 +2025-03-10 12:41:19,306 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.8224999999998 | Take profit: 2033.5325 +2025-03-10 12:41:19,399 - INFO - CLOSED short at 2064.4 | PnL: 0.00% | $-0.29 +2025-03-10 12:41:19,495 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.1725 | Take profit: 2096.4824999999996 +2025-03-10 12:41:19,542 - INFO - CLOSED long at 2067.53 | PnL: 0.10% | $-0.01 +2025-03-10 12:41:19,642 - INFO - OPENED LONG at 2065.31 | Stop loss: 2054.9834499999997 | Take profit: 2096.2896499999997 +2025-03-10 12:41:19,737 - INFO - CLOSED long at 2066.5 | PnL: 0.06% | $-0.13 +2025-03-10 12:41:19,738 - INFO - OPENED SHORT at 2066.5 | Stop loss: 2076.8325 | Take profit: 2035.5025 +2025-03-10 12:41:20,177 - INFO - CLOSED short at 2070.35 | PnL: -0.19% | $-0.87 +2025-03-10 12:41:20,324 - INFO - OPENED LONG at 2068.19 | Stop loss: 2057.8490500000003 | Take profit: 2099.21285 +2025-03-10 12:41:20,380 - INFO - CLOSED long at 2068.67 | PnL: 0.02% | $-0.23 +2025-03-10 12:41:20,380 - INFO - OPENED SHORT at 2068.67 | Stop loss: 2079.0133499999997 | Take profit: 2037.63995 +2025-03-10 12:41:20,694 - INFO - CLOSED short at 2073.27 | PnL: -0.22% | $-0.97 +2025-03-10 12:41:20,884 - INFO - OPENED SHORT at 2076.9 | Stop loss: 2087.2844999999998 | Take profit: 2045.7465 +2025-03-10 12:41:21,237 - INFO - CLOSED short at 2066.4 | PnL: 0.51% | $1.20 +2025-03-10 12:41:21,288 - INFO - OPENED SHORT at 2066.89 | Stop loss: 2077.2244499999997 | Take profit: 2035.88665 +2025-03-10 12:41:21,384 - INFO - CLOSED short at 2065.45 | PnL: 0.07% | $-0.09 +2025-03-10 12:41:21,473 - INFO - OPENED SHORT at 2069.0 | Stop loss: 2079.345 | Take profit: 2037.965 +2025-03-10 12:41:21,570 - INFO - CLOSED short at 2070.1 | PnL: -0.05% | $-0.46 +2025-03-10 12:41:21,571 - INFO - OPENED LONG at 2070.1 | Stop loss: 2059.7495 | Take profit: 2101.1514999999995 +2025-03-10 12:41:21,614 - INFO - CLOSED long at 2067.19 | PnL: -0.14% | $-0.72 +2025-03-10 12:41:21,615 - INFO - OPENED SHORT at 2067.19 | Stop loss: 2077.5259499999997 | Take profit: 2036.18215 +2025-03-10 12:41:21,660 - INFO - CLOSED short at 2065.5 | PnL: 0.08% | $-0.05 +2025-03-10 12:41:21,760 - INFO - OPENED SHORT at 2065.8 | Stop loss: 2076.129 | Take profit: 2034.813 +2025-03-10 12:41:21,853 - INFO - CLOSED short at 2066.09 | PnL: -0.01% | $-0.34 +2025-03-10 12:41:21,854 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.75955 | Take profit: 2097.08135 +2025-03-10 12:41:21,900 - INFO - CLOSED long at 2063.39 | PnL: -0.13% | $-0.68 +2025-03-10 12:41:22,065 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.4304999999995 | Take profit: 2035.1084999999998 +2025-03-10 12:41:22,113 - INFO - CLOSED short at 2065.06 | PnL: 0.05% | $-0.14 +2025-03-10 12:41:22,114 - INFO - OPENED LONG at 2065.06 | Stop loss: 2054.7347 | Take profit: 2096.0359 +2025-03-10 12:41:22,610 - INFO - CLOSED long at 2056.77 | PnL: -0.40% | $-1.46 +2025-03-10 12:41:22,655 - INFO - OPENED SHORT at 2053.01 | Stop loss: 2063.27505 | Take profit: 2022.2148500000003 +2025-03-10 12:41:22,701 - INFO - CLOSED short at 2049.21 | PnL: 0.19% | $0.24 +2025-03-10 12:41:22,892 - INFO - OPENED LONG at 2056.85 | Stop loss: 2046.56575 | Take profit: 2087.70275 +2025-03-10 12:41:22,934 - INFO - CLOSED long at 2057.11 | PnL: 0.01% | $-0.25 +2025-03-10 12:41:23,110 - INFO - OPENED LONG at 2065.1 | Stop loss: 2054.7745 | Take profit: 2096.0764999999997 +2025-03-10 12:41:23,203 - INFO - CLOSED long at 2062.55 | PnL: -0.12% | $-0.64 +2025-03-10 12:41:23,203 - INFO - OPENED SHORT at 2062.55 | Stop loss: 2072.86275 | Take profit: 2031.6117500000003 +2025-03-10 12:41:23,247 - INFO - CLOSED short at 2065.12 | PnL: -0.12% | $-0.63 +2025-03-10 12:41:23,793 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.5911999999994 | Take profit: 2039.1863999999998 +2025-03-10 12:41:23,841 - INFO - CLOSED short at 2069.34 | PnL: 0.04% | $-0.16 +2025-03-10 12:41:24,293 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.4603999999995 | Take profit: 2044.9388 +2025-03-10 12:41:24,340 - INFO - CLOSED short at 2077.61 | PnL: -0.07% | $-0.49 +2025-03-10 12:41:24,341 - INFO - OPENED LONG at 2077.61 | Stop loss: 2067.22195 | Take profit: 2108.7741499999997 +2025-03-10 12:41:24,441 - INFO - CLOSED long at 2090.49 | PnL: 0.62% | $1.44 +2025-03-10 12:41:24,485 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.5350999999996 | Take profit: 2071.4746999999998 +2025-03-10 12:41:24,541 - INFO - STOP LOSS hit for short at 2113.5350999999996 | PnL: -0.50% | $-1.70 +2025-03-10 12:41:24,590 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2376999999997 | Take profit: 2107.4469 +2025-03-10 12:41:24,797 - INFO - CLOSED short at 2141.41 | PnL: -0.09% | $-0.52 +2025-03-10 12:41:24,938 - INFO - OPENED SHORT at 2140.01 | Stop loss: 2150.71005 | Take profit: 2107.90985 +2025-03-10 12:41:25,032 - INFO - CLOSED short at 2126.99 | PnL: 0.61% | $1.39 +2025-03-10 12:41:25,078 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.6635 | Take profit: 2159.2095 +2025-03-10 12:41:25,231 - INFO - CLOSED long at 2120.15 | PnL: -0.34% | $-1.22 +2025-03-10 12:41:25,231 - INFO - OPENED SHORT at 2120.15 | Stop loss: 2130.7507499999997 | Take profit: 2088.34775 +2025-03-10 12:41:25,418 - INFO - CLOSED short at 2118.52 | PnL: 0.08% | $-0.06 +2025-03-10 12:41:25,464 - INFO - OPENED LONG at 2119.14 | Stop loss: 2108.5443 | Take profit: 2150.9271 +2025-03-10 12:41:25,512 - INFO - CLOSED long at 2119.07 | PnL: -0.00% | $-0.28 +2025-03-10 12:41:25,885 - INFO - OPENED LONG at 2113.24 | Stop loss: 2102.6737999999996 | Take profit: 2144.9385999999995 +2025-03-10 12:41:25,975 - INFO - CLOSED long at 2120.81 | PnL: 0.36% | $0.71 +2025-03-10 12:41:25,976 - INFO - OPENED SHORT at 2120.81 | Stop loss: 2131.41405 | Take profit: 2088.9978499999997 +2025-03-10 12:41:26,075 - INFO - CLOSED short at 2114.8 | PnL: 0.28% | $0.51 +2025-03-10 12:41:26,122 - INFO - OPENED SHORT at 2110.9 | Stop loss: 2121.4545 | Take profit: 2079.2365 +2025-03-10 12:41:26,169 - INFO - CLOSED short at 2108.71 | PnL: 0.10% | $0.01 +2025-03-10 12:41:26,477 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0323500000004 | Take profit: 2131.02295 +2025-03-10 12:41:26,704 - INFO - CLOSED long at 2098.9 | PnL: -0.03% | $-0.36 +2025-03-10 12:41:26,705 - INFO - OPENED SHORT at 2098.9 | Stop loss: 2109.3945 | Take profit: 2067.4165000000003 +2025-03-10 12:41:26,802 - INFO - CLOSED short at 2104.83 | PnL: -0.28% | $-1.06 +2025-03-10 12:41:26,935 - INFO - OPENED LONG at 2103.86 | Stop loss: 2093.3407 | Take profit: 2135.4179 +2025-03-10 12:41:27,172 - INFO - CLOSED long at 2098.39 | PnL: -0.26% | $-0.98 +2025-03-10 12:41:27,268 - INFO - OPENED LONG at 2093.46 | Stop loss: 2082.9927000000002 | Take profit: 2124.8619 +2025-03-10 12:41:27,411 - INFO - CLOSED long at 2091.1 | PnL: -0.11% | $-0.57 +2025-03-10 12:41:27,412 - INFO - OPENED SHORT at 2091.1 | Stop loss: 2101.5554999999995 | Take profit: 2059.7335 +2025-03-10 12:41:27,613 - INFO - CLOSED short at 2083.28 | PnL: 0.37% | $0.73 +2025-03-10 12:41:27,614 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.8636 | Take profit: 2114.5292 +2025-03-10 12:41:27,812 - INFO - CLOSED long at 2082.44 | PnL: -0.04% | $-0.38 +2025-03-10 12:41:27,857 - INFO - OPENED SHORT at 2081.49 | Stop loss: 2091.8974499999995 | Take profit: 2050.26765 +2025-03-10 12:41:27,901 - INFO - CLOSED short at 2080.38 | PnL: 0.05% | $-0.13 +2025-03-10 12:41:27,901 - INFO - OPENED LONG at 2080.38 | Stop loss: 2069.9781000000003 | Take profit: 2111.5857 +2025-03-10 12:41:28,145 - INFO - CLOSED long at 2086.57 | PnL: 0.30% | $0.53 +2025-03-10 12:41:28,388 - INFO - OPENED SHORT at 2088.66 | Stop loss: 2099.1032999999998 | Take profit: 2057.3300999999997 +2025-03-10 12:41:28,483 - INFO - CLOSED short at 2088.1 | PnL: 0.03% | $-0.20 +2025-03-10 12:41:28,572 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 16.7% in downtrends | Avg Win=$0.52, Avg Loss=$-0.51 +2025-03-10 12:41:28,574 - INFO - Episode 0: Reward=-83.09, Balance=$67.22, Win Rate=17.3%, Trades=98, Episode PnL=$-18.14, Total PnL=$-32.78, Max Drawdown=33.0%, Pred Accuracy=98.4% +2025-03-10 12:41:28,710 - INFO - Model saved to models/trading_agent_best_reward.pt +2025-03-10 12:41:28,710 - INFO - New best reward model saved: -83.09 +2025-03-10 12:41:28,837 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 12:41:28,837 - INFO - New best PnL model saved: $-18.14 +2025-03-10 12:41:28,941 - INFO - Model saved to checkpoints/trading_agent_episode_0.pt +2025-03-10 12:41:28,944 - INFO - Checkpoint saved at episode 0 +2025-03-10 12:41:28,963 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:41:29,295 - INFO - OPENED LONG at 2059.4 | Stop loss: 2049.103 | Take profit: 2090.2909999999997 +2025-03-10 12:41:29,452 - INFO - CLOSED long at 2057.52 | PnL: -0.09% | $-0.77 +2025-03-10 12:41:29,609 - INFO - OPENED SHORT at 2057.9 | Stop loss: 2068.1895 | Take profit: 2027.0315 +2025-03-10 12:41:29,669 - INFO - CLOSED short at 2057.99 | PnL: -0.00% | $-0.41 +2025-03-10 12:41:29,670 - INFO - OPENED LONG at 2057.99 | Stop loss: 2047.7000499999997 | Take profit: 2088.8598499999994 +2025-03-10 12:41:29,722 - INFO - CLOSED long at 2058.51 | PnL: 0.03% | $-0.30 +2025-03-10 12:41:29,933 - INFO - OPENED SHORT at 2056.4 | Stop loss: 2066.682 | Take profit: 2025.554 +2025-03-10 12:41:30,067 - INFO - CLOSED short at 2053.56 | PnL: 0.14% | $0.15 +2025-03-10 12:41:30,124 - INFO - OPENED LONG at 2052.7 | Stop loss: 2042.4364999999998 | Take profit: 2083.4904999999994 +2025-03-10 12:41:30,692 - INFO - CLOSED long at 2049.61 | PnL: -0.15% | $-0.99 +2025-03-10 12:41:30,692 - INFO - OPENED SHORT at 2049.61 | Stop loss: 2059.85805 | Take profit: 2018.8658500000001 +2025-03-10 12:41:30,738 - INFO - CLOSED short at 2049.24 | PnL: 0.02% | $-0.32 +2025-03-10 12:41:30,890 - INFO - OPENED SHORT at 2046.58 | Stop loss: 2056.8129 | Take profit: 2015.8813 +2025-03-10 12:41:30,984 - INFO - CLOSED short at 2047.2 | PnL: -0.03% | $-0.51 +2025-03-10 12:41:30,985 - INFO - OPENED LONG at 2047.2 | Stop loss: 2036.964 | Take profit: 2077.908 +2025-03-10 12:41:31,337 - INFO - CLOSED long at 2050.0 | PnL: 0.14% | $0.14 +2025-03-10 12:41:31,338 - INFO - OPENED SHORT at 2050.0 | Stop loss: 2060.25 | Take profit: 2019.25 +2025-03-10 12:41:31,576 - INFO - CLOSED short at 2051.89 | PnL: -0.09% | $-0.75 +2025-03-10 12:41:31,624 - INFO - OPENED LONG at 2052.3 | Stop loss: 2042.0385 | Take profit: 2083.0845 +2025-03-10 12:41:31,986 - INFO - CLOSED long at 2063.29 | PnL: 0.54% | $1.68 +2025-03-10 12:41:32,171 - INFO - OPENED LONG at 2064.69 | Stop loss: 2054.36655 | Take profit: 2095.6603499999997 +2025-03-10 12:41:32,268 - INFO - CLOSED long at 2060.99 | PnL: -0.18% | $-1.09 +2025-03-10 12:41:32,269 - INFO - OPENED SHORT at 2060.99 | Stop loss: 2071.2949499999995 | Take profit: 2030.0751499999997 +2025-03-10 12:41:32,611 - INFO - CLOSED short at 2057.8 | PnL: 0.15% | $0.21 +2025-03-10 12:41:32,907 - INFO - OPENED LONG at 2064.32 | Stop loss: 2053.9984 | Take profit: 2095.2848 +2025-03-10 12:41:33,331 - INFO - CLOSED long at 2068.65 | PnL: 0.21% | $0.43 +2025-03-10 12:41:33,332 - INFO - OPENED SHORT at 2068.65 | Stop loss: 2078.99325 | Take profit: 2037.6202500000002 +2025-03-10 12:41:33,447 - INFO - CLOSED short at 2067.9 | PnL: 0.04% | $-0.25 +2025-03-10 12:41:33,728 - INFO - OPENED LONG at 2075.1 | Stop loss: 2064.7245 | Take profit: 2106.2264999999998 +2025-03-10 12:41:33,828 - INFO - CLOSED long at 2072.33 | PnL: -0.13% | $-0.91 +2025-03-10 12:41:34,033 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.5455 | Take profit: 2101.9635 +2025-03-10 12:41:34,132 - INFO - CLOSED long at 2070.79 | PnL: -0.01% | $-0.41 +2025-03-10 12:41:34,388 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.2445 | Take profit: 2037.8665 +2025-03-10 12:41:34,441 - INFO - CLOSED short at 2070.7 | PnL: -0.09% | $-0.72 +2025-03-10 12:41:34,722 - INFO - OPENED SHORT at 2067.51 | Stop loss: 2077.84755 | Take profit: 2036.49735 +2025-03-10 12:41:34,831 - INFO - CLOSED short at 2066.39 | PnL: 0.05% | $-0.17 +2025-03-10 12:41:34,832 - INFO - OPENED LONG at 2066.39 | Stop loss: 2056.0580499999996 | Take profit: 2097.3858499999997 +2025-03-10 12:41:34,931 - INFO - CLOSED long at 2066.19 | PnL: -0.01% | $-0.42 +2025-03-10 12:41:35,313 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.93295 | Take profit: 2037.5611500000002 +2025-03-10 12:41:35,412 - INFO - CLOSED short at 2070.4 | PnL: -0.09% | $-0.71 +2025-03-10 12:41:35,413 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.0480000000002 | Take profit: 2101.4559999999997 +2025-03-10 12:41:35,516 - INFO - CLOSED long at 2071.4 | PnL: 0.05% | $-0.19 +2025-03-10 12:41:35,516 - INFO - OPENED SHORT at 2071.4 | Stop loss: 2081.757 | Take profit: 2040.329 +2025-03-10 12:41:35,624 - INFO - CLOSED short at 2071.36 | PnL: 0.00% | $-0.37 +2025-03-10 12:41:35,678 - INFO - OPENED SHORT at 2072.75 | Stop loss: 2083.11375 | Take profit: 2041.65875 +2025-03-10 12:41:35,728 - INFO - CLOSED short at 2073.11 | PnL: -0.02% | $-0.44 +2025-03-10 12:41:35,729 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.74445 | Take profit: 2104.20665 +2025-03-10 12:41:35,785 - INFO - CLOSED long at 2072.7 | PnL: -0.02% | $-0.45 +2025-03-10 12:41:35,848 - INFO - OPENED LONG at 2072.15 | Stop loss: 2061.7892500000003 | Take profit: 2103.23225 +2025-03-10 12:41:35,904 - INFO - CLOSED long at 2074.29 | PnL: 0.10% | $0.01 +2025-03-10 12:41:35,959 - INFO - OPENED SHORT at 2073.9 | Stop loss: 2084.2695 | Take profit: 2042.7915 +2025-03-10 12:41:36,013 - INFO - CLOSED short at 2071.92 | PnL: 0.10% | $-0.02 +2025-03-10 12:41:36,067 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.752 | Take profit: 2039.344 +2025-03-10 12:41:36,125 - INFO - CLOSED short at 2071.11 | PnL: -0.03% | $-0.50 +2025-03-10 12:41:36,125 - INFO - OPENED LONG at 2071.11 | Stop loss: 2060.75445 | Take profit: 2102.17665 +2025-03-10 12:41:36,327 - INFO - CLOSED long at 2067.0 | PnL: -0.20% | $-1.10 +2025-03-10 12:41:36,327 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.3349999999996 | Take profit: 2035.995 +2025-03-10 12:41:36,381 - INFO - CLOSED short at 2067.79 | PnL: -0.04% | $-0.50 +2025-03-10 12:41:36,382 - INFO - OPENED LONG at 2067.79 | Stop loss: 2057.45105 | Take profit: 2098.80685 +2025-03-10 12:41:36,431 - INFO - CLOSED long at 2067.46 | PnL: -0.02% | $-0.42 +2025-03-10 12:41:36,431 - INFO - OPENED SHORT at 2067.46 | Stop loss: 2077.7972999999997 | Take profit: 2036.4481 +2025-03-10 12:41:36,697 - INFO - CLOSED short at 2067.89 | PnL: -0.02% | $-0.43 +2025-03-10 12:41:36,698 - INFO - OPENED LONG at 2067.89 | Stop loss: 2057.55055 | Take profit: 2098.9083499999997 +2025-03-10 12:41:37,006 - INFO - CLOSED long at 2069.2 | PnL: 0.06% | $-0.13 +2025-03-10 12:41:37,007 - INFO - OPENED SHORT at 2069.2 | Stop loss: 2079.546 | Take profit: 2038.1619999999998 +2025-03-10 12:41:37,783 - INFO - CLOSED short at 2066.39 | PnL: 0.14% | $0.13 +2025-03-10 12:41:37,932 - INFO - OPENED SHORT at 2067.8 | Stop loss: 2078.139 | Take profit: 2036.7830000000001 +2025-03-10 12:41:38,148 - INFO - CLOSED short at 2064.99 | PnL: 0.14% | $0.13 +2025-03-10 12:41:38,264 - INFO - OPENED LONG at 2066.15 | Stop loss: 2055.81925 | Take profit: 2097.14225 +2025-03-10 12:41:38,314 - INFO - CLOSED long at 2065.26 | PnL: -0.04% | $-0.51 +2025-03-10 12:41:38,314 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.5863 | Take profit: 2034.2811000000002 +2025-03-10 12:41:38,414 - INFO - CLOSED short at 2062.65 | PnL: 0.13% | $0.09 +2025-03-10 12:41:38,698 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.6352 | Take profit: 2095.9343999999996 +2025-03-10 12:41:39,039 - INFO - CLOSED long at 2064.08 | PnL: -0.04% | $-0.51 +2025-03-10 12:41:39,255 - INFO - OPENED LONG at 2063.5 | Stop loss: 2053.1825 | Take profit: 2094.4525 +2025-03-10 12:41:39,410 - INFO - CLOSED long at 2060.65 | PnL: -0.14% | $-0.84 +2025-03-10 12:41:39,411 - INFO - OPENED SHORT at 2060.65 | Stop loss: 2070.95325 | Take profit: 2029.74025 +2025-03-10 12:41:39,513 - INFO - CLOSED short at 2059.3 | PnL: 0.07% | $-0.12 +2025-03-10 12:41:39,568 - INFO - OPENED LONG at 2060.31 | Stop loss: 2050.00845 | Take profit: 2091.21465 +2025-03-10 12:41:39,670 - INFO - CLOSED long at 2064.7 | PnL: 0.21% | $0.40 +2025-03-10 12:41:39,719 - INFO - OPENED SHORT at 2062.61 | Stop loss: 2072.92305 | Take profit: 2031.6708500000002 +2025-03-10 12:41:39,927 - INFO - CLOSED short at 2061.9 | PnL: 0.03% | $-0.23 +2025-03-10 12:41:39,976 - INFO - OPENED SHORT at 2064.1 | Stop loss: 2074.4204999999997 | Take profit: 2033.1384999999998 +2025-03-10 12:41:40,415 - INFO - CLOSED short at 2062.6 | PnL: 0.07% | $-0.10 +2025-03-10 12:41:40,517 - INFO - OPENED LONG at 2061.7 | Stop loss: 2051.3914999999997 | Take profit: 2092.6254999999996 +2025-03-10 12:41:40,570 - INFO - CLOSED long at 2060.7 | PnL: -0.05% | $-0.52 +2025-03-10 12:41:40,625 - INFO - OPENED LONG at 2061.09 | Stop loss: 2050.7845500000003 | Take profit: 2092.00635 +2025-03-10 12:41:40,687 - INFO - CLOSED long at 2059.61 | PnL: -0.07% | $-0.60 +2025-03-10 12:41:40,688 - INFO - OPENED SHORT at 2059.61 | Stop loss: 2069.90805 | Take profit: 2028.71585 +2025-03-10 12:41:40,833 - INFO - CLOSED short at 2058.89 | PnL: 0.03% | $-0.23 +2025-03-10 12:41:40,989 - INFO - OPENED LONG at 2057.4 | Stop loss: 2047.113 | Take profit: 2088.261 +2025-03-10 12:41:41,341 - INFO - CLOSED long at 2058.15 | PnL: 0.04% | $-0.22 +2025-03-10 12:41:41,388 - INFO - OPENED SHORT at 2059.8 | Stop loss: 2070.099 | Take profit: 2028.9030000000002 +2025-03-10 12:41:41,693 - INFO - CLOSED short at 2063.4 | PnL: -0.17% | $-0.95 +2025-03-10 12:41:41,787 - INFO - OPENED LONG at 2066.01 | Stop loss: 2055.67995 | Take profit: 2097.00015 +2025-03-10 12:41:41,984 - INFO - CLOSED long at 2066.34 | PnL: 0.02% | $-0.29 +2025-03-10 12:41:42,238 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.44105 | Take profit: 2100.8368499999997 +2025-03-10 12:41:42,385 - INFO - CLOSED long at 2078.01 | PnL: 0.40% | $1.01 +2025-03-10 12:41:42,386 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.40005 | Take profit: 2046.8398500000003 +2025-03-10 12:41:42,529 - INFO - CLOSED short at 2071.04 | PnL: 0.34% | $0.81 +2025-03-10 12:41:42,575 - INFO - OPENED LONG at 2070.01 | Stop loss: 2059.65995 | Take profit: 2101.06015 +2025-03-10 12:41:42,762 - INFO - CLOSED long at 2068.15 | PnL: -0.09% | $-0.66 +2025-03-10 12:41:42,808 - INFO - OPENED SHORT at 2068.39 | Stop loss: 2078.73195 | Take profit: 2037.3641499999999 +2025-03-10 12:41:42,902 - INFO - CLOSED short at 2069.03 | PnL: -0.03% | $-0.45 +2025-03-10 12:41:43,134 - INFO - OPENED LONG at 2069.87 | Stop loss: 2059.52065 | Take profit: 2100.9180499999998 +2025-03-10 12:41:43,313 - INFO - CLOSED long at 2065.66 | PnL: -0.20% | $-1.04 +2025-03-10 12:41:43,314 - INFO - OPENED SHORT at 2065.66 | Stop loss: 2075.9882999999995 | Take profit: 2034.6751 +2025-03-10 12:41:43,409 - INFO - CLOSED short at 2063.97 | PnL: 0.08% | $-0.06 +2025-03-10 12:41:43,453 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.8224999999998 | Take profit: 2033.5325 +2025-03-10 12:41:43,498 - INFO - CLOSED short at 2065.3 | PnL: -0.04% | $-0.47 +2025-03-10 12:41:43,499 - INFO - OPENED LONG at 2065.3 | Stop loss: 2054.9735 | Take profit: 2096.2795 +2025-03-10 12:41:43,600 - INFO - CLOSED long at 2064.31 | PnL: -0.05% | $-0.50 +2025-03-10 12:41:43,646 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.8275 | Take profit: 2034.5175 +2025-03-10 12:41:43,693 - INFO - CLOSED short at 2067.53 | PnL: -0.10% | $-0.66 +2025-03-10 12:41:43,694 - INFO - OPENED LONG at 2067.53 | Stop loss: 2057.1923500000003 | Take profit: 2098.54295 +2025-03-10 12:41:43,988 - INFO - CLOSED long at 2071.59 | PnL: 0.20% | $0.32 +2025-03-10 12:41:44,036 - INFO - OPENED LONG at 2070.2 | Stop loss: 2059.8489999999997 | Take profit: 2101.2529999999997 +2025-03-10 12:41:44,238 - INFO - CLOSED long at 2070.7 | PnL: 0.02% | $-0.25 +2025-03-10 12:41:44,285 - INFO - OPENED SHORT at 2070.8 | Stop loss: 2081.154 | Take profit: 2039.738 +2025-03-10 12:41:44,335 - INFO - CLOSED short at 2070.35 | PnL: 0.02% | $-0.26 +2025-03-10 12:41:44,336 - INFO - OPENED LONG at 2070.35 | Stop loss: 2059.99825 | Take profit: 2101.40525 +2025-03-10 12:41:44,384 - INFO - CLOSED long at 2070.61 | PnL: 0.01% | $-0.29 +2025-03-10 12:41:44,525 - INFO - OPENED SHORT at 2068.67 | Stop loss: 2079.0133499999997 | Take profit: 2037.63995 +2025-03-10 12:41:44,716 - INFO - CLOSED short at 2074.37 | PnL: -0.28% | $-1.24 +2025-03-10 12:41:44,716 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.99815 | Take profit: 2105.48555 +2025-03-10 12:41:44,896 - INFO - CLOSED long at 2073.99 | PnL: -0.02% | $-0.38 +2025-03-10 12:41:44,896 - INFO - OPENED SHORT at 2073.99 | Stop loss: 2084.3599499999996 | Take profit: 2042.8801499999997 +2025-03-10 12:41:44,990 - INFO - CLOSED short at 2075.29 | PnL: -0.06% | $-0.53 +2025-03-10 12:41:45,193 - INFO - OPENED SHORT at 2072.09 | Stop loss: 2082.45045 | Take profit: 2041.0086500000002 +2025-03-10 12:41:45,278 - INFO - CLOSED short at 2067.7 | PnL: 0.21% | $0.36 +2025-03-10 12:41:45,278 - INFO - OPENED LONG at 2067.7 | Stop loss: 2057.3615 | Take profit: 2098.7155 +2025-03-10 12:41:45,460 - INFO - CLOSED long at 2066.89 | PnL: -0.04% | $-0.45 +2025-03-10 12:41:45,551 - INFO - OPENED LONG at 2065.45 | Stop loss: 2055.12275 | Take profit: 2096.4317499999997 +2025-03-10 12:41:45,885 - INFO - CLOSED long at 2065.7 | PnL: 0.01% | $-0.28 +2025-03-10 12:41:45,935 - INFO - OPENED LONG at 2065.8 | Stop loss: 2055.471 | Take profit: 2096.787 +2025-03-10 12:41:46,039 - INFO - CLOSED long at 2066.09 | PnL: 0.01% | $-0.27 +2025-03-10 12:41:46,039 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.42045 | Take profit: 2035.0986500000001 +2025-03-10 12:41:46,138 - INFO - CLOSED short at 2062.34 | PnL: 0.18% | $0.26 +2025-03-10 12:41:46,138 - INFO - OPENED LONG at 2062.34 | Stop loss: 2052.0283 | Take profit: 2093.2751 +2025-03-10 12:41:46,248 - INFO - CLOSED long at 2066.1 | PnL: 0.18% | $0.26 +2025-03-10 12:41:46,249 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.4304999999995 | Take profit: 2035.1084999999998 +2025-03-10 12:41:46,297 - INFO - CLOSED short at 2065.06 | PnL: 0.05% | $-0.16 +2025-03-10 12:41:46,297 - INFO - OPENED LONG at 2065.06 | Stop loss: 2054.7347 | Take profit: 2096.0359 +2025-03-10 12:41:46,402 - INFO - CLOSED long at 2064.5 | PnL: -0.03% | $-0.41 +2025-03-10 12:41:46,550 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3965 | Take profit: 2091.6105 +2025-03-10 12:41:46,597 - INFO - CLOSED long at 2060.2 | PnL: -0.02% | $-0.40 +2025-03-10 12:41:46,919 - INFO - OPENED SHORT at 2049.5 | Stop loss: 2059.7475 | Take profit: 2018.7575 +2025-03-10 12:41:46,972 - INFO - CLOSED short at 2051.99 | PnL: -0.12% | $-0.70 +2025-03-10 12:41:47,020 - INFO - OPENED LONG at 2058.3 | Stop loss: 2048.0085000000004 | Take profit: 2089.1745 +2025-03-10 12:41:47,158 - INFO - CLOSED long at 2057.89 | PnL: -0.02% | $-0.38 +2025-03-10 12:41:47,159 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.1794499999996 | Take profit: 2027.02165 +2025-03-10 12:41:47,304 - INFO - CLOSED short at 2065.1 | PnL: -0.35% | $-1.41 +2025-03-10 12:41:47,304 - INFO - OPENED LONG at 2065.1 | Stop loss: 2054.7745 | Take profit: 2096.0764999999997 +2025-03-10 12:41:47,605 - INFO - CLOSED long at 2066.59 | PnL: 0.07% | $-0.09 +2025-03-10 12:41:47,726 - INFO - OPENED LONG at 2061.21 | Stop loss: 2050.90395 | Take profit: 2092.12815 +2025-03-10 12:41:48,012 - INFO - CLOSED long at 2065.72 | PnL: 0.22% | $0.36 +2025-03-10 12:41:48,225 - INFO - OPENED SHORT at 2069.81 | Stop loss: 2080.1590499999998 | Take profit: 2038.7628499999998 +2025-03-10 12:41:48,283 - INFO - CLOSED short at 2070.41 | PnL: -0.03% | $-0.40 +2025-03-10 12:41:48,284 - INFO - OPENED LONG at 2070.41 | Stop loss: 2060.05795 | Take profit: 2101.4661499999997 +2025-03-10 12:41:48,390 - INFO - CLOSED long at 2074.05 | PnL: 0.18% | $0.23 +2025-03-10 12:41:48,390 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.42025 | Take profit: 2042.9392500000001 +2025-03-10 12:41:48,495 - INFO - CLOSED short at 2071.89 | PnL: 0.10% | $0.01 +2025-03-10 12:41:48,551 - INFO - OPENED SHORT at 2071.8 | Stop loss: 2082.159 | Take profit: 2040.7230000000002 +2025-03-10 12:41:48,599 - INFO - CLOSED short at 2074.9 | PnL: -0.15% | $-0.77 +2025-03-10 12:41:48,599 - INFO - OPENED LONG at 2074.9 | Stop loss: 2064.5255 | Take profit: 2106.0235 +2025-03-10 12:41:48,913 - INFO - TAKE PROFIT hit for long at 2106.0235 | PnL: 1.50% | $4.26 +2025-03-10 12:41:49,369 - INFO - OPENED SHORT at 2134.78 | Stop loss: 2145.4539 | Take profit: 2102.7583 +2025-03-10 12:41:49,498 - INFO - CLOSED short at 2128.69 | PnL: 0.29% | $0.60 +2025-03-10 12:41:49,798 - INFO - OPENED LONG at 2118.52 | Stop loss: 2107.9274 | Take profit: 2150.2978 +2025-03-10 12:41:49,846 - INFO - CLOSED long at 2119.14 | PnL: 0.03% | $-0.23 +2025-03-10 12:41:49,944 - INFO - OPENED LONG at 2115.28 | Stop loss: 2104.7036000000003 | Take profit: 2147.0092 +2025-03-10 12:41:49,993 - INFO - CLOSED long at 2107.43 | PnL: -0.37% | $-1.52 +2025-03-10 12:41:49,994 - INFO - OPENED SHORT at 2107.43 | Stop loss: 2117.9671499999995 | Take profit: 2075.81855 +2025-03-10 12:41:50,138 - INFO - CLOSED short at 2112.09 | PnL: -0.22% | $-1.02 +2025-03-10 12:41:50,139 - INFO - OPENED LONG at 2112.09 | Stop loss: 2101.52955 | Take profit: 2143.77135 +2025-03-10 12:41:50,347 - INFO - CLOSED long at 2112.99 | PnL: 0.04% | $-0.18 +2025-03-10 12:41:50,553 - INFO - OPENED LONG at 2110.9 | Stop loss: 2100.3455 | Take profit: 2142.5634999999997 +2025-03-10 12:41:50,644 - INFO - CLOSED long at 2106.49 | PnL: -0.21% | $-0.96 +2025-03-10 12:41:50,644 - INFO - OPENED SHORT at 2106.49 | Stop loss: 2117.0224499999995 | Take profit: 2074.89265 +2025-03-10 12:41:50,694 - INFO - CLOSED short at 2108.06 | PnL: -0.07% | $-0.54 +2025-03-10 12:41:50,695 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.5197 | Take profit: 2139.6809 +2025-03-10 12:41:50,854 - INFO - STOP LOSS hit for long at 2097.5197 | PnL: -0.50% | $-1.84 +2025-03-10 12:41:51,157 - INFO - OPENED LONG at 2098.9 | Stop loss: 2088.4055000000003 | Take profit: 2130.3835 +2025-03-10 12:41:51,210 - INFO - CLOSED long at 2100.69 | PnL: 0.09% | $-0.04 +2025-03-10 12:41:51,401 - INFO - OPENED SHORT at 2103.86 | Stop loss: 2114.3793 | Take profit: 2072.3021 +2025-03-10 12:41:51,552 - INFO - CLOSED short at 2099.59 | PnL: 0.20% | $0.31 +2025-03-10 12:41:51,598 - INFO - OPENED LONG at 2100.02 | Stop loss: 2089.5199 | Take profit: 2131.5202999999997 +2025-03-10 12:41:51,689 - INFO - CLOSED long at 2095.29 | PnL: -0.23% | $-0.98 +2025-03-10 12:41:51,735 - INFO - OPENED SHORT at 2093.46 | Stop loss: 2103.9273 | Take profit: 2062.0581 +2025-03-10 12:41:51,786 - INFO - CLOSED short at 2093.33 | PnL: 0.01% | $-0.28 +2025-03-10 12:41:51,787 - INFO - OPENED LONG at 2093.33 | Stop loss: 2082.86335 | Take profit: 2124.72995 +2025-03-10 12:41:52,099 - INFO - CLOSED long at 2083.28 | PnL: -0.48% | $-1.71 +2025-03-10 12:41:52,147 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.9978 | Take profit: 2119.7666 +2025-03-10 12:41:52,202 - INFO - CLOSED long at 2083.97 | PnL: -0.21% | $-0.90 +2025-03-10 12:41:52,253 - INFO - OPENED SHORT at 2085.3 | Stop loss: 2095.7264999999998 | Take profit: 2054.0205 +2025-03-10 12:41:52,474 - INFO - CLOSED short at 2081.25 | PnL: 0.19% | $0.27 +2025-03-10 12:41:52,474 - INFO - OPENED LONG at 2081.25 | Stop loss: 2070.84375 | Take profit: 2112.46875 +2025-03-10 12:41:52,722 - INFO - CLOSED long at 2085.8 | PnL: 0.22% | $0.34 +2025-03-10 12:41:52,769 - INFO - OPENED LONG at 2084.72 | Stop loss: 2074.2963999999997 | Take profit: 2115.9907999999996 +2025-03-10 12:41:52,871 - INFO - CLOSED long at 2085.85 | PnL: 0.05% | $-0.13 +2025-03-10 12:41:53,028 - INFO - OPENED SHORT at 2088.1 | Stop loss: 2098.5404999999996 | Take profit: 2056.7785 +2025-03-10 12:41:53,140 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 16.7% in downtrends | Avg Win=$0.53, Avg Loss=$-0.54 +2025-03-10 12:41:53,141 - INFO - Episode 1: Reward=-77.07, Balance=$71.57, Win Rate=24.0%, Trades=100, Episode PnL=$-10.07, Total PnL=$-61.21, Max Drawdown=28.9%, Pred Accuracy=99.6% +2025-03-10 12:41:53,309 - INFO - Model saved to models/trading_agent_best_reward.pt +2025-03-10 12:41:53,310 - INFO - New best reward model saved: -77.07 +2025-03-10 12:41:53,451 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 12:41:53,451 - INFO - New best PnL model saved: $-10.07 +2025-03-10 12:41:53,476 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:41:53,801 - INFO - OPENED SHORT at 2059.03 | Stop loss: 2069.32515 | Take profit: 2028.1445500000002 +2025-03-10 12:41:53,953 - INFO - CLOSED short at 2060.51 | PnL: -0.07% | $-0.69 +2025-03-10 12:41:53,954 - INFO - OPENED LONG at 2060.51 | Stop loss: 2050.2074500000003 | Take profit: 2091.41765 +2025-03-10 12:41:54,009 - INFO - CLOSED long at 2057.52 | PnL: -0.15% | $-0.97 +2025-03-10 12:41:54,010 - INFO - OPENED SHORT at 2057.52 | Stop loss: 2067.8075999999996 | Take profit: 2026.6571999999999 +2025-03-10 12:41:54,107 - INFO - CLOSED short at 2057.59 | PnL: -0.00% | $-0.41 +2025-03-10 12:41:54,108 - INFO - OPENED LONG at 2057.59 | Stop loss: 2047.3020500000002 | Take profit: 2088.45385 +2025-03-10 12:41:54,324 - INFO - CLOSED long at 2055.2 | PnL: -0.12% | $-0.85 +2025-03-10 12:41:54,325 - INFO - OPENED SHORT at 2055.2 | Stop loss: 2065.4759999999997 | Take profit: 2024.3719999999998 +2025-03-10 12:41:54,430 - INFO - CLOSED short at 2056.4 | PnL: -0.06% | $-0.62 +2025-03-10 12:41:54,484 - INFO - OPENED LONG at 2055.39 | Stop loss: 2045.11305 | Take profit: 2086.2208499999997 +2025-03-10 12:41:54,541 - INFO - CLOSED long at 2053.56 | PnL: -0.09% | $-0.73 +2025-03-10 12:41:54,542 - INFO - OPENED SHORT at 2053.56 | Stop loss: 2063.8277999999996 | Take profit: 2022.7566 +2025-03-10 12:41:54,592 - INFO - CLOSED short at 2052.7 | PnL: 0.04% | $-0.22 +2025-03-10 12:41:54,592 - INFO - OPENED LONG at 2052.7 | Stop loss: 2042.4364999999998 | Take profit: 2083.4904999999994 +2025-03-10 12:41:54,643 - INFO - CLOSED long at 2051.66 | PnL: -0.05% | $-0.58 +2025-03-10 12:41:54,643 - INFO - OPENED SHORT at 2051.66 | Stop loss: 2061.9183 | Take profit: 2020.8850999999997 +2025-03-10 12:41:54,785 - INFO - CLOSED short at 2052.25 | PnL: -0.03% | $-0.49 +2025-03-10 12:41:55,112 - INFO - OPENED SHORT at 2049.61 | Stop loss: 2059.85805 | Take profit: 2018.8658500000001 +2025-03-10 12:41:55,259 - INFO - CLOSED short at 2047.39 | PnL: 0.11% | $0.03 +2025-03-10 12:41:55,555 - INFO - OPENED SHORT at 2045.79 | Stop loss: 2056.0189499999997 | Take profit: 2015.10315 +2025-03-10 12:41:55,909 - INFO - CLOSED short at 2051.11 | PnL: -0.26% | $-1.36 +2025-03-10 12:41:56,050 - INFO - OPENED LONG at 2052.3 | Stop loss: 2042.0385 | Take profit: 2083.0845 +2025-03-10 12:41:56,152 - INFO - CLOSED long at 2057.01 | PnL: 0.23% | $0.48 +2025-03-10 12:41:56,204 - INFO - OPENED LONG at 2056.89 | Stop loss: 2046.6055499999998 | Take profit: 2087.7433499999997 +2025-03-10 12:41:56,309 - INFO - CLOSED long at 2060.13 | PnL: 0.16% | $0.22 +2025-03-10 12:41:56,309 - INFO - OPENED SHORT at 2060.13 | Stop loss: 2070.43065 | Take profit: 2029.2280500000002 +2025-03-10 12:41:56,411 - INFO - CLOSED short at 2061.49 | PnL: -0.07% | $-0.62 +2025-03-10 12:41:56,412 - INFO - OPENED LONG at 2061.49 | Stop loss: 2051.18255 | Take profit: 2092.4123499999996 +2025-03-10 12:41:56,581 - INFO - CLOSED long at 2063.59 | PnL: 0.10% | $0.01 +2025-03-10 12:41:56,631 - INFO - OPENED SHORT at 2061.61 | Stop loss: 2071.9180499999998 | Take profit: 2030.68585 +2025-03-10 12:41:56,791 - INFO - CLOSED short at 2060.99 | PnL: 0.03% | $-0.26 +2025-03-10 12:41:56,839 - INFO - OPENED LONG at 2058.3 | Stop loss: 2048.0085000000004 | Take profit: 2089.1745 +2025-03-10 12:41:57,136 - INFO - CLOSED long at 2057.8 | PnL: -0.02% | $-0.46 +2025-03-10 12:41:57,337 - INFO - OPENED LONG at 2061.79 | Stop loss: 2051.48105 | Take profit: 2092.71685 +2025-03-10 12:41:57,428 - INFO - CLOSED long at 2064.32 | PnL: 0.12% | $0.08 +2025-03-10 12:41:57,529 - INFO - OPENED LONG at 2070.58 | Stop loss: 2060.2271 | Take profit: 2101.6386999999995 +2025-03-10 12:41:57,578 - INFO - CLOSED long at 2068.11 | PnL: -0.12% | $-0.81 +2025-03-10 12:41:57,579 - INFO - OPENED SHORT at 2068.11 | Stop loss: 2078.45055 | Take profit: 2037.08835 +2025-03-10 12:41:57,627 - INFO - CLOSED short at 2068.29 | PnL: -0.01% | $-0.40 +2025-03-10 12:41:57,628 - INFO - OPENED LONG at 2068.29 | Stop loss: 2057.94855 | Take profit: 2099.3143499999996 +2025-03-10 12:41:57,830 - INFO - CLOSED long at 2069.6 | PnL: 0.06% | $-0.13 +2025-03-10 12:41:57,981 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.5605 | Take profit: 2098.9184999999998 +2025-03-10 12:41:58,131 - INFO - CLOSED long at 2071.44 | PnL: 0.17% | $0.26 +2025-03-10 12:41:58,285 - INFO - OPENED LONG at 2072.91 | Stop loss: 2062.5454499999996 | Take profit: 2104.0036499999997 +2025-03-10 12:41:58,392 - INFO - CLOSED long at 2071.38 | PnL: -0.07% | $-0.64 +2025-03-10 12:41:58,392 - INFO - OPENED SHORT at 2071.38 | Stop loss: 2081.7369 | Take profit: 2040.3093000000001 +2025-03-10 12:41:58,602 - INFO - CLOSED short at 2072.8 | PnL: -0.07% | $-0.61 +2025-03-10 12:41:59,006 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.6866999999997 | Take profit: 2038.2999000000002 +2025-03-10 12:41:59,260 - INFO - CLOSED short at 2069.01 | PnL: 0.02% | $-0.30 +2025-03-10 12:41:59,261 - INFO - OPENED LONG at 2069.01 | Stop loss: 2058.6649500000003 | Take profit: 2100.04515 +2025-03-10 12:41:59,366 - INFO - CLOSED long at 2065.99 | PnL: -0.15% | $-0.88 +2025-03-10 12:41:59,367 - INFO - OPENED SHORT at 2065.99 | Stop loss: 2076.3199499999996 | Take profit: 2035.0001499999998 +2025-03-10 12:41:59,521 - INFO - CLOSED short at 2065.08 | PnL: 0.04% | $-0.20 +2025-03-10 12:41:59,668 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.5555 | Take profit: 2099.9335 +2025-03-10 12:41:59,713 - INFO - CLOSED long at 2068.51 | PnL: -0.02% | $-0.42 +2025-03-10 12:41:59,714 - INFO - OPENED SHORT at 2068.51 | Stop loss: 2078.85255 | Take profit: 2037.4823500000002 +2025-03-10 12:41:59,758 - INFO - CLOSED short at 2068.59 | PnL: -0.00% | $-0.37 +2025-03-10 12:41:59,758 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.24705 | Take profit: 2099.61885 +2025-03-10 12:42:00,052 - INFO - CLOSED long at 2071.36 | PnL: 0.13% | $0.12 +2025-03-10 12:42:00,052 - INFO - OPENED SHORT at 2071.36 | Stop loss: 2081.7167999999997 | Take profit: 2040.2896 +2025-03-10 12:42:00,410 - INFO - CLOSED short at 2071.92 | PnL: -0.03% | $-0.45 +2025-03-10 12:42:00,411 - INFO - OPENED LONG at 2071.92 | Stop loss: 2061.5604 | Take profit: 2102.9988 +2025-03-10 12:42:00,747 - INFO - CLOSED long at 2067.0 | PnL: -0.24% | $-1.18 +2025-03-10 12:42:00,861 - INFO - OPENED SHORT at 2067.46 | Stop loss: 2077.7972999999997 | Take profit: 2036.4481 +2025-03-10 12:42:01,005 - INFO - CLOSED short at 2063.61 | PnL: 0.19% | $0.30 +2025-03-10 12:42:01,007 - INFO - OPENED LONG at 2063.61 | Stop loss: 2053.2919500000003 | Take profit: 2094.56415 +2025-03-10 12:42:01,323 - INFO - CLOSED long at 2067.86 | PnL: 0.21% | $0.37 +2025-03-10 12:42:01,434 - INFO - OPENED SHORT at 2069.2 | Stop loss: 2079.546 | Take profit: 2038.1619999999998 +2025-03-10 12:42:01,483 - INFO - CLOSED short at 2070.3 | PnL: -0.05% | $-0.53 +2025-03-10 12:42:01,637 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.0480000000002 | Take profit: 2101.4559999999997 +2025-03-10 12:42:01,885 - INFO - CLOSED long at 2067.11 | PnL: -0.16% | $-0.90 +2025-03-10 12:42:01,974 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.068 | Take profit: 2097.3959999999997 +2025-03-10 12:42:02,227 - INFO - CLOSED long at 2070.04 | PnL: 0.18% | $0.26 +2025-03-10 12:42:02,434 - INFO - OPENED SHORT at 2067.88 | Stop loss: 2078.2194 | Take profit: 2036.8618000000001 +2025-03-10 12:42:02,917 - INFO - CLOSED short at 2061.3 | PnL: 0.32% | $0.75 +2025-03-10 12:42:03,319 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.4003999999995 | Take profit: 2033.1188 +2025-03-10 12:42:03,369 - INFO - CLOSED short at 2062.71 | PnL: 0.07% | $-0.12 +2025-03-10 12:42:03,470 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.8224999999998 | Take profit: 2033.5325 +2025-03-10 12:42:03,760 - INFO - CLOSED short at 2059.3 | PnL: 0.25% | $0.53 +2025-03-10 12:42:03,761 - INFO - OPENED LONG at 2059.3 | Stop loss: 2049.0035000000003 | Take profit: 2090.1895 +2025-03-10 12:42:04,083 - INFO - CLOSED long at 2060.3 | PnL: 0.05% | $-0.18 +2025-03-10 12:42:04,084 - INFO - OPENED SHORT at 2060.3 | Stop loss: 2070.6014999999998 | Take profit: 2029.3955 +2025-03-10 12:42:04,136 - INFO - CLOSED short at 2061.13 | PnL: -0.04% | $-0.49 +2025-03-10 12:42:04,191 - INFO - OPENED LONG at 2061.9 | Stop loss: 2051.5905000000002 | Take profit: 2092.8285 +2025-03-10 12:42:04,244 - INFO - CLOSED long at 2064.1 | PnL: 0.11% | $0.02 +2025-03-10 12:42:04,399 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.70695 | Take profit: 2032.43915 +2025-03-10 12:42:04,453 - INFO - CLOSED short at 2064.79 | PnL: -0.07% | $-0.58 +2025-03-10 12:42:04,501 - INFO - OPENED SHORT at 2065.89 | Stop loss: 2076.2194499999996 | Take profit: 2034.9016499999998 +2025-03-10 12:42:04,920 - INFO - CLOSED short at 2059.61 | PnL: 0.30% | $0.70 +2025-03-10 12:42:04,921 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.3119500000003 | Take profit: 2090.5041499999998 +2025-03-10 12:42:05,174 - INFO - CLOSED long at 2059.46 | PnL: -0.01% | $-0.37 +2025-03-10 12:42:05,174 - INFO - OPENED SHORT at 2059.46 | Stop loss: 2069.7572999999998 | Take profit: 2028.5681 +2025-03-10 12:42:05,232 - INFO - CLOSED short at 2057.4 | PnL: 0.10% | $0.00 +2025-03-10 12:42:05,232 - INFO - OPENED LONG at 2057.4 | Stop loss: 2047.113 | Take profit: 2088.261 +2025-03-10 12:42:05,581 - INFO - CLOSED long at 2058.15 | PnL: 0.04% | $-0.22 +2025-03-10 12:42:05,627 - INFO - OPENED SHORT at 2059.8 | Stop loss: 2070.099 | Take profit: 2028.9030000000002 +2025-03-10 12:42:05,725 - INFO - CLOSED short at 2061.5 | PnL: -0.08% | $-0.63 +2025-03-10 12:42:05,726 - INFO - OPENED LONG at 2061.5 | Stop loss: 2051.1925 | Take profit: 2092.4224999999997 +2025-03-10 12:42:05,913 - INFO - CLOSED long at 2063.4 | PnL: 0.09% | $-0.03 +2025-03-10 12:42:05,913 - INFO - OPENED SHORT at 2063.4 | Stop loss: 2073.717 | Take profit: 2032.449 +2025-03-10 12:42:06,211 - INFO - CLOSED short at 2066.34 | PnL: -0.14% | $-0.83 +2025-03-10 12:42:06,602 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.40005 | Take profit: 2046.8398500000003 +2025-03-10 12:42:06,970 - INFO - CLOSED short at 2070.0 | PnL: 0.39% | $0.97 +2025-03-10 12:42:07,287 - INFO - OPENED LONG at 2068.79 | Stop loss: 2058.44605 | Take profit: 2099.82185 +2025-03-10 12:42:07,336 - INFO - CLOSED long at 2072.99 | PnL: 0.20% | $0.35 +2025-03-10 12:42:07,337 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.3549499999995 | Take profit: 2041.8951499999998 +2025-03-10 12:42:07,439 - INFO - CLOSED short at 2069.87 | PnL: 0.15% | $0.17 +2025-03-10 12:42:07,440 - INFO - OPENED LONG at 2069.87 | Stop loss: 2059.52065 | Take profit: 2100.9180499999998 +2025-03-10 12:42:07,497 - INFO - CLOSED long at 2067.33 | PnL: -0.12% | $-0.77 +2025-03-10 12:42:07,603 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.0284999999994 | Take profit: 2034.7144999999998 +2025-03-10 12:42:07,806 - INFO - CLOSED short at 2064.5 | PnL: 0.06% | $-0.14 +2025-03-10 12:42:07,851 - INFO - OPENED LONG at 2065.3 | Stop loss: 2054.9735 | Take profit: 2096.2795 +2025-03-10 12:42:08,305 - INFO - CLOSED long at 2068.59 | PnL: 0.16% | $0.20 +2025-03-10 12:42:08,305 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.93295 | Take profit: 2037.5611500000002 +2025-03-10 12:42:08,399 - INFO - CLOSED short at 2070.2 | PnL: -0.08% | $-0.61 +2025-03-10 12:42:08,399 - INFO - OPENED LONG at 2070.2 | Stop loss: 2059.8489999999997 | Take profit: 2101.2529999999997 +2025-03-10 12:42:08,545 - INFO - CLOSED long at 2069.69 | PnL: -0.02% | $-0.42 +2025-03-10 12:42:08,546 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.03845 | Take profit: 2038.64465 +2025-03-10 12:42:08,632 - INFO - CLOSED short at 2070.8 | PnL: -0.05% | $-0.52 +2025-03-10 12:42:08,677 - INFO - OPENED LONG at 2070.35 | Stop loss: 2059.99825 | Take profit: 2101.40525 +2025-03-10 12:42:08,728 - INFO - CLOSED long at 2070.61 | PnL: 0.01% | $-0.29 +2025-03-10 12:42:08,728 - INFO - OPENED SHORT at 2070.61 | Stop loss: 2080.96305 | Take profit: 2039.55085 +2025-03-10 12:42:08,776 - INFO - CLOSED short at 2071.99 | PnL: -0.07% | $-0.56 +2025-03-10 12:42:08,776 - INFO - OPENED LONG at 2071.99 | Stop loss: 2061.6300499999998 | Take profit: 2103.0698499999994 +2025-03-10 12:42:08,975 - INFO - CLOSED long at 2069.78 | PnL: -0.11% | $-0.69 +2025-03-10 12:42:09,446 - INFO - OPENED SHORT at 2076.9 | Stop loss: 2087.2844999999998 | Take profit: 2045.7465 +2025-03-10 12:42:09,502 - INFO - CLOSED short at 2075.61 | PnL: 0.06% | $-0.12 +2025-03-10 12:42:09,503 - INFO - OPENED LONG at 2075.61 | Stop loss: 2065.2319500000003 | Take profit: 2106.74415 +2025-03-10 12:42:09,595 - INFO - CLOSED long at 2072.09 | PnL: -0.17% | $-0.89 +2025-03-10 12:42:09,866 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.068 | Take profit: 2097.3959999999997 +2025-03-10 12:42:09,975 - INFO - CLOSED long at 2067.88 | PnL: 0.07% | $-0.09 +2025-03-10 12:42:10,032 - INFO - OPENED SHORT at 2065.45 | Stop loss: 2075.7772499999996 | Take profit: 2034.46825 +2025-03-10 12:42:10,241 - INFO - CLOSED short at 2070.1 | PnL: -0.23% | $-1.06 +2025-03-10 12:42:10,241 - INFO - OPENED LONG at 2070.1 | Stop loss: 2059.7495 | Take profit: 2101.1514999999995 +2025-03-10 12:42:10,299 - INFO - CLOSED long at 2067.19 | PnL: -0.14% | $-0.77 +2025-03-10 12:42:10,300 - INFO - OPENED SHORT at 2067.19 | Stop loss: 2077.5259499999997 | Take profit: 2036.18215 +2025-03-10 12:42:10,780 - INFO - CLOSED short at 2066.1 | PnL: 0.05% | $-0.15 +2025-03-10 12:42:10,781 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.7695 | Take profit: 2097.0914999999995 +2025-03-10 12:42:10,838 - INFO - CLOSED long at 2065.06 | PnL: -0.05% | $-0.48 +2025-03-10 12:42:10,838 - INFO - OPENED SHORT at 2065.06 | Stop loss: 2075.3853 | Take profit: 2034.0840999999998 +2025-03-10 12:42:11,188 - INFO - CLOSED short at 2059.2 | PnL: 0.28% | $0.58 +2025-03-10 12:42:11,189 - INFO - OPENED LONG at 2059.2 | Stop loss: 2048.904 | Take profit: 2090.0879999999997 +2025-03-10 12:42:11,443 - INFO - CLOSED long at 2049.21 | PnL: -0.49% | $-1.86 +2025-03-10 12:42:11,603 - INFO - OPENED LONG at 2058.3 | Stop loss: 2048.0085000000004 | Take profit: 2089.1745 +2025-03-10 12:42:11,656 - INFO - CLOSED long at 2056.85 | PnL: -0.07% | $-0.53 +2025-03-10 12:42:11,656 - INFO - OPENED SHORT at 2056.85 | Stop loss: 2067.1342499999996 | Take profit: 2025.99725 +2025-03-10 12:42:11,704 - INFO - CLOSED short at 2057.11 | PnL: -0.01% | $-0.35 +2025-03-10 12:42:11,705 - INFO - OPENED LONG at 2057.11 | Stop loss: 2046.82445 | Take profit: 2087.96665 +2025-03-10 12:42:11,958 - INFO - CLOSED long at 2062.43 | PnL: 0.26% | $0.49 +2025-03-10 12:42:12,454 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3965 | Take profit: 2091.6105 +2025-03-10 12:42:12,549 - INFO - CLOSED long at 2062.54 | PnL: 0.09% | $-0.03 +2025-03-10 12:42:12,652 - INFO - OPENED SHORT at 2070.31 | Stop loss: 2080.66155 | Take profit: 2039.25535 +2025-03-10 12:42:12,701 - INFO - CLOSED short at 2070.24 | PnL: 0.00% | $-0.30 +2025-03-10 12:42:12,703 - INFO - OPENED LONG at 2070.24 | Stop loss: 2059.8887999999997 | Take profit: 2101.2935999999995 +2025-03-10 12:42:12,844 - INFO - CLOSED long at 2070.41 | PnL: 0.01% | $-0.28 +2025-03-10 12:42:12,845 - INFO - OPENED SHORT at 2070.41 | Stop loss: 2080.76205 | Take profit: 2039.3538499999997 +2025-03-10 12:42:12,896 - INFO - CLOSED short at 2073.49 | PnL: -0.15% | $-0.76 +2025-03-10 12:42:13,096 - INFO - OPENED LONG at 2071.8 | Stop loss: 2061.4410000000003 | Take profit: 2102.877 +2025-03-10 12:42:13,195 - INFO - CLOSED long at 2076.08 | PnL: 0.21% | $0.32 +2025-03-10 12:42:13,479 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2376999999997 | Take profit: 2107.4469 +2025-03-10 12:42:13,524 - INFO - CLOSED short at 2131.78 | PnL: 0.36% | $0.80 +2025-03-10 12:42:13,525 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.1211000000003 | Take profit: 2163.7567 +2025-03-10 12:42:13,616 - INFO - CLOSED long at 2137.59 | PnL: 0.27% | $0.53 +2025-03-10 12:42:13,616 - INFO - OPENED SHORT at 2137.59 | Stop loss: 2148.2779499999997 | Take profit: 2105.52615 +2025-03-10 12:42:13,716 - INFO - CLOSED short at 2141.3 | PnL: -0.17% | $-0.85 +2025-03-10 12:42:13,973 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.6635 | Take profit: 2159.2095 +2025-03-10 12:42:14,272 - INFO - CLOSED long at 2121.4 | PnL: -0.28% | $-1.15 +2025-03-10 12:42:14,321 - INFO - OPENED LONG at 2118.52 | Stop loss: 2107.9274 | Take profit: 2150.2978 +2025-03-10 12:42:14,490 - INFO - CLOSED long at 2115.28 | PnL: -0.15% | $-0.76 +2025-03-10 12:42:14,739 - INFO - OPENED SHORT at 2112.95 | Stop loss: 2123.5147499999994 | Take profit: 2081.25575 +2025-03-10 12:42:14,785 - INFO - CLOSED short at 2112.46 | PnL: 0.02% | $-0.23 +2025-03-10 12:42:14,785 - INFO - OPENED LONG at 2112.46 | Stop loss: 2101.8977 | Take profit: 2144.1468999999997 +2025-03-10 12:42:14,945 - INFO - CLOSED long at 2120.81 | PnL: 0.40% | $0.88 +2025-03-10 12:42:14,946 - INFO - OPENED SHORT at 2120.81 | Stop loss: 2131.41405 | Take profit: 2088.9978499999997 +2025-03-10 12:42:14,992 - INFO - CLOSED short at 2116.48 | PnL: 0.20% | $0.31 +2025-03-10 12:42:14,994 - INFO - OPENED LONG at 2116.48 | Stop loss: 2105.8976 | Take profit: 2148.2272 +2025-03-10 12:42:15,299 - INFO - STOP LOSS hit for long at 2105.8976 | PnL: -0.50% | $-1.81 +2025-03-10 12:42:15,556 - INFO - OPENED SHORT at 2102.19 | Stop loss: 2112.70095 | Take profit: 2070.65715 +2025-03-10 12:42:15,792 - INFO - CLOSED short at 2104.83 | PnL: -0.13% | $-0.67 +2025-03-10 12:42:15,931 - INFO - OPENED SHORT at 2103.86 | Stop loss: 2114.3793 | Take profit: 2072.3021 +2025-03-10 12:42:16,021 - INFO - CLOSED short at 2101.51 | PnL: 0.11% | $0.03 +2025-03-10 12:42:16,022 - INFO - OPENED LONG at 2101.51 | Stop loss: 2091.0024500000004 | Take profit: 2133.03265 +2025-03-10 12:42:16,209 - INFO - CLOSED long at 2095.29 | PnL: -0.30% | $-1.16 +2025-03-10 12:42:16,691 - INFO - OPENED LONG at 2083.97 | Stop loss: 2073.5501499999996 | Take profit: 2115.2295499999996 +2025-03-10 12:42:16,785 - INFO - CLOSED long at 2082.44 | PnL: -0.07% | $-0.50 +2025-03-10 12:42:17,025 - INFO - OPENED LONG at 2085.09 | Stop loss: 2074.66455 | Take profit: 2116.36635 +2025-03-10 12:42:17,282 - INFO - CLOSED long at 2085.83 | PnL: 0.04% | $-0.18 +2025-03-10 12:42:17,284 - INFO - OPENED SHORT at 2085.83 | Stop loss: 2096.25915 | Take profit: 2054.54255 +2025-03-10 12:42:17,333 - INFO - CLOSED short at 2085.85 | PnL: -0.00% | $-0.29 +2025-03-10 12:42:17,334 - INFO - OPENED LONG at 2085.85 | Stop loss: 2075.4207499999998 | Take profit: 2117.13775 +2025-03-10 12:42:17,536 - INFO - CLOSED long at 2089.96 | PnL: 0.20% | $0.28 +2025-03-10 12:42:17,592 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 32.1% in downtrends | Avg Win=$0.36, Avg Loss=$-0.57 +2025-03-10 12:42:17,593 - INFO - Episode 2: Reward=-60.07, Balance=$71.26, Win Rate=29.2%, Trades=96, Episode PnL=$-17.31, Total PnL=$-89.95, Max Drawdown=28.7%, Pred Accuracy=99.0% +2025-03-10 12:42:17,748 - INFO - Model saved to models/trading_agent_best_reward.pt +2025-03-10 12:42:17,749 - INFO - New best reward model saved: -60.07 +2025-03-10 12:42:17,883 - INFO - Model saved to models/trading_agent_best_winrate.pt +2025-03-10 12:42:17,884 - INFO - New best win rate model saved: 29.2% +2025-03-10 12:42:17,905 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:42:18,573 - INFO - OPENED SHORT at 2057.9 | Stop loss: 2068.1895 | Take profit: 2027.0315 +2025-03-10 12:42:18,718 - INFO - CLOSED short at 2055.2 | PnL: 0.13% | $0.12 +2025-03-10 12:42:18,855 - INFO - OPENED LONG at 2055.39 | Stop loss: 2045.11305 | Take profit: 2086.2208499999997 +2025-03-10 12:42:18,902 - INFO - CLOSED long at 2053.56 | PnL: -0.09% | $-0.76 +2025-03-10 12:42:18,960 - INFO - OPENED SHORT at 2052.7 | Stop loss: 2062.9634999999994 | Take profit: 2021.9094999999998 +2025-03-10 12:42:19,060 - INFO - CLOSED short at 2052.16 | PnL: 0.03% | $-0.29 +2025-03-10 12:42:19,112 - INFO - OPENED LONG at 2053.1 | Stop loss: 2042.8345 | Take profit: 2083.8965 +2025-03-10 12:42:19,272 - INFO - CLOSED long at 2050.44 | PnL: -0.13% | $-0.91 +2025-03-10 12:42:19,272 - INFO - OPENED SHORT at 2050.44 | Stop loss: 2060.6922 | Take profit: 2019.6834000000001 +2025-03-10 12:42:19,737 - INFO - CLOSED short at 2046.58 | PnL: 0.19% | $0.35 +2025-03-10 12:42:19,738 - INFO - OPENED LONG at 2046.58 | Stop loss: 2036.3471 | Take profit: 2077.2787 +2025-03-10 12:42:19,828 - INFO - CLOSED long at 2047.2 | PnL: 0.03% | $-0.27 +2025-03-10 12:42:19,829 - INFO - OPENED SHORT at 2047.2 | Stop loss: 2057.4359999999997 | Take profit: 2016.492 +2025-03-10 12:42:19,926 - INFO - CLOSED short at 2045.99 | PnL: 0.06% | $-0.16 +2025-03-10 12:42:20,336 - INFO - OPENED SHORT at 2051.11 | Stop loss: 2061.36555 | Take profit: 2020.34335 +2025-03-10 12:42:20,494 - INFO - CLOSED short at 2052.3 | PnL: -0.06% | $-0.62 +2025-03-10 12:42:20,592 - INFO - OPENED LONG at 2057.01 | Stop loss: 2046.7249500000003 | Take profit: 2087.86515 +2025-03-10 12:42:20,788 - INFO - CLOSED long at 2059.7 | PnL: 0.13% | $0.12 +2025-03-10 12:42:20,882 - INFO - OPENED SHORT at 2063.29 | Stop loss: 2073.6064499999998 | Take profit: 2032.3406499999999 +2025-03-10 12:42:20,925 - INFO - CLOSED short at 2064.61 | PnL: -0.06% | $-0.64 +2025-03-10 12:42:21,272 - INFO - OPENED LONG at 2058.3 | Stop loss: 2048.0085000000004 | Take profit: 2089.1745 +2025-03-10 12:42:21,438 - INFO - CLOSED long at 2062.89 | PnL: 0.22% | $0.48 +2025-03-10 12:42:21,598 - INFO - OPENED LONG at 2057.8 | Stop loss: 2047.5110000000002 | Take profit: 2088.667 +2025-03-10 12:42:21,967 - INFO - CLOSED long at 2065.86 | PnL: 0.39% | $1.14 +2025-03-10 12:42:22,182 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.22945 | Take profit: 2036.8716499999998 +2025-03-10 12:42:22,474 - INFO - CLOSED short at 2068.99 | PnL: -0.05% | $-0.60 +2025-03-10 12:42:22,475 - INFO - OPENED LONG at 2068.99 | Stop loss: 2058.6450499999996 | Take profit: 2100.02485 +2025-03-10 12:42:22,710 - INFO - CLOSED long at 2071.44 | PnL: 0.12% | $0.07 +2025-03-10 12:42:22,880 - INFO - OPENED SHORT at 2072.91 | Stop loss: 2083.2745499999996 | Take profit: 2041.8163499999998 +2025-03-10 12:42:23,005 - INFO - CLOSED short at 2071.38 | PnL: 0.07% | $-0.10 +2025-03-10 12:42:23,326 - INFO - OPENED SHORT at 2070.28 | Stop loss: 2080.6313999999998 | Take profit: 2039.2258000000002 +2025-03-10 12:42:23,858 - INFO - CLOSED short at 2067.6 | PnL: 0.13% | $0.12 +2025-03-10 12:42:23,858 - INFO - OPENED LONG at 2067.6 | Stop loss: 2057.2619999999997 | Take profit: 2098.6139999999996 +2025-03-10 12:42:24,240 - INFO - CLOSED long at 2065.08 | PnL: -0.12% | $-0.87 +2025-03-10 12:42:24,443 - INFO - OPENED SHORT at 2068.51 | Stop loss: 2078.85255 | Take profit: 2037.4823500000002 +2025-03-10 12:42:24,494 - INFO - CLOSED short at 2068.59 | PnL: -0.00% | $-0.40 +2025-03-10 12:42:24,639 - INFO - OPENED LONG at 2069.96 | Stop loss: 2059.6102 | Take profit: 2101.0094 +2025-03-10 12:42:24,687 - INFO - CLOSED long at 2071.4 | PnL: 0.07% | $-0.12 +2025-03-10 12:42:24,831 - INFO - OPENED SHORT at 2072.75 | Stop loss: 2083.11375 | Take profit: 2041.65875 +2025-03-10 12:42:24,927 - INFO - CLOSED short at 2072.7 | PnL: 0.00% | $-0.38 +2025-03-10 12:42:24,928 - INFO - OPENED LONG at 2072.7 | Stop loss: 2062.3365 | Take profit: 2103.7904999999996 +2025-03-10 12:42:24,974 - INFO - CLOSED long at 2072.15 | PnL: -0.03% | $-0.49 +2025-03-10 12:42:24,975 - INFO - OPENED SHORT at 2072.15 | Stop loss: 2082.51075 | Take profit: 2041.0677500000002 +2025-03-10 12:42:25,018 - INFO - CLOSED short at 2074.29 | PnL: -0.10% | $-0.78 +2025-03-10 12:42:25,019 - INFO - OPENED LONG at 2074.29 | Stop loss: 2063.91855 | Take profit: 2105.40435 +2025-03-10 12:42:25,071 - INFO - CLOSED long at 2073.9 | PnL: -0.02% | $-0.45 +2025-03-10 12:42:25,072 - INFO - OPENED SHORT at 2073.9 | Stop loss: 2084.2695 | Take profit: 2042.7915 +2025-03-10 12:42:25,323 - INFO - CLOSED short at 2069.35 | PnL: 0.22% | $0.45 +2025-03-10 12:42:25,715 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.5863 | Take profit: 2034.2811000000002 +2025-03-10 12:42:26,018 - INFO - CLOSED short at 2067.59 | PnL: -0.11% | $-0.81 +2025-03-10 12:42:26,072 - INFO - OPENED LONG at 2069.2 | Stop loss: 2058.854 | Take profit: 2100.238 +2025-03-10 12:42:26,271 - INFO - CLOSED long at 2070.4 | PnL: 0.06% | $-0.16 +2025-03-10 12:42:26,272 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.752 | Take profit: 2039.344 +2025-03-10 12:42:26,418 - INFO - CLOSED short at 2068.69 | PnL: 0.08% | $-0.07 +2025-03-10 12:42:26,516 - INFO - OPENED LONG at 2067.11 | Stop loss: 2056.7744500000003 | Take profit: 2098.11665 +2025-03-10 12:42:26,759 - INFO - CLOSED long at 2066.39 | PnL: -0.03% | $-0.51 +2025-03-10 12:42:26,814 - INFO - OPENED LONG at 2064.47 | Stop loss: 2054.14765 | Take profit: 2095.4370499999995 +2025-03-10 12:42:27,466 - INFO - CLOSED long at 2061.78 | PnL: -0.13% | $-0.86 +2025-03-10 12:42:27,467 - INFO - OPENED SHORT at 2061.78 | Stop loss: 2072.0889 | Take profit: 2030.8533000000002 +2025-03-10 12:42:27,651 - INFO - CLOSED short at 2061.3 | PnL: 0.02% | $-0.28 +2025-03-10 12:42:27,652 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.9935 | Take profit: 2092.2195 +2025-03-10 12:42:28,368 - INFO - CLOSED long at 2064.5 | PnL: 0.16% | $0.20 +2025-03-10 12:42:28,369 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.8224999999998 | Take profit: 2033.5325 +2025-03-10 12:42:28,582 - INFO - CLOSED short at 2060.65 | PnL: 0.19% | $0.32 +2025-03-10 12:42:28,783 - INFO - OPENED SHORT at 2061.8 | Stop loss: 2072.109 | Take profit: 2030.873 +2025-03-10 12:42:28,832 - INFO - CLOSED short at 2064.7 | PnL: -0.14% | $-0.89 +2025-03-10 12:42:28,884 - INFO - OPENED SHORT at 2062.61 | Stop loss: 2072.92305 | Take profit: 2031.6708500000002 +2025-03-10 12:42:28,931 - INFO - CLOSED short at 2060.91 | PnL: 0.08% | $-0.06 +2025-03-10 12:42:28,931 - INFO - OPENED LONG at 2060.91 | Stop loss: 2050.60545 | Take profit: 2091.82365 +2025-03-10 12:42:28,980 - INFO - CLOSED long at 2060.3 | PnL: -0.03% | $-0.48 +2025-03-10 12:42:29,340 - INFO - OPENED SHORT at 2064.79 | Stop loss: 2075.11395 | Take profit: 2033.8181499999998 +2025-03-10 12:42:29,447 - INFO - CLOSED short at 2063.53 | PnL: 0.06% | $-0.14 +2025-03-10 12:42:29,448 - INFO - OPENED LONG at 2063.53 | Stop loss: 2053.2123500000002 | Take profit: 2094.48295 +2025-03-10 12:42:29,546 - INFO - CLOSED long at 2062.6 | PnL: -0.05% | $-0.53 +2025-03-10 12:42:29,646 - INFO - OPENED SHORT at 2061.7 | Stop loss: 2072.0084999999995 | Take profit: 2030.7744999999998 +2025-03-10 12:42:29,792 - INFO - CLOSED short at 2059.61 | PnL: 0.10% | $0.00 +2025-03-10 12:42:29,837 - INFO - OPENED SHORT at 2059.16 | Stop loss: 2069.4557999999997 | Take profit: 2028.2725999999998 +2025-03-10 12:42:29,934 - INFO - CLOSED short at 2058.89 | PnL: 0.01% | $-0.32 +2025-03-10 12:42:29,935 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.59555 | Take profit: 2089.7733499999995 +2025-03-10 12:42:30,132 - INFO - CLOSED long at 2058.28 | PnL: -0.03% | $-0.47 +2025-03-10 12:42:30,632 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.292 | Take profit: 2092.524 +2025-03-10 12:42:30,676 - INFO - CLOSED long at 2061.3 | PnL: -0.01% | $-0.41 +2025-03-10 12:42:30,677 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.6065 | Take profit: 2030.3805000000002 +2025-03-10 12:42:30,867 - INFO - CLOSED short at 2066.01 | PnL: -0.23% | $-1.18 +2025-03-10 12:42:30,957 - INFO - OPENED SHORT at 2064.49 | Stop loss: 2074.8124499999994 | Take profit: 2033.5226499999997 +2025-03-10 12:42:31,104 - INFO - CLOSED short at 2066.79 | PnL: -0.11% | $-0.75 +2025-03-10 12:42:31,104 - INFO - OPENED LONG at 2066.79 | Stop loss: 2056.45605 | Take profit: 2097.7918499999996 +2025-03-10 12:42:31,248 - INFO - CLOSED long at 2065.69 | PnL: -0.05% | $-0.54 +2025-03-10 12:42:31,346 - INFO - OPENED LONG at 2072.0 | Stop loss: 2061.64 | Take profit: 2103.08 +2025-03-10 12:42:31,798 - INFO - CLOSED long at 2070.0 | PnL: -0.10% | $-0.68 +2025-03-10 12:42:32,126 - INFO - OPENED SHORT at 2068.79 | Stop loss: 2079.13395 | Take profit: 2037.75815 +2025-03-10 12:42:32,435 - INFO - CLOSED short at 2065.7 | PnL: 0.15% | $0.17 +2025-03-10 12:42:32,436 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.3714999999997 | Take profit: 2096.6854999999996 +2025-03-10 12:42:32,577 - INFO - CLOSED long at 2063.97 | PnL: -0.08% | $-0.64 +2025-03-10 12:42:32,880 - INFO - OPENED SHORT at 2067.53 | Stop loss: 2077.86765 | Take profit: 2036.5170500000002 +2025-03-10 12:42:32,981 - INFO - CLOSED short at 2065.31 | PnL: 0.11% | $0.03 +2025-03-10 12:42:33,139 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.93295 | Take profit: 2037.5611500000002 +2025-03-10 12:42:33,360 - INFO - CLOSED short at 2070.9 | PnL: -0.11% | $-0.73 +2025-03-10 12:42:33,361 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.5455 | Take profit: 2101.9635 +2025-03-10 12:42:33,421 - INFO - CLOSED long at 2069.69 | PnL: -0.06% | $-0.54 +2025-03-10 12:42:33,526 - INFO - OPENED SHORT at 2070.8 | Stop loss: 2081.154 | Take profit: 2039.738 +2025-03-10 12:42:33,835 - INFO - CLOSED short at 2070.67 | PnL: 0.01% | $-0.32 +2025-03-10 12:42:33,885 - INFO - OPENED LONG at 2069.78 | Stop loss: 2059.4311000000002 | Take profit: 2100.8267 +2025-03-10 12:42:33,940 - INFO - CLOSED long at 2071.61 | PnL: 0.09% | $-0.04 +2025-03-10 12:42:33,989 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.99815 | Take profit: 2105.48555 +2025-03-10 12:42:34,039 - INFO - CLOSED long at 2075.07 | PnL: 0.03% | $-0.22 +2025-03-10 12:42:34,528 - INFO - OPENED SHORT at 2069.97 | Stop loss: 2080.3198499999994 | Take profit: 2038.9204499999998 +2025-03-10 12:42:35,119 - INFO - CLOSED short at 2067.19 | PnL: 0.13% | $0.12 +2025-03-10 12:42:35,120 - INFO - OPENED LONG at 2067.19 | Stop loss: 2056.85405 | Take profit: 2098.19785 +2025-03-10 12:42:35,701 - INFO - CLOSED long at 2064.11 | PnL: -0.15% | $-0.84 +2025-03-10 12:42:35,701 - INFO - OPENED SHORT at 2064.11 | Stop loss: 2074.43055 | Take profit: 2033.1483500000002 +2025-03-10 12:42:35,929 - INFO - CLOSED short at 2060.2 | PnL: 0.19% | $0.30 +2025-03-10 12:42:35,978 - INFO - OPENED SHORT at 2059.2 | Stop loss: 2069.4959999999996 | Take profit: 2028.312 +2025-03-10 12:42:36,026 - INFO - CLOSED short at 2058.09 | PnL: 0.05% | $-0.15 +2025-03-10 12:42:36,071 - INFO - OPENED LONG at 2058.65 | Stop loss: 2048.35675 | Take profit: 2089.5297499999997 +2025-03-10 12:42:36,118 - INFO - CLOSED long at 2056.77 | PnL: -0.09% | $-0.64 +2025-03-10 12:42:36,119 - INFO - OPENED SHORT at 2056.77 | Stop loss: 2067.05385 | Take profit: 2025.91845 +2025-03-10 12:42:36,227 - INFO - CLOSED short at 2049.21 | PnL: 0.37% | $0.89 +2025-03-10 12:42:36,331 - INFO - OPENED LONG at 2051.99 | Stop loss: 2041.7300499999997 | Take profit: 2082.7698499999997 +2025-03-10 12:42:36,571 - INFO - CLOSED long at 2062.83 | PnL: 0.53% | $1.44 +2025-03-10 12:42:37,010 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.4003999999995 | Take profit: 2033.1188 +2025-03-10 12:42:37,196 - INFO - CLOSED short at 2061.84 | PnL: 0.11% | $0.03 +2025-03-10 12:42:37,896 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.4603999999995 | Take profit: 2044.9388 +2025-03-10 12:42:37,993 - INFO - CLOSED short at 2085.56 | PnL: -0.46% | $-1.90 +2025-03-10 12:42:38,380 - INFO - OPENED LONG at 2137.59 | Stop loss: 2126.90205 | Take profit: 2169.65385 +2025-03-10 12:42:38,437 - INFO - CLOSED long at 2141.41 | PnL: 0.18% | $0.26 +2025-03-10 12:42:38,438 - INFO - OPENED SHORT at 2141.41 | Stop loss: 2152.11705 | Take profit: 2109.28885 +2025-03-10 12:42:38,545 - INFO - CLOSED short at 2142.68 | PnL: -0.06% | $-0.53 +2025-03-10 12:42:38,545 - INFO - OPENED LONG at 2142.68 | Stop loss: 2131.9665999999997 | Take profit: 2174.8201999999997 +2025-03-10 12:42:38,736 - INFO - STOP LOSS hit for long at 2131.9665999999997 | PnL: -0.50% | $-1.99 +2025-03-10 12:42:38,855 - INFO - OPENED SHORT at 2128.69 | Stop loss: 2139.3334499999996 | Take profit: 2096.75965 +2025-03-10 12:42:38,955 - INFO - CLOSED short at 2120.15 | PnL: 0.40% | $0.98 +2025-03-10 12:42:39,012 - INFO - OPENED LONG at 2117.24 | Stop loss: 2106.6537999999996 | Take profit: 2148.9985999999994 +2025-03-10 12:42:39,318 - INFO - CLOSED long at 2115.28 | PnL: -0.09% | $-0.63 +2025-03-10 12:42:39,590 - INFO - OPENED LONG at 2112.95 | Stop loss: 2102.38525 | Take profit: 2144.64425 +2025-03-10 12:42:39,746 - INFO - CLOSED long at 2112.99 | PnL: 0.00% | $-0.32 +2025-03-10 12:42:39,799 - INFO - OPENED LONG at 2120.81 | Stop loss: 2110.20595 | Take profit: 2152.6221499999997 +2025-03-10 12:42:39,893 - INFO - CLOSED long at 2114.8 | PnL: -0.28% | $-1.24 +2025-03-10 12:42:39,894 - INFO - OPENED SHORT at 2114.8 | Stop loss: 2125.374 | Take profit: 2083.078 +2025-03-10 12:42:39,985 - INFO - CLOSED short at 2108.71 | PnL: 0.29% | $0.60 +2025-03-10 12:42:40,090 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.5197 | Take profit: 2139.6809 +2025-03-10 12:42:40,136 - INFO - CLOSED long at 2103.33 | PnL: -0.22% | $-1.04 +2025-03-10 12:42:40,137 - INFO - OPENED SHORT at 2103.33 | Stop loss: 2113.8466499999995 | Take profit: 2071.78005 +2025-03-10 12:42:40,287 - INFO - CLOSED short at 2099.53 | PnL: 0.18% | $0.26 +2025-03-10 12:42:40,337 - INFO - OPENED LONG at 2098.1 | Stop loss: 2087.6095 | Take profit: 2129.5714999999996 +2025-03-10 12:42:40,440 - INFO - CLOSED long at 2102.29 | PnL: 0.20% | $0.32 +2025-03-10 12:42:40,722 - INFO - OPENED SHORT at 2106.39 | Stop loss: 2116.9219499999995 | Take profit: 2074.7941499999997 +2025-03-10 12:42:40,774 - INFO - CLOSED short at 2100.74 | PnL: 0.27% | $0.54 +2025-03-10 12:42:40,774 - INFO - OPENED LONG at 2100.74 | Stop loss: 2090.2362999999996 | Take profit: 2132.2510999999995 +2025-03-10 12:42:40,949 - INFO - CLOSED long at 2101.51 | PnL: 0.04% | $-0.20 +2025-03-10 12:42:41,106 - INFO - OPENED LONG at 2098.39 | Stop loss: 2087.89805 | Take profit: 2129.8658499999997 +2025-03-10 12:42:41,204 - INFO - CLOSED long at 2093.46 | PnL: -0.23% | $-1.08 +2025-03-10 12:42:41,256 - INFO - OPENED SHORT at 2093.33 | Stop loss: 2103.7966499999998 | Take profit: 2061.93005 +2025-03-10 12:42:41,372 - INFO - CLOSED short at 2091.1 | PnL: 0.11% | $0.02 +2025-03-10 12:42:41,427 - INFO - OPENED SHORT at 2094.72 | Stop loss: 2105.1935999999996 | Take profit: 2063.2992 +2025-03-10 12:42:41,477 - INFO - CLOSED short at 2094.08 | PnL: 0.03% | $-0.22 +2025-03-10 12:42:41,524 - INFO - OPENED LONG at 2088.35 | Stop loss: 2077.90825 | Take profit: 2119.67525 +2025-03-10 12:42:41,575 - INFO - CLOSED long at 2083.28 | PnL: -0.24% | $-1.08 +2025-03-10 12:42:41,960 - INFO - OPENED SHORT at 2081.25 | Stop loss: 2091.65625 | Take profit: 2050.03125 +2025-03-10 12:42:42,065 - INFO - CLOSED short at 2085.09 | PnL: -0.18% | $-0.89 +2025-03-10 12:42:42,174 - INFO - OPENED LONG at 2086.57 | Stop loss: 2076.13715 | Take profit: 2117.86855 +2025-03-10 12:42:42,640 - INFO - CLOSED long at 2088.1 | PnL: 0.07% | $-0.08 +2025-03-10 12:42:42,641 - INFO - OPENED SHORT at 2088.1 | Stop loss: 2098.5404999999996 | Take profit: 2056.7785 +2025-03-10 12:42:42,768 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 31.2% in downtrends | Avg Win=$0.37, Avg Loss=$-0.58 +2025-03-10 12:42:42,770 - INFO - Episode 3: Reward=-46.90, Balance=$76.99, Win Rate=30.9%, Trades=81, Episode PnL=$-12.78, Total PnL=$-112.96, Max Drawdown=23.0%, Pred Accuracy=99.2% +2025-03-10 12:42:42,920 - INFO - Model saved to models/trading_agent_best_reward.pt +2025-03-10 12:42:42,921 - INFO - New best reward model saved: -46.90 +2025-03-10 12:42:43,060 - INFO - Model saved to models/trading_agent_best_winrate.pt +2025-03-10 12:42:43,060 - INFO - New best win rate model saved: 30.9% +2025-03-10 12:42:43,087 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:42:43,561 - INFO - OPENED SHORT at 2060.1 | Stop loss: 2070.4004999999997 | Take profit: 2029.1985 +2025-03-10 12:42:43,662 - INFO - CLOSED short at 2057.52 | PnL: 0.13% | $0.10 +2025-03-10 12:42:44,142 - INFO - OPENED SHORT at 2055.39 | Stop loss: 2065.66695 | Take profit: 2024.5591499999998 +2025-03-10 12:42:44,190 - INFO - CLOSED short at 2053.56 | PnL: 0.09% | $-0.04 +2025-03-10 12:42:44,191 - INFO - OPENED LONG at 2053.56 | Stop loss: 2043.2921999999999 | Take profit: 2084.3633999999997 +2025-03-10 12:42:44,296 - INFO - CLOSED long at 2051.66 | PnL: -0.09% | $-0.77 +2025-03-10 12:42:44,297 - INFO - OPENED SHORT at 2051.66 | Stop loss: 2061.9183 | Take profit: 2020.8850999999997 +2025-03-10 12:42:44,462 - INFO - CLOSED short at 2052.25 | PnL: -0.03% | $-0.51 +2025-03-10 12:42:44,509 - INFO - OPENED SHORT at 2050.71 | Stop loss: 2060.96355 | Take profit: 2019.94935 +2025-03-10 12:42:44,562 - INFO - CLOSED short at 2050.44 | PnL: 0.01% | $-0.34 +2025-03-10 12:42:44,807 - INFO - OPENED SHORT at 2049.61 | Stop loss: 2059.85805 | Take profit: 2018.8658500000001 +2025-03-10 12:42:44,865 - INFO - CLOSED short at 2049.24 | PnL: 0.02% | $-0.32 +2025-03-10 12:42:44,912 - INFO - OPENED LONG at 2048.48 | Stop loss: 2038.2376 | Take profit: 2079.2072 +2025-03-10 12:42:44,958 - INFO - CLOSED long at 2047.39 | PnL: -0.05% | $-0.60 +2025-03-10 12:42:45,054 - INFO - OPENED SHORT at 2047.4 | Stop loss: 2057.6369999999997 | Take profit: 2016.689 +2025-03-10 12:42:45,406 - INFO - CLOSED short at 2048.51 | PnL: -0.05% | $-0.60 +2025-03-10 12:42:45,406 - INFO - OPENED LONG at 2048.51 | Stop loss: 2038.2674500000003 | Take profit: 2079.23765 +2025-03-10 12:42:45,512 - INFO - CLOSED long at 2050.24 | PnL: 0.08% | $-0.06 +2025-03-10 12:42:45,569 - INFO - OPENED LONG at 2049.89 | Stop loss: 2039.6405499999998 | Take profit: 2080.6383499999997 +2025-03-10 12:42:45,617 - INFO - CLOSED long at 2051.11 | PnL: 0.06% | $-0.16 +2025-03-10 12:42:45,618 - INFO - OPENED SHORT at 2051.11 | Stop loss: 2061.36555 | Take profit: 2020.34335 +2025-03-10 12:42:46,089 - INFO - STOP LOSS hit for short at 2061.36555 | PnL: -0.50% | $-2.32 +2025-03-10 12:42:46,518 - INFO - OPENED SHORT at 2060.0 | Stop loss: 2070.2999999999997 | Take profit: 2029.1 +2025-03-10 12:42:46,696 - INFO - CLOSED short at 2059.49 | PnL: 0.02% | $-0.28 +2025-03-10 12:42:46,697 - INFO - OPENED LONG at 2059.49 | Stop loss: 2049.1925499999998 | Take profit: 2090.3823499999994 +2025-03-10 12:42:46,748 - INFO - CLOSED long at 2057.8 | PnL: -0.08% | $-0.69 +2025-03-10 12:42:46,749 - INFO - OPENED SHORT at 2057.8 | Stop loss: 2068.089 | Take profit: 2026.9330000000002 +2025-03-10 12:42:47,126 - INFO - STOP LOSS hit for short at 2068.089 | PnL: -0.50% | $-2.24 +2025-03-10 12:42:47,223 - INFO - OPENED LONG at 2068.29 | Stop loss: 2057.94855 | Take profit: 2099.3143499999996 +2025-03-10 12:42:47,273 - INFO - CLOSED long at 2067.89 | PnL: -0.02% | $-0.44 +2025-03-10 12:42:47,326 - INFO - OPENED LONG at 2071.63 | Stop loss: 2061.27185 | Take profit: 2102.7044499999997 +2025-03-10 12:42:47,442 - INFO - CLOSED long at 2069.6 | PnL: -0.10% | $-0.72 +2025-03-10 12:42:47,750 - INFO - OPENED SHORT at 2071.44 | Stop loss: 2081.7972 | Take profit: 2040.3684 +2025-03-10 12:42:47,848 - INFO - CLOSED short at 2075.1 | PnL: -0.18% | $-1.00 +2025-03-10 12:42:47,850 - INFO - OPENED LONG at 2075.1 | Stop loss: 2064.7245 | Take profit: 2106.2264999999998 +2025-03-10 12:42:48,062 - INFO - CLOSED long at 2071.41 | PnL: -0.18% | $-0.99 +2025-03-10 12:42:48,305 - INFO - OPENED SHORT at 2070.79 | Stop loss: 2081.1439499999997 | Take profit: 2039.72815 +2025-03-10 12:42:48,353 - INFO - CLOSED short at 2070.28 | PnL: 0.02% | $-0.27 +2025-03-10 12:42:48,353 - INFO - OPENED LONG at 2070.28 | Stop loss: 2059.9286 | Take profit: 2101.3342 +2025-03-10 12:42:48,657 - INFO - CLOSED long at 2069.34 | PnL: -0.05% | $-0.51 +2025-03-10 12:42:48,744 - INFO - OPENED SHORT at 2068.8 | Stop loss: 2079.144 | Take profit: 2037.7680000000003 +2025-03-10 12:42:48,931 - INFO - CLOSED short at 2066.39 | PnL: 0.12% | $0.06 +2025-03-10 12:42:49,179 - INFO - OPENED LONG at 2066.18 | Stop loss: 2055.8491 | Take profit: 2097.1726999999996 +2025-03-10 12:42:49,370 - INFO - CLOSED long at 2068.59 | PnL: 0.12% | $0.06 +2025-03-10 12:42:49,459 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.0480000000002 | Take profit: 2101.4559999999997 +2025-03-10 12:42:49,803 - INFO - CLOSED long at 2072.7 | PnL: 0.11% | $0.04 +2025-03-10 12:42:49,803 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.0634999999997 | Take profit: 2041.6094999999998 +2025-03-10 12:42:49,900 - INFO - CLOSED short at 2074.29 | PnL: -0.08% | $-0.62 +2025-03-10 12:42:49,901 - INFO - OPENED LONG at 2074.29 | Stop loss: 2063.91855 | Take profit: 2105.40435 +2025-03-10 12:42:49,997 - INFO - CLOSED long at 2071.92 | PnL: -0.11% | $-0.74 +2025-03-10 12:42:49,998 - INFO - OPENED SHORT at 2071.92 | Stop loss: 2082.2796 | Take profit: 2040.8412 +2025-03-10 12:42:50,328 - INFO - CLOSED short at 2067.79 | PnL: 0.20% | $0.34 +2025-03-10 12:42:50,613 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.22945 | Take profit: 2036.8716499999998 +2025-03-10 12:42:50,662 - INFO - CLOSED short at 2068.58 | PnL: -0.03% | $-0.46 +2025-03-10 12:42:50,819 - INFO - OPENED SHORT at 2067.86 | Stop loss: 2078.1992999999998 | Take profit: 2036.8421 +2025-03-10 12:42:51,025 - INFO - CLOSED short at 2071.59 | PnL: -0.18% | $-0.96 +2025-03-10 12:42:51,026 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.23205 | Take profit: 2102.66385 +2025-03-10 12:42:51,264 - INFO - CLOSED long at 2068.69 | PnL: -0.14% | $-0.82 +2025-03-10 12:42:51,265 - INFO - OPENED SHORT at 2068.69 | Stop loss: 2079.03345 | Take profit: 2037.65965 +2025-03-10 12:42:51,312 - INFO - CLOSED short at 2067.84 | PnL: 0.04% | $-0.20 +2025-03-10 12:42:51,493 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.4304999999995 | Take profit: 2035.1084999999998 +2025-03-10 12:42:51,637 - INFO - CLOSED short at 2064.47 | PnL: 0.08% | $-0.07 +2025-03-10 12:42:51,638 - INFO - OPENED LONG at 2064.47 | Stop loss: 2054.14765 | Take profit: 2095.4370499999995 +2025-03-10 12:42:51,948 - INFO - CLOSED long at 2064.99 | PnL: 0.03% | $-0.25 +2025-03-10 12:42:51,948 - INFO - OPENED SHORT at 2064.99 | Stop loss: 2075.3149499999995 | Take profit: 2034.0151499999997 +2025-03-10 12:42:52,089 - INFO - CLOSED short at 2065.26 | PnL: -0.01% | $-0.38 +2025-03-10 12:42:52,090 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.9337 | Take profit: 2096.2389 +2025-03-10 12:42:52,198 - INFO - CLOSED long at 2062.65 | PnL: -0.13% | $-0.75 +2025-03-10 12:42:52,299 - INFO - OPENED SHORT at 2059.59 | Stop loss: 2069.88795 | Take profit: 2028.6961500000002 +2025-03-10 12:42:52,506 - INFO - CLOSED short at 2066.24 | PnL: -0.32% | $-1.40 +2025-03-10 12:42:52,692 - INFO - OPENED SHORT at 2064.45 | Stop loss: 2074.7722499999995 | Take profit: 2033.4832499999998 +2025-03-10 12:42:52,736 - INFO - CLOSED short at 2064.08 | PnL: 0.02% | $-0.27 +2025-03-10 12:42:52,828 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.57555 | Take profit: 2093.83335 +2025-03-10 12:42:53,023 - INFO - CLOSED long at 2060.9 | PnL: -0.10% | $-0.64 +2025-03-10 12:42:53,068 - INFO - OPENED SHORT at 2060.65 | Stop loss: 2070.95325 | Take profit: 2029.74025 +2025-03-10 12:42:53,647 - INFO - CLOSED short at 2065.36 | PnL: -0.23% | $-1.05 +2025-03-10 12:42:53,833 - INFO - OPENED LONG at 2065.89 | Stop loss: 2055.5605499999997 | Take profit: 2096.8783499999995 +2025-03-10 12:42:53,981 - INFO - CLOSED long at 2062.6 | PnL: -0.16% | $-0.82 +2025-03-10 12:42:54,219 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.3119500000003 | Take profit: 2090.5041499999998 +2025-03-10 12:42:54,269 - INFO - CLOSED long at 2059.16 | PnL: -0.02% | $-0.38 +2025-03-10 12:42:54,493 - INFO - OPENED LONG at 2059.46 | Stop loss: 2049.1627 | Take profit: 2090.3518999999997 +2025-03-10 12:42:54,889 - INFO - CLOSED long at 2056.71 | PnL: -0.13% | $-0.73 +2025-03-10 12:42:55,243 - INFO - OPENED SHORT at 2062.69 | Stop loss: 2073.0034499999997 | Take profit: 2031.74965 +2025-03-10 12:42:55,481 - INFO - CLOSED short at 2064.49 | PnL: -0.09% | $-0.58 +2025-03-10 12:42:55,775 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.01845 | Take profit: 2034.7046500000001 +2025-03-10 12:42:55,982 - INFO - STOP LOSS hit for short at 2076.01845 | PnL: -0.50% | $-1.84 +2025-03-10 12:42:56,262 - INFO - OPENED LONG at 2073.23 | Stop loss: 2062.86385 | Take profit: 2104.32845 +2025-03-10 12:42:56,369 - INFO - CLOSED long at 2068.15 | PnL: -0.25% | $-1.03 +2025-03-10 12:42:56,423 - INFO - OPENED SHORT at 2068.39 | Stop loss: 2078.73195 | Take profit: 2037.3641499999999 +2025-03-10 12:42:56,667 - INFO - CLOSED short at 2072.99 | PnL: -0.22% | $-0.95 +2025-03-10 12:42:56,765 - INFO - OPENED SHORT at 2069.87 | Stop loss: 2080.21935 | Take profit: 2038.8219499999998 +2025-03-10 12:42:57,172 - INFO - CLOSED short at 2065.3 | PnL: 0.22% | $0.35 +2025-03-10 12:42:57,173 - INFO - OPENED LONG at 2065.3 | Stop loss: 2054.9735 | Take profit: 2096.2795 +2025-03-10 12:42:57,410 - INFO - CLOSED long at 2065.29 | PnL: -0.00% | $-0.29 +2025-03-10 12:42:57,410 - INFO - OPENED SHORT at 2065.29 | Stop loss: 2075.6164499999995 | Take profit: 2034.31065 +2025-03-10 12:42:57,456 - INFO - CLOSED short at 2065.31 | PnL: -0.00% | $-0.29 +2025-03-10 12:42:57,545 - INFO - OPENED LONG at 2066.5 | Stop loss: 2056.1675 | Take profit: 2097.4975 +2025-03-10 12:42:57,589 - INFO - CLOSED long at 2068.59 | PnL: 0.10% | $0.00 +2025-03-10 12:42:57,640 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.9479499999998 | Take profit: 2040.5161500000002 +2025-03-10 12:42:58,000 - INFO - CLOSED short at 2070.61 | PnL: 0.05% | $-0.15 +2025-03-10 12:42:58,048 - INFO - OPENED LONG at 2071.99 | Stop loss: 2061.6300499999998 | Take profit: 2103.0698499999994 +2025-03-10 12:42:58,099 - INFO - CLOSED long at 2068.19 | PnL: -0.18% | $-0.82 +2025-03-10 12:42:58,099 - INFO - OPENED SHORT at 2068.19 | Stop loss: 2078.53095 | Take profit: 2037.16715 +2025-03-10 12:42:58,146 - INFO - CLOSED short at 2068.67 | PnL: -0.02% | $-0.35 +2025-03-10 12:42:58,416 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.44535 | Take profit: 2043.94395 +2025-03-10 12:42:58,588 - INFO - CLOSED short at 2073.99 | PnL: 0.05% | $-0.14 +2025-03-10 12:42:58,589 - INFO - OPENED LONG at 2073.99 | Stop loss: 2063.62005 | Take profit: 2105.0998499999996 +2025-03-10 12:42:58,749 - INFO - CLOSED long at 2076.9 | PnL: 0.14% | $0.11 +2025-03-10 12:42:59,007 - INFO - OPENED SHORT at 2067.7 | Stop loss: 2078.0384999999997 | Take profit: 2036.6844999999998 +2025-03-10 12:42:59,180 - INFO - CLOSED short at 2066.4 | PnL: 0.06% | $-0.11 +2025-03-10 12:42:59,228 - INFO - OPENED LONG at 2066.89 | Stop loss: 2056.55555 | Take profit: 2097.89335 +2025-03-10 12:42:59,738 - INFO - CLOSED long at 2065.8 | PnL: -0.05% | $-0.43 +2025-03-10 12:42:59,932 - INFO - OPENED LONG at 2062.34 | Stop loss: 2052.0283 | Take profit: 2093.2751 +2025-03-10 12:43:00,031 - INFO - CLOSED long at 2066.1 | PnL: 0.18% | $0.23 +2025-03-10 12:43:00,032 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.4304999999995 | Take profit: 2035.1084999999998 +2025-03-10 12:43:00,232 - INFO - CLOSED short at 2066.33 | PnL: -0.01% | $-0.32 +2025-03-10 12:43:00,233 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.99835 | Take profit: 2097.3249499999997 +2025-03-10 12:43:00,338 - INFO - CLOSED long at 2060.7 | PnL: -0.27% | $-1.05 +2025-03-10 12:43:00,391 - INFO - OPENED LONG at 2060.2 | Stop loss: 2049.899 | Take profit: 2091.1029999999996 +2025-03-10 12:43:00,452 - INFO - CLOSED long at 2059.2 | PnL: -0.05% | $-0.41 +2025-03-10 12:43:00,453 - INFO - OPENED SHORT at 2059.2 | Stop loss: 2069.4959999999996 | Take profit: 2028.312 +2025-03-10 12:43:00,550 - INFO - CLOSED short at 2058.65 | PnL: 0.03% | $-0.20 +2025-03-10 12:43:00,551 - INFO - OPENED LONG at 2058.65 | Stop loss: 2048.35675 | Take profit: 2089.5297499999997 +2025-03-10 12:43:00,702 - INFO - CLOSED long at 2049.21 | PnL: -0.46% | $-1.54 +2025-03-10 12:43:00,702 - INFO - OPENED SHORT at 2049.21 | Stop loss: 2059.45605 | Take profit: 2018.47185 +2025-03-10 12:43:00,795 - INFO - CLOSED short at 2051.99 | PnL: -0.14% | $-0.64 +2025-03-10 12:43:00,796 - INFO - OPENED LONG at 2051.99 | Stop loss: 2041.7300499999997 | Take profit: 2082.7698499999997 +2025-03-10 12:43:00,885 - INFO - CLOSED long at 2056.85 | PnL: 0.24% | $0.37 +2025-03-10 12:43:01,851 - INFO - OPENED LONG at 2070.31 | Stop loss: 2059.95845 | Take profit: 2101.3646499999995 +2025-03-10 12:43:01,900 - INFO - CLOSED long at 2070.24 | PnL: -0.00% | $-0.28 +2025-03-10 12:43:01,954 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.9933 | Take profit: 2100.3801 +2025-03-10 12:43:02,087 - INFO - CLOSED long at 2073.49 | PnL: 0.20% | $0.27 +2025-03-10 12:43:02,088 - INFO - OPENED SHORT at 2073.49 | Stop loss: 2083.8574499999995 | Take profit: 2042.3876499999997 +2025-03-10 12:43:02,134 - INFO - CLOSED short at 2074.05 | PnL: -0.03% | $-0.34 +2025-03-10 12:43:02,135 - INFO - OPENED LONG at 2074.05 | Stop loss: 2063.6797500000002 | Take profit: 2105.16075 +2025-03-10 12:43:02,705 - INFO - TAKE PROFIT hit for long at 2105.16075 | PnL: 1.50% | $3.74 +2025-03-10 12:43:02,879 - INFO - OPENED SHORT at 2133.95 | Stop loss: 2144.6197499999994 | Take profit: 2101.9407499999998 +2025-03-10 12:43:03,044 - INFO - CLOSED short at 2141.3 | PnL: -0.34% | $-1.25 +2025-03-10 12:43:03,100 - INFO - OPENED SHORT at 2142.68 | Stop loss: 2153.3933999999995 | Take profit: 2110.5398 +2025-03-10 12:43:03,572 - INFO - CLOSED short at 2119.93 | PnL: 1.06% | $2.66 +2025-03-10 12:43:03,572 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3303499999997 | Take profit: 2151.7289499999997 +2025-03-10 12:43:03,619 - INFO - CLOSED long at 2121.4 | PnL: 0.07% | $-0.09 +2025-03-10 12:43:03,904 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.047 | Take profit: 2142.2589999999996 +2025-03-10 12:43:03,948 - INFO - CLOSED long at 2109.05 | PnL: -0.07% | $-0.50 +2025-03-10 12:43:04,095 - INFO - OPENED SHORT at 2112.46 | Stop loss: 2123.0222999999996 | Take profit: 2080.7731 +2025-03-10 12:43:04,141 - INFO - CLOSED short at 2113.24 | PnL: -0.04% | $-0.39 +2025-03-10 12:43:04,142 - INFO - OPENED LONG at 2113.24 | Stop loss: 2102.6737999999996 | Take profit: 2144.9385999999995 +2025-03-10 12:43:04,336 - INFO - CLOSED long at 2114.8 | PnL: 0.07% | $-0.07 +2025-03-10 12:43:04,422 - INFO - OPENED LONG at 2108.71 | Stop loss: 2098.16645 | Take profit: 2140.3406499999996 +2025-03-10 12:43:04,659 - INFO - CLOSED long at 2090.0 | PnL: -0.89% | $-2.80 +2025-03-10 12:43:04,660 - INFO - OPENED SHORT at 2090.0 | Stop loss: 2100.45 | Take profit: 2058.65 +2025-03-10 12:43:04,705 - INFO - CLOSED short at 2099.53 | PnL: -0.46% | $-1.51 +2025-03-10 12:43:04,706 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0323500000004 | Take profit: 2131.02295 +2025-03-10 12:43:05,381 - INFO - CLOSED long at 2100.02 | PnL: 0.02% | $-0.20 +2025-03-10 12:43:05,494 - INFO - OPENED SHORT at 2095.29 | Stop loss: 2105.7664499999996 | Take profit: 2063.86065 +2025-03-10 12:43:05,546 - INFO - CLOSED short at 2093.46 | PnL: 0.09% | $-0.03 +2025-03-10 12:43:05,947 - INFO - OPENED SHORT at 2088.44 | Stop loss: 2098.8822 | Take profit: 2057.1134 +2025-03-10 12:43:06,047 - INFO - CLOSED short at 2085.3 | PnL: 0.15% | $0.13 +2025-03-10 12:43:06,196 - INFO - OPENED LONG at 2080.38 | Stop loss: 2069.9781000000003 | Take profit: 2111.5857 +2025-03-10 12:43:06,347 - INFO - CLOSED long at 2085.09 | PnL: 0.23% | $0.34 +2025-03-10 12:43:06,348 - INFO - OPENED SHORT at 2085.09 | Stop loss: 2095.51545 | Take profit: 2053.81365 +2025-03-10 12:43:06,398 - INFO - CLOSED short at 2083.59 | PnL: 0.07% | $-0.07 +2025-03-10 12:43:06,399 - INFO - OPENED LONG at 2083.59 | Stop loss: 2073.17205 | Take profit: 2114.8438499999997 +2025-03-10 12:43:06,552 - INFO - CLOSED long at 2084.72 | PnL: 0.05% | $-0.12 +2025-03-10 12:43:06,552 - INFO - OPENED SHORT at 2084.72 | Stop loss: 2095.1435999999994 | Take profit: 2053.4491999999996 +2025-03-10 12:43:06,906 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 13.0% in downtrends | Avg Win=$0.59, Avg Loss=$-0.63 +2025-03-10 12:43:06,907 - INFO - Episode 4: Reward=165.81, Balance=$66.59, Win Rate=18.3%, Trades=82, Episode PnL=$-20.06, Total PnL=$-146.36, Max Drawdown=33.7%, Pred Accuracy=99.6% +2025-03-10 12:43:07,062 - INFO - Model saved to models/trading_agent_best_reward.pt +2025-03-10 12:43:07,062 - INFO - New best reward model saved: 165.81 +2025-03-10 12:43:07,094 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:43:07,490 - INFO - OPENED SHORT at 2059.4 | Stop loss: 2069.6969999999997 | Take profit: 2028.509 +2025-03-10 12:43:07,602 - INFO - CLOSED short at 2060.51 | PnL: -0.05% | $-0.62 +2025-03-10 12:43:07,648 - INFO - OPENED LONG at 2057.52 | Stop loss: 2047.2323999999999 | Take profit: 2088.3828 +2025-03-10 12:43:08,283 - INFO - CLOSED long at 2051.66 | PnL: -0.28% | $-1.53 +2025-03-10 12:43:08,339 - INFO - OPENED LONG at 2052.16 | Stop loss: 2041.8991999999998 | Take profit: 2082.9423999999995 +2025-03-10 12:43:08,443 - INFO - CLOSED long at 2052.25 | PnL: 0.00% | $-0.37 +2025-03-10 12:43:08,444 - INFO - OPENED SHORT at 2052.25 | Stop loss: 2062.5112499999996 | Take profit: 2021.46625 +2025-03-10 12:43:08,765 - INFO - CLOSED short at 2051.99 | PnL: 0.01% | $-0.34 +2025-03-10 12:43:08,817 - INFO - OPENED LONG at 2049.61 | Stop loss: 2039.3619500000002 | Take profit: 2080.35415 +2025-03-10 12:43:09,166 - INFO - CLOSED long at 2045.99 | PnL: -0.18% | $-1.07 +2025-03-10 12:43:09,167 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.2199499999997 | Take profit: 2015.30015 +2025-03-10 12:43:09,260 - INFO - CLOSED short at 2045.79 | PnL: 0.01% | $-0.35 +2025-03-10 12:43:09,260 - INFO - OPENED LONG at 2045.79 | Stop loss: 2035.56105 | Take profit: 2076.4768499999996 +2025-03-10 12:43:09,469 - INFO - CLOSED long at 2050.0 | PnL: 0.21% | $0.41 +2025-03-10 12:43:09,469 - INFO - OPENED SHORT at 2050.0 | Stop loss: 2060.25 | Take profit: 2019.25 +2025-03-10 12:43:09,883 - INFO - CLOSED short at 2057.01 | PnL: -0.34% | $-1.70 +2025-03-10 12:43:09,883 - INFO - OPENED LONG at 2057.01 | Stop loss: 2046.7249500000003 | Take profit: 2087.86515 +2025-03-10 12:43:09,934 - INFO - CLOSED long at 2056.89 | PnL: -0.01% | $-0.40 +2025-03-10 12:43:10,122 - INFO - OPENED SHORT at 2061.49 | Stop loss: 2071.7974499999996 | Take profit: 2030.5676499999997 +2025-03-10 12:43:10,168 - INFO - CLOSED short at 2063.29 | PnL: -0.09% | $-0.70 +2025-03-10 12:43:10,168 - INFO - OPENED LONG at 2063.29 | Stop loss: 2052.97355 | Take profit: 2094.23935 +2025-03-10 12:43:10,210 - INFO - CLOSED long at 2064.61 | PnL: 0.06% | $-0.13 +2025-03-10 12:43:10,259 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.27205 | Take profit: 2094.54385 +2025-03-10 12:43:11,040 - INFO - CLOSED long at 2061.79 | PnL: -0.09% | $-0.70 +2025-03-10 12:43:11,090 - INFO - OPENED SHORT at 2061.18 | Stop loss: 2071.4858999999997 | Take profit: 2030.2622999999999 +2025-03-10 12:43:11,141 - INFO - CLOSED short at 2064.32 | PnL: -0.15% | $-0.93 +2025-03-10 12:43:11,142 - INFO - OPENED LONG at 2064.32 | Stop loss: 2053.9984 | Take profit: 2095.2848 +2025-03-10 12:43:11,277 - INFO - CLOSED long at 2068.11 | PnL: 0.18% | $0.31 +2025-03-10 12:43:11,808 - INFO - OPENED LONG at 2070.26 | Stop loss: 2059.9087000000004 | Take profit: 2101.3139 +2025-03-10 12:43:11,856 - INFO - CLOSED long at 2071.44 | PnL: 0.06% | $-0.16 +2025-03-10 12:43:12,028 - INFO - OPENED SHORT at 2072.91 | Stop loss: 2083.2745499999996 | Take profit: 2041.8163499999998 +2025-03-10 12:43:12,082 - INFO - CLOSED short at 2072.33 | PnL: 0.03% | $-0.26 +2025-03-10 12:43:12,856 - INFO - OPENED SHORT at 2069.19 | Stop loss: 2079.53595 | Take profit: 2038.1521500000001 +2025-03-10 12:43:13,160 - INFO - CLOSED short at 2065.99 | PnL: 0.15% | $0.20 +2025-03-10 12:43:13,160 - INFO - OPENED LONG at 2065.99 | Stop loss: 2055.66005 | Take profit: 2096.9798499999997 +2025-03-10 12:43:13,211 - INFO - CLOSED long at 2066.19 | PnL: 0.01% | $-0.33 +2025-03-10 12:43:13,267 - INFO - OPENED SHORT at 2066.29 | Stop loss: 2076.6214499999996 | Take profit: 2035.29565 +2025-03-10 12:43:13,371 - INFO - CLOSED short at 2066.18 | PnL: 0.01% | $-0.35 +2025-03-10 12:43:13,476 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.5555 | Take profit: 2099.9335 +2025-03-10 12:43:13,582 - INFO - CLOSED long at 2068.59 | PnL: -0.01% | $-0.42 +2025-03-10 12:43:13,582 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.93295 | Take profit: 2037.5611500000002 +2025-03-10 12:43:13,686 - INFO - CLOSED short at 2070.4 | PnL: -0.09% | $-0.68 +2025-03-10 12:43:13,741 - INFO - OPENED SHORT at 2069.96 | Stop loss: 2080.3098 | Take profit: 2038.9106 +2025-03-10 12:43:14,303 - INFO - CLOSED short at 2070.4 | PnL: -0.02% | $-0.44 +2025-03-10 12:43:14,400 - INFO - OPENED LONG at 2069.46 | Stop loss: 2059.1127 | Take profit: 2100.5018999999998 +2025-03-10 12:43:14,488 - INFO - CLOSED long at 2068.32 | PnL: -0.06% | $-0.55 +2025-03-10 12:43:14,642 - INFO - OPENED SHORT at 2067.46 | Stop loss: 2077.7972999999997 | Take profit: 2036.4481 +2025-03-10 12:43:14,742 - INFO - CLOSED short at 2065.49 | PnL: 0.10% | $-0.02 +2025-03-10 12:43:14,742 - INFO - OPENED LONG at 2065.49 | Stop loss: 2055.1625499999996 | Take profit: 2096.4723499999996 +2025-03-10 12:43:14,885 - INFO - CLOSED long at 2067.89 | PnL: 0.12% | $0.06 +2025-03-10 12:43:15,398 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.0480000000002 | Take profit: 2101.4559999999997 +2025-03-10 12:43:15,444 - INFO - CLOSED long at 2070.73 | PnL: 0.02% | $-0.30 +2025-03-10 12:43:15,548 - INFO - OPENED SHORT at 2068.69 | Stop loss: 2079.03345 | Take profit: 2037.65965 +2025-03-10 12:43:15,595 - INFO - CLOSED short at 2067.84 | PnL: 0.04% | $-0.21 +2025-03-10 12:43:15,595 - INFO - OPENED LONG at 2067.84 | Stop loss: 2057.5008000000003 | Take profit: 2098.8576 +2025-03-10 12:43:15,693 - INFO - CLOSED long at 2067.86 | PnL: 0.00% | $-0.35 +2025-03-10 12:43:15,693 - INFO - OPENED SHORT at 2067.86 | Stop loss: 2078.1992999999998 | Take profit: 2036.8421 +2025-03-10 12:43:15,985 - INFO - CLOSED short at 2070.04 | PnL: -0.11% | $-0.72 +2025-03-10 12:43:16,686 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.9935 | Take profit: 2092.2195 +2025-03-10 12:43:16,783 - INFO - CLOSED long at 2064.96 | PnL: 0.18% | $0.27 +2025-03-10 12:43:16,785 - INFO - OPENED SHORT at 2064.96 | Stop loss: 2075.2848 | Take profit: 2033.9856 +2025-03-10 12:43:16,888 - INFO - CLOSED short at 2067.1 | PnL: -0.10% | $-0.71 +2025-03-10 12:43:16,889 - INFO - OPENED LONG at 2067.1 | Stop loss: 2056.7644999999998 | Take profit: 2098.1065 +2025-03-10 12:43:17,186 - INFO - CLOSED long at 2062.89 | PnL: -0.20% | $-1.06 +2025-03-10 12:43:17,387 - INFO - OPENED LONG at 2060.9 | Stop loss: 2050.5955 | Take profit: 2091.8134999999997 +2025-03-10 12:43:17,492 - INFO - CLOSED long at 2058.89 | PnL: -0.10% | $-0.68 +2025-03-10 12:43:17,657 - INFO - OPENED LONG at 2061.8 | Stop loss: 2051.491 | Take profit: 2092.727 +2025-03-10 12:43:17,893 - INFO - CLOSED long at 2060.3 | PnL: -0.07% | $-0.59 +2025-03-10 12:43:17,945 - INFO - OPENED LONG at 2061.13 | Stop loss: 2050.8243500000003 | Take profit: 2092.04695 +2025-03-10 12:43:18,318 - INFO - CLOSED long at 2065.89 | PnL: 0.23% | $0.44 +2025-03-10 12:43:18,425 - INFO - OPENED LONG at 2063.0 | Stop loss: 2052.685 | Take profit: 2093.9449999999997 +2025-03-10 12:43:18,485 - INFO - CLOSED long at 2062.6 | PnL: -0.02% | $-0.41 +2025-03-10 12:43:18,485 - INFO - OPENED SHORT at 2062.6 | Stop loss: 2072.9129999999996 | Take profit: 2031.6609999999998 +2025-03-10 12:43:18,542 - INFO - CLOSED short at 2061.89 | PnL: 0.03% | $-0.22 +2025-03-10 12:43:18,543 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.5805499999997 | Take profit: 2092.8183499999996 +2025-03-10 12:43:18,651 - INFO - CLOSED long at 2060.7 | PnL: -0.06% | $-0.53 +2025-03-10 12:43:18,652 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0035 | Take profit: 2029.7894999999999 +2025-03-10 12:43:18,884 - INFO - CLOSED short at 2059.02 | PnL: 0.08% | $-0.06 +2025-03-10 12:43:18,942 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.1844499999997 | Take profit: 2028.0066499999998 +2025-03-10 12:43:18,999 - INFO - CLOSED short at 2059.96 | PnL: -0.05% | $-0.51 +2025-03-10 12:43:19,050 - INFO - OPENED SHORT at 2059.46 | Stop loss: 2069.7572999999998 | Take profit: 2028.5681 +2025-03-10 12:43:19,737 - INFO - CLOSED short at 2062.69 | PnL: -0.16% | $-0.86 +2025-03-10 12:43:19,737 - INFO - OPENED LONG at 2062.69 | Stop loss: 2052.37655 | Take profit: 2093.63035 +2025-03-10 12:43:19,832 - INFO - CLOSED long at 2066.36 | PnL: 0.18% | $0.26 +2025-03-10 12:43:19,833 - INFO - OPENED SHORT at 2066.36 | Stop loss: 2076.6918 | Take profit: 2035.3646 +2025-03-10 12:43:20,403 - INFO - CLOSED short at 2072.0 | PnL: -0.27% | $-1.23 +2025-03-10 12:43:20,403 - INFO - OPENED LONG at 2072.0 | Stop loss: 2061.64 | Take profit: 2103.08 +2025-03-10 12:43:21,254 - INFO - CLOSED long at 2071.49 | PnL: -0.02% | $-0.41 +2025-03-10 12:43:21,255 - INFO - OPENED SHORT at 2071.49 | Stop loss: 2081.8474499999998 | Take profit: 2040.4176499999999 +2025-03-10 12:43:21,303 - INFO - CLOSED short at 2069.87 | PnL: 0.08% | $-0.07 +2025-03-10 12:43:21,303 - INFO - OPENED LONG at 2069.87 | Stop loss: 2059.52065 | Take profit: 2100.9180499999998 +2025-03-10 12:43:21,508 - INFO - CLOSED long at 2065.66 | PnL: -0.20% | $-0.98 +2025-03-10 12:43:21,508 - INFO - OPENED SHORT at 2065.66 | Stop loss: 2075.9882999999995 | Take profit: 2034.6751 +2025-03-10 12:43:22,015 - INFO - CLOSED short at 2065.31 | PnL: 0.02% | $-0.27 +2025-03-10 12:43:22,016 - INFO - OPENED LONG at 2065.31 | Stop loss: 2054.9834499999997 | Take profit: 2096.2896499999997 +2025-03-10 12:43:22,064 - INFO - CLOSED long at 2066.8 | PnL: 0.07% | $-0.09 +2025-03-10 12:43:22,065 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.134 | Take profit: 2035.7980000000002 +2025-03-10 12:43:22,216 - INFO - CLOSED short at 2071.59 | PnL: -0.23% | $-1.06 +2025-03-10 12:43:22,268 - INFO - OPENED LONG at 2070.2 | Stop loss: 2059.8489999999997 | Take profit: 2101.2529999999997 +2025-03-10 12:43:22,469 - INFO - CLOSED long at 2070.7 | PnL: 0.02% | $-0.24 +2025-03-10 12:43:22,824 - INFO - OPENED LONG at 2070.67 | Stop loss: 2060.31665 | Take profit: 2101.7300499999997 +2025-03-10 12:43:23,133 - INFO - CLOSED long at 2073.27 | PnL: 0.13% | $0.08 +2025-03-10 12:43:23,180 - INFO - OPENED SHORT at 2073.99 | Stop loss: 2084.3599499999996 | Take profit: 2042.8801499999997 +2025-03-10 12:43:23,286 - INFO - CLOSED short at 2075.29 | PnL: -0.06% | $-0.51 +2025-03-10 12:43:23,288 - INFO - OPENED LONG at 2075.29 | Stop loss: 2064.9135499999998 | Take profit: 2106.4193499999997 +2025-03-10 12:43:23,480 - INFO - CLOSED long at 2072.09 | PnL: -0.15% | $-0.79 +2025-03-10 12:43:23,481 - INFO - OPENED SHORT at 2072.09 | Stop loss: 2082.45045 | Take profit: 2041.0086500000002 +2025-03-10 12:43:23,530 - INFO - CLOSED short at 2069.97 | PnL: 0.10% | $0.01 +2025-03-10 12:43:23,723 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.068 | Take profit: 2097.3959999999997 +2025-03-10 12:43:24,707 - INFO - CLOSED long at 2065.06 | PnL: -0.06% | $-0.51 +2025-03-10 12:43:24,708 - INFO - OPENED SHORT at 2065.06 | Stop loss: 2075.3853 | Take profit: 2034.0840999999998 +2025-03-10 12:43:25,028 - INFO - CLOSED short at 2060.2 | PnL: 0.24% | $0.41 +2025-03-10 12:43:25,236 - INFO - OPENED LONG at 2056.77 | Stop loss: 2046.48615 | Take profit: 2087.62155 +2025-03-10 12:43:25,335 - INFO - CLOSED long at 2049.21 | PnL: -0.37% | $-1.44 +2025-03-10 12:43:25,660 - INFO - OPENED LONG at 2057.89 | Stop loss: 2047.6005499999999 | Take profit: 2088.7583499999996 +2025-03-10 12:43:26,298 - INFO - CLOSED long at 2060.7 | PnL: 0.14% | $0.11 +2025-03-10 12:43:26,298 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0035 | Take profit: 2029.7894999999999 +2025-03-10 12:43:26,412 - INFO - CLOSED short at 2062.54 | PnL: -0.09% | $-0.57 +2025-03-10 12:43:26,413 - INFO - OPENED LONG at 2062.54 | Stop loss: 2052.2273 | Take profit: 2093.4781 +2025-03-10 12:43:26,463 - INFO - CLOSED long at 2065.72 | PnL: 0.15% | $0.16 +2025-03-10 12:43:26,464 - INFO - OPENED SHORT at 2065.72 | Stop loss: 2076.0485999999996 | Take profit: 2034.7341999999999 +2025-03-10 12:43:26,571 - INFO - CLOSED short at 2070.24 | PnL: -0.22% | $-0.96 +2025-03-10 12:43:26,572 - INFO - OPENED LONG at 2070.24 | Stop loss: 2059.8887999999997 | Take profit: 2101.2935999999995 +2025-03-10 12:43:27,133 - INFO - CLOSED long at 2077.61 | PnL: 0.36% | $0.76 +2025-03-10 12:43:27,134 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2087.9980499999997 | Take profit: 2046.44585 +2025-03-10 12:43:27,239 - INFO - STOP LOSS hit for short at 2087.9980499999997 | PnL: -0.50% | $-1.80 +2025-03-10 12:43:27,402 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2376999999997 | Take profit: 2107.4469 +2025-03-10 12:43:27,503 - INFO - CLOSED short at 2133.95 | PnL: 0.26% | $0.47 +2025-03-10 12:43:27,503 - INFO - OPENED LONG at 2133.95 | Stop loss: 2123.28025 | Take profit: 2165.9592499999994 +2025-03-10 12:43:27,720 - INFO - CLOSED long at 2142.68 | PnL: 0.41% | $0.91 +2025-03-10 12:43:27,720 - INFO - OPENED SHORT at 2142.68 | Stop loss: 2153.3933999999995 | Take profit: 2110.5398 +2025-03-10 12:43:27,769 - INFO - CLOSED short at 2140.01 | PnL: 0.12% | $0.07 +2025-03-10 12:43:27,770 - INFO - OPENED LONG at 2140.01 | Stop loss: 2129.3099500000003 | Take profit: 2172.11015 +2025-03-10 12:43:27,874 - INFO - CLOSED long at 2126.99 | PnL: -0.61% | $-2.12 +2025-03-10 12:43:27,875 - INFO - OPENED SHORT at 2126.99 | Stop loss: 2137.6249499999994 | Take profit: 2095.08515 +2025-03-10 12:43:28,030 - INFO - CLOSED short at 2121.09 | PnL: 0.28% | $0.52 +2025-03-10 12:43:28,030 - INFO - OPENED LONG at 2121.09 | Stop loss: 2110.48455 | Take profit: 2152.9063499999997 +2025-03-10 12:43:28,184 - INFO - CLOSED long at 2119.93 | PnL: -0.05% | $-0.45 +2025-03-10 12:43:28,235 - INFO - OPENED LONG at 2121.4 | Stop loss: 2110.793 | Take profit: 2153.221 +2025-03-10 12:43:28,281 - INFO - CLOSED long at 2118.52 | PnL: -0.14% | $-0.69 +2025-03-10 12:43:28,282 - INFO - OPENED SHORT at 2118.52 | Stop loss: 2129.1126 | Take profit: 2086.7422 +2025-03-10 12:43:28,386 - INFO - CLOSED short at 2119.07 | PnL: -0.03% | $-0.36 +2025-03-10 12:43:28,387 - INFO - OPENED LONG at 2119.07 | Stop loss: 2108.47465 | Take profit: 2150.85605 +2025-03-10 12:43:28,432 - INFO - CLOSED long at 2115.28 | PnL: -0.18% | $-0.80 +2025-03-10 12:43:28,433 - INFO - OPENED SHORT at 2115.28 | Stop loss: 2125.8564 | Take profit: 2083.5508 +2025-03-10 12:43:29,057 - INFO - CLOSED short at 2110.9 | PnL: 0.21% | $0.30 +2025-03-10 12:43:29,105 - INFO - OPENED SHORT at 2108.71 | Stop loss: 2119.25355 | Take profit: 2077.07935 +2025-03-10 12:43:29,347 - INFO - CLOSED short at 2100.5 | PnL: 0.39% | $0.82 +2025-03-10 12:43:29,348 - INFO - OPENED LONG at 2100.5 | Stop loss: 2089.9975 | Take profit: 2132.0074999999997 +2025-03-10 12:43:29,481 - INFO - CLOSED long at 2099.53 | PnL: -0.05% | $-0.42 +2025-03-10 12:43:29,482 - INFO - OPENED SHORT at 2099.53 | Stop loss: 2110.02765 | Take profit: 2068.0370500000004 +2025-03-10 12:43:29,807 - INFO - CLOSED short at 2100.69 | PnL: -0.06% | $-0.44 +2025-03-10 12:43:30,019 - INFO - OPENED LONG at 2103.86 | Stop loss: 2093.3407 | Take profit: 2135.4179 +2025-03-10 12:43:30,179 - INFO - CLOSED long at 2099.59 | PnL: -0.20% | $-0.86 +2025-03-10 12:43:30,179 - INFO - OPENED SHORT at 2099.59 | Stop loss: 2110.08795 | Take profit: 2068.0961500000003 +2025-03-10 12:43:30,391 - INFO - CLOSED short at 2093.46 | PnL: 0.29% | $0.54 +2025-03-10 12:43:30,497 - INFO - OPENED LONG at 2092.46 | Stop loss: 2081.9977 | Take profit: 2123.8469 +2025-03-10 12:43:30,648 - INFO - CLOSED long at 2094.08 | PnL: 0.08% | $-0.06 +2025-03-10 12:43:30,700 - INFO - OPENED SHORT at 2088.35 | Stop loss: 2098.79175 | Take profit: 2057.02475 +2025-03-10 12:43:30,792 - INFO - CLOSED short at 2088.44 | PnL: -0.00% | $-0.30 +2025-03-10 12:43:30,793 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.9978 | Take profit: 2119.7666 +2025-03-10 12:43:30,932 - INFO - CLOSED long at 2082.44 | PnL: -0.29% | $-1.09 +2025-03-10 12:43:30,932 - INFO - OPENED SHORT at 2082.44 | Stop loss: 2092.8522 | Take profit: 2051.2034 +2025-03-10 12:43:31,020 - INFO - CLOSED short at 2080.38 | PnL: 0.10% | $-0.00 +2025-03-10 12:43:31,065 - INFO - OPENED SHORT at 2081.25 | Stop loss: 2091.65625 | Take profit: 2050.03125 +2025-03-10 12:43:31,429 - INFO - CLOSED short at 2085.83 | PnL: -0.22% | $-0.89 +2025-03-10 12:43:31,429 - INFO - OPENED LONG at 2085.83 | Stop loss: 2075.40085 | Take profit: 2117.1174499999997 +2025-03-10 12:43:31,487 - INFO - CLOSED long at 2085.85 | PnL: 0.00% | $-0.27 +2025-03-10 12:43:31,488 - INFO - OPENED SHORT at 2085.85 | Stop loss: 2096.2792499999996 | Take profit: 2054.56225 +2025-03-10 12:43:31,753 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 20.8% in downtrends | Avg Win=$0.36, Avg Loss=$-0.61 +2025-03-10 12:43:31,754 - INFO - Episode 5: Reward=-64.86, Balance=$68.17, Win Rate=23.8%, Trades=84, Episode PnL=$-13.75, Total PnL=$-178.19, Max Drawdown=30.7%, Pred Accuracy=99.5% +2025-03-10 12:43:31,788 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:43:32,120 - INFO - OPENED SHORT at 2059.03 | Stop loss: 2069.32515 | Take profit: 2028.1445500000002 +2025-03-10 12:43:32,426 - INFO - CLOSED short at 2057.59 | PnL: 0.07% | $-0.12 +2025-03-10 12:43:32,479 - INFO - OPENED SHORT at 2057.9 | Stop loss: 2068.1895 | Take profit: 2027.0315 +2025-03-10 12:43:32,844 - INFO - CLOSED short at 2053.56 | PnL: 0.21% | $0.44 +2025-03-10 12:43:32,844 - INFO - OPENED LONG at 2053.56 | Stop loss: 2043.2921999999999 | Take profit: 2084.3633999999997 +2025-03-10 12:43:33,120 - INFO - CLOSED long at 2050.71 | PnL: -0.14% | $-0.96 +2025-03-10 12:43:33,121 - INFO - OPENED SHORT at 2050.71 | Stop loss: 2060.96355 | Take profit: 2019.94935 +2025-03-10 12:43:33,729 - INFO - CLOSED short at 2047.2 | PnL: 0.17% | $0.28 +2025-03-10 12:43:33,788 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.2199499999997 | Take profit: 2015.30015 +2025-03-10 12:43:33,836 - INFO - CLOSED short at 2045.99 | PnL: 0.00% | $-0.40 +2025-03-10 12:43:33,837 - INFO - OPENED LONG at 2045.99 | Stop loss: 2035.76005 | Take profit: 2076.67985 +2025-03-10 12:43:34,103 - INFO - CLOSED long at 2050.0 | PnL: 0.20% | $0.38 +2025-03-10 12:43:34,243 - INFO - OPENED SHORT at 2051.11 | Stop loss: 2061.36555 | Take profit: 2020.34335 +2025-03-10 12:43:34,298 - INFO - CLOSED short at 2053.26 | PnL: -0.10% | $-0.82 +2025-03-10 12:43:34,398 - INFO - OPENED SHORT at 2052.3 | Stop loss: 2062.5615 | Take profit: 2021.5155000000002 +2025-03-10 12:43:34,780 - INFO - CLOSED short at 2061.49 | PnL: -0.45% | $-2.17 +2025-03-10 12:43:34,780 - INFO - OPENED LONG at 2061.49 | Stop loss: 2051.18255 | Take profit: 2092.4123499999996 +2025-03-10 12:43:34,951 - INFO - CLOSED long at 2063.59 | PnL: 0.10% | $0.01 +2025-03-10 12:43:35,368 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.57555 | Take profit: 2093.83335 +2025-03-10 12:43:35,420 - INFO - CLOSED long at 2060.31 | PnL: -0.13% | $-0.87 +2025-03-10 12:43:35,620 - INFO - OPENED SHORT at 2057.94 | Stop loss: 2068.2297 | Take profit: 2027.0709 +2025-03-10 12:43:35,932 - INFO - STOP LOSS hit for short at 2068.2297 | PnL: -0.50% | $-2.30 +2025-03-10 12:43:36,234 - INFO - OPENED SHORT at 2069.6 | Stop loss: 2079.948 | Take profit: 2038.5559999999998 +2025-03-10 12:43:36,490 - INFO - CLOSED short at 2070.26 | PnL: -0.03% | $-0.49 +2025-03-10 12:43:36,492 - INFO - OPENED LONG at 2070.26 | Stop loss: 2059.9087000000004 | Take profit: 2101.3139 +2025-03-10 12:43:36,591 - INFO - CLOSED long at 2073.73 | PnL: 0.17% | $0.25 +2025-03-10 12:43:37,076 - INFO - OPENED SHORT at 2070.28 | Stop loss: 2080.6313999999998 | Take profit: 2039.2258000000002 +2025-03-10 12:43:37,642 - INFO - CLOSED short at 2066.39 | PnL: 0.19% | $0.33 +2025-03-10 12:43:37,685 - INFO - OPENED SHORT at 2065.99 | Stop loss: 2076.3199499999996 | Take profit: 2035.0001499999998 +2025-03-10 12:43:38,213 - INFO - CLOSED short at 2069.96 | PnL: -0.19% | $-1.09 +2025-03-10 12:43:38,769 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.0480000000002 | Take profit: 2101.4559999999997 +2025-03-10 12:43:38,959 - INFO - CLOSED long at 2068.32 | PnL: -0.10% | $-0.74 +2025-03-10 12:43:38,962 - INFO - OPENED SHORT at 2068.32 | Stop loss: 2078.6616 | Take profit: 2037.2952 +2025-03-10 12:43:39,413 - INFO - CLOSED short at 2068.58 | PnL: -0.01% | $-0.41 +2025-03-10 12:43:39,512 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.6866999999997 | Take profit: 2038.2999000000002 +2025-03-10 12:43:39,614 - INFO - CLOSED short at 2067.59 | PnL: 0.08% | $-0.06 +2025-03-10 12:43:39,614 - INFO - OPENED LONG at 2067.59 | Stop loss: 2057.25205 | Take profit: 2098.60385 +2025-03-10 12:43:39,761 - INFO - CLOSED long at 2071.59 | PnL: 0.19% | $0.34 +2025-03-10 12:43:39,761 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.9479499999998 | Take profit: 2040.5161500000002 +2025-03-10 12:43:39,864 - INFO - CLOSED short at 2070.4 | PnL: 0.06% | $-0.16 +2025-03-10 12:43:39,864 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.0480000000002 | Take profit: 2101.4559999999997 +2025-03-10 12:43:39,909 - INFO - CLOSED long at 2070.73 | PnL: 0.02% | $-0.31 +2025-03-10 12:43:39,909 - INFO - OPENED SHORT at 2070.73 | Stop loss: 2081.0836499999996 | Take profit: 2039.66905 +2025-03-10 12:43:39,955 - INFO - CLOSED short at 2068.5 | PnL: 0.11% | $0.03 +2025-03-10 12:43:39,956 - INFO - OPENED LONG at 2068.5 | Stop loss: 2058.1575 | Take profit: 2099.5274999999997 +2025-03-10 12:43:40,011 - INFO - CLOSED long at 2068.69 | PnL: 0.01% | $-0.33 +2025-03-10 12:43:40,123 - INFO - OPENED SHORT at 2067.11 | Stop loss: 2077.44555 | Take profit: 2036.10335 +2025-03-10 12:43:40,524 - INFO - CLOSED short at 2067.8 | PnL: -0.03% | $-0.48 +2025-03-10 12:43:40,524 - INFO - OPENED LONG at 2067.8 | Stop loss: 2057.4610000000002 | Take profit: 2098.817 +2025-03-10 12:43:40,581 - INFO - CLOSED long at 2068.18 | PnL: 0.02% | $-0.30 +2025-03-10 12:43:40,582 - INFO - OPENED SHORT at 2068.18 | Stop loss: 2078.5208999999995 | Take profit: 2037.1572999999999 +2025-03-10 12:43:40,629 - INFO - CLOSED short at 2065.69 | PnL: 0.12% | $0.07 +2025-03-10 12:43:40,629 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.36155 | Take profit: 2096.67535 +2025-03-10 12:43:41,001 - INFO - CLOSED long at 2061.78 | PnL: -0.19% | $-1.04 +2025-03-10 12:43:41,245 - INFO - OPENED LONG at 2066.24 | Stop loss: 2055.9087999999997 | Take profit: 2097.2335999999996 +2025-03-10 12:43:41,341 - INFO - CLOSED long at 2065.54 | PnL: -0.03% | $-0.48 +2025-03-10 12:43:41,385 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.42045 | Take profit: 2035.0986500000001 +2025-03-10 12:43:41,624 - INFO - CLOSED short at 2064.5 | PnL: 0.08% | $-0.08 +2025-03-10 12:43:41,625 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.1775 | Take profit: 2095.4674999999997 +2025-03-10 12:43:42,201 - INFO - CLOSED long at 2060.3 | PnL: -0.20% | $-1.07 +2025-03-10 12:43:42,202 - INFO - OPENED SHORT at 2060.3 | Stop loss: 2070.6014999999998 | Take profit: 2029.3955 +2025-03-10 12:43:42,387 - INFO - CLOSED short at 2065.36 | PnL: -0.25% | $-1.21 +2025-03-10 12:43:42,387 - INFO - OPENED LONG at 2065.36 | Stop loss: 2055.0332000000003 | Take profit: 2096.3404 +2025-03-10 12:43:42,771 - INFO - CLOSED long at 2061.89 | PnL: -0.17% | $-0.92 +2025-03-10 12:43:42,860 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3965 | Take profit: 2091.6105 +2025-03-10 12:43:43,007 - INFO - CLOSED long at 2059.16 | PnL: -0.07% | $-0.60 +2025-03-10 12:43:43,008 - INFO - OPENED SHORT at 2059.16 | Stop loss: 2069.4557999999997 | Take profit: 2028.2725999999998 +2025-03-10 12:43:43,146 - INFO - CLOSED short at 2059.96 | PnL: -0.04% | $-0.47 +2025-03-10 12:43:43,146 - INFO - OPENED LONG at 2059.96 | Stop loss: 2049.6602 | Take profit: 2090.8594 +2025-03-10 12:43:43,328 - INFO - CLOSED long at 2056.28 | PnL: -0.18% | $-0.94 +2025-03-10 12:43:43,470 - INFO - OPENED SHORT at 2054.83 | Stop loss: 2065.1041499999997 | Take profit: 2024.0075499999998 +2025-03-10 12:43:43,652 - INFO - CLOSED short at 2061.66 | PnL: -0.33% | $-1.44 +2025-03-10 12:43:44,240 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.6666499999997 | Take profit: 2036.3200499999998 +2025-03-10 12:43:44,285 - INFO - CLOSED short at 2067.01 | PnL: 0.02% | $-0.28 +2025-03-10 12:43:45,339 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.6666499999997 | Take profit: 2036.3200499999998 +2025-03-10 12:43:45,474 - INFO - CLOSED short at 2065.66 | PnL: 0.08% | $-0.06 +2025-03-10 12:43:45,475 - INFO - OPENED LONG at 2065.66 | Stop loss: 2055.3316999999997 | Take profit: 2096.6449 +2025-03-10 12:43:45,527 - INFO - CLOSED long at 2063.95 | PnL: -0.08% | $-0.60 +2025-03-10 12:43:46,321 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.5455 | Take profit: 2101.9635 +2025-03-10 12:43:46,415 - INFO - CLOSED long at 2070.7 | PnL: -0.01% | $-0.36 +2025-03-10 12:43:46,416 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.0534999999995 | Take profit: 2039.6394999999998 +2025-03-10 12:43:46,567 - INFO - CLOSED short at 2070.61 | PnL: 0.00% | $-0.31 +2025-03-10 12:43:46,612 - INFO - OPENED LONG at 2071.99 | Stop loss: 2061.6300499999998 | Take profit: 2103.0698499999994 +2025-03-10 12:43:46,893 - INFO - CLOSED long at 2074.37 | PnL: 0.11% | $0.05 +2025-03-10 12:43:46,893 - INFO - OPENED SHORT at 2074.37 | Stop loss: 2084.74185 | Take profit: 2043.25445 +2025-03-10 12:43:47,232 - INFO - CLOSED short at 2076.9 | PnL: -0.12% | $-0.71 +2025-03-10 12:43:47,233 - INFO - OPENED LONG at 2076.9 | Stop loss: 2066.5155 | Take profit: 2108.0535 +2025-03-10 12:43:47,638 - INFO - STOP LOSS hit for long at 2066.5155 | PnL: -0.50% | $-1.91 +2025-03-10 12:43:47,684 - INFO - OPENED LONG at 2066.89 | Stop loss: 2056.55555 | Take profit: 2097.89335 +2025-03-10 12:43:48,003 - INFO - CLOSED long at 2070.1 | PnL: 0.16% | $0.17 +2025-03-10 12:43:48,003 - INFO - OPENED SHORT at 2070.1 | Stop loss: 2080.4504999999995 | Take profit: 2039.0484999999999 +2025-03-10 12:43:48,099 - INFO - CLOSED short at 2065.5 | PnL: 0.22% | $0.38 +2025-03-10 12:43:48,148 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.0284999999994 | Take profit: 2034.7144999999998 +2025-03-10 12:43:48,674 - INFO - CLOSED short at 2066.33 | PnL: -0.03% | $-0.41 +2025-03-10 12:43:49,093 - INFO - OPENED SHORT at 2049.21 | Stop loss: 2059.45605 | Take profit: 2018.47185 +2025-03-10 12:43:49,366 - INFO - CLOSED short at 2057.89 | PnL: -0.42% | $-1.63 +2025-03-10 12:43:49,367 - INFO - OPENED LONG at 2057.89 | Stop loss: 2047.6005499999999 | Take profit: 2088.7583499999996 +2025-03-10 12:43:49,419 - INFO - CLOSED long at 2062.83 | PnL: 0.24% | $0.43 +2025-03-10 12:43:49,756 - INFO - OPENED SHORT at 2067.49 | Stop loss: 2077.8274499999998 | Take profit: 2036.4776499999998 +2025-03-10 12:43:50,255 - INFO - CLOSED short at 2070.24 | PnL: -0.13% | $-0.71 +2025-03-10 12:43:50,255 - INFO - OPENED LONG at 2070.24 | Stop loss: 2059.8887999999997 | Take profit: 2101.2935999999995 +2025-03-10 12:43:50,345 - INFO - CLOSED long at 2069.81 | PnL: -0.02% | $-0.37 +2025-03-10 12:43:50,345 - INFO - OPENED SHORT at 2069.81 | Stop loss: 2080.1590499999998 | Take profit: 2038.7628499999998 +2025-03-10 12:43:50,591 - INFO - CLOSED short at 2071.89 | PnL: -0.10% | $-0.61 +2025-03-10 12:43:50,591 - INFO - OPENED LONG at 2071.89 | Stop loss: 2061.53055 | Take profit: 2102.9683499999996 +2025-03-10 12:43:50,731 - INFO - CLOSED long at 2076.08 | PnL: 0.20% | $0.31 +2025-03-10 12:43:50,732 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.4603999999995 | Take profit: 2044.9388 +2025-03-10 12:43:50,878 - INFO - STOP LOSS hit for short at 2086.4603999999995 | PnL: -0.50% | $-1.81 +2025-03-10 12:43:51,014 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2376999999997 | Take profit: 2107.4469 +2025-03-10 12:43:51,146 - INFO - CLOSED short at 2137.59 | PnL: 0.09% | $-0.03 +2025-03-10 12:43:51,148 - INFO - OPENED LONG at 2137.59 | Stop loss: 2126.90205 | Take profit: 2169.65385 +2025-03-10 12:43:51,427 - INFO - CLOSED long at 2126.99 | PnL: -0.50% | $-1.75 +2025-03-10 12:43:51,428 - INFO - OPENED SHORT at 2126.99 | Stop loss: 2137.6249499999994 | Take profit: 2095.08515 +2025-03-10 12:43:51,471 - INFO - CLOSED short at 2127.3 | PnL: -0.01% | $-0.33 +2025-03-10 12:43:51,472 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.6635 | Take profit: 2159.2095 +2025-03-10 12:43:51,618 - INFO - CLOSED long at 2120.15 | PnL: -0.34% | $-1.24 +2025-03-10 12:43:51,940 - INFO - OPENED LONG at 2115.28 | Stop loss: 2104.7036000000003 | Take profit: 2147.0092 +2025-03-10 12:43:51,983 - INFO - CLOSED long at 2107.43 | PnL: -0.37% | $-1.32 +2025-03-10 12:43:51,983 - INFO - OPENED SHORT at 2107.43 | Stop loss: 2117.9671499999995 | Take profit: 2075.81855 +2025-03-10 12:43:52,369 - INFO - STOP LOSS hit for short at 2117.9671499999995 | PnL: -0.50% | $-1.65 +2025-03-10 12:43:52,418 - INFO - OPENED LONG at 2116.48 | Stop loss: 2105.8976 | Take profit: 2148.2272 +2025-03-10 12:43:52,515 - INFO - CLOSED long at 2110.9 | PnL: -0.26% | $-0.98 +2025-03-10 12:43:52,558 - INFO - OPENED SHORT at 2108.71 | Stop loss: 2119.25355 | Take profit: 2077.07935 +2025-03-10 12:43:52,651 - INFO - CLOSED short at 2108.06 | PnL: 0.03% | $-0.18 +2025-03-10 12:43:52,652 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.5197 | Take profit: 2139.6809 +2025-03-10 12:43:52,807 - INFO - STOP LOSS hit for long at 2097.5197 | PnL: -0.50% | $-1.58 +2025-03-10 12:43:53,473 - INFO - OPENED SHORT at 2099.59 | Stop loss: 2110.08795 | Take profit: 2068.0961500000003 +2025-03-10 12:43:53,515 - INFO - CLOSED short at 2100.02 | PnL: -0.02% | $-0.31 +2025-03-10 12:43:53,886 - INFO - OPENED LONG at 2094.08 | Stop loss: 2083.6096 | Take profit: 2125.4912 +2025-03-10 12:43:53,981 - INFO - CLOSED long at 2083.28 | PnL: -0.52% | $-1.58 +2025-03-10 12:43:54,645 - INFO - OPENED SHORT at 2085.83 | Stop loss: 2096.25915 | Take profit: 2054.54255 +2025-03-10 12:43:54,686 - INFO - CLOSED short at 2085.85 | PnL: -0.00% | $-0.25 +2025-03-10 12:43:54,686 - INFO - OPENED LONG at 2085.85 | Stop loss: 2075.4207499999998 | Take profit: 2117.13775 +2025-03-10 12:43:54,826 - INFO - CLOSED long at 2088.1 | PnL: 0.11% | $0.02 +2025-03-10 12:43:54,827 - INFO - OPENED SHORT at 2088.1 | Stop loss: 2098.5404999999996 | Take profit: 2056.7785 +2025-03-10 12:43:54,919 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 11.5% in downtrends | Avg Win=$0.23, Avg Loss=$-0.79 +2025-03-10 12:43:54,921 - INFO - Episode 6: Reward=-46.24, Balance=$62.27, Win Rate=22.4%, Trades=67, Episode PnL=$-21.36, Total PnL=$-215.92, Max Drawdown=37.5%, Pred Accuracy=99.3% +2025-03-10 12:43:54,948 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:43:55,282 - INFO - OPENED LONG at 2059.4 | Stop loss: 2049.103 | Take profit: 2090.2909999999997 +2025-03-10 12:43:55,687 - INFO - CLOSED long at 2058.51 | PnL: -0.04% | $-0.57 +2025-03-10 12:43:55,732 - INFO - OPENED LONG at 2055.2 | Stop loss: 2044.9239999999998 | Take profit: 2086.028 +2025-03-10 12:43:55,823 - INFO - CLOSED long at 2056.4 | PnL: 0.06% | $-0.17 +2025-03-10 12:43:56,288 - INFO - OPENED SHORT at 2049.49 | Stop loss: 2059.7374499999996 | Take profit: 2018.7476499999998 +2025-03-10 12:43:56,672 - INFO - CLOSED short at 2046.58 | PnL: 0.14% | $0.17 +2025-03-10 12:43:56,801 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.2199499999997 | Take profit: 2015.30015 +2025-03-10 12:43:56,850 - INFO - CLOSED short at 2045.99 | PnL: 0.00% | $-0.40 +2025-03-10 12:43:56,942 - INFO - OPENED SHORT at 2048.13 | Stop loss: 2058.37065 | Take profit: 2017.40805 +2025-03-10 12:43:56,982 - INFO - CLOSED short at 2047.59 | PnL: 0.03% | $-0.29 +2025-03-10 12:43:56,983 - INFO - OPENED LONG at 2047.59 | Stop loss: 2037.35205 | Take profit: 2078.30385 +2025-03-10 12:43:57,026 - INFO - CLOSED long at 2048.51 | PnL: 0.04% | $-0.22 +2025-03-10 12:43:57,076 - INFO - OPENED LONG at 2050.0 | Stop loss: 2039.75 | Take profit: 2080.75 +2025-03-10 12:43:57,353 - INFO - CLOSED long at 2052.3 | PnL: 0.11% | $0.05 +2025-03-10 12:43:57,779 - INFO - OPENED LONG at 2064.61 | Stop loss: 2054.28695 | Take profit: 2095.57915 +2025-03-10 12:43:57,822 - INFO - CLOSED long at 2063.59 | PnL: -0.05% | $-0.59 +2025-03-10 12:43:58,003 - INFO - OPENED LONG at 2060.99 | Stop loss: 2050.6850499999996 | Take profit: 2091.9048499999994 +2025-03-10 12:43:58,139 - INFO - CLOSED long at 2061.89 | PnL: 0.04% | $-0.22 +2025-03-10 12:43:58,139 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.1994499999996 | Take profit: 2030.9616499999997 +2025-03-10 12:43:58,185 - INFO - CLOSED short at 2062.89 | PnL: -0.05% | $-0.58 +2025-03-10 12:43:58,233 - INFO - OPENED LONG at 2060.31 | Stop loss: 2050.00845 | Take profit: 2091.21465 +2025-03-10 12:43:58,421 - INFO - CLOSED long at 2057.94 | PnL: -0.12% | $-0.84 +2025-03-10 12:43:58,421 - INFO - OPENED SHORT at 2057.94 | Stop loss: 2068.2297 | Take profit: 2027.0709 +2025-03-10 12:43:58,698 - INFO - CLOSED short at 2070.58 | PnL: -0.61% | $-2.75 +2025-03-10 12:43:58,699 - INFO - OPENED LONG at 2070.58 | Stop loss: 2060.2271 | Take profit: 2101.6386999999995 +2025-03-10 12:43:58,830 - INFO - CLOSED long at 2067.89 | PnL: -0.13% | $-0.86 +2025-03-10 12:43:59,166 - INFO - OPENED LONG at 2067.69 | Stop loss: 2057.35155 | Take profit: 2098.7053499999997 +2025-03-10 12:43:59,211 - INFO - CLOSED long at 2070.26 | PnL: 0.12% | $0.09 +2025-03-10 12:43:59,212 - INFO - OPENED SHORT at 2070.26 | Stop loss: 2080.6113 | Take profit: 2039.2061 +2025-03-10 12:43:59,741 - INFO - CLOSED short at 2070.79 | PnL: -0.03% | $-0.47 +2025-03-10 12:44:00,154 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.456 | Take profit: 2099.832 +2025-03-10 12:44:00,399 - INFO - CLOSED long at 2065.99 | PnL: -0.14% | $-0.87 +2025-03-10 12:44:00,724 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.5555 | Take profit: 2099.9335 +2025-03-10 12:44:01,163 - INFO - CLOSED long at 2072.75 | PnL: 0.19% | $0.32 +2025-03-10 12:44:01,164 - INFO - OPENED SHORT at 2072.75 | Stop loss: 2083.11375 | Take profit: 2041.65875 +2025-03-10 12:44:01,207 - INFO - CLOSED short at 2073.11 | PnL: -0.02% | $-0.43 +2025-03-10 12:44:01,208 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.74445 | Take profit: 2104.20665 +2025-03-10 12:44:01,348 - INFO - CLOSED long at 2074.29 | PnL: 0.06% | $-0.16 +2025-03-10 12:44:01,729 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.3349999999996 | Take profit: 2035.995 +2025-03-10 12:44:02,104 - INFO - CLOSED short at 2068.58 | PnL: -0.08% | $-0.64 +2025-03-10 12:44:02,104 - INFO - OPENED LONG at 2068.58 | Stop loss: 2058.2371 | Take profit: 2099.6086999999998 +2025-03-10 12:44:02,298 - INFO - CLOSED long at 2067.59 | PnL: -0.05% | $-0.54 +2025-03-10 12:44:02,483 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3464999999997 | Take profit: 2101.7604999999994 +2025-03-10 12:44:02,859 - INFO - CLOSED long at 2066.4 | PnL: -0.21% | $-1.11 +2025-03-10 12:44:03,133 - INFO - OPENED SHORT at 2067.8 | Stop loss: 2078.139 | Take profit: 2036.7830000000001 +2025-03-10 12:44:03,230 - INFO - CLOSED short at 2065.69 | PnL: 0.10% | $0.01 +2025-03-10 12:44:03,231 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.36155 | Take profit: 2096.67535 +2025-03-10 12:44:03,462 - INFO - CLOSED long at 2065.26 | PnL: -0.02% | $-0.43 +2025-03-10 12:44:03,463 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.5863 | Take profit: 2034.2811000000002 +2025-03-10 12:44:03,601 - INFO - CLOSED short at 2061.78 | PnL: 0.17% | $0.24 +2025-03-10 12:44:03,644 - INFO - OPENED SHORT at 2059.59 | Stop loss: 2069.88795 | Take profit: 2028.6961500000002 +2025-03-10 12:44:04,205 - INFO - CLOSED short at 2064.5 | PnL: -0.24% | $-1.20 +2025-03-10 12:44:04,205 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.1775 | Take profit: 2095.4674999999997 +2025-03-10 12:44:04,249 - INFO - CLOSED long at 2063.5 | PnL: -0.05% | $-0.52 +2025-03-10 12:44:04,250 - INFO - OPENED SHORT at 2063.5 | Stop loss: 2073.8174999999997 | Take profit: 2032.5475 +2025-03-10 12:44:04,388 - INFO - CLOSED short at 2060.65 | PnL: 0.14% | $0.13 +2025-03-10 12:44:05,522 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3965 | Take profit: 2091.6105 +2025-03-10 12:44:05,567 - INFO - CLOSED long at 2061.09 | PnL: 0.02% | $-0.28 +2025-03-10 12:44:05,826 - INFO - OPENED LONG at 2059.46 | Stop loss: 2049.1627 | Take profit: 2090.3518999999997 +2025-03-10 12:44:05,933 - INFO - CLOSED long at 2058.28 | PnL: -0.06% | $-0.55 +2025-03-10 12:44:05,934 - INFO - OPENED SHORT at 2058.28 | Stop loss: 2068.5714 | Take profit: 2027.4058000000002 +2025-03-10 12:44:06,201 - INFO - CLOSED short at 2056.71 | PnL: 0.08% | $-0.08 +2025-03-10 12:44:06,202 - INFO - OPENED LONG at 2056.71 | Stop loss: 2046.42645 | Take profit: 2087.56065 +2025-03-10 12:44:06,298 - INFO - CLOSED long at 2059.8 | PnL: 0.15% | $0.17 +2025-03-10 12:44:06,300 - INFO - OPENED SHORT at 2059.8 | Stop loss: 2070.099 | Take profit: 2028.9030000000002 +2025-03-10 12:44:06,344 - INFO - CLOSED short at 2061.66 | PnL: -0.09% | $-0.66 +2025-03-10 12:44:06,443 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.292 | Take profit: 2092.524 +2025-03-10 12:44:06,489 - INFO - CLOSED long at 2061.3 | PnL: -0.01% | $-0.39 +2025-03-10 12:44:06,971 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.9933499999997 | Take profit: 2098.3399499999996 +2025-03-10 12:44:07,263 - INFO - CLOSED long at 2078.01 | PnL: 0.52% | $1.42 +2025-03-10 12:44:07,263 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.40005 | Take profit: 2046.8398500000003 +2025-03-10 12:44:07,309 - INFO - CLOSED short at 2075.01 | PnL: 0.14% | $0.15 +2025-03-10 12:44:07,310 - INFO - OPENED LONG at 2075.01 | Stop loss: 2064.63495 | Take profit: 2106.13515 +2025-03-10 12:44:07,365 - INFO - CLOSED long at 2072.6 | PnL: -0.12% | $-0.75 +2025-03-10 12:44:07,366 - INFO - OPENED SHORT at 2072.6 | Stop loss: 2082.9629999999997 | Take profit: 2041.511 +2025-03-10 12:44:07,559 - INFO - CLOSED short at 2073.23 | PnL: -0.03% | $-0.45 +2025-03-10 12:44:07,560 - INFO - OPENED LONG at 2073.23 | Stop loss: 2062.86385 | Take profit: 2104.32845 +2025-03-10 12:44:07,712 - INFO - CLOSED long at 2068.39 | PnL: -0.23% | $-1.14 +2025-03-10 12:44:08,915 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.24705 | Take profit: 2099.61885 +2025-03-10 12:44:09,104 - INFO - CLOSED long at 2070.9 | PnL: 0.11% | $0.04 +2025-03-10 12:44:09,336 - INFO - OPENED LONG at 2070.61 | Stop loss: 2060.25695 | Take profit: 2101.6691499999997 +2025-03-10 12:44:09,479 - INFO - CLOSED long at 2068.67 | PnL: -0.09% | $-0.66 +2025-03-10 12:44:09,523 - INFO - OPENED SHORT at 2070.67 | Stop loss: 2081.02335 | Take profit: 2039.60995 +2025-03-10 12:44:09,761 - INFO - CLOSED short at 2074.35 | PnL: -0.18% | $-0.93 +2025-03-10 12:44:09,762 - INFO - OPENED LONG at 2074.35 | Stop loss: 2063.97825 | Take profit: 2105.4652499999997 +2025-03-10 12:44:09,916 - INFO - CLOSED long at 2075.32 | PnL: 0.05% | $-0.18 +2025-03-10 12:44:10,069 - INFO - OPENED LONG at 2075.61 | Stop loss: 2065.2319500000003 | Take profit: 2106.74415 +2025-03-10 12:44:10,406 - INFO - CLOSED long at 2066.4 | PnL: -0.44% | $-1.80 +2025-03-10 12:44:10,497 - INFO - OPENED SHORT at 2067.88 | Stop loss: 2078.2194 | Take profit: 2036.8618000000001 +2025-03-10 12:44:11,031 - INFO - CLOSED short at 2066.09 | PnL: 0.09% | $-0.04 +2025-03-10 12:44:11,031 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.75955 | Take profit: 2097.08135 +2025-03-10 12:44:11,074 - INFO - CLOSED long at 2063.39 | PnL: -0.13% | $-0.75 +2025-03-10 12:44:11,075 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.70695 | Take profit: 2032.43915 +2025-03-10 12:44:11,436 - INFO - CLOSED short at 2066.33 | PnL: -0.14% | $-0.78 +2025-03-10 12:44:11,437 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.99835 | Take profit: 2097.3249499999997 +2025-03-10 12:44:11,542 - INFO - CLOSED long at 2060.7 | PnL: -0.27% | $-1.18 +2025-03-10 12:44:11,543 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0035 | Take profit: 2029.7894999999999 +2025-03-10 12:44:11,634 - INFO - CLOSED short at 2059.2 | PnL: 0.07% | $-0.09 +2025-03-10 12:44:11,635 - INFO - OPENED LONG at 2059.2 | Stop loss: 2048.904 | Take profit: 2090.0879999999997 +2025-03-10 12:44:11,727 - INFO - CLOSED long at 2058.65 | PnL: -0.03% | $-0.40 +2025-03-10 12:44:11,729 - INFO - OPENED SHORT at 2058.65 | Stop loss: 2068.94325 | Take profit: 2027.77025 +2025-03-10 12:44:11,824 - INFO - CLOSED short at 2053.01 | PnL: 0.27% | $0.54 +2025-03-10 12:44:12,387 - INFO - OPENED SHORT at 2062.55 | Stop loss: 2072.86275 | Take profit: 2031.6117500000003 +2025-03-10 12:44:12,436 - INFO - CLOSED short at 2065.12 | PnL: -0.12% | $-0.70 +2025-03-10 12:44:12,485 - INFO - OPENED LONG at 2068.33 | Stop loss: 2057.98835 | Take profit: 2099.35495 +2025-03-10 12:44:13,482 - INFO - CLOSED long at 2074.9 | PnL: 0.32% | $0.68 +2025-03-10 12:44:13,483 - INFO - OPENED SHORT at 2074.9 | Stop loss: 2085.2745 | Take profit: 2043.7765000000002 +2025-03-10 12:44:13,625 - INFO - CLOSED short at 2085.56 | PnL: -0.51% | $-1.92 +2025-03-10 12:44:13,626 - INFO - OPENED LONG at 2085.56 | Stop loss: 2075.1322 | Take profit: 2116.8433999999997 +2025-03-10 12:44:13,723 - INFO - CLOSED long at 2103.02 | PnL: 0.84% | $2.25 +2025-03-10 12:44:13,725 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.5350999999996 | Take profit: 2071.4746999999998 +2025-03-10 12:44:13,768 - INFO - CLOSED short at 2130.7 | PnL: -1.32% | $-4.46 +2025-03-10 12:44:13,858 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.1211000000003 | Take profit: 2163.7567 +2025-03-10 12:44:13,997 - INFO - CLOSED long at 2141.41 | PnL: 0.45% | $1.04 +2025-03-10 12:44:14,131 - INFO - OPENED SHORT at 2140.01 | Stop loss: 2150.71005 | Take profit: 2107.90985 +2025-03-10 12:44:14,261 - INFO - CLOSED short at 2127.3 | PnL: 0.59% | $1.49 +2025-03-10 12:44:14,356 - INFO - OPENED SHORT at 2121.09 | Stop loss: 2131.6954499999997 | Take profit: 2089.27365 +2025-03-10 12:44:14,554 - INFO - CLOSED short at 2121.4 | PnL: -0.01% | $-0.35 +2025-03-10 12:44:14,555 - INFO - OPENED LONG at 2121.4 | Stop loss: 2110.793 | Take profit: 2153.221 +2025-03-10 12:44:14,779 - INFO - STOP LOSS hit for long at 2110.793 | PnL: -0.50% | $-1.83 +2025-03-10 12:44:14,921 - INFO - OPENED LONG at 2112.09 | Stop loss: 2101.52955 | Take profit: 2143.77135 +2025-03-10 12:44:14,965 - INFO - CLOSED long at 2112.95 | PnL: 0.04% | $-0.18 +2025-03-10 12:44:14,965 - INFO - OPENED SHORT at 2112.95 | Stop loss: 2123.5147499999994 | Take profit: 2081.25575 +2025-03-10 12:44:15,550 - INFO - CLOSED short at 2100.5 | PnL: 0.59% | $1.46 +2025-03-10 12:44:15,550 - INFO - OPENED LONG at 2100.5 | Stop loss: 2089.9975 | Take profit: 2132.0074999999997 +2025-03-10 12:44:15,748 - INFO - CLOSED long at 2102.19 | PnL: 0.08% | $-0.06 +2025-03-10 12:44:15,789 - INFO - OPENED LONG at 2102.29 | Stop loss: 2091.77855 | Take profit: 2133.82435 +2025-03-10 12:44:16,356 - INFO - CLOSED long at 2098.39 | PnL: -0.19% | $-0.87 +2025-03-10 12:44:16,357 - INFO - OPENED SHORT at 2098.39 | Stop loss: 2108.8819499999995 | Take profit: 2066.91415 +2025-03-10 12:44:17,098 - INFO - CLOSED short at 2081.49 | PnL: 0.81% | $2.11 +2025-03-10 12:44:17,196 - INFO - OPENED SHORT at 2081.25 | Stop loss: 2091.65625 | Take profit: 2050.03125 +2025-03-10 12:44:17,388 - INFO - CLOSED short at 2086.57 | PnL: -0.26% | $-1.10 +2025-03-10 12:44:17,735 - INFO - OPENED SHORT at 2088.1 | Stop loss: 2098.5404999999996 | Take profit: 2056.7785 +2025-03-10 12:44:17,782 - INFO - CLOSED short at 2089.96 | PnL: -0.09% | $-0.57 +2025-03-10 12:44:17,783 - INFO - OPENED LONG at 2089.96 | Stop loss: 2079.5102 | Take profit: 2121.3093999999996 +2025-03-10 12:44:17,843 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 16.7% in downtrends | Avg Win=$0.69, Avg Loss=$-0.76 +2025-03-10 12:44:17,844 - INFO - Episode 7: Reward=-49.89, Balance=$75.36, Win Rate=26.9%, Trades=67, Episode PnL=$-13.97, Total PnL=$-240.56, Max Drawdown=25.8%, Pred Accuracy=99.5% +2025-03-10 12:44:17,880 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:44:18,407 - INFO - OPENED SHORT at 2057.52 | Stop loss: 2067.8075999999996 | Take profit: 2026.6571999999999 +2025-03-10 12:44:18,507 - INFO - CLOSED short at 2057.59 | PnL: -0.00% | $-0.41 +2025-03-10 12:44:18,509 - INFO - OPENED LONG at 2057.59 | Stop loss: 2047.3020500000002 | Take profit: 2088.45385 +2025-03-10 12:44:18,913 - INFO - CLOSED long at 2053.56 | PnL: -0.20% | $-1.18 +2025-03-10 12:44:18,913 - INFO - OPENED SHORT at 2053.56 | Stop loss: 2063.8277999999996 | Take profit: 2022.7566 +2025-03-10 12:44:19,208 - INFO - CLOSED short at 2050.71 | PnL: 0.14% | $0.15 +2025-03-10 12:44:19,209 - INFO - OPENED LONG at 2050.71 | Stop loss: 2040.4564500000001 | Take profit: 2081.4706499999998 +2025-03-10 12:44:19,409 - INFO - CLOSED long at 2049.6 | PnL: -0.05% | $-0.61 +2025-03-10 12:44:19,855 - INFO - OPENED LONG at 2045.99 | Stop loss: 2035.76005 | Take profit: 2076.67985 +2025-03-10 12:44:20,235 - INFO - CLOSED long at 2050.24 | PnL: 0.21% | $0.42 +2025-03-10 12:44:20,236 - INFO - OPENED SHORT at 2050.24 | Stop loss: 2060.4911999999995 | Take profit: 2019.4863999999998 +2025-03-10 12:44:20,914 - INFO - STOP LOSS hit for short at 2060.4911999999995 | PnL: -0.50% | $-2.36 +2025-03-10 12:44:21,736 - INFO - OPENED SHORT at 2057.94 | Stop loss: 2068.2297 | Take profit: 2027.0709 +2025-03-10 12:44:22,077 - INFO - STOP LOSS hit for short at 2068.2297 | PnL: -0.50% | $-2.30 +2025-03-10 12:44:22,331 - INFO - OPENED LONG at 2070.99 | Stop loss: 2060.63505 | Take profit: 2102.0548499999995 +2025-03-10 12:44:22,793 - INFO - CLOSED long at 2075.1 | PnL: 0.20% | $0.37 +2025-03-10 12:44:23,073 - INFO - OPENED SHORT at 2070.9 | Stop loss: 2081.2545 | Take profit: 2039.8365000000001 +2025-03-10 12:44:23,170 - INFO - CLOSED short at 2070.79 | PnL: 0.01% | $-0.36 +2025-03-10 12:44:23,170 - INFO - OPENED LONG at 2070.79 | Stop loss: 2060.43605 | Take profit: 2101.8518499999996 +2025-03-10 12:44:23,299 - INFO - CLOSED long at 2067.2 | PnL: -0.17% | $-1.02 +2025-03-10 12:44:23,583 - INFO - OPENED SHORT at 2068.8 | Stop loss: 2079.144 | Take profit: 2037.7680000000003 +2025-03-10 12:44:24,328 - INFO - CLOSED short at 2069.96 | PnL: -0.06% | $-0.58 +2025-03-10 12:44:24,328 - INFO - OPENED LONG at 2069.96 | Stop loss: 2059.6102 | Take profit: 2101.0094 +2025-03-10 12:44:24,423 - INFO - CLOSED long at 2071.39 | PnL: 0.07% | $-0.11 +2025-03-10 12:44:24,518 - INFO - OPENED LONG at 2072.75 | Stop loss: 2062.38625 | Take profit: 2103.84125 +2025-03-10 12:44:24,698 - INFO - CLOSED long at 2074.29 | PnL: 0.07% | $-0.09 +2025-03-10 12:44:24,698 - INFO - OPENED SHORT at 2074.29 | Stop loss: 2084.6614499999996 | Take profit: 2043.17565 +2025-03-10 12:44:24,799 - INFO - CLOSED short at 2071.92 | PnL: 0.11% | $0.05 +2025-03-10 12:44:24,799 - INFO - OPENED LONG at 2071.92 | Stop loss: 2061.5604 | Take profit: 2102.9988 +2025-03-10 12:44:25,048 - INFO - CLOSED long at 2068.32 | PnL: -0.17% | $-1.01 +2025-03-10 12:44:25,881 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3464999999997 | Take profit: 2101.7604999999994 +2025-03-10 12:44:25,981 - INFO - CLOSED long at 2070.73 | PnL: 0.00% | $-0.36 +2025-03-10 12:44:27,369 - INFO - OPENED SHORT at 2065.54 | Stop loss: 2075.8677 | Take profit: 2034.5569 +2025-03-10 12:44:27,688 - INFO - CLOSED short at 2064.5 | PnL: 0.05% | $-0.18 +2025-03-10 12:44:27,689 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.1775 | Take profit: 2095.4674999999997 +2025-03-10 12:44:27,932 - INFO - CLOSED long at 2058.89 | PnL: -0.27% | $-1.34 +2025-03-10 12:44:27,933 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.1844499999997 | Take profit: 2028.0066499999998 +2025-03-10 12:44:28,125 - INFO - CLOSED short at 2064.7 | PnL: -0.28% | $-1.36 +2025-03-10 12:44:28,126 - INFO - OPENED LONG at 2064.7 | Stop loss: 2054.3765 | Take profit: 2095.6704999999997 +2025-03-10 12:44:28,179 - INFO - CLOSED long at 2062.61 | PnL: -0.10% | $-0.71 +2025-03-10 12:44:28,280 - INFO - OPENED LONG at 2060.3 | Stop loss: 2049.9985 | Take profit: 2091.2045 +2025-03-10 12:44:29,307 - INFO - CLOSED long at 2059.46 | PnL: -0.04% | $-0.49 +2025-03-10 12:44:29,308 - INFO - OPENED SHORT at 2059.46 | Stop loss: 2069.7572999999998 | Take profit: 2028.5681 +2025-03-10 12:44:29,500 - INFO - CLOSED short at 2055.6 | PnL: 0.19% | $0.30 +2025-03-10 12:44:29,501 - INFO - OPENED LONG at 2055.6 | Stop loss: 2045.322 | Take profit: 2086.4339999999997 +2025-03-10 12:44:29,647 - INFO - CLOSED long at 2056.71 | PnL: 0.05% | $-0.16 +2025-03-10 12:44:29,648 - INFO - OPENED SHORT at 2056.71 | Stop loss: 2066.9935499999997 | Take profit: 2025.85935 +2025-03-10 12:44:29,695 - INFO - CLOSED short at 2058.15 | PnL: -0.07% | $-0.59 +2025-03-10 12:44:29,695 - INFO - OPENED LONG at 2058.15 | Stop loss: 2047.85925 | Take profit: 2089.02225 +2025-03-10 12:44:29,881 - INFO - CLOSED long at 2061.6 | PnL: 0.17% | $0.23 +2025-03-10 12:44:29,882 - INFO - OPENED SHORT at 2061.6 | Stop loss: 2071.908 | Take profit: 2030.676 +2025-03-10 12:44:29,924 - INFO - CLOSED short at 2061.3 | PnL: 0.01% | $-0.29 +2025-03-10 12:44:29,925 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.9935 | Take profit: 2092.2195 +2025-03-10 12:44:30,017 - INFO - CLOSED long at 2063.4 | PnL: 0.10% | $0.01 +2025-03-10 12:44:30,158 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.5805 | Take profit: 2094.8585 +2025-03-10 12:44:30,253 - INFO - CLOSED long at 2066.33 | PnL: 0.12% | $0.06 +2025-03-10 12:44:30,830 - INFO - OPENED SHORT at 2071.04 | Stop loss: 2081.3952 | Take profit: 2039.9743999999998 +2025-03-10 12:44:30,871 - INFO - CLOSED short at 2070.01 | PnL: 0.05% | $-0.17 +2025-03-10 12:44:30,872 - INFO - OPENED LONG at 2070.01 | Stop loss: 2059.65995 | Take profit: 2101.06015 +2025-03-10 12:44:31,009 - INFO - CLOSED long at 2070.0 | PnL: -0.00% | $-0.35 +2025-03-10 12:44:31,009 - INFO - OPENED SHORT at 2070.0 | Stop loss: 2080.35 | Take profit: 2038.95 +2025-03-10 12:44:31,417 - INFO - CLOSED short at 2071.49 | PnL: -0.07% | $-0.59 +2025-03-10 12:44:32,175 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.134 | Take profit: 2035.7980000000002 +2025-03-10 12:44:32,312 - INFO - CLOSED short at 2071.59 | PnL: -0.23% | $-1.13 +2025-03-10 12:44:32,313 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.23205 | Take profit: 2102.66385 +2025-03-10 12:44:33,087 - INFO - CLOSED long at 2074.37 | PnL: 0.13% | $0.11 +2025-03-10 12:44:33,088 - INFO - OPENED SHORT at 2074.37 | Stop loss: 2084.74185 | Take profit: 2043.25445 +2025-03-10 12:44:33,133 - INFO - CLOSED short at 2075.07 | PnL: -0.03% | $-0.45 +2025-03-10 12:44:33,133 - INFO - OPENED LONG at 2075.07 | Stop loss: 2064.6946500000004 | Take profit: 2106.19605 +2025-03-10 12:44:33,424 - INFO - CLOSED long at 2076.9 | PnL: 0.09% | $-0.04 +2025-03-10 12:44:33,424 - INFO - OPENED SHORT at 2076.9 | Stop loss: 2087.2844999999998 | Take profit: 2045.7465 +2025-03-10 12:44:33,793 - INFO - CLOSED short at 2066.4 | PnL: 0.51% | $1.35 +2025-03-10 12:44:34,616 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.4304999999995 | Take profit: 2035.1084999999998 +2025-03-10 12:44:35,290 - INFO - CLOSED short at 2049.5 | PnL: 0.80% | $2.39 +2025-03-10 12:44:35,291 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.2525 | Take profit: 2080.2425 +2025-03-10 12:44:35,729 - INFO - CLOSED long at 2065.1 | PnL: 0.76% | $2.31 +2025-03-10 12:44:35,730 - INFO - OPENED SHORT at 2065.1 | Stop loss: 2075.4255 | Take profit: 2034.1235 +2025-03-10 12:44:37,024 - INFO - CLOSED short at 2074.9 | PnL: -0.47% | $-2.06 +2025-03-10 12:44:37,025 - INFO - OPENED LONG at 2074.9 | Stop loss: 2064.5255 | Take profit: 2106.0235 +2025-03-10 12:44:37,077 - INFO - CLOSED long at 2076.08 | PnL: 0.06% | $-0.15 +2025-03-10 12:44:37,078 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.4603999999995 | Take profit: 2044.9388 +2025-03-10 12:44:37,224 - INFO - STOP LOSS hit for short at 2086.4603999999995 | PnL: -0.50% | $-2.10 +2025-03-10 12:44:37,909 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.04655 | Take profit: 2160.6203499999997 +2025-03-10 12:44:38,081 - INFO - CLOSED long at 2117.24 | PnL: -0.54% | $-2.17 +2025-03-10 12:44:38,081 - INFO - OPENED SHORT at 2117.24 | Stop loss: 2127.8261999999995 | Take profit: 2085.4813999999997 +2025-03-10 12:44:38,434 - INFO - CLOSED short at 2107.43 | PnL: 0.46% | $1.21 +2025-03-10 12:44:38,434 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.8928499999997 | Take profit: 2139.0414499999997 +2025-03-10 12:44:39,186 - INFO - CLOSED long at 2100.5 | PnL: -0.33% | $-1.45 +2025-03-10 12:44:39,188 - INFO - OPENED SHORT at 2100.5 | Stop loss: 2111.0024999999996 | Take profit: 2068.9925 +2025-03-10 12:44:39,231 - INFO - CLOSED short at 2090.0 | PnL: 0.50% | $1.32 +2025-03-10 12:44:39,330 - INFO - OPENED SHORT at 2098.1 | Stop loss: 2108.5905 | Take profit: 2066.6285 +2025-03-10 12:44:39,599 - INFO - CLOSED short at 2100.69 | PnL: -0.12% | $-0.75 +2025-03-10 12:44:39,691 - INFO - OPENED LONG at 2106.39 | Stop loss: 2095.85805 | Take profit: 2137.9858499999996 +2025-03-10 12:44:39,835 - INFO - CLOSED long at 2104.68 | PnL: -0.08% | $-0.60 +2025-03-10 12:44:39,881 - INFO - OPENED LONG at 2101.51 | Stop loss: 2091.0024500000004 | Take profit: 2133.03265 +2025-03-10 12:44:40,112 - INFO - CLOSED long at 2093.46 | PnL: -0.38% | $-1.60 +2025-03-10 12:44:40,157 - INFO - OPENED LONG at 2093.33 | Stop loss: 2082.86335 | Take profit: 2124.72995 +2025-03-10 12:44:40,201 - INFO - CLOSED long at 2092.46 | PnL: -0.04% | $-0.46 +2025-03-10 12:44:40,766 - INFO - OPENED LONG at 2081.25 | Stop loss: 2070.84375 | Take profit: 2112.46875 +2025-03-10 12:44:40,809 - INFO - CLOSED long at 2083.41 | PnL: 0.10% | $0.01 +2025-03-10 12:44:40,809 - INFO - OPENED SHORT at 2083.41 | Stop loss: 2093.8270499999994 | Take profit: 2052.15885 +2025-03-10 12:44:40,959 - INFO - CLOSED short at 2086.57 | PnL: -0.15% | $-0.81 +2025-03-10 12:44:41,007 - INFO - OPENED LONG at 2085.8 | Stop loss: 2075.371 | Take profit: 2117.087 +2025-03-10 12:44:41,385 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 26.3% in downtrends | Avg Win=$0.69, Avg Loss=$-0.84 +2025-03-10 12:44:41,385 - INFO - Episode 8: Reward=202.74, Balance=$79.91, Win Rate=29.4%, Trades=51, Episode PnL=$-12.28, Total PnL=$-260.65, Max Drawdown=20.1%, Pred Accuracy=99.7% +2025-03-10 12:44:41,531 - INFO - Model saved to models/trading_agent_best_reward.pt +2025-03-10 12:44:41,531 - INFO - New best reward model saved: 202.74 +2025-03-10 12:44:41,569 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:44:41,883 - INFO - OPENED LONG at 2059.03 | Stop loss: 2048.7348500000003 | Take profit: 2089.91545 +2025-03-10 12:44:42,355 - INFO - CLOSED long at 2055.2 | PnL: -0.19% | $-1.14 +2025-03-10 12:44:42,548 - INFO - OPENED SHORT at 2053.56 | Stop loss: 2063.8277999999996 | Take profit: 2022.7566 +2025-03-10 12:44:43,034 - INFO - CLOSED short at 2049.6 | PnL: 0.19% | $0.37 +2025-03-10 12:44:43,269 - INFO - OPENED SHORT at 2047.39 | Stop loss: 2057.62695 | Take profit: 2016.6791500000002 +2025-03-10 12:44:43,561 - INFO - CLOSED short at 2045.79 | PnL: 0.08% | $-0.09 +2025-03-10 12:44:43,561 - INFO - OPENED LONG at 2045.79 | Stop loss: 2035.56105 | Take profit: 2076.4768499999996 +2025-03-10 12:44:43,700 - INFO - CLOSED long at 2048.51 | PnL: 0.13% | $0.13 +2025-03-10 12:44:43,890 - INFO - OPENED SHORT at 2051.11 | Stop loss: 2061.36555 | Take profit: 2020.34335 +2025-03-10 12:44:44,379 - INFO - STOP LOSS hit for short at 2061.36555 | PnL: -0.50% | $-2.38 +2025-03-10 12:44:44,423 - INFO - OPENED SHORT at 2063.29 | Stop loss: 2073.6064499999998 | Take profit: 2032.3406499999999 +2025-03-10 12:44:45,012 - INFO - CLOSED short at 2059.49 | PnL: 0.18% | $0.33 +2025-03-10 12:44:45,013 - INFO - OPENED LONG at 2059.49 | Stop loss: 2049.1925499999998 | Take profit: 2090.3823499999994 +2025-03-10 12:44:45,124 - INFO - CLOSED long at 2057.89 | PnL: -0.08% | $-0.69 +2025-03-10 12:44:45,124 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.1794499999996 | Take profit: 2027.02165 +2025-03-10 12:44:45,377 - INFO - CLOSED short at 2064.32 | PnL: -0.31% | $-1.59 +2025-03-10 12:44:45,428 - INFO - OPENED SHORT at 2065.86 | Stop loss: 2076.1893 | Take profit: 2034.8721 +2025-03-10 12:44:45,725 - INFO - CLOSED short at 2070.99 | PnL: -0.25% | $-1.32 +2025-03-10 12:44:45,726 - INFO - OPENED LONG at 2070.99 | Stop loss: 2060.63505 | Take profit: 2102.0548499999995 +2025-03-10 12:44:45,889 - INFO - CLOSED long at 2068.99 | PnL: -0.10% | $-0.74 +2025-03-10 12:44:45,890 - INFO - OPENED SHORT at 2068.99 | Stop loss: 2079.3349499999995 | Take profit: 2037.9551499999998 +2025-03-10 12:44:46,402 - INFO - CLOSED short at 2071.41 | PnL: -0.12% | $-0.81 +2025-03-10 12:44:46,450 - INFO - OPENED SHORT at 2069.37 | Stop loss: 2079.71685 | Take profit: 2038.32945 +2025-03-10 12:44:46,705 - INFO - CLOSED short at 2068.02 | PnL: 0.07% | $-0.13 +2025-03-10 12:44:46,705 - INFO - OPENED LONG at 2068.02 | Stop loss: 2057.6799 | Take profit: 2099.0402999999997 +2025-03-10 12:44:46,941 - INFO - CLOSED long at 2069.34 | PnL: 0.06% | $-0.13 +2025-03-10 12:44:47,133 - INFO - OPENED SHORT at 2067.51 | Stop loss: 2077.84755 | Take profit: 2036.49735 +2025-03-10 12:44:47,422 - INFO - CLOSED short at 2065.08 | PnL: 0.12% | $0.06 +2025-03-10 12:44:47,424 - INFO - OPENED LONG at 2065.08 | Stop loss: 2054.7545999999998 | Take profit: 2096.0561999999995 +2025-03-10 12:44:47,634 - INFO - CLOSED long at 2068.51 | PnL: 0.17% | $0.24 +2025-03-10 12:44:47,634 - INFO - OPENED SHORT at 2068.51 | Stop loss: 2078.85255 | Take profit: 2037.4823500000002 +2025-03-10 12:44:47,779 - INFO - CLOSED short at 2070.4 | PnL: -0.09% | $-0.71 +2025-03-10 12:44:47,779 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.0480000000002 | Take profit: 2101.4559999999997 +2025-03-10 12:44:47,992 - INFO - CLOSED long at 2071.36 | PnL: 0.05% | $-0.20 +2025-03-10 12:44:48,100 - INFO - OPENED SHORT at 2073.11 | Stop loss: 2083.47555 | Take profit: 2042.0133500000002 +2025-03-10 12:44:48,263 - INFO - CLOSED short at 2074.29 | PnL: -0.06% | $-0.57 +2025-03-10 12:44:48,419 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.752 | Take profit: 2039.344 +2025-03-10 12:44:48,649 - INFO - CLOSED short at 2067.0 | PnL: 0.16% | $0.23 +2025-03-10 12:44:48,649 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.665 | Take profit: 2098.0049999999997 +2025-03-10 12:44:49,240 - INFO - CLOSED long at 2067.59 | PnL: 0.03% | $-0.26 +2025-03-10 12:44:49,240 - INFO - OPENED SHORT at 2067.59 | Stop loss: 2077.92795 | Take profit: 2036.57615 +2025-03-10 12:44:49,337 - INFO - CLOSED short at 2070.3 | PnL: -0.13% | $-0.84 +2025-03-10 12:44:49,382 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.9479499999998 | Take profit: 2040.5161500000002 +2025-03-10 12:44:49,425 - INFO - CLOSED short at 2070.7 | PnL: 0.04% | $-0.20 +2025-03-10 12:44:49,471 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.0480000000002 | Take profit: 2101.4559999999997 +2025-03-10 12:44:49,880 - INFO - CLOSED long at 2065.28 | PnL: -0.25% | $-1.24 +2025-03-10 12:44:49,881 - INFO - OPENED SHORT at 2065.28 | Stop loss: 2075.6064 | Take profit: 2034.3008000000002 +2025-03-10 12:44:49,968 - INFO - CLOSED short at 2064.47 | PnL: 0.04% | $-0.21 +2025-03-10 12:44:49,968 - INFO - OPENED LONG at 2064.47 | Stop loss: 2054.14765 | Take profit: 2095.4370499999995 +2025-03-10 12:44:50,429 - INFO - CLOSED long at 2062.89 | PnL: -0.08% | $-0.62 +2025-03-10 12:44:50,430 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.2044499999997 | Take profit: 2031.9466499999999 +2025-03-10 12:44:50,579 - INFO - CLOSED short at 2059.59 | PnL: 0.16% | $0.21 +2025-03-10 12:44:50,579 - INFO - OPENED LONG at 2059.59 | Stop loss: 2049.29205 | Take profit: 2090.48385 +2025-03-10 12:44:50,627 - INFO - CLOSED long at 2061.3 | PnL: 0.08% | $-0.06 +2025-03-10 12:44:50,627 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.6065 | Take profit: 2030.3805000000002 +2025-03-10 12:44:50,975 - INFO - CLOSED short at 2064.45 | PnL: -0.15% | $-0.89 +2025-03-10 12:44:50,976 - INFO - OPENED LONG at 2064.45 | Stop loss: 2054.1277499999997 | Take profit: 2095.4167499999994 +2025-03-10 12:44:51,383 - INFO - CLOSED long at 2060.65 | PnL: -0.18% | $-0.99 +2025-03-10 12:44:51,672 - INFO - OPENED LONG at 2062.61 | Stop loss: 2052.29695 | Take profit: 2093.54915 +2025-03-10 12:44:51,825 - INFO - CLOSED long at 2061.13 | PnL: -0.07% | $-0.59 +2025-03-10 12:44:51,826 - INFO - OPENED SHORT at 2061.13 | Stop loss: 2071.43565 | Take profit: 2030.21305 +2025-03-10 12:44:51,928 - INFO - CLOSED short at 2064.1 | PnL: -0.14% | $-0.83 +2025-03-10 12:44:51,928 - INFO - OPENED LONG at 2064.1 | Stop loss: 2053.7795 | Take profit: 2095.0615 +2025-03-10 12:44:52,299 - INFO - CLOSED long at 2062.6 | PnL: -0.07% | $-0.58 +2025-03-10 12:44:52,299 - INFO - OPENED SHORT at 2062.6 | Stop loss: 2072.9129999999996 | Take profit: 2031.6609999999998 +2025-03-10 12:44:52,345 - INFO - CLOSED short at 2061.89 | PnL: 0.03% | $-0.22 +2025-03-10 12:44:52,345 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.5805499999997 | Take profit: 2092.8183499999996 +2025-03-10 12:44:52,495 - INFO - CLOSED long at 2061.09 | PnL: -0.04% | $-0.46 +2025-03-10 12:44:52,496 - INFO - OPENED SHORT at 2061.09 | Stop loss: 2071.39545 | Take profit: 2030.1736500000002 +2025-03-10 12:44:52,830 - INFO - CLOSED short at 2057.4 | PnL: 0.18% | $0.26 +2025-03-10 12:44:53,273 - INFO - OPENED SHORT at 2061.66 | Stop loss: 2071.9682999999995 | Take profit: 2030.7350999999999 +2025-03-10 12:44:53,569 - INFO - CLOSED short at 2066.36 | PnL: -0.23% | $-1.09 +2025-03-10 12:44:53,569 - INFO - OPENED LONG at 2066.36 | Stop loss: 2056.0282 | Take profit: 2097.3554 +2025-03-10 12:44:53,718 - INFO - CLOSED long at 2064.49 | PnL: -0.09% | $-0.63 +2025-03-10 12:44:53,853 - INFO - OPENED SHORT at 2066.79 | Stop loss: 2077.1239499999997 | Take profit: 2035.7881499999999 +2025-03-10 12:44:54,180 - INFO - STOP LOSS hit for short at 2077.1239499999997 | PnL: -0.50% | $-1.96 +2025-03-10 12:44:54,233 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.38505 | Take profit: 2043.8848500000001 +2025-03-10 12:44:54,322 - INFO - CLOSED short at 2071.04 | PnL: 0.19% | $0.29 +2025-03-10 12:44:54,378 - INFO - OPENED SHORT at 2070.01 | Stop loss: 2080.36005 | Take profit: 2038.9598500000002 +2025-03-10 12:44:54,554 - INFO - CLOSED short at 2068.15 | PnL: 0.09% | $-0.03 +2025-03-10 12:44:54,610 - INFO - OPENED SHORT at 2068.39 | Stop loss: 2078.73195 | Take profit: 2037.3641499999999 +2025-03-10 12:44:54,695 - INFO - CLOSED short at 2069.03 | PnL: -0.03% | $-0.42 +2025-03-10 12:44:54,696 - INFO - OPENED LONG at 2069.03 | Stop loss: 2058.68485 | Take profit: 2100.06545 +2025-03-10 12:44:54,841 - INFO - CLOSED long at 2072.99 | PnL: 0.19% | $0.29 +2025-03-10 12:44:54,885 - INFO - OPENED SHORT at 2071.49 | Stop loss: 2081.8474499999998 | Take profit: 2040.4176499999999 +2025-03-10 12:44:54,970 - INFO - CLOSED short at 2067.33 | PnL: 0.20% | $0.32 +2025-03-10 12:44:55,066 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.3714999999997 | Take profit: 2096.6854999999996 +2025-03-10 12:44:55,343 - INFO - CLOSED long at 2064.4 | PnL: -0.06% | $-0.52 +2025-03-10 12:44:55,344 - INFO - OPENED SHORT at 2064.4 | Stop loss: 2074.7219999999998 | Take profit: 2033.434 +2025-03-10 12:44:55,584 - INFO - CLOSED short at 2065.31 | PnL: -0.04% | $-0.46 +2025-03-10 12:44:55,585 - INFO - OPENED LONG at 2065.31 | Stop loss: 2054.9834499999997 | Take profit: 2096.2896499999997 +2025-03-10 12:44:55,987 - INFO - CLOSED long at 2070.7 | PnL: 0.26% | $0.51 +2025-03-10 12:44:55,988 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.0534999999995 | Take profit: 2039.6394999999998 +2025-03-10 12:44:56,032 - INFO - CLOSED short at 2070.8 | PnL: -0.00% | $-0.33 +2025-03-10 12:44:56,033 - INFO - OPENED LONG at 2070.8 | Stop loss: 2060.4460000000004 | Take profit: 2101.862 +2025-03-10 12:44:56,307 - INFO - CLOSED long at 2070.67 | PnL: -0.01% | $-0.34 +2025-03-10 12:44:56,623 - INFO - OPENED SHORT at 2074.35 | Stop loss: 2084.7217499999997 | Take profit: 2043.2347499999998 +2025-03-10 12:44:57,183 - INFO - CLOSED short at 2067.9 | PnL: 0.31% | $0.67 +2025-03-10 12:44:57,184 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.5605 | Take profit: 2098.9184999999998 +2025-03-10 12:44:57,565 - INFO - CLOSED long at 2070.1 | PnL: 0.11% | $0.02 +2025-03-10 12:44:57,566 - INFO - OPENED SHORT at 2070.1 | Stop loss: 2080.4504999999995 | Take profit: 2039.0484999999999 +2025-03-10 12:44:58,105 - INFO - CLOSED short at 2065.06 | PnL: 0.24% | $0.46 +2025-03-10 12:44:58,106 - INFO - OPENED LONG at 2065.06 | Stop loss: 2054.7347 | Take profit: 2096.0359 +2025-03-10 12:44:58,154 - INFO - CLOSED long at 2064.11 | PnL: -0.05% | $-0.47 +2025-03-10 12:44:58,315 - INFO - OPENED SHORT at 2063.01 | Stop loss: 2073.32505 | Take profit: 2032.0648500000002 +2025-03-10 12:44:58,467 - INFO - CLOSED short at 2059.2 | PnL: 0.18% | $0.27 +2025-03-10 12:44:58,468 - INFO - OPENED LONG at 2059.2 | Stop loss: 2048.904 | Take profit: 2090.0879999999997 +2025-03-10 12:44:59,266 - INFO - CLOSED long at 2065.12 | PnL: 0.29% | $0.60 +2025-03-10 12:44:59,456 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.4003999999995 | Take profit: 2033.1188 +2025-03-10 12:44:59,548 - INFO - CLOSED short at 2059.9 | PnL: 0.20% | $0.33 +2025-03-10 12:44:59,548 - INFO - OPENED LONG at 2059.9 | Stop loss: 2049.6005 | Take profit: 2090.7985 +2025-03-10 12:44:59,599 - INFO - CLOSED long at 2060.7 | PnL: 0.04% | $-0.20 +2025-03-10 12:44:59,599 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0035 | Take profit: 2029.7894999999999 +2025-03-10 12:44:59,695 - INFO - CLOSED short at 2062.54 | PnL: -0.09% | $-0.61 +2025-03-10 12:44:59,696 - INFO - OPENED LONG at 2062.54 | Stop loss: 2052.2273 | Take profit: 2093.4781 +2025-03-10 12:44:59,742 - INFO - CLOSED long at 2065.72 | PnL: 0.15% | $0.17 +2025-03-10 12:44:59,743 - INFO - OPENED SHORT at 2065.72 | Stop loss: 2076.0485999999996 | Take profit: 2034.7341999999999 +2025-03-10 12:44:59,886 - INFO - CLOSED short at 2069.34 | PnL: -0.18% | $-0.88 +2025-03-10 12:45:00,019 - INFO - OPENED SHORT at 2073.49 | Stop loss: 2083.8574499999995 | Take profit: 2042.3876499999997 +2025-03-10 12:45:00,114 - INFO - CLOSED short at 2072.99 | PnL: 0.02% | $-0.24 +2025-03-10 12:45:00,200 - INFO - OPENED SHORT at 2071.8 | Stop loss: 2082.159 | Take profit: 2040.7230000000002 +2025-03-10 12:45:00,391 - INFO - STOP LOSS hit for short at 2082.159 | PnL: -0.50% | $-1.90 +2025-03-10 12:45:00,851 - INFO - OPENED LONG at 2142.68 | Stop loss: 2131.9665999999997 | Take profit: 2174.8201999999997 +2025-03-10 12:45:00,979 - INFO - STOP LOSS hit for long at 2131.9665999999997 | PnL: -0.50% | $-1.85 +2025-03-10 12:45:01,343 - INFO - OPENED LONG at 2118.52 | Stop loss: 2107.9274 | Take profit: 2150.2978 +2025-03-10 12:45:01,536 - INFO - STOP LOSS hit for long at 2107.9274 | PnL: -0.50% | $-1.81 +2025-03-10 12:45:01,585 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.153 | Take profit: 2078.941 +2025-03-10 12:45:01,766 - INFO - CLOSED short at 2112.46 | PnL: -0.09% | $-0.55 +2025-03-10 12:45:01,815 - INFO - OPENED SHORT at 2113.24 | Stop loss: 2123.8061999999995 | Take profit: 2081.5413999999996 +2025-03-10 12:45:02,870 - INFO - CLOSED short at 2103.86 | PnL: 0.44% | $1.00 +2025-03-10 12:45:03,056 - INFO - OPENED LONG at 2100.02 | Stop loss: 2089.5199 | Take profit: 2131.5202999999997 +2025-03-10 12:45:03,290 - INFO - CLOSED long at 2092.46 | PnL: -0.36% | $-1.36 +2025-03-10 12:45:03,679 - INFO - OPENED SHORT at 2083.97 | Stop loss: 2094.3898499999996 | Take profit: 2052.7104499999996 +2025-03-10 12:45:04,062 - INFO - CLOSED short at 2083.59 | PnL: 0.02% | $-0.24 +2025-03-10 12:45:04,445 - INFO - OPENED SHORT at 2088.1 | Stop loss: 2098.5404999999996 | Take profit: 2056.7785 +2025-03-10 12:45:04,538 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 30.8% in downtrends | Avg Win=$0.34, Avg Loss=$-0.73 +2025-03-10 12:45:04,539 - INFO - Episode 9: Reward=202.20, Balance=$72.38, Win Rate=29.9%, Trades=67, Episode PnL=$-17.85, Total PnL=$-288.27, Max Drawdown=27.6%, Pred Accuracy=99.6% +2025-03-10 12:45:04,573 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:45:05,182 - INFO - OPENED LONG at 2057.9 | Stop loss: 2047.6105 | Take profit: 2088.7684999999997 +2025-03-10 12:45:05,376 - INFO - CLOSED long at 2058.59 | PnL: 0.03% | $-0.27 +2025-03-10 12:45:05,376 - INFO - OPENED SHORT at 2058.59 | Stop loss: 2068.8829499999997 | Take profit: 2027.71115 +2025-03-10 12:45:05,659 - INFO - CLOSED short at 2052.16 | PnL: 0.31% | $0.85 +2025-03-10 12:45:05,660 - INFO - OPENED LONG at 2052.16 | Stop loss: 2041.8991999999998 | Take profit: 2082.9423999999995 +2025-03-10 12:45:05,703 - INFO - CLOSED long at 2053.1 | PnL: 0.05% | $-0.22 +2025-03-10 12:45:05,752 - INFO - OPENED SHORT at 2052.25 | Stop loss: 2062.5112499999996 | Take profit: 2021.46625 +2025-03-10 12:45:05,794 - INFO - CLOSED short at 2050.71 | PnL: 0.08% | $-0.10 +2025-03-10 12:45:05,795 - INFO - OPENED LONG at 2050.71 | Stop loss: 2040.4564500000001 | Take profit: 2081.4706499999998 +2025-03-10 12:45:05,846 - INFO - CLOSED long at 2050.44 | PnL: -0.01% | $-0.45 +2025-03-10 12:45:05,846 - INFO - OPENED SHORT at 2050.44 | Stop loss: 2060.6922 | Take profit: 2019.6834000000001 +2025-03-10 12:45:05,988 - INFO - CLOSED short at 2049.6 | PnL: 0.04% | $-0.24 +2025-03-10 12:45:06,588 - INFO - OPENED SHORT at 2047.59 | Stop loss: 2057.82795 | Take profit: 2016.8761499999998 +2025-03-10 12:45:07,161 - INFO - STOP LOSS hit for short at 2057.82795 | PnL: -0.50% | $-2.39 +2025-03-10 12:45:07,388 - INFO - OPENED SHORT at 2064.61 | Stop loss: 2074.93305 | Take profit: 2033.64085 +2025-03-10 12:45:07,617 - INFO - CLOSED short at 2060.99 | PnL: 0.18% | $0.29 +2025-03-10 12:45:07,618 - INFO - OPENED LONG at 2060.99 | Stop loss: 2050.6850499999996 | Take profit: 2091.9048499999994 +2025-03-10 12:45:07,665 - INFO - CLOSED long at 2058.3 | PnL: -0.13% | $-0.90 +2025-03-10 12:45:07,666 - INFO - OPENED SHORT at 2058.3 | Stop loss: 2068.5915 | Take profit: 2027.4255 +2025-03-10 12:45:08,121 - INFO - CLOSED short at 2061.79 | PnL: -0.17% | $-1.04 +2025-03-10 12:45:08,214 - INFO - OPENED LONG at 2064.32 | Stop loss: 2053.9984 | Take profit: 2095.2848 +2025-03-10 12:45:08,258 - INFO - CLOSED long at 2065.86 | PnL: 0.07% | $-0.10 +2025-03-10 12:45:08,259 - INFO - OPENED SHORT at 2065.86 | Stop loss: 2076.1893 | Take profit: 2034.8721 +2025-03-10 12:45:08,804 - INFO - CLOSED short at 2067.69 | PnL: -0.09% | $-0.72 +2025-03-10 12:45:09,711 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.9933 | Take profit: 2100.3801 +2025-03-10 12:45:09,949 - INFO - CLOSED long at 2069.01 | PnL: -0.02% | $-0.44 +2025-03-10 12:45:10,307 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.2445 | Take profit: 2037.8665 +2025-03-10 12:45:10,357 - INFO - CLOSED short at 2068.51 | PnL: 0.02% | $-0.31 +2025-03-10 12:45:10,357 - INFO - OPENED LONG at 2068.51 | Stop loss: 2058.1674500000004 | Take profit: 2099.53765 +2025-03-10 12:45:10,962 - INFO - CLOSED long at 2073.9 | PnL: 0.26% | $0.60 +2025-03-10 12:45:11,670 - INFO - OPENED LONG at 2068.58 | Stop loss: 2058.2371 | Take profit: 2099.6086999999998 +2025-03-10 12:45:12,084 - INFO - CLOSED long at 2070.4 | PnL: 0.09% | $-0.05 +2025-03-10 12:45:12,129 - INFO - OPENED SHORT at 2070.73 | Stop loss: 2081.0836499999996 | Take profit: 2039.66905 +2025-03-10 12:45:12,371 - INFO - CLOSED short at 2067.86 | PnL: 0.14% | $0.15 +2025-03-10 12:45:12,371 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.5207 | Take profit: 2098.8779 +2025-03-10 12:45:12,531 - INFO - CLOSED long at 2065.28 | PnL: -0.12% | $-0.85 +2025-03-10 12:45:12,532 - INFO - OPENED SHORT at 2065.28 | Stop loss: 2075.6064 | Take profit: 2034.3008000000002 +2025-03-10 12:45:12,578 - INFO - CLOSED short at 2066.39 | PnL: -0.05% | $-0.58 +2025-03-10 12:45:12,664 - INFO - OPENED LONG at 2070.04 | Stop loss: 2059.6898 | Take profit: 2101.0905999999995 +2025-03-10 12:45:12,721 - INFO - CLOSED long at 2067.8 | PnL: -0.11% | $-0.78 +2025-03-10 12:45:12,721 - INFO - OPENED SHORT at 2067.8 | Stop loss: 2078.139 | Take profit: 2036.7830000000001 +2025-03-10 12:45:12,765 - INFO - CLOSED short at 2068.18 | PnL: -0.02% | $-0.44 +2025-03-10 12:45:12,766 - INFO - OPENED LONG at 2068.18 | Stop loss: 2057.8390999999997 | Take profit: 2099.2027 +2025-03-10 12:45:12,856 - INFO - CLOSED long at 2067.88 | PnL: -0.01% | $-0.42 +2025-03-10 12:45:12,857 - INFO - OPENED SHORT at 2067.88 | Stop loss: 2078.2194 | Take profit: 2036.8618000000001 +2025-03-10 12:45:13,661 - INFO - CLOSED short at 2064.08 | PnL: 0.18% | $0.31 +2025-03-10 12:45:13,711 - INFO - OPENED SHORT at 2062.71 | Stop loss: 2073.02355 | Take profit: 2031.76935 +2025-03-10 12:45:13,756 - INFO - CLOSED short at 2062.89 | PnL: -0.01% | $-0.40 +2025-03-10 12:45:13,799 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.8224999999998 | Take profit: 2033.5325 +2025-03-10 12:45:14,103 - INFO - CLOSED short at 2059.3 | PnL: 0.25% | $0.56 +2025-03-10 12:45:14,104 - INFO - OPENED LONG at 2059.3 | Stop loss: 2049.0035000000003 | Take profit: 2090.1895 +2025-03-10 12:45:14,401 - INFO - CLOSED long at 2060.3 | PnL: 0.05% | $-0.19 +2025-03-10 12:45:14,542 - INFO - OPENED SHORT at 2064.1 | Stop loss: 2074.4204999999997 | Take profit: 2033.1384999999998 +2025-03-10 12:45:14,590 - INFO - CLOSED short at 2065.36 | PnL: -0.06% | $-0.59 +2025-03-10 12:45:14,643 - INFO - OPENED SHORT at 2064.33 | Stop loss: 2074.65165 | Take profit: 2033.3650499999999 +2025-03-10 12:45:15,241 - INFO - CLOSED short at 2059.02 | PnL: 0.26% | $0.57 +2025-03-10 12:45:15,241 - INFO - OPENED LONG at 2059.02 | Stop loss: 2048.7249 | Take profit: 2089.9053 +2025-03-10 12:45:15,518 - INFO - CLOSED long at 2056.28 | PnL: -0.13% | $-0.86 +2025-03-10 12:45:15,652 - INFO - OPENED LONG at 2054.83 | Stop loss: 2044.55585 | Take profit: 2085.6524499999996 +2025-03-10 12:45:15,750 - INFO - CLOSED long at 2058.15 | PnL: 0.16% | $0.22 +2025-03-10 12:45:15,751 - INFO - OPENED SHORT at 2058.15 | Stop loss: 2068.4407499999998 | Take profit: 2027.27775 +2025-03-10 12:45:15,881 - INFO - CLOSED short at 2061.5 | PnL: -0.16% | $-0.96 +2025-03-10 12:45:15,930 - INFO - OPENED SHORT at 2061.6 | Stop loss: 2071.908 | Take profit: 2030.676 +2025-03-10 12:45:16,251 - INFO - CLOSED short at 2064.49 | PnL: -0.14% | $-0.87 +2025-03-10 12:45:16,299 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6616499999996 | Take profit: 2035.33505 +2025-03-10 12:45:16,484 - INFO - CLOSED short at 2067.01 | PnL: -0.03% | $-0.48 +2025-03-10 12:45:16,533 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.01845 | Take profit: 2034.7046500000001 +2025-03-10 12:45:16,716 - INFO - STOP LOSS hit for short at 2076.01845 | PnL: -0.50% | $-2.13 +2025-03-10 12:45:16,759 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.38505 | Take profit: 2043.8848500000001 +2025-03-10 12:45:17,177 - INFO - CLOSED short at 2069.69 | PnL: 0.26% | $0.54 +2025-03-10 12:45:17,747 - INFO - OPENED SHORT at 2063.97 | Stop loss: 2074.2898499999997 | Take profit: 2033.0104499999998 +2025-03-10 12:45:17,847 - INFO - CLOSED short at 2065.3 | PnL: -0.06% | $-0.57 +2025-03-10 12:45:17,847 - INFO - OPENED LONG at 2065.3 | Stop loss: 2054.9735 | Take profit: 2096.2795 +2025-03-10 12:45:17,914 - INFO - CLOSED long at 2064.4 | PnL: -0.04% | $-0.50 +2025-03-10 12:45:17,914 - INFO - OPENED SHORT at 2064.4 | Stop loss: 2074.7219999999998 | Take profit: 2033.434 +2025-03-10 12:45:17,959 - INFO - CLOSED short at 2064.31 | PnL: 0.00% | $-0.33 +2025-03-10 12:45:18,008 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.8275 | Take profit: 2034.5175 +2025-03-10 12:45:18,208 - INFO - CLOSED short at 2066.8 | PnL: -0.06% | $-0.56 +2025-03-10 12:45:18,254 - INFO - OPENED LONG at 2066.5 | Stop loss: 2056.1675 | Take profit: 2097.4975 +2025-03-10 12:45:18,304 - INFO - CLOSED long at 2068.59 | PnL: 0.10% | $0.00 +2025-03-10 12:45:18,304 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.93295 | Take profit: 2037.5611500000002 +2025-03-10 12:45:18,350 - INFO - CLOSED short at 2071.59 | PnL: -0.15% | $-0.84 +2025-03-10 12:45:18,451 - INFO - OPENED SHORT at 2071.35 | Stop loss: 2081.70675 | Take profit: 2040.27975 +2025-03-10 12:45:18,583 - INFO - CLOSED short at 2070.7 | PnL: 0.03% | $-0.23 +2025-03-10 12:45:18,917 - INFO - OPENED SHORT at 2070.67 | Stop loss: 2081.02335 | Take profit: 2039.60995 +2025-03-10 12:45:19,711 - INFO - CLOSED short at 2067.0 | PnL: 0.18% | $0.26 +2025-03-10 12:45:19,762 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.2394999999997 | Take profit: 2036.8815 +2025-03-10 12:45:20,267 - INFO - CLOSED short at 2065.7 | PnL: 0.11% | $0.02 +2025-03-10 12:45:20,267 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.3714999999997 | Take profit: 2096.6854999999996 +2025-03-10 12:45:20,907 - INFO - CLOSED long at 2060.7 | PnL: -0.24% | $-1.16 +2025-03-10 12:45:20,908 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0035 | Take profit: 2029.7894999999999 +2025-03-10 12:45:21,480 - INFO - CLOSED short at 2057.11 | PnL: 0.17% | $0.25 +2025-03-10 12:45:21,539 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.1794499999996 | Take profit: 2027.02165 +2025-03-10 12:45:21,722 - INFO - CLOSED short at 2062.43 | PnL: -0.22% | $-1.07 +2025-03-10 12:45:21,723 - INFO - OPENED LONG at 2062.43 | Stop loss: 2052.1178499999996 | Take profit: 2093.3664499999995 +2025-03-10 12:45:21,774 - INFO - CLOSED long at 2062.55 | PnL: 0.01% | $-0.31 +2025-03-10 12:45:21,912 - INFO - OPENED SHORT at 2067.49 | Stop loss: 2077.8274499999998 | Take profit: 2036.4776499999998 +2025-03-10 12:45:22,200 - INFO - CLOSED short at 2061.84 | PnL: 0.27% | $0.57 +2025-03-10 12:45:22,342 - INFO - OPENED LONG at 2070.31 | Stop loss: 2059.95845 | Take profit: 2101.3646499999995 +2025-03-10 12:45:22,390 - INFO - CLOSED long at 2070.24 | PnL: -0.00% | $-0.34 +2025-03-10 12:45:22,391 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.5911999999994 | Take profit: 2039.1863999999998 +2025-03-10 12:45:22,783 - INFO - CLOSED short at 2071.8 | PnL: -0.08% | $-0.58 +2025-03-10 12:45:22,931 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2087.9980499999997 | Take profit: 2046.44585 +2025-03-10 12:45:23,031 - INFO - STOP LOSS hit for short at 2087.9980499999997 | PnL: -0.50% | $-1.97 +2025-03-10 12:45:23,169 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.8423 | Take profit: 2171.6330999999996 +2025-03-10 12:45:23,598 - INFO - CLOSED long at 2126.99 | PnL: -0.59% | $-2.20 +2025-03-10 12:45:23,598 - INFO - OPENED SHORT at 2126.99 | Stop loss: 2137.6249499999994 | Take profit: 2095.08515 +2025-03-10 12:45:23,698 - INFO - CLOSED short at 2128.69 | PnL: -0.08% | $-0.56 +2025-03-10 12:45:23,699 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.04655 | Take profit: 2160.6203499999997 +2025-03-10 12:45:23,839 - INFO - STOP LOSS hit for long at 2118.04655 | PnL: -0.50% | $-1.85 +2025-03-10 12:45:23,885 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3303499999997 | Take profit: 2151.7289499999997 +2025-03-10 12:45:24,027 - INFO - CLOSED long at 2119.14 | PnL: -0.04% | $-0.41 +2025-03-10 12:45:24,027 - INFO - OPENED SHORT at 2119.14 | Stop loss: 2129.7356999999997 | Take profit: 2087.3529 +2025-03-10 12:45:24,168 - INFO - CLOSED short at 2107.43 | PnL: 0.55% | $1.36 +2025-03-10 12:45:24,169 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.8928499999997 | Take profit: 2139.0414499999997 +2025-03-10 12:45:24,218 - INFO - CLOSED long at 2110.6 | PnL: 0.15% | $0.15 +2025-03-10 12:45:24,219 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.153 | Take profit: 2078.941 +2025-03-10 12:45:24,259 - INFO - CLOSED short at 2109.05 | PnL: 0.07% | $-0.08 +2025-03-10 12:45:24,260 - INFO - OPENED LONG at 2109.05 | Stop loss: 2098.50475 | Take profit: 2140.68575 +2025-03-10 12:45:24,309 - INFO - CLOSED long at 2112.09 | PnL: 0.14% | $0.13 +2025-03-10 12:45:24,310 - INFO - OPENED SHORT at 2112.09 | Stop loss: 2122.65045 | Take profit: 2080.4086500000003 +2025-03-10 12:45:24,657 - INFO - CLOSED short at 2114.8 | PnL: -0.13% | $-0.70 +2025-03-10 12:45:24,658 - INFO - OPENED LONG at 2114.8 | Stop loss: 2104.226 | Take profit: 2146.522 +2025-03-10 12:45:24,807 - INFO - CLOSED long at 2106.49 | PnL: -0.39% | $-1.50 +2025-03-10 12:45:24,807 - INFO - OPENED SHORT at 2106.49 | Stop loss: 2117.0224499999995 | Take profit: 2074.89265 +2025-03-10 12:45:24,853 - INFO - CLOSED short at 2108.06 | PnL: -0.07% | $-0.52 +2025-03-10 12:45:24,854 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.5197 | Take profit: 2139.6809 +2025-03-10 12:45:25,000 - INFO - STOP LOSS hit for long at 2097.5197 | PnL: -0.50% | $-1.77 +2025-03-10 12:45:25,479 - INFO - OPENED SHORT at 2100.74 | Stop loss: 2111.2436999999995 | Take profit: 2069.2288999999996 +2025-03-10 12:45:25,716 - INFO - CLOSED short at 2100.02 | PnL: 0.03% | $-0.19 +2025-03-10 12:45:25,717 - INFO - OPENED LONG at 2100.02 | Stop loss: 2089.5199 | Take profit: 2131.5202999999997 +2025-03-10 12:45:25,765 - INFO - CLOSED long at 2098.39 | PnL: -0.08% | $-0.51 +2025-03-10 12:45:25,765 - INFO - OPENED SHORT at 2098.39 | Stop loss: 2108.8819499999995 | Take profit: 2066.91415 +2025-03-10 12:45:25,905 - INFO - CLOSED short at 2093.33 | PnL: 0.24% | $0.40 +2025-03-10 12:45:25,906 - INFO - OPENED LONG at 2093.33 | Stop loss: 2082.86335 | Take profit: 2124.72995 +2025-03-10 12:45:26,000 - INFO - CLOSED long at 2091.1 | PnL: -0.11% | $-0.59 +2025-03-10 12:45:26,000 - INFO - OPENED SHORT at 2091.1 | Stop loss: 2101.5554999999995 | Take profit: 2059.7335 +2025-03-10 12:45:26,185 - INFO - CLOSED short at 2083.28 | PnL: 0.37% | $0.78 +2025-03-10 12:45:26,185 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.8636 | Take profit: 2114.5292 +2025-03-10 12:45:26,330 - INFO - CLOSED long at 2085.3 | PnL: 0.10% | $-0.01 +2025-03-10 12:45:26,332 - INFO - OPENED SHORT at 2085.3 | Stop loss: 2095.7264999999998 | Take profit: 2054.0205 +2025-03-10 12:45:26,696 - INFO - CLOSED short at 2086.57 | PnL: -0.06% | $-0.46 +2025-03-10 12:45:26,697 - INFO - OPENED LONG at 2086.57 | Stop loss: 2076.13715 | Take profit: 2117.86855 +2025-03-10 12:45:26,885 - INFO - CLOSED long at 2085.85 | PnL: -0.03% | $-0.38 +2025-03-10 12:45:26,885 - INFO - OPENED SHORT at 2085.85 | Stop loss: 2096.2792499999996 | Take profit: 2054.56225 +2025-03-10 12:45:26,972 - INFO - CLOSED short at 2088.32 | PnL: -0.12% | $-0.62 +2025-03-10 12:45:26,973 - INFO - OPENED LONG at 2088.32 | Stop loss: 2077.8784 | Take profit: 2119.6448 +2025-03-10 12:45:27,117 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 34.6% in downtrends | Avg Win=$0.42, Avg Loss=$-0.70 +2025-03-10 12:45:27,119 - INFO - Episode 10: Reward=193.96, Balance=$70.46, Win Rate=26.0%, Trades=73, Episode PnL=$-18.05, Total PnL=$-317.82, Max Drawdown=28.2%, Pred Accuracy=99.7% +2025-03-10 12:45:27,246 - INFO - Model saved to checkpoints/trading_agent_episode_10.pt +2025-03-10 12:45:27,247 - INFO - Checkpoint saved at episode 10 +2025-03-10 12:45:27,278 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:45:27,566 - INFO - OPENED SHORT at 2059.03 | Stop loss: 2069.32515 | Take profit: 2028.1445500000002 +2025-03-10 12:45:28,169 - INFO - CLOSED short at 2055.39 | PnL: 0.18% | $0.31 +2025-03-10 12:45:28,364 - INFO - OPENED SHORT at 2052.16 | Stop loss: 2062.4207999999994 | Take profit: 2021.3775999999998 +2025-03-10 12:45:28,913 - INFO - CLOSED short at 2048.48 | PnL: 0.18% | $0.32 +2025-03-10 12:45:29,101 - INFO - OPENED SHORT at 2047.2 | Stop loss: 2057.4359999999997 | Take profit: 2016.492 +2025-03-10 12:45:29,149 - INFO - CLOSED short at 2045.99 | PnL: 0.06% | $-0.16 +2025-03-10 12:45:29,243 - INFO - OPENED LONG at 2045.79 | Stop loss: 2035.56105 | Take profit: 2076.4768499999996 +2025-03-10 12:45:29,338 - INFO - CLOSED long at 2047.59 | PnL: 0.09% | $-0.05 +2025-03-10 12:45:29,339 - INFO - OPENED SHORT at 2047.59 | Stop loss: 2057.82795 | Take profit: 2016.8761499999998 +2025-03-10 12:45:29,754 - INFO - CLOSED short at 2055.69 | PnL: -0.40% | $-1.99 +2025-03-10 12:45:29,754 - INFO - OPENED LONG at 2055.69 | Stop loss: 2045.41155 | Take profit: 2086.52535 +2025-03-10 12:45:29,862 - INFO - CLOSED long at 2056.89 | PnL: 0.06% | $-0.16 +2025-03-10 12:45:29,862 - INFO - OPENED SHORT at 2056.89 | Stop loss: 2067.1744499999995 | Take profit: 2026.0366499999998 +2025-03-10 12:45:30,323 - INFO - CLOSED short at 2064.69 | PnL: -0.38% | $-1.88 +2025-03-10 12:45:30,372 - INFO - OPENED LONG at 2063.01 | Stop loss: 2052.69495 | Take profit: 2093.9551500000002 +2025-03-10 12:45:30,648 - INFO - CLOSED long at 2060.31 | PnL: -0.13% | $-0.89 +2025-03-10 12:45:31,016 - INFO - OPENED LONG at 2064.32 | Stop loss: 2053.9984 | Take profit: 2095.2848 +2025-03-10 12:45:31,578 - INFO - CLOSED long at 2067.69 | PnL: 0.16% | $0.24 +2025-03-10 12:45:31,578 - INFO - OPENED SHORT at 2067.69 | Stop loss: 2078.02845 | Take profit: 2036.67465 +2025-03-10 12:45:32,471 - INFO - CLOSED short at 2069.34 | PnL: -0.08% | $-0.69 +2025-03-10 12:45:32,708 - INFO - OPENED SHORT at 2069.01 | Stop loss: 2079.35505 | Take profit: 2037.9748500000003 +2025-03-10 12:45:32,843 - INFO - CLOSED short at 2066.19 | PnL: 0.14% | $0.14 +2025-03-10 12:45:32,949 - INFO - OPENED SHORT at 2065.08 | Stop loss: 2075.4053999999996 | Take profit: 2034.1037999999999 +2025-03-10 12:45:33,191 - INFO - CLOSED short at 2068.59 | PnL: -0.17% | $-1.03 +2025-03-10 12:45:33,192 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.24705 | Take profit: 2099.61885 +2025-03-10 12:45:33,230 - INFO - CLOSED long at 2069.7 | PnL: 0.05% | $-0.17 +2025-03-10 12:45:33,231 - INFO - OPENED SHORT at 2069.7 | Stop loss: 2080.0484999999994 | Take profit: 2038.6544999999999 +2025-03-10 12:45:33,322 - INFO - CLOSED short at 2069.96 | PnL: -0.01% | $-0.42 +2025-03-10 12:45:33,322 - INFO - OPENED LONG at 2069.96 | Stop loss: 2059.6102 | Take profit: 2101.0094 +2025-03-10 12:45:33,469 - INFO - CLOSED long at 2071.36 | PnL: 0.07% | $-0.12 +2025-03-10 12:45:33,470 - INFO - OPENED SHORT at 2071.36 | Stop loss: 2081.7167999999997 | Take profit: 2040.2896 +2025-03-10 12:45:33,701 - INFO - CLOSED short at 2074.29 | PnL: -0.14% | $-0.90 +2025-03-10 12:45:33,750 - INFO - OPENED SHORT at 2073.9 | Stop loss: 2084.2695 | Take profit: 2042.7915 +2025-03-10 12:45:34,071 - INFO - CLOSED short at 2067.0 | PnL: 0.33% | $0.86 +2025-03-10 12:45:34,072 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.665 | Take profit: 2098.0049999999997 +2025-03-10 12:45:34,128 - INFO - CLOSED long at 2067.79 | PnL: 0.04% | $-0.23 +2025-03-10 12:45:34,128 - INFO - OPENED SHORT at 2067.79 | Stop loss: 2078.12895 | Take profit: 2036.77315 +2025-03-10 12:45:34,596 - INFO - CLOSED short at 2067.86 | PnL: -0.00% | $-0.39 +2025-03-10 12:45:34,598 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.5207 | Take profit: 2098.8779 +2025-03-10 12:45:34,973 - INFO - CLOSED long at 2068.5 | PnL: 0.03% | $-0.26 +2025-03-10 12:45:35,117 - INFO - OPENED SHORT at 2067.11 | Stop loss: 2077.44555 | Take profit: 2036.10335 +2025-03-10 12:45:35,337 - INFO - CLOSED short at 2065.28 | PnL: 0.09% | $-0.04 +2025-03-10 12:45:35,387 - INFO - OPENED LONG at 2066.39 | Stop loss: 2056.0580499999996 | Take profit: 2097.3858499999997 +2025-03-10 12:45:35,488 - INFO - CLOSED long at 2070.04 | PnL: 0.18% | $0.28 +2025-03-10 12:45:35,929 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.2044499999997 | Take profit: 2031.9466499999999 +2025-03-10 12:45:36,016 - INFO - CLOSED short at 2061.78 | PnL: 0.05% | $-0.17 +2025-03-10 12:45:36,016 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.4711 | Take profit: 2092.7067 +2025-03-10 12:45:36,448 - INFO - CLOSED long at 2064.45 | PnL: 0.13% | $0.11 +2025-03-10 12:45:36,449 - INFO - OPENED SHORT at 2064.45 | Stop loss: 2074.7722499999995 | Take profit: 2033.4832499999998 +2025-03-10 12:45:36,642 - INFO - CLOSED short at 2064.5 | PnL: -0.00% | $-0.38 +2025-03-10 12:45:36,735 - INFO - OPENED SHORT at 2061.6 | Stop loss: 2071.908 | Take profit: 2030.676 +2025-03-10 12:45:37,027 - INFO - CLOSED short at 2061.8 | PnL: -0.01% | $-0.41 +2025-03-10 12:45:37,069 - INFO - OPENED LONG at 2064.7 | Stop loss: 2054.3765 | Take profit: 2095.6704999999997 +2025-03-10 12:45:37,113 - INFO - CLOSED long at 2062.61 | PnL: -0.10% | $-0.74 +2025-03-10 12:45:37,114 - INFO - OPENED SHORT at 2062.61 | Stop loss: 2072.92305 | Take profit: 2031.6708500000002 +2025-03-10 12:45:37,263 - INFO - CLOSED short at 2061.13 | PnL: 0.07% | $-0.10 +2025-03-10 12:45:37,305 - INFO - OPENED LONG at 2061.9 | Stop loss: 2051.5905000000002 | Take profit: 2092.8285 +2025-03-10 12:45:37,507 - INFO - CLOSED long at 2063.39 | PnL: 0.07% | $-0.10 +2025-03-10 12:45:37,508 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.70695 | Take profit: 2032.43915 +2025-03-10 12:45:37,698 - INFO - CLOSED short at 2063.0 | PnL: 0.02% | $-0.30 +2025-03-10 12:45:37,698 - INFO - OPENED LONG at 2063.0 | Stop loss: 2052.685 | Take profit: 2093.9449999999997 +2025-03-10 12:45:37,800 - INFO - CLOSED long at 2061.89 | PnL: -0.05% | $-0.56 +2025-03-10 12:45:37,801 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.1994499999996 | Take profit: 2030.9616499999997 +2025-03-10 12:45:38,293 - INFO - CLOSED short at 2057.4 | PnL: 0.22% | $0.42 +2025-03-10 12:45:38,338 - INFO - OPENED SHORT at 2058.28 | Stop loss: 2068.5714 | Take profit: 2027.4058000000002 +2025-03-10 12:45:38,876 - INFO - CLOSED short at 2061.3 | PnL: -0.15% | $-0.89 +2025-03-10 12:45:38,877 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.9935 | Take profit: 2092.2195 +2025-03-10 12:45:39,256 - INFO - CLOSED long at 2066.34 | PnL: 0.24% | $0.52 +2025-03-10 12:45:39,257 - INFO - OPENED SHORT at 2066.34 | Stop loss: 2076.6717 | Take profit: 2035.3449 +2025-03-10 12:45:39,299 - INFO - CLOSED short at 2066.79 | PnL: -0.02% | $-0.44 +2025-03-10 12:45:39,454 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.01845 | Take profit: 2034.7046500000001 +2025-03-10 12:45:39,645 - INFO - STOP LOSS hit for short at 2076.01845 | PnL: -0.50% | $-2.15 +2025-03-10 12:45:39,692 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.38505 | Take profit: 2043.8848500000001 +2025-03-10 12:45:39,884 - INFO - CLOSED short at 2071.6 | PnL: 0.16% | $0.23 +2025-03-10 12:45:39,884 - INFO - OPENED LONG at 2071.6 | Stop loss: 2061.2419999999997 | Take profit: 2102.6739999999995 +2025-03-10 12:45:40,353 - INFO - CLOSED long at 2072.99 | PnL: 0.07% | $-0.12 +2025-03-10 12:45:40,697 - INFO - OPENED LONG at 2063.95 | Stop loss: 2053.6302499999997 | Take profit: 2094.9092499999997 +2025-03-10 12:45:40,739 - INFO - CLOSED long at 2063.97 | PnL: 0.00% | $-0.35 +2025-03-10 12:45:41,459 - INFO - OPENED SHORT at 2070.9 | Stop loss: 2081.2545 | Take profit: 2039.8365000000001 +2025-03-10 12:45:41,799 - INFO - CLOSED short at 2068.19 | PnL: 0.13% | $0.11 +2025-03-10 12:45:41,985 - INFO - OPENED LONG at 2071.61 | Stop loss: 2061.2519500000003 | Take profit: 2102.68415 +2025-03-10 12:45:42,080 - INFO - CLOSED long at 2075.07 | PnL: 0.17% | $0.23 +2025-03-10 12:45:42,080 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.44535 | Take profit: 2043.94395 +2025-03-10 12:45:42,411 - INFO - CLOSED short at 2075.61 | PnL: -0.03% | $-0.44 +2025-03-10 12:45:42,412 - INFO - OPENED LONG at 2075.61 | Stop loss: 2065.2319500000003 | Take profit: 2106.74415 +2025-03-10 12:45:42,503 - INFO - CLOSED long at 2072.09 | PnL: -0.17% | $-0.94 +2025-03-10 12:45:42,503 - INFO - OPENED SHORT at 2072.09 | Stop loss: 2082.45045 | Take profit: 2041.0086500000002 +2025-03-10 12:45:42,549 - INFO - CLOSED short at 2069.97 | PnL: 0.10% | $0.01 +2025-03-10 12:45:42,601 - INFO - OPENED SHORT at 2067.7 | Stop loss: 2078.0384999999997 | Take profit: 2036.6844999999998 +2025-03-10 12:45:42,787 - INFO - CLOSED short at 2066.89 | PnL: 0.04% | $-0.21 +2025-03-10 12:45:42,787 - INFO - OPENED LONG at 2066.89 | Stop loss: 2056.55555 | Take profit: 2097.89335 +2025-03-10 12:45:42,883 - INFO - CLOSED long at 2065.45 | PnL: -0.07% | $-0.58 +2025-03-10 12:45:42,883 - INFO - OPENED SHORT at 2065.45 | Stop loss: 2075.7772499999996 | Take profit: 2034.46825 +2025-03-10 12:45:43,172 - INFO - CLOSED short at 2065.5 | PnL: -0.00% | $-0.35 +2025-03-10 12:45:43,173 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.1725 | Take profit: 2096.4824999999996 +2025-03-10 12:45:43,527 - INFO - CLOSED long at 2063.98 | PnL: -0.07% | $-0.59 +2025-03-10 12:45:43,527 - INFO - OPENED SHORT at 2063.98 | Stop loss: 2074.2999 | Take profit: 2033.0203 +2025-03-10 12:45:44,044 - INFO - CLOSED short at 2058.65 | PnL: 0.26% | $0.54 +2025-03-10 12:45:44,044 - INFO - OPENED LONG at 2058.65 | Stop loss: 2048.35675 | Take profit: 2089.5297499999997 +2025-03-10 12:45:44,088 - INFO - CLOSED long at 2056.77 | PnL: -0.09% | $-0.65 +2025-03-10 12:45:44,089 - INFO - OPENED SHORT at 2056.77 | Stop loss: 2067.05385 | Take profit: 2025.91845 +2025-03-10 12:45:44,178 - INFO - CLOSED short at 2049.21 | PnL: 0.37% | $0.90 +2025-03-10 12:45:44,178 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.96395 | Take profit: 2079.9481499999997 +2025-03-10 12:45:44,274 - INFO - CLOSED long at 2051.99 | PnL: 0.14% | $0.12 +2025-03-10 12:45:44,275 - INFO - OPENED SHORT at 2051.99 | Stop loss: 2062.2499499999994 | Take profit: 2021.2101499999997 +2025-03-10 12:45:44,512 - INFO - STOP LOSS hit for short at 2062.2499499999994 | PnL: -0.50% | $-2.05 +2025-03-10 12:45:44,603 - INFO - OPENED LONG at 2065.1 | Stop loss: 2054.7745 | Take profit: 2096.0764999999997 +2025-03-10 12:45:44,654 - INFO - CLOSED long at 2062.43 | PnL: -0.13% | $-0.77 +2025-03-10 12:45:44,655 - INFO - OPENED SHORT at 2062.43 | Stop loss: 2072.7421499999996 | Take profit: 2031.49355 +2025-03-10 12:45:44,841 - INFO - CLOSED short at 2067.49 | PnL: -0.25% | $-1.14 +2025-03-10 12:45:44,842 - INFO - OPENED LONG at 2067.49 | Stop loss: 2057.15255 | Take profit: 2098.5023499999998 +2025-03-10 12:45:44,938 - INFO - CLOSED long at 2064.08 | PnL: -0.16% | $-0.86 +2025-03-10 12:45:44,939 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.4003999999995 | Take profit: 2033.1188 +2025-03-10 12:45:45,129 - INFO - CLOSED short at 2061.84 | PnL: 0.11% | $0.03 +2025-03-10 12:45:45,274 - INFO - OPENED LONG at 2070.31 | Stop loss: 2059.95845 | Take profit: 2101.3646499999995 +2025-03-10 12:45:45,320 - INFO - CLOSED long at 2070.24 | PnL: -0.00% | $-0.33 +2025-03-10 12:45:45,321 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.5911999999994 | Take profit: 2039.1863999999998 +2025-03-10 12:45:45,914 - INFO - STOP LOSS hit for short at 2080.5911999999994 | PnL: -0.50% | $-1.93 +2025-03-10 12:45:46,008 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.5350999999996 | Take profit: 2071.4746999999998 +2025-03-10 12:45:46,057 - INFO - STOP LOSS hit for short at 2113.5350999999996 | PnL: -0.50% | $-1.88 +2025-03-10 12:45:46,107 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2376999999997 | Take profit: 2107.4469 +2025-03-10 12:45:47,096 - INFO - CLOSED short at 2115.28 | PnL: 1.13% | $3.17 +2025-03-10 12:45:47,097 - INFO - OPENED LONG at 2115.28 | Stop loss: 2104.7036000000003 | Take profit: 2147.0092 +2025-03-10 12:45:47,140 - INFO - CLOSED long at 2107.43 | PnL: -0.37% | $-1.50 +2025-03-10 12:45:47,141 - INFO - OPENED SHORT at 2107.43 | Stop loss: 2117.9671499999995 | Take profit: 2075.81855 +2025-03-10 12:45:47,519 - INFO - STOP LOSS hit for short at 2117.9671499999995 | PnL: -0.50% | $-1.88 +2025-03-10 12:45:47,819 - INFO - OPENED SHORT at 2108.06 | Stop loss: 2118.6002999999996 | Take profit: 2076.4391 +2025-03-10 12:45:48,022 - INFO - CLOSED short at 2099.53 | PnL: 0.40% | $0.93 +2025-03-10 12:45:48,073 - INFO - OPENED SHORT at 2098.1 | Stop loss: 2108.5905 | Take profit: 2066.6285 +2025-03-10 12:45:49,292 - INFO - CLOSED short at 2088.44 | PnL: 0.46% | $1.11 +2025-03-10 12:45:49,292 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.9978 | Take profit: 2119.7666 +2025-03-10 12:45:49,443 - INFO - CLOSED long at 2082.44 | PnL: -0.29% | $-1.21 +2025-03-10 12:45:49,587 - INFO - OPENED SHORT at 2081.25 | Stop loss: 2091.65625 | Take profit: 2050.03125 +2025-03-10 12:45:49,691 - INFO - CLOSED short at 2085.09 | PnL: -0.18% | $-0.88 +2025-03-10 12:45:49,692 - INFO - OPENED LONG at 2085.09 | Stop loss: 2074.66455 | Take profit: 2116.36635 +2025-03-10 12:45:49,787 - INFO - CLOSED long at 2086.57 | PnL: 0.07% | $-0.09 +2025-03-10 12:45:49,787 - INFO - OPENED SHORT at 2086.57 | Stop loss: 2097.00285 | Take profit: 2055.27145 +2025-03-10 12:45:50,109 - INFO - CLOSED short at 2088.32 | PnL: -0.08% | $-0.56 +2025-03-10 12:45:50,280 - INFO - OPENED LONG at 2089.96 | Stop loss: 2079.5102 | Take profit: 2121.3093999999996 +2025-03-10 12:45:50,339 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 26.1% in downtrends | Avg Win=$0.53, Avg Loss=$-0.71 +2025-03-10 12:45:50,340 - INFO - Episode 11: Reward=198.68, Balance=$75.62, Win Rate=29.0%, Trades=69, Episode PnL=$-15.74, Total PnL=$-342.19, Max Drawdown=24.8%, Pred Accuracy=99.6% +2025-03-10 12:45:50,375 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:45:50,943 - INFO - OPENED LONG at 2056.9 | Stop loss: 2046.6155 | Take profit: 2087.7535 +2025-03-10 12:45:51,128 - INFO - CLOSED long at 2057.99 | PnL: 0.05% | $-0.19 +2025-03-10 12:45:51,129 - INFO - OPENED SHORT at 2057.99 | Stop loss: 2068.2799499999996 | Take profit: 2027.1201499999997 +2025-03-10 12:45:51,514 - INFO - CLOSED short at 2052.7 | PnL: 0.26% | $0.63 +2025-03-10 12:45:51,515 - INFO - OPENED LONG at 2052.7 | Stop loss: 2042.4364999999998 | Take profit: 2083.4904999999994 +2025-03-10 12:45:51,571 - INFO - CLOSED long at 2051.66 | PnL: -0.05% | $-0.61 +2025-03-10 12:45:51,572 - INFO - OPENED SHORT at 2051.66 | Stop loss: 2061.9183 | Take profit: 2020.8850999999997 +2025-03-10 12:45:51,734 - INFO - CLOSED short at 2052.25 | PnL: -0.03% | $-0.51 +2025-03-10 12:45:51,901 - INFO - OPENED SHORT at 2049.49 | Stop loss: 2059.7374499999996 | Take profit: 2018.7476499999998 +2025-03-10 12:45:51,952 - INFO - CLOSED short at 2050.2 | PnL: -0.03% | $-0.53 +2025-03-10 12:45:52,067 - INFO - OPENED LONG at 2051.99 | Stop loss: 2041.7300499999997 | Take profit: 2082.7698499999997 +2025-03-10 12:45:52,126 - INFO - CLOSED long at 2049.61 | PnL: -0.12% | $-0.85 +2025-03-10 12:45:52,127 - INFO - OPENED SHORT at 2049.61 | Stop loss: 2059.85805 | Take profit: 2018.8658500000001 +2025-03-10 12:45:52,421 - INFO - CLOSED short at 2047.4 | PnL: 0.11% | $0.03 +2025-03-10 12:45:52,421 - INFO - OPENED LONG at 2047.4 | Stop loss: 2037.163 | Take profit: 2078.111 +2025-03-10 12:45:52,591 - INFO - CLOSED long at 2045.99 | PnL: -0.07% | $-0.66 +2025-03-10 12:45:52,591 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.2199499999997 | Take profit: 2015.30015 +2025-03-10 12:45:52,919 - INFO - CLOSED short at 2050.24 | PnL: -0.21% | $-1.20 +2025-03-10 12:45:52,919 - INFO - OPENED LONG at 2050.24 | Stop loss: 2039.9887999999999 | Take profit: 2080.9936 +2025-03-10 12:45:53,488 - INFO - CLOSED long at 2060.13 | PnL: 0.48% | $1.47 +2025-03-10 12:45:53,488 - INFO - OPENED SHORT at 2060.13 | Stop loss: 2070.43065 | Take profit: 2029.2280500000002 +2025-03-10 12:45:53,604 - INFO - CLOSED short at 2061.49 | PnL: -0.07% | $-0.65 +2025-03-10 12:45:53,732 - INFO - OPENED SHORT at 2064.61 | Stop loss: 2074.93305 | Take profit: 2033.64085 +2025-03-10 12:45:53,843 - INFO - CLOSED short at 2061.61 | PnL: 0.15% | $0.18 +2025-03-10 12:45:53,844 - INFO - OPENED LONG at 2061.61 | Stop loss: 2051.30195 | Take profit: 2092.53415 +2025-03-10 12:45:53,926 - INFO - CLOSED long at 2064.69 | PnL: 0.15% | $0.19 +2025-03-10 12:45:53,926 - INFO - OPENED SHORT at 2064.69 | Stop loss: 2075.01345 | Take profit: 2033.71965 +2025-03-10 12:45:54,684 - INFO - CLOSED short at 2058.11 | PnL: 0.32% | $0.85 +2025-03-10 12:45:54,957 - INFO - OPENED SHORT at 2070.58 | Stop loss: 2080.9329 | Take profit: 2039.5212999999999 +2025-03-10 12:45:56,109 - INFO - CLOSED short at 2072.8 | PnL: -0.11% | $-0.81 +2025-03-10 12:45:56,110 - INFO - OPENED LONG at 2072.8 | Stop loss: 2062.436 | Take profit: 2103.892 +2025-03-10 12:45:56,156 - INFO - CLOSED long at 2070.79 | PnL: -0.10% | $-0.77 +2025-03-10 12:45:56,382 - INFO - OPENED SHORT at 2070.36 | Stop loss: 2080.7118 | Take profit: 2039.3046000000002 +2025-03-10 12:45:56,594 - INFO - CLOSED short at 2069.19 | PnL: 0.06% | $-0.17 +2025-03-10 12:45:56,595 - INFO - OPENED LONG at 2069.19 | Stop loss: 2058.84405 | Take profit: 2100.2278499999998 +2025-03-10 12:45:56,757 - INFO - CLOSED long at 2067.51 | PnL: -0.08% | $-0.70 +2025-03-10 12:45:56,757 - INFO - OPENED SHORT at 2067.51 | Stop loss: 2077.84755 | Take profit: 2036.49735 +2025-03-10 12:45:56,870 - INFO - CLOSED short at 2066.39 | PnL: 0.05% | $-0.18 +2025-03-10 12:45:56,871 - INFO - OPENED LONG at 2066.39 | Stop loss: 2056.0580499999996 | Take profit: 2097.3858499999997 +2025-03-10 12:45:57,019 - INFO - CLOSED long at 2066.29 | PnL: -0.00% | $-0.40 +2025-03-10 12:45:57,019 - INFO - OPENED SHORT at 2066.29 | Stop loss: 2076.6214499999996 | Take profit: 2035.29565 +2025-03-10 12:45:57,278 - INFO - CLOSED short at 2068.51 | PnL: -0.11% | $-0.79 +2025-03-10 12:45:57,601 - INFO - OPENED LONG at 2071.39 | Stop loss: 2061.03305 | Take profit: 2102.4608499999995 +2025-03-10 12:45:57,661 - INFO - CLOSED long at 2071.36 | PnL: -0.00% | $-0.38 +2025-03-10 12:45:57,661 - INFO - OPENED SHORT at 2071.36 | Stop loss: 2081.7167999999997 | Take profit: 2040.2896 +2025-03-10 12:45:57,927 - INFO - CLOSED short at 2074.29 | PnL: -0.14% | $-0.91 +2025-03-10 12:45:58,123 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.752 | Take profit: 2039.344 +2025-03-10 12:45:58,184 - INFO - CLOSED short at 2071.11 | PnL: -0.03% | $-0.50 +2025-03-10 12:45:58,184 - INFO - OPENED LONG at 2071.11 | Stop loss: 2060.75445 | Take profit: 2102.17665 +2025-03-10 12:45:58,257 - INFO - CLOSED long at 2069.46 | PnL: -0.08% | $-0.67 +2025-03-10 12:45:58,258 - INFO - OPENED SHORT at 2069.46 | Stop loss: 2079.8073 | Take profit: 2038.4181 +2025-03-10 12:45:58,592 - INFO - CLOSED short at 2066.8 | PnL: 0.13% | $0.10 +2025-03-10 12:45:58,593 - INFO - OPENED LONG at 2066.8 | Stop loss: 2056.4660000000003 | Take profit: 2097.802 +2025-03-10 12:45:58,794 - INFO - CLOSED long at 2067.89 | PnL: 0.05% | $-0.17 +2025-03-10 12:45:58,889 - INFO - OPENED SHORT at 2068.8 | Stop loss: 2079.144 | Take profit: 2037.7680000000003 +2025-03-10 12:45:59,042 - INFO - CLOSED short at 2067.59 | PnL: 0.06% | $-0.15 +2025-03-10 12:45:59,043 - INFO - OPENED LONG at 2067.59 | Stop loss: 2057.25205 | Take profit: 2098.60385 +2025-03-10 12:45:59,352 - INFO - CLOSED long at 2070.73 | PnL: 0.15% | $0.19 +2025-03-10 12:45:59,353 - INFO - OPENED SHORT at 2070.73 | Stop loss: 2081.0836499999996 | Take profit: 2039.66905 +2025-03-10 12:45:59,563 - INFO - CLOSED short at 2067.11 | PnL: 0.17% | $0.27 +2025-03-10 12:45:59,768 - INFO - OPENED SHORT at 2065.28 | Stop loss: 2075.6064 | Take profit: 2034.3008000000002 +2025-03-10 12:46:01,179 - INFO - CLOSED short at 2061.6 | PnL: 0.18% | $0.29 +2025-03-10 12:46:01,422 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.6115499999996 | Take profit: 2029.40535 +2025-03-10 12:46:02,171 - INFO - CLOSED short at 2062.6 | PnL: -0.11% | $-0.78 +2025-03-10 12:46:02,219 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.1994499999996 | Take profit: 2030.9616499999997 +2025-03-10 12:46:02,261 - INFO - CLOSED short at 2061.7 | PnL: 0.01% | $-0.33 +2025-03-10 12:46:02,307 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0035 | Take profit: 2029.7894999999999 +2025-03-10 12:46:02,589 - INFO - CLOSED short at 2059.96 | PnL: 0.04% | $-0.23 +2025-03-10 12:46:02,589 - INFO - OPENED LONG at 2059.96 | Stop loss: 2049.6602 | Take profit: 2090.8594 +2025-03-10 12:46:02,635 - INFO - CLOSED long at 2059.46 | PnL: -0.02% | $-0.45 +2025-03-10 12:46:02,635 - INFO - OPENED SHORT at 2059.46 | Stop loss: 2069.7572999999998 | Take profit: 2028.5681 +2025-03-10 12:46:02,818 - INFO - CLOSED short at 2055.6 | PnL: 0.19% | $0.32 +2025-03-10 12:46:02,819 - INFO - OPENED LONG at 2055.6 | Stop loss: 2045.322 | Take profit: 2086.4339999999997 +2025-03-10 12:46:02,869 - INFO - CLOSED long at 2054.89 | PnL: -0.03% | $-0.49 +2025-03-10 12:46:02,870 - INFO - OPENED SHORT at 2054.89 | Stop loss: 2065.1644499999998 | Take profit: 2024.0666499999998 +2025-03-10 12:46:03,425 - INFO - STOP LOSS hit for short at 2065.1644499999998 | PnL: -0.50% | $-2.17 +2025-03-10 12:46:03,680 - INFO - OPENED SHORT at 2066.34 | Stop loss: 2076.6717 | Take profit: 2035.3449 +2025-03-10 12:46:03,933 - INFO - CLOSED short at 2069.79 | PnL: -0.17% | $-0.94 +2025-03-10 12:46:03,984 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3599999999997 | Take profit: 2040.92 +2025-03-10 12:46:04,078 - INFO - CLOSED short at 2078.01 | PnL: -0.29% | $-1.36 +2025-03-10 12:46:04,079 - INFO - OPENED LONG at 2078.01 | Stop loss: 2067.6199500000002 | Take profit: 2109.18015 +2025-03-10 12:46:04,176 - INFO - CLOSED long at 2072.6 | PnL: -0.26% | $-1.24 +2025-03-10 12:46:04,176 - INFO - OPENED SHORT at 2072.6 | Stop loss: 2082.9629999999997 | Take profit: 2041.511 +2025-03-10 12:46:04,306 - INFO - CLOSED short at 2071.6 | PnL: 0.05% | $-0.18 +2025-03-10 12:46:04,307 - INFO - OPENED LONG at 2071.6 | Stop loss: 2061.2419999999997 | Take profit: 2102.6739999999995 +2025-03-10 12:46:04,441 - INFO - CLOSED long at 2068.15 | PnL: -0.17% | $-0.90 +2025-03-10 12:46:04,442 - INFO - OPENED SHORT at 2068.15 | Stop loss: 2078.49075 | Take profit: 2037.12775 +2025-03-10 12:46:05,192 - INFO - CLOSED short at 2065.3 | PnL: 0.14% | $0.13 +2025-03-10 12:46:05,193 - INFO - OPENED LONG at 2065.3 | Stop loss: 2054.9735 | Take profit: 2096.2795 +2025-03-10 12:46:05,243 - INFO - CLOSED long at 2064.4 | PnL: -0.04% | $-0.48 +2025-03-10 12:46:05,244 - INFO - OPENED SHORT at 2064.4 | Stop loss: 2074.7219999999998 | Take profit: 2033.434 +2025-03-10 12:46:05,631 - INFO - CLOSED short at 2068.59 | PnL: -0.20% | $-1.01 +2025-03-10 12:46:05,725 - INFO - OPENED SHORT at 2070.2 | Stop loss: 2080.5509999999995 | Take profit: 2039.1469999999997 +2025-03-10 12:46:06,387 - INFO - CLOSED short at 2074.37 | PnL: -0.20% | $-0.99 +2025-03-10 12:46:06,388 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.99815 | Take profit: 2105.48555 +2025-03-10 12:46:06,523 - INFO - CLOSED long at 2073.27 | PnL: -0.05% | $-0.50 +2025-03-10 12:46:06,568 - INFO - OPENED LONG at 2073.99 | Stop loss: 2063.62005 | Take profit: 2105.0998499999996 +2025-03-10 12:46:06,659 - INFO - CLOSED long at 2075.29 | PnL: 0.06% | $-0.12 +2025-03-10 12:46:06,659 - INFO - OPENED SHORT at 2075.29 | Stop loss: 2085.6664499999997 | Take profit: 2044.16065 +2025-03-10 12:46:07,083 - INFO - CLOSED short at 2066.4 | PnL: 0.43% | $1.06 +2025-03-10 12:46:07,371 - INFO - OPENED SHORT at 2070.19 | Stop loss: 2080.5409499999996 | Take profit: 2039.13715 +2025-03-10 12:46:07,414 - INFO - CLOSED short at 2070.1 | PnL: 0.00% | $-0.31 +2025-03-10 12:46:07,415 - INFO - OPENED LONG at 2070.1 | Stop loss: 2059.7495 | Take profit: 2101.1514999999995 +2025-03-10 12:46:07,552 - INFO - CLOSED long at 2065.7 | PnL: -0.21% | $-1.02 +2025-03-10 12:46:07,553 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.0284999999994 | Take profit: 2034.7144999999998 +2025-03-10 12:46:09,129 - INFO - CLOSED short at 2065.12 | PnL: 0.03% | $-0.23 +2025-03-10 12:46:09,227 - INFO - OPENED SHORT at 2067.49 | Stop loss: 2077.8274499999998 | Take profit: 2036.4776499999998 +2025-03-10 12:46:10,034 - INFO - CLOSED short at 2071.89 | PnL: -0.21% | $-1.00 +2025-03-10 12:46:10,035 - INFO - OPENED LONG at 2071.89 | Stop loss: 2061.53055 | Take profit: 2102.9683499999996 +2025-03-10 12:46:10,134 - INFO - CLOSED long at 2074.9 | PnL: 0.15% | $0.14 +2025-03-10 12:46:10,224 - INFO - OPENED LONG at 2077.61 | Stop loss: 2067.22195 | Take profit: 2108.7741499999997 +2025-03-10 12:46:10,272 - INFO - CLOSED long at 2085.56 | PnL: 0.38% | $0.90 +2025-03-10 12:46:10,273 - INFO - OPENED SHORT at 2085.56 | Stop loss: 2095.9878 | Take profit: 2054.2766 +2025-03-10 12:46:10,371 - INFO - STOP LOSS hit for short at 2095.9878 | PnL: -0.50% | $-1.92 +2025-03-10 12:46:10,419 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3534999999997 | Take profit: 2098.7394999999997 +2025-03-10 12:46:10,552 - INFO - CLOSED short at 2133.95 | PnL: -0.15% | $-0.79 +2025-03-10 12:46:10,646 - INFO - OPENED SHORT at 2141.41 | Stop loss: 2152.11705 | Take profit: 2109.28885 +2025-03-10 12:46:10,689 - INFO - CLOSED short at 2141.3 | PnL: 0.01% | $-0.29 +2025-03-10 12:46:11,002 - INFO - OPENED SHORT at 2121.09 | Stop loss: 2131.6954499999997 | Take profit: 2089.27365 +2025-03-10 12:46:11,091 - INFO - CLOSED short at 2117.24 | PnL: 0.18% | $0.25 +2025-03-10 12:46:11,138 - INFO - OPENED SHORT at 2119.93 | Stop loss: 2130.5296499999995 | Take profit: 2088.13105 +2025-03-10 12:46:11,510 - INFO - CLOSED short at 2109.05 | PnL: 0.51% | $1.28 +2025-03-10 12:46:11,511 - INFO - OPENED LONG at 2109.05 | Stop loss: 2098.50475 | Take profit: 2140.68575 +2025-03-10 12:46:11,554 - INFO - CLOSED long at 2112.09 | PnL: 0.14% | $0.14 +2025-03-10 12:46:11,555 - INFO - OPENED SHORT at 2112.09 | Stop loss: 2122.65045 | Take profit: 2080.4086500000003 +2025-03-10 12:46:11,794 - INFO - CLOSED short at 2120.81 | PnL: -0.41% | $-1.62 +2025-03-10 12:46:11,795 - INFO - OPENED LONG at 2120.81 | Stop loss: 2110.20595 | Take profit: 2152.6221499999997 +2025-03-10 12:46:11,930 - INFO - CLOSED long at 2110.9 | PnL: -0.47% | $-1.75 +2025-03-10 12:46:11,980 - INFO - OPENED LONG at 2108.71 | Stop loss: 2098.16645 | Take profit: 2140.3406499999996 +2025-03-10 12:46:12,023 - INFO - CLOSED long at 2106.49 | PnL: -0.11% | $-0.62 +2025-03-10 12:46:12,073 - INFO - OPENED SHORT at 2108.06 | Stop loss: 2118.6002999999996 | Take profit: 2076.4391 +2025-03-10 12:46:12,535 - INFO - CLOSED short at 2100.69 | PnL: 0.35% | $0.75 +2025-03-10 12:46:12,535 - INFO - OPENED LONG at 2100.69 | Stop loss: 2090.18655 | Take profit: 2132.20035 +2025-03-10 12:46:12,635 - INFO - CLOSED long at 2106.39 | PnL: 0.27% | $0.52 +2025-03-10 12:46:12,636 - INFO - OPENED SHORT at 2106.39 | Stop loss: 2116.9219499999995 | Take profit: 2074.7941499999997 +2025-03-10 12:46:13,508 - INFO - CLOSED short at 2085.3 | PnL: 1.00% | $2.74 +2025-03-10 12:46:13,508 - INFO - OPENED LONG at 2085.3 | Stop loss: 2074.8735 | Take profit: 2116.5795 +2025-03-10 12:46:13,554 - INFO - CLOSED long at 2082.44 | PnL: -0.14% | $-0.75 +2025-03-10 12:46:13,555 - INFO - OPENED SHORT at 2082.44 | Stop loss: 2092.8522 | Take profit: 2051.2034 +2025-03-10 12:46:13,784 - INFO - CLOSED short at 2085.09 | PnL: -0.13% | $-0.71 +2025-03-10 12:46:13,833 - INFO - OPENED SHORT at 2083.59 | Stop loss: 2094.0079499999997 | Take profit: 2052.33615 +2025-03-10 12:46:14,099 - INFO - CLOSED short at 2085.85 | PnL: -0.11% | $-0.65 +2025-03-10 12:46:14,100 - INFO - OPENED LONG at 2085.85 | Stop loss: 2075.4207499999998 | Take profit: 2117.13775 +2025-03-10 12:46:14,157 - INFO - CLOSED long at 2088.66 | PnL: 0.13% | $0.11 +2025-03-10 12:46:14,157 - INFO - OPENED SHORT at 2088.66 | Stop loss: 2099.1032999999998 | Take profit: 2057.3300999999997 +2025-03-10 12:46:14,361 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 36.0% in downtrends | Avg Win=$0.57, Avg Loss=$-0.71 +2025-03-10 12:46:14,362 - INFO - Episode 12: Reward=198.18, Balance=$76.89, Win Rate=30.6%, Trades=72, Episode PnL=$-13.52, Total PnL=$-365.31, Max Drawdown=25.1%, Pred Accuracy=99.8% +2025-03-10 12:46:14,392 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:46:14,687 - INFO - OPENED SHORT at 2059.03 | Stop loss: 2069.32515 | Take profit: 2028.1445500000002 +2025-03-10 12:46:14,824 - INFO - CLOSED short at 2060.51 | PnL: -0.07% | $-0.69 +2025-03-10 12:46:14,873 - INFO - OPENED SHORT at 2057.52 | Stop loss: 2067.8075999999996 | Take profit: 2026.6571999999999 +2025-03-10 12:46:14,969 - INFO - CLOSED short at 2057.59 | PnL: -0.00% | $-0.41 +2025-03-10 12:46:15,019 - INFO - OPENED SHORT at 2057.9 | Stop loss: 2068.1895 | Take profit: 2027.0315 +2025-03-10 12:46:15,154 - INFO - CLOSED short at 2055.2 | PnL: 0.13% | $0.12 +2025-03-10 12:46:15,154 - INFO - OPENED LONG at 2055.2 | Stop loss: 2044.9239999999998 | Take profit: 2086.028 +2025-03-10 12:46:15,203 - INFO - CLOSED long at 2058.59 | PnL: 0.16% | $0.26 +2025-03-10 12:46:15,203 - INFO - OPENED SHORT at 2058.59 | Stop loss: 2068.8829499999997 | Take profit: 2027.71115 +2025-03-10 12:46:15,345 - INFO - CLOSED short at 2053.56 | PnL: 0.24% | $0.57 +2025-03-10 12:46:15,404 - INFO - OPENED SHORT at 2052.7 | Stop loss: 2062.9634999999994 | Take profit: 2021.9094999999998 +2025-03-10 12:46:15,447 - INFO - CLOSED short at 2051.66 | PnL: 0.05% | $-0.20 +2025-03-10 12:46:15,448 - INFO - OPENED LONG at 2051.66 | Stop loss: 2041.4017 | Take profit: 2082.4348999999997 +2025-03-10 12:46:15,501 - INFO - CLOSED long at 2052.16 | PnL: 0.02% | $-0.30 +2025-03-10 12:46:15,502 - INFO - OPENED SHORT at 2052.16 | Stop loss: 2062.4207999999994 | Take profit: 2021.3775999999998 +2025-03-10 12:46:15,596 - INFO - CLOSED short at 2052.25 | PnL: -0.00% | $-0.41 +2025-03-10 12:46:15,646 - INFO - OPENED SHORT at 2050.71 | Stop loss: 2060.96355 | Take profit: 2019.94935 +2025-03-10 12:46:15,830 - INFO - CLOSED short at 2049.6 | PnL: 0.05% | $-0.18 +2025-03-10 12:46:15,831 - INFO - OPENED LONG at 2049.6 | Stop loss: 2039.3519999999999 | Take profit: 2080.3439999999996 +2025-03-10 12:46:15,884 - INFO - CLOSED long at 2051.99 | PnL: 0.12% | $0.07 +2025-03-10 12:46:15,885 - INFO - OPENED SHORT at 2051.99 | Stop loss: 2062.2499499999994 | Take profit: 2021.2101499999997 +2025-03-10 12:46:16,065 - INFO - CLOSED short at 2047.39 | PnL: 0.22% | $0.49 +2025-03-10 12:46:16,065 - INFO - OPENED LONG at 2047.39 | Stop loss: 2037.1530500000001 | Take profit: 2078.10085 +2025-03-10 12:46:16,118 - INFO - CLOSED long at 2046.58 | PnL: -0.04% | $-0.55 +2025-03-10 12:46:16,118 - INFO - OPENED SHORT at 2046.58 | Stop loss: 2056.8129 | Take profit: 2015.8813 +2025-03-10 12:46:16,161 - INFO - CLOSED short at 2047.4 | PnL: -0.04% | $-0.55 +2025-03-10 12:46:16,259 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.2199499999997 | Take profit: 2015.30015 +2025-03-10 12:46:16,449 - INFO - CLOSED short at 2047.59 | PnL: -0.08% | $-0.70 +2025-03-10 12:46:16,544 - INFO - OPENED SHORT at 2050.0 | Stop loss: 2060.25 | Take profit: 2019.25 +2025-03-10 12:46:16,792 - INFO - CLOSED short at 2051.89 | PnL: -0.09% | $-0.75 +2025-03-10 12:46:16,793 - INFO - OPENED LONG at 2051.89 | Stop loss: 2041.6305499999999 | Take profit: 2082.6683499999995 +2025-03-10 12:46:16,846 - INFO - CLOSED long at 2052.3 | PnL: 0.02% | $-0.31 +2025-03-10 12:46:16,848 - INFO - OPENED SHORT at 2052.3 | Stop loss: 2062.5615 | Take profit: 2021.5155000000002 +2025-03-10 12:46:16,893 - INFO - CLOSED short at 2055.69 | PnL: -0.17% | $-1.02 +2025-03-10 12:46:16,894 - INFO - OPENED LONG at 2055.69 | Stop loss: 2045.41155 | Take profit: 2086.52535 +2025-03-10 12:46:17,126 - INFO - CLOSED long at 2059.7 | PnL: 0.20% | $0.36 +2025-03-10 12:46:17,127 - INFO - OPENED SHORT at 2059.7 | Stop loss: 2069.9984999999997 | Take profit: 2028.8044999999997 +2025-03-10 12:46:17,554 - INFO - CLOSED short at 2058.3 | PnL: 0.07% | $-0.12 +2025-03-10 12:46:17,555 - INFO - OPENED LONG at 2058.3 | Stop loss: 2048.0085000000004 | Take profit: 2089.1745 +2025-03-10 12:46:17,599 - INFO - CLOSED long at 2060.0 | PnL: 0.08% | $-0.07 +2025-03-10 12:46:17,701 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.2044499999997 | Take profit: 2031.9466499999999 +2025-03-10 12:46:17,909 - INFO - CLOSED short at 2057.89 | PnL: 0.24% | $0.54 +2025-03-10 12:46:17,966 - INFO - OPENED SHORT at 2057.94 | Stop loss: 2068.2297 | Take profit: 2027.0709 +2025-03-10 12:46:18,272 - INFO - STOP LOSS hit for short at 2068.2297 | PnL: -0.50% | $-2.31 +2025-03-10 12:46:18,511 - INFO - OPENED LONG at 2070.99 | Stop loss: 2060.63505 | Take profit: 2102.0548499999995 +2025-03-10 12:46:18,563 - INFO - CLOSED long at 2069.6 | PnL: -0.07% | $-0.63 +2025-03-10 12:46:18,563 - INFO - OPENED SHORT at 2069.6 | Stop loss: 2079.948 | Take profit: 2038.5559999999998 +2025-03-10 12:46:19,766 - INFO - CLOSED short at 2069.19 | PnL: 0.02% | $-0.30 +2025-03-10 12:46:19,767 - INFO - OPENED LONG at 2069.19 | Stop loss: 2058.84405 | Take profit: 2100.2278499999998 +2025-03-10 12:46:20,149 - INFO - CLOSED long at 2066.29 | PnL: -0.14% | $-0.89 +2025-03-10 12:46:20,149 - INFO - OPENED SHORT at 2066.29 | Stop loss: 2076.6214499999996 | Take profit: 2035.29565 +2025-03-10 12:46:22,121 - INFO - CLOSED short at 2070.7 | PnL: -0.21% | $-1.15 +2025-03-10 12:46:22,121 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3464999999997 | Take profit: 2101.7604999999994 +2025-03-10 12:46:22,357 - INFO - CLOSED long at 2067.84 | PnL: -0.14% | $-0.87 +2025-03-10 12:46:22,412 - INFO - OPENED SHORT at 2067.11 | Stop loss: 2077.44555 | Take profit: 2036.10335 +2025-03-10 12:46:22,465 - INFO - CLOSED short at 2067.86 | PnL: -0.04% | $-0.49 +2025-03-10 12:46:22,554 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.7695 | Take profit: 2097.0914999999995 +2025-03-10 12:46:22,595 - INFO - CLOSED long at 2065.28 | PnL: -0.04% | $-0.50 +2025-03-10 12:46:22,742 - INFO - OPENED SHORT at 2070.04 | Stop loss: 2080.3902 | Take profit: 2038.9894 +2025-03-10 12:46:22,785 - INFO - CLOSED short at 2067.8 | PnL: 0.11% | $0.03 +2025-03-10 12:46:22,785 - INFO - OPENED LONG at 2067.8 | Stop loss: 2057.4610000000002 | Take profit: 2098.817 +2025-03-10 12:46:22,975 - INFO - CLOSED long at 2064.99 | PnL: -0.14% | $-0.84 +2025-03-10 12:46:22,976 - INFO - OPENED SHORT at 2064.99 | Stop loss: 2075.3149499999995 | Take profit: 2034.0151499999997 +2025-03-10 12:46:24,168 - INFO - CLOSED short at 2059.3 | PnL: 0.28% | $0.62 +2025-03-10 12:46:24,169 - INFO - OPENED LONG at 2059.3 | Stop loss: 2049.0035000000003 | Take profit: 2090.1895 +2025-03-10 12:46:24,211 - INFO - CLOSED long at 2060.31 | PnL: 0.05% | $-0.18 +2025-03-10 12:46:24,363 - INFO - OPENED SHORT at 2062.61 | Stop loss: 2072.92305 | Take profit: 2031.6708500000002 +2025-03-10 12:46:24,408 - INFO - CLOSED short at 2060.91 | PnL: 0.08% | $-0.06 +2025-03-10 12:46:24,819 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.70695 | Take profit: 2032.43915 +2025-03-10 12:46:25,012 - INFO - CLOSED short at 2063.0 | PnL: 0.02% | $-0.29 +2025-03-10 12:46:25,012 - INFO - OPENED LONG at 2063.0 | Stop loss: 2052.685 | Take profit: 2093.9449999999997 +2025-03-10 12:46:25,516 - INFO - CLOSED long at 2059.46 | PnL: -0.17% | $-0.96 +2025-03-10 12:46:25,706 - INFO - OPENED SHORT at 2055.6 | Stop loss: 2065.8779999999997 | Take profit: 2024.7659999999998 +2025-03-10 12:46:25,980 - INFO - CLOSED short at 2061.66 | PnL: -0.29% | $-1.38 +2025-03-10 12:46:25,981 - INFO - OPENED LONG at 2061.66 | Stop loss: 2051.3516999999997 | Take profit: 2092.5849 +2025-03-10 12:46:26,025 - INFO - CLOSED long at 2061.5 | PnL: -0.01% | $-0.37 +2025-03-10 12:46:26,026 - INFO - OPENED SHORT at 2061.5 | Stop loss: 2071.8075 | Take profit: 2030.5774999999999 +2025-03-10 12:46:26,795 - INFO - STOP LOSS hit for short at 2071.8075 | PnL: -0.50% | $-2.05 +2025-03-10 12:46:27,077 - INFO - OPENED SHORT at 2070.01 | Stop loss: 2080.36005 | Take profit: 2038.9598500000002 +2025-03-10 12:46:27,316 - INFO - CLOSED short at 2068.39 | PnL: 0.08% | $-0.07 +2025-03-10 12:46:27,409 - INFO - OPENED SHORT at 2069.03 | Stop loss: 2079.37515 | Take profit: 2037.9945500000001 +2025-03-10 12:46:27,737 - INFO - CLOSED short at 2066.38 | PnL: 0.13% | $0.09 +2025-03-10 12:46:27,737 - INFO - OPENED LONG at 2066.38 | Stop loss: 2056.0481 | Take profit: 2097.3757 +2025-03-10 12:46:27,875 - INFO - CLOSED long at 2063.95 | PnL: -0.12% | $-0.73 +2025-03-10 12:46:27,876 - INFO - OPENED SHORT at 2063.95 | Stop loss: 2074.2697499999995 | Take profit: 2032.9907499999997 +2025-03-10 12:46:28,317 - INFO - CLOSED short at 2066.8 | PnL: -0.14% | $-0.79 +2025-03-10 12:46:28,368 - INFO - OPENED SHORT at 2066.5 | Stop loss: 2076.8325 | Take profit: 2035.5025 +2025-03-10 12:46:29,560 - INFO - CLOSED short at 2076.9 | PnL: -0.50% | $-1.98 +2025-03-10 12:46:29,602 - INFO - OPENED SHORT at 2075.61 | Stop loss: 2085.98805 | Take profit: 2044.47585 +2025-03-10 12:46:29,744 - INFO - CLOSED short at 2069.97 | PnL: 0.27% | $0.55 +2025-03-10 12:46:29,745 - INFO - OPENED LONG at 2069.97 | Stop loss: 2059.6201499999997 | Take profit: 2101.0195499999995 +2025-03-10 12:46:29,786 - INFO - CLOSED long at 2067.7 | PnL: -0.11% | $-0.68 +2025-03-10 12:46:29,787 - INFO - OPENED SHORT at 2067.7 | Stop loss: 2078.0384999999997 | Take profit: 2036.6844999999998 +2025-03-10 12:46:29,973 - INFO - CLOSED short at 2066.89 | PnL: 0.04% | $-0.19 +2025-03-10 12:46:30,138 - INFO - OPENED SHORT at 2068.1 | Stop loss: 2078.4404999999997 | Take profit: 2037.0784999999998 +2025-03-10 12:46:30,187 - INFO - CLOSED short at 2069.0 | PnL: -0.04% | $-0.46 +2025-03-10 12:46:30,187 - INFO - OPENED LONG at 2069.0 | Stop loss: 2058.655 | Take profit: 2100.035 +2025-03-10 12:46:30,243 - INFO - CLOSED long at 2070.19 | PnL: 0.06% | $-0.13 +2025-03-10 12:46:30,244 - INFO - OPENED SHORT at 2070.19 | Stop loss: 2080.5409499999996 | Take profit: 2039.13715 +2025-03-10 12:46:30,499 - INFO - CLOSED short at 2065.8 | PnL: 0.21% | $0.35 +2025-03-10 12:46:30,500 - INFO - OPENED LONG at 2065.8 | Stop loss: 2055.471 | Take profit: 2096.787 +2025-03-10 12:46:30,550 - INFO - CLOSED long at 2065.07 | PnL: -0.04% | $-0.43 +2025-03-10 12:46:30,550 - INFO - OPENED SHORT at 2065.07 | Stop loss: 2075.39535 | Take profit: 2034.0939500000002 +2025-03-10 12:46:30,824 - INFO - CLOSED short at 2065.06 | PnL: 0.00% | $-0.31 +2025-03-10 12:46:30,877 - INFO - OPENED SHORT at 2064.11 | Stop loss: 2074.43055 | Take profit: 2033.1483500000002 +2025-03-10 12:46:31,782 - INFO - CLOSED short at 2063.9 | PnL: 0.01% | $-0.28 +2025-03-10 12:46:31,783 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.5805 | Take profit: 2094.8585 +2025-03-10 12:46:31,838 - INFO - CLOSED long at 2065.1 | PnL: 0.06% | $-0.13 +2025-03-10 12:46:31,839 - INFO - OPENED SHORT at 2065.1 | Stop loss: 2075.4255 | Take profit: 2034.1235 +2025-03-10 12:46:32,073 - INFO - CLOSED short at 2067.49 | PnL: -0.12% | $-0.68 +2025-03-10 12:46:32,074 - INFO - OPENED LONG at 2067.49 | Stop loss: 2057.15255 | Take profit: 2098.5023499999998 +2025-03-10 12:46:32,121 - INFO - CLOSED long at 2066.59 | PnL: -0.04% | $-0.45 +2025-03-10 12:46:32,121 - INFO - OPENED SHORT at 2066.59 | Stop loss: 2076.92295 | Take profit: 2035.5911500000002 +2025-03-10 12:46:32,258 - INFO - CLOSED short at 2059.9 | PnL: 0.32% | $0.69 +2025-03-10 12:46:32,310 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0035 | Take profit: 2029.7894999999999 +2025-03-10 12:46:32,352 - INFO - CLOSED short at 2061.84 | PnL: -0.06% | $-0.48 +2025-03-10 12:46:32,353 - INFO - OPENED LONG at 2061.84 | Stop loss: 2051.5308 | Take profit: 2092.7676 +2025-03-10 12:46:32,444 - INFO - CLOSED long at 2065.72 | PnL: 0.19% | $0.27 +2025-03-10 12:46:32,444 - INFO - OPENED SHORT at 2065.72 | Stop loss: 2076.0485999999996 | Take profit: 2034.7341999999999 +2025-03-10 12:46:32,491 - INFO - CLOSED short at 2070.31 | PnL: -0.22% | $-1.00 +2025-03-10 12:46:32,545 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.5911999999994 | Take profit: 2039.1863999999998 +2025-03-10 12:46:32,673 - INFO - CLOSED short at 2070.41 | PnL: -0.01% | $-0.33 +2025-03-10 12:46:32,768 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.42025 | Take profit: 2042.9392500000001 +2025-03-10 12:46:32,811 - INFO - CLOSED short at 2072.99 | PnL: 0.05% | $-0.15 +2025-03-10 12:46:32,812 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6250499999996 | Take profit: 2104.0848499999997 +2025-03-10 12:46:32,953 - INFO - CLOSED long at 2074.9 | PnL: 0.09% | $-0.02 +2025-03-10 12:46:32,954 - INFO - OPENED SHORT at 2074.9 | Stop loss: 2085.2745 | Take profit: 2043.7765000000002 +2025-03-10 12:46:33,099 - INFO - STOP LOSS hit for short at 2085.2745 | PnL: -0.50% | $-1.83 +2025-03-10 12:46:33,231 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3534999999997 | Take profit: 2098.7394999999997 +2025-03-10 12:46:33,461 - INFO - STOP LOSS hit for short at 2141.3534999999997 | PnL: -0.50% | $-1.78 +2025-03-10 12:46:33,506 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.0065 | Take profit: 2109.1805 +2025-03-10 12:46:34,106 - INFO - CLOSED short at 2119.14 | PnL: 1.03% | $2.71 +2025-03-10 12:46:34,158 - INFO - OPENED SHORT at 2119.07 | Stop loss: 2129.6653499999998 | Take profit: 2087.28395 +2025-03-10 12:46:35,074 - INFO - CLOSED short at 2090.0 | PnL: 1.37% | $3.83 +2025-03-10 12:46:35,075 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.55 | Take profit: 2121.35 +2025-03-10 12:46:35,125 - INFO - CLOSED long at 2099.53 | PnL: 0.46% | $1.13 +2025-03-10 12:46:35,125 - INFO - OPENED SHORT at 2099.53 | Stop loss: 2110.02765 | Take profit: 2068.0370500000004 +2025-03-10 12:46:35,866 - INFO - CLOSED short at 2098.39 | PnL: 0.05% | $-0.15 +2025-03-10 12:46:35,866 - INFO - OPENED LONG at 2098.39 | Stop loss: 2087.89805 | Take profit: 2129.8658499999997 +2025-03-10 12:46:35,917 - INFO - CLOSED long at 2095.29 | PnL: -0.15% | $-0.79 +2025-03-10 12:46:35,918 - INFO - OPENED SHORT at 2095.29 | Stop loss: 2105.7664499999996 | Take profit: 2063.86065 +2025-03-10 12:46:36,529 - INFO - CLOSED short at 2081.49 | PnL: 0.66% | $1.77 +2025-03-10 12:46:36,530 - INFO - OPENED LONG at 2081.49 | Stop loss: 2071.0825499999996 | Take profit: 2112.71235 +2025-03-10 12:46:36,577 - INFO - CLOSED long at 2080.38 | PnL: -0.05% | $-0.50 +2025-03-10 12:46:36,621 - INFO - OPENED SHORT at 2081.25 | Stop loss: 2091.65625 | Take profit: 2050.03125 +2025-03-10 12:46:37,231 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 32.1% in downtrends | Avg Win=$0.80, Avg Loss=$-0.63 +2025-03-10 12:46:37,232 - INFO - Episode 13: Reward=195.15, Balance=$80.58, Win Rate=25.0%, Trades=72, Episode PnL=$-14.52, Total PnL=$-384.73, Max Drawdown=27.4%, Pred Accuracy=99.7% +2025-03-10 12:46:37,271 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:46:37,619 - INFO - OPENED SHORT at 2059.4 | Stop loss: 2069.6969999999997 | Take profit: 2028.509 +2025-03-10 12:46:37,858 - INFO - CLOSED short at 2057.59 | PnL: 0.09% | $-0.05 +2025-03-10 12:46:37,858 - INFO - OPENED LONG at 2057.59 | Stop loss: 2047.3020500000002 | Take profit: 2088.45385 +2025-03-10 12:46:37,905 - INFO - CLOSED long at 2057.9 | PnL: 0.02% | $-0.34 +2025-03-10 12:46:37,906 - INFO - OPENED SHORT at 2057.9 | Stop loss: 2068.1895 | Take profit: 2027.0315 +2025-03-10 12:46:38,991 - INFO - CLOSED short at 2046.58 | PnL: 0.55% | $1.79 +2025-03-10 12:46:39,221 - INFO - OPENED SHORT at 2045.79 | Stop loss: 2056.0189499999997 | Take profit: 2015.10315 +2025-03-10 12:46:39,450 - INFO - CLOSED short at 2050.24 | PnL: -0.22% | $-1.29 +2025-03-10 12:46:39,590 - INFO - OPENED SHORT at 2053.26 | Stop loss: 2063.5263 | Take profit: 2022.4611000000002 +2025-03-10 12:46:40,097 - INFO - STOP LOSS hit for short at 2063.5263 | PnL: -0.50% | $-2.40 +2025-03-10 12:46:40,194 - INFO - OPENED SHORT at 2061.61 | Stop loss: 2071.9180499999998 | Take profit: 2030.68585 +2025-03-10 12:46:40,470 - INFO - CLOSED short at 2061.89 | PnL: -0.01% | $-0.44 +2025-03-10 12:46:40,650 - INFO - OPENED SHORT at 2057.8 | Stop loss: 2068.089 | Take profit: 2026.9330000000002 +2025-03-10 12:46:40,811 - INFO - CLOSED short at 2058.11 | PnL: -0.02% | $-0.45 +2025-03-10 12:46:40,812 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.8194500000002 | Take profit: 2088.9816499999997 +2025-03-10 12:46:40,869 - INFO - CLOSED long at 2061.79 | PnL: 0.18% | $0.31 +2025-03-10 12:46:40,869 - INFO - OPENED SHORT at 2061.79 | Stop loss: 2072.0989499999996 | Take profit: 2030.86315 +2025-03-10 12:46:41,564 - INFO - CLOSED short at 2067.69 | PnL: -0.29% | $-1.50 +2025-03-10 12:46:41,611 - INFO - OPENED LONG at 2070.26 | Stop loss: 2059.9087000000004 | Take profit: 2101.3139 +2025-03-10 12:46:41,666 - INFO - CLOSED long at 2071.44 | PnL: 0.06% | $-0.16 +2025-03-10 12:46:41,667 - INFO - OPENED SHORT at 2071.44 | Stop loss: 2081.7972 | Take profit: 2040.3684 +2025-03-10 12:46:42,666 - INFO - CLOSED short at 2067.6 | PnL: 0.19% | $0.33 +2025-03-10 12:46:42,724 - INFO - OPENED SHORT at 2067.51 | Stop loss: 2077.84755 | Take profit: 2036.49735 +2025-03-10 12:46:43,446 - INFO - CLOSED short at 2069.96 | PnL: -0.12% | $-0.84 +2025-03-10 12:46:43,547 - INFO - OPENED SHORT at 2071.39 | Stop loss: 2081.7469499999997 | Take profit: 2040.3191499999998 +2025-03-10 12:46:44,050 - INFO - CLOSED short at 2071.11 | PnL: 0.01% | $-0.33 +2025-03-10 12:46:44,051 - INFO - OPENED LONG at 2071.11 | Stop loss: 2060.75445 | Take profit: 2102.17665 +2025-03-10 12:46:44,101 - INFO - CLOSED long at 2069.46 | PnL: -0.08% | $-0.68 +2025-03-10 12:46:44,261 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.3349999999996 | Take profit: 2035.995 +2025-03-10 12:46:44,308 - INFO - CLOSED short at 2067.79 | PnL: -0.04% | $-0.52 +2025-03-10 12:46:44,365 - INFO - OPENED SHORT at 2067.46 | Stop loss: 2077.7972999999997 | Take profit: 2036.4481 +2025-03-10 12:46:45,801 - INFO - CLOSED short at 2070.04 | PnL: -0.12% | $-0.84 +2025-03-10 12:46:45,848 - INFO - OPENED SHORT at 2067.8 | Stop loss: 2078.139 | Take profit: 2036.7830000000001 +2025-03-10 12:46:46,125 - INFO - CLOSED short at 2065.83 | PnL: 0.10% | $-0.02 +2025-03-10 12:46:46,125 - INFO - OPENED LONG at 2065.83 | Stop loss: 2055.50085 | Take profit: 2096.8174499999996 +2025-03-10 12:46:46,370 - INFO - CLOSED long at 2062.65 | PnL: -0.15% | $-0.94 +2025-03-10 12:46:46,370 - INFO - OPENED SHORT at 2062.65 | Stop loss: 2072.96325 | Take profit: 2031.71025 +2025-03-10 12:46:46,632 - INFO - CLOSED short at 2064.96 | PnL: -0.11% | $-0.78 +2025-03-10 12:46:46,633 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.6352 | Take profit: 2095.9343999999996 +2025-03-10 12:46:46,730 - INFO - CLOSED long at 2067.1 | PnL: 0.10% | $0.01 +2025-03-10 12:46:46,730 - INFO - OPENED SHORT at 2067.1 | Stop loss: 2077.4354999999996 | Take profit: 2036.0935 +2025-03-10 12:46:47,040 - INFO - CLOSED short at 2062.89 | PnL: 0.20% | $0.38 +2025-03-10 12:46:47,091 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.8224999999998 | Take profit: 2033.5325 +2025-03-10 12:46:47,144 - INFO - CLOSED short at 2063.5 | PnL: 0.05% | $-0.19 +2025-03-10 12:46:47,195 - INFO - OPENED SHORT at 2061.6 | Stop loss: 2071.908 | Take profit: 2030.676 +2025-03-10 12:46:47,360 - INFO - CLOSED short at 2058.89 | PnL: 0.13% | $0.11 +2025-03-10 12:46:47,360 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.59555 | Take profit: 2089.7733499999995 +2025-03-10 12:46:47,419 - INFO - CLOSED long at 2059.3 | PnL: 0.02% | $-0.29 +2025-03-10 12:46:47,420 - INFO - OPENED SHORT at 2059.3 | Stop loss: 2069.5965 | Take profit: 2028.4105000000002 +2025-03-10 12:46:47,523 - INFO - CLOSED short at 2061.8 | PnL: -0.12% | $-0.80 +2025-03-10 12:46:47,523 - INFO - OPENED LONG at 2061.8 | Stop loss: 2051.491 | Take profit: 2092.727 +2025-03-10 12:46:47,623 - INFO - CLOSED long at 2062.61 | PnL: 0.04% | $-0.22 +2025-03-10 12:46:47,686 - INFO - OPENED SHORT at 2060.91 | Stop loss: 2071.2145499999997 | Take profit: 2029.99635 +2025-03-10 12:46:48,132 - INFO - CLOSED short at 2063.39 | PnL: -0.12% | $-0.79 +2025-03-10 12:46:48,203 - INFO - OPENED SHORT at 2064.79 | Stop loss: 2075.11395 | Take profit: 2033.8181499999998 +2025-03-10 12:46:48,955 - INFO - CLOSED short at 2059.96 | PnL: 0.23% | $0.48 +2025-03-10 12:46:48,955 - INFO - OPENED LONG at 2059.96 | Stop loss: 2049.6602 | Take profit: 2090.8594 +2025-03-10 12:46:49,167 - INFO - CLOSED long at 2056.28 | PnL: -0.18% | $-1.00 +2025-03-10 12:46:49,167 - INFO - OPENED SHORT at 2056.28 | Stop loss: 2066.5614 | Take profit: 2025.4358000000002 +2025-03-10 12:46:49,267 - INFO - CLOSED short at 2054.89 | PnL: 0.07% | $-0.11 +2025-03-10 12:46:49,320 - INFO - OPENED SHORT at 2054.83 | Stop loss: 2065.1041499999997 | Take profit: 2024.0075499999998 +2025-03-10 12:46:49,847 - INFO - STOP LOSS hit for short at 2065.1041499999997 | PnL: -0.50% | $-2.12 +2025-03-10 12:46:49,902 - INFO - OPENED SHORT at 2066.01 | Stop loss: 2076.34005 | Take profit: 2035.0198500000001 +2025-03-10 12:46:50,156 - INFO - CLOSED short at 2066.79 | PnL: -0.04% | $-0.48 +2025-03-10 12:46:50,205 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.9933499999997 | Take profit: 2098.3399499999996 +2025-03-10 12:46:50,251 - INFO - CLOSED long at 2067.01 | PnL: -0.02% | $-0.40 +2025-03-10 12:46:50,303 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.01845 | Take profit: 2034.7046500000001 +2025-03-10 12:46:50,348 - INFO - CLOSED short at 2069.79 | PnL: -0.20% | $-1.02 +2025-03-10 12:46:50,405 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3599999999997 | Take profit: 2040.92 +2025-03-10 12:46:50,458 - INFO - CLOSED short at 2074.3 | PnL: -0.11% | $-0.71 +2025-03-10 12:46:50,458 - INFO - OPENED LONG at 2074.3 | Stop loss: 2063.9285 | Take profit: 2105.4145 +2025-03-10 12:46:50,562 - INFO - CLOSED long at 2075.01 | PnL: 0.03% | $-0.22 +2025-03-10 12:46:50,563 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.38505 | Take profit: 2043.8848500000001 +2025-03-10 12:46:55,341 - INFO - CLOSED short at 2058.65 | PnL: 0.79% | $2.30 +2025-03-10 12:46:55,393 - INFO - OPENED SHORT at 2056.77 | Stop loss: 2067.05385 | Take profit: 2025.91845 +2025-03-10 12:46:55,920 - INFO - CLOSED short at 2063.9 | PnL: -0.35% | $-1.53 +2025-03-10 12:46:56,025 - INFO - OPENED SHORT at 2062.43 | Stop loss: 2072.7421499999996 | Take profit: 2031.49355 +2025-03-10 12:46:56,359 - INFO - CLOSED short at 2061.21 | PnL: 0.06% | $-0.14 +2025-03-10 12:46:56,411 - INFO - OPENED SHORT at 2059.9 | Stop loss: 2070.1994999999997 | Take profit: 2029.0015 +2025-03-10 12:46:56,558 - INFO - CLOSED short at 2062.54 | PnL: -0.13% | $-0.77 +2025-03-10 12:46:56,599 - INFO - OPENED LONG at 2065.72 | Stop loss: 2055.3914 | Take profit: 2096.7057999999997 +2025-03-10 12:46:56,648 - INFO - CLOSED long at 2070.31 | PnL: 0.22% | $0.41 +2025-03-10 12:46:56,648 - INFO - OPENED SHORT at 2070.31 | Stop loss: 2080.66155 | Take profit: 2039.25535 +2025-03-10 12:46:57,314 - INFO - STOP LOSS hit for short at 2080.66155 | PnL: -0.50% | $-2.01 +2025-03-10 12:46:57,366 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.9424499999996 | Take profit: 2059.1326499999996 +2025-03-10 12:46:57,418 - INFO - STOP LOSS hit for short at 2100.9424499999996 | PnL: -0.50% | $-1.96 +2025-03-10 12:46:57,468 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3534999999997 | Take profit: 2098.7394999999997 +2025-03-10 12:46:57,720 - INFO - STOP LOSS hit for short at 2141.3534999999997 | PnL: -0.50% | $-1.91 +2025-03-10 12:46:57,824 - INFO - OPENED SHORT at 2142.68 | Stop loss: 2153.3933999999995 | Take profit: 2110.5398 +2025-03-10 12:46:57,966 - INFO - CLOSED short at 2126.99 | PnL: 0.73% | $1.97 +2025-03-10 12:46:58,018 - INFO - OPENED SHORT at 2127.3 | Stop loss: 2137.9365 | Take profit: 2095.3905 +2025-03-10 12:46:58,207 - INFO - CLOSED short at 2117.24 | PnL: 0.47% | $1.19 +2025-03-10 12:46:58,262 - INFO - OPENED SHORT at 2119.93 | Stop loss: 2130.5296499999995 | Take profit: 2088.13105 +2025-03-10 12:46:58,760 - INFO - CLOSED short at 2112.95 | PnL: 0.33% | $0.74 +2025-03-10 12:46:58,762 - INFO - OPENED LONG at 2112.95 | Stop loss: 2102.38525 | Take profit: 2144.64425 +2025-03-10 12:46:58,912 - INFO - CLOSED long at 2112.99 | PnL: 0.00% | $-0.32 +2025-03-10 12:46:58,912 - INFO - OPENED SHORT at 2112.99 | Stop loss: 2123.5549499999997 | Take profit: 2081.29515 +2025-03-10 12:46:59,385 - INFO - CLOSED short at 2100.5 | PnL: 0.59% | $1.60 +2025-03-10 12:46:59,435 - INFO - OPENED SHORT at 2090.0 | Stop loss: 2100.45 | Take profit: 2058.65 +2025-03-10 12:46:59,590 - INFO - CLOSED short at 2102.19 | PnL: -0.58% | $-2.27 +2025-03-10 12:46:59,638 - INFO - OPENED SHORT at 2102.29 | Stop loss: 2112.80145 | Take profit: 2070.75565 +2025-03-10 12:46:59,940 - INFO - CLOSED short at 2100.74 | PnL: 0.07% | $-0.08 +2025-03-10 12:46:59,941 - INFO - OPENED LONG at 2100.74 | Stop loss: 2090.2362999999996 | Take profit: 2132.2510999999995 +2025-03-10 12:46:59,996 - INFO - CLOSED long at 2103.86 | PnL: 0.15% | $0.16 +2025-03-10 12:46:59,996 - INFO - OPENED SHORT at 2103.86 | Stop loss: 2114.3793 | Take profit: 2072.3021 +2025-03-10 12:47:00,110 - INFO - CLOSED short at 2101.51 | PnL: 0.11% | $0.04 +2025-03-10 12:47:00,111 - INFO - OPENED LONG at 2101.51 | Stop loss: 2091.0024500000004 | Take profit: 2133.03265 +2025-03-10 12:47:00,219 - INFO - CLOSED long at 2100.02 | PnL: -0.07% | $-0.55 +2025-03-10 12:47:00,220 - INFO - OPENED SHORT at 2100.02 | Stop loss: 2110.5200999999997 | Take profit: 2068.5197 +2025-03-10 12:47:00,734 - INFO - CLOSED short at 2083.28 | PnL: 0.80% | $2.24 +2025-03-10 12:47:00,881 - INFO - OPENED SHORT at 2085.3 | Stop loss: 2095.7264999999998 | Take profit: 2054.0205 +2025-03-10 12:47:01,791 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 23.5% in downtrends | Avg Win=$0.88, Avg Loss=$-0.81 +2025-03-10 12:47:01,794 - INFO - Episode 14: Reward=214.96, Balance=$82.57, Win Rate=29.1%, Trades=55, Episode PnL=$-12.64, Total PnL=$-402.16, Max Drawdown=23.2%, Pred Accuracy=99.7% +2025-03-10 12:47:01,950 - INFO - Model saved to models/trading_agent_best_reward.pt +2025-03-10 12:47:01,951 - INFO - New best reward model saved: 214.96 +2025-03-10 12:47:01,988 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:47:02,297 - INFO - OPENED SHORT at 2059.03 | Stop loss: 2069.32515 | Take profit: 2028.1445500000002 +2025-03-10 12:47:02,562 - INFO - CLOSED short at 2056.9 | PnL: 0.10% | $0.01 +2025-03-10 12:47:02,563 - INFO - OPENED LONG at 2056.9 | Stop loss: 2046.6155 | Take profit: 2087.7535 +2025-03-10 12:47:02,623 - INFO - CLOSED long at 2057.59 | PnL: 0.03% | $-0.27 +2025-03-10 12:47:02,624 - INFO - OPENED SHORT at 2057.59 | Stop loss: 2067.87795 | Take profit: 2026.7261500000002 +2025-03-10 12:47:03,407 - INFO - CLOSED short at 2050.44 | PnL: 0.35% | $0.99 +2025-03-10 12:47:03,470 - INFO - OPENED SHORT at 2049.49 | Stop loss: 2059.7374499999996 | Take profit: 2018.7476499999998 +2025-03-10 12:47:04,065 - INFO - CLOSED short at 2045.99 | PnL: 0.17% | $0.29 +2025-03-10 12:47:04,126 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.2199499999997 | Take profit: 2015.30015 +2025-03-10 12:47:04,554 - INFO - CLOSED short at 2051.11 | PnL: -0.25% | $-1.42 +2025-03-10 12:47:04,554 - INFO - OPENED LONG at 2051.11 | Stop loss: 2040.85445 | Take profit: 2081.87665 +2025-03-10 12:47:04,654 - INFO - CLOSED long at 2051.89 | PnL: 0.04% | $-0.25 +2025-03-10 12:47:04,753 - INFO - OPENED LONG at 2055.69 | Stop loss: 2045.41155 | Take profit: 2086.52535 +2025-03-10 12:47:05,203 - INFO - CLOSED long at 2063.59 | PnL: 0.38% | $1.13 +2025-03-10 12:47:05,203 - INFO - OPENED SHORT at 2063.59 | Stop loss: 2073.90795 | Take profit: 2032.63615 +2025-03-10 12:47:05,620 - INFO - CLOSED short at 2062.89 | PnL: 0.03% | $-0.27 +2025-03-10 12:47:05,622 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.57555 | Take profit: 2093.83335 +2025-03-10 12:47:05,679 - INFO - CLOSED long at 2060.31 | PnL: -0.13% | $-0.90 +2025-03-10 12:47:05,679 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.6115499999996 | Take profit: 2029.40535 +2025-03-10 12:47:06,053 - INFO - CLOSED short at 2061.18 | PnL: -0.04% | $-0.57 +2025-03-10 12:47:06,053 - INFO - OPENED LONG at 2061.18 | Stop loss: 2050.8741 | Take profit: 2092.0977 +2025-03-10 12:47:06,114 - INFO - CLOSED long at 2064.32 | PnL: 0.15% | $0.21 +2025-03-10 12:47:06,114 - INFO - OPENED SHORT at 2064.32 | Stop loss: 2074.6416 | Take profit: 2033.3552000000002 +2025-03-10 12:47:06,937 - INFO - STOP LOSS hit for short at 2074.6416 | PnL: -0.50% | $-2.38 +2025-03-10 12:47:06,995 - INFO - OPENED SHORT at 2072.91 | Stop loss: 2083.2745499999996 | Take profit: 2041.8163499999998 +2025-03-10 12:47:08,793 - INFO - CLOSED short at 2071.36 | PnL: 0.07% | $-0.10 +2025-03-10 12:47:08,794 - INFO - OPENED LONG at 2071.36 | Stop loss: 2061.0032 | Take profit: 2102.4303999999997 +2025-03-10 12:47:08,850 - INFO - CLOSED long at 2072.75 | PnL: 0.07% | $-0.13 +2025-03-10 12:47:08,850 - INFO - OPENED SHORT at 2072.75 | Stop loss: 2083.11375 | Take profit: 2041.65875 +2025-03-10 12:47:09,759 - INFO - CLOSED short at 2063.61 | PnL: 0.44% | $1.31 +2025-03-10 12:47:09,810 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.9337 | Take profit: 2096.2389 +2025-03-10 12:47:09,867 - INFO - CLOSED long at 2067.89 | PnL: 0.13% | $0.11 +2025-03-10 12:47:09,867 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.22945 | Take profit: 2036.8716499999998 +2025-03-10 12:47:09,968 - INFO - CLOSED short at 2068.8 | PnL: -0.04% | $-0.56 +2025-03-10 12:47:09,968 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.456 | Take profit: 2099.832 +2025-03-10 12:47:10,032 - INFO - CLOSED long at 2069.34 | PnL: 0.03% | $-0.29 +2025-03-10 12:47:10,032 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.6866999999997 | Take profit: 2038.2999000000002 +2025-03-10 12:47:10,845 - INFO - CLOSED short at 2066.4 | PnL: 0.14% | $0.16 +2025-03-10 12:47:10,909 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.4304999999995 | Take profit: 2035.1084999999998 +2025-03-10 12:47:11,518 - INFO - CLOSED short at 2066.15 | PnL: -0.00% | $-0.40 +2025-03-10 12:47:11,574 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.5863 | Take profit: 2034.2811000000002 +2025-03-10 12:47:12,690 - INFO - CLOSED short at 2058.89 | PnL: 0.31% | $0.81 +2025-03-10 12:47:12,691 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.59555 | Take profit: 2089.7733499999995 +2025-03-10 12:47:12,751 - INFO - CLOSED long at 2059.3 | PnL: 0.02% | $-0.31 +2025-03-10 12:47:12,751 - INFO - OPENED SHORT at 2059.3 | Stop loss: 2069.5965 | Take profit: 2028.4105000000002 +2025-03-10 12:47:13,063 - INFO - CLOSED short at 2060.3 | PnL: -0.05% | $-0.58 +2025-03-10 12:47:13,115 - INFO - OPENED SHORT at 2061.13 | Stop loss: 2071.43565 | Take profit: 2030.21305 +2025-03-10 12:47:13,213 - INFO - CLOSED short at 2064.1 | PnL: -0.14% | $-0.94 +2025-03-10 12:47:13,265 - INFO - OPENED SHORT at 2065.36 | Stop loss: 2075.6868 | Take profit: 2034.3796000000002 +2025-03-10 12:47:14,375 - INFO - CLOSED short at 2055.6 | PnL: 0.47% | $1.43 +2025-03-10 12:47:14,427 - INFO - OPENED SHORT at 2054.89 | Stop loss: 2065.1644499999998 | Take profit: 2024.0666499999998 +2025-03-10 12:47:14,988 - INFO - STOP LOSS hit for short at 2065.1644499999998 | PnL: -0.50% | $-2.33 +2025-03-10 12:47:15,046 - INFO - OPENED SHORT at 2066.01 | Stop loss: 2076.34005 | Take profit: 2035.0198500000001 +2025-03-10 12:47:15,664 - INFO - STOP LOSS hit for short at 2076.34005 | PnL: -0.50% | $-2.27 +2025-03-10 12:47:15,709 - INFO - OPENED LONG at 2075.01 | Stop loss: 2064.63495 | Take profit: 2106.13515 +2025-03-10 12:47:15,760 - INFO - CLOSED long at 2072.6 | PnL: -0.12% | $-0.80 +2025-03-10 12:47:15,761 - INFO - OPENED SHORT at 2072.6 | Stop loss: 2082.9629999999997 | Take profit: 2041.511 +2025-03-10 12:47:16,061 - INFO - CLOSED short at 2068.15 | PnL: 0.21% | $0.42 +2025-03-10 12:47:16,062 - INFO - OPENED LONG at 2068.15 | Stop loss: 2057.8092500000002 | Take profit: 2099.17225 +2025-03-10 12:47:16,109 - INFO - CLOSED long at 2068.39 | PnL: 0.01% | $-0.33 +2025-03-10 12:47:16,395 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.3549499999995 | Take profit: 2041.8951499999998 +2025-03-10 12:47:16,828 - INFO - CLOSED short at 2063.97 | PnL: 0.44% | $1.23 +2025-03-10 12:47:16,880 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.8224999999998 | Take profit: 2033.5325 +2025-03-10 12:47:17,161 - INFO - CLOSED short at 2065.5 | PnL: -0.05% | $-0.55 +2025-03-10 12:47:17,162 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.1725 | Take profit: 2096.4824999999996 +2025-03-10 12:47:17,232 - INFO - CLOSED long at 2067.53 | PnL: 0.10% | $-0.01 +2025-03-10 12:47:17,233 - INFO - OPENED SHORT at 2067.53 | Stop loss: 2077.86765 | Take profit: 2036.5170500000002 +2025-03-10 12:47:17,733 - INFO - CLOSED short at 2070.9 | PnL: -0.16% | $-0.97 +2025-03-10 12:47:17,788 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.34155 | Take profit: 2100.73535 +2025-03-10 12:47:17,843 - INFO - CLOSED long at 2070.7 | PnL: 0.05% | $-0.19 +2025-03-10 12:47:17,844 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.0534999999995 | Take profit: 2039.6394999999998 +2025-03-10 12:47:18,481 - INFO - CLOSED short at 2074.35 | PnL: -0.18% | $-1.01 +2025-03-10 12:47:18,482 - INFO - OPENED LONG at 2074.35 | Stop loss: 2063.97825 | Take profit: 2105.4652499999997 +2025-03-10 12:47:18,580 - INFO - CLOSED long at 2073.99 | PnL: -0.02% | $-0.42 +2025-03-10 12:47:18,580 - INFO - OPENED SHORT at 2073.99 | Stop loss: 2084.3599499999996 | Take profit: 2042.8801499999997 +2025-03-10 12:47:18,965 - INFO - CLOSED short at 2067.7 | PnL: 0.30% | $0.73 +2025-03-10 12:47:18,966 - INFO - OPENED LONG at 2067.7 | Stop loss: 2057.3615 | Take profit: 2098.7155 +2025-03-10 12:47:19,017 - INFO - CLOSED long at 2067.0 | PnL: -0.03% | $-0.49 +2025-03-10 12:47:19,017 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.3349999999996 | Take profit: 2035.995 +2025-03-10 12:47:20,455 - INFO - CLOSED short at 2058.09 | PnL: 0.43% | $1.19 +2025-03-10 12:47:20,507 - INFO - OPENED SHORT at 2058.65 | Stop loss: 2068.94325 | Take profit: 2027.77025 +2025-03-10 12:47:20,895 - INFO - CLOSED short at 2057.11 | PnL: 0.07% | $-0.09 +2025-03-10 12:47:20,896 - INFO - OPENED LONG at 2057.11 | Stop loss: 2046.82445 | Take profit: 2087.96665 +2025-03-10 12:47:20,951 - INFO - CLOSED long at 2057.89 | PnL: 0.04% | $-0.23 +2025-03-10 12:47:20,951 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.1794499999996 | Take profit: 2027.02165 +2025-03-10 12:47:21,345 - INFO - STOP LOSS hit for short at 2068.1794499999996 | PnL: -0.50% | $-2.18 +2025-03-10 12:47:21,403 - INFO - OPENED SHORT at 2067.49 | Stop loss: 2077.8274499999998 | Take profit: 2036.4776499999998 +2025-03-10 12:47:21,736 - INFO - CLOSED short at 2061.84 | PnL: 0.27% | $0.62 +2025-03-10 12:47:21,806 - INFO - OPENED SHORT at 2062.54 | Stop loss: 2072.8527 | Take profit: 2031.6019 +2025-03-10 12:47:22,018 - INFO - CLOSED short at 2069.34 | PnL: -0.33% | $-1.54 +2025-03-10 12:47:22,079 - INFO - OPENED SHORT at 2069.81 | Stop loss: 2080.1590499999998 | Take profit: 2038.7628499999998 +2025-03-10 12:47:22,613 - INFO - STOP LOSS hit for short at 2080.1590499999998 | PnL: -0.50% | $-2.11 +2025-03-10 12:47:22,715 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.5350999999996 | Take profit: 2071.4746999999998 +2025-03-10 12:47:22,771 - INFO - STOP LOSS hit for short at 2113.5350999999996 | PnL: -0.50% | $-2.06 +2025-03-10 12:47:22,817 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.8423 | Take profit: 2171.6330999999996 +2025-03-10 12:47:22,876 - INFO - CLOSED long at 2131.78 | PnL: -0.36% | $-1.55 +2025-03-10 12:47:22,876 - INFO - OPENED SHORT at 2131.78 | Stop loss: 2142.4389 | Take profit: 2099.8033 +2025-03-10 12:47:23,027 - INFO - CLOSED short at 2141.41 | PnL: -0.45% | $-1.81 +2025-03-10 12:47:23,120 - INFO - OPENED LONG at 2142.68 | Stop loss: 2131.9665999999997 | Take profit: 2174.8201999999997 +2025-03-10 12:47:23,171 - INFO - CLOSED long at 2140.01 | PnL: -0.12% | $-0.72 +2025-03-10 12:47:23,172 - INFO - OPENED SHORT at 2140.01 | Stop loss: 2150.71005 | Take profit: 2107.90985 +2025-03-10 12:47:23,761 - INFO - CLOSED short at 2119.07 | PnL: 0.98% | $2.80 +2025-03-10 12:47:23,817 - INFO - OPENED SHORT at 2115.28 | Stop loss: 2125.8564 | Take profit: 2083.5508 +2025-03-10 12:47:24,582 - INFO - CLOSED short at 2108.06 | PnL: 0.34% | $0.80 +2025-03-10 12:47:24,583 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.5197 | Take profit: 2139.6809 +2025-03-10 12:47:24,645 - INFO - CLOSED long at 2103.33 | PnL: -0.22% | $-1.08 +2025-03-10 12:47:24,645 - INFO - OPENED SHORT at 2103.33 | Stop loss: 2113.8466499999995 | Take profit: 2071.78005 +2025-03-10 12:47:25,042 - INFO - CLOSED short at 2098.9 | PnL: 0.21% | $0.36 +2025-03-10 12:47:25,096 - INFO - OPENED SHORT at 2100.69 | Stop loss: 2111.1934499999998 | Take profit: 2069.17965 +2025-03-10 12:47:26,313 - INFO - CLOSED short at 2080.38 | PnL: 0.97% | $2.86 +2025-03-10 12:47:26,314 - INFO - OPENED LONG at 2080.38 | Stop loss: 2069.9781000000003 | Take profit: 2111.5857 +2025-03-10 12:47:26,373 - INFO - CLOSED long at 2081.25 | PnL: 0.04% | $-0.20 +2025-03-10 12:47:26,373 - INFO - OPENED SHORT at 2081.25 | Stop loss: 2091.65625 | Take profit: 2050.03125 +2025-03-10 12:47:27,028 - INFO - CLOSED short at 2089.96 | PnL: -0.42% | $-1.77 +2025-03-10 12:47:27,028 - INFO - OPENED LONG at 2089.96 | Stop loss: 2079.5102 | Take profit: 2121.3093999999996 +2025-03-10 12:47:27,082 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 28.6% in downtrends | Avg Win=$0.92, Avg Loss=$-0.90 +2025-03-10 12:47:27,083 - INFO - Episode 15: Reward=215.90, Balance=$83.40, Win Rate=33.3%, Trades=57, Episode PnL=$-9.77, Total PnL=$-418.76, Max Drawdown=20.5%, Pred Accuracy=99.8% +2025-03-10 12:47:27,250 - INFO - Model saved to models/trading_agent_best_reward.pt +2025-03-10 12:47:27,250 - INFO - New best reward model saved: 215.90 +2025-03-10 12:47:27,384 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 12:47:27,385 - INFO - New best PnL model saved: $-9.77 +2025-03-10 12:47:27,494 - INFO - Model saved to models/trading_agent_best_winrate.pt +2025-03-10 12:47:27,494 - INFO - New best win rate model saved: 33.3% +2025-03-10 12:47:27,517 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:47:27,850 - INFO - OPENED SHORT at 2059.03 | Stop loss: 2069.32515 | Take profit: 2028.1445500000002 +2025-03-10 12:47:28,547 - INFO - CLOSED short at 2055.39 | PnL: 0.18% | $0.31 +2025-03-10 12:47:28,599 - INFO - OPENED SHORT at 2053.56 | Stop loss: 2063.8277999999996 | Take profit: 2022.7566 +2025-03-10 12:47:29,518 - INFO - CLOSED short at 2047.4 | PnL: 0.30% | $0.80 +2025-03-10 12:47:29,567 - INFO - OPENED SHORT at 2047.2 | Stop loss: 2057.4359999999997 | Take profit: 2016.492 +2025-03-10 12:47:30,438 - INFO - CLOSED short at 2056.89 | PnL: -0.47% | $-2.32 +2025-03-10 12:47:30,590 - INFO - OPENED SHORT at 2060.13 | Stop loss: 2070.43065 | Take profit: 2029.2280500000002 +2025-03-10 12:47:32,102 - INFO - CLOSED short at 2065.86 | PnL: -0.28% | $-1.49 +2025-03-10 12:47:32,359 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.22945 | Take profit: 2036.8716499999998 +2025-03-10 12:47:32,778 - INFO - CLOSED short at 2067.9 | PnL: -0.00% | $-0.39 +2025-03-10 12:47:32,779 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.5605 | Take profit: 2098.9184999999998 +2025-03-10 12:47:32,843 - INFO - CLOSED long at 2067.69 | PnL: -0.01% | $-0.43 +2025-03-10 12:47:32,845 - INFO - OPENED SHORT at 2067.69 | Stop loss: 2078.02845 | Take profit: 2036.67465 +2025-03-10 12:47:33,001 - INFO - CLOSED short at 2073.73 | PnL: -0.29% | $-1.51 +2025-03-10 12:47:33,002 - INFO - OPENED LONG at 2073.73 | Stop loss: 2063.36135 | Take profit: 2104.8359499999997 +2025-03-10 12:47:33,061 - INFO - CLOSED long at 2075.1 | PnL: 0.07% | $-0.13 +2025-03-10 12:47:33,062 - INFO - OPENED SHORT at 2075.1 | Stop loss: 2085.4754999999996 | Take profit: 2043.9734999999998 +2025-03-10 12:47:33,160 - INFO - CLOSED short at 2072.33 | PnL: 0.13% | $0.13 +2025-03-10 12:47:33,161 - INFO - OPENED LONG at 2072.33 | Stop loss: 2061.96835 | Take profit: 2103.41495 +2025-03-10 12:47:33,216 - INFO - CLOSED long at 2071.38 | PnL: -0.05% | $-0.55 +2025-03-10 12:47:33,217 - INFO - OPENED SHORT at 2071.38 | Stop loss: 2081.7369 | Take profit: 2040.3093000000001 +2025-03-10 12:47:33,977 - INFO - CLOSED short at 2068.8 | PnL: 0.12% | $0.09 +2025-03-10 12:47:33,977 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.456 | Take profit: 2099.832 +2025-03-10 12:47:34,088 - INFO - CLOSED long at 2067.51 | PnL: -0.06% | $-0.61 +2025-03-10 12:47:34,089 - INFO - OPENED SHORT at 2067.51 | Stop loss: 2077.84755 | Take profit: 2036.49735 +2025-03-10 12:47:36,378 - INFO - CLOSED short at 2067.86 | PnL: -0.02% | $-0.44 +2025-03-10 12:47:36,485 - INFO - OPENED SHORT at 2069.2 | Stop loss: 2079.546 | Take profit: 2038.1619999999998 +2025-03-10 12:47:37,579 - INFO - CLOSED short at 2064.99 | PnL: 0.20% | $0.39 +2025-03-10 12:47:37,580 - INFO - OPENED LONG at 2064.99 | Stop loss: 2054.6650499999996 | Take profit: 2095.9648499999994 +2025-03-10 12:47:37,641 - INFO - CLOSED long at 2065.83 | PnL: 0.04% | $-0.22 +2025-03-10 12:47:37,642 - INFO - OPENED SHORT at 2065.83 | Stop loss: 2076.1591499999995 | Take profit: 2034.8425499999998 +2025-03-10 12:47:37,752 - INFO - CLOSED short at 2065.26 | PnL: 0.03% | $-0.27 +2025-03-10 12:47:37,855 - INFO - OPENED SHORT at 2062.65 | Stop loss: 2072.96325 | Take profit: 2031.71025 +2025-03-10 12:47:38,106 - INFO - CLOSED short at 2063.59 | PnL: -0.05% | $-0.54 +2025-03-10 12:47:38,170 - INFO - OPENED SHORT at 2064.96 | Stop loss: 2075.2848 | Take profit: 2033.9856 +2025-03-10 12:47:39,033 - INFO - CLOSED short at 2060.31 | PnL: 0.23% | $0.46 +2025-03-10 12:47:39,083 - INFO - OPENED LONG at 2061.8 | Stop loss: 2051.491 | Take profit: 2092.727 +2025-03-10 12:47:39,137 - INFO - CLOSED long at 2064.7 | PnL: 0.14% | $0.15 +2025-03-10 12:47:39,138 - INFO - OPENED SHORT at 2064.7 | Stop loss: 2075.0235 | Take profit: 2033.7294999999997 +2025-03-10 12:57:17,052 - INFO - GPU not available, using CPU +2025-03-10 12:57:17,072 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 12:57:17,073 - INFO - Fetching initial data for ETH/USDT +2025-03-10 12:57:20,700 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 12:57:20,719 - INFO - Initialized environment with 500 candles +2025-03-10 12:57:22,829 - INFO - Starting training for 1000 episodes... +2025-03-10 12:57:22,829 - INFO - Starting training on device: cpu +2025-03-10 12:57:22,850 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:57:23,138 - INFO - OPENED LONG at 2051.66 | Stop loss: 2041.382189285714 | Take profit: 2082.4641660714283 +2025-03-10 12:57:23,139 - INFO - CLOSED long at 2052.16 | PnL: 0.02% | $-0.15 +2025-03-10 12:57:23,140 - INFO - OPENED SHORT at 2053.1 | Stop loss: 2063.3850107142857 | Take profit: 2022.2742339285714 +2025-03-10 12:57:23,141 - INFO - CLOSED short at 2050.71 | PnL: 0.12% | $0.03 +2025-03-10 12:57:23,141 - INFO - OPENED SHORT at 2049.49 | Stop loss: 2059.7569607142855 | Take profit: 2018.718383928571 +2025-03-10 12:57:23,142 - INFO - CLOSED short at 2050.2 | PnL: -0.03% | $-0.27 +2025-03-10 12:57:23,142 - INFO - OPENED LONG at 2050.2 | Stop loss: 2039.9294892857142 | Take profit: 2080.982266071428 +2025-03-10 12:57:23,143 - INFO - CLOSED long at 2049.6 | PnL: -0.03% | $-0.26 +2025-03-10 12:57:23,143 - INFO - OPENED SHORT at 2049.6 | Stop loss: 2059.867510714286 | Take profit: 2018.8267339285715 +2025-03-10 12:57:23,145 - INFO - CLOSED short at 2049.61 | PnL: -0.00% | $-0.20 +2025-03-10 12:57:23,145 - INFO - OPENED LONG at 2049.61 | Stop loss: 2039.3424392857144 | Take profit: 2080.3834160714287 +2025-03-10 12:57:23,145 - INFO - CLOSED long at 2048.48 | PnL: -0.06% | $-0.30 +2025-03-10 12:57:23,146 - INFO - OPENED SHORT at 2048.48 | Stop loss: 2058.741910714286 | Take profit: 2017.7235339285714 +2025-03-10 12:57:23,146 - INFO - CLOSED short at 2047.39 | PnL: 0.05% | $-0.09 +2025-03-10 12:57:23,147 - INFO - OPENED SHORT at 2046.58 | Stop loss: 2056.8324107142857 | Take profit: 2015.8520339285712 +2025-03-10 12:57:23,148 - INFO - CLOSED short at 2047.2 | PnL: -0.03% | $-0.25 +2025-03-10 12:57:23,148 - INFO - OPENED LONG at 2047.2 | Stop loss: 2036.9444892857143 | Take profit: 2077.9372660714284 +2025-03-10 12:57:23,149 - INFO - CLOSED long at 2045.99 | PnL: -0.06% | $-0.31 +2025-03-10 12:57:23,149 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.239460714286 | Take profit: 2015.2708839285715 +2025-03-10 12:57:23,150 - INFO - CLOSED short at 2045.99 | PnL: 0.00% | $-0.19 +2025-03-10 12:57:23,151 - INFO - OPENED SHORT at 2048.51 | Stop loss: 2058.7720607142855 | Take profit: 2017.7530839285716 +2025-03-10 12:57:23,151 - INFO - CLOSED short at 2050.0 | PnL: -0.07% | $-0.34 +2025-03-10 12:57:23,152 - INFO - OPENED LONG at 2050.24 | Stop loss: 2039.9692892857142 | Take profit: 2081.0228660714283 +2025-03-10 12:57:23,152 - INFO - CLOSED long at 2049.89 | PnL: -0.02% | $-0.23 +2025-03-10 12:57:23,153 - INFO - OPENED LONG at 2053.26 | Stop loss: 2042.9741892857146 | Take profit: 2084.088166071429 +2025-03-10 12:57:23,154 - INFO - CLOSED long at 2052.3 | PnL: -0.05% | $-0.28 +2025-03-10 12:57:23,154 - INFO - OPENED SHORT at 2052.3 | Stop loss: 2062.581010714286 | Take profit: 2021.4862339285717 +2025-03-10 12:57:23,156 - INFO - CLOSED short at 2057.01 | PnL: -0.23% | $-0.63 +2025-03-10 12:57:23,156 - INFO - OPENED LONG at 2057.01 | Stop loss: 2046.7054392857144 | Take profit: 2087.894416071429 +2025-03-10 12:57:23,157 - INFO - CLOSED long at 2056.89 | PnL: -0.01% | $-0.20 +2025-03-10 12:57:23,158 - INFO - OPENED LONG at 2059.7 | Stop loss: 2049.381989285714 | Take profit: 2090.6247660714284 +2025-03-10 12:57:23,159 - INFO - CLOSED long at 2063.59 | PnL: 0.19% | $0.17 +2025-03-10 12:57:23,160 - INFO - OPENED SHORT at 2063.59 | Stop loss: 2073.927460714286 | Take profit: 2032.6068839285715 +2025-03-10 12:57:23,163 - INFO - CLOSED short at 2057.8 | PnL: 0.28% | $0.35 +2025-03-10 12:57:23,163 - INFO - OPENED LONG at 2057.8 | Stop loss: 2047.4914892857146 | Take profit: 2088.696266071429 +2025-03-10 12:57:23,164 - INFO - CLOSED long at 2057.89 | PnL: 0.00% | $-0.18 +2025-03-10 12:57:23,164 - INFO - OPENED SHORT at 2057.94 | Stop loss: 2068.2492107142857 | Take profit: 2027.0416339285716 +2025-03-10 12:57:23,165 - INFO - CLOSED short at 2061.79 | PnL: -0.19% | $-0.55 +2025-03-10 12:57:23,165 - INFO - OPENED LONG at 2061.79 | Stop loss: 2051.4615392857145 | Take profit: 2092.746116071429 +2025-03-10 12:57:23,167 - INFO - CLOSED long at 2061.18 | PnL: -0.03% | $-0.25 +2025-03-10 12:57:23,167 - INFO - OPENED SHORT at 2061.18 | Stop loss: 2071.505410714286 | Take profit: 2030.2330339285713 +2025-03-10 12:57:23,167 - INFO - CLOSED short at 2064.32 | PnL: -0.15% | $-0.48 +2025-03-10 12:57:23,168 - INFO - OPENED LONG at 2070.58 | Stop loss: 2060.207589285714 | Take profit: 2101.6679660714285 +2025-03-10 12:57:23,169 - INFO - CLOSED long at 2068.29 | PnL: -0.11% | $-0.40 +2025-03-10 12:57:23,169 - INFO - OPENED SHORT at 2068.29 | Stop loss: 2078.6509607142857 | Take profit: 2037.2363839285715 +2025-03-10 12:57:23,170 - INFO - CLOSED short at 2067.89 | PnL: 0.02% | $-0.15 +2025-03-10 12:57:23,170 - INFO - OPENED SHORT at 2070.99 | Stop loss: 2081.3644607142855 | Take profit: 2039.8958839285713 +2025-03-10 12:57:23,286 - INFO - CLOSED short at 2068.99 | PnL: 0.10% | $-0.01 +2025-03-10 12:57:23,287 - INFO - OPENED LONG at 2068.99 | Stop loss: 2058.6255392857142 | Take profit: 2100.0541160714283 +2025-03-10 12:57:23,359 - INFO - CLOSED long at 2067.69 | PnL: -0.06% | $-0.31 +2025-03-10 12:57:23,393 - INFO - OPENED SHORT at 2070.26 | Stop loss: 2080.630810714286 | Take profit: 2039.1768339285716 +2025-03-10 12:57:23,571 - INFO - CLOSED short at 2072.33 | PnL: -0.10% | $-0.37 +2025-03-10 12:57:23,605 - INFO - OPENED SHORT at 2071.38 | Stop loss: 2081.7564107142857 | Take profit: 2040.2800339285714 +2025-03-10 12:57:23,678 - INFO - CLOSED short at 2069.37 | PnL: 0.10% | $-0.01 +2025-03-10 12:57:23,678 - INFO - OPENED LONG at 2069.37 | Stop loss: 2059.003639285714 | Take profit: 2100.439816071428 +2025-03-10 12:57:23,716 - INFO - CLOSED long at 2070.9 | PnL: 0.07% | $-0.05 +2025-03-10 12:57:23,755 - INFO - OPENED LONG at 2072.8 | Stop loss: 2062.4164892857143 | Take profit: 2103.921266071429 +2025-03-10 12:57:23,791 - INFO - CLOSED long at 2070.79 | PnL: -0.10% | $-0.37 +2025-03-10 12:57:23,826 - INFO - OPENED SHORT at 2070.28 | Stop loss: 2080.650910714286 | Take profit: 2039.1965339285716 +2025-03-10 12:57:23,863 - INFO - CLOSED short at 2068.02 | PnL: 0.11% | $0.02 +2025-03-10 12:57:23,934 - INFO - OPENED LONG at 2070.36 | Stop loss: 2059.9886892857144 | Take profit: 2101.444666071429 +2025-03-10 12:57:24,005 - INFO - CLOSED long at 2070.7 | PnL: 0.02% | $-0.16 +2025-03-10 12:57:24,045 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.7062107142856 | Take profit: 2038.2706339285714 +2025-03-10 12:57:24,082 - INFO - CLOSED short at 2069.19 | PnL: 0.01% | $-0.17 +2025-03-10 12:57:24,117 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.4364892857143 | Take profit: 2099.861266071429 +2025-03-10 12:57:24,358 - INFO - CLOSED long at 2066.29 | PnL: -0.12% | $-0.41 +2025-03-10 12:57:24,359 - INFO - OPENED SHORT at 2066.29 | Stop loss: 2076.6409607142855 | Take profit: 2035.2663839285713 +2025-03-10 12:57:24,573 - INFO - CLOSED short at 2068.59 | PnL: -0.11% | $-0.39 +2025-03-10 12:57:24,753 - INFO - OPENED LONG at 2071.39 | Stop loss: 2061.013539285714 | Take profit: 2102.4901160714285 +2025-03-10 12:57:24,787 - INFO - CLOSED long at 2071.36 | PnL: -0.00% | $-0.19 +2025-03-10 12:57:24,788 - INFO - OPENED SHORT at 2071.36 | Stop loss: 2081.736310714286 | Take profit: 2040.2603339285715 +2025-03-10 12:57:24,860 - INFO - CLOSED short at 2073.11 | PnL: -0.08% | $-0.34 +2025-03-10 12:57:24,894 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.0830107142856 | Take profit: 2041.5802339285713 +2025-03-10 12:57:24,927 - INFO - CLOSED short at 2072.15 | PnL: 0.03% | $-0.13 +2025-03-10 12:57:24,927 - INFO - OPENED LONG at 2072.15 | Stop loss: 2061.7697392857144 | Take profit: 2103.2615160714286 +2025-03-10 12:57:24,999 - INFO - CLOSED long at 2073.9 | PnL: 0.08% | $-0.03 +2025-03-10 12:57:25,036 - INFO - OPENED LONG at 2071.92 | Stop loss: 2061.5408892857145 | Take profit: 2103.0280660714284 +2025-03-10 12:57:25,072 - INFO - CLOSED long at 2070.4 | PnL: -0.07% | $-0.32 +2025-03-10 12:57:25,341 - INFO - OPENED LONG at 2066.8 | Stop loss: 2056.4464892857145 | Take profit: 2097.831266071429 +2025-03-10 12:57:25,377 - INFO - CLOSED long at 2065.49 | PnL: -0.06% | $-0.30 +2025-03-10 12:57:25,446 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.9141892857147 | Take profit: 2096.268166071429 +2025-03-10 12:57:25,480 - INFO - CLOSED long at 2067.89 | PnL: 0.13% | $0.05 +2025-03-10 12:57:25,551 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.4364892857143 | Take profit: 2099.861266071429 +2025-03-10 12:57:25,622 - INFO - CLOSED long at 2067.86 | PnL: -0.05% | $-0.26 +2025-03-10 12:57:25,623 - INFO - OPENED SHORT at 2067.86 | Stop loss: 2078.2188107142856 | Take profit: 2036.8128339285715 +2025-03-10 12:57:25,661 - INFO - CLOSED short at 2067.59 | PnL: 0.01% | $-0.16 +2025-03-10 12:57:25,662 - INFO - OPENED LONG at 2067.59 | Stop loss: 2057.2325392857147 | Take profit: 2098.6331160714285 +2025-03-10 12:57:25,700 - INFO - CLOSED long at 2069.2 | PnL: 0.08% | $-0.04 +2025-03-10 12:57:25,736 - INFO - OPENED SHORT at 2070.3 | Stop loss: 2080.671010714286 | Take profit: 2039.2162339285717 +2025-03-10 12:57:25,948 - INFO - CLOSED short at 2068.69 | PnL: 0.08% | $-0.04 +2025-03-10 12:57:25,949 - INFO - OPENED LONG at 2068.69 | Stop loss: 2058.3270392857144 | Take profit: 2099.7496160714286 +2025-03-10 12:57:26,063 - INFO - CLOSED long at 2067.86 | PnL: -0.04% | $-0.25 +2025-03-10 12:57:26,064 - INFO - OPENED SHORT at 2067.86 | Stop loss: 2078.2188107142856 | Take profit: 2036.8128339285715 +2025-03-10 12:57:26,100 - INFO - CLOSED short at 2066.4 | PnL: 0.07% | $-0.05 +2025-03-10 12:57:26,138 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.4500107142853 | Take profit: 2035.0792339285715 +2025-03-10 12:57:26,175 - INFO - CLOSED short at 2065.28 | PnL: 0.04% | $-0.11 +2025-03-10 12:57:26,175 - INFO - OPENED LONG at 2065.28 | Stop loss: 2054.9340892857144 | Take profit: 2096.2884660714285 +2025-03-10 12:57:26,209 - INFO - CLOSED long at 2066.39 | PnL: 0.05% | $-0.08 +2025-03-10 12:57:26,247 - INFO - OPENED SHORT at 2064.47 | Stop loss: 2074.811860714285 | Take profit: 2033.473683928571 +2025-03-10 12:57:26,283 - INFO - CLOSED short at 2070.04 | PnL: -0.27% | $-0.66 +2025-03-10 12:57:26,318 - INFO - OPENED LONG at 2067.8 | Stop loss: 2057.4414892857144 | Take profit: 2098.8462660714285 +2025-03-10 12:57:26,355 - INFO - CLOSED long at 2068.18 | PnL: 0.02% | $-0.15 +2025-03-10 12:57:26,424 - INFO - OPENED SHORT at 2067.88 | Stop loss: 2078.238910714286 | Take profit: 2036.8325339285716 +2025-03-10 12:57:26,528 - INFO - CLOSED short at 2066.15 | PnL: 0.08% | $-0.03 +2025-03-10 12:57:26,706 - INFO - OPENED SHORT at 2059.59 | Stop loss: 2069.907460714286 | Take profit: 2028.6668839285717 +2025-03-10 12:57:26,742 - INFO - CLOSED short at 2061.3 | PnL: -0.08% | $-0.32 +2025-03-10 12:57:26,853 - INFO - OPENED LONG at 2066.24 | Stop loss: 2055.8892892857143 | Take profit: 2097.262866071428 +2025-03-10 12:57:27,032 - INFO - CLOSED long at 2064.08 | PnL: -0.10% | $-0.36 +2025-03-10 12:57:27,033 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.4199107142854 | Take profit: 2033.0895339285712 +2025-03-10 12:57:27,068 - INFO - CLOSED short at 2062.71 | PnL: 0.07% | $-0.06 +2025-03-10 12:57:27,219 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.272489285714 | Take profit: 2092.5532660714284 +2025-03-10 12:57:27,361 - INFO - CLOSED long at 2059.3 | PnL: -0.11% | $-0.37 +2025-03-10 12:57:27,362 - INFO - OPENED SHORT at 2059.3 | Stop loss: 2069.616010714286 | Take profit: 2028.3812339285716 +2025-03-10 12:57:27,402 - INFO - CLOSED short at 2060.31 | PnL: -0.05% | $-0.26 +2025-03-10 12:57:27,402 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.9889392857144 | Take profit: 2091.2439160714284 +2025-03-10 12:57:27,438 - INFO - CLOSED long at 2061.8 | PnL: 0.07% | $-0.05 +2025-03-10 12:57:27,439 - INFO - OPENED SHORT at 2061.8 | Stop loss: 2072.1285107142858 | Take profit: 2030.8437339285715 +2025-03-10 12:57:27,476 - INFO - CLOSED short at 2064.7 | PnL: -0.14% | $-0.42 +2025-03-10 12:57:27,579 - INFO - OPENED SHORT at 2060.3 | Stop loss: 2070.621010714286 | Take profit: 2029.3662339285715 +2025-03-10 12:57:27,650 - INFO - CLOSED short at 2061.9 | PnL: -0.08% | $-0.31 +2025-03-10 12:57:27,651 - INFO - OPENED LONG at 2061.9 | Stop loss: 2051.5709892857144 | Take profit: 2092.8577660714286 +2025-03-10 12:57:27,688 - INFO - CLOSED long at 2064.1 | PnL: 0.11% | $0.01 +2025-03-10 12:57:27,724 - INFO - OPENED LONG at 2065.36 | Stop loss: 2055.0136892857145 | Take profit: 2096.3696660714286 +2025-03-10 12:57:27,763 - INFO - CLOSED long at 2064.33 | PnL: -0.05% | $-0.26 +2025-03-10 12:57:27,909 - INFO - OPENED SHORT at 2063.53 | Stop loss: 2073.8671607142855 | Take profit: 2032.5477839285716 +2025-03-10 12:57:27,984 - INFO - CLOSED short at 2062.6 | PnL: 0.05% | $-0.09 +2025-03-10 12:57:28,022 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.2189607142855 | Take profit: 2030.9323839285714 +2025-03-10 12:57:28,098 - INFO - CLOSED short at 2060.7 | PnL: 0.06% | $-0.07 +2025-03-10 12:57:28,244 - INFO - OPENED SHORT at 2059.02 | Stop loss: 2069.3346107142856 | Take profit: 2028.1054339285713 +2025-03-10 12:57:28,283 - INFO - CLOSED short at 2058.89 | PnL: 0.01% | $-0.16 +2025-03-10 12:57:28,284 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.576039285714 | Take profit: 2089.8026160714285 +2025-03-10 12:57:28,323 - INFO - CLOSED long at 2059.96 | PnL: 0.05% | $-0.08 +2025-03-10 12:57:28,324 - INFO - OPENED SHORT at 2059.96 | Stop loss: 2070.2793107142857 | Take profit: 2029.0313339285715 +2025-03-10 12:57:28,442 - INFO - CLOSED short at 2058.28 | PnL: 0.08% | $-0.03 +2025-03-10 12:57:28,482 - INFO - OPENED LONG at 2056.28 | Stop loss: 2045.9790892857145 | Take profit: 2087.1534660714287 +2025-03-10 12:57:28,517 - INFO - CLOSED long at 2055.6 | PnL: -0.03% | $-0.23 +2025-03-10 12:57:28,517 - INFO - OPENED SHORT at 2055.6 | Stop loss: 2065.897510714286 | Take profit: 2024.7367339285715 +2025-03-10 12:57:28,627 - INFO - CLOSED short at 2056.71 | PnL: -0.05% | $-0.26 +2025-03-10 12:57:28,697 - INFO - OPENED SHORT at 2059.8 | Stop loss: 2070.118510714286 | Take profit: 2028.8737339285715 +2025-03-10 12:57:28,774 - INFO - CLOSED short at 2061.5 | PnL: -0.08% | $-0.31 +2025-03-10 12:57:28,879 - INFO - OPENED LONG at 2062.69 | Stop loss: 2052.3570392857146 | Take profit: 2093.6596160714284 +2025-03-10 12:57:28,984 - INFO - CLOSED long at 2066.01 | PnL: 0.16% | $0.10 +2025-03-10 12:57:29,056 - INFO - OPENED SHORT at 2064.49 | Stop loss: 2074.8319607142857 | Take profit: 2033.4933839285713 +2025-03-10 12:57:29,159 - INFO - CLOSED short at 2066.79 | PnL: -0.11% | $-0.36 +2025-03-10 12:57:29,160 - INFO - OPENED LONG at 2066.79 | Stop loss: 2056.436539285714 | Take profit: 2097.821116071428 +2025-03-10 12:57:29,230 - INFO - CLOSED long at 2067.01 | PnL: 0.01% | $-0.15 +2025-03-10 12:57:29,299 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.421539285714 | Take profit: 2100.8661160714287 +2025-03-10 12:57:29,509 - INFO - CLOSED long at 2071.04 | PnL: 0.06% | $-0.07 +2025-03-10 12:57:29,510 - INFO - OPENED SHORT at 2071.04 | Stop loss: 2081.414710714286 | Take profit: 2039.9451339285715 +2025-03-10 12:57:29,545 - INFO - CLOSED short at 2070.01 | PnL: 0.05% | $-0.09 +2025-03-10 12:57:29,583 - INFO - OPENED SHORT at 2071.6 | Stop loss: 2081.9775107142855 | Take profit: 2040.4967339285713 +2025-03-10 12:57:29,621 - INFO - CLOSED short at 2073.23 | PnL: -0.08% | $-0.30 +2025-03-10 12:57:29,622 - INFO - OPENED LONG at 2073.23 | Stop loss: 2062.8443392857143 | Take profit: 2104.3577160714285 +2025-03-10 12:57:29,657 - INFO - CLOSED long at 2070.0 | PnL: -0.16% | $-0.43 +2025-03-10 12:57:29,657 - INFO - OPENED SHORT at 2070.0 | Stop loss: 2080.3695107142858 | Take profit: 2038.9207339285715 +2025-03-10 12:57:29,696 - INFO - CLOSED short at 2068.15 | PnL: 0.09% | $-0.02 +2025-03-10 12:57:29,697 - INFO - OPENED LONG at 2068.15 | Stop loss: 2057.7897392857144 | Take profit: 2099.2015160714286 +2025-03-10 12:57:29,770 - INFO - CLOSED long at 2069.69 | PnL: 0.07% | $-0.04 +2025-03-10 12:57:29,770 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.057960714286 | Take profit: 2038.6153839285714 +2025-03-10 12:57:29,878 - INFO - CLOSED short at 2068.79 | PnL: 0.04% | $-0.09 +2025-03-10 12:57:29,878 - INFO - OPENED LONG at 2068.79 | Stop loss: 2058.426539285714 | Take profit: 2099.8511160714284 +2025-03-10 12:57:29,916 - INFO - CLOSED long at 2072.99 | PnL: 0.20% | $0.17 +2025-03-10 12:57:29,916 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.3744607142853 | Take profit: 2041.8658839285713 +2025-03-10 12:57:30,027 - INFO - CLOSED short at 2067.33 | PnL: 0.27% | $0.29 +2025-03-10 12:57:30,064 - INFO - OPENED LONG at 2066.38 | Stop loss: 2056.0285892857146 | Take profit: 2097.4049660714286 +2025-03-10 12:57:30,100 - INFO - CLOSED long at 2065.7 | PnL: -0.03% | $-0.22 +2025-03-10 12:57:30,101 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.0480107142857 | Take profit: 2034.6852339285713 +2025-03-10 12:57:30,173 - INFO - CLOSED short at 2063.95 | PnL: 0.08% | $-0.03 +2025-03-10 12:57:30,282 - INFO - OPENED SHORT at 2065.3 | Stop loss: 2075.646010714286 | Take profit: 2034.2912339285717 +2025-03-10 12:57:30,396 - INFO - CLOSED short at 2065.5 | PnL: -0.01% | $-0.18 +2025-03-10 12:57:30,397 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.1529892857143 | Take profit: 2096.5117660714286 +2025-03-10 12:57:30,432 - INFO - CLOSED long at 2067.53 | PnL: 0.10% | $-0.00 +2025-03-10 12:57:30,433 - INFO - OPENED SHORT at 2067.53 | Stop loss: 2077.8871607142855 | Take profit: 2036.4877839285716 +2025-03-10 12:57:30,469 - INFO - CLOSED short at 2065.29 | PnL: 0.11% | $0.01 +2025-03-10 12:57:30,469 - INFO - OPENED LONG at 2065.29 | Stop loss: 2054.944039285714 | Take profit: 2096.2986160714286 +2025-03-10 12:57:30,504 - INFO - CLOSED long at 2065.31 | PnL: 0.00% | $-0.17 +2025-03-10 12:57:30,504 - INFO - OPENED SHORT at 2065.31 | Stop loss: 2075.6560607142856 | Take profit: 2034.3010839285714 +2025-03-10 12:57:30,542 - INFO - CLOSED short at 2066.8 | PnL: -0.07% | $-0.29 +2025-03-10 12:57:30,580 - INFO - OPENED LONG at 2066.5 | Stop loss: 2056.147989285714 | Take profit: 2097.526766071429 +2025-03-10 12:57:30,619 - INFO - CLOSED long at 2068.59 | PnL: 0.10% | $0.00 +2025-03-10 12:57:30,620 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.9524607142857 | Take profit: 2037.5318839285715 +2025-03-10 12:57:30,688 - INFO - CLOSED short at 2070.2 | PnL: -0.08% | $-0.30 +2025-03-10 12:57:30,724 - INFO - OPENED LONG at 2071.35 | Stop loss: 2060.973739285714 | Take profit: 2102.4495160714287 +2025-03-10 12:57:30,760 - INFO - CLOSED long at 2070.9 | PnL: -0.02% | $-0.20 +2025-03-10 12:57:30,797 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.057960714286 | Take profit: 2038.6153839285714 +2025-03-10 12:57:30,835 - INFO - CLOSED short at 2070.7 | PnL: -0.05% | $-0.25 +2025-03-10 12:57:30,870 - INFO - OPENED SHORT at 2070.8 | Stop loss: 2081.173510714286 | Take profit: 2039.7087339285715 +2025-03-10 12:57:31,045 - INFO - CLOSED short at 2068.67 | PnL: 0.10% | $0.00 +2025-03-10 12:57:31,045 - INFO - OPENED LONG at 2068.67 | Stop loss: 2058.3071392857146 | Take profit: 2099.7293160714285 +2025-03-10 12:57:31,116 - INFO - CLOSED long at 2069.78 | PnL: 0.05% | $-0.08 +2025-03-10 12:57:31,153 - INFO - OPENED SHORT at 2071.61 | Stop loss: 2081.987560714286 | Take profit: 2040.5065839285714 +2025-03-10 12:57:31,193 - INFO - CLOSED short at 2074.37 | PnL: -0.13% | $-0.38 +2025-03-10 12:57:31,193 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.978639285714 | Take profit: 2105.5148160714284 +2025-03-10 12:57:31,377 - INFO - CLOSED long at 2075.32 | PnL: 0.05% | $-0.09 +2025-03-10 12:57:31,449 - INFO - OPENED LONG at 2076.9 | Stop loss: 2066.495989285714 | Take profit: 2108.0827660714285 +2025-03-10 12:57:31,485 - INFO - CLOSED long at 2075.61 | PnL: -0.06% | $-0.27 +2025-03-10 12:57:31,522 - INFO - OPENED SHORT at 2074.0 | Stop loss: 2084.3895107142857 | Take profit: 2042.8607339285716 +2025-03-10 12:57:31,597 - INFO - CLOSED short at 2069.97 | PnL: 0.19% | $0.15 +2025-03-10 12:57:31,598 - INFO - OPENED LONG at 2069.97 | Stop loss: 2059.600639285714 | Take profit: 2101.0488160714285 +2025-03-10 12:57:31,637 - INFO - CLOSED long at 2067.7 | PnL: -0.11% | $-0.34 +2025-03-10 12:57:31,638 - INFO - OPENED SHORT at 2067.7 | Stop loss: 2078.0580107142855 | Take profit: 2036.6552339285713 +2025-03-10 12:57:31,674 - INFO - CLOSED short at 2067.0 | PnL: 0.03% | $-0.11 +2025-03-10 12:57:31,905 - INFO - OPENED LONG at 2068.1 | Stop loss: 2057.7399892857143 | Take profit: 2099.1507660714283 +2025-03-10 12:57:31,976 - INFO - CLOSED long at 2070.19 | PnL: 0.10% | $0.00 +2025-03-10 12:57:31,977 - INFO - OPENED SHORT at 2070.19 | Stop loss: 2080.560460714286 | Take profit: 2039.1078839285715 +2025-03-10 12:57:32,052 - INFO - CLOSED short at 2067.19 | PnL: 0.14% | $0.07 +2025-03-10 12:57:32,089 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.1529892857143 | Take profit: 2096.5117660714286 +2025-03-10 12:57:32,163 - INFO - CLOSED long at 2065.8 | PnL: 0.01% | $-0.14 +2025-03-10 12:57:32,204 - INFO - OPENED LONG at 2065.07 | Stop loss: 2054.7251392857147 | Take profit: 2096.0753160714285 +2025-03-10 12:57:32,315 - INFO - CLOSED long at 2062.34 | PnL: -0.13% | $-0.38 +2025-03-10 12:57:32,353 - INFO - OPENED LONG at 2063.98 | Stop loss: 2053.640589285714 | Take profit: 2094.968966071429 +2025-03-10 12:57:32,391 - INFO - CLOSED long at 2066.1 | PnL: 0.10% | $0.00 +2025-03-10 12:57:32,463 - INFO - OPENED SHORT at 2064.11 | Stop loss: 2074.4500607142854 | Take profit: 2033.1190839285716 +2025-03-10 12:57:32,502 - INFO - CLOSED short at 2064.5 | PnL: -0.02% | $-0.19 +2025-03-10 12:57:32,502 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.1579892857144 | Take profit: 2095.4967660714287 +2025-03-10 12:57:32,539 - INFO - CLOSED long at 2066.33 | PnL: 0.09% | $-0.02 +2025-03-10 12:57:32,540 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.681160714286 | Take profit: 2035.3057839285714 +2025-03-10 12:57:32,649 - INFO - CLOSED short at 2060.2 | PnL: 0.30% | $0.32 +2025-03-10 12:57:32,721 - INFO - OPENED LONG at 2058.09 | Stop loss: 2047.7800392857146 | Take profit: 2088.990616071429 +2025-03-10 12:57:32,756 - INFO - CLOSED long at 2058.65 | PnL: 0.03% | $-0.12 +2025-03-10 12:57:32,793 - INFO - OPENED SHORT at 2056.77 | Stop loss: 2067.0733607142856 | Take profit: 2025.8891839285714 +2025-03-10 12:57:32,830 - INFO - CLOSED short at 2053.01 | PnL: 0.18% | $0.13 +2025-03-10 12:57:32,831 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.7254392857144 | Take profit: 2083.8344160714287 +2025-03-10 12:57:32,866 - INFO - CLOSED long at 2049.21 | PnL: -0.19% | $-0.46 +2025-03-10 12:57:32,936 - INFO - OPENED SHORT at 2051.99 | Stop loss: 2062.2694607142857 | Take profit: 2021.1808839285711 +2025-03-10 12:57:33,082 - INFO - CLOSED short at 2057.89 | PnL: -0.29% | $-0.62 +2025-03-10 12:57:33,121 - INFO - OPENED SHORT at 2062.83 | Stop loss: 2073.1636607142855 | Take profit: 2031.8582839285714 +2025-03-10 12:57:33,196 - INFO - CLOSED short at 2065.1 | PnL: -0.11% | $-0.34 +2025-03-10 12:57:33,197 - INFO - OPENED LONG at 2065.1 | Stop loss: 2054.754989285714 | Take profit: 2096.1057660714287 +2025-03-10 12:57:33,269 - INFO - CLOSED long at 2062.55 | PnL: -0.12% | $-0.36 +2025-03-10 12:57:33,269 - INFO - OPENED SHORT at 2062.55 | Stop loss: 2072.8822607142856 | Take profit: 2031.5824839285715 +2025-03-10 12:57:33,416 - INFO - CLOSED short at 2066.59 | PnL: -0.20% | $-0.47 +2025-03-10 12:57:33,454 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.740089285714 | Take profit: 2095.0704660714287 +2025-03-10 12:57:33,529 - INFO - CLOSED long at 2059.9 | PnL: -0.20% | $-0.48 +2025-03-10 12:57:33,667 - INFO - OPENED LONG at 2065.72 | Stop loss: 2055.371889285714 | Take profit: 2096.7350660714283 +2025-03-10 12:57:33,702 - INFO - CLOSED long at 2070.31 | PnL: 0.22% | $0.19 +2025-03-10 12:57:33,737 - INFO - OPENED LONG at 2070.24 | Stop loss: 2059.8692892857143 | Take profit: 2101.322866071428 +2025-03-10 12:57:33,877 - INFO - CLOSED long at 2073.49 | PnL: 0.16% | $0.09 +2025-03-10 12:57:33,913 - INFO - OPENED LONG at 2074.05 | Stop loss: 2063.6602392857144 | Take profit: 2105.1900160714285 +2025-03-10 12:57:33,990 - INFO - CLOSED long at 2071.89 | PnL: -0.10% | $-0.32 +2025-03-10 12:57:33,990 - INFO - OPENED SHORT at 2071.89 | Stop loss: 2082.2689607142856 | Take profit: 2040.782383928571 +2025-03-10 12:57:34,031 - INFO - CLOSED short at 2071.8 | PnL: 0.00% | $-0.15 +2025-03-10 12:57:34,032 - INFO - OPENED LONG at 2071.8 | Stop loss: 2061.4214892857144 | Take profit: 2102.906266071429 +2025-03-10 12:57:34,145 - INFO - CLOSED long at 2077.61 | PnL: 0.28% | $0.28 +2025-03-10 12:57:34,183 - INFO - OPENED LONG at 2085.56 | Stop loss: 2075.112689285714 | Take profit: 2116.8726660714287 +2025-03-10 12:57:34,224 - INFO - CLOSED long at 2090.49 | PnL: 0.24% | $0.21 +2025-03-10 12:57:34,297 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3730107142856 | Take profit: 2098.710233928571 +2025-03-10 12:57:34,337 - INFO - CLOSED short at 2139.54 | PnL: -0.41% | $-0.81 +2025-03-10 12:57:34,338 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.8227892857144 | Take profit: 2171.6623660714286 +2025-03-10 12:57:34,479 - INFO - CLOSED long at 2141.41 | PnL: 0.09% | $-0.02 +2025-03-10 12:57:34,479 - INFO - OPENED SHORT at 2141.41 | Stop loss: 2152.1365607142857 | Take profit: 2109.2595839285714 +2025-03-10 12:57:34,664 - INFO - CLOSED short at 2126.99 | PnL: 0.67% | $0.89 +2025-03-10 12:57:34,702 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.6439892857147 | Take profit: 2159.238766071429 +2025-03-10 12:57:34,879 - INFO - CLOSED long at 2119.93 | PnL: -0.35% | $-0.70 +2025-03-10 12:57:34,990 - INFO - OPENED LONG at 2119.14 | Stop loss: 2108.524789285714 | Take profit: 2150.9563660714284 +2025-03-10 12:57:35,025 - INFO - CLOSED long at 2119.07 | PnL: -0.00% | $-0.16 +2025-03-10 12:57:35,026 - INFO - OPENED SHORT at 2119.07 | Stop loss: 2129.6848607142856 | Take profit: 2087.2546839285715 +2025-03-10 12:57:35,168 - INFO - CLOSED short at 2109.05 | PnL: 0.47% | $0.58 +2025-03-10 12:57:35,206 - INFO - OPENED SHORT at 2112.09 | Stop loss: 2122.669960714286 | Take profit: 2080.3793839285718 +2025-03-10 12:57:35,242 - INFO - CLOSED short at 2112.95 | PnL: -0.04% | $-0.22 +2025-03-10 12:57:35,243 - INFO - OPENED LONG at 2112.95 | Stop loss: 2102.365739285714 | Take profit: 2144.6735160714284 +2025-03-10 12:57:35,316 - INFO - CLOSED long at 2113.24 | PnL: 0.01% | $-0.14 +2025-03-10 12:57:35,316 - INFO - OPENED SHORT at 2113.24 | Stop loss: 2123.8257107142854 | Take profit: 2081.512133928571 +2025-03-10 12:57:35,356 - INFO - CLOSED short at 2112.99 | PnL: 0.01% | $-0.14 +2025-03-10 12:57:35,357 - INFO - OPENED LONG at 2112.99 | Stop loss: 2102.405539285714 | Take profit: 2144.714116071428 +2025-03-10 12:57:35,395 - INFO - CLOSED long at 2120.81 | PnL: 0.37% | $0.42 +2025-03-10 12:57:35,505 - INFO - OPENED SHORT at 2110.9 | Stop loss: 2121.4740107142857 | Take profit: 2079.2072339285714 +2025-03-10 12:57:35,542 - INFO - CLOSED short at 2108.71 | PnL: 0.10% | $0.01 +2025-03-10 12:57:35,585 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.9380392857142 | Take profit: 2138.1166160714283 +2025-03-10 12:57:35,623 - INFO - CLOSED long at 2108.06 | PnL: 0.07% | $-0.04 +2025-03-10 12:57:35,729 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.5304892857143 | Take profit: 2121.3792660714284 +2025-03-10 12:57:35,875 - INFO - CLOSED long at 2102.29 | PnL: 0.59% | $0.77 +2025-03-10 12:57:35,875 - INFO - OPENED SHORT at 2102.29 | Stop loss: 2112.820960714286 | Take profit: 2070.7263839285715 +2025-03-10 12:57:35,982 - INFO - CLOSED short at 2100.69 | PnL: 0.08% | $-0.04 +2025-03-10 12:57:36,055 - INFO - OPENED LONG at 2106.39 | Stop loss: 2095.8385392857144 | Take profit: 2138.0151160714286 +2025-03-10 12:57:36,093 - INFO - CLOSED long at 2100.74 | PnL: -0.27% | $-0.58 +2025-03-10 12:57:36,167 - INFO - OPENED LONG at 2104.68 | Stop loss: 2094.137089285714 | Take profit: 2136.2794660714285 +2025-03-10 12:57:36,208 - INFO - CLOSED long at 2101.51 | PnL: -0.15% | $-0.39 +2025-03-10 12:57:36,247 - INFO - OPENED SHORT at 2099.59 | Stop loss: 2110.107460714286 | Take profit: 2068.0668839285713 +2025-03-10 12:57:36,285 - INFO - CLOSED short at 2100.02 | PnL: -0.02% | $-0.19 +2025-03-10 12:57:36,286 - INFO - OPENED LONG at 2100.02 | Stop loss: 2089.5003892857144 | Take profit: 2131.5495660714287 +2025-03-10 12:57:36,324 - INFO - CLOSED long at 2098.39 | PnL: -0.08% | $-0.28 +2025-03-10 12:57:36,482 - INFO - OPENED SHORT at 2092.46 | Stop loss: 2102.9418107142856 | Take profit: 2061.0438339285715 +2025-03-10 12:57:36,557 - INFO - CLOSED short at 2094.72 | PnL: -0.11% | $-0.32 +2025-03-10 12:57:36,558 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.226889285714 | Take profit: 2126.1700660714287 +2025-03-10 12:57:36,591 - INFO - CLOSED long at 2094.08 | PnL: -0.03% | $-0.20 +2025-03-10 12:57:36,630 - INFO - OPENED SHORT at 2088.35 | Stop loss: 2098.8112607142857 | Take profit: 2056.9954839285715 +2025-03-10 12:57:36,668 - INFO - CLOSED short at 2083.28 | PnL: 0.24% | $0.22 +2025-03-10 12:57:36,740 - INFO - OPENED SHORT at 2083.97 | Stop loss: 2094.4093607142854 | Take profit: 2052.681183928571 +2025-03-10 12:57:36,853 - INFO - CLOSED short at 2081.49 | PnL: 0.12% | $0.03 +2025-03-10 12:57:36,853 - INFO - OPENED LONG at 2081.49 | Stop loss: 2071.063039285714 | Take profit: 2112.7416160714283 +2025-03-10 12:57:36,888 - INFO - CLOSED long at 2080.38 | PnL: -0.05% | $-0.24 +2025-03-10 12:57:36,927 - INFO - OPENED SHORT at 2081.25 | Stop loss: 2091.675760714286 | Take profit: 2050.0019839285715 +2025-03-10 12:57:36,966 - INFO - CLOSED short at 2083.41 | PnL: -0.10% | $-0.31 +2025-03-10 12:57:36,966 - INFO - OPENED LONG at 2083.41 | Stop loss: 2072.973439285714 | Take profit: 2114.6904160714284 +2025-03-10 12:57:37,048 - INFO - CLOSED long at 2083.59 | PnL: 0.01% | $-0.14 +2025-03-10 12:57:37,088 - INFO - OPENED SHORT at 2086.57 | Stop loss: 2097.0223607142857 | Take profit: 2055.2421839285716 +2025-03-10 12:57:37,125 - INFO - CLOSED short at 2085.8 | PnL: 0.04% | $-0.10 +2025-03-10 12:57:37,126 - INFO - OPENED LONG at 2085.8 | Stop loss: 2075.3514892857147 | Take profit: 2117.1162660714285 +2025-03-10 12:57:37,198 - INFO - CLOSED long at 2085.83 | PnL: 0.00% | $-0.15 +2025-03-10 12:57:37,198 - INFO - OPENED SHORT at 2085.83 | Stop loss: 2096.2786607142857 | Take profit: 2054.513283928571 +2025-03-10 12:57:37,233 - INFO - CLOSED short at 2085.85 | PnL: -0.00% | $-0.15 +2025-03-10 12:57:37,234 - INFO - OPENED LONG at 2085.85 | Stop loss: 2075.4012392857144 | Take profit: 2117.1670160714284 +2025-03-10 12:57:37,338 - INFO - CLOSED long at 2088.1 | PnL: 0.11% | $0.01 +2025-03-10 12:57:37,339 - INFO - OPENED SHORT at 2088.1 | Stop loss: 2098.5600107142855 | Take profit: 2056.7492339285714 +2025-03-10 12:57:37,450 - INFO - CLOSED short at 2087.47 | PnL: 0.03% | $-0.11 +2025-03-10 12:57:37,486 - INFO - OPENED LONG at 2087.78 | Stop loss: 2077.3215892857147 | Take profit: 2119.1259660714286 +2025-03-10 12:57:37,521 - INFO - CLOSED long at 2086.81 | PnL: -0.05% | $-0.22 +2025-03-10 12:57:37,558 - INFO - OPENED SHORT at 2089.79 | Stop loss: 2100.2584607142853 | Take profit: 2058.4138839285715 +2025-03-10 12:57:37,662 - INFO - CLOSED short at 2091.05 | PnL: -0.06% | $-0.24 +2025-03-10 12:57:37,701 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.5752392857144 | Take profit: 2122.4450160714287 +2025-03-10 12:57:37,739 - INFO - CLOSED long at 2091.95 | PnL: 0.04% | $-0.09 +2025-03-10 12:57:37,775 - INFO - OPENED LONG at 2094.7 | Stop loss: 2084.206989285714 | Take profit: 2126.149766071428 +2025-03-10 12:57:37,881 - INFO - CLOSED long at 2101.64 | PnL: 0.33% | $0.35 +2025-03-10 12:57:37,881 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1677107142855 | Take profit: 2070.086133928571 +2025-03-10 12:57:37,920 - INFO - CLOSED short at 2097.11 | PnL: 0.22% | $0.18 +2025-03-10 12:57:37,959 - INFO - OPENED SHORT at 2098.49 | Stop loss: 2109.0019607142854 | Take profit: 2066.983383928571 +2025-03-10 12:57:37,995 - INFO - Trade Analysis: Win Rate=16.2% in uptrends, 0.0% in downtrends | Avg Win=$0.19, Avg Loss=$-0.23 +2025-03-10 12:57:37,996 - INFO - Episode 0: Reward=-222.85, Balance=$76.90, Win Rate=20.3%, Trades=158, Episode PnL=$-18.13, Total PnL=$-23.10, Max Drawdown=23.6%, Pred Accuracy=97.9% +2025-03-10 12:57:37,996 - ERROR - Error in episode 0: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 12:57:37,998 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1763, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 12:57:38,019 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:57:38,321 - INFO - OPENED SHORT at 2052.16 | Stop loss: 2062.4403107142853 | Take profit: 2021.3483339285713 +2025-03-10 12:57:38,364 - INFO - CLOSED short at 2053.1 | PnL: -0.05% | $-0.29 +2025-03-10 12:57:38,541 - INFO - OPENED SHORT at 2050.2 | Stop loss: 2060.470510714286 | Take profit: 2019.4177339285714 +2025-03-10 12:57:38,579 - INFO - CLOSED short at 2049.6 | PnL: 0.03% | $-0.14 +2025-03-10 12:57:38,580 - INFO - OPENED LONG at 2049.6 | Stop loss: 2039.3324892857142 | Take profit: 2080.3732660714286 +2025-03-10 12:57:38,651 - INFO - CLOSED long at 2049.61 | PnL: 0.00% | $-0.20 +2025-03-10 12:57:38,652 - INFO - OPENED SHORT at 2049.61 | Stop loss: 2059.8775607142857 | Take profit: 2018.8365839285716 +2025-03-10 12:57:38,690 - INFO - CLOSED short at 2049.24 | PnL: 0.02% | $-0.16 +2025-03-10 12:57:38,761 - INFO - OPENED LONG at 2047.39 | Stop loss: 2037.1335392857143 | Take profit: 2078.130116071429 +2025-03-10 12:57:38,832 - INFO - CLOSED long at 2047.4 | PnL: 0.00% | $-0.20 +2025-03-10 12:57:38,869 - INFO - OPENED LONG at 2047.2 | Stop loss: 2036.9444892857143 | Take profit: 2077.9372660714284 +2025-03-10 12:57:38,907 - INFO - CLOSED long at 2045.99 | PnL: -0.06% | $-0.31 +2025-03-10 12:57:38,942 - INFO - OPENED LONG at 2045.99 | Stop loss: 2035.7405392857142 | Take profit: 2076.7091160714285 +2025-03-10 12:57:39,051 - INFO - CLOSED long at 2047.59 | PnL: 0.08% | $-0.04 +2025-03-10 12:57:39,121 - INFO - OPENED SHORT at 2050.0 | Stop loss: 2060.2695107142854 | Take profit: 2019.2207339285715 +2025-03-10 12:57:39,300 - INFO - CLOSED short at 2051.89 | PnL: -0.09% | $-0.38 +2025-03-10 12:57:39,301 - INFO - OPENED LONG at 2051.89 | Stop loss: 2041.6110392857142 | Take profit: 2082.6976160714285 +2025-03-10 12:57:39,412 - INFO - CLOSED long at 2057.01 | PnL: 0.25% | $0.29 +2025-03-10 12:57:39,448 - INFO - OPENED LONG at 2056.89 | Stop loss: 2046.5860392857142 | Take profit: 2087.7726160714283 +2025-03-10 12:57:39,489 - INFO - CLOSED long at 2058.39 | PnL: 0.07% | $-0.05 +2025-03-10 12:57:39,489 - INFO - OPENED SHORT at 2058.39 | Stop loss: 2068.7014607142855 | Take profit: 2027.4848839285712 +2025-03-10 12:57:39,714 - INFO - CLOSED short at 2063.59 | PnL: -0.25% | $-0.69 +2025-03-10 12:57:39,829 - INFO - OPENED SHORT at 2063.01 | Stop loss: 2073.344560714286 | Take profit: 2032.0355839285717 +2025-03-10 12:57:39,904 - INFO - CLOSED short at 2058.3 | PnL: 0.23% | $0.25 +2025-03-10 12:57:39,904 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9889892857145 | Take profit: 2089.2037660714286 +2025-03-10 12:57:39,980 - INFO - CLOSED long at 2061.89 | PnL: 0.17% | $0.14 +2025-03-10 12:57:39,980 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.2189607142855 | Take profit: 2030.9323839285714 +2025-03-10 12:57:40,017 - INFO - CLOSED short at 2062.89 | PnL: -0.05% | $-0.29 +2025-03-10 12:57:40,130 - INFO - OPENED SHORT at 2057.8 | Stop loss: 2068.1085107142862 | Take profit: 2026.9037339285715 +2025-03-10 12:57:40,166 - INFO - CLOSED short at 2057.89 | PnL: -0.00% | $-0.20 +2025-03-10 12:57:40,203 - INFO - OPENED LONG at 2057.94 | Stop loss: 2047.6307892857142 | Take profit: 2088.838366071429 +2025-03-10 12:57:40,278 - INFO - CLOSED long at 2061.79 | PnL: 0.19% | $0.17 +2025-03-10 12:57:40,278 - INFO - OPENED SHORT at 2061.79 | Stop loss: 2072.1184607142854 | Take profit: 2030.8338839285714 +2025-03-10 12:57:40,350 - INFO - CLOSED short at 2064.32 | PnL: -0.12% | $-0.43 +2025-03-10 12:57:40,351 - INFO - OPENED LONG at 2064.32 | Stop loss: 2053.9788892857146 | Take profit: 2095.314066071429 +2025-03-10 12:57:40,467 - INFO - CLOSED long at 2068.11 | PnL: 0.18% | $0.16 +2025-03-10 12:57:40,505 - INFO - OPENED LONG at 2068.29 | Stop loss: 2057.929039285714 | Take profit: 2099.3436160714286 +2025-03-10 12:57:40,650 - INFO - CLOSED long at 2069.6 | PnL: 0.06% | $-0.07 +2025-03-10 12:57:40,687 - INFO - OPENED LONG at 2068.65 | Stop loss: 2058.2872392857143 | Take profit: 2099.709016071429 +2025-03-10 12:57:40,727 - INFO - CLOSED long at 2068.99 | PnL: 0.02% | $-0.16 +2025-03-10 12:57:40,767 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.2590107142855 | Take profit: 2036.8522339285716 +2025-03-10 12:57:40,839 - INFO - CLOSED short at 2070.26 | PnL: -0.11% | $-0.41 +2025-03-10 12:57:40,878 - INFO - OPENED SHORT at 2071.44 | Stop loss: 2081.816710714286 | Take profit: 2040.3391339285715 +2025-03-10 12:57:40,955 - INFO - CLOSED short at 2075.1 | PnL: -0.18% | $-0.53 +2025-03-10 12:57:40,994 - INFO - OPENED LONG at 2072.91 | Stop loss: 2062.5259392857142 | Take profit: 2104.032916071428 +2025-03-10 12:57:41,033 - INFO - CLOSED long at 2072.33 | PnL: -0.03% | $-0.24 +2025-03-10 12:57:41,145 - INFO - OPENED SHORT at 2069.37 | Stop loss: 2079.7363607142856 | Take profit: 2038.3001839285712 +2025-03-10 12:57:41,218 - INFO - CLOSED short at 2072.8 | PnL: -0.17% | $-0.51 +2025-03-10 12:57:41,254 - INFO - OPENED SHORT at 2070.79 | Stop loss: 2081.1634607142855 | Take profit: 2039.6988839285714 +2025-03-10 12:57:41,291 - INFO - CLOSED short at 2070.28 | PnL: 0.02% | $-0.14 +2025-03-10 12:57:41,292 - INFO - OPENED LONG at 2070.28 | Stop loss: 2059.9090892857143 | Take profit: 2101.363466071429 +2025-03-10 12:57:41,369 - INFO - CLOSED long at 2067.2 | PnL: -0.15% | $-0.47 +2025-03-10 12:57:41,410 - INFO - OPENED LONG at 2070.36 | Stop loss: 2059.9886892857144 | Take profit: 2101.444666071429 +2025-03-10 12:57:41,485 - INFO - CLOSED long at 2070.7 | PnL: 0.02% | $-0.16 +2025-03-10 12:57:41,486 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.073010714286 | Take profit: 2039.6102339285715 +2025-03-10 12:57:41,637 - INFO - CLOSED short at 2067.6 | PnL: 0.15% | $0.09 +2025-03-10 12:57:41,638 - INFO - OPENED LONG at 2067.6 | Stop loss: 2057.2424892857143 | Take profit: 2098.6432660714286 +2025-03-10 12:57:41,675 - INFO - CLOSED long at 2067.51 | PnL: -0.00% | $-0.20 +2025-03-10 12:57:41,790 - INFO - OPENED LONG at 2065.99 | Stop loss: 2055.640539285714 | Take profit: 2097.0091160714283 +2025-03-10 12:57:41,863 - INFO - CLOSED long at 2066.29 | PnL: 0.01% | $-0.16 +2025-03-10 12:57:41,863 - INFO - OPENED SHORT at 2066.29 | Stop loss: 2076.6409607142855 | Take profit: 2035.2663839285713 +2025-03-10 12:57:41,908 - INFO - CLOSED short at 2065.08 | PnL: 0.06% | $-0.08 +2025-03-10 12:57:41,909 - INFO - OPENED LONG at 2065.08 | Stop loss: 2054.7350892857144 | Take profit: 2096.0854660714285 +2025-03-10 12:57:41,981 - INFO - CLOSED long at 2068.76 | PnL: 0.18% | $0.15 +2025-03-10 12:57:42,024 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.535989285714 | Take profit: 2099.9627660714286 +2025-03-10 12:57:42,132 - INFO - CLOSED long at 2069.7 | PnL: 0.04% | $-0.12 +2025-03-10 12:57:42,243 - INFO - OPENED LONG at 2071.4 | Stop loss: 2061.0234892857143 | Take profit: 2102.500266071429 +2025-03-10 12:57:42,387 - INFO - CLOSED long at 2073.11 | PnL: 0.08% | $-0.03 +2025-03-10 12:57:42,425 - INFO - OPENED LONG at 2072.7 | Stop loss: 2062.316989285714 | Take profit: 2103.8197660714286 +2025-03-10 12:57:42,535 - INFO - CLOSED long at 2073.9 | PnL: 0.06% | $-0.08 +2025-03-10 12:57:42,674 - INFO - OPENED LONG at 2069.46 | Stop loss: 2059.0931892857143 | Take profit: 2100.5311660714287 +2025-03-10 12:57:42,880 - INFO - CLOSED long at 2066.8 | PnL: -0.13% | $-0.43 +2025-03-10 12:57:42,881 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.153510714286 | Take profit: 2035.7687339285717 +2025-03-10 12:57:42,916 - INFO - CLOSED short at 2065.49 | PnL: 0.06% | $-0.07 +2025-03-10 12:57:42,953 - INFO - OPENED LONG at 2063.61 | Stop loss: 2053.2724392857144 | Take profit: 2094.5934160714287 +2025-03-10 12:57:43,060 - INFO - CLOSED long at 2068.58 | PnL: 0.24% | $0.26 +2025-03-10 12:57:43,132 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.9737892857142 | Take profit: 2100.409366071429 +2025-03-10 12:57:43,199 - INFO - CLOSED long at 2067.59 | PnL: -0.08% | $-0.34 +2025-03-10 12:57:43,200 - INFO - OPENED SHORT at 2067.59 | Stop loss: 2077.947460714286 | Take profit: 2036.5468839285716 +2025-03-10 12:57:43,236 - INFO - CLOSED short at 2069.2 | PnL: -0.08% | $-0.33 +2025-03-10 12:57:43,237 - INFO - OPENED LONG at 2069.2 | Stop loss: 2058.834489285714 | Take profit: 2100.2672660714284 +2025-03-10 12:57:43,311 - INFO - CLOSED long at 2071.59 | PnL: 0.12% | $0.03 +2025-03-10 12:57:43,311 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.967460714286 | Take profit: 2040.4868839285714 +2025-03-10 12:57:43,349 - INFO - CLOSED short at 2070.7 | PnL: 0.04% | $-0.11 +2025-03-10 12:57:43,350 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3269892857143 | Take profit: 2101.7897660714284 +2025-03-10 12:57:43,425 - INFO - CLOSED long at 2070.73 | PnL: 0.00% | $-0.18 +2025-03-10 12:57:43,465 - INFO - OPENED LONG at 2068.5 | Stop loss: 2058.137989285714 | Take profit: 2099.5567660714287 +2025-03-10 12:57:43,541 - INFO - CLOSED long at 2067.84 | PnL: -0.03% | $-0.24 +2025-03-10 12:57:43,541 - INFO - OPENED SHORT at 2067.84 | Stop loss: 2078.198710714286 | Take profit: 2036.7931339285717 +2025-03-10 12:57:43,686 - INFO - CLOSED short at 2066.1 | PnL: 0.08% | $-0.03 +2025-03-10 12:57:43,686 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.749989285714 | Take profit: 2097.1207660714285 +2025-03-10 12:57:43,876 - INFO - CLOSED long at 2067.8 | PnL: 0.08% | $-0.03 +2025-03-10 12:57:43,876 - INFO - OPENED SHORT at 2067.8 | Stop loss: 2078.158510714286 | Take profit: 2036.7537339285716 +2025-03-10 12:57:43,914 - INFO - CLOSED short at 2068.18 | PnL: -0.02% | $-0.22 +2025-03-10 12:57:43,914 - INFO - OPENED LONG at 2068.18 | Stop loss: 2057.8195892857143 | Take profit: 2099.2319660714284 +2025-03-10 12:57:43,952 - INFO - CLOSED long at 2065.69 | PnL: -0.12% | $-0.41 +2025-03-10 12:57:44,027 - INFO - OPENED SHORT at 2064.99 | Stop loss: 2075.3344607142853 | Take profit: 2033.9858839285712 +2025-03-10 12:57:44,066 - INFO - CLOSED short at 2065.83 | PnL: -0.04% | $-0.26 +2025-03-10 12:57:44,174 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.2239607142856 | Take profit: 2031.9173839285713 +2025-03-10 12:57:44,287 - INFO - CLOSED short at 2059.59 | PnL: 0.16% | $0.11 +2025-03-10 12:57:44,287 - INFO - OPENED LONG at 2059.59 | Stop loss: 2049.2725392857146 | Take profit: 2090.5131160714286 +2025-03-10 12:57:44,326 - INFO - CLOSED long at 2061.3 | PnL: 0.08% | $-0.03 +2025-03-10 12:57:44,327 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.6260107142857 | Take profit: 2030.3512339285714 +2025-03-10 12:57:44,365 - INFO - CLOSED short at 2063.59 | PnL: -0.11% | $-0.39 +2025-03-10 12:57:44,365 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.252539285714 | Take profit: 2094.5731160714286 +2025-03-10 12:57:44,403 - INFO - CLOSED long at 2064.96 | PnL: 0.07% | $-0.06 +2025-03-10 12:57:44,403 - INFO - OPENED SHORT at 2064.96 | Stop loss: 2075.3043107142857 | Take profit: 2033.9563339285714 +2025-03-10 12:57:44,440 - INFO - CLOSED short at 2066.24 | PnL: -0.06% | $-0.29 +2025-03-10 12:57:44,478 - INFO - OPENED LONG at 2067.1 | Stop loss: 2056.7449892857144 | Take profit: 2098.1357660714284 +2025-03-10 12:57:44,555 - INFO - CLOSED long at 2066.09 | PnL: -0.05% | $-0.27 +2025-03-10 12:57:44,557 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.439960714286 | Take profit: 2035.0693839285716 +2025-03-10 12:57:44,633 - INFO - CLOSED short at 2064.08 | PnL: 0.10% | $-0.00 +2025-03-10 12:57:44,634 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.740089285714 | Take profit: 2095.0704660714287 +2025-03-10 12:57:44,704 - INFO - CLOSED long at 2062.89 | PnL: -0.06% | $-0.28 +2025-03-10 12:57:44,705 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.2239607142856 | Take profit: 2031.9173839285713 +2025-03-10 12:57:44,744 - INFO - CLOSED short at 2064.5 | PnL: -0.08% | $-0.32 +2025-03-10 12:57:44,782 - INFO - OPENED LONG at 2063.5 | Stop loss: 2053.162989285714 | Take profit: 2094.4817660714284 +2025-03-10 12:57:44,821 - INFO - CLOSED long at 2061.6 | PnL: -0.09% | $-0.34 +2025-03-10 12:57:44,821 - INFO - OPENED SHORT at 2061.6 | Stop loss: 2071.9275107142857 | Take profit: 2030.6467339285714 +2025-03-10 12:57:45,005 - INFO - CLOSED short at 2060.31 | PnL: 0.06% | $-0.07 +2025-03-10 12:57:45,040 - INFO - OPENED LONG at 2061.8 | Stop loss: 2051.4714892857146 | Take profit: 2092.7562660714284 +2025-03-10 12:57:45,255 - INFO - CLOSED long at 2061.9 | PnL: 0.00% | $-0.17 +2025-03-10 12:57:45,292 - INFO - OPENED SHORT at 2064.1 | Stop loss: 2074.4400107142856 | Take profit: 2033.1092339285713 +2025-03-10 12:57:45,331 - INFO - CLOSED short at 2065.36 | PnL: -0.06% | $-0.29 +2025-03-10 12:57:45,332 - INFO - OPENED LONG at 2065.36 | Stop loss: 2055.0136892857145 | Take profit: 2096.3696660714286 +2025-03-10 12:57:45,370 - INFO - CLOSED long at 2064.33 | PnL: -0.05% | $-0.27 +2025-03-10 12:57:45,371 - INFO - OPENED SHORT at 2064.33 | Stop loss: 2074.6711607142856 | Take profit: 2033.3357839285713 +2025-03-10 12:57:45,450 - INFO - CLOSED short at 2064.79 | PnL: -0.02% | $-0.22 +2025-03-10 12:57:45,451 - INFO - OPENED LONG at 2064.79 | Stop loss: 2054.446539285714 | Take profit: 2095.7911160714284 +2025-03-10 12:57:45,602 - INFO - CLOSED long at 2062.6 | PnL: -0.11% | $-0.36 +2025-03-10 12:57:45,643 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.2189607142855 | Take profit: 2030.9323839285714 +2025-03-10 12:57:45,789 - INFO - CLOSED short at 2059.61 | PnL: 0.11% | $0.02 +2025-03-10 12:57:45,863 - INFO - OPENED SHORT at 2059.02 | Stop loss: 2069.3346107142856 | Take profit: 2028.1054339285713 +2025-03-10 12:57:45,935 - INFO - CLOSED short at 2059.96 | PnL: -0.05% | $-0.26 +2025-03-10 12:57:45,936 - INFO - OPENED LONG at 2059.96 | Stop loss: 2049.6406892857144 | Take profit: 2090.888666071429 +2025-03-10 12:57:45,973 - INFO - CLOSED long at 2059.46 | PnL: -0.02% | $-0.22 +2025-03-10 12:57:46,008 - INFO - OPENED LONG at 2057.4 | Stop loss: 2047.0934892857144 | Take profit: 2088.2902660714285 +2025-03-10 12:57:46,155 - INFO - CLOSED long at 2054.89 | PnL: -0.12% | $-0.39 +2025-03-10 12:57:46,156 - INFO - OPENED SHORT at 2054.89 | Stop loss: 2065.1839607142856 | Take profit: 2024.0373839285714 +2025-03-10 12:57:46,230 - INFO - CLOSED short at 2056.71 | PnL: -0.09% | $-0.33 +2025-03-10 12:57:46,230 - INFO - OPENED LONG at 2056.71 | Stop loss: 2046.4069392857143 | Take profit: 2087.5899160714284 +2025-03-10 12:57:46,266 - INFO - CLOSED long at 2058.15 | PnL: 0.07% | $-0.05 +2025-03-10 12:57:46,266 - INFO - OPENED SHORT at 2058.15 | Stop loss: 2068.4602607142856 | Take profit: 2027.2484839285717 +2025-03-10 12:57:46,342 - INFO - CLOSED short at 2061.66 | PnL: -0.17% | $-0.47 +2025-03-10 12:57:46,410 - INFO - OPENED LONG at 2061.5 | Stop loss: 2051.1729892857143 | Take profit: 2092.4517660714287 +2025-03-10 12:57:46,605 - INFO - CLOSED long at 2062.69 | PnL: 0.06% | $-0.07 +2025-03-10 12:57:46,699 - INFO - OPENED LONG at 2066.36 | Stop loss: 2056.0086892857144 | Take profit: 2097.3846660714285 +2025-03-10 12:57:46,830 - INFO - CLOSED long at 2064.49 | PnL: -0.09% | $-0.33 +2025-03-10 12:57:47,045 - INFO - OPENED SHORT at 2067.01 | Stop loss: 2077.3645607142857 | Take profit: 2035.9755839285715 +2025-03-10 12:57:47,095 - INFO - CLOSED short at 2065.69 | PnL: 0.06% | $-0.06 +2025-03-10 12:57:47,095 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.3420392857142 | Take profit: 2096.7046160714285 +2025-03-10 12:57:47,139 - INFO - CLOSED long at 2069.79 | PnL: 0.20% | $0.17 +2025-03-10 12:57:47,222 - INFO - OPENED SHORT at 2074.3 | Stop loss: 2084.691010714286 | Take profit: 2043.1562339285715 +2025-03-10 12:57:47,266 - INFO - CLOSED short at 2078.01 | PnL: -0.18% | $-0.48 +2025-03-10 12:57:47,267 - INFO - OPENED LONG at 2078.01 | Stop loss: 2067.6004392857144 | Take profit: 2109.209416071429 +2025-03-10 12:57:47,354 - INFO - CLOSED long at 2072.6 | PnL: -0.26% | $-0.62 +2025-03-10 12:57:47,355 - INFO - OPENED SHORT at 2072.6 | Stop loss: 2082.982510714286 | Take profit: 2041.4817339285714 +2025-03-10 12:57:47,482 - INFO - CLOSED short at 2071.6 | PnL: 0.05% | $-0.09 +2025-03-10 12:57:47,483 - INFO - OPENED LONG at 2071.6 | Stop loss: 2061.2224892857143 | Take profit: 2102.7032660714285 +2025-03-10 12:57:47,528 - INFO - CLOSED long at 2073.23 | PnL: 0.08% | $-0.04 +2025-03-10 12:57:47,575 - INFO - OPENED LONG at 2070.0 | Stop loss: 2059.6304892857142 | Take profit: 2101.0792660714287 +2025-03-10 12:57:47,743 - INFO - CLOSED long at 2069.03 | PnL: -0.05% | $-0.25 +2025-03-10 12:57:47,743 - INFO - OPENED SHORT at 2069.03 | Stop loss: 2079.394660714286 | Take profit: 2037.9652839285716 +2025-03-10 12:57:47,885 - INFO - CLOSED short at 2072.99 | PnL: -0.19% | $-0.49 +2025-03-10 12:57:47,885 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6055392857143 | Take profit: 2104.1141160714283 +2025-03-10 12:57:48,254 - INFO - CLOSED long at 2063.97 | PnL: -0.44% | $-0.90 +2025-03-10 12:57:48,254 - INFO - OPENED SHORT at 2063.97 | Stop loss: 2074.3093607142855 | Take profit: 2032.9811839285712 +2025-03-10 12:57:48,300 - INFO - CLOSED short at 2064.5 | PnL: -0.03% | $-0.21 +2025-03-10 12:57:48,300 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.1579892857144 | Take profit: 2095.4967660714287 +2025-03-10 12:57:48,577 - INFO - CLOSED long at 2065.29 | PnL: 0.04% | $-0.10 +2025-03-10 12:57:48,661 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.153510714286 | Take profit: 2035.7687339285717 +2025-03-10 12:57:48,742 - INFO - CLOSED short at 2068.59 | PnL: -0.09% | $-0.31 +2025-03-10 12:57:48,834 - INFO - OPENED LONG at 2070.2 | Stop loss: 2059.8294892857143 | Take profit: 2101.2822660714282 +2025-03-10 12:57:48,957 - INFO - CLOSED long at 2069.69 | PnL: -0.02% | $-0.21 +2025-03-10 12:57:48,957 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.057960714286 | Take profit: 2038.6153839285714 +2025-03-10 12:57:49,087 - INFO - CLOSED short at 2070.35 | PnL: -0.03% | $-0.22 +2025-03-10 12:57:49,088 - INFO - OPENED LONG at 2070.35 | Stop loss: 2059.9787392857143 | Take profit: 2101.4345160714283 +2025-03-10 12:57:49,130 - INFO - CLOSED long at 2070.61 | PnL: 0.01% | $-0.14 +2025-03-10 12:57:49,381 - INFO - OPENED SHORT at 2071.61 | Stop loss: 2081.987560714286 | Take profit: 2040.5065839285714 +2025-03-10 12:57:49,507 - INFO - CLOSED short at 2074.35 | PnL: -0.13% | $-0.38 +2025-03-10 12:57:49,550 - INFO - OPENED LONG at 2073.27 | Stop loss: 2062.8841392857144 | Take profit: 2104.3983160714283 +2025-03-10 12:57:49,596 - INFO - CLOSED long at 2073.99 | PnL: 0.03% | $-0.11 +2025-03-10 12:57:49,638 - INFO - OPENED LONG at 2075.32 | Stop loss: 2064.9238892857147 | Take profit: 2106.479066071429 +2025-03-10 12:57:49,680 - INFO - CLOSED long at 2075.29 | PnL: -0.00% | $-0.17 +2025-03-10 12:57:49,727 - INFO - OPENED LONG at 2076.9 | Stop loss: 2066.495989285714 | Take profit: 2108.0827660714285 +2025-03-10 12:57:49,772 - INFO - CLOSED long at 2075.61 | PnL: -0.06% | $-0.26 +2025-03-10 12:57:49,858 - INFO - OPENED LONG at 2072.09 | Stop loss: 2061.7100392857146 | Take profit: 2103.200616071429 +2025-03-10 12:57:50,242 - INFO - CLOSED long at 2068.1 | PnL: -0.19% | $-0.47 +2025-03-10 12:57:50,243 - INFO - OPENED SHORT at 2068.1 | Stop loss: 2078.4600107142855 | Take profit: 2037.0492339285713 +2025-03-10 12:57:50,493 - INFO - CLOSED short at 2065.7 | PnL: 0.12% | $0.03 +2025-03-10 12:57:50,493 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.351989285714 | Take profit: 2096.7147660714286 +2025-03-10 12:57:50,536 - INFO - CLOSED long at 2065.8 | PnL: 0.00% | $-0.15 +2025-03-10 12:57:50,537 - INFO - OPENED SHORT at 2065.8 | Stop loss: 2076.1485107142857 | Take profit: 2034.7837339285716 +2025-03-10 12:57:50,582 - INFO - CLOSED short at 2065.07 | PnL: 0.04% | $-0.10 +2025-03-10 12:57:50,708 - INFO - OPENED LONG at 2062.34 | Stop loss: 2052.0087892857146 | Take profit: 2093.304366071429 +2025-03-10 12:57:50,842 - INFO - CLOSED long at 2065.06 | PnL: 0.13% | $0.05 +2025-03-10 12:57:50,842 - INFO - OPENED SHORT at 2065.06 | Stop loss: 2075.4048107142858 | Take profit: 2034.0548339285713 +2025-03-10 12:57:50,887 - INFO - CLOSED short at 2064.11 | PnL: 0.05% | $-0.09 +2025-03-10 12:57:50,888 - INFO - OPENED LONG at 2064.11 | Stop loss: 2053.7699392857144 | Take profit: 2095.1009160714284 +2025-03-10 12:57:51,147 - INFO - CLOSED long at 2059.2 | PnL: -0.24% | $-0.54 +2025-03-10 12:57:51,230 - INFO - OPENED SHORT at 2058.65 | Stop loss: 2068.9627607142857 | Take profit: 2027.7409839285717 +2025-03-10 12:57:51,274 - INFO - CLOSED short at 2056.77 | PnL: 0.09% | $-0.01 +2025-03-10 12:57:51,318 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.7254392857144 | Take profit: 2083.8344160714287 +2025-03-10 12:57:51,533 - INFO - CLOSED long at 2056.85 | PnL: 0.19% | $0.14 +2025-03-10 12:57:51,582 - INFO - OPENED LONG at 2057.11 | Stop loss: 2046.8049392857145 | Take profit: 2087.995916071429 +2025-03-10 12:57:51,625 - INFO - CLOSED long at 2057.89 | PnL: 0.04% | $-0.10 +2025-03-10 12:57:51,625 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.198960714286 | Take profit: 2026.9923839285711 +2025-03-10 12:57:51,712 - INFO - CLOSED short at 2063.9 | PnL: -0.29% | $-0.63 +2025-03-10 12:57:51,712 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.560989285714 | Take profit: 2094.8877660714284 +2025-03-10 12:57:51,851 - INFO - CLOSED long at 2062.55 | PnL: -0.07% | $-0.26 +2025-03-10 12:57:51,899 - INFO - OPENED LONG at 2065.12 | Stop loss: 2054.7748892857144 | Take profit: 2096.126066071429 +2025-03-10 12:57:51,942 - INFO - CLOSED long at 2068.33 | PnL: 0.16% | $0.09 +2025-03-10 12:57:51,942 - INFO - OPENED SHORT at 2068.33 | Stop loss: 2078.6911607142856 | Take profit: 2037.2757839285714 +2025-03-10 12:57:51,992 - INFO - CLOSED short at 2067.49 | PnL: 0.04% | $-0.09 +2025-03-10 12:57:51,993 - INFO - OPENED LONG at 2067.49 | Stop loss: 2057.133039285714 | Take profit: 2098.5316160714283 +2025-03-10 12:57:52,034 - INFO - CLOSED long at 2066.59 | PnL: -0.04% | $-0.23 +2025-03-10 12:57:52,035 - INFO - OPENED SHORT at 2066.59 | Stop loss: 2076.9424607142855 | Take profit: 2035.5618839285717 +2025-03-10 12:57:52,207 - INFO - CLOSED short at 2060.7 | PnL: 0.29% | $0.29 +2025-03-10 12:57:52,208 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.376989285714 | Take profit: 2091.6397660714288 +2025-03-10 12:57:52,246 - INFO - CLOSED long at 2061.84 | PnL: 0.06% | $-0.07 +2025-03-10 12:57:52,246 - INFO - OPENED SHORT at 2061.84 | Stop loss: 2072.168710714286 | Take profit: 2030.8831339285716 +2025-03-10 12:57:52,329 - INFO - CLOSED short at 2065.72 | PnL: -0.19% | $-0.46 +2025-03-10 12:57:52,371 - INFO - OPENED LONG at 2070.31 | Stop loss: 2059.9389392857142 | Take profit: 2101.3939160714285 +2025-03-10 12:57:52,414 - INFO - CLOSED long at 2070.24 | PnL: -0.00% | $-0.16 +2025-03-10 12:57:52,414 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.6107107142852 | Take profit: 2039.157133928571 +2025-03-10 12:57:52,501 - INFO - CLOSED short at 2069.81 | PnL: 0.02% | $-0.12 +2025-03-10 12:57:52,588 - INFO - OPENED LONG at 2073.49 | Stop loss: 2063.103039285714 | Take profit: 2104.6216160714284 +2025-03-10 12:57:52,710 - INFO - CLOSED long at 2071.89 | PnL: -0.08% | $-0.28 +2025-03-10 12:57:52,711 - INFO - OPENED SHORT at 2071.89 | Stop loss: 2082.2689607142856 | Take profit: 2040.782383928571 +2025-03-10 12:57:52,755 - INFO - CLOSED short at 2071.8 | PnL: 0.00% | $-0.15 +2025-03-10 12:57:52,805 - INFO - OPENED LONG at 2074.9 | Stop loss: 2064.5059892857143 | Take profit: 2106.0527660714283 +2025-03-10 12:57:52,849 - INFO - CLOSED long at 2076.08 | PnL: 0.06% | $-0.07 +2025-03-10 12:57:52,892 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2088.0175607142855 | Take profit: 2046.4165839285715 +2025-03-10 12:57:52,935 - INFO - CLOSED short at 2085.56 | PnL: -0.38% | $-0.75 +2025-03-10 12:57:53,193 - INFO - OPENED LONG at 2133.95 | Stop loss: 2123.260739285714 | Take profit: 2165.988516071428 +2025-03-10 12:57:53,236 - INFO - CLOSED long at 2137.59 | PnL: 0.17% | $0.11 +2025-03-10 12:57:53,237 - INFO - OPENED SHORT at 2137.59 | Stop loss: 2148.2974607142855 | Take profit: 2105.4968839285716 +2025-03-10 12:57:53,331 - INFO - CLOSED short at 2141.3 | PnL: -0.17% | $-0.42 +2025-03-10 12:57:53,331 - INFO - OPENED LONG at 2141.3 | Stop loss: 2130.5739892857146 | Take profit: 2173.4487660714285 +2025-03-10 12:57:53,518 - INFO - STOP LOSS hit for long at 2130.5739892857146 | PnL: -0.50% | $-0.92 +2025-03-10 12:57:53,562 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.6439892857147 | Take profit: 2159.238766071429 +2025-03-10 12:57:53,607 - INFO - CLOSED long at 2128.69 | PnL: 0.07% | $-0.05 +2025-03-10 12:57:53,824 - INFO - OPENED LONG at 2121.4 | Stop loss: 2110.7734892857143 | Take profit: 2153.2502660714285 +2025-03-10 12:57:53,996 - INFO - CLOSED long at 2115.28 | PnL: -0.29% | $-0.59 +2025-03-10 12:57:53,997 - INFO - OPENED SHORT at 2115.28 | Stop loss: 2125.875910714286 | Take profit: 2083.5215339285714 +2025-03-10 12:57:54,041 - INFO - CLOSED short at 2107.43 | PnL: 0.37% | $0.41 +2025-03-10 12:57:54,042 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.873339285714 | Take profit: 2139.0707160714283 +2025-03-10 12:57:54,106 - INFO - CLOSED long at 2110.6 | PnL: 0.15% | $0.08 +2025-03-10 12:57:54,176 - INFO - OPENED LONG at 2109.05 | Stop loss: 2098.4852392857147 | Take profit: 2140.7150160714286 +2025-03-10 12:57:54,291 - INFO - CLOSED long at 2112.95 | PnL: 0.18% | $0.13 +2025-03-10 12:57:54,292 - INFO - OPENED SHORT at 2112.95 | Stop loss: 2123.534260714285 | Take profit: 2081.2264839285713 +2025-03-10 12:57:54,359 - INFO - CLOSED short at 2112.46 | PnL: 0.02% | $-0.12 +2025-03-10 12:57:54,360 - INFO - OPENED LONG at 2112.46 | Stop loss: 2101.878189285714 | Take profit: 2144.1761660714287 +2025-03-10 12:57:54,475 - INFO - CLOSED long at 2112.99 | PnL: 0.03% | $-0.11 +2025-03-10 12:57:54,475 - INFO - OPENED SHORT at 2112.99 | Stop loss: 2123.5744607142856 | Take profit: 2081.265883928571 +2025-03-10 12:57:54,526 - INFO - CLOSED short at 2120.81 | PnL: -0.37% | $-0.71 +2025-03-10 12:57:54,526 - INFO - OPENED LONG at 2120.81 | Stop loss: 2110.186439285714 | Take profit: 2152.6514160714287 +2025-03-10 12:57:54,569 - INFO - CLOSED long at 2116.48 | PnL: -0.20% | $-0.46 +2025-03-10 12:57:54,617 - INFO - OPENED LONG at 2114.8 | Stop loss: 2104.2064892857143 | Take profit: 2146.551266071429 +2025-03-10 12:57:54,660 - INFO - CLOSED long at 2110.9 | PnL: -0.18% | $-0.42 +2025-03-10 12:57:54,661 - INFO - OPENED SHORT at 2110.9 | Stop loss: 2121.4740107142857 | Take profit: 2079.2072339285714 +2025-03-10 12:57:54,706 - INFO - CLOSED short at 2108.71 | PnL: 0.10% | $0.01 +2025-03-10 12:57:54,747 - INFO - OPENED SHORT at 2106.49 | Stop loss: 2117.0419607142853 | Take profit: 2074.8633839285712 +2025-03-10 12:57:54,789 - INFO - CLOSED short at 2108.06 | PnL: -0.07% | $-0.26 +2025-03-10 12:57:54,830 - INFO - OPENED LONG at 2103.33 | Stop loss: 2092.793839285714 | Take profit: 2134.9092160714285 +2025-03-10 12:57:54,874 - INFO - CLOSED long at 2100.5 | PnL: -0.13% | $-0.35 +2025-03-10 12:57:54,915 - INFO - OPENED SHORT at 2090.0 | Stop loss: 2100.4695107142857 | Take profit: 2058.6207339285716 +2025-03-10 12:57:54,999 - INFO - CLOSED short at 2098.1 | PnL: -0.39% | $-0.72 +2025-03-10 12:57:55,041 - INFO - OPENED LONG at 2102.19 | Stop loss: 2091.6595392857143 | Take profit: 2133.7521160714286 +2025-03-10 12:57:55,086 - INFO - CLOSED long at 2102.29 | PnL: 0.00% | $-0.14 +2025-03-10 12:57:55,086 - INFO - OPENED SHORT at 2102.29 | Stop loss: 2112.820960714286 | Take profit: 2070.7263839285715 +2025-03-10 12:57:55,214 - INFO - CLOSED short at 2100.69 | PnL: 0.08% | $-0.03 +2025-03-10 12:57:55,300 - INFO - OPENED LONG at 2106.39 | Stop loss: 2095.8385392857144 | Take profit: 2138.0151160714286 +2025-03-10 12:57:55,390 - INFO - CLOSED long at 2103.86 | PnL: -0.12% | $-0.32 +2025-03-10 12:57:55,437 - INFO - OPENED SHORT at 2104.68 | Stop loss: 2115.2229107142853 | Take profit: 2073.080533928571 +2025-03-10 12:57:55,528 - INFO - CLOSED short at 2099.59 | PnL: 0.24% | $0.20 +2025-03-10 12:57:55,529 - INFO - OPENED LONG at 2099.59 | Stop loss: 2089.0725392857144 | Take profit: 2131.1131160714285 +2025-03-10 12:57:55,573 - INFO - CLOSED long at 2100.02 | PnL: 0.02% | $-0.12 +2025-03-10 12:57:55,573 - INFO - OPENED SHORT at 2100.02 | Stop loss: 2110.5396107142856 | Take profit: 2068.4904339285713 +2025-03-10 12:57:55,622 - INFO - CLOSED short at 2098.39 | PnL: 0.08% | $-0.03 +2025-03-10 12:57:55,622 - INFO - OPENED LONG at 2098.39 | Stop loss: 2087.8785392857144 | Take profit: 2129.895116071428 +2025-03-10 12:57:55,671 - INFO - CLOSED long at 2095.29 | PnL: -0.15% | $-0.36 +2025-03-10 12:57:55,672 - INFO - OPENED SHORT at 2095.29 | Stop loss: 2105.785960714286 | Take profit: 2063.8313839285715 +2025-03-10 12:57:55,716 - INFO - CLOSED short at 2093.46 | PnL: 0.09% | $-0.02 +2025-03-10 12:57:56,007 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.8440892857143 | Take profit: 2114.558466071429 +2025-03-10 12:57:56,050 - INFO - CLOSED long at 2088.44 | PnL: 0.25% | $0.21 +2025-03-10 12:57:56,136 - INFO - OPENED LONG at 2085.3 | Stop loss: 2074.8539892857143 | Take profit: 2116.608766071429 +2025-03-10 12:57:56,266 - INFO - CLOSED long at 2080.38 | PnL: -0.24% | $-0.48 +2025-03-10 12:57:56,308 - INFO - OPENED LONG at 2081.25 | Stop loss: 2070.824239285714 | Take profit: 2112.4980160714285 +2025-03-10 12:57:56,433 - INFO - CLOSED long at 2083.59 | PnL: 0.11% | $0.02 +2025-03-10 12:57:56,520 - INFO - OPENED SHORT at 2085.8 | Stop loss: 2096.2485107142857 | Take profit: 2054.4837339285714 +2025-03-10 12:57:56,703 - INFO - CLOSED short at 2088.66 | PnL: -0.14% | $-0.34 +2025-03-10 12:57:56,704 - INFO - OPENED LONG at 2088.66 | Stop loss: 2078.197189285714 | Take profit: 2120.0191660714286 +2025-03-10 12:57:56,888 - INFO - CLOSED long at 2087.0 | PnL: -0.08% | $-0.26 +2025-03-10 12:57:56,888 - INFO - OPENED SHORT at 2087.0 | Stop loss: 2097.454510714286 | Take profit: 2055.6657339285716 +2025-03-10 12:57:56,943 - INFO - CLOSED short at 2087.47 | PnL: -0.02% | $-0.17 +2025-03-10 12:57:56,943 - INFO - OPENED LONG at 2087.47 | Stop loss: 2077.013139285714 | Take profit: 2118.8113160714283 +2025-03-10 12:57:57,076 - INFO - CLOSED long at 2089.79 | PnL: 0.11% | $0.02 +2025-03-10 12:57:57,120 - INFO - OPENED SHORT at 2085.67 | Stop loss: 2096.1178607142856 | Take profit: 2054.3556839285716 +2025-03-10 12:57:57,208 - INFO - CLOSED short at 2091.05 | PnL: -0.26% | $-0.51 +2025-03-10 12:57:57,208 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.5752392857144 | Take profit: 2122.4450160714287 +2025-03-10 12:57:57,292 - INFO - CLOSED long at 2091.95 | PnL: 0.04% | $-0.08 +2025-03-10 12:57:57,293 - INFO - OPENED SHORT at 2091.95 | Stop loss: 2102.4292607142856 | Take profit: 2060.5414839285713 +2025-03-10 12:57:57,464 - INFO - CLOSED short at 2101.64 | PnL: -0.46% | $-0.79 +2025-03-10 12:57:57,465 - INFO - OPENED LONG at 2101.64 | Stop loss: 2091.1122892857143 | Take profit: 2133.1938660714286 +2025-03-10 12:57:57,510 - INFO - CLOSED long at 2097.11 | PnL: -0.22% | $-0.44 +2025-03-10 12:57:57,593 - INFO - Trade Analysis: Win Rate=17.5% in uptrends, 0.0% in downtrends | Avg Win=$0.14, Avg Loss=$-0.27 +2025-03-10 12:57:57,594 - INFO - Episode 1: Reward=-121.11, Balance=$69.75, Win Rate=17.0%, Trades=153, Episode PnL=$-22.14, Total PnL=$-53.35, Max Drawdown=30.2%, Pred Accuracy=99.4% +2025-03-10 12:57:57,595 - ERROR - Error in episode 1: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 12:57:57,595 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1763, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 12:57:57,634 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:57:57,918 - INFO - OPENED SHORT at 2051.66 | Stop loss: 2061.937810714285 | Take profit: 2020.8558339285712 +2025-03-10 12:57:57,965 - INFO - CLOSED short at 2052.16 | PnL: -0.02% | $-0.25 +2025-03-10 12:57:57,966 - INFO - OPENED LONG at 2052.16 | Stop loss: 2041.879689285714 | Take profit: 2082.9716660714284 +2025-03-10 12:57:58,009 - INFO - CLOSED long at 2053.1 | PnL: 0.05% | $-0.11 +2025-03-10 12:57:58,009 - INFO - OPENED SHORT at 2053.1 | Stop loss: 2063.3850107142857 | Take profit: 2022.2742339285714 +2025-03-10 12:57:58,057 - INFO - CLOSED short at 2052.25 | PnL: 0.04% | $-0.12 +2025-03-10 12:57:58,058 - INFO - OPENED LONG at 2052.25 | Stop loss: 2041.9692392857141 | Take profit: 2083.0630160714286 +2025-03-10 12:57:58,105 - INFO - CLOSED long at 2050.71 | PnL: -0.08% | $-0.35 +2025-03-10 12:57:58,152 - INFO - OPENED SHORT at 2050.44 | Stop loss: 2060.711710714286 | Take profit: 2019.6541339285714 +2025-03-10 12:57:58,194 - INFO - CLOSED short at 2049.49 | PnL: 0.05% | $-0.11 +2025-03-10 12:57:58,196 - INFO - OPENED LONG at 2049.49 | Stop loss: 2039.223039285714 | Take profit: 2080.2616160714283 +2025-03-10 12:57:58,242 - INFO - CLOSED long at 2050.2 | PnL: 0.03% | $-0.13 +2025-03-10 12:57:58,432 - INFO - OPENED LONG at 2049.24 | Stop loss: 2038.9742892857141 | Take profit: 2080.0078660714285 +2025-03-10 12:57:58,524 - INFO - CLOSED long at 2047.39 | PnL: -0.09% | $-0.37 +2025-03-10 12:57:58,525 - INFO - OPENED SHORT at 2047.39 | Stop loss: 2057.6464607142857 | Take profit: 2016.6498839285716 +2025-03-10 12:57:58,570 - INFO - CLOSED short at 2046.58 | PnL: 0.04% | $-0.12 +2025-03-10 12:57:58,657 - INFO - OPENED LONG at 2047.2 | Stop loss: 2036.9444892857143 | Take profit: 2077.9372660714284 +2025-03-10 12:57:58,699 - INFO - CLOSED long at 2045.99 | PnL: -0.06% | $-0.31 +2025-03-10 12:57:58,700 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.239460714286 | Take profit: 2015.2708839285715 +2025-03-10 12:57:58,753 - INFO - CLOSED short at 2045.99 | PnL: 0.00% | $-0.19 +2025-03-10 12:57:58,753 - INFO - OPENED LONG at 2045.99 | Stop loss: 2035.7405392857142 | Take profit: 2076.7091160714285 +2025-03-10 12:57:58,840 - INFO - CLOSED long at 2048.13 | PnL: 0.10% | $0.01 +2025-03-10 12:57:58,840 - INFO - OPENED SHORT at 2048.13 | Stop loss: 2058.3901607142857 | Take profit: 2017.3787839285717 +2025-03-10 12:57:58,885 - INFO - CLOSED short at 2047.59 | PnL: 0.03% | $-0.14 +2025-03-10 12:57:59,051 - INFO - OPENED SHORT at 2049.89 | Stop loss: 2060.1589607142855 | Take profit: 2019.1123839285713 +2025-03-10 12:57:59,102 - INFO - CLOSED short at 2051.11 | PnL: -0.06% | $-0.31 +2025-03-10 12:57:59,103 - INFO - OPENED LONG at 2051.11 | Stop loss: 2040.8349392857144 | Take profit: 2081.9059160714287 +2025-03-10 12:57:59,275 - INFO - CLOSED long at 2055.69 | PnL: 0.22% | $0.24 +2025-03-10 12:57:59,276 - INFO - OPENED SHORT at 2055.69 | Stop loss: 2065.9879607142857 | Take profit: 2024.8253839285715 +2025-03-10 12:57:59,319 - INFO - CLOSED short at 2057.01 | PnL: -0.06% | $-0.32 +2025-03-10 12:57:59,363 - INFO - OPENED LONG at 2056.89 | Stop loss: 2046.5860392857142 | Take profit: 2087.7726160714283 +2025-03-10 12:57:59,583 - INFO - CLOSED long at 2063.29 | PnL: 0.31% | $0.41 +2025-03-10 12:57:59,680 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.252539285714 | Take profit: 2094.5731160714286 +2025-03-10 12:58:00,354 - INFO - CLOSED long at 2061.79 | PnL: -0.09% | $-0.36 +2025-03-10 12:58:00,355 - INFO - OPENED SHORT at 2061.79 | Stop loss: 2072.1184607142854 | Take profit: 2030.8338839285714 +2025-03-10 12:58:00,405 - INFO - CLOSED short at 2061.18 | PnL: 0.03% | $-0.14 +2025-03-10 12:58:00,406 - INFO - OPENED LONG at 2061.18 | Stop loss: 2050.854589285714 | Take profit: 2092.1269660714283 +2025-03-10 12:58:00,702 - INFO - CLOSED long at 2071.63 | PnL: 0.51% | $0.78 +2025-03-10 12:58:00,788 - INFO - OPENED SHORT at 2069.6 | Stop loss: 2079.9675107142853 | Take profit: 2038.5267339285715 +2025-03-10 12:58:00,838 - INFO - CLOSED short at 2068.65 | PnL: 0.05% | $-0.11 +2025-03-10 12:58:00,838 - INFO - OPENED LONG at 2068.65 | Stop loss: 2058.2872392857143 | Take profit: 2099.709016071429 +2025-03-10 12:58:00,923 - INFO - CLOSED long at 2067.9 | PnL: -0.04% | $-0.26 +2025-03-10 12:58:00,968 - INFO - OPENED SHORT at 2067.69 | Stop loss: 2078.0479607142856 | Take profit: 2036.6453839285714 +2025-03-10 12:58:01,011 - INFO - CLOSED short at 2070.26 | PnL: -0.12% | $-0.43 +2025-03-10 12:58:01,011 - INFO - OPENED LONG at 2070.26 | Stop loss: 2059.8891892857146 | Take profit: 2101.3431660714286 +2025-03-10 12:58:01,056 - INFO - CLOSED long at 2071.44 | PnL: 0.06% | $-0.08 +2025-03-10 12:58:01,103 - INFO - OPENED SHORT at 2073.73 | Stop loss: 2084.1181607142858 | Take profit: 2042.5947839285714 +2025-03-10 12:58:01,150 - INFO - CLOSED short at 2075.1 | PnL: -0.07% | $-0.32 +2025-03-10 12:58:01,196 - INFO - OPENED SHORT at 2072.91 | Stop loss: 2083.2940607142855 | Take profit: 2041.7870839285713 +2025-03-10 12:58:01,409 - INFO - CLOSED short at 2070.9 | PnL: 0.10% | $-0.01 +2025-03-10 12:58:01,453 - INFO - OPENED SHORT at 2072.8 | Stop loss: 2083.183510714286 | Take profit: 2041.6787339285718 +2025-03-10 12:58:01,536 - INFO - CLOSED short at 2070.28 | PnL: 0.12% | $0.04 +2025-03-10 12:58:01,583 - INFO - OPENED LONG at 2068.02 | Stop loss: 2057.6603892857142 | Take profit: 2099.069566071428 +2025-03-10 12:58:01,720 - INFO - CLOSED long at 2068.9 | PnL: 0.04% | $-0.11 +2025-03-10 12:58:01,720 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.264010714286 | Take profit: 2037.8372339285715 +2025-03-10 12:58:01,765 - INFO - CLOSED short at 2070.7 | PnL: -0.09% | $-0.36 +2025-03-10 12:58:01,766 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3269892857143 | Take profit: 2101.7897660714284 +2025-03-10 12:58:01,809 - INFO - CLOSED long at 2069.34 | PnL: -0.07% | $-0.32 +2025-03-10 12:58:01,940 - INFO - OPENED SHORT at 2067.6 | Stop loss: 2077.9575107142855 | Take profit: 2036.5567339285715 +2025-03-10 12:58:02,075 - INFO - CLOSED short at 2066.39 | PnL: 0.06% | $-0.08 +2025-03-10 12:58:02,125 - INFO - OPENED LONG at 2065.99 | Stop loss: 2055.640539285714 | Take profit: 2097.0091160714283 +2025-03-10 12:58:02,212 - INFO - CLOSED long at 2066.29 | PnL: 0.01% | $-0.16 +2025-03-10 12:58:02,298 - INFO - OPENED SHORT at 2066.18 | Stop loss: 2076.5304107142856 | Take profit: 2035.1580339285713 +2025-03-10 12:58:02,342 - INFO - CLOSED short at 2068.76 | PnL: -0.12% | $-0.43 +2025-03-10 12:58:02,479 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.2275392857146 | Take profit: 2099.648116071429 +2025-03-10 12:58:02,566 - INFO - CLOSED long at 2070.4 | PnL: 0.09% | $-0.02 +2025-03-10 12:58:02,567 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.771510714286 | Take profit: 2039.3147339285715 +2025-03-10 12:58:02,695 - INFO - CLOSED short at 2071.39 | PnL: -0.05% | $-0.28 +2025-03-10 12:58:02,695 - INFO - OPENED LONG at 2071.39 | Stop loss: 2061.013539285714 | Take profit: 2102.4901160714285 +2025-03-10 12:58:02,738 - INFO - CLOSED long at 2071.36 | PnL: -0.00% | $-0.19 +2025-03-10 12:58:02,739 - INFO - OPENED SHORT at 2071.36 | Stop loss: 2081.736310714286 | Take profit: 2040.2603339285715 +2025-03-10 12:58:03,030 - INFO - CLOSED short at 2071.92 | PnL: -0.03% | $-0.24 +2025-03-10 12:58:03,030 - INFO - OPENED LONG at 2071.92 | Stop loss: 2061.5408892857145 | Take profit: 2103.0280660714284 +2025-03-10 12:58:03,114 - INFO - CLOSED long at 2071.11 | PnL: -0.04% | $-0.26 +2025-03-10 12:58:03,115 - INFO - OPENED SHORT at 2071.11 | Stop loss: 2081.485060714286 | Take profit: 2040.0140839285716 +2025-03-10 12:58:03,158 - INFO - CLOSED short at 2069.46 | PnL: 0.08% | $-0.04 +2025-03-10 12:58:03,159 - INFO - OPENED LONG at 2069.46 | Stop loss: 2059.0931892857143 | Take profit: 2100.5311660714287 +2025-03-10 12:58:03,248 - INFO - CLOSED long at 2068.32 | PnL: -0.06% | $-0.29 +2025-03-10 12:58:03,249 - INFO - OPENED SHORT at 2068.32 | Stop loss: 2078.6811107142858 | Take profit: 2037.2659339285715 +2025-03-10 12:58:03,293 - INFO - CLOSED short at 2067.0 | PnL: 0.06% | $-0.07 +2025-03-10 12:58:03,381 - INFO - OPENED SHORT at 2067.46 | Stop loss: 2077.8168107142856 | Take profit: 2036.4188339285715 +2025-03-10 12:58:03,541 - INFO - CLOSED short at 2065.26 | PnL: 0.11% | $0.01 +2025-03-10 12:58:03,541 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.9141892857147 | Take profit: 2096.268166071429 +2025-03-10 12:58:03,668 - INFO - CLOSED long at 2068.8 | PnL: 0.17% | $0.13 +2025-03-10 12:58:03,757 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.501189285714 | Take profit: 2098.907166071429 +2025-03-10 12:58:03,841 - INFO - CLOSED long at 2069.2 | PnL: 0.06% | $-0.07 +2025-03-10 12:58:03,888 - INFO - OPENED LONG at 2070.3 | Stop loss: 2059.9289892857146 | Take profit: 2101.383766071429 +2025-03-10 12:58:03,932 - INFO - CLOSED long at 2071.59 | PnL: 0.06% | $-0.07 +2025-03-10 12:58:04,019 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.771510714286 | Take profit: 2039.3147339285715 +2025-03-10 12:58:04,063 - INFO - CLOSED short at 2070.73 | PnL: -0.02% | $-0.22 +2025-03-10 12:58:04,114 - INFO - OPENED LONG at 2068.5 | Stop loss: 2058.137989285714 | Take profit: 2099.5567660714287 +2025-03-10 12:58:04,282 - INFO - CLOSED long at 2067.86 | PnL: -0.03% | $-0.24 +2025-03-10 12:58:04,411 - INFO - OPENED LONG at 2065.28 | Stop loss: 2054.9340892857144 | Take profit: 2096.2884660714285 +2025-03-10 12:58:04,455 - INFO - CLOSED long at 2066.39 | PnL: 0.05% | $-0.09 +2025-03-10 12:58:04,455 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.7414607142855 | Take profit: 2035.3648839285713 +2025-03-10 12:58:04,538 - INFO - CLOSED short at 2070.04 | PnL: -0.18% | $-0.51 +2025-03-10 12:58:04,622 - INFO - OPENED SHORT at 2068.18 | Stop loss: 2078.5404107142854 | Take profit: 2037.1280339285713 +2025-03-10 12:58:04,705 - INFO - CLOSED short at 2067.88 | PnL: 0.01% | $-0.16 +2025-03-10 12:58:04,749 - INFO - OPENED SHORT at 2064.99 | Stop loss: 2075.3344607142853 | Take profit: 2033.9858839285712 +2025-03-10 12:58:04,835 - INFO - CLOSED short at 2066.15 | PnL: -0.06% | $-0.29 +2025-03-10 12:58:04,835 - INFO - OPENED LONG at 2066.15 | Stop loss: 2055.799739285714 | Take profit: 2097.171516071429 +2025-03-10 12:58:04,923 - INFO - CLOSED long at 2062.89 | PnL: -0.16% | $-0.47 +2025-03-10 12:58:04,975 - INFO - OPENED LONG at 2062.65 | Stop loss: 2052.3172392857145 | Take profit: 2093.6190160714286 +2025-03-10 12:58:05,020 - INFO - CLOSED long at 2061.78 | PnL: -0.04% | $-0.26 +2025-03-10 12:58:05,065 - INFO - OPENED SHORT at 2059.59 | Stop loss: 2069.907460714286 | Take profit: 2028.6668839285717 +2025-03-10 12:58:05,111 - INFO - CLOSED short at 2061.3 | PnL: -0.08% | $-0.33 +2025-03-10 12:58:05,112 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.9739892857147 | Take profit: 2092.2487660714287 +2025-03-10 12:58:05,156 - INFO - CLOSED long at 2063.59 | PnL: 0.11% | $0.02 +2025-03-10 12:58:05,157 - INFO - OPENED SHORT at 2063.59 | Stop loss: 2073.927460714286 | Take profit: 2032.6068839285715 +2025-03-10 12:58:05,204 - INFO - CLOSED short at 2064.96 | PnL: -0.07% | $-0.30 +2025-03-10 12:58:05,205 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.6156892857143 | Take profit: 2095.9636660714286 +2025-03-10 12:58:05,250 - INFO - CLOSED long at 2066.24 | PnL: 0.06% | $-0.07 +2025-03-10 12:58:05,251 - INFO - OPENED SHORT at 2066.24 | Stop loss: 2076.5907107142853 | Take profit: 2035.2171339285712 +2025-03-10 12:58:05,348 - INFO - CLOSED short at 2065.54 | PnL: 0.03% | $-0.12 +2025-03-10 12:58:05,348 - INFO - OPENED LONG at 2065.54 | Stop loss: 2055.1927892857143 | Take profit: 2096.552366071429 +2025-03-10 12:58:05,394 - INFO - CLOSED long at 2066.09 | PnL: 0.03% | $-0.13 +2025-03-10 12:58:05,396 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.439960714286 | Take profit: 2035.0693839285716 +2025-03-10 12:58:05,443 - INFO - CLOSED short at 2064.45 | PnL: 0.08% | $-0.04 +2025-03-10 12:58:05,444 - INFO - OPENED LONG at 2064.45 | Stop loss: 2054.1082392857143 | Take profit: 2095.4460160714284 +2025-03-10 12:58:05,701 - INFO - CLOSED long at 2061.6 | PnL: -0.14% | $-0.43 +2025-03-10 12:58:05,750 - INFO - OPENED LONG at 2060.9 | Stop loss: 2050.5759892857145 | Take profit: 2091.8427660714287 +2025-03-10 12:58:05,838 - INFO - CLOSED long at 2058.89 | PnL: -0.10% | $-0.35 +2025-03-10 12:58:05,839 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.2039607142856 | Take profit: 2027.9773839285715 +2025-03-10 12:58:05,924 - INFO - CLOSED short at 2060.31 | PnL: -0.07% | $-0.30 +2025-03-10 12:58:06,097 - INFO - OPENED SHORT at 2060.91 | Stop loss: 2071.2340607142855 | Take profit: 2029.9670839285714 +2025-03-10 12:58:06,188 - INFO - CLOSED short at 2061.13 | PnL: -0.01% | $-0.20 +2025-03-10 12:58:06,233 - INFO - OPENED SHORT at 2061.9 | Stop loss: 2072.229010714286 | Take profit: 2030.9422339285716 +2025-03-10 12:58:06,277 - INFO - CLOSED short at 2064.1 | PnL: -0.11% | $-0.37 +2025-03-10 12:58:06,277 - INFO - OPENED LONG at 2064.1 | Stop loss: 2053.7599892857143 | Take profit: 2095.0907660714283 +2025-03-10 12:58:06,322 - INFO - CLOSED long at 2065.36 | PnL: 0.06% | $-0.07 +2025-03-10 12:58:06,411 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.053539285714 | Take profit: 2094.3701160714286 +2025-03-10 12:58:06,455 - INFO - CLOSED long at 2064.79 | PnL: 0.07% | $-0.06 +2025-03-10 12:58:06,456 - INFO - OPENED SHORT at 2064.79 | Stop loss: 2075.133460714286 | Take profit: 2033.7888839285715 +2025-03-10 12:58:06,516 - INFO - CLOSED short at 2065.89 | PnL: -0.05% | $-0.27 +2025-03-10 12:58:06,560 - INFO - OPENED LONG at 2063.53 | Stop loss: 2053.1928392857144 | Take profit: 2094.5122160714286 +2025-03-10 12:58:06,809 - INFO - CLOSED long at 2061.09 | PnL: -0.12% | $-0.38 +2025-03-10 12:58:06,809 - INFO - OPENED SHORT at 2061.09 | Stop loss: 2071.4149607142863 | Take profit: 2030.1443839285716 +2025-03-10 12:58:06,857 - INFO - CLOSED short at 2059.61 | PnL: 0.07% | $-0.05 +2025-03-10 12:58:06,857 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.2924392857144 | Take profit: 2090.5334160714287 +2025-03-10 12:58:06,902 - INFO - CLOSED long at 2059.16 | PnL: -0.02% | $-0.21 +2025-03-10 12:58:06,989 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.2039607142856 | Take profit: 2027.9773839285715 +2025-03-10 12:58:07,041 - INFO - CLOSED short at 2059.96 | PnL: -0.05% | $-0.27 +2025-03-10 12:58:07,041 - INFO - OPENED LONG at 2059.96 | Stop loss: 2049.6406892857144 | Take profit: 2090.888666071429 +2025-03-10 12:58:07,084 - INFO - CLOSED long at 2059.46 | PnL: -0.02% | $-0.22 +2025-03-10 12:58:07,084 - INFO - OPENED SHORT at 2059.46 | Stop loss: 2069.776810714286 | Take profit: 2028.5388339285716 +2025-03-10 12:58:07,141 - INFO - CLOSED short at 2057.4 | PnL: 0.10% | $0.00 +2025-03-10 12:58:07,142 - INFO - OPENED LONG at 2057.4 | Stop loss: 2047.0934892857144 | Take profit: 2088.2902660714285 +2025-03-10 12:58:07,188 - INFO - CLOSED long at 2058.28 | PnL: 0.04% | $-0.10 +2025-03-10 12:58:07,234 - INFO - OPENED LONG at 2056.28 | Stop loss: 2045.9790892857145 | Take profit: 2087.1534660714287 +2025-03-10 12:58:07,365 - INFO - CLOSED long at 2054.83 | PnL: -0.07% | $-0.30 +2025-03-10 12:58:07,414 - INFO - OPENED SHORT at 2056.71 | Stop loss: 2067.0130607142855 | Take profit: 2025.8300839285714 +2025-03-10 12:58:07,501 - INFO - CLOSED short at 2059.8 | PnL: -0.15% | $-0.43 +2025-03-10 12:58:07,502 - INFO - OPENED LONG at 2059.8 | Stop loss: 2049.4814892857144 | Take profit: 2090.7262660714287 +2025-03-10 12:58:07,724 - INFO - CLOSED long at 2062.69 | PnL: 0.14% | $0.07 +2025-03-10 12:58:07,725 - INFO - OPENED SHORT at 2062.69 | Stop loss: 2073.022960714286 | Take profit: 2031.7203839285714 +2025-03-10 12:58:07,766 - INFO - CLOSED short at 2063.4 | PnL: -0.03% | $-0.23 +2025-03-10 12:58:07,766 - INFO - OPENED LONG at 2063.4 | Stop loss: 2053.0634892857142 | Take profit: 2094.3802660714287 +2025-03-10 12:58:07,848 - INFO - CLOSED long at 2066.01 | PnL: 0.13% | $0.05 +2025-03-10 12:58:07,849 - INFO - OPENED SHORT at 2066.01 | Stop loss: 2076.359560714286 | Take profit: 2034.9905839285716 +2025-03-10 12:58:07,898 - INFO - CLOSED short at 2063.9 | PnL: 0.10% | $0.00 +2025-03-10 12:58:07,898 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.560989285714 | Take profit: 2094.8877660714284 +2025-03-10 12:58:07,939 - INFO - CLOSED long at 2064.49 | PnL: 0.03% | $-0.12 +2025-03-10 12:58:08,113 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.6861607142855 | Take profit: 2036.2907839285713 +2025-03-10 12:58:08,199 - INFO - CLOSED short at 2065.69 | PnL: 0.08% | $-0.04 +2025-03-10 12:58:08,199 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.3420392857142 | Take profit: 2096.7046160714285 +2025-03-10 12:58:08,287 - INFO - CLOSED long at 2072.0 | PnL: 0.31% | $0.35 +2025-03-10 12:58:08,288 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3795107142855 | Take profit: 2040.8907339285713 +2025-03-10 12:58:08,376 - INFO - CLOSED short at 2078.01 | PnL: -0.29% | $-0.67 +2025-03-10 12:58:08,638 - INFO - OPENED LONG at 2073.23 | Stop loss: 2062.8443392857143 | Take profit: 2104.3577160714285 +2025-03-10 12:58:08,722 - INFO - CLOSED long at 2068.15 | PnL: -0.25% | $-0.59 +2025-03-10 12:58:08,722 - INFO - OPENED SHORT at 2068.15 | Stop loss: 2078.510260714286 | Take profit: 2037.0984839285716 +2025-03-10 12:58:08,766 - INFO - CLOSED short at 2068.39 | PnL: -0.01% | $-0.19 +2025-03-10 12:58:08,767 - INFO - OPENED LONG at 2068.39 | Stop loss: 2058.028539285714 | Take profit: 2099.4451160714284 +2025-03-10 12:58:08,983 - INFO - CLOSED long at 2072.99 | PnL: 0.22% | $0.21 +2025-03-10 12:58:09,161 - INFO - OPENED LONG at 2066.38 | Stop loss: 2056.0285892857146 | Take profit: 2097.4049660714286 +2025-03-10 12:58:09,293 - INFO - CLOSED long at 2063.95 | PnL: -0.12% | $-0.37 +2025-03-10 12:58:09,388 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.1579892857144 | Take profit: 2095.4967660714287 +2025-03-10 12:58:09,564 - INFO - CLOSED long at 2065.5 | PnL: 0.05% | $-0.09 +2025-03-10 12:58:09,565 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.8470107142857 | Take profit: 2034.4882339285716 +2025-03-10 12:58:09,607 - INFO - CLOSED short at 2067.53 | PnL: -0.10% | $-0.34 +2025-03-10 12:58:09,607 - INFO - OPENED LONG at 2067.53 | Stop loss: 2057.1728392857144 | Take profit: 2098.572216071429 +2025-03-10 12:58:09,739 - INFO - CLOSED long at 2066.8 | PnL: -0.04% | $-0.23 +2025-03-10 12:58:09,905 - INFO - OPENED SHORT at 2070.2 | Stop loss: 2080.5705107142853 | Take profit: 2039.1177339285712 +2025-03-10 12:58:10,126 - INFO - CLOSED short at 2070.8 | PnL: -0.03% | $-0.22 +2025-03-10 12:58:10,126 - INFO - OPENED LONG at 2070.8 | Stop loss: 2060.4264892857145 | Take profit: 2101.8912660714286 +2025-03-10 12:58:10,174 - INFO - CLOSED long at 2070.35 | PnL: -0.02% | $-0.20 +2025-03-10 12:58:10,304 - INFO - OPENED LONG at 2068.19 | Stop loss: 2057.8295392857144 | Take profit: 2099.2421160714284 +2025-03-10 12:58:10,395 - INFO - CLOSED long at 2070.67 | PnL: 0.12% | $0.03 +2025-03-10 12:58:10,396 - INFO - OPENED SHORT at 2070.67 | Stop loss: 2081.042860714286 | Take profit: 2039.5806839285715 +2025-03-10 12:58:10,438 - INFO - CLOSED short at 2069.78 | PnL: 0.04% | $-0.10 +2025-03-10 12:58:10,483 - INFO - OPENED LONG at 2071.61 | Stop loss: 2061.2324392857145 | Take profit: 2102.7134160714286 +2025-03-10 12:58:10,696 - INFO - CLOSED long at 2073.99 | PnL: 0.11% | $0.02 +2025-03-10 12:58:10,697 - INFO - OPENED SHORT at 2073.99 | Stop loss: 2084.3794607142854 | Take profit: 2042.8508839285712 +2025-03-10 12:58:10,742 - INFO - CLOSED short at 2075.32 | PnL: -0.06% | $-0.27 +2025-03-10 12:58:10,743 - INFO - OPENED LONG at 2075.32 | Stop loss: 2064.9238892857147 | Take profit: 2106.479066071429 +2025-03-10 12:58:10,831 - INFO - CLOSED long at 2076.9 | PnL: 0.08% | $-0.04 +2025-03-10 12:58:10,832 - INFO - OPENED SHORT at 2076.9 | Stop loss: 2087.3040107142856 | Take profit: 2045.7172339285714 +2025-03-10 12:58:11,002 - INFO - CLOSED short at 2069.97 | PnL: 0.33% | $0.39 +2025-03-10 12:58:11,003 - INFO - OPENED LONG at 2069.97 | Stop loss: 2059.600639285714 | Take profit: 2101.0488160714285 +2025-03-10 12:58:11,047 - INFO - CLOSED long at 2067.7 | PnL: -0.11% | $-0.35 +2025-03-10 12:58:11,091 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.3545107142854 | Take profit: 2035.9657339285714 +2025-03-10 12:58:11,267 - INFO - CLOSED short at 2067.88 | PnL: -0.04% | $-0.24 +2025-03-10 12:58:11,268 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.5210892857144 | Take profit: 2098.9274660714286 +2025-03-10 12:58:11,439 - INFO - CLOSED long at 2070.19 | PnL: 0.11% | $0.02 +2025-03-10 12:58:11,440 - INFO - OPENED SHORT at 2070.19 | Stop loss: 2080.560460714286 | Take profit: 2039.1078839285715 +2025-03-10 12:58:11,489 - INFO - CLOSED short at 2070.1 | PnL: 0.00% | $-0.16 +2025-03-10 12:58:11,489 - INFO - OPENED LONG at 2070.1 | Stop loss: 2059.729989285714 | Take profit: 2101.1807660714285 +2025-03-10 12:58:11,531 - INFO - CLOSED long at 2067.19 | PnL: -0.14% | $-0.40 +2025-03-10 12:58:11,532 - INFO - OPENED SHORT at 2067.19 | Stop loss: 2077.5454607142856 | Take profit: 2036.1528839285716 +2025-03-10 12:58:11,620 - INFO - CLOSED short at 2065.7 | PnL: 0.07% | $-0.05 +2025-03-10 12:58:11,621 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.351989285714 | Take profit: 2096.7147660714286 +2025-03-10 12:58:11,665 - INFO - CLOSED long at 2065.8 | PnL: 0.00% | $-0.16 +2025-03-10 12:58:11,666 - INFO - OPENED SHORT at 2065.8 | Stop loss: 2076.1485107142857 | Take profit: 2034.7837339285716 +2025-03-10 12:58:11,709 - INFO - CLOSED short at 2065.07 | PnL: 0.04% | $-0.11 +2025-03-10 12:58:11,754 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.439960714286 | Take profit: 2035.0693839285716 +2025-03-10 12:58:11,929 - INFO - CLOSED short at 2066.1 | PnL: -0.00% | $-0.17 +2025-03-10 12:58:11,981 - INFO - OPENED LONG at 2065.06 | Stop loss: 2054.715189285714 | Take profit: 2096.0651660714284 +2025-03-10 12:58:12,028 - INFO - CLOSED long at 2064.11 | PnL: -0.05% | $-0.24 +2025-03-10 12:58:12,117 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.681160714286 | Take profit: 2035.3057839285714 +2025-03-10 12:58:12,169 - INFO - CLOSED short at 2063.01 | PnL: 0.16% | $0.10 +2025-03-10 12:58:12,169 - INFO - OPENED LONG at 2063.01 | Stop loss: 2052.6754392857147 | Take profit: 2093.984416071429 +2025-03-10 12:58:12,302 - INFO - CLOSED long at 2059.2 | PnL: -0.18% | $-0.47 +2025-03-10 12:58:12,303 - INFO - OPENED SHORT at 2059.2 | Stop loss: 2069.5155107142855 | Take profit: 2028.2827339285711 +2025-03-10 12:58:12,398 - INFO - CLOSED short at 2058.65 | PnL: 0.03% | $-0.12 +2025-03-10 12:58:12,399 - INFO - OPENED LONG at 2058.65 | Stop loss: 2048.337239285714 | Take profit: 2089.5590160714287 +2025-03-10 12:58:12,441 - INFO - CLOSED long at 2056.77 | PnL: -0.09% | $-0.31 +2025-03-10 12:58:12,488 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.7254392857144 | Take profit: 2083.8344160714287 +2025-03-10 12:58:12,529 - INFO - CLOSED long at 2049.21 | PnL: -0.19% | $-0.46 +2025-03-10 12:58:12,574 - INFO - OPENED SHORT at 2049.5 | Stop loss: 2059.767010714286 | Take profit: 2018.7282339285714 +2025-03-10 12:58:12,699 - INFO - CLOSED short at 2056.85 | PnL: -0.36% | $-0.74 +2025-03-10 12:58:12,700 - INFO - OPENED LONG at 2056.85 | Stop loss: 2046.5462392857141 | Take profit: 2087.7320160714285 +2025-03-10 12:58:12,916 - INFO - CLOSED long at 2065.1 | PnL: 0.40% | $0.48 +2025-03-10 12:58:12,959 - INFO - OPENED LONG at 2062.43 | Stop loss: 2052.0983392857142 | Take profit: 2093.395716071428 +2025-03-10 12:58:13,000 - INFO - CLOSED long at 2062.55 | PnL: 0.01% | $-0.15 +2025-03-10 12:58:13,041 - INFO - OPENED SHORT at 2065.12 | Stop loss: 2075.4651107142854 | Take profit: 2034.1139339285712 +2025-03-10 12:58:13,121 - INFO - CLOSED short at 2067.49 | PnL: -0.11% | $-0.34 +2025-03-10 12:58:13,168 - INFO - OPENED SHORT at 2066.59 | Stop loss: 2076.9424607142855 | Take profit: 2035.5618839285717 +2025-03-10 12:58:13,255 - INFO - CLOSED short at 2061.21 | PnL: 0.26% | $0.26 +2025-03-10 12:58:13,297 - INFO - OPENED SHORT at 2059.9 | Stop loss: 2070.2190107142856 | Take profit: 2028.9722339285715 +2025-03-10 12:58:13,388 - INFO - CLOSED short at 2061.84 | PnL: -0.09% | $-0.31 +2025-03-10 12:58:13,389 - INFO - OPENED LONG at 2061.84 | Stop loss: 2051.5112892857146 | Take profit: 2092.7968660714287 +2025-03-10 12:58:13,657 - INFO - CLOSED long at 2069.81 | PnL: 0.39% | $0.46 +2025-03-10 12:58:13,702 - INFO - OPENED SHORT at 2070.41 | Stop loss: 2080.7815607142857 | Take profit: 2039.3245839285712 +2025-03-10 12:58:13,835 - INFO - CLOSED short at 2072.99 | PnL: -0.12% | $-0.36 +2025-03-10 12:58:13,886 - INFO - OPENED LONG at 2071.89 | Stop loss: 2061.511039285714 | Take profit: 2102.997616071428 +2025-03-10 12:58:14,201 - INFO - TAKE PROFIT hit for long at 2102.997616071428 | PnL: 1.50% | $2.24 +2025-03-10 12:58:14,291 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.8227892857144 | Take profit: 2171.6623660714286 +2025-03-10 12:58:14,498 - INFO - CLOSED long at 2141.3 | PnL: 0.08% | $-0.03 +2025-03-10 12:58:14,539 - INFO - OPENED SHORT at 2142.68 | Stop loss: 2153.4129107142853 | Take profit: 2110.5105339285715 +2025-03-10 12:58:14,582 - INFO - CLOSED short at 2140.01 | PnL: 0.12% | $0.04 +2025-03-10 12:58:14,626 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.0865892857146 | Take profit: 2166.830966071429 +2025-03-10 12:58:14,669 - INFO - CLOSED long at 2126.99 | PnL: -0.36% | $-0.76 +2025-03-10 12:58:14,670 - INFO - OPENED SHORT at 2126.99 | Stop loss: 2137.6444607142857 | Take profit: 2095.0558839285713 +2025-03-10 12:58:14,805 - INFO - CLOSED short at 2121.09 | PnL: 0.28% | $0.29 +2025-03-10 12:58:14,852 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.5297392857146 | Take profit: 2151.981516071429 +2025-03-10 12:58:14,897 - INFO - CLOSED long at 2117.24 | PnL: -0.14% | $-0.39 +2025-03-10 12:58:14,898 - INFO - OPENED SHORT at 2117.24 | Stop loss: 2127.8457107142854 | Take profit: 2085.452133928571 +2025-03-10 12:58:15,035 - INFO - CLOSED short at 2118.52 | PnL: -0.06% | $-0.26 +2025-03-10 12:58:15,036 - INFO - OPENED LONG at 2118.52 | Stop loss: 2107.907889285714 | Take profit: 2150.3270660714284 +2025-03-10 12:58:15,224 - INFO - STOP LOSS hit for long at 2107.907889285714 | PnL: -0.50% | $-0.97 +2025-03-10 12:58:15,269 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.027489285714 | Take profit: 2142.2882660714286 +2025-03-10 12:58:15,362 - INFO - CLOSED long at 2112.09 | PnL: 0.07% | $-0.05 +2025-03-10 12:58:15,405 - INFO - OPENED LONG at 2112.95 | Stop loss: 2102.365739285714 | Take profit: 2144.6735160714284 +2025-03-10 12:58:15,578 - INFO - CLOSED long at 2120.81 | PnL: 0.37% | $0.43 +2025-03-10 12:58:15,579 - INFO - OPENED SHORT at 2120.81 | Stop loss: 2131.4335607142857 | Take profit: 2088.9685839285717 +2025-03-10 12:58:15,621 - INFO - CLOSED short at 2116.48 | PnL: 0.20% | $0.17 +2025-03-10 12:58:15,703 - INFO - OPENED SHORT at 2110.9 | Stop loss: 2121.4740107142857 | Take profit: 2079.2072339285714 +2025-03-10 12:58:15,755 - INFO - CLOSED short at 2108.71 | PnL: 0.10% | $0.01 +2025-03-10 12:58:15,755 - INFO - OPENED LONG at 2108.71 | Stop loss: 2098.1469392857143 | Take profit: 2140.3699160714286 +2025-03-10 12:58:15,799 - INFO - CLOSED long at 2106.49 | PnL: -0.11% | $-0.33 +2025-03-10 12:58:15,848 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.500189285714 | Take profit: 2139.710166071429 +2025-03-10 12:58:15,891 - INFO - CLOSED long at 2103.33 | PnL: -0.22% | $-0.52 +2025-03-10 12:58:15,891 - INFO - OPENED SHORT at 2103.33 | Stop loss: 2113.866160714286 | Take profit: 2071.7507839285713 +2025-03-10 12:58:15,937 - INFO - CLOSED short at 2100.5 | PnL: 0.13% | $0.06 +2025-03-10 12:58:15,939 - INFO - OPENED LONG at 2100.5 | Stop loss: 2089.9779892857146 | Take profit: 2132.0367660714287 +2025-03-10 12:58:15,981 - INFO - CLOSED long at 2090.0 | PnL: -0.50% | $-0.96 +2025-03-10 12:58:16,032 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0128392857146 | Take profit: 2131.052216071429 +2025-03-10 12:58:16,081 - INFO - CLOSED long at 2098.1 | PnL: -0.07% | $-0.26 +2025-03-10 12:58:16,130 - INFO - OPENED SHORT at 2102.19 | Stop loss: 2112.7204607142858 | Take profit: 2070.6278839285715 +2025-03-10 12:58:16,180 - INFO - CLOSED short at 2102.29 | PnL: -0.00% | $-0.16 +2025-03-10 12:58:16,180 - INFO - OPENED LONG at 2102.29 | Stop loss: 2091.759039285714 | Take profit: 2133.8536160714284 +2025-03-10 12:58:16,227 - INFO - CLOSED long at 2099.25 | PnL: -0.14% | $-0.38 +2025-03-10 12:58:16,227 - INFO - OPENED SHORT at 2099.25 | Stop loss: 2109.765760714286 | Take profit: 2067.7319839285715 +2025-03-10 12:58:16,446 - INFO - CLOSED short at 2100.74 | PnL: -0.07% | $-0.27 +2025-03-10 12:58:16,446 - INFO - OPENED LONG at 2100.74 | Stop loss: 2090.216789285714 | Take profit: 2132.2803660714285 +2025-03-10 12:58:16,653 - INFO - CLOSED long at 2100.02 | PnL: -0.03% | $-0.21 +2025-03-10 12:58:16,774 - INFO - OPENED LONG at 2093.46 | Stop loss: 2082.9731892857144 | Take profit: 2124.891166071429 +2025-03-10 12:58:16,986 - INFO - CLOSED long at 2094.08 | PnL: 0.03% | $-0.11 +2025-03-10 12:58:16,987 - INFO - OPENED SHORT at 2094.08 | Stop loss: 2104.5699107142855 | Take profit: 2062.6395339285714 +2025-03-10 12:58:17,034 - INFO - CLOSED short at 2088.35 | PnL: 0.27% | $0.27 +2025-03-10 12:58:17,035 - INFO - OPENED LONG at 2088.35 | Stop loss: 2077.888739285714 | Take profit: 2119.7045160714283 +2025-03-10 12:58:17,079 - INFO - CLOSED long at 2083.28 | PnL: -0.24% | $-0.53 +2025-03-10 12:58:17,079 - INFO - OPENED SHORT at 2083.28 | Stop loss: 2093.7159107142857 | Take profit: 2052.001533928572 +2025-03-10 12:58:17,123 - INFO - CLOSED short at 2088.44 | PnL: -0.25% | $-0.54 +2025-03-10 12:58:17,208 - INFO - OPENED LONG at 2085.3 | Stop loss: 2074.8539892857143 | Take profit: 2116.608766071429 +2025-03-10 12:58:17,351 - INFO - CLOSED long at 2080.38 | PnL: -0.24% | $-0.51 +2025-03-10 12:58:17,398 - INFO - OPENED LONG at 2081.25 | Stop loss: 2070.824239285714 | Take profit: 2112.4980160714285 +2025-03-10 12:58:17,446 - INFO - CLOSED long at 2083.41 | PnL: 0.10% | $0.01 +2025-03-10 12:58:17,446 - INFO - OPENED SHORT at 2083.41 | Stop loss: 2093.8465607142857 | Take profit: 2052.1295839285713 +2025-03-10 12:58:17,498 - INFO - CLOSED short at 2085.09 | PnL: -0.08% | $-0.27 +2025-03-10 12:58:17,499 - INFO - OPENED LONG at 2085.09 | Stop loss: 2074.6450392857146 | Take profit: 2116.395616071429 +2025-03-10 12:58:17,589 - INFO - CLOSED long at 2086.57 | PnL: 0.07% | $-0.04 +2025-03-10 12:58:17,680 - INFO - OPENED LONG at 2084.72 | Stop loss: 2074.2768892857143 | Take profit: 2116.020066071428 +2025-03-10 12:58:17,723 - INFO - CLOSED long at 2085.83 | PnL: 0.05% | $-0.07 +2025-03-10 12:58:17,724 - INFO - OPENED SHORT at 2085.83 | Stop loss: 2096.2786607142857 | Take profit: 2054.513283928571 +2025-03-10 12:58:17,861 - INFO - CLOSED short at 2088.32 | PnL: -0.12% | $-0.33 +2025-03-10 12:58:17,910 - INFO - OPENED LONG at 2088.1 | Stop loss: 2077.6399892857144 | Take profit: 2119.4507660714285 +2025-03-10 12:58:18,264 - INFO - CLOSED long at 2085.67 | PnL: -0.12% | $-0.33 +2025-03-10 12:58:18,264 - INFO - OPENED SHORT at 2085.67 | Stop loss: 2096.1178607142856 | Take profit: 2054.3556839285716 +2025-03-10 12:58:18,317 - INFO - CLOSED short at 2089.2 | PnL: -0.17% | $-0.40 +2025-03-10 12:58:18,317 - INFO - OPENED LONG at 2089.2 | Stop loss: 2078.734489285714 | Take profit: 2120.5672660714285 +2025-03-10 12:58:18,368 - INFO - CLOSED long at 2091.05 | PnL: 0.09% | $-0.02 +2025-03-10 12:58:18,369 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.524760714286 | Take profit: 2059.6549839285717 +2025-03-10 12:58:18,464 - INFO - CLOSED short at 2091.95 | PnL: -0.04% | $-0.21 +2025-03-10 12:58:18,518 - INFO - OPENED LONG at 2094.7 | Stop loss: 2084.206989285714 | Take profit: 2126.149766071428 +2025-03-10 12:58:18,615 - INFO - CLOSED long at 2099.99 | PnL: 0.25% | $0.23 +2025-03-10 12:58:18,616 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.5094607142855 | Take profit: 2068.460883928571 +2025-03-10 12:58:18,670 - INFO - CLOSED short at 2101.64 | PnL: -0.08% | $-0.27 +2025-03-10 12:58:18,671 - INFO - OPENED LONG at 2101.64 | Stop loss: 2091.1122892857143 | Take profit: 2133.1938660714286 +2025-03-10 12:58:18,766 - INFO - CLOSED long at 2098.49 | PnL: -0.15% | $-0.37 +2025-03-10 12:58:18,767 - INFO - OPENED SHORT at 2098.49 | Stop loss: 2109.0019607142854 | Take profit: 2066.983383928571 +2025-03-10 12:58:18,812 - INFO - Trade Analysis: Win Rate=18.4% in uptrends, 0.0% in downtrends | Avg Win=$0.24, Avg Loss=$-0.26 +2025-03-10 12:58:18,813 - INFO - Episode 2: Reward=-113.91, Balance=$74.70, Win Rate=20.0%, Trades=160, Episode PnL=$-18.24, Total PnL=$-78.65, Max Drawdown=24.9%, Pred Accuracy=98.6% +2025-03-10 12:58:18,815 - ERROR - Error in episode 2: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 12:58:18,816 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1763, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 12:58:18,844 - INFO - Identified 26 optimal buy points and 27 optimal sell points +2025-03-10 12:58:19,195 - INFO - OPENED LONG at 2052.16 | Stop loss: 2041.879689285714 | Take profit: 2082.9716660714284 +2025-03-10 12:58:19,417 - INFO - CLOSED long at 2049.49 | PnL: -0.13% | $-0.46 +2025-03-10 12:58:19,465 - INFO - OPENED SHORT at 2050.2 | Stop loss: 2060.470510714286 | Take profit: 2019.4177339285714 +2025-03-10 12:58:19,555 - INFO - CLOSED short at 2051.99 | PnL: -0.09% | $-0.37 +2025-03-10 12:58:19,556 - INFO - OPENED LONG at 2051.99 | Stop loss: 2041.710539285714 | Take profit: 2082.7991160714287 +2025-03-10 12:58:19,600 - INFO - CLOSED long at 2049.61 | PnL: -0.12% | $-0.42 +2025-03-10 12:58:19,686 - INFO - OPENED LONG at 2048.48 | Stop loss: 2038.2180892857143 | Take profit: 2079.236466071429 +2025-03-10 12:58:19,819 - INFO - CLOSED long at 2047.4 | PnL: -0.05% | $-0.30 +2025-03-10 12:58:19,820 - INFO - OPENED SHORT at 2047.4 | Stop loss: 2057.656510714286 | Take profit: 2016.6597339285715 +2025-03-10 12:58:19,860 - INFO - CLOSED short at 2047.2 | PnL: 0.01% | $-0.18 +2025-03-10 12:58:19,861 - INFO - OPENED LONG at 2047.2 | Stop loss: 2036.9444892857143 | Take profit: 2077.9372660714284 +2025-03-10 12:58:19,901 - INFO - CLOSED long at 2045.99 | PnL: -0.06% | $-0.31 +2025-03-10 12:58:19,902 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.239460714286 | Take profit: 2015.2708839285715 +2025-03-10 12:58:19,991 - INFO - CLOSED short at 2045.79 | PnL: 0.01% | $-0.18 +2025-03-10 12:58:19,991 - INFO - OPENED LONG at 2045.79 | Stop loss: 2035.5415392857142 | Take profit: 2076.5061160714286 +2025-03-10 12:58:20,033 - INFO - CLOSED long at 2048.13 | PnL: 0.11% | $0.03 +2025-03-10 12:58:20,034 - INFO - OPENED SHORT at 2048.13 | Stop loss: 2058.3901607142857 | Take profit: 2017.3787839285717 +2025-03-10 12:58:20,079 - INFO - CLOSED short at 2047.59 | PnL: 0.03% | $-0.14 +2025-03-10 12:58:20,080 - INFO - OPENED LONG at 2047.59 | Stop loss: 2037.3325392857141 | Take profit: 2078.3331160714283 +2025-03-10 12:58:20,212 - INFO - CLOSED long at 2050.24 | PnL: 0.13% | $0.06 +2025-03-10 12:58:20,302 - INFO - OPENED LONG at 2051.11 | Stop loss: 2040.8349392857144 | Take profit: 2081.9059160714287 +2025-03-10 12:58:20,609 - INFO - CLOSED long at 2058.39 | PnL: 0.35% | $0.49 +2025-03-10 12:58:20,659 - INFO - OPENED LONG at 2060.13 | Stop loss: 2049.8098392857146 | Take profit: 2091.0612160714286 +2025-03-10 12:58:20,845 - INFO - CLOSED long at 2064.61 | PnL: 0.22% | $0.23 +2025-03-10 12:58:20,845 - INFO - OPENED SHORT at 2064.61 | Stop loss: 2074.9525607142855 | Take profit: 2033.6115839285715 +2025-03-10 12:58:20,888 - INFO - CLOSED short at 2063.59 | PnL: 0.05% | $-0.10 +2025-03-10 12:58:20,979 - INFO - OPENED LONG at 2064.69 | Stop loss: 2054.3470392857143 | Take profit: 2095.6896160714286 +2025-03-10 12:58:21,113 - INFO - CLOSED long at 2058.3 | PnL: -0.31% | $-0.80 +2025-03-10 12:58:21,114 - INFO - OPENED SHORT at 2058.3 | Stop loss: 2068.6110107142863 | Take profit: 2027.3962339285715 +2025-03-10 12:58:21,166 - INFO - CLOSED short at 2060.0 | PnL: -0.08% | $-0.35 +2025-03-10 12:58:21,167 - INFO - OPENED LONG at 2060.0 | Stop loss: 2049.6804892857144 | Take profit: 2090.9292660714286 +2025-03-10 12:58:21,431 - INFO - CLOSED long at 2057.89 | PnL: -0.10% | $-0.39 +2025-03-10 12:58:21,474 - INFO - OPENED LONG at 2057.94 | Stop loss: 2047.6307892857142 | Take profit: 2088.838366071429 +2025-03-10 12:58:21,779 - INFO - CLOSED long at 2068.11 | PnL: 0.49% | $0.76 +2025-03-10 12:58:21,780 - INFO - OPENED SHORT at 2068.11 | Stop loss: 2078.4700607142854 | Take profit: 2037.0590839285715 +2025-03-10 12:58:21,867 - INFO - CLOSED short at 2067.89 | PnL: 0.01% | $-0.17 +2025-03-10 12:58:21,868 - INFO - OPENED LONG at 2067.89 | Stop loss: 2057.531039285714 | Take profit: 2098.9376160714282 +2025-03-10 12:58:21,956 - INFO - CLOSED long at 2070.99 | PnL: 0.15% | $0.10 +2025-03-10 12:58:22,002 - INFO - OPENED LONG at 2069.6 | Stop loss: 2059.232489285714 | Take profit: 2100.6732660714288 +2025-03-10 12:58:22,133 - INFO - CLOSED long at 2067.9 | PnL: -0.08% | $-0.35 +2025-03-10 12:58:22,134 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.2590107142855 | Take profit: 2036.8522339285716 +2025-03-10 12:58:22,176 - INFO - CLOSED short at 2067.69 | PnL: 0.01% | $-0.17 +2025-03-10 12:58:22,302 - INFO - OPENED LONG at 2073.73 | Stop loss: 2063.3418392857143 | Take profit: 2104.8652160714287 +2025-03-10 12:58:22,472 - INFO - CLOSED long at 2071.38 | PnL: -0.11% | $-0.41 +2025-03-10 12:58:22,512 - INFO - OPENED LONG at 2071.41 | Stop loss: 2061.0334392857144 | Take profit: 2102.5104160714286 +2025-03-10 12:58:22,631 - INFO - CLOSED long at 2072.8 | PnL: 0.07% | $-0.06 +2025-03-10 12:58:22,801 - INFO - OPENED SHORT at 2067.2 | Stop loss: 2077.5555107142854 | Take profit: 2036.1627339285712 +2025-03-10 12:58:22,927 - INFO - CLOSED short at 2070.7 | PnL: -0.17% | $-0.51 +2025-03-10 12:58:22,927 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3269892857143 | Take profit: 2101.7897660714284 +2025-03-10 12:58:23,059 - INFO - CLOSED long at 2068.8 | PnL: -0.09% | $-0.36 +2025-03-10 12:58:23,152 - INFO - OPENED LONG at 2067.51 | Stop loss: 2057.1529392857146 | Take profit: 2098.551916071429 +2025-03-10 12:58:23,234 - INFO - CLOSED long at 2066.39 | PnL: -0.05% | $-0.29 +2025-03-10 12:58:23,277 - INFO - OPENED LONG at 2065.99 | Stop loss: 2055.640539285714 | Take profit: 2097.0091160714283 +2025-03-10 12:58:23,401 - INFO - CLOSED long at 2065.08 | PnL: -0.04% | $-0.27 +2025-03-10 12:58:23,401 - INFO - OPENED SHORT at 2065.08 | Stop loss: 2075.424910714286 | Take profit: 2034.0745339285713 +2025-03-10 12:58:23,441 - INFO - CLOSED short at 2066.18 | PnL: -0.05% | $-0.29 +2025-03-10 12:58:23,485 - INFO - OPENED LONG at 2068.76 | Stop loss: 2058.3966892857147 | Take profit: 2099.8206660714286 +2025-03-10 12:58:23,613 - INFO - CLOSED long at 2068.59 | PnL: -0.01% | $-0.20 +2025-03-10 12:58:23,614 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.9524607142857 | Take profit: 2037.5318839285715 +2025-03-10 12:58:23,658 - INFO - CLOSED short at 2069.7 | PnL: -0.05% | $-0.29 +2025-03-10 12:58:23,658 - INFO - OPENED LONG at 2069.7 | Stop loss: 2059.331989285714 | Take profit: 2100.774766071428 +2025-03-10 12:58:23,742 - INFO - CLOSED long at 2069.96 | PnL: 0.01% | $-0.16 +2025-03-10 12:58:23,742 - INFO - OPENED SHORT at 2069.96 | Stop loss: 2080.329310714286 | Take profit: 2038.8813339285714 +2025-03-10 12:58:23,793 - INFO - CLOSED short at 2071.4 | PnL: -0.07% | $-0.32 +2025-03-10 12:58:23,793 - INFO - OPENED LONG at 2071.4 | Stop loss: 2061.0234892857143 | Take profit: 2102.500266071429 +2025-03-10 12:58:23,834 - INFO - CLOSED long at 2071.39 | PnL: -0.00% | $-0.19 +2025-03-10 12:58:23,919 - INFO - OPENED SHORT at 2072.75 | Stop loss: 2083.133260714286 | Take profit: 2041.6294839285713 +2025-03-10 12:58:24,084 - INFO - CLOSED short at 2074.29 | PnL: -0.07% | $-0.32 +2025-03-10 12:58:24,255 - INFO - OPENED LONG at 2071.11 | Stop loss: 2060.7349392857145 | Take profit: 2102.2059160714284 +2025-03-10 12:58:24,340 - INFO - CLOSED long at 2069.35 | PnL: -0.08% | $-0.34 +2025-03-10 12:58:24,340 - INFO - OPENED SHORT at 2069.35 | Stop loss: 2079.7162607142855 | Take profit: 2038.2804839285714 +2025-03-10 12:58:24,389 - INFO - CLOSED short at 2068.32 | PnL: 0.05% | $-0.09 +2025-03-10 12:58:24,389 - INFO - OPENED LONG at 2068.32 | Stop loss: 2057.9588892857146 | Take profit: 2099.374066071429 +2025-03-10 12:58:24,433 - INFO - CLOSED long at 2067.0 | PnL: -0.06% | $-0.30 +2025-03-10 12:58:24,516 - INFO - OPENED LONG at 2067.46 | Stop loss: 2057.103189285714 | Take profit: 2098.5011660714285 +2025-03-10 12:58:24,635 - INFO - CLOSED long at 2063.61 | PnL: -0.19% | $-0.52 +2025-03-10 12:58:24,636 - INFO - OPENED SHORT at 2063.61 | Stop loss: 2073.947560714286 | Take profit: 2032.6265839285716 +2025-03-10 12:58:24,755 - INFO - CLOSED short at 2068.58 | PnL: -0.24% | $-0.62 +2025-03-10 12:58:24,805 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.4364892857143 | Take profit: 2099.861266071429 +2025-03-10 12:58:24,888 - INFO - CLOSED long at 2067.86 | PnL: -0.05% | $-0.26 +2025-03-10 12:58:24,929 - INFO - OPENED LONG at 2067.59 | Stop loss: 2057.2325392857147 | Take profit: 2098.6331160714285 +2025-03-10 12:58:24,973 - INFO - CLOSED long at 2069.2 | PnL: 0.08% | $-0.04 +2025-03-10 12:58:24,974 - INFO - OPENED SHORT at 2069.2 | Stop loss: 2079.5655107142857 | Take profit: 2038.1327339285713 +2025-03-10 12:58:25,015 - INFO - CLOSED short at 2070.3 | PnL: -0.05% | $-0.28 +2025-03-10 12:58:25,015 - INFO - OPENED LONG at 2070.3 | Stop loss: 2059.9289892857146 | Take profit: 2101.383766071429 +2025-03-10 12:58:25,055 - INFO - CLOSED long at 2071.59 | PnL: 0.06% | $-0.07 +2025-03-10 12:58:25,098 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3269892857143 | Take profit: 2101.7897660714284 +2025-03-10 12:58:25,142 - INFO - CLOSED long at 2070.4 | PnL: -0.01% | $-0.21 +2025-03-10 12:58:25,143 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.771510714286 | Take profit: 2039.3147339285715 +2025-03-10 12:58:25,192 - INFO - CLOSED short at 2070.73 | PnL: -0.02% | $-0.21 +2025-03-10 12:58:25,193 - INFO - OPENED LONG at 2070.73 | Stop loss: 2060.356839285714 | Take profit: 2101.8202160714286 +2025-03-10 12:58:25,234 - INFO - CLOSED long at 2068.5 | PnL: -0.11% | $-0.37 +2025-03-10 12:58:25,278 - INFO - OPENED SHORT at 2068.69 | Stop loss: 2079.0529607142857 | Take profit: 2037.6303839285715 +2025-03-10 12:58:25,324 - INFO - CLOSED short at 2067.84 | PnL: 0.04% | $-0.11 +2025-03-10 12:58:25,325 - INFO - OPENED LONG at 2067.84 | Stop loss: 2057.4812892857144 | Take profit: 2098.886866071429 +2025-03-10 12:58:25,457 - INFO - CLOSED long at 2066.4 | PnL: -0.07% | $-0.30 +2025-03-10 12:58:25,458 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.751510714286 | Take profit: 2035.3747339285715 +2025-03-10 12:58:25,541 - INFO - CLOSED short at 2065.28 | PnL: 0.05% | $-0.08 +2025-03-10 12:58:25,582 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.7414607142855 | Take profit: 2035.3648839285713 +2025-03-10 12:58:25,629 - INFO - CLOSED short at 2064.47 | PnL: 0.09% | $-0.01 +2025-03-10 12:58:25,676 - INFO - OPENED LONG at 2070.04 | Stop loss: 2059.6702892857143 | Take profit: 2101.1198660714285 +2025-03-10 12:58:25,804 - INFO - CLOSED long at 2065.69 | PnL: -0.21% | $-0.55 +2025-03-10 12:58:25,846 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.5210892857144 | Take profit: 2098.9274660714286 +2025-03-10 12:58:25,976 - INFO - CLOSED long at 2066.15 | PnL: -0.08% | $-0.32 +2025-03-10 12:58:26,024 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.6058107142862 | Take profit: 2034.2518339285716 +2025-03-10 12:58:26,112 - INFO - CLOSED short at 2062.65 | PnL: 0.13% | $0.05 +2025-03-10 12:58:26,112 - INFO - OPENED LONG at 2062.65 | Stop loss: 2052.3172392857145 | Take profit: 2093.6190160714286 +2025-03-10 12:58:26,204 - INFO - CLOSED long at 2059.59 | PnL: -0.15% | $-0.44 +2025-03-10 12:58:26,246 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.9739892857147 | Take profit: 2092.2487660714287 +2025-03-10 12:58:26,379 - INFO - CLOSED long at 2066.24 | PnL: 0.24% | $0.24 +2025-03-10 12:58:26,380 - INFO - OPENED SHORT at 2066.24 | Stop loss: 2076.5907107142853 | Take profit: 2035.2171339285712 +2025-03-10 12:58:26,562 - INFO - CLOSED short at 2064.45 | PnL: 0.09% | $-0.02 +2025-03-10 12:58:26,649 - INFO - OPENED LONG at 2062.71 | Stop loss: 2052.3769392857143 | Take profit: 2093.6799160714286 +2025-03-10 12:58:26,695 - INFO - CLOSED long at 2062.89 | PnL: 0.01% | $-0.16 +2025-03-10 12:58:26,696 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.2239607142856 | Take profit: 2031.9173839285713 +2025-03-10 12:58:26,741 - INFO - CLOSED short at 2064.5 | PnL: -0.08% | $-0.31 +2025-03-10 12:58:26,741 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.1579892857144 | Take profit: 2095.4967660714287 +2025-03-10 12:58:26,788 - INFO - CLOSED long at 2063.5 | PnL: -0.05% | $-0.26 +2025-03-10 12:58:26,833 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.272489285714 | Take profit: 2092.5532660714284 +2025-03-10 12:58:26,929 - INFO - CLOSED long at 2060.65 | PnL: -0.05% | $-0.25 +2025-03-10 12:58:26,974 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.2039607142856 | Take profit: 2027.9773839285715 +2025-03-10 12:58:27,017 - INFO - CLOSED short at 2059.3 | PnL: -0.02% | $-0.21 +2025-03-10 12:58:27,017 - INFO - OPENED LONG at 2059.3 | Stop loss: 2048.9839892857144 | Take profit: 2090.2187660714285 +2025-03-10 12:58:27,112 - INFO - CLOSED long at 2061.8 | PnL: 0.12% | $0.04 +2025-03-10 12:58:27,112 - INFO - OPENED SHORT at 2061.8 | Stop loss: 2072.1285107142858 | Take profit: 2030.8437339285715 +2025-03-10 12:58:27,251 - INFO - CLOSED short at 2060.91 | PnL: 0.04% | $-0.10 +2025-03-10 12:58:27,252 - INFO - OPENED LONG at 2060.91 | Stop loss: 2050.585939285714 | Take profit: 2091.8529160714284 +2025-03-10 12:58:27,435 - INFO - CLOSED long at 2064.1 | PnL: 0.15% | $0.09 +2025-03-10 12:58:27,484 - INFO - OPENED LONG at 2065.36 | Stop loss: 2055.0136892857145 | Take profit: 2096.3696660714286 +2025-03-10 12:58:27,529 - INFO - CLOSED long at 2064.33 | PnL: -0.05% | $-0.26 +2025-03-10 12:58:27,530 - INFO - OPENED SHORT at 2064.33 | Stop loss: 2074.6711607142856 | Take profit: 2033.3357839285713 +2025-03-10 12:58:27,580 - INFO - CLOSED short at 2063.39 | PnL: 0.05% | $-0.09 +2025-03-10 12:58:27,580 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.053539285714 | Take profit: 2094.3701160714286 +2025-03-10 12:58:27,766 - INFO - CLOSED long at 2063.0 | PnL: -0.02% | $-0.20 +2025-03-10 12:58:27,766 - INFO - OPENED SHORT at 2063.0 | Stop loss: 2073.334510714286 | Take profit: 2032.0257339285715 +2025-03-10 12:58:28,080 - INFO - CLOSED short at 2059.16 | PnL: 0.19% | $0.15 +2025-03-10 12:58:28,080 - INFO - OPENED LONG at 2059.16 | Stop loss: 2048.844689285714 | Take profit: 2090.0766660714285 +2025-03-10 12:58:28,180 - INFO - CLOSED long at 2058.89 | PnL: -0.01% | $-0.19 +2025-03-10 12:58:28,180 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.2039607142856 | Take profit: 2027.9773839285715 +2025-03-10 12:58:28,229 - INFO - CLOSED short at 2059.96 | PnL: -0.05% | $-0.26 +2025-03-10 12:58:28,230 - INFO - OPENED LONG at 2059.96 | Stop loss: 2049.6406892857144 | Take profit: 2090.888666071429 +2025-03-10 12:58:28,346 - INFO - CLOSED long at 2057.4 | PnL: -0.12% | $-0.38 +2025-03-10 12:58:28,402 - INFO - OPENED LONG at 2058.28 | Stop loss: 2047.9690892857145 | Take profit: 2089.183466071429 +2025-03-10 12:58:28,449 - INFO - CLOSED long at 2056.28 | PnL: -0.10% | $-0.34 +2025-03-10 12:58:28,450 - INFO - OPENED SHORT at 2056.28 | Stop loss: 2066.580910714286 | Take profit: 2025.4065339285717 +2025-03-10 12:58:28,500 - INFO - CLOSED short at 2055.6 | PnL: 0.03% | $-0.11 +2025-03-10 12:58:28,558 - INFO - OPENED LONG at 2054.89 | Stop loss: 2044.5960392857144 | Take profit: 2085.7426160714285 +2025-03-10 12:58:28,605 - INFO - CLOSED long at 2054.83 | PnL: -0.00% | $-0.17 +2025-03-10 12:58:28,606 - INFO - OPENED SHORT at 2054.83 | Stop loss: 2065.1236607142855 | Take profit: 2023.9782839285713 +2025-03-10 12:58:28,660 - INFO - CLOSED short at 2056.71 | PnL: -0.09% | $-0.32 +2025-03-10 12:58:28,660 - INFO - OPENED LONG at 2056.71 | Stop loss: 2046.4069392857143 | Take profit: 2087.5899160714284 +2025-03-10 12:58:28,708 - INFO - CLOSED long at 2058.15 | PnL: 0.07% | $-0.05 +2025-03-10 12:58:28,806 - INFO - OPENED SHORT at 2061.66 | Stop loss: 2071.9878107142854 | Take profit: 2030.7058339285713 +2025-03-10 12:58:28,860 - INFO - CLOSED short at 2061.5 | PnL: 0.01% | $-0.16 +2025-03-10 12:58:28,861 - INFO - OPENED LONG at 2061.5 | Stop loss: 2051.1729892857143 | Take profit: 2092.4517660714287 +2025-03-10 12:58:28,905 - INFO - CLOSED long at 2061.6 | PnL: 0.00% | $-0.16 +2025-03-10 12:58:28,951 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.9739892857147 | Take profit: 2092.2487660714287 +2025-03-10 12:58:29,085 - INFO - CLOSED long at 2066.36 | PnL: 0.25% | $0.24 +2025-03-10 12:58:29,086 - INFO - OPENED SHORT at 2066.36 | Stop loss: 2076.711310714286 | Take profit: 2035.3353339285716 +2025-03-10 12:58:29,129 - INFO - CLOSED short at 2066.01 | PnL: 0.02% | $-0.14 +2025-03-10 12:58:29,178 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.560989285714 | Take profit: 2094.8877660714284 +2025-03-10 12:58:29,274 - INFO - CLOSED long at 2066.33 | PnL: 0.12% | $0.03 +2025-03-10 12:58:29,322 - INFO - OPENED LONG at 2066.34 | Stop loss: 2055.9887892857146 | Take profit: 2097.364366071429 +2025-03-10 12:58:29,553 - INFO - CLOSED long at 2069.79 | PnL: 0.17% | $0.11 +2025-03-10 12:58:29,554 - INFO - OPENED SHORT at 2069.79 | Stop loss: 2080.158460714286 | Take profit: 2038.7138839285715 +2025-03-10 12:58:29,605 - INFO - CLOSED short at 2072.0 | PnL: -0.11% | $-0.35 +2025-03-10 12:58:29,605 - INFO - OPENED LONG at 2072.0 | Stop loss: 2061.620489285714 | Take profit: 2103.1092660714285 +2025-03-10 12:58:29,847 - INFO - CLOSED long at 2071.04 | PnL: -0.05% | $-0.25 +2025-03-10 12:58:29,848 - INFO - OPENED SHORT at 2071.04 | Stop loss: 2081.414710714286 | Take profit: 2039.9451339285715 +2025-03-10 12:58:29,899 - INFO - CLOSED short at 2070.01 | PnL: 0.05% | $-0.08 +2025-03-10 12:58:29,899 - INFO - OPENED LONG at 2070.01 | Stop loss: 2059.640439285715 | Take profit: 2101.089416071429 +2025-03-10 12:58:29,943 - INFO - CLOSED long at 2071.6 | PnL: 0.08% | $-0.04 +2025-03-10 12:58:30,075 - INFO - OPENED LONG at 2068.15 | Stop loss: 2057.7897392857144 | Take profit: 2099.2015160714286 +2025-03-10 12:58:30,117 - INFO - CLOSED long at 2068.39 | PnL: 0.01% | $-0.15 +2025-03-10 13:02:30,047 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 13:02:30,068 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 13:02:30,069 - INFO - Fetching initial data for ETH/USDT +2025-03-10 13:02:33,841 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 13:02:33,857 - INFO - Initialized environment with 500 candles +2025-03-10 13:02:36,337 - INFO - Starting training for 1000 episodes... +2025-03-10 13:02:36,337 - INFO - Starting training on device: cuda +2025-03-10 13:02:36,368 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 13:02:36,635 - INFO - OPENED SHORT at 2050.44 | Stop loss: 2060.710857142857 | Take profit: 2019.6554142857142 +2025-03-10 13:02:36,636 - INFO - CLOSED short at 2049.49 | PnL: 0.05% | $-0.11 +2025-03-10 13:02:36,637 - INFO - OPENED LONG at 2049.49 | Stop loss: 2039.2238928571428 | Take profit: 2080.2603357142852 +2025-03-10 13:02:36,638 - INFO - CLOSED long at 2049.24 | PnL: -0.01% | $-0.22 +2025-03-10 13:02:36,638 - INFO - OPENED SHORT at 2049.24 | Stop loss: 2059.504857142857 | Take profit: 2018.473414285714 +2025-03-10 13:02:36,639 - INFO - CLOSED short at 2048.48 | PnL: 0.04% | $-0.12 +2025-03-10 13:02:36,639 - INFO - OPENED LONG at 2048.48 | Stop loss: 2038.2189428571428 | Take profit: 2079.2351857142858 +2025-03-10 13:02:36,640 - INFO - CLOSED long at 2046.58 | PnL: -0.09% | $-0.38 +2025-03-10 13:02:36,640 - INFO - OPENED SHORT at 2047.4 | Stop loss: 2057.6556571428573 | Take profit: 2016.6610142857144 +2025-03-10 13:02:36,640 - INFO - CLOSED short at 2047.2 | PnL: 0.01% | $-0.18 +2025-03-10 13:02:36,641 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.2386071428573 | Take profit: 2015.2721642857143 +2025-03-10 13:02:36,642 - INFO - CLOSED short at 2045.99 | PnL: 0.00% | $-0.20 +2025-03-10 13:02:36,642 - INFO - OPENED SHORT at 2045.79 | Stop loss: 2056.0376071428573 | Take profit: 2015.0751642857144 +2025-03-10 13:02:36,643 - INFO - CLOSED short at 2048.51 | PnL: -0.13% | $-0.46 +2025-03-10 13:02:36,643 - INFO - OPENED LONG at 2048.51 | Stop loss: 2038.2487928571431 | Take profit: 2079.265635714286 +2025-03-10 13:02:36,643 - INFO - CLOSED long at 2050.24 | PnL: 0.08% | $-0.03 +2025-03-10 13:02:36,645 - INFO - OPENED SHORT at 2049.89 | Stop loss: 2060.158107142857 | Take profit: 2019.1136642857143 +2025-03-10 13:02:36,646 - INFO - CLOSED short at 2051.11 | PnL: -0.06% | $-0.31 +2025-03-10 13:02:36,646 - INFO - OPENED LONG at 2051.11 | Stop loss: 2040.835792857143 | Take profit: 2081.9046357142856 +2025-03-10 13:02:36,648 - INFO - CLOSED long at 2056.89 | PnL: 0.28% | $0.35 +2025-03-10 13:02:36,648 - INFO - OPENED LONG at 2058.39 | Stop loss: 2048.0793928571425 | Take profit: 2089.2938357142857 +2025-03-10 13:02:36,649 - INFO - CLOSED long at 2060.13 | PnL: 0.08% | $-0.03 +2025-03-10 13:02:36,649 - INFO - OPENED LONG at 2059.7 | Stop loss: 2049.382842857143 | Take profit: 2090.6234857142854 +2025-03-10 13:02:36,650 - INFO - CLOSED long at 2061.49 | PnL: 0.09% | $-0.03 +2025-03-10 13:02:36,650 - INFO - OPENED SHORT at 2061.49 | Stop loss: 2071.8161071428567 | Take profit: 2030.539664285714 +2025-03-10 13:02:36,651 - INFO - CLOSED short at 2063.29 | PnL: -0.09% | $-0.36 +2025-03-10 13:02:36,652 - INFO - OPENED LONG at 2064.69 | Stop loss: 2054.347892857143 | Take profit: 2095.6883357142856 +2025-03-10 13:02:36,652 - INFO - CLOSED long at 2060.99 | PnL: -0.18% | $-0.54 +2025-03-10 13:02:36,652 - INFO - OPENED SHORT at 2060.99 | Stop loss: 2071.313607142857 | Take profit: 2030.047164285714 +2025-03-10 13:02:36,653 - INFO - CLOSED short at 2060.0 | PnL: 0.05% | $-0.10 +2025-03-10 13:02:36,654 - INFO - OPENED LONG at 2060.0 | Stop loss: 2049.681342857143 | Take profit: 2090.9279857142856 +2025-03-10 13:02:36,654 - INFO - CLOSED long at 2061.89 | PnL: 0.09% | $-0.02 +2025-03-10 13:02:36,655 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.218107142857 | Take profit: 2030.9336642857143 +2025-03-10 13:02:36,656 - INFO - CLOSED short at 2059.49 | PnL: 0.12% | $0.03 +2025-03-10 13:02:36,656 - INFO - OPENED LONG at 2059.49 | Stop loss: 2049.1738928571426 | Take profit: 2090.4103357142853 +2025-03-10 13:02:36,657 - INFO - CLOSED long at 2057.8 | PnL: -0.08% | $-0.35 +2025-03-10 13:02:36,657 - INFO - OPENED LONG at 2057.89 | Stop loss: 2047.5818928571427 | Take profit: 2088.786335714286 +2025-03-10 13:02:36,658 - INFO - CLOSED long at 2057.94 | PnL: 0.00% | $-0.19 +2025-03-10 13:02:36,658 - INFO - OPENED SHORT at 2064.32 | Stop loss: 2074.660257142857 | Take profit: 2033.3272142857143 +2025-03-10 13:02:36,659 - INFO - CLOSED short at 2065.86 | PnL: -0.07% | $-0.33 +2025-03-10 13:02:36,660 - INFO - OPENED SHORT at 2070.58 | Stop loss: 2080.951557142857 | Take profit: 2039.4933142857142 +2025-03-10 13:02:36,660 - INFO - CLOSED short at 2068.11 | PnL: 0.12% | $0.04 +2025-03-10 13:02:36,661 - INFO - OPENED LONG at 2068.29 | Stop loss: 2057.929892857143 | Take profit: 2099.3423357142856 +2025-03-10 13:02:36,661 - INFO - CLOSED long at 2067.89 | PnL: -0.02% | $-0.23 +2025-03-10 13:02:36,662 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.248107142857 | Take profit: 2036.843664285714 +2025-03-10 13:02:36,663 - INFO - CLOSED short at 2068.99 | PnL: -0.05% | $-0.29 +2025-03-10 13:02:36,664 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.2581571428573 | Take profit: 2036.8535142857145 +2025-03-10 13:02:36,664 - INFO - CLOSED short at 2067.69 | PnL: 0.01% | $-0.17 +2025-03-10 13:02:36,667 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,669 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,672 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,673 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,673 - INFO - OPENED SHORT at 2071.44 | Stop loss: 2081.815857142857 | Take profit: 2040.3404142857144 +2025-03-10 13:02:36,674 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,675 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,677 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,678 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,679 - INFO - CLOSED short at 2075.1 | PnL: -0.18% | $-0.53 +2025-03-10 13:02:36,679 - INFO - OPENED LONG at 2075.1 | Stop loss: 2064.7058428571427 | Take profit: 2106.2544857142857 +2025-03-10 13:02:36,681 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,681 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,682 - INFO - CLOSED long at 2072.91 | PnL: -0.11% | $-0.39 +2025-03-10 13:02:36,684 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,685 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,685 - INFO - OPENED LONG at 2072.33 | Stop loss: 2061.949692857143 | Take profit: 2103.442935714286 +2025-03-10 13:02:36,686 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,687 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,688 - INFO - CLOSED long at 2071.38 | PnL: -0.05% | $-0.27 +2025-03-10 13:02:36,688 - INFO - OPENED SHORT at 2071.38 | Stop loss: 2081.7555571428575 | Take profit: 2040.2813142857144 +2025-03-10 13:02:36,689 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,691 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,692 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,693 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,694 - INFO - CLOSED short at 2069.37 | PnL: 0.10% | $-0.01 +2025-03-10 13:02:36,694 - INFO - OPENED LONG at 2069.37 | Stop loss: 2059.004492857143 | Take profit: 2100.4385357142855 +2025-03-10 13:02:36,695 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,696 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,696 - INFO - CLOSED long at 2070.9 | PnL: 0.07% | $-0.05 +2025-03-10 13:02:36,696 - INFO - OPENED SHORT at 2070.9 | Stop loss: 2081.273157142857 | Take profit: 2039.8085142857144 +2025-03-10 13:02:36,697 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,698 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,699 - INFO - CLOSED short at 2072.8 | PnL: -0.09% | $-0.36 +2025-03-10 13:02:36,699 - INFO - OPENED LONG at 2072.8 | Stop loss: 2062.417342857143 | Take profit: 2103.919985714286 +2025-03-10 13:02:36,700 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,701 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,701 - INFO - CLOSED long at 2070.79 | PnL: -0.10% | $-0.37 +2025-03-10 13:02:36,703 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,706 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,707 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.3787571428575 | Take profit: 2036.9717142857144 +2025-03-10 13:02:36,709 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,709 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,710 - INFO - CLOSED short at 2067.2 | PnL: 0.04% | $-0.11 +2025-03-10 13:02:36,710 - INFO - OPENED LONG at 2067.2 | Stop loss: 2056.8453428571424 | Take profit: 2098.2359857142856 +2025-03-10 13:02:36,711 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,712 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,713 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,714 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,716 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,716 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,717 - INFO - CLOSED long at 2070.7 | PnL: 0.17% | $0.13 +2025-03-10 13:02:36,717 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.072157142857 | Take profit: 2039.611514285714 +2025-03-10 13:02:36,719 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,720 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,721 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,722 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,723 - INFO - CLOSED short at 2069.19 | PnL: 0.07% | $-0.05 +2025-03-10 13:02:36,723 - INFO - OPENED LONG at 2069.19 | Stop loss: 2058.825392857143 | Take profit: 2100.2558357142857 +2025-03-10 13:02:36,724 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,725 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,727 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,728 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,729 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,731 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,732 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,733 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,734 - INFO - CLOSED long at 2069.01 | PnL: -0.01% | $-0.20 +2025-03-10 13:02:36,735 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,735 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,737 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.7406071428572 | Take profit: 2035.3661642857141 +2025-03-10 13:02:36,738 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,740 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,740 - INFO - CLOSED short at 2065.99 | PnL: 0.02% | $-0.15 +2025-03-10 13:02:36,740 - INFO - OPENED LONG at 2065.99 | Stop loss: 2055.6413928571424 | Take profit: 2097.0078357142856 +2025-03-10 13:02:36,741 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,742 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,743 - INFO - CLOSED long at 2066.19 | PnL: 0.01% | $-0.17 +2025-03-10 13:02:36,743 - INFO - OPENED SHORT at 2066.19 | Stop loss: 2076.539607142857 | Take profit: 2035.1691642857143 +2025-03-10 13:02:36,744 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,746 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,746 - INFO - CLOSED short at 2066.29 | PnL: -0.00% | $-0.19 +2025-03-10 13:02:36,746 - INFO - OPENED LONG at 2066.29 | Stop loss: 2055.9398928571427 | Take profit: 2097.3123357142854 +2025-03-10 13:02:36,747 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,749 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,749 - INFO - CLOSED long at 2065.08 | PnL: -0.06% | $-0.29 +2025-03-10 13:02:36,750 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,751 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,752 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,753 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,754 - INFO - OPENED LONG at 2068.76 | Stop loss: 2058.397542857143 | Take profit: 2099.819385714286 +2025-03-10 13:02:36,755 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,755 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,757 - INFO - CLOSED long at 2068.9 | PnL: 0.01% | $-0.17 +2025-03-10 13:02:36,757 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.263157142857 | Take profit: 2037.8385142857144 +2025-03-10 13:02:36,758 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,758 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,760 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,761 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,762 - INFO - CLOSED short at 2068.59 | PnL: 0.01% | $-0.16 +2025-03-10 13:02:36,763 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,763 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,764 - INFO - OPENED LONG at 2069.7 | Stop loss: 2059.3328428571426 | Take profit: 2100.7734857142855 +2025-03-10 13:02:36,764 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,766 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,767 - INFO - CLOSED long at 2070.4 | PnL: 0.03% | $-0.12 +2025-03-10 13:02:36,768 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,769 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,771 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,771 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,773 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,774 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,776 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,777 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,777 - INFO - OPENED SHORT at 2071.36 | Stop loss: 2081.7354571428573 | Take profit: 2040.2616142857146 +2025-03-10 13:02:36,779 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,780 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,810 - INFO - CLOSED short at 2072.75 | PnL: -0.07% | $-0.31 +2025-03-10 13:02:36,811 - INFO - OPENED LONG at 2072.75 | Stop loss: 2062.367592857143 | Take profit: 2103.869235714286 +2025-03-10 13:02:36,812 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,814 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,814 - INFO - CLOSED long at 2073.11 | PnL: 0.02% | $-0.15 +2025-03-10 13:02:36,815 - INFO - OPENED SHORT at 2073.11 | Stop loss: 2083.4942071428572 | Take profit: 2041.9853642857142 +2025-03-10 13:02:36,816 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,817 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,818 - INFO - CLOSED short at 2072.7 | PnL: 0.02% | $-0.15 +2025-03-10 13:02:36,818 - INFO - OPENED LONG at 2072.7 | Stop loss: 2062.3178428571428 | Take profit: 2103.8184857142855 +2025-03-10 13:02:36,819 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,819 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,820 - INFO - CLOSED long at 2072.15 | PnL: -0.03% | $-0.23 +2025-03-10 13:02:36,822 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,823 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,825 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,825 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,827 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,828 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,829 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,830 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,831 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,832 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,833 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,834 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,835 - INFO - OPENED SHORT at 2069.46 | Stop loss: 2079.825957142857 | Take profit: 2038.3901142857142 +2025-03-10 13:02:36,836 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,837 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,838 - INFO - CLOSED short at 2069.35 | PnL: 0.01% | $-0.17 +2025-03-10 13:02:36,838 - INFO - OPENED LONG at 2069.35 | Stop loss: 2058.984592857143 | Take profit: 2100.418235714286 +2025-03-10 13:02:36,839 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,840 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,842 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,844 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,844 - INFO - CLOSED long at 2067.0 | PnL: -0.11% | $-0.39 +2025-03-10 13:02:36,845 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,846 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,847 - INFO - OPENED LONG at 2067.79 | Stop loss: 2057.4323928571425 | Take profit: 2098.834835714286 +2025-03-10 13:02:36,848 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,850 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,850 - INFO - CLOSED long at 2067.46 | PnL: -0.02% | $-0.21 +2025-03-10 13:02:36,850 - INFO - OPENED SHORT at 2067.46 | Stop loss: 2077.815957142857 | Take profit: 2036.4201142857144 +2025-03-10 13:02:36,851 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,852 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,853 - INFO - CLOSED short at 2066.8 | PnL: 0.03% | $-0.12 +2025-03-10 13:02:36,854 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,855 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,856 - INFO - OPENED LONG at 2065.49 | Stop loss: 2055.143892857143 | Take profit: 2096.5003357142855 +2025-03-10 13:02:36,856 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,858 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,860 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,861 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,861 - INFO - CLOSED long at 2065.26 | PnL: -0.01% | $-0.20 +2025-03-10 13:02:36,861 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.6049571428575 | Take profit: 2034.2531142857144 +2025-03-10 13:02:36,863 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,863 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,863 - INFO - CLOSED short at 2067.89 | PnL: -0.13% | $-0.41 +2025-03-10 13:02:36,865 - INFO - OPENED LONG at 2067.89 | Stop loss: 2057.531892857143 | Take profit: 2098.9363357142856 +2025-03-10 13:02:36,866 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,867 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,868 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,870 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,871 - INFO - CLOSED long at 2068.8 | PnL: 0.04% | $-0.10 +2025-03-10 13:02:36,872 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,873 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,875 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,875 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,876 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.502042857143 | Take profit: 2098.905885714286 +2025-03-10 13:02:36,877 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,878 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,878 - INFO - CLOSED long at 2067.59 | PnL: -0.01% | $-0.20 +2025-03-10 13:02:36,879 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,880 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,880 - INFO - OPENED SHORT at 2069.2 | Stop loss: 2079.564657142857 | Take profit: 2038.134014285714 +2025-03-10 13:02:36,882 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,883 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,884 - INFO - CLOSED short at 2070.3 | PnL: -0.05% | $-0.27 +2025-03-10 13:02:36,885 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,886 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,886 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.9666071428574 | Take profit: 2040.4881642857144 +2025-03-10 13:02:36,887 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,888 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,889 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,890 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,891 - INFO - CLOSED short at 2070.4 | PnL: 0.06% | $-0.08 +2025-03-10 13:02:36,891 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.029342857143 | Take profit: 2101.4839857142856 +2025-03-10 13:02:36,893 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,894 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,894 - INFO - CLOSED long at 2070.73 | PnL: 0.02% | $-0.15 +2025-03-10 13:02:36,896 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,896 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,897 - INFO - OPENED LONG at 2068.5 | Stop loss: 2058.1388428571427 | Take profit: 2099.5554857142856 +2025-03-10 13:02:36,898 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,899 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,900 - INFO - CLOSED long at 2068.69 | PnL: 0.01% | $-0.16 +2025-03-10 13:02:36,901 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,902 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,902 - INFO - OPENED LONG at 2067.84 | Stop loss: 2057.482142857143 | Take profit: 2098.8855857142858 +2025-03-10 13:02:36,904 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,904 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,906 - INFO - CLOSED long at 2067.11 | PnL: -0.04% | $-0.24 +2025-03-10 13:02:36,907 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,908 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,909 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.502042857143 | Take profit: 2098.905885714286 +2025-03-10 13:02:36,910 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,911 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,912 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,913 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,915 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,916 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,917 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,918 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,918 - INFO - CLOSED long at 2066.39 | PnL: -0.07% | $-0.30 +2025-03-10 13:02:36,919 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,920 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,921 - INFO - OPENED LONG at 2064.47 | Stop loss: 2054.1289928571427 | Take profit: 2095.4650357142855 +2025-03-10 13:02:36,923 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,923 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,924 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,926 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,926 - INFO - CLOSED long at 2067.8 | PnL: 0.16% | $0.11 +2025-03-10 13:02:36,926 - INFO - OPENED SHORT at 2067.8 | Stop loss: 2078.1576571428573 | Take profit: 2036.7550142857144 +2025-03-10 13:02:36,928 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,929 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,930 - INFO - CLOSED short at 2068.18 | PnL: -0.02% | $-0.21 +2025-03-10 13:02:36,931 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,932 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,932 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.037107142857 | Take profit: 2034.6766642857144 +2025-03-10 13:02:36,933 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,934 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,935 - INFO - CLOSED short at 2067.88 | PnL: -0.11% | $-0.36 +2025-03-10 13:02:36,935 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.521942857143 | Take profit: 2098.9261857142856 +2025-03-10 13:02:36,936 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,937 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,938 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,939 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,940 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,941 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,942 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,943 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,945 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,946 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,946 - INFO - CLOSED long at 2062.89 | PnL: -0.24% | $-0.60 +2025-03-10 13:02:36,946 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.223107142857 | Take profit: 2031.9186642857142 +2025-03-10 13:02:36,947 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,948 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,949 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,951 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,952 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,952 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,954 - INFO - CLOSED short at 2059.59 | PnL: 0.16% | $0.10 +2025-03-10 13:02:36,955 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,956 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,957 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,959 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,960 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,960 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,961 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,963 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,964 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,965 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,966 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,968 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,969 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,970 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,971 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.439107142857 | Take profit: 2035.0706642857144 +2025-03-10 13:02:36,972 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,973 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,974 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,976 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,976 - INFO - CLOSED short at 2064.08 | PnL: 0.10% | $-0.00 +2025-03-10 13:02:36,977 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,978 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,979 - INFO - OPENED SHORT at 2062.71 | Stop loss: 2073.0422071428575 | Take profit: 2031.7413642857143 +2025-03-10 13:02:36,980 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,981 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,982 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,983 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,983 - INFO - CLOSED short at 2064.5 | PnL: -0.09% | $-0.32 +2025-03-10 13:02:36,983 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.1588428571426 | Take profit: 2095.4954857142857 +2025-03-10 13:02:36,985 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,986 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,987 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,988 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,990 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,991 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,992 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,993 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,994 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,995 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,996 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,997 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,998 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:36,999 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:36,999 - INFO - CLOSED long at 2060.31 | PnL: -0.20% | $-0.52 +2025-03-10 13:02:37,000 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.630207142857 | Take profit: 2029.377364285714 +2025-03-10 13:02:37,001 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,002 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,003 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,004 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,004 - INFO - CLOSED short at 2064.7 | PnL: -0.21% | $-0.54 +2025-03-10 13:02:37,005 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,006 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,007 - INFO - OPENED LONG at 2062.61 | Stop loss: 2052.278292857143 | Take profit: 2093.577135714286 +2025-03-10 13:02:37,008 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,010 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,011 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,012 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,012 - INFO - CLOSED long at 2060.3 | PnL: -0.11% | $-0.36 +2025-03-10 13:02:37,014 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,014 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,015 - INFO - OPENED LONG at 2061.13 | Stop loss: 2050.805692857143 | Take profit: 2092.074935714286 +2025-03-10 13:02:37,016 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,017 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,017 - INFO - CLOSED long at 2061.9 | PnL: 0.04% | $-0.11 +2025-03-10 13:02:37,020 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,021 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,023 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,023 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,024 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,025 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,026 - INFO - OPENED SHORT at 2064.33 | Stop loss: 2074.6703071428574 | Take profit: 2033.3370642857142 +2025-03-10 13:02:37,027 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,028 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,029 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,030 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,031 - INFO - CLOSED short at 2064.79 | PnL: -0.02% | $-0.21 +2025-03-10 13:02:37,031 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,032 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,034 - INFO - OPENED LONG at 2065.89 | Stop loss: 2055.5418928571426 | Take profit: 2096.906335714286 +2025-03-10 13:02:37,035 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,036 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,037 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,038 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,039 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,040 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,040 - INFO - CLOSED long at 2062.6 | PnL: -0.16% | $-0.44 +2025-03-10 13:02:37,041 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,043 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,043 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.218107142857 | Take profit: 2030.9336642857143 +2025-03-10 13:02:37,045 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,045 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,046 - INFO - CLOSED short at 2061.7 | PnL: 0.01% | $-0.15 +2025-03-10 13:02:37,046 - INFO - OPENED LONG at 2061.7 | Stop loss: 2051.3728428571426 | Take profit: 2092.6534857142856 +2025-03-10 13:02:37,047 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,048 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,048 - INFO - CLOSED long at 2060.7 | PnL: -0.05% | $-0.25 +2025-03-10 13:02:37,048 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,050 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,051 - INFO - OPENED SHORT at 2061.09 | Stop loss: 2071.414107142857 | Take profit: 2030.1456642857145 +2025-03-10 13:02:37,052 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,053 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,054 - INFO - CLOSED short at 2059.61 | PnL: 0.07% | $-0.05 +2025-03-10 13:02:37,054 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.2932928571427 | Take profit: 2090.5321357142857 +2025-03-10 13:02:37,055 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,056 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,057 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,058 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,059 - INFO - CLOSED long at 2059.02 | PnL: -0.03% | $-0.22 +2025-03-10 13:02:37,059 - INFO - OPENED SHORT at 2059.02 | Stop loss: 2069.3337571428574 | Take profit: 2028.1067142857144 +2025-03-10 13:02:37,060 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,061 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,062 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,063 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,063 - INFO - CLOSED short at 2059.96 | PnL: -0.05% | $-0.24 +2025-03-10 13:02:37,065 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,066 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,068 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,069 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,069 - INFO - OPENED LONG at 2057.4 | Stop loss: 2047.0943428571431 | Take profit: 2088.2889857142854 +2025-03-10 13:02:37,070 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,071 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,072 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,073 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,074 - INFO - CLOSED long at 2056.28 | PnL: -0.05% | $-0.26 +2025-03-10 13:02:37,074 - INFO - OPENED SHORT at 2056.28 | Stop loss: 2066.5800571428576 | Take profit: 2025.4078142857145 +2025-03-10 13:02:37,075 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,076 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,076 - INFO - CLOSED short at 2055.6 | PnL: 0.03% | $-0.11 +2025-03-10 13:02:37,077 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,079 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,081 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,081 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,083 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,084 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,085 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,087 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,087 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,088 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,090 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,090 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,093 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,094 - INFO - OPENED LONG at 2061.5 | Stop loss: 2051.173842857143 | Take profit: 2092.4504857142856 +2025-03-10 13:02:37,095 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,097 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,097 - INFO - CLOSED long at 2061.6 | PnL: 0.00% | $-0.16 +2025-03-10 13:02:37,098 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,099 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,100 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.974842857143 | Take profit: 2092.247485714286 +2025-03-10 13:02:37,101 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,102 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,103 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,104 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,105 - INFO - CLOSED long at 2063.4 | PnL: 0.10% | $0.00 +2025-03-10 13:02:37,105 - INFO - OPENED SHORT at 2063.4 | Stop loss: 2073.7356571428572 | Take profit: 2032.4210142857144 +2025-03-10 13:02:37,106 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,106 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,108 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,108 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,110 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,111 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,112 - INFO - CLOSED short at 2063.9 | PnL: -0.02% | $-0.21 +2025-03-10 13:02:37,112 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.561842857143 | Take profit: 2094.8864857142858 +2025-03-10 13:02:37,112 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,113 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,116 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,116 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,117 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,118 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,119 - INFO - CLOSED long at 2066.34 | PnL: 0.12% | $0.03 +2025-03-10 13:02:37,119 - INFO - OPENED SHORT at 2066.34 | Stop loss: 2076.690357142857 | Take profit: 2035.3169142857143 +2025-03-10 13:02:37,120 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,122 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,123 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,123 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,124 - INFO - CLOSED short at 2067.33 | PnL: -0.05% | $-0.24 +2025-03-10 13:02:37,124 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.974692857143 | Take profit: 2098.3679357142855 +2025-03-10 13:02:37,124 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,125 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,128 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,129 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,129 - INFO - CLOSED long at 2065.69 | PnL: -0.08% | $-0.30 +2025-03-10 13:02:37,129 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.037107142857 | Take profit: 2034.6766642857144 +2025-03-10 13:02:37,130 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,131 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,132 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,133 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,134 - INFO - CLOSED short at 2072.0 | PnL: -0.31% | $-0.67 +2025-03-10 13:02:37,134 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,137 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,138 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,139 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,140 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,141 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,141 - INFO - OPENED LONG at 2075.01 | Stop loss: 2064.616292857143 | Take profit: 2106.163135714286 +2025-03-10 13:02:37,143 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,145 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,146 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,147 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,147 - INFO - CLOSED long at 2071.04 | PnL: -0.19% | $-0.47 +2025-03-10 13:02:37,147 - INFO - OPENED SHORT at 2071.04 | Stop loss: 2081.413857142857 | Take profit: 2039.9464142857141 +2025-03-10 13:02:37,149 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,149 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,151 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,152 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,152 - INFO - CLOSED short at 2071.6 | PnL: -0.03% | $-0.21 +2025-03-10 13:02:37,153 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,154 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,160 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,161 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,162 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,162 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,163 - INFO - OPENED SHORT at 2068.15 | Stop loss: 2078.5094071428575 | Take profit: 2037.0997642857144 +2025-03-10 13:02:37,164 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,165 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,167 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,168 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,170 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,170 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,171 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,172 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,173 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,175 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,175 - INFO - CLOSED short at 2068.79 | PnL: -0.03% | $-0.21 +2025-03-10 13:02:37,176 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,177 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,177 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6063928571425 | Take profit: 2104.1128357142857 +2025-03-10 13:02:37,180 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,181 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,182 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,182 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,183 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,185 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,185 - INFO - CLOSED long at 2067.33 | PnL: -0.27% | $-0.60 +2025-03-10 13:02:37,185 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.685307142857 | Take profit: 2036.292064285714 +2025-03-10 13:02:37,187 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,188 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,191 - INFO - CLOSED short at 2066.38 | PnL: 0.05% | $-0.09 +2025-03-10 13:02:37,192 - INFO - OPENED LONG at 2066.38 | Stop loss: 2056.029442857143 | Take profit: 2097.403685714286 +2025-03-10 13:02:37,192 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,194 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,194 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,196 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,201 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,202 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,203 - INFO - CLOSED long at 2063.95 | PnL: -0.12% | $-0.35 +2025-03-10 13:02:37,203 - INFO - OPENED SHORT at 2063.95 | Stop loss: 2074.288407142857 | Take profit: 2032.962764285714 +2025-03-10 13:02:37,204 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,205 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,206 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,207 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,208 - INFO - CLOSED short at 2064.5 | PnL: -0.03% | $-0.20 +2025-03-10 13:02:37,209 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,210 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,210 - INFO - OPENED LONG at 2065.3 | Stop loss: 2054.954842857143 | Take profit: 2096.307485714286 +2025-03-10 13:02:37,211 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,212 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,214 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,215 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,215 - INFO - CLOSED long at 2064.31 | PnL: -0.05% | $-0.23 +2025-03-10 13:02:37,216 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,218 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,218 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,219 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,220 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,221 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,222 - INFO - OPENED SHORT at 2065.29 | Stop loss: 2075.635107142857 | Take profit: 2034.2826642857144 +2025-03-10 13:02:37,223 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,224 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,225 - INFO - CLOSED short at 2065.31 | PnL: -0.00% | $-0.16 +2025-03-10 13:02:37,225 - INFO - OPENED LONG at 2065.31 | Stop loss: 2054.9647928571426 | Take profit: 2096.3176357142856 +2025-03-10 13:02:37,227 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,228 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,228 - INFO - CLOSED long at 2066.8 | PnL: 0.07% | $-0.04 +2025-03-10 13:02:37,229 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,230 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,231 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,232 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,233 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.228392857143 | Take profit: 2099.6468357142858 +2025-03-10 13:02:37,233 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,234 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,235 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,236 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,237 - INFO - CLOSED long at 2070.2 | PnL: 0.08% | $-0.03 +2025-03-10 13:02:37,238 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,239 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,240 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,241 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,243 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,245 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,245 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.322892857143 | Take profit: 2100.763335714286 +2025-03-10 13:02:37,246 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,247 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,247 - INFO - CLOSED long at 2070.7 | PnL: 0.05% | $-0.08 +2025-03-10 13:02:37,247 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.072157142857 | Take profit: 2039.611514285714 +2025-03-10 13:02:37,249 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,250 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,250 - INFO - CLOSED short at 2070.8 | PnL: -0.00% | $-0.17 +2025-03-10 13:02:37,252 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,253 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,253 - INFO - OPENED LONG at 2070.35 | Stop loss: 2059.979592857143 | Take profit: 2101.4332357142857 +2025-03-10 13:02:37,255 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,256 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,257 - INFO - CLOSED long at 2070.61 | PnL: 0.01% | $-0.14 +2025-03-10 13:02:37,257 - INFO - OPENED SHORT at 2070.61 | Stop loss: 2080.981707142857 | Take profit: 2039.5228642857146 +2025-03-10 13:02:37,258 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,258 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,259 - INFO - CLOSED short at 2071.99 | PnL: -0.07% | $-0.26 +2025-03-10 13:02:37,259 - INFO - OPENED LONG at 2071.99 | Stop loss: 2061.6113928571426 | Take profit: 2103.0978357142853 +2025-03-10 13:02:37,261 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,262 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,262 - INFO - CLOSED long at 2068.19 | PnL: -0.18% | $-0.44 +2025-03-10 13:02:37,264 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,265 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,265 - INFO - OPENED LONG at 2068.67 | Stop loss: 2058.307992857143 | Take profit: 2099.728035714286 +2025-03-10 13:02:37,266 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,267 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,268 - INFO - CLOSED long at 2070.67 | PnL: 0.10% | $-0.01 +2025-03-10 13:02:37,269 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,270 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,272 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,272 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,273 - INFO - OPENED SHORT at 2071.61 | Stop loss: 2081.986707142857 | Take profit: 2040.5078642857145 +2025-03-10 13:02:37,274 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,275 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,276 - INFO - CLOSED short at 2074.37 | PnL: -0.13% | $-0.36 +2025-03-10 13:02:37,276 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.9794928571428 | Take profit: 2105.513535714286 +2025-03-10 13:02:37,278 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,278 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,279 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,280 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,282 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,284 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,285 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,286 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,287 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,288 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,288 - INFO - CLOSED long at 2075.32 | PnL: 0.05% | $-0.08 +2025-03-10 13:02:37,288 - INFO - OPENED SHORT at 2075.32 | Stop loss: 2085.7152571428574 | Take profit: 2044.1622142857143 +2025-03-10 13:02:37,290 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,291 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,293 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,294 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,295 - INFO - CLOSED short at 2076.9 | PnL: -0.08% | $-0.27 +2025-03-10 13:02:37,296 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,296 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,298 - INFO - OPENED SHORT at 2075.61 | Stop loss: 2086.006707142857 | Take profit: 2044.4478642857146 +2025-03-10 13:02:37,299 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,300 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,301 - INFO - CLOSED short at 2074.0 | PnL: 0.08% | $-0.03 +2025-03-10 13:02:37,301 - INFO - OPENED LONG at 2074.0 | Stop loss: 2063.611342857143 | Take profit: 2105.137985714286 +2025-03-10 13:02:37,303 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,303 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,304 - INFO - CLOSED long at 2072.09 | PnL: -0.09% | $-0.30 +2025-03-10 13:02:37,305 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,307 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,307 - INFO - OPENED SHORT at 2069.97 | Stop loss: 2080.3385071428565 | Take profit: 2038.8924642857141 +2025-03-10 13:02:37,309 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,310 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,311 - INFO - CLOSED short at 2067.7 | PnL: 0.11% | $0.01 +2025-03-10 13:02:37,312 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,313 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,313 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.353657142857 | Take profit: 2035.9670142857144 +2025-03-10 13:02:37,314 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,315 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,316 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,318 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,318 - INFO - CLOSED short at 2066.4 | PnL: 0.03% | $-0.11 +2025-03-10 13:02:37,319 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.049342857143 | Take profit: 2097.423985714286 +2025-03-10 13:02:37,319 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,321 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,322 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,323 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,325 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,326 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,326 - INFO - CLOSED long at 2065.45 | PnL: -0.05% | $-0.22 +2025-03-10 13:02:37,328 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,328 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,329 - INFO - OPENED SHORT at 2068.1 | Stop loss: 2078.459157142857 | Take profit: 2037.0505142857141 +2025-03-10 13:02:37,331 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,331 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,333 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,334 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,336 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,337 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,337 - INFO - CLOSED short at 2070.1 | PnL: -0.10% | $-0.30 +2025-03-10 13:02:37,339 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,340 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,342 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,343 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,344 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,345 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,347 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,348 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,349 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,350 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,352 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,353 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,355 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,357 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,357 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.725607142857 | Take profit: 2032.4111642857142 +2025-03-10 13:02:37,358 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,359 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,361 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,362 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,363 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,364 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,365 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,368 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,369 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,370 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,372 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,373 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,374 - INFO - CLOSED short at 2064.5 | PnL: -0.05% | $-0.23 +2025-03-10 13:02:37,374 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.1588428571426 | Take profit: 2095.4954857142857 +2025-03-10 13:02:37,375 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,376 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,376 - INFO - CLOSED long at 2066.33 | PnL: 0.09% | $-0.02 +2025-03-10 13:02:37,377 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,378 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,379 - INFO - OPENED LONG at 2063.01 | Stop loss: 2052.676292857143 | Take profit: 2093.983135714286 +2025-03-10 13:02:37,380 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,381 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,381 - INFO - CLOSED long at 2060.7 | PnL: -0.11% | $-0.32 +2025-03-10 13:02:37,383 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,384 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,385 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,386 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,388 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,389 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,390 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,391 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,393 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,394 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,394 - INFO - OPENED SHORT at 2056.77 | Stop loss: 2067.0725071428574 | Take profit: 2025.8904642857142 +2025-03-10 13:02:37,396 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,397 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,397 - INFO - CLOSED short at 2053.01 | PnL: 0.18% | $0.13 +2025-03-10 13:02:37,399 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,400 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,401 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,402 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,403 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.2338428571427 | Take profit: 2080.2704857142858 +2025-03-10 13:02:37,403 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,405 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,406 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,408 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,409 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,410 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,412 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,413 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,414 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,415 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,415 - INFO - CLOSED long at 2057.89 | PnL: 0.41% | $0.47 +2025-03-10 13:02:37,417 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,417 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,418 - INFO - OPENED SHORT at 2062.83 | Stop loss: 2073.162807142857 | Take profit: 2031.8595642857142 +2025-03-10 13:02:37,420 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,420 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,421 - INFO - CLOSED short at 2063.9 | PnL: -0.05% | $-0.23 +2025-03-10 13:02:37,422 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,423 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,424 - INFO - OPENED LONG at 2065.1 | Stop loss: 2054.755842857143 | Take profit: 2096.1044857142856 +2025-03-10 13:02:37,426 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,427 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,427 - INFO - CLOSED long at 2062.43 | PnL: -0.13% | $-0.35 +2025-03-10 13:02:37,429 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,430 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,431 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,432 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,434 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,435 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,435 - INFO - OPENED SHORT at 2068.33 | Stop loss: 2078.6903071428574 | Take profit: 2037.2770642857142 +2025-03-10 13:02:37,436 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,437 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,439 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,440 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,441 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,443 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,444 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,445 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,446 - INFO - CLOSED short at 2061.21 | PnL: 0.34% | $0.37 +2025-03-10 13:02:37,447 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,448 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,449 - INFO - OPENED SHORT at 2059.9 | Stop loss: 2070.218157142857 | Take profit: 2028.9735142857144 +2025-03-10 13:02:37,449 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,451 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,451 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,452 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,454 - INFO - CLOSED short at 2061.84 | PnL: -0.09% | $-0.30 +2025-03-10 13:02:37,454 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,456 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,457 - INFO - OPENED SHORT at 2062.54 | Stop loss: 2072.8713571428575 | Take profit: 2031.5739142857142 +2025-03-10 13:02:37,457 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,459 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,460 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,460 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,462 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,463 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,464 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,465 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,467 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,468 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,468 - INFO - CLOSED short at 2069.81 | PnL: -0.35% | $-0.68 +2025-03-10 13:02:37,469 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,470 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,471 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,473 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,474 - INFO - OPENED SHORT at 2073.49 | Stop loss: 2083.876107142857 | Take profit: 2042.359664285714 +2025-03-10 13:02:37,474 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,476 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,476 - INFO - CLOSED short at 2074.05 | PnL: -0.03% | $-0.19 +2025-03-10 13:02:37,477 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,479 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,480 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,480 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,482 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,482 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,484 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,485 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,486 - INFO - OPENED LONG at 2074.9 | Stop loss: 2064.506842857143 | Take profit: 2106.0514857142857 +2025-03-10 13:02:37,487 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,489 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,490 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,491 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,492 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,493 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,495 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,495 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,499 - INFO - CLOSED long at 2090.49 | PnL: 0.75% | $0.97 +2025-03-10 13:02:37,500 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,501 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,503 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,504 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,504 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.372157142857 | Take profit: 2098.711514285714 +2025-03-10 13:02:37,505 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,506 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,510 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,511 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,512 - INFO - CLOSED short at 2131.78 | PnL: -0.05% | $-0.23 +2025-03-10 13:02:37,512 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.102442857143 | Take profit: 2163.7846857142863 +2025-03-10 13:02:37,512 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,514 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,514 - INFO - CLOSED long at 2133.95 | PnL: 0.10% | $0.00 +2025-03-10 13:02:37,514 - INFO - OPENED SHORT at 2133.95 | Stop loss: 2144.638407142857 | Take profit: 2101.9127642857143 +2025-03-10 13:02:37,517 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,517 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,518 - INFO - CLOSED short at 2137.59 | PnL: -0.17% | $-0.41 +2025-03-10 13:02:37,518 - INFO - OPENED LONG at 2137.59 | Stop loss: 2126.883392857143 | Take profit: 2169.6818357142856 +2025-03-10 13:02:37,519 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,520 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,521 - INFO - CLOSED long at 2141.41 | PnL: 0.18% | $0.12 +2025-03-10 13:02:37,523 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,524 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,525 - INFO - OPENED LONG at 2141.3 | Stop loss: 2130.574842857143 | Take profit: 2173.447485714286 +2025-03-10 13:02:37,526 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,527 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,532 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,533 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,534 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,535 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,537 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,538 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,539 - INFO - CLOSED long at 2126.99 | PnL: -0.67% | $-1.16 +2025-03-10 13:02:37,539 - INFO - OPENED SHORT at 2126.99 | Stop loss: 2137.6436071428566 | Take profit: 2095.057164285714 +2025-03-10 13:02:37,540 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,540 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,542 - INFO - CLOSED short at 2127.3 | PnL: -0.01% | $-0.17 +2025-03-10 13:02:37,542 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.644842857143 | Take profit: 2159.2374857142863 +2025-03-10 13:02:37,544 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,544 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,545 - INFO - CLOSED long at 2128.69 | PnL: 0.07% | $-0.05 +2025-03-10 13:02:37,545 - INFO - OPENED SHORT at 2128.69 | Stop loss: 2139.352107142857 | Take profit: 2096.731664285714 +2025-03-10 13:02:37,547 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,548 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,548 - INFO - CLOSED short at 2121.09 | PnL: 0.36% | $0.38 +2025-03-10 13:02:37,549 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,551 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,552 - INFO - OPENED SHORT at 2120.15 | Stop loss: 2130.769407142857 | Take profit: 2088.3197642857144 +2025-03-10 13:02:37,553 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,554 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,555 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,556 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,557 - INFO - CLOSED short at 2119.93 | PnL: 0.01% | $-0.13 +2025-03-10 13:02:37,558 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,558 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,560 - INFO - OPENED LONG at 2121.4 | Stop loss: 2110.774342857143 | Take profit: 2153.248985714286 +2025-03-10 13:02:37,562 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,562 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,567 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,568 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,568 - INFO - CLOSED long at 2119.14 | PnL: -0.11% | $-0.31 +2025-03-10 13:02:37,569 - INFO - OPENED SHORT at 2119.14 | Stop loss: 2129.7543571428573 | Take profit: 2087.324914285714 +2025-03-10 13:02:37,570 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,570 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,572 - INFO - CLOSED short at 2119.07 | PnL: 0.00% | $-0.14 +2025-03-10 13:02:37,573 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,574 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,576 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,577 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,578 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,579 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,581 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,581 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,582 - INFO - OPENED LONG at 2109.05 | Stop loss: 2098.486092857143 | Take profit: 2140.7137357142856 +2025-03-10 13:02:37,584 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,585 - INFO - CLOSED long at 2112.09 | PnL: 0.14% | $0.07 +2025-03-10 13:02:37,586 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,586 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,588 - INFO - OPENED SHORT at 2112.95 | Stop loss: 2123.533407142857 | Take profit: 2081.2277642857143 +2025-03-10 13:02:37,589 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,590 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,592 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,593 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,594 - INFO - CLOSED short at 2113.24 | PnL: -0.01% | $-0.17 +2025-03-10 13:02:37,594 - INFO - OPENED LONG at 2113.24 | Stop loss: 2102.655142857143 | Take profit: 2144.9665857142854 +2025-03-10 13:02:37,595 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,596 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,597 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,598 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,599 - INFO - CLOSED long at 2120.81 | PnL: 0.36% | $0.38 +2025-03-10 13:02:37,599 - INFO - OPENED SHORT at 2120.81 | Stop loss: 2131.432707142857 | Take profit: 2088.9698642857143 +2025-03-10 13:02:37,600 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,601 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,601 - INFO - CLOSED short at 2116.48 | PnL: 0.20% | $0.15 +2025-03-10 13:02:37,602 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,603 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,604 - INFO - OPENED SHORT at 2114.8 | Stop loss: 2125.3926571428574 | Take profit: 2083.0500142857145 +2025-03-10 13:02:37,606 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,607 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,608 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,609 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,611 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,611 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,612 - INFO - CLOSED short at 2106.49 | PnL: 0.39% | $0.43 +2025-03-10 13:02:37,612 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.938892857143 | Take profit: 2138.1153357142853 +2025-03-10 13:02:37,614 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,614 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,615 - INFO - CLOSED long at 2108.06 | PnL: 0.07% | $-0.04 +2025-03-10 13:02:37,615 - INFO - OPENED SHORT at 2108.06 | Stop loss: 2118.6189571428567 | Take profit: 2076.411114285714 +2025-03-10 13:02:37,616 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,617 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,618 - INFO - CLOSED short at 2103.33 | PnL: 0.22% | $0.19 +2025-03-10 13:02:37,619 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,619 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,621 - INFO - OPENED SHORT at 2100.5 | Stop loss: 2111.021157142857 | Take profit: 2068.9645142857144 +2025-03-10 13:02:37,622 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,622 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,624 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,625 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,626 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,628 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,629 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,631 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,632 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,632 - INFO - CLOSED short at 2102.29 | PnL: -0.09% | $-0.28 +2025-03-10 13:02:37,634 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,635 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,636 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,637 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,638 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,639 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,641 - INFO - OPENED LONG at 2100.69 | Stop loss: 2090.1678928571428 | Take profit: 2132.2283357142855 +2025-03-10 13:02:37,642 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,643 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,644 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,645 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,646 - INFO - CLOSED long at 2106.39 | PnL: 0.27% | $0.26 +2025-03-10 13:02:37,646 - INFO - OPENED SHORT at 2106.39 | Stop loss: 2116.940607142857 | Take profit: 2074.7661642857142 +2025-03-10 13:02:37,647 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,648 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,649 - INFO - CLOSED short at 2100.74 | PnL: 0.27% | $0.25 +2025-03-10 13:02:37,649 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,651 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,652 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,655 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,656 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,657 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,658 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,659 - INFO - OPENED SHORT at 2099.59 | Stop loss: 2110.1066071428572 | Take profit: 2068.0681642857144 +2025-03-10 13:02:37,660 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,661 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,664 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,666 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,666 - INFO - CLOSED short at 2098.39 | PnL: 0.06% | $-0.06 +2025-03-10 13:02:37,666 - INFO - OPENED LONG at 2098.39 | Stop loss: 2087.8793928571426 | Take profit: 2129.8938357142856 +2025-03-10 13:02:37,668 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,669 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,670 - INFO - CLOSED long at 2095.29 | PnL: -0.15% | $-0.37 +2025-03-10 13:02:37,671 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,672 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,674 - INFO - OPENED SHORT at 2093.46 | Stop loss: 2103.945957142857 | Take profit: 2062.0301142857143 +2025-03-10 13:02:37,675 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,676 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,678 - INFO - CLOSED short at 2093.33 | PnL: 0.01% | $-0.14 +2025-03-10 13:02:37,679 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,680 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,682 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,683 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,684 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,686 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,687 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.227742857143 | Take profit: 2126.1687857142856 +2025-03-10 13:02:37,689 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,690 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,691 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,693 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,694 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,695 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,696 - INFO - CLOSED long at 2083.28 | PnL: -0.55% | $-0.96 +2025-03-10 13:02:37,696 - INFO - OPENED SHORT at 2083.28 | Stop loss: 2093.7150571428574 | Take profit: 2052.0028142857145 +2025-03-10 13:02:37,698 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,700 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,701 - INFO - CLOSED short at 2088.44 | PnL: -0.25% | $-0.51 +2025-03-10 13:02:37,702 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,704 - INFO - OPENED LONG at 2083.97 | Stop loss: 2073.5314928571424 | Take profit: 2115.2575357142855 +2025-03-10 13:02:37,706 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,708 - INFO - CLOSED long at 2085.3 | PnL: 0.06% | $-0.05 +2025-03-10 13:02:37,709 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,711 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,713 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,714 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,716 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,717 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,719 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,720 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,722 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,723 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,724 - INFO - OPENED SHORT at 2083.41 | Stop loss: 2093.845707142857 | Take profit: 2052.130864285714 +2025-03-10 13:02:37,726 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,728 - INFO - CLOSED short at 2085.09 | PnL: -0.08% | $-0.26 +2025-03-10 13:02:37,729 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,731 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,731 - INFO - OPENED SHORT at 2083.59 | Stop loss: 2094.0266071428573 | Take profit: 2052.308164285714 +2025-03-10 13:02:37,733 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,735 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,735 - INFO - CLOSED short at 2086.57 | PnL: -0.14% | $-0.35 +2025-03-10 13:02:37,737 - INFO - OPENED LONG at 2086.57 | Stop loss: 2076.118492857143 | Take profit: 2117.8965357142856 +2025-03-10 13:02:37,738 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,741 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,743 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,744 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,746 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,749 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,751 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,753 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,755 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,755 - INFO - CLOSED long at 2088.66 | PnL: 0.10% | $0.00 +2025-03-10 13:02:37,756 - INFO - OPENED SHORT at 2088.66 | Stop loss: 2099.121957142857 | Take profit: 2057.302114285714 +2025-03-10 13:02:37,759 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,761 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,762 - INFO - CLOSED short at 2088.32 | PnL: 0.02% | $-0.12 +2025-03-10 13:02:37,763 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,765 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,766 - INFO - OPENED SHORT at 2088.1 | Stop loss: 2098.559157142857 | Take profit: 2056.750514285714 +2025-03-10 13:02:37,767 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,769 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,771 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,773 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,773 - INFO - CLOSED short at 2087.0 | PnL: 0.05% | $-0.07 +2025-03-10 13:02:37,773 - INFO - OPENED LONG at 2087.0 | Stop loss: 2076.546342857143 | Take profit: 2118.3329857142858 +2025-03-10 13:02:37,775 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,777 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,779 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,781 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,786 - INFO - CLOSED long at 2087.78 | PnL: 0.04% | $-0.09 +2025-03-10 13:02:37,788 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,790 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,790 - INFO - OPENED SHORT at 2086.81 | Stop loss: 2097.2627071428574 | Take profit: 2055.479864285714 +2025-03-10 13:02:37,792 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,793 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,794 - INFO - CLOSED short at 2089.79 | PnL: -0.14% | $-0.35 +2025-03-10 13:02:37,795 - INFO - OPENED LONG at 2089.79 | Stop loss: 2079.322392857143 | Take profit: 2121.164835714286 +2025-03-10 13:02:37,796 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,798 - INFO - CLOSED long at 2085.67 | PnL: -0.20% | $-0.43 +2025-03-10 13:02:37,799 - INFO - OPENED SHORT at 2085.67 | Stop loss: 2096.117007142857 | Take profit: 2054.3569642857146 +2025-03-10 13:02:37,801 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,803 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,805 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,806 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,807 - INFO - CLOSED short at 2091.05 | PnL: -0.26% | $-0.51 +2025-03-10 13:02:37,807 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.576092857143 | Take profit: 2122.4437357142856 +2025-03-10 13:02:37,809 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,810 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,811 - INFO - CLOSED long at 2091.05 | PnL: 0.00% | $-0.14 +2025-03-10 13:02:37,811 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.5239071428573 | Take profit: 2059.6562642857148 +2025-03-10 13:02:37,813 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,814 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,817 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,818 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,821 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,822 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,823 - INFO - CLOSED short at 2097.8 | PnL: -0.32% | $-0.60 +2025-03-10 13:02:37,825 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,827 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,833 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,835 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,835 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.166857142857 | Take profit: 2070.087414285714 +2025-03-10 13:02:37,837 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,838 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,840 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,841 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,842 - INFO - CLOSED short at 2098.49 | PnL: 0.15% | $0.07 +2025-03-10 13:02:37,842 - INFO - OPENED LONG at 2098.49 | Stop loss: 2087.9788928571425 | Take profit: 2129.995335714286 +2025-03-10 13:02:37,845 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,846 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,847 - INFO - CLOSED long at 2099.89 | PnL: 0.07% | $-0.05 +2025-03-10 13:02:37,848 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,849 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,850 - INFO - OPENED SHORT at 2100.89 | Stop loss: 2111.413107142857 | Take profit: 2069.348664285714 +2025-03-10 13:02:37,851 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,852 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,854 - INFO - CLOSED short at 2099.73 | PnL: 0.06% | $-0.06 +2025-03-10 13:02:37,855 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,856 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,857 - INFO - OPENED LONG at 2106.15 | Stop loss: 2095.600592857143 | Take profit: 2137.7702357142857 +2025-03-10 13:02:37,858 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,860 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,861 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:37,862 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:37,864 - INFO - Trade Analysis: Win Rate=7.1% in uptrends, 0.0% in downtrends | Avg Win=$0.20, Avg Loss=$-0.24 +2025-03-10 13:02:37,865 - INFO - Episode 0: Reward=-166.89, Balance=$70.55, Win Rate=15.1%, Trades=166, Episode PnL=$-21.40, Total PnL=$-29.45, Max Drawdown=29.4%, Pred Accuracy=97.9% +2025-03-10 13:02:37,866 - ERROR - Error in episode 0: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:02:37,867 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1763, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:02:37,898 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 13:02:38,080 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,081 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,082 - INFO - OPENED SHORT at 2049.49 | Stop loss: 2059.756107142857 | Take profit: 2018.719664285714 +2025-03-10 13:02:38,083 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,084 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,084 - INFO - CLOSED short at 2050.2 | PnL: -0.03% | $-0.27 +2025-03-10 13:02:38,086 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,088 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,093 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,096 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,097 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,098 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,099 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,100 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,101 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,103 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,104 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,104 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,105 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,107 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,108 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,109 - INFO - OPENED SHORT at 2047.4 | Stop loss: 2057.6556571428573 | Take profit: 2016.6610142857144 +2025-03-10 13:02:38,110 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,111 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,112 - INFO - CLOSED short at 2047.2 | PnL: 0.01% | $-0.18 +2025-03-10 13:02:38,112 - INFO - OPENED LONG at 2047.2 | Stop loss: 2036.9453428571428 | Take profit: 2077.935985714286 +2025-03-10 13:02:38,113 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,115 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,116 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,117 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,117 - INFO - CLOSED long at 2045.99 | PnL: -0.06% | $-0.31 +2025-03-10 13:02:38,118 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,119 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,120 - INFO - OPENED LONG at 2045.79 | Stop loss: 2035.5423928571429 | Take profit: 2076.5048357142855 +2025-03-10 13:02:38,122 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,123 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,123 - INFO - CLOSED long at 2048.13 | PnL: 0.11% | $0.03 +2025-03-10 13:02:38,123 - INFO - OPENED SHORT at 2048.13 | Stop loss: 2058.3893071428574 | Take profit: 2017.3800642857143 +2025-03-10 13:02:38,124 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,125 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,127 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,128 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,129 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,131 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,132 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,132 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,134 - INFO - CLOSED short at 2050.24 | PnL: -0.10% | $-0.40 +2025-03-10 13:02:38,134 - INFO - OPENED LONG at 2050.24 | Stop loss: 2039.9701428571425 | Take profit: 2081.0215857142853 +2025-03-10 13:02:38,135 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,135 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,136 - INFO - CLOSED long at 2049.89 | PnL: -0.02% | $-0.23 +2025-03-10 13:02:38,136 - INFO - OPENED SHORT at 2049.89 | Stop loss: 2060.158107142857 | Take profit: 2019.1136642857143 +2025-03-10 13:02:38,138 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,139 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,139 - INFO - CLOSED short at 2051.11 | PnL: -0.06% | $-0.31 +2025-03-10 13:02:38,139 - INFO - OPENED LONG at 2051.11 | Stop loss: 2040.835792857143 | Take profit: 2081.9046357142856 +2025-03-10 13:02:38,141 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,142 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,142 - INFO - CLOSED long at 2053.26 | PnL: 0.10% | $0.01 +2025-03-10 13:02:38,143 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,144 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,146 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,147 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,147 - INFO - OPENED LONG at 2052.3 | Stop loss: 2042.0198428571432 | Take profit: 2083.112485714286 +2025-03-10 13:02:38,148 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,149 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,153 - INFO - CLOSED long at 2055.69 | PnL: 0.17% | $0.13 +2025-03-10 13:02:38,154 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,155 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,157 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,158 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,158 - INFO - OPENED SHORT at 2056.89 | Stop loss: 2067.1931071428567 | Take profit: 2026.008664285714 +2025-03-10 13:02:38,159 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,160 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,161 - INFO - CLOSED short at 2058.39 | PnL: -0.07% | $-0.34 +2025-03-10 13:02:38,161 - INFO - OPENED LONG at 2058.39 | Stop loss: 2048.0793928571425 | Take profit: 2089.2938357142857 +2025-03-10 13:02:38,162 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,163 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,164 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,166 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,166 - INFO - CLOSED long at 2059.7 | PnL: 0.06% | $-0.07 +2025-03-10 13:02:38,166 - INFO - OPENED SHORT at 2059.7 | Stop loss: 2070.0171571428573 | Take profit: 2028.776514285714 +2025-03-10 13:02:38,168 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,169 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,169 - INFO - CLOSED short at 2061.49 | PnL: -0.09% | $-0.36 +2025-03-10 13:02:38,170 - INFO - OPENED LONG at 2061.49 | Stop loss: 2051.163892857143 | Take profit: 2092.4403357142855 +2025-03-10 13:02:38,171 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,172 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,173 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,175 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,175 - INFO - CLOSED long at 2064.61 | PnL: 0.15% | $0.10 +2025-03-10 13:02:38,176 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,177 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,178 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,180 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,181 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,182 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,182 - INFO - OPENED LONG at 2064.69 | Stop loss: 2054.347892857143 | Take profit: 2095.6883357142856 +2025-03-10 13:02:38,183 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,184 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,185 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,187 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,188 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,189 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,189 - INFO - CLOSED long at 2058.3 | PnL: -0.31% | $-0.79 +2025-03-10 13:02:38,190 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,192 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,193 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,194 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,195 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,196 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,198 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,199 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,200 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,201 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,201 - INFO - OPENED SHORT at 2059.49 | Stop loss: 2069.806107142857 | Take profit: 2028.569664285714 +2025-03-10 13:02:38,204 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,205 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,206 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,206 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,209 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,210 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,210 - INFO - CLOSED short at 2057.94 | PnL: 0.08% | $-0.05 +2025-03-10 13:02:38,211 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,211 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,213 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.8007928571428 | Take profit: 2089.0096357142857 +2025-03-10 13:02:38,213 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,214 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,215 - INFO - CLOSED long at 2061.79 | PnL: 0.18% | $0.15 +2025-03-10 13:02:38,216 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,216 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,218 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,219 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,220 - INFO - OPENED LONG at 2064.32 | Stop loss: 2053.979742857143 | Take profit: 2095.312785714286 +2025-03-10 13:02:38,221 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,222 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,222 - INFO - CLOSED long at 2065.86 | PnL: 0.07% | $-0.05 +2025-03-10 13:02:38,224 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,224 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,225 - INFO - OPENED SHORT at 2070.58 | Stop loss: 2080.951557142857 | Take profit: 2039.4933142857142 +2025-03-10 13:02:38,227 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,228 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,229 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,231 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,232 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,233 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,234 - INFO - CLOSED short at 2067.89 | PnL: 0.13% | $0.06 +2025-03-10 13:02:38,234 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,236 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,236 - INFO - OPENED SHORT at 2071.63 | Stop loss: 2082.0068071428573 | Take profit: 2040.5275642857143 +2025-03-10 13:02:38,237 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,238 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,239 - INFO - CLOSED short at 2070.99 | PnL: 0.03% | $-0.13 +2025-03-10 13:02:38,239 - INFO - OPENED LONG at 2070.99 | Stop loss: 2060.6163928571427 | Take profit: 2102.0828357142855 +2025-03-10 13:02:38,240 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,241 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,241 - INFO - CLOSED long at 2069.6 | PnL: -0.07% | $-0.32 +2025-03-10 13:02:38,244 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,245 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,245 - INFO - OPENED SHORT at 2068.65 | Stop loss: 2079.011907142857 | Take profit: 2037.5922642857145 +2025-03-10 13:02:38,246 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,247 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,247 - INFO - CLOSED short at 2068.99 | PnL: -0.02% | $-0.22 +2025-03-10 13:02:38,248 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,249 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,250 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,251 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,255 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,256 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,260 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,261 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,262 - INFO - OPENED SHORT at 2071.44 | Stop loss: 2081.815857142857 | Take profit: 2040.3404142857144 +2025-03-10 13:02:38,263 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,263 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,265 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,266 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,267 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,269 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,269 - INFO - CLOSED short at 2072.91 | PnL: -0.07% | $-0.33 +2025-03-10 13:02:38,270 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,271 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,271 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,273 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,273 - INFO - OPENED SHORT at 2071.38 | Stop loss: 2081.7555571428575 | Take profit: 2040.2813142857144 +2025-03-10 13:02:38,275 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,276 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,277 - INFO - CLOSED short at 2071.41 | PnL: -0.00% | $-0.19 +2025-03-10 13:02:38,277 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,279 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,279 - INFO - OPENED SHORT at 2069.37 | Stop loss: 2079.7355071428574 | Take profit: 2038.301464285714 +2025-03-10 13:02:38,281 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,282 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,283 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,284 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,285 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,286 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,288 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,289 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,290 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,291 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,293 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,294 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,295 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,296 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,297 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,298 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,299 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,300 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,301 - INFO - CLOSED short at 2070.7 | PnL: -0.06% | $-0.31 +2025-03-10 13:02:38,302 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,303 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,304 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,305 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,306 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,307 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,308 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.437342857143 | Take profit: 2099.859985714286 +2025-03-10 13:02:38,308 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,310 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,312 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,313 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,314 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,314 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,316 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,317 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,319 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,319 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,320 - INFO - CLOSED long at 2065.99 | PnL: -0.14% | $-0.45 +2025-03-10 13:02:38,322 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,322 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,323 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,324 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,325 - INFO - OPENED LONG at 2066.29 | Stop loss: 2055.9398928571427 | Take profit: 2097.3123357142854 +2025-03-10 13:02:38,326 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,327 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,328 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,328 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,330 - INFO - CLOSED long at 2066.18 | PnL: -0.01% | $-0.20 +2025-03-10 13:02:38,330 - INFO - OPENED SHORT at 2066.18 | Stop loss: 2076.529557142857 | Take profit: 2035.1593142857141 +2025-03-10 13:02:38,331 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,332 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,333 - INFO - CLOSED short at 2068.76 | PnL: -0.12% | $-0.42 +2025-03-10 13:02:38,333 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,334 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,335 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.263157142857 | Take profit: 2037.8385142857144 +2025-03-10 13:02:38,335 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,338 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,339 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,340 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,342 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,343 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,343 - INFO - CLOSED short at 2069.7 | PnL: -0.04% | $-0.26 +2025-03-10 13:02:38,344 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,345 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,348 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.029342857143 | Take profit: 2101.4839857142856 +2025-03-10 13:02:38,350 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,351 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,352 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,353 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,356 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,357 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,358 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,359 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,359 - INFO - CLOSED long at 2071.36 | PnL: 0.05% | $-0.10 +2025-03-10 13:02:38,360 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,361 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,362 - INFO - OPENED SHORT at 2072.75 | Stop loss: 2083.132407142857 | Take profit: 2041.6307642857143 +2025-03-10 13:02:38,363 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,364 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,365 - INFO - CLOSED short at 2073.11 | PnL: -0.02% | $-0.22 +2025-03-10 13:02:38,365 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.725792857143 | Take profit: 2104.2346357142856 +2025-03-10 13:02:38,366 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,367 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,368 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,369 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,369 - INFO - CLOSED long at 2072.15 | PnL: -0.05% | $-0.27 +2025-03-10 13:02:38,371 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,373 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,373 - INFO - OPENED LONG at 2074.29 | Stop loss: 2063.8998928571427 | Take profit: 2105.4323357142857 +2025-03-10 13:02:38,374 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,375 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,376 - INFO - CLOSED long at 2073.9 | PnL: -0.02% | $-0.22 +2025-03-10 13:02:38,377 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,378 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,379 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,380 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,382 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,383 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,384 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,385 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,386 - INFO - OPENED LONG at 2069.46 | Stop loss: 2059.094042857143 | Take profit: 2100.5298857142857 +2025-03-10 13:02:38,387 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,388 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,389 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,390 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,391 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,392 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,392 - INFO - CLOSED long at 2067.0 | PnL: -0.12% | $-0.41 +2025-03-10 13:02:38,394 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,395 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,396 - INFO - OPENED LONG at 2067.79 | Stop loss: 2057.4323928571425 | Take profit: 2098.834835714286 +2025-03-10 13:02:38,397 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,398 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,399 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,400 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,401 - INFO - CLOSED long at 2066.8 | PnL: -0.05% | $-0.27 +2025-03-10 13:02:38,401 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.152657142857 | Take profit: 2035.7700142857145 +2025-03-10 13:02:38,402 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,403 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,404 - INFO - CLOSED short at 2065.49 | PnL: 0.06% | $-0.07 +2025-03-10 13:02:38,405 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,406 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,406 - INFO - OPENED LONG at 2063.61 | Stop loss: 2053.273292857143 | Take profit: 2094.592135714286 +2025-03-10 13:02:38,407 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,408 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,409 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,410 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,410 - INFO - CLOSED long at 2067.89 | PnL: 0.21% | $0.20 +2025-03-10 13:02:38,412 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,413 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,414 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,415 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,419 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,420 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,421 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,421 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,423 - INFO - OPENED SHORT at 2067.86 | Stop loss: 2078.2179571428574 | Take profit: 2036.8141142857144 +2025-03-10 13:02:38,424 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,426 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,427 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,428 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,428 - INFO - CLOSED short at 2069.2 | PnL: -0.06% | $-0.30 +2025-03-10 13:02:38,430 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,431 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,431 - INFO - OPENED SHORT at 2070.3 | Stop loss: 2080.6701571428575 | Take profit: 2039.2175142857143 +2025-03-10 13:02:38,432 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,433 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,434 - INFO - CLOSED short at 2071.59 | PnL: -0.06% | $-0.30 +2025-03-10 13:02:38,434 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.213392857143 | Take profit: 2102.691835714286 +2025-03-10 13:02:38,435 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,436 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,438 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,439 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,440 - INFO - CLOSED long at 2070.4 | PnL: -0.06% | $-0.29 +2025-03-10 13:02:38,440 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.770657142857 | Take profit: 2039.3160142857146 +2025-03-10 13:02:38,442 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,442 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,443 - INFO - CLOSED short at 2070.73 | PnL: -0.02% | $-0.21 +2025-03-10 13:02:38,444 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,445 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,446 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,447 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,447 - INFO - OPENED SHORT at 2068.69 | Stop loss: 2079.052107142857 | Take profit: 2037.6316642857144 +2025-03-10 13:02:38,448 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,449 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,451 - INFO - CLOSED short at 2067.84 | PnL: 0.04% | $-0.11 +2025-03-10 13:02:38,451 - INFO - OPENED LONG at 2067.84 | Stop loss: 2057.482142857143 | Take profit: 2098.8855857142858 +2025-03-10 13:02:38,452 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,453 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,459 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,460 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,461 - INFO - CLOSED long at 2067.86 | PnL: 0.00% | $-0.18 +2025-03-10 13:02:38,462 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,463 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,464 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,464 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,467 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,467 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,472 - INFO - OPENED LONG at 2065.28 | Stop loss: 2054.934942857143 | Take profit: 2096.287185714286 +2025-03-10 13:02:38,473 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,474 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,475 - INFO - CLOSED long at 2066.39 | PnL: 0.05% | $-0.08 +2025-03-10 13:02:38,476 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,476 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,478 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,479 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,480 - INFO - OPENED SHORT at 2070.04 | Stop loss: 2080.408857142857 | Take profit: 2038.9614142857142 +2025-03-10 13:02:38,481 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,482 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,483 - INFO - CLOSED short at 2067.8 | PnL: 0.11% | $0.01 +2025-03-10 13:02:38,483 - INFO - OPENED LONG at 2067.8 | Stop loss: 2057.442342857143 | Take profit: 2098.844985714286 +2025-03-10 13:02:38,485 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,485 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,487 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,488 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,489 - INFO - CLOSED long at 2065.69 | PnL: -0.10% | $-0.37 +2025-03-10 13:02:38,491 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,492 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,493 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,494 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,495 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,496 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,496 - INFO - OPENED LONG at 2065.83 | Stop loss: 2055.4821928571428 | Take profit: 2096.845435714286 +2025-03-10 13:02:38,498 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,499 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,501 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,502 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,502 - INFO - CLOSED long at 2065.26 | PnL: -0.03% | $-0.23 +2025-03-10 13:02:38,502 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.6049571428575 | Take profit: 2034.2531142857144 +2025-03-10 13:02:38,504 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,505 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,506 - INFO - CLOSED short at 2062.89 | PnL: 0.11% | $0.03 +2025-03-10 13:02:38,506 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.556892857143 | Take profit: 2093.8613357142854 +2025-03-10 13:02:38,507 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,508 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,509 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,510 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,510 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,513 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,513 - INFO - CLOSED long at 2059.59 | PnL: -0.16% | $-0.47 +2025-03-10 13:02:38,514 - INFO - OPENED SHORT at 2059.59 | Stop loss: 2069.9066071428574 | Take profit: 2028.6681642857145 +2025-03-10 13:02:38,515 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,516 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,518 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,519 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,520 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,521 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,521 - INFO - CLOSED short at 2064.96 | PnL: -0.26% | $-0.65 +2025-03-10 13:02:38,521 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.616542857143 | Take profit: 2095.9623857142856 +2025-03-10 13:02:38,523 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,524 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,524 - INFO - CLOSED long at 2066.24 | PnL: 0.06% | $-0.07 +2025-03-10 13:02:38,525 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,527 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,527 - INFO - OPENED SHORT at 2067.1 | Stop loss: 2077.454157142857 | Take profit: 2036.0655142857142 +2025-03-10 13:02:38,528 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,529 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,531 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,532 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,534 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,534 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,535 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,536 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,539 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,540 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,541 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,542 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,543 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,544 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,545 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,547 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,548 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,549 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,550 - INFO - CLOSED short at 2061.6 | PnL: 0.27% | $0.30 +2025-03-10 13:02:38,550 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.273342857143 | Take profit: 2092.551985714286 +2025-03-10 13:02:38,551 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,551 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,553 - INFO - CLOSED long at 2060.9 | PnL: -0.03% | $-0.24 +2025-03-10 13:02:38,554 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,555 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,555 - INFO - OPENED SHORT at 2060.65 | Stop loss: 2070.971907142857 | Take profit: 2029.7122642857146 +2025-03-10 13:02:38,556 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,557 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,558 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,559 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,560 - INFO - CLOSED short at 2059.3 | PnL: 0.07% | $-0.06 +2025-03-10 13:02:38,560 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,562 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,563 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,564 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,566 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,567 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,567 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,570 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,570 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,571 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,572 - INFO - OPENED LONG at 2060.91 | Stop loss: 2050.586792857143 | Take profit: 2091.8516357142853 +2025-03-10 13:02:38,572 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,574 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,575 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,576 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,577 - INFO - CLOSED long at 2061.13 | PnL: 0.01% | $-0.16 +2025-03-10 13:02:38,577 - INFO - OPENED SHORT at 2061.13 | Stop loss: 2071.4543071428575 | Take profit: 2030.1850642857146 +2025-03-10 13:02:38,578 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,578 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,580 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,581 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,583 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,583 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,586 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,586 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,588 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,589 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,590 - INFO - CLOSED short at 2063.39 | PnL: -0.11% | $-0.37 +2025-03-10 13:02:38,590 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.054392857143 | Take profit: 2094.368835714286 +2025-03-10 13:02:38,591 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,592 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,593 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,594 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,595 - INFO - CLOSED long at 2065.89 | PnL: 0.12% | $0.04 +2025-03-10 13:02:38,595 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,597 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,598 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,599 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,601 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,602 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,603 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,603 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,605 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,607 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,612 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,613 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,614 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3778428571427 | Take profit: 2091.6384857142853 +2025-03-10 13:02:38,615 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,615 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,617 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,617 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,619 - INFO - CLOSED long at 2059.61 | PnL: -0.05% | $-0.27 +2025-03-10 13:02:38,620 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,621 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,622 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,624 - INFO - OPENED LONG at 2059.02 | Stop loss: 2048.706242857143 | Take profit: 2089.933285714286 +2025-03-10 13:02:38,625 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,626 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,627 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,627 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,629 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,630 - INFO - CLOSED long at 2059.46 | PnL: 0.02% | $-0.14 +2025-03-10 13:02:38,630 - INFO - OPENED SHORT at 2059.46 | Stop loss: 2069.7759571428574 | Take profit: 2028.5401142857145 +2025-03-10 13:02:38,633 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,633 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,635 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,636 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,637 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,638 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,639 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,640 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,641 - INFO - CLOSED short at 2055.6 | PnL: 0.19% | $0.15 +2025-03-10 13:02:38,641 - INFO - OPENED LONG at 2055.6 | Stop loss: 2045.3033428571428 | Take profit: 2086.4619857142857 +2025-03-10 13:02:38,642 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,643 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,644 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,646 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,646 - INFO - CLOSED long at 2054.83 | PnL: -0.04% | $-0.24 +2025-03-10 13:02:38,646 - INFO - OPENED SHORT at 2054.83 | Stop loss: 2065.122807142857 | Take profit: 2023.979564285714 +2025-03-10 13:02:38,648 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,649 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,650 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,652 - INFO - CLOSED short at 2058.15 | PnL: -0.16% | $-0.46 +2025-03-10 13:02:38,652 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,653 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,654 - INFO - OPENED LONG at 2059.8 | Stop loss: 2049.482342857143 | Take profit: 2090.724985714286 +2025-03-10 13:02:38,655 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,656 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,656 - INFO - CLOSED long at 2061.66 | PnL: 0.09% | $-0.02 +2025-03-10 13:02:38,657 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,658 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,660 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,661 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,662 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.273342857143 | Take profit: 2092.551985714286 +2025-03-10 13:02:38,663 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,663 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,665 - INFO - CLOSED long at 2061.3 | PnL: -0.01% | $-0.20 +2025-03-10 13:02:38,666 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,666 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,667 - INFO - OPENED LONG at 2062.69 | Stop loss: 2052.357892857143 | Take profit: 2093.658335714286 +2025-03-10 13:02:38,669 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,670 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,675 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,676 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,678 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,679 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,681 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,681 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,682 - INFO - CLOSED long at 2063.9 | PnL: 0.06% | $-0.07 +2025-03-10 13:02:38,682 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.2381571428573 | Take profit: 2032.9135142857144 +2025-03-10 13:02:38,683 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,685 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,685 - INFO - CLOSED short at 2064.49 | PnL: -0.03% | $-0.22 +2025-03-10 13:02:38,686 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,687 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,687 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.9796928571427 | Take profit: 2097.3529357142856 +2025-03-10 13:02:38,688 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,689 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,691 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,692 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,692 - INFO - CLOSED long at 2066.79 | PnL: 0.02% | $-0.14 +2025-03-10 13:02:38,694 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,694 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,695 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.685307142857 | Take profit: 2036.292064285714 +2025-03-10 13:02:38,696 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,697 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,698 - INFO - CLOSED short at 2067.01 | PnL: 0.02% | $-0.15 +2025-03-10 13:02:38,698 - INFO - OPENED LONG at 2067.01 | Stop loss: 2056.656292857143 | Take profit: 2098.043135714286 +2025-03-10 13:02:38,699 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,700 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,700 - INFO - CLOSED long at 2065.69 | PnL: -0.06% | $-0.28 +2025-03-10 13:02:38,701 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,702 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,702 - INFO - OPENED SHORT at 2069.79 | Stop loss: 2080.157607142857 | Take profit: 2038.715164285714 +2025-03-10 13:02:38,703 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,705 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,707 - INFO - CLOSED short at 2074.3 | PnL: -0.22% | $-0.55 +2025-03-10 13:02:38,707 - INFO - OPENED LONG at 2074.3 | Stop loss: 2063.909842857143 | Take profit: 2105.442485714286 +2025-03-10 13:02:38,709 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,709 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,711 - INFO - CLOSED long at 2078.01 | PnL: 0.18% | $0.14 +2025-03-10 13:02:38,712 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,713 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,719 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,720 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,720 - INFO - OPENED LONG at 2072.6 | Stop loss: 2062.218342857143 | Take profit: 2103.716985714286 +2025-03-10 13:02:38,722 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,723 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,723 - INFO - CLOSED long at 2071.04 | PnL: -0.08% | $-0.30 +2025-03-10 13:02:38,724 - INFO - OPENED SHORT at 2071.04 | Stop loss: 2081.413857142857 | Take profit: 2039.9464142857141 +2025-03-10 13:02:38,725 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,726 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,727 - INFO - CLOSED short at 2070.01 | PnL: 0.05% | $-0.09 +2025-03-10 13:02:38,728 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,731 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,732 - INFO - OPENED LONG at 2071.6 | Stop loss: 2061.223342857143 | Take profit: 2102.701985714286 +2025-03-10 13:02:38,733 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,734 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,740 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,740 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,742 - INFO - CLOSED long at 2070.0 | PnL: -0.08% | $-0.30 +2025-03-10 13:02:38,742 - INFO - OPENED SHORT at 2070.0 | Stop loss: 2080.368657142857 | Take profit: 2038.922014285714 +2025-03-10 13:02:38,743 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,743 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,745 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,746 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,747 - INFO - CLOSED short at 2068.39 | PnL: 0.08% | $-0.04 +2025-03-10 13:02:38,748 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,749 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,750 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,752 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,753 - INFO - OPENED LONG at 2069.03 | Stop loss: 2058.666192857143 | Take profit: 2100.0934357142855 +2025-03-10 13:02:38,754 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,755 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,756 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,757 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,758 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,759 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,761 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,761 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,762 - INFO - CLOSED long at 2071.49 | PnL: 0.12% | $0.03 +2025-03-10 13:02:38,764 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,764 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,766 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,768 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,768 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.685307142857 | Take profit: 2036.292064285714 +2025-03-10 13:02:38,769 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,770 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,771 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,772 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,773 - INFO - CLOSED short at 2065.7 | PnL: 0.08% | $-0.04 +2025-03-10 13:02:38,773 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.3528428571426 | Take profit: 2096.713485714286 +2025-03-10 13:02:38,774 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,775 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,777 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,778 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,778 - INFO - CLOSED long at 2063.95 | PnL: -0.08% | $-0.31 +2025-03-10 13:02:38,779 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,780 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,781 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,782 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,783 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.1588428571426 | Take profit: 2095.4954857142857 +2025-03-10 13:02:38,784 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,785 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,786 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,788 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,788 - INFO - CLOSED long at 2064.4 | PnL: -0.00% | $-0.18 +2025-03-10 13:02:38,789 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,790 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,791 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,794 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,797 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,799 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,800 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,801 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,801 - INFO - OPENED SHORT at 2065.29 | Stop loss: 2075.635107142857 | Take profit: 2034.2826642857144 +2025-03-10 13:02:38,802 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,803 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,805 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,806 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,810 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,811 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,812 - INFO - CLOSED short at 2066.5 | PnL: -0.06% | $-0.27 +2025-03-10 13:02:38,812 - INFO - OPENED LONG at 2066.5 | Stop loss: 2056.148842857143 | Take profit: 2097.5254857142854 +2025-03-10 13:02:38,814 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,815 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,817 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,818 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,818 - INFO - CLOSED long at 2071.59 | PnL: 0.25% | $0.25 +2025-03-10 13:02:38,819 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,820 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,821 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,822 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,823 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,824 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,825 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.526842857143 | Take profit: 2101.991485714286 +2025-03-10 13:02:38,825 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,828 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,828 - INFO - CLOSED long at 2069.69 | PnL: -0.06% | $-0.27 +2025-03-10 13:02:38,829 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.057107142857 | Take profit: 2038.6166642857143 +2025-03-10 13:02:38,830 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,831 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,831 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,833 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,834 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,834 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,835 - INFO - CLOSED short at 2070.35 | PnL: -0.03% | $-0.22 +2025-03-10 13:02:38,835 - INFO - OPENED LONG at 2070.35 | Stop loss: 2059.979592857143 | Take profit: 2101.4332357142857 +2025-03-10 13:02:38,837 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,838 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,839 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,840 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,840 - INFO - CLOSED long at 2071.99 | PnL: 0.08% | $-0.04 +2025-03-10 13:02:38,840 - INFO - OPENED SHORT at 2071.99 | Stop loss: 2082.368607142857 | Take profit: 2040.8821642857142 +2025-03-10 13:02:38,842 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,842 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,844 - INFO - CLOSED short at 2068.19 | PnL: 0.18% | $0.14 +2025-03-10 13:02:38,844 - INFO - OPENED LONG at 2068.19 | Stop loss: 2057.830392857143 | Take profit: 2099.240835714286 +2025-03-10 13:02:38,845 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,846 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,846 - INFO - CLOSED long at 2068.67 | PnL: 0.02% | $-0.13 +2025-03-10 13:02:38,848 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,848 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,849 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,851 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,852 - INFO - OPENED SHORT at 2069.78 | Stop loss: 2080.1475571428573 | Take profit: 2038.7053142857144 +2025-03-10 13:02:38,852 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,853 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,854 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,856 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,857 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,858 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,860 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,860 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,861 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,863 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,864 - INFO - CLOSED short at 2073.27 | PnL: -0.17% | $-0.45 +2025-03-10 13:02:38,865 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,866 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,867 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,868 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,870 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,871 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,872 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,873 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,875 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,876 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,876 - INFO - OPENED LONG at 2075.61 | Stop loss: 2065.2132928571427 | Take profit: 2106.772135714286 +2025-03-10 13:02:38,877 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,878 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,878 - INFO - CLOSED long at 2074.0 | PnL: -0.08% | $-0.30 +2025-03-10 13:02:38,878 - INFO - OPENED SHORT at 2074.0 | Stop loss: 2084.388657142857 | Take profit: 2042.8620142857144 +2025-03-10 13:02:38,880 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,881 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,881 - INFO - CLOSED short at 2072.09 | PnL: 0.09% | $-0.01 +2025-03-10 13:02:38,882 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,883 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,885 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,885 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,887 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,888 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,889 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.353657142857 | Take profit: 2035.9670142857144 +2025-03-10 13:02:38,890 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,891 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,892 - INFO - CLOSED short at 2067.9 | PnL: -0.04% | $-0.24 +2025-03-10 13:02:38,892 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.541842857143 | Take profit: 2098.9464857142857 +2025-03-10 13:02:38,893 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,894 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,895 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,896 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,898 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,899 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,900 - INFO - CLOSED long at 2067.88 | PnL: -0.00% | $-0.17 +2025-03-10 13:02:38,900 - INFO - OPENED SHORT at 2067.88 | Stop loss: 2078.2380571428575 | Take profit: 2036.8338142857144 +2025-03-10 13:02:38,901 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,902 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,903 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,904 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,908 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,909 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,911 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,911 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,912 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,914 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,916 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,917 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,917 - INFO - CLOSED short at 2067.19 | PnL: 0.03% | $-0.11 +2025-03-10 13:02:38,918 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,919 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,920 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.8461571428575 | Take profit: 2034.4895142857142 +2025-03-10 13:02:38,921 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,922 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,922 - INFO - CLOSED short at 2065.7 | PnL: -0.01% | $-0.18 +2025-03-10 13:02:38,923 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.3528428571426 | Take profit: 2096.713485714286 +2025-03-10 13:02:38,923 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,925 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,925 - INFO - CLOSED long at 2065.8 | PnL: 0.00% | $-0.16 +2025-03-10 13:02:38,927 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,927 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,933 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,935 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,936 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,937 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,937 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.725607142857 | Take profit: 2032.4111642857142 +2025-03-10 13:02:38,938 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,939 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,940 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,941 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,942 - INFO - CLOSED short at 2063.98 | PnL: -0.03% | $-0.21 +2025-03-10 13:02:38,942 - INFO - OPENED LONG at 2063.98 | Stop loss: 2053.641442857143 | Take profit: 2094.967685714286 +2025-03-10 13:02:38,944 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,944 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,945 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,947 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,948 - INFO - CLOSED long at 2065.06 | PnL: 0.05% | $-0.08 +2025-03-10 13:02:38,948 - INFO - OPENED SHORT at 2065.06 | Stop loss: 2075.403957142857 | Take profit: 2034.056114285714 +2025-03-10 13:02:38,949 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,950 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,951 - INFO - CLOSED short at 2064.11 | PnL: 0.05% | $-0.09 +2025-03-10 13:02:38,951 - INFO - OPENED LONG at 2064.11 | Stop loss: 2053.770792857143 | Take profit: 2095.099635714286 +2025-03-10 13:02:38,952 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,953 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,954 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,956 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,956 - INFO - CLOSED long at 2066.33 | PnL: 0.11% | $0.01 +2025-03-10 13:02:38,958 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,959 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,960 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,960 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,963 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,963 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,969 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,970 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,971 - INFO - OPENED LONG at 2059.2 | Stop loss: 2048.885342857143 | Take profit: 2090.1159857142857 +2025-03-10 13:02:38,972 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,973 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,975 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,976 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,977 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,979 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,980 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,981 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,982 - INFO - CLOSED long at 2053.01 | PnL: -0.30% | $-0.66 +2025-03-10 13:02:38,983 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,984 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,985 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,986 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,988 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,989 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,990 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,991 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,995 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,997 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:38,998 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:38,998 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,001 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,002 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,003 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,004 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,004 - INFO - OPENED LONG at 2062.83 | Stop loss: 2052.4971928571426 | Take profit: 2093.8004357142854 +2025-03-10 13:02:39,006 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,006 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,007 - INFO - CLOSED long at 2063.9 | PnL: 0.05% | $-0.08 +2025-03-10 13:02:39,007 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.2381571428573 | Take profit: 2032.9135142857144 +2025-03-10 13:02:39,008 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,010 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,010 - INFO - CLOSED short at 2065.1 | PnL: -0.06% | $-0.26 +2025-03-10 13:02:39,010 - INFO - OPENED LONG at 2065.1 | Stop loss: 2054.755842857143 | Take profit: 2096.1044857142856 +2025-03-10 13:02:39,012 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,012 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,014 - INFO - CLOSED long at 2062.43 | PnL: -0.13% | $-0.37 +2025-03-10 13:02:39,015 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,015 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,016 - INFO - OPENED LONG at 2062.55 | Stop loss: 2052.218592857143 | Take profit: 2093.516235714286 +2025-03-10 13:02:39,017 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,017 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,018 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,020 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,021 - INFO - CLOSED long at 2068.33 | PnL: 0.28% | $0.29 +2025-03-10 13:02:39,021 - INFO - OPENED SHORT at 2068.33 | Stop loss: 2078.6903071428574 | Take profit: 2037.2770642857142 +2025-03-10 13:02:39,022 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,023 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,024 - INFO - CLOSED short at 2067.49 | PnL: 0.04% | $-0.10 +2025-03-10 13:02:39,025 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,026 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,030 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,031 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,032 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,034 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,034 - INFO - OPENED LONG at 2061.21 | Stop loss: 2050.8852928571428 | Take profit: 2092.1561357142855 +2025-03-10 13:02:39,035 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,035 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,038 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,039 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,040 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,041 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,042 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,044 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,044 - INFO - CLOSED long at 2062.54 | PnL: 0.06% | $-0.06 +2025-03-10 13:02:39,044 - INFO - OPENED SHORT at 2062.54 | Stop loss: 2072.8713571428575 | Take profit: 2031.5739142857142 +2025-03-10 13:02:39,045 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,047 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,047 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,048 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,049 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,050 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,050 - INFO - CLOSED short at 2070.24 | PnL: -0.37% | $-0.77 +2025-03-10 13:02:39,052 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,053 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,054 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,056 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,057 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,058 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,059 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,061 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,062 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,063 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,064 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,065 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,066 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6063928571425 | Take profit: 2104.1128357142857 +2025-03-10 13:02:39,067 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,068 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,069 - INFO - CLOSED long at 2071.89 | PnL: -0.05% | $-0.25 +2025-03-10 13:02:39,069 - INFO - OPENED SHORT at 2071.89 | Stop loss: 2082.268107142857 | Take profit: 2040.7836642857142 +2025-03-10 13:02:39,070 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,071 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,071 - INFO - CLOSED short at 2071.8 | PnL: 0.00% | $-0.15 +2025-03-10 13:02:39,072 - INFO - OPENED LONG at 2071.8 | Stop loss: 2061.422342857143 | Take profit: 2102.904985714286 +2025-03-10 13:02:39,073 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,074 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,075 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,076 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,076 - INFO - CLOSED long at 2076.08 | PnL: 0.21% | $0.17 +2025-03-10 13:02:39,077 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,078 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,078 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2088.0167071428573 | Take profit: 2046.4178642857144 +2025-03-10 13:02:39,080 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,081 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,083 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,083 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,084 - INFO - CLOSED short at 2090.49 | PnL: -0.62% | $-1.15 +2025-03-10 13:02:39,085 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,086 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,088 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,088 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,090 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,090 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,090 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2563571428573 | Take profit: 2107.4189142857144 +2025-03-10 13:02:39,092 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,093 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,094 - INFO - CLOSED short at 2131.78 | PnL: 0.36% | $0.41 +2025-03-10 13:02:39,094 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.102442857143 | Take profit: 2163.7846857142863 +2025-03-10 13:02:39,095 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,095 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,097 - INFO - CLOSED long at 2133.95 | PnL: 0.10% | $0.00 +2025-03-10 13:02:39,097 - INFO - OPENED SHORT at 2133.95 | Stop loss: 2144.638407142857 | Take profit: 2101.9127642857143 +2025-03-10 13:02:39,098 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,099 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,100 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,102 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,102 - INFO - CLOSED short at 2141.41 | PnL: -0.35% | $-0.71 +2025-03-10 13:02:39,102 - INFO - OPENED LONG at 2141.41 | Stop loss: 2130.6842928571427 | Take profit: 2173.5591357142853 +2025-03-10 13:02:39,103 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,104 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,105 - INFO - CLOSED long at 2141.3 | PnL: -0.01% | $-0.17 +2025-03-10 13:02:39,106 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,108 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,109 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,109 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,111 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,112 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,112 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.0874428571433 | Take profit: 2166.829685714286 +2025-03-10 13:02:39,114 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,115 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,115 - INFO - CLOSED long at 2126.99 | PnL: -0.36% | $-0.73 +2025-03-10 13:02:39,116 - INFO - OPENED SHORT at 2126.99 | Stop loss: 2137.6436071428566 | Take profit: 2095.057164285714 +2025-03-10 13:02:39,117 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,117 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,119 - INFO - CLOSED short at 2127.3 | PnL: -0.01% | $-0.18 +2025-03-10 13:02:39,119 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.644842857143 | Take profit: 2159.2374857142863 +2025-03-10 13:02:39,121 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,121 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,123 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,124 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,125 - INFO - CLOSED long at 2121.09 | PnL: -0.29% | $-0.61 +2025-03-10 13:02:39,125 - INFO - OPENED SHORT at 2121.09 | Stop loss: 2131.7141071428573 | Take profit: 2089.2456642857146 +2025-03-10 13:02:39,125 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,126 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,127 - INFO - CLOSED short at 2120.15 | PnL: 0.04% | $-0.09 +2025-03-10 13:02:39,127 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.530592857143 | Take profit: 2151.9802357142858 +2025-03-10 13:02:39,128 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,130 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,131 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,131 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,133 - INFO - CLOSED long at 2119.93 | PnL: -0.01% | $-0.17 +2025-03-10 13:02:39,134 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,136 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,136 - INFO - OPENED SHORT at 2121.4 | Stop loss: 2132.0256571428577 | Take profit: 2089.5510142857142 +2025-03-10 13:02:39,137 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,138 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,139 - INFO - CLOSED short at 2118.52 | PnL: 0.14% | $0.05 +2025-03-10 13:02:39,139 - INFO - OPENED LONG at 2118.52 | Stop loss: 2107.908742857143 | Take profit: 2150.3257857142858 +2025-03-10 13:02:39,140 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,141 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,143 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,144 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,145 - INFO - CLOSED long at 2119.07 | PnL: 0.03% | $-0.11 +2025-03-10 13:02:39,146 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,147 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,148 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,149 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,150 - INFO - OPENED SHORT at 2107.43 | Stop loss: 2117.985807142857 | Take profit: 2075.790564285714 +2025-03-10 13:02:39,151 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,152 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,152 - INFO - CLOSED short at 2110.6 | PnL: -0.15% | $-0.38 +2025-03-10 13:02:39,153 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,153 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,154 - INFO - OPENED SHORT at 2109.05 | Stop loss: 2119.6139071428574 | Take profit: 2077.3862642857143 +2025-03-10 13:02:39,156 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,157 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,157 - INFO - CLOSED short at 2112.09 | PnL: -0.14% | $-0.37 +2025-03-10 13:02:39,158 - INFO - OPENED LONG at 2112.09 | Stop loss: 2101.510892857143 | Take profit: 2143.799335714286 +2025-03-10 13:02:39,159 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,160 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,160 - INFO - CLOSED long at 2112.95 | PnL: 0.04% | $-0.09 +2025-03-10 13:02:39,160 - INFO - OPENED SHORT at 2112.95 | Stop loss: 2123.533407142857 | Take profit: 2081.2277642857143 +2025-03-10 13:02:39,162 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,164 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,164 - INFO - CLOSED short at 2112.46 | PnL: 0.02% | $-0.12 +2025-03-10 13:02:39,164 - INFO - OPENED LONG at 2112.46 | Stop loss: 2101.879042857143 | Take profit: 2144.174885714286 +2025-03-10 13:02:39,165 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,166 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,167 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,169 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,169 - INFO - CLOSED long at 2112.99 | PnL: 0.03% | $-0.11 +2025-03-10 13:02:39,170 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,171 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,171 - INFO - OPENED LONG at 2120.81 | Stop loss: 2110.187292857143 | Take profit: 2152.6501357142856 +2025-03-10 13:02:39,173 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,175 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,176 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,178 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,179 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,180 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,182 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,183 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,183 - INFO - CLOSED long at 2108.71 | PnL: -0.57% | $-1.01 +2025-03-10 13:02:39,184 - INFO - OPENED SHORT at 2108.71 | Stop loss: 2119.272207142857 | Take profit: 2077.0513642857145 +2025-03-10 13:02:39,185 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,185 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,187 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,188 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,188 - INFO - CLOSED short at 2108.06 | PnL: 0.03% | $-0.10 +2025-03-10 13:02:39,189 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.5010428571427 | Take profit: 2139.7088857142858 +2025-03-10 13:02:39,190 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,191 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,191 - INFO - CLOSED long at 2103.33 | PnL: -0.22% | $-0.48 +2025-03-10 13:02:39,192 - INFO - OPENED SHORT at 2103.33 | Stop loss: 2113.865307142857 | Take profit: 2071.7520642857144 +2025-03-10 13:02:39,194 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,195 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,199 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,199 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,200 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,201 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,202 - INFO - CLOSED short at 2099.53 | PnL: 0.18% | $0.12 +2025-03-10 13:02:39,204 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,204 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,205 - INFO - OPENED SHORT at 2098.1 | Stop loss: 2108.609157142857 | Take profit: 2066.6005142857143 +2025-03-10 13:02:39,206 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,208 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,209 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,210 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,210 - INFO - CLOSED short at 2102.29 | PnL: -0.20% | $-0.44 +2025-03-10 13:02:39,211 - INFO - OPENED LONG at 2102.29 | Stop loss: 2091.759892857143 | Take profit: 2133.852335714286 +2025-03-10 13:02:39,212 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,213 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,213 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,215 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,215 - INFO - CLOSED long at 2098.9 | PnL: -0.16% | $-0.38 +2025-03-10 13:02:39,217 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,217 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,218 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,219 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,221 - INFO - OPENED SHORT at 2104.83 | Stop loss: 2115.3728071428573 | Take profit: 2073.2295642857143 +2025-03-10 13:02:39,222 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,223 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,224 - INFO - CLOSED short at 2106.39 | PnL: -0.07% | $-0.26 +2025-03-10 13:02:39,224 - INFO - OPENED LONG at 2106.39 | Stop loss: 2095.8393928571427 | Take profit: 2138.0138357142855 +2025-03-10 13:02:39,225 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,226 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,230 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,231 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,232 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,234 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,234 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,235 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,237 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,237 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,240 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,240 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,241 - INFO - CLOSED long at 2100.02 | PnL: -0.30% | $-0.59 +2025-03-10 13:02:39,241 - INFO - OPENED SHORT at 2100.02 | Stop loss: 2110.538757142857 | Take profit: 2068.4917142857144 +2025-03-10 13:02:39,242 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,244 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,245 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,247 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,247 - INFO - CLOSED short at 2095.29 | PnL: 0.23% | $0.18 +2025-03-10 13:02:39,248 - INFO - OPENED LONG at 2095.29 | Stop loss: 2084.7948928571427 | Take profit: 2126.747335714286 +2025-03-10 13:02:39,249 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,249 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,249 - INFO - CLOSED long at 2093.46 | PnL: -0.09% | $-0.27 +2025-03-10 13:02:39,249 - INFO - OPENED SHORT at 2093.46 | Stop loss: 2103.945957142857 | Take profit: 2062.0301142857143 +2025-03-10 13:02:39,251 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,252 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,253 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,254 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,255 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,256 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,258 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,259 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,259 - INFO - CLOSED short at 2094.72 | PnL: -0.06% | $-0.23 +2025-03-10 13:02:39,260 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.227742857143 | Take profit: 2126.1687857142856 +2025-03-10 13:02:39,262 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,263 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,263 - INFO - CLOSED long at 2094.08 | PnL: -0.03% | $-0.19 +2025-03-10 13:02:39,263 - INFO - OPENED SHORT at 2094.08 | Stop loss: 2104.569057142857 | Take profit: 2062.640814285714 +2025-03-10 13:02:39,264 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,266 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,266 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,268 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,268 - INFO - CLOSED short at 2083.28 | PnL: 0.52% | $0.60 +2025-03-10 13:02:39,268 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.844942857143 | Take profit: 2114.557185714286 +2025-03-10 13:02:39,270 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,270 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,272 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,274 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,275 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,276 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,277 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,279 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,280 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,282 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,283 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,284 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,284 - INFO - CLOSED long at 2080.38 | PnL: -0.14% | $-0.35 +2025-03-10 13:02:39,285 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,285 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,287 - INFO - OPENED SHORT at 2081.25 | Stop loss: 2091.674907142857 | Take profit: 2050.003264285714 +2025-03-10 13:02:39,288 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,288 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,290 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,291 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,292 - INFO - CLOSED short at 2085.09 | PnL: -0.18% | $-0.41 +2025-03-10 13:02:39,292 - INFO - OPENED LONG at 2085.09 | Stop loss: 2074.645892857143 | Take profit: 2116.3943357142857 +2025-03-10 13:02:39,293 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,294 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,295 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,297 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,298 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,299 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,301 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,301 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,302 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,303 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,306 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,306 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,307 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,308 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,309 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,311 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,312 - INFO - CLOSED long at 2088.32 | PnL: 0.15% | $0.08 +2025-03-10 13:02:39,313 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,313 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,315 - INFO - OPENED LONG at 2088.1 | Stop loss: 2077.640842857143 | Take profit: 2119.449485714286 +2025-03-10 13:02:39,316 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,316 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,317 - INFO - CLOSED long at 2089.96 | PnL: 0.09% | $-0.02 +2025-03-10 13:02:39,317 - INFO - OPENED SHORT at 2089.96 | Stop loss: 2100.4284571428575 | Take profit: 2058.582614285714 +2025-03-10 13:02:39,319 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,320 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,324 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,325 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,330 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,331 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,331 - INFO - CLOSED short at 2087.78 | PnL: 0.10% | $0.01 +2025-03-10 13:02:39,333 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,333 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,334 - INFO - OPENED SHORT at 2086.81 | Stop loss: 2097.2627071428574 | Take profit: 2055.479864285714 +2025-03-10 13:02:39,335 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,336 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,337 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,338 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,338 - INFO - CLOSED short at 2085.67 | PnL: 0.05% | $-0.07 +2025-03-10 13:02:39,338 - INFO - OPENED LONG at 2085.67 | Stop loss: 2075.222992857143 | Take profit: 2116.9830357142855 +2025-03-10 13:02:39,341 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,341 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,342 - INFO - CLOSED long at 2089.2 | PnL: 0.17% | $0.10 +2025-03-10 13:02:39,344 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,344 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,345 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.5239071428573 | Take profit: 2059.6562642857148 +2025-03-10 13:02:39,346 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,346 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,347 - INFO - CLOSED short at 2091.05 | PnL: 0.00% | $-0.14 +2025-03-10 13:02:39,347 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.576092857143 | Take profit: 2122.4437357142856 +2025-03-10 13:02:39,350 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,350 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,351 - INFO - CLOSED long at 2091.95 | PnL: 0.04% | $-0.08 +2025-03-10 13:02:39,351 - INFO - OPENED SHORT at 2091.95 | Stop loss: 2102.428407142857 | Take profit: 2060.542764285714 +2025-03-10 13:02:39,353 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,354 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,356 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,357 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,361 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,362 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,363 - INFO - CLOSED short at 2099.99 | PnL: -0.38% | $-0.69 +2025-03-10 13:02:39,364 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,365 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,370 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,371 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,372 - INFO - OPENED SHORT at 2097.11 | Stop loss: 2107.614207142857 | Take profit: 2065.625364285714 +2025-03-10 13:02:39,373 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,374 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,376 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,377 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,377 - INFO - CLOSED short at 2099.89 | PnL: -0.13% | $-0.33 +2025-03-10 13:02:39,378 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,380 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,381 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,382 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,383 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,384 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,386 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,386 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,387 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.0160571428573 | Take profit: 2071.8998142857145 +2025-03-10 13:02:39,389 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,390 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,391 - INFO - Trade Analysis: Win Rate=20.9% in uptrends, 0.0% in downtrends | Avg Win=$0.14, Avg Loss=$-0.27 +2025-03-10 13:02:39,392 - INFO - Episode 1: Reward=-142.50, Balance=$71.29, Win Rate=18.8%, Trades=149, Episode PnL=$-20.76, Total PnL=$-58.16, Max Drawdown=28.7%, Pred Accuracy=99.2% +2025-03-10 13:02:39,392 - ERROR - Error in episode 1: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:02:39,393 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1763, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:02:39,413 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 13:02:39,592 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,593 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,594 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,595 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,599 - INFO - OPENED LONG at 2050.2 | Stop loss: 2039.9303428571427 | Take profit: 2080.9809857142855 +2025-03-10 13:02:39,600 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,601 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,602 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,604 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,604 - INFO - CLOSED long at 2051.99 | PnL: 0.09% | $-0.03 +2025-03-10 13:02:39,604 - INFO - OPENED SHORT at 2051.99 | Stop loss: 2062.268607142857 | Take profit: 2021.182164285714 +2025-03-10 13:02:39,605 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,607 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,608 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,609 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,610 - INFO - CLOSED short at 2049.24 | PnL: 0.13% | $0.07 +2025-03-10 13:02:39,610 - INFO - OPENED LONG at 2049.24 | Stop loss: 2038.9751428571426 | Take profit: 2080.0065857142854 +2025-03-10 13:02:39,611 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,612 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,613 - INFO - CLOSED long at 2048.48 | PnL: -0.04% | $-0.27 +2025-03-10 13:02:39,614 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,615 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,615 - INFO - OPENED SHORT at 2047.39 | Stop loss: 2057.6456071428574 | Take profit: 2016.6511642857145 +2025-03-10 13:02:39,617 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,618 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,623 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,624 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,626 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,626 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,627 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,629 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,631 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,632 - INFO - CLOSED short at 2045.99 | PnL: 0.07% | $-0.06 +2025-03-10 13:02:39,633 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,634 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,634 - INFO - OPENED LONG at 2045.79 | Stop loss: 2035.5423928571429 | Take profit: 2076.5048357142855 +2025-03-10 13:02:39,636 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,637 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,638 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,639 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,640 - INFO - CLOSED long at 2047.59 | PnL: 0.09% | $-0.02 +2025-03-10 13:02:39,642 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,643 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,643 - INFO - OPENED SHORT at 2048.51 | Stop loss: 2058.7712071428573 | Take profit: 2017.7543642857145 +2025-03-10 13:02:39,644 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,645 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,645 - INFO - CLOSED short at 2050.0 | PnL: -0.07% | $-0.34 +2025-03-10 13:02:39,647 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,648 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,648 - INFO - OPENED LONG at 2050.24 | Stop loss: 2039.9701428571425 | Take profit: 2081.0215857142853 +2025-03-10 13:02:39,650 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,652 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,652 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,653 - INFO - CLOSED long at 2051.11 | PnL: 0.04% | $-0.11 +2025-03-10 13:02:39,653 - INFO - OPENED SHORT at 2051.11 | Stop loss: 2061.384207142857 | Take profit: 2020.3153642857144 +2025-03-10 13:02:39,655 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,656 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,658 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,658 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,660 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,661 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,663 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,664 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,665 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,666 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,667 - INFO - CLOSED short at 2057.01 | PnL: -0.29% | $-0.76 +2025-03-10 13:02:39,668 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,669 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,669 - INFO - OPENED SHORT at 2056.89 | Stop loss: 2067.1931071428567 | Take profit: 2026.008664285714 +2025-03-10 13:02:39,671 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,671 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,673 - INFO - CLOSED short at 2058.39 | PnL: -0.07% | $-0.34 +2025-03-10 13:02:39,673 - INFO - OPENED LONG at 2058.39 | Stop loss: 2048.0793928571425 | Take profit: 2089.2938357142857 +2025-03-10 13:02:39,674 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,676 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,676 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,678 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,678 - INFO - CLOSED long at 2059.7 | PnL: 0.06% | $-0.07 +2025-03-10 13:02:39,679 - INFO - OPENED SHORT at 2059.7 | Stop loss: 2070.0171571428573 | Take profit: 2028.776514285714 +2025-03-10 13:02:39,680 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,681 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,681 - INFO - CLOSED short at 2061.49 | PnL: -0.09% | $-0.36 +2025-03-10 13:02:39,682 - INFO - OPENED LONG at 2061.49 | Stop loss: 2051.163892857143 | Take profit: 2092.4403357142855 +2025-03-10 13:02:39,682 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,684 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,685 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,687 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,687 - INFO - CLOSED long at 2064.61 | PnL: 0.15% | $0.10 +2025-03-10 13:02:39,687 - INFO - OPENED SHORT at 2064.61 | Stop loss: 2074.9517071428572 | Take profit: 2033.6128642857143 +2025-03-10 13:02:39,689 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,689 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,690 - INFO - CLOSED short at 2063.59 | PnL: 0.05% | $-0.10 +2025-03-10 13:02:39,690 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.253392857143 | Take profit: 2094.5718357142855 +2025-03-10 13:02:39,690 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,693 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,693 - INFO - CLOSED long at 2061.61 | PnL: -0.10% | $-0.38 +2025-03-10 13:02:39,694 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,695 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,696 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,697 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,699 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,700 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,700 - INFO - OPENED SHORT at 2060.99 | Stop loss: 2071.313607142857 | Take profit: 2030.047164285714 +2025-03-10 13:02:39,702 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,703 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,704 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,705 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,706 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,708 - INFO - CLOSED short at 2061.89 | PnL: -0.04% | $-0.28 +2025-03-10 13:02:39,708 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.5618928571425 | Take profit: 2092.846335714286 +2025-03-10 13:02:39,709 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,710 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,712 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,713 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,714 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,715 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,718 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,719 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,720 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,721 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,722 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,723 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,726 - INFO - CLOSED long at 2057.94 | PnL: -0.19% | $-0.56 +2025-03-10 13:02:39,727 - INFO - OPENED SHORT at 2057.94 | Stop loss: 2068.248357142857 | Take profit: 2027.0429142857142 +2025-03-10 13:02:39,727 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,728 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,732 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,733 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,734 - INFO - CLOSED short at 2061.79 | PnL: -0.19% | $-0.55 +2025-03-10 13:02:39,736 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,736 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,736 - INFO - OPENED SHORT at 2061.18 | Stop loss: 2071.5045571428573 | Take profit: 2030.2343142857142 +2025-03-10 13:02:39,737 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,740 - INFO - CLOSED short at 2064.32 | PnL: -0.15% | $-0.48 +2025-03-10 13:02:39,741 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,742 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,742 - INFO - OPENED LONG at 2065.86 | Stop loss: 2055.512042857143 | Take profit: 2096.875885714286 +2025-03-10 13:02:39,743 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,745 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,745 - INFO - CLOSED long at 2070.58 | PnL: 0.23% | $0.24 +2025-03-10 13:02:39,746 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,746 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,749 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,750 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,751 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,751 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,754 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,755 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,755 - INFO - OPENED SHORT at 2071.63 | Stop loss: 2082.0068071428573 | Take profit: 2040.5275642857143 +2025-03-10 13:02:39,756 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,757 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,757 - INFO - CLOSED short at 2070.99 | PnL: 0.03% | $-0.13 +2025-03-10 13:02:39,757 - INFO - OPENED LONG at 2070.99 | Stop loss: 2060.6163928571427 | Take profit: 2102.0828357142855 +2025-03-10 13:02:39,759 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,760 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,761 - INFO - CLOSED long at 2069.6 | PnL: -0.07% | $-0.32 +2025-03-10 13:02:39,761 - INFO - OPENED SHORT at 2069.6 | Stop loss: 2079.9666571428575 | Take profit: 2038.528014285714 +2025-03-10 13:02:39,762 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,763 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,764 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,764 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,766 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,768 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,769 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,770 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,771 - INFO - CLOSED short at 2067.69 | PnL: 0.09% | $-0.01 +2025-03-10 13:02:39,771 - INFO - OPENED LONG at 2067.69 | Stop loss: 2057.3328928571427 | Take profit: 2098.733335714286 +2025-03-10 13:02:39,772 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,773 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,774 - INFO - CLOSED long at 2070.26 | PnL: 0.12% | $0.05 +2025-03-10 13:02:39,775 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,776 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,778 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,780 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,781 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,782 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,782 - INFO - OPENED LONG at 2075.1 | Stop loss: 2064.7058428571427 | Take profit: 2106.2544857142857 +2025-03-10 13:02:39,783 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,784 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,785 - INFO - CLOSED long at 2072.91 | PnL: -0.11% | $-0.39 +2025-03-10 13:02:39,786 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,788 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,788 - INFO - OPENED SHORT at 2072.33 | Stop loss: 2082.710307142857 | Take profit: 2041.2170642857143 +2025-03-10 13:02:39,789 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,790 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,791 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,793 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,794 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,795 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,796 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,797 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,798 - INFO - CLOSED short at 2070.9 | PnL: 0.07% | $-0.06 +2025-03-10 13:02:39,799 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,800 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,802 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,803 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,804 - INFO - OPENED SHORT at 2070.79 | Stop loss: 2081.1626071428573 | Take profit: 2039.7001642857142 +2025-03-10 13:02:39,805 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,806 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,807 - INFO - CLOSED short at 2070.28 | PnL: 0.02% | $-0.14 +2025-03-10 13:02:39,807 - INFO - OPENED LONG at 2070.28 | Stop loss: 2059.909942857143 | Take profit: 2101.3621857142857 +2025-03-10 13:02:39,808 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,809 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,810 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,812 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,812 - INFO - CLOSED long at 2067.2 | PnL: -0.15% | $-0.47 +2025-03-10 13:02:39,812 - INFO - OPENED SHORT at 2067.2 | Stop loss: 2077.5546571428567 | Take profit: 2036.1640142857143 +2025-03-10 13:02:39,813 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,814 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,819 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,820 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,821 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,822 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,823 - INFO - CLOSED short at 2070.7 | PnL: -0.17% | $-0.50 +2025-03-10 13:02:39,823 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3278428571425 | Take profit: 2101.7884857142853 +2025-03-10 13:02:39,823 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,826 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,827 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,828 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,828 - INFO - CLOSED long at 2069.19 | PnL: -0.07% | $-0.32 +2025-03-10 13:02:39,828 - INFO - OPENED SHORT at 2069.19 | Stop loss: 2079.5546071428575 | Take profit: 2038.1241642857142 +2025-03-10 13:02:39,830 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,830 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,832 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,833 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,834 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,835 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,836 - INFO - CLOSED short at 2067.51 | PnL: 0.08% | $-0.03 +2025-03-10 13:02:39,836 - INFO - OPENED LONG at 2067.51 | Stop loss: 2057.1537928571433 | Take profit: 2098.550635714286 +2025-03-10 13:02:39,838 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,839 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,839 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,840 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,842 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,843 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,844 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,845 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,846 - INFO - CLOSED long at 2066.19 | PnL: -0.06% | $-0.30 +2025-03-10 13:02:39,846 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,848 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,849 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,850 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,853 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,854 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,858 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,859 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,860 - INFO - OPENED SHORT at 2068.76 | Stop loss: 2079.1224571428575 | Take profit: 2037.7006142857147 +2025-03-10 13:02:39,861 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,862 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,863 - INFO - CLOSED short at 2068.9 | PnL: -0.01% | $-0.20 +2025-03-10 13:02:39,863 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.536842857143 | Take profit: 2099.9614857142856 +2025-03-10 13:02:39,864 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,865 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,866 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,867 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,872 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,873 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,874 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,876 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,877 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,878 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,884 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,885 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,885 - INFO - CLOSED long at 2071.4 | PnL: 0.12% | $0.04 +2025-03-10 13:02:39,886 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,888 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,889 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,890 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,890 - INFO - OPENED SHORT at 2071.36 | Stop loss: 2081.7354571428573 | Take profit: 2040.2616142857146 +2025-03-10 13:02:39,892 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,893 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,893 - INFO - CLOSED short at 2072.75 | PnL: -0.07% | $-0.31 +2025-03-10 13:02:39,894 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,895 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,896 - INFO - OPENED SHORT at 2073.11 | Stop loss: 2083.4942071428572 | Take profit: 2041.9853642857142 +2025-03-10 13:02:39,896 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,897 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,899 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,900 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,903 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,904 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,904 - INFO - CLOSED short at 2074.29 | PnL: -0.06% | $-0.29 +2025-03-10 13:02:39,905 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,906 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,907 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,908 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,909 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,910 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,911 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.770657142857 | Take profit: 2039.3160142857146 +2025-03-10 13:02:39,912 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,913 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,918 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,919 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,920 - INFO - CLOSED short at 2069.46 | PnL: 0.05% | $-0.10 +2025-03-10 13:02:39,921 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,922 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,923 - INFO - OPENED SHORT at 2069.35 | Stop loss: 2079.7154071428567 | Take profit: 2038.2817642857142 +2025-03-10 13:02:39,924 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,925 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,927 - INFO - CLOSED short at 2068.32 | PnL: 0.05% | $-0.09 +2025-03-10 13:02:39,928 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,929 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,929 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.353657142857 | Take profit: 2035.9670142857144 +2025-03-10 13:02:39,930 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,931 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,932 - INFO - CLOSED short at 2067.79 | PnL: -0.04% | $-0.25 +2025-03-10 13:02:39,932 - INFO - OPENED LONG at 2067.79 | Stop loss: 2057.4323928571425 | Take profit: 2098.834835714286 +2025-03-10 13:02:39,933 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,934 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,935 - INFO - CLOSED long at 2067.46 | PnL: -0.02% | $-0.21 +2025-03-10 13:02:39,935 - INFO - OPENED SHORT at 2067.46 | Stop loss: 2077.815957142857 | Take profit: 2036.4201142857144 +2025-03-10 13:02:39,936 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,937 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,938 - INFO - CLOSED short at 2066.8 | PnL: 0.03% | $-0.12 +2025-03-10 13:02:39,939 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,939 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,941 - INFO - OPENED SHORT at 2065.49 | Stop loss: 2075.8361071428567 | Take profit: 2034.479664285714 +2025-03-10 13:02:39,942 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,942 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,948 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,949 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,950 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,951 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,952 - INFO - CLOSED short at 2067.89 | PnL: -0.12% | $-0.39 +2025-03-10 13:02:39,952 - INFO - OPENED LONG at 2067.89 | Stop loss: 2057.531892857143 | Take profit: 2098.9363357142856 +2025-03-10 13:02:39,953 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,954 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,955 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,956 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,957 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,959 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,959 - INFO - CLOSED long at 2069.34 | PnL: 0.07% | $-0.05 +2025-03-10 13:02:39,960 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.7053571428573 | Take profit: 2038.2719142857143 +2025-03-10 13:02:39,961 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,962 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,965 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,966 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,967 - INFO - CLOSED short at 2067.59 | PnL: 0.08% | $-0.03 +2025-03-10 13:02:39,967 - INFO - OPENED LONG at 2067.59 | Stop loss: 2057.233392857143 | Take profit: 2098.631835714286 +2025-03-10 13:02:39,968 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,969 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,970 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,971 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,972 - INFO - CLOSED long at 2070.3 | PnL: 0.13% | $0.06 +2025-03-10 13:02:39,973 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,974 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,975 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.9666071428574 | Take profit: 2040.4881642857144 +2025-03-10 13:02:39,976 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,977 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,977 - INFO - CLOSED short at 2070.7 | PnL: 0.04% | $-0.10 +2025-03-10 13:02:39,978 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,980 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,980 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.029342857143 | Take profit: 2101.4839857142856 +2025-03-10 13:02:39,982 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,983 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,984 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,985 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,990 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,991 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,993 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,994 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,994 - INFO - CLOSED long at 2067.84 | PnL: -0.12% | $-0.40 +2025-03-10 13:02:39,995 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,996 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:39,998 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:39,999 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,000 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,001 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,001 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.049342857143 | Take profit: 2097.423985714286 +2025-03-10 13:02:40,002 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,004 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,004 - INFO - CLOSED long at 2066.1 | PnL: -0.01% | $-0.21 +2025-03-10 13:02:40,004 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.449157142857 | Take profit: 2035.0805142857141 +2025-03-10 13:02:40,005 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,007 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,009 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,010 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,012 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,012 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,014 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,014 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,015 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,016 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,019 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,020 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,021 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,022 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,023 - INFO - CLOSED short at 2065.69 | PnL: 0.02% | $-0.14 +2025-03-10 13:02:40,023 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.342892857143 | Take profit: 2096.703335714286 +2025-03-10 13:02:40,024 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,025 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,027 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,028 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,029 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,030 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,031 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,032 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,033 - INFO - CLOSED long at 2066.15 | PnL: 0.02% | $-0.14 +2025-03-10 13:02:40,033 - INFO - OPENED SHORT at 2066.15 | Stop loss: 2076.4994071428573 | Take profit: 2035.1297642857144 +2025-03-10 13:02:40,034 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,036 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,037 - INFO - CLOSED short at 2065.26 | PnL: 0.04% | $-0.10 +2025-03-10 13:02:40,038 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,039 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,040 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,040 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,042 - INFO - OPENED SHORT at 2062.65 | Stop loss: 2072.9819071428574 | Take profit: 2031.6822642857144 +2025-03-10 13:02:40,043 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,044 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,045 - INFO - CLOSED short at 2061.78 | PnL: 0.04% | $-0.10 +2025-03-10 13:02:40,046 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,046 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,048 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,050 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,055 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,056 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,057 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,058 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,058 - INFO - OPENED SHORT at 2064.96 | Stop loss: 2075.303457142857 | Take profit: 2033.9576142857143 +2025-03-10 13:02:40,059 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,060 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,065 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,066 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,071 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,073 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,074 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,075 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,079 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,080 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,082 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,083 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,085 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,086 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,086 - INFO - CLOSED short at 2062.71 | PnL: 0.11% | $0.02 +2025-03-10 13:02:40,087 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,089 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,090 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,091 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,093 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,095 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,096 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,097 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.273342857143 | Take profit: 2092.551985714286 +2025-03-10 13:02:40,098 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,099 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,099 - INFO - CLOSED long at 2060.9 | PnL: -0.03% | $-0.24 +2025-03-10 13:02:40,100 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,101 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,103 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,104 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,105 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.576892857143 | Take profit: 2089.8013357142854 +2025-03-10 13:02:40,106 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,107 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,108 - INFO - CLOSED long at 2059.3 | PnL: 0.02% | $-0.14 +2025-03-10 13:02:40,109 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,109 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,110 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.630207142857 | Take profit: 2029.377364285714 +2025-03-10 13:02:40,111 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,112 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,113 - INFO - CLOSED short at 2061.8 | PnL: -0.07% | $-0.31 +2025-03-10 13:02:40,113 - INFO - OPENED LONG at 2061.8 | Stop loss: 2051.4723428571433 | Take profit: 2092.754985714286 +2025-03-10 13:02:40,113 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,114 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,116 - INFO - CLOSED long at 2064.7 | PnL: 0.14% | $0.07 +2025-03-10 13:02:40,116 - INFO - OPENED SHORT at 2064.7 | Stop loss: 2075.042157142857 | Take profit: 2033.7015142857142 +2025-03-10 13:02:40,117 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,118 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,121 - INFO - CLOSED short at 2062.61 | PnL: 0.10% | $0.00 +2025-03-10 13:02:40,122 - INFO - OPENED LONG at 2062.61 | Stop loss: 2052.278292857143 | Take profit: 2093.577135714286 +2025-03-10 13:02:40,122 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,124 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,126 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,127 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,127 - INFO - CLOSED long at 2060.3 | PnL: -0.11% | $-0.38 +2025-03-10 13:02:40,128 - INFO - OPENED SHORT at 2060.3 | Stop loss: 2070.6201571428574 | Take profit: 2029.3675142857144 +2025-03-10 13:02:40,130 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,130 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,132 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,132 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,133 - INFO - CLOSED short at 2061.9 | PnL: -0.08% | $-0.31 +2025-03-10 13:02:40,135 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,135 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,136 - INFO - OPENED LONG at 2064.1 | Stop loss: 2053.760842857143 | Take profit: 2095.0894857142857 +2025-03-10 13:02:40,136 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,138 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,140 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,141 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,145 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,147 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,148 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,149 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,151 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,151 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,153 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,153 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,155 - INFO - CLOSED long at 2063.53 | PnL: -0.03% | $-0.22 +2025-03-10 13:02:40,155 - INFO - OPENED SHORT at 2063.53 | Stop loss: 2073.8663071428573 | Take profit: 2032.5490642857144 +2025-03-10 13:02:40,156 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,158 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,158 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,160 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,161 - INFO - CLOSED short at 2062.6 | PnL: 0.05% | $-0.10 +2025-03-10 13:02:40,161 - INFO - OPENED LONG at 2062.6 | Stop loss: 2052.2683428571427 | Take profit: 2093.5669857142852 +2025-03-10 13:02:40,162 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,162 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,164 - INFO - CLOSED long at 2061.89 | PnL: -0.03% | $-0.24 +2025-03-10 13:02:40,164 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,165 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,166 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,168 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,168 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.022157142857 | Take profit: 2029.7615142857142 +2025-03-10 13:02:40,169 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,171 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,171 - INFO - CLOSED short at 2061.09 | PnL: -0.02% | $-0.21 +2025-03-10 13:02:40,172 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,172 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,174 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.2932928571427 | Take profit: 2090.5321357142857 +2025-03-10 13:02:40,175 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,176 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,176 - INFO - CLOSED long at 2059.16 | PnL: -0.02% | $-0.21 +2025-03-10 13:02:40,176 - INFO - OPENED SHORT at 2059.16 | Stop loss: 2069.474457142857 | Take profit: 2028.244614285714 +2025-03-10 13:02:40,178 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,178 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,179 - INFO - CLOSED short at 2059.02 | PnL: 0.01% | $-0.16 +2025-03-10 13:02:40,179 - INFO - OPENED LONG at 2059.02 | Stop loss: 2048.706242857143 | Take profit: 2089.933285714286 +2025-03-10 13:02:40,181 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,182 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,182 - INFO - CLOSED long at 2058.89 | PnL: -0.01% | $-0.18 +2025-03-10 13:02:40,182 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.203107142857 | Take profit: 2027.978664285714 +2025-03-10 13:02:40,184 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,184 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,185 - INFO - CLOSED short at 2059.96 | PnL: -0.05% | $-0.26 +2025-03-10 13:02:40,187 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,188 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,189 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,190 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,191 - INFO - OPENED LONG at 2057.4 | Stop loss: 2047.0943428571431 | Take profit: 2088.2889857142854 +2025-03-10 13:02:40,191 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,192 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,197 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,198 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,199 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,201 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,201 - INFO - CLOSED long at 2055.6 | PnL: -0.09% | $-0.32 +2025-03-10 13:02:40,203 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,203 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,206 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,207 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,210 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,211 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,212 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,214 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,218 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,219 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,220 - INFO - OPENED SHORT at 2059.8 | Stop loss: 2070.1176571428573 | Take profit: 2028.8750142857145 +2025-03-10 13:02:40,221 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,222 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,223 - INFO - CLOSED short at 2061.66 | PnL: -0.09% | $-0.33 +2025-03-10 13:02:40,224 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,224 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,229 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,230 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,231 - INFO - OPENED SHORT at 2061.6 | Stop loss: 2071.926657142857 | Take profit: 2030.6480142857142 +2025-03-10 13:02:40,233 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,233 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,236 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,236 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,237 - INFO - CLOSED short at 2062.69 | PnL: -0.05% | $-0.26 +2025-03-10 13:02:40,237 - INFO - OPENED LONG at 2062.69 | Stop loss: 2052.357892857143 | Take profit: 2093.658335714286 +2025-03-10 13:02:40,238 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,239 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,239 - INFO - CLOSED long at 2063.4 | PnL: 0.03% | $-0.11 +2025-03-10 13:02:40,240 - INFO - OPENED SHORT at 2063.4 | Stop loss: 2073.7356571428572 | Take profit: 2032.4210142857144 +2025-03-10 13:02:40,241 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,243 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,244 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,245 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,246 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,247 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,248 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,249 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,250 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,251 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,252 - INFO - CLOSED short at 2066.33 | PnL: -0.14% | $-0.41 +2025-03-10 13:02:40,252 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.9796928571427 | Take profit: 2097.3529357142856 +2025-03-10 13:02:40,253 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,254 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,254 - INFO - CLOSED long at 2066.34 | PnL: 0.00% | $-0.17 +2025-03-10 13:02:40,255 - INFO - OPENED SHORT at 2066.34 | Stop loss: 2076.690357142857 | Take profit: 2035.3169142857143 +2025-03-10 13:02:40,255 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,257 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,258 - INFO - CLOSED short at 2066.79 | PnL: -0.02% | $-0.21 +2025-03-10 13:02:40,259 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,260 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,261 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.974692857143 | Take profit: 2098.3679357142855 +2025-03-10 13:02:40,262 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,263 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,263 - INFO - CLOSED long at 2067.01 | PnL: -0.02% | $-0.20 +2025-03-10 13:02:40,264 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,265 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,266 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.342892857143 | Take profit: 2096.703335714286 +2025-03-10 13:02:40,266 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,267 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,269 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,270 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,274 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,275 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,277 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,278 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,278 - INFO - CLOSED long at 2078.01 | PnL: 0.60% | $0.84 +2025-03-10 13:02:40,279 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,280 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,281 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.4037071428575 | Take profit: 2043.8568642857144 +2025-03-10 13:02:40,283 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,284 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,285 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,286 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,286 - INFO - CLOSED short at 2071.04 | PnL: 0.19% | $0.16 +2025-03-10 13:02:40,288 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,289 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,289 - INFO - OPENED SHORT at 2070.01 | Stop loss: 2080.3787071428574 | Take profit: 2038.9318642857145 +2025-03-10 13:02:40,291 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,292 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,292 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,293 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,293 - INFO - CLOSED short at 2073.23 | PnL: -0.16% | $-0.44 +2025-03-10 13:02:40,295 - INFO - OPENED LONG at 2073.23 | Stop loss: 2062.8451928571426 | Take profit: 2104.356435714286 +2025-03-10 13:02:40,296 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,297 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,297 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,298 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,299 - INFO - CLOSED long at 2068.15 | PnL: -0.25% | $-0.59 +2025-03-10 13:02:40,300 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,301 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,306 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,308 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,308 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.322892857143 | Take profit: 2100.763335714286 +2025-03-10 13:02:40,308 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,310 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,311 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,313 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,314 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,315 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,316 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,317 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,322 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,324 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,328 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,329 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,330 - INFO - CLOSED long at 2069.87 | PnL: 0.01% | $-0.15 +2025-03-10 13:02:40,332 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,333 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,334 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,335 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,336 - INFO - OPENED LONG at 2066.38 | Stop loss: 2056.029442857143 | Take profit: 2097.403685714286 +2025-03-10 13:02:40,337 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,339 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,339 - INFO - CLOSED long at 2065.7 | PnL: -0.03% | $-0.22 +2025-03-10 13:02:40,340 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,341 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,342 - INFO - OPENED SHORT at 2065.66 | Stop loss: 2076.006957142857 | Take profit: 2034.6471142857142 +2025-03-10 13:02:40,343 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,344 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,345 - INFO - CLOSED short at 2063.95 | PnL: 0.08% | $-0.03 +2025-03-10 13:02:40,347 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,349 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,349 - INFO - OPENED LONG at 2063.97 | Stop loss: 2053.631492857143 | Take profit: 2094.9575357142853 +2025-03-10 13:02:40,350 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,352 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,352 - INFO - CLOSED long at 2064.5 | PnL: 0.03% | $-0.12 +2025-03-10 13:02:40,354 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,355 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,356 - INFO - OPENED LONG at 2065.3 | Stop loss: 2054.954842857143 | Take profit: 2096.307485714286 +2025-03-10 13:02:40,356 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,357 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,359 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,360 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,361 - INFO - CLOSED long at 2064.31 | PnL: -0.05% | $-0.25 +2025-03-10 13:02:40,362 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,363 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,363 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.8461571428575 | Take profit: 2034.4895142857142 +2025-03-10 13:02:40,365 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,365 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,369 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,369 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,370 - INFO - CLOSED short at 2065.29 | PnL: 0.01% | $-0.15 +2025-03-10 13:02:40,370 - INFO - OPENED LONG at 2065.29 | Stop loss: 2054.944892857143 | Take profit: 2096.2973357142855 +2025-03-10 13:02:40,371 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,373 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,373 - INFO - CLOSED long at 2065.31 | PnL: 0.00% | $-0.17 +2025-03-10 13:02:40,374 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,375 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,376 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.152657142857 | Take profit: 2035.7700142857145 +2025-03-10 13:02:40,377 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,377 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,385 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,385 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,386 - INFO - CLOSED short at 2068.59 | PnL: -0.09% | $-0.31 +2025-03-10 13:02:40,386 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.228392857143 | Take profit: 2099.6468357142858 +2025-03-10 13:02:40,387 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,388 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,389 - INFO - CLOSED long at 2071.59 | PnL: 0.15% | $0.07 +2025-03-10 13:02:40,389 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.9666071428574 | Take profit: 2040.4881642857144 +2025-03-10 13:02:40,390 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,391 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,392 - INFO - CLOSED short at 2070.2 | PnL: 0.07% | $-0.05 +2025-03-10 13:02:40,393 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,394 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,396 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,397 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,397 - INFO - OPENED SHORT at 2070.9 | Stop loss: 2081.273157142857 | Take profit: 2039.8085142857144 +2025-03-10 13:02:40,398 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,401 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,402 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,402 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,403 - INFO - CLOSED short at 2070.7 | PnL: 0.01% | $-0.15 +2025-03-10 13:02:40,403 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3278428571425 | Take profit: 2101.7884857142853 +2025-03-10 13:02:40,404 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,406 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,406 - INFO - CLOSED long at 2070.8 | PnL: 0.00% | $-0.16 +2025-03-10 13:02:40,407 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,408 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,409 - INFO - OPENED SHORT at 2070.35 | Stop loss: 2080.7204071428573 | Take profit: 2039.2667642857143 +2025-03-10 13:02:40,411 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,412 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,413 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,414 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,415 - INFO - CLOSED short at 2071.99 | PnL: -0.08% | $-0.30 +2025-03-10 13:02:40,415 - INFO - OPENED LONG at 2071.99 | Stop loss: 2061.6113928571426 | Take profit: 2103.0978357142853 +2025-03-10 13:02:40,416 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,418 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,423 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,424 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,425 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,426 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,431 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,432 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,433 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,435 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,435 - INFO - CLOSED long at 2071.61 | PnL: -0.02% | $-0.19 +2025-03-10 13:02:40,436 - INFO - OPENED SHORT at 2071.61 | Stop loss: 2081.986707142857 | Take profit: 2040.5078642857145 +2025-03-10 13:02:40,437 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,438 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,443 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,444 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,445 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,447 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,448 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,450 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,455 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,456 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,456 - INFO - CLOSED short at 2073.99 | PnL: -0.11% | $-0.35 +2025-03-10 13:02:40,457 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,458 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,460 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,461 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,461 - INFO - OPENED SHORT at 2075.29 | Stop loss: 2085.6851071428573 | Take profit: 2044.1326642857143 +2025-03-10 13:02:40,464 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,464 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,467 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,468 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,469 - INFO - CLOSED short at 2075.61 | PnL: -0.02% | $-0.19 +2025-03-10 13:02:40,469 - INFO - OPENED LONG at 2075.61 | Stop loss: 2065.2132928571427 | Take profit: 2106.772135714286 +2025-03-10 13:02:40,471 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,472 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,473 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,475 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,477 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,478 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,479 - INFO - CLOSED long at 2069.97 | PnL: -0.27% | $-0.61 +2025-03-10 13:02:40,479 - INFO - OPENED SHORT at 2069.97 | Stop loss: 2080.3385071428565 | Take profit: 2038.8924642857141 +2025-03-10 13:02:40,481 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,482 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,483 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,485 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,486 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,487 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,488 - INFO - CLOSED short at 2067.9 | PnL: 0.10% | $0.00 +2025-03-10 13:02:40,489 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,491 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,491 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.750657142857 | Take profit: 2035.3760142857143 +2025-03-10 13:02:40,492 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,495 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,496 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,497 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,498 - INFO - CLOSED short at 2067.88 | PnL: -0.07% | $-0.28 +2025-03-10 13:02:40,499 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,501 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,506 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,507 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,508 - INFO - OPENED SHORT at 2068.1 | Stop loss: 2078.459157142857 | Take profit: 2037.0505142857141 +2025-03-10 13:02:40,509 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,511 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,512 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,513 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,515 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,516 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,519 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,520 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,522 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,523 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,523 - INFO - CLOSED short at 2065.5 | PnL: 0.13% | $0.04 +2025-03-10 13:02:40,525 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,527 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,529 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,531 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,531 - INFO - OPENED LONG at 2065.8 | Stop loss: 2055.452342857143 | Take profit: 2096.814985714286 +2025-03-10 13:02:40,532 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,533 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,534 - INFO - CLOSED long at 2065.07 | PnL: -0.04% | $-0.22 +2025-03-10 13:02:40,534 - INFO - OPENED SHORT at 2065.07 | Stop loss: 2075.4140071428574 | Take profit: 2034.0659642857145 +2025-03-10 13:02:40,535 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,537 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,537 - INFO - CLOSED short at 2066.09 | PnL: -0.05% | $-0.24 +2025-03-10 13:02:40,539 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,540 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,540 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.054392857143 | Take profit: 2094.368835714286 +2025-03-10 13:02:40,542 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,543 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,550 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,551 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,552 - INFO - CLOSED long at 2063.98 | PnL: 0.03% | $-0.11 +2025-03-10 13:02:40,552 - INFO - OPENED SHORT at 2063.98 | Stop loss: 2074.318557142857 | Take profit: 2032.9923142857144 +2025-03-10 13:02:40,554 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,555 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,560 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,562 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,563 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,565 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,571 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,572 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,573 - INFO - CLOSED short at 2064.5 | PnL: -0.03% | $-0.20 +2025-03-10 13:02:40,573 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.1588428571426 | Take profit: 2095.4954857142857 +2025-03-10 13:02:40,575 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,576 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,577 - INFO - CLOSED long at 2066.33 | PnL: 0.09% | $-0.02 +2025-03-10 13:02:40,577 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6803071428567 | Take profit: 2035.3070642857142 +2025-03-10 13:02:40,579 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,580 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,582 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,584 - INFO - CLOSED short at 2060.7 | PnL: 0.27% | $0.28 +2025-03-10 13:02:40,586 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,587 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,588 - INFO - OPENED LONG at 2060.2 | Stop loss: 2049.8803428571428 | Take profit: 2091.1309857142855 +2025-03-10 13:02:40,589 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,591 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,592 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,594 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,599 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,600 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,602 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,604 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,605 - INFO - CLOSED long at 2056.77 | PnL: -0.17% | $-0.43 +2025-03-10 13:02:40,605 - INFO - OPENED SHORT at 2056.77 | Stop loss: 2067.0725071428574 | Take profit: 2025.8904642857142 +2025-03-10 13:02:40,607 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,608 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,609 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,611 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,612 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,613 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,615 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,617 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,618 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,620 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,620 - INFO - CLOSED short at 2058.3 | PnL: -0.07% | $-0.28 +2025-03-10 13:02:40,621 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.989842857143 | Take profit: 2089.2024857142856 +2025-03-10 13:02:40,621 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,623 - INFO - CLOSED long at 2056.85 | PnL: -0.07% | $-0.27 +2025-03-10 13:02:40,625 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,627 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,628 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,635 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,637 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,638 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,640 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,641 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,642 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,643 - INFO - OPENED LONG at 2065.1 | Stop loss: 2054.755842857143 | Take profit: 2096.1044857142856 +2025-03-10 13:02:40,644 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,646 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,646 - INFO - CLOSED long at 2062.43 | PnL: -0.13% | $-0.36 +2025-03-10 13:02:40,648 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,649 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,649 - INFO - OPENED LONG at 2062.55 | Stop loss: 2052.218592857143 | Take profit: 2093.516235714286 +2025-03-10 13:02:40,651 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,652 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,654 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,655 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,657 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,658 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,660 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,661 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,663 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,664 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,665 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,666 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,667 - INFO - CLOSED long at 2061.21 | PnL: -0.06% | $-0.26 +2025-03-10 13:02:40,668 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,669 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,671 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,673 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,674 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,675 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,676 - INFO - OPENED LONG at 2061.84 | Stop loss: 2051.5121428571433 | Take profit: 2092.7955857142856 +2025-03-10 13:02:40,677 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,678 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,683 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,683 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,685 - INFO - CLOSED long at 2065.72 | PnL: 0.19% | $0.14 +2025-03-10 13:02:40,685 - INFO - OPENED SHORT at 2065.72 | Stop loss: 2076.0672571428568 | Take profit: 2034.7062142857142 +2025-03-10 13:02:40,687 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,689 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,690 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,692 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,692 - INFO - CLOSED short at 2070.24 | PnL: -0.22% | $-0.50 +2025-03-10 13:02:40,693 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,694 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,695 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.974642857143 | Take profit: 2100.408085714286 +2025-03-10 13:02:40,696 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,697 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,698 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,700 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,701 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,701 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,703 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,705 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,705 - INFO - CLOSED long at 2074.05 | PnL: 0.23% | $0.20 +2025-03-10 13:02:40,706 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,708 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,710 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,710 - INFO - OPENED LONG at 2071.89 | Stop loss: 2061.511892857143 | Take profit: 2102.9963357142856 +2025-03-10 13:02:40,711 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,713 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,714 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,715 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,716 - INFO - CLOSED long at 2074.9 | PnL: 0.15% | $0.07 +2025-03-10 13:02:40,716 - INFO - OPENED SHORT at 2074.9 | Stop loss: 2085.293157142857 | Take profit: 2043.7485142857142 +2025-03-10 13:02:40,718 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,719 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,720 - INFO - CLOSED short at 2076.08 | PnL: -0.06% | $-0.25 +2025-03-10 13:02:40,720 - INFO - OPENED LONG at 2076.08 | Stop loss: 2065.680942857143 | Take profit: 2107.2491857142854 +2025-03-10 13:02:40,721 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,722 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,723 - INFO - CLOSED long at 2077.61 | PnL: 0.07% | $-0.04 +2025-03-10 13:02:40,723 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2088.0167071428573 | Take profit: 2046.4178642857144 +2025-03-10 13:02:40,724 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,725 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,727 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,728 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,729 - INFO - CLOSED short at 2090.49 | PnL: -0.62% | $-1.13 +2025-03-10 13:02:40,729 - INFO - OPENED LONG at 2090.49 | Stop loss: 2080.0188928571424 | Take profit: 2121.8753357142855 +2025-03-10 13:02:40,730 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,731 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,733 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,734 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,735 - INFO - CLOSED long at 2130.7 | PnL: 1.92% | $2.81 +2025-03-10 13:02:40,736 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,738 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,739 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,740 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,741 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,742 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,745 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,745 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,746 - INFO - OPENED SHORT at 2137.59 | Stop loss: 2148.2966071428573 | Take profit: 2105.498164285714 +2025-03-10 13:02:40,747 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,748 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,749 - INFO - CLOSED short at 2141.41 | PnL: -0.18% | $-0.45 +2025-03-10 13:02:40,750 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,751 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,752 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,753 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,754 - INFO - OPENED SHORT at 2142.68 | Stop loss: 2153.412057142857 | Take profit: 2110.511814285714 +2025-03-10 13:02:40,755 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,756 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,762 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,763 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,763 - INFO - CLOSED short at 2134.78 | PnL: 0.37% | $0.43 +2025-03-10 13:02:40,764 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,765 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,767 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,769 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,770 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,771 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,775 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.027892857143 | Take profit: 2160.648335714286 +2025-03-10 13:02:40,776 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,777 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,780 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,780 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,785 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,786 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,788 - INFO - STOP LOSS hit for long at 2118.027892857143 | PnL: -0.50% | $-0.96 +2025-03-10 13:02:40,789 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,790 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,790 - INFO - OPENED SHORT at 2119.93 | Stop loss: 2130.5483071428566 | Take profit: 2088.103064285714 +2025-03-10 13:02:40,792 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,793 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,793 - INFO - CLOSED short at 2121.4 | PnL: -0.07% | $-0.27 +2025-03-10 13:02:40,793 - INFO - OPENED LONG at 2121.4 | Stop loss: 2110.774342857143 | Take profit: 2153.248985714286 +2025-03-10 13:02:40,795 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,796 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,798 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,805 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,806 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,806 - INFO - CLOSED long at 2119.07 | PnL: -0.11% | $-0.33 +2025-03-10 13:02:40,808 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,808 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,810 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,811 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,811 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.8741928571426 | Take profit: 2139.0694357142856 +2025-03-10 13:02:40,813 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,814 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,816 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,817 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,822 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,823 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,824 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,825 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,826 - INFO - CLOSED long at 2112.95 | PnL: 0.26% | $0.25 +2025-03-10 13:02:40,828 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,829 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,834 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,835 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,841 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,842 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,842 - INFO - OPENED SHORT at 2112.99 | Stop loss: 2123.573607142857 | Take profit: 2081.267164285714 +2025-03-10 13:02:40,844 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,845 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,845 - INFO - CLOSED short at 2120.81 | PnL: -0.37% | $-0.74 +2025-03-10 13:02:40,847 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,847 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,852 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,854 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,855 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,856 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,858 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,859 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,860 - INFO - OPENED SHORT at 2108.71 | Stop loss: 2119.272207142857 | Take profit: 2077.0513642857145 +2025-03-10 13:02:40,862 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,863 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,864 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,865 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,866 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,868 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,873 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,873 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,876 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,877 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,877 - INFO - CLOSED short at 2090.0 | PnL: 0.89% | $1.23 +2025-03-10 13:02:40,877 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.5313428571426 | Take profit: 2121.377985714286 +2025-03-10 13:02:40,878 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,880 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,880 - INFO - CLOSED long at 2099.53 | PnL: 0.46% | $0.56 +2025-03-10 13:02:40,881 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,882 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,884 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,885 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,885 - INFO - OPENED LONG at 2102.19 | Stop loss: 2091.660392857143 | Take profit: 2133.7508357142856 +2025-03-10 13:02:40,888 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,889 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,890 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,891 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,892 - INFO - CLOSED long at 2099.25 | PnL: -0.14% | $-0.38 +2025-03-10 13:02:40,892 - INFO - OPENED SHORT at 2099.25 | Stop loss: 2109.7649071428573 | Take profit: 2067.7332642857145 +2025-03-10 13:02:40,893 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,895 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,895 - INFO - CLOSED short at 2098.9 | PnL: 0.02% | $-0.13 +2025-03-10 13:02:40,896 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,898 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,904 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,905 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,912 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,912 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,917 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,918 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,919 - INFO - OPENED LONG at 2100.74 | Stop loss: 2090.2176428571424 | Take profit: 2132.2790857142854 +2025-03-10 13:02:40,920 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,922 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,923 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,924 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,926 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,927 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,928 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,928 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,929 - INFO - CLOSED long at 2099.59 | PnL: -0.05% | $-0.24 +2025-03-10 13:02:40,930 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,931 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,939 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,940 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,941 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,943 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,944 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,945 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,946 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,948 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,950 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,951 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,952 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,953 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,958 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,959 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,967 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,968 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,969 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,971 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,972 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,973 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,975 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,976 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,977 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,978 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,979 - INFO - OPENED SHORT at 2083.97 | Stop loss: 2094.4085071428567 | Take profit: 2052.682464285714 +2025-03-10 13:02:40,980 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,982 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,983 - INFO - CLOSED short at 2085.3 | PnL: -0.06% | $-0.26 +2025-03-10 13:02:40,983 - INFO - OPENED LONG at 2085.3 | Stop loss: 2074.854842857143 | Take profit: 2116.607485714286 +2025-03-10 13:02:40,983 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,985 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,985 - INFO - CLOSED long at 2082.44 | PnL: -0.14% | $-0.37 +2025-03-10 13:02:40,985 - INFO - OPENED SHORT at 2082.44 | Stop loss: 2092.8708571428574 | Take profit: 2051.1754142857144 +2025-03-10 13:02:40,987 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,987 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,989 - INFO - CLOSED short at 2081.49 | PnL: 0.05% | $-0.09 +2025-03-10 13:02:40,989 - INFO - OPENED LONG at 2081.49 | Stop loss: 2071.0638928571425 | Take profit: 2112.7403357142853 +2025-03-10 13:02:40,991 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,992 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,992 - INFO - CLOSED long at 2080.38 | PnL: -0.05% | $-0.24 +2025-03-10 13:02:40,993 - INFO - OPENED SHORT at 2080.38 | Stop loss: 2090.8005571428575 | Take profit: 2049.146314285714 +2025-03-10 13:02:40,994 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,995 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,996 - INFO - CLOSED short at 2081.25 | PnL: -0.04% | $-0.22 +2025-03-10 13:02:40,996 - INFO - OPENED LONG at 2081.25 | Stop loss: 2070.825092857143 | Take profit: 2112.4967357142855 +2025-03-10 13:02:40,997 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:40,998 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:40,999 - INFO - CLOSED long at 2083.41 | PnL: 0.10% | $0.01 +2025-03-10 13:02:40,999 - INFO - OPENED SHORT at 2083.41 | Stop loss: 2093.845707142857 | Take profit: 2052.130864285714 +2025-03-10 13:02:41,000 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,000 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,002 - INFO - CLOSED short at 2085.09 | PnL: -0.08% | $-0.28 +2025-03-10 13:02:41,003 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,004 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,006 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,006 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,011 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,013 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,013 - INFO - OPENED SHORT at 2085.8 | Stop loss: 2096.2476571428574 | Take profit: 2054.4850142857144 +2025-03-10 13:02:41,014 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,015 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,016 - INFO - CLOSED short at 2084.72 | PnL: 0.05% | $-0.07 +2025-03-10 13:02:41,017 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,018 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,019 - INFO - OPENED LONG at 2085.83 | Stop loss: 2075.382192857143 | Take profit: 2117.1454357142857 +2025-03-10 13:02:41,020 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,021 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,021 - INFO - CLOSED long at 2085.85 | PnL: 0.00% | $-0.15 +2025-03-10 13:02:41,023 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,024 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,025 - INFO - OPENED LONG at 2088.66 | Stop loss: 2078.198042857143 | Take profit: 2120.0178857142855 +2025-03-10 13:02:41,026 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,026 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,028 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,029 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,031 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,032 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,032 - INFO - CLOSED long at 2089.96 | PnL: 0.06% | $-0.06 +2025-03-10 13:02:41,033 - INFO - OPENED SHORT at 2089.96 | Stop loss: 2100.4284571428575 | Take profit: 2058.582614285714 +2025-03-10 13:02:41,034 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,035 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,037 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,038 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,039 - INFO - CLOSED short at 2087.47 | PnL: 0.12% | $0.03 +2025-03-10 13:02:41,039 - INFO - OPENED LONG at 2087.47 | Stop loss: 2077.0139928571425 | Take profit: 2118.8100357142853 +2025-03-10 13:02:41,040 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,041 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,042 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,043 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,045 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,046 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,047 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,049 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,049 - INFO - CLOSED long at 2085.67 | PnL: -0.09% | $-0.29 +2025-03-10 13:02:41,050 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,051 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,053 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,054 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,056 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,057 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,059 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,060 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,060 - INFO - OPENED LONG at 2091.95 | Stop loss: 2081.4715928571427 | Take profit: 2123.3572357142853 +2025-03-10 13:02:41,062 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,063 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,064 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,065 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,067 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,068 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,069 - INFO - CLOSED long at 2099.99 | PnL: 0.38% | $0.44 +2025-03-10 13:02:41,070 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,072 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,072 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.166857142857 | Take profit: 2070.087414285714 +2025-03-10 13:02:41,073 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,075 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,076 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,077 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,078 - INFO - CLOSED short at 2098.49 | PnL: 0.15% | $0.08 +2025-03-10 13:02:41,078 - INFO - OPENED LONG at 2098.49 | Stop loss: 2087.9788928571425 | Take profit: 2129.995335714286 +2025-03-10 13:02:41,079 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,080 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,082 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,083 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,084 - INFO - CLOSED long at 2100.89 | PnL: 0.11% | $0.02 +2025-03-10 13:02:41,085 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,086 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,089 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,090 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,090 - INFO - OPENED SHORT at 2106.15 | Stop loss: 2116.699407142857 | Take profit: 2074.5297642857145 +2025-03-10 13:02:41,091 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,093 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,093 - INFO - CLOSED short at 2103.48 | PnL: 0.13% | $0.04 +2025-03-10 13:02:41,094 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,095 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,098 - INFO - Trade Analysis: Win Rate=12.8% in uptrends, 0.0% in downtrends | Avg Win=$0.29, Avg Loss=$-0.26 +2025-03-10 13:02:41,098 - INFO - Episode 2: Reward=-132.35, Balance=$78.18, Win Rate=19.9%, Trades=146, Episode PnL=$-15.85, Total PnL=$-79.98, Max Drawdown=22.4%, Pred Accuracy=98.5% +2025-03-10 13:02:41,099 - ERROR - Error in episode 2: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:02:41,100 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1763, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:02:41,121 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 13:02:41,472 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,474 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,479 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,480 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,481 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,482 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,483 - INFO - OPENED LONG at 2049.6 | Stop loss: 2039.3333428571427 | Take profit: 2080.3719857142855 +2025-03-10 13:02:41,484 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,486 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,487 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,488 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,489 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,490 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,492 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,493 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,494 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,495 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,495 - INFO - CLOSED long at 2047.39 | PnL: -0.11% | $-0.41 +2025-03-10 13:02:41,496 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,498 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,498 - INFO - OPENED SHORT at 2046.58 | Stop loss: 2056.8315571428575 | Take profit: 2015.8533142857143 +2025-03-10 13:02:41,499 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,501 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,501 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,503 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,504 - INFO - CLOSED short at 2047.2 | PnL: -0.03% | $-0.26 +2025-03-10 13:02:41,504 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,505 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,506 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.2386071428573 | Take profit: 2015.2721642857143 +2025-03-10 13:02:41,507 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,508 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,509 - INFO - CLOSED short at 2045.99 | PnL: 0.00% | $-0.20 +2025-03-10 13:02:41,509 - INFO - OPENED LONG at 2045.99 | Stop loss: 2035.741392857143 | Take profit: 2076.707835714286 +2025-03-10 13:02:41,510 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,511 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,512 - INFO - CLOSED long at 2045.79 | PnL: -0.01% | $-0.22 +2025-03-10 13:02:41,512 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,513 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,515 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,517 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,517 - INFO - OPENED LONG at 2047.59 | Stop loss: 2037.3333928571428 | Take profit: 2078.3318357142857 +2025-03-10 13:02:41,518 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,519 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,524 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,524 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,525 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,526 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,527 - INFO - CLOSED long at 2050.24 | PnL: 0.13% | $0.06 +2025-03-10 13:02:41,529 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,530 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,531 - INFO - OPENED SHORT at 2049.89 | Stop loss: 2060.158107142857 | Take profit: 2019.1136642857143 +2025-03-10 13:02:41,531 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,532 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,533 - INFO - CLOSED short at 2051.11 | PnL: -0.06% | $-0.31 +2025-03-10 13:02:41,535 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,536 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,540 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,541 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,542 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,543 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,545 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,546 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,552 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,553 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,555 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,556 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,558 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,559 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,559 - INFO - OPENED LONG at 2058.39 | Stop loss: 2048.0793928571425 | Take profit: 2089.2938357142857 +2025-03-10 13:02:41,560 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,561 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,566 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,567 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,568 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,569 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,570 - INFO - CLOSED long at 2061.49 | PnL: 0.15% | $0.10 +2025-03-10 13:02:41,570 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,572 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,572 - INFO - OPENED LONG at 2063.29 | Stop loss: 2052.9548928571426 | Take profit: 2094.2673357142858 +2025-03-10 13:02:41,573 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,574 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,576 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,577 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,578 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,580 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,581 - INFO - CLOSED long at 2061.61 | PnL: -0.08% | $-0.36 +2025-03-10 13:02:41,581 - INFO - OPENED SHORT at 2061.61 | Stop loss: 2071.9367071428574 | Take profit: 2030.6578642857144 +2025-03-10 13:02:41,583 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,585 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,586 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,586 - INFO - CLOSED short at 2063.01 | PnL: -0.07% | $-0.33 +2025-03-10 13:02:41,588 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,589 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,589 - INFO - OPENED SHORT at 2060.99 | Stop loss: 2071.313607142857 | Take profit: 2030.047164285714 +2025-03-10 13:02:41,590 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,592 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,593 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,594 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,596 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,596 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,597 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,598 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,599 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,600 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,601 - INFO - CLOSED short at 2060.31 | PnL: 0.03% | $-0.13 +2025-03-10 13:02:41,601 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.9897928571427 | Take profit: 2091.2426357142854 +2025-03-10 13:02:41,603 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,603 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,605 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,607 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,607 - INFO - CLOSED long at 2057.8 | PnL: -0.12% | $-0.43 +2025-03-10 13:02:41,608 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,609 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,609 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.198107142857 | Take profit: 2026.9936642857142 +2025-03-10 13:02:41,611 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,611 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,616 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,618 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,618 - INFO - CLOSED short at 2058.11 | PnL: -0.01% | $-0.21 +2025-03-10 13:02:41,619 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,620 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,620 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,622 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,624 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,625 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,625 - INFO - OPENED SHORT at 2064.32 | Stop loss: 2074.660257142857 | Take profit: 2033.3272142857143 +2025-03-10 13:02:41,627 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,627 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,629 - INFO - CLOSED short at 2065.86 | PnL: -0.07% | $-0.34 +2025-03-10 13:02:41,629 - INFO - OPENED LONG at 2065.86 | Stop loss: 2055.512042857143 | Take profit: 2096.875885714286 +2025-03-10 13:02:41,630 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,632 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,633 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,634 - INFO - CLOSED long at 2068.11 | PnL: 0.11% | $0.02 +2025-03-10 13:02:41,634 - INFO - OPENED SHORT at 2068.11 | Stop loss: 2078.4692071428576 | Take profit: 2037.0603642857143 +2025-03-10 13:02:41,635 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,636 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,637 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,638 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,639 - INFO - CLOSED short at 2067.89 | PnL: 0.01% | $-0.17 +2025-03-10 13:02:41,640 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,642 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,642 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,644 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,644 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,646 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,647 - INFO - OPENED LONG at 2069.6 | Stop loss: 2059.233342857143 | Take profit: 2100.6719857142857 +2025-03-10 13:02:41,648 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,649 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,649 - INFO - CLOSED long at 2068.65 | PnL: -0.05% | $-0.28 +2025-03-10 13:02:41,651 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,652 - INFO - OPENED LONG at 2068.99 | Stop loss: 2058.6263928571425 | Take profit: 2100.0528357142853 +2025-03-10 13:02:41,653 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,653 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,655 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,656 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,657 - INFO - CLOSED long at 2067.69 | PnL: -0.06% | $-0.31 +2025-03-10 13:02:41,658 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,658 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,659 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,661 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,662 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,663 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,664 - INFO - OPENED SHORT at 2073.73 | Stop loss: 2084.117307142857 | Take profit: 2042.5960642857142 +2025-03-10 13:02:41,665 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,666 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,667 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,669 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,669 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,671 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,673 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,674 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,675 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,676 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,683 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,685 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,686 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,687 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,688 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,690 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,690 - INFO - CLOSED short at 2072.8 | PnL: 0.04% | $-0.11 +2025-03-10 13:02:41,690 - INFO - OPENED LONG at 2072.8 | Stop loss: 2062.417342857143 | Take profit: 2103.919985714286 +2025-03-10 13:02:41,692 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,693 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,694 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,695 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,696 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,697 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,698 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,700 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,700 - INFO - CLOSED long at 2067.2 | PnL: -0.27% | $-0.71 +2025-03-10 13:02:41,700 - INFO - OPENED SHORT at 2067.2 | Stop loss: 2077.5546571428567 | Take profit: 2036.1640142857143 +2025-03-10 13:02:41,701 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,703 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,704 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,705 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,706 - INFO - CLOSED short at 2068.9 | PnL: -0.08% | $-0.34 +2025-03-10 13:02:41,707 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,708 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,710 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,710 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,711 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.974642857143 | Take profit: 2100.408085714286 +2025-03-10 13:02:41,712 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,712 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,714 - INFO - CLOSED long at 2069.19 | PnL: -0.01% | $-0.20 +2025-03-10 13:02:41,714 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,716 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,717 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,719 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,719 - INFO - OPENED SHORT at 2067.6 | Stop loss: 2077.956657142857 | Take profit: 2036.558014285714 +2025-03-10 13:02:41,720 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,721 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,722 - INFO - CLOSED short at 2067.51 | PnL: 0.00% | $-0.18 +2025-03-10 13:02:41,723 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,724 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,725 - INFO - OPENED LONG at 2069.01 | Stop loss: 2058.646292857143 | Take profit: 2100.073135714286 +2025-03-10 13:02:41,726 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,727 - INFO - CLOSED long at 2066.39 | PnL: -0.13% | $-0.43 +2025-03-10 13:02:41,728 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.7406071428572 | Take profit: 2035.3661642857141 +2025-03-10 13:02:41,729 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,730 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,732 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,733 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,733 - INFO - CLOSED short at 2066.19 | PnL: 0.01% | $-0.17 +2025-03-10 13:02:41,733 - INFO - OPENED LONG at 2066.19 | Stop loss: 2055.840392857143 | Take profit: 2097.210835714286 +2025-03-10 13:02:41,735 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,736 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,736 - INFO - CLOSED long at 2066.29 | PnL: 0.00% | $-0.18 +2025-03-10 13:02:41,737 - INFO - OPENED SHORT at 2066.29 | Stop loss: 2076.6401071428572 | Take profit: 2035.2676642857143 +2025-03-10 13:02:41,738 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,738 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,740 - INFO - CLOSED short at 2065.08 | PnL: 0.06% | $-0.08 +2025-03-10 13:02:41,740 - INFO - OPENED LONG at 2065.08 | Stop loss: 2054.7359428571426 | Take profit: 2096.084185714286 +2025-03-10 13:02:41,741 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,742 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,742 - INFO - CLOSED long at 2066.18 | PnL: 0.05% | $-0.09 +2025-03-10 13:02:41,742 - INFO - OPENED SHORT at 2066.18 | Stop loss: 2076.529557142857 | Take profit: 2035.1593142857141 +2025-03-10 13:02:41,744 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,745 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,746 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,747 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,751 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,752 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,754 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,755 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,759 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,760 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,761 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,762 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,764 - INFO - CLOSED short at 2070.4 | PnL: -0.20% | $-0.57 +2025-03-10 13:02:41,764 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.029342857143 | Take profit: 2101.4839857142856 +2025-03-10 13:02:41,765 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,766 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,767 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,768 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,772 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,773 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,775 - INFO - CLOSED long at 2071.39 | PnL: 0.05% | $-0.10 +2025-03-10 13:02:41,775 - INFO - OPENED SHORT at 2071.39 | Stop loss: 2081.765607142857 | Take profit: 2040.291164285714 +2025-03-10 13:02:41,776 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,776 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,777 - INFO - CLOSED short at 2071.36 | PnL: 0.00% | $-0.18 +2025-03-10 13:02:41,777 - INFO - OPENED LONG at 2071.36 | Stop loss: 2060.984542857143 | Take profit: 2102.458385714286 +2025-03-10 13:02:41,779 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,779 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,781 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,782 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,782 - INFO - CLOSED long at 2073.11 | PnL: 0.08% | $-0.03 +2025-03-10 13:02:41,783 - INFO - OPENED SHORT at 2073.11 | Stop loss: 2083.4942071428572 | Take profit: 2041.9853642857142 +2025-03-10 13:02:41,783 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,784 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,787 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,787 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,788 - INFO - CLOSED short at 2072.15 | PnL: 0.05% | $-0.10 +2025-03-10 13:02:41,789 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,790 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,790 - INFO - OPENED SHORT at 2074.29 | Stop loss: 2084.680107142857 | Take profit: 2043.1476642857142 +2025-03-10 13:02:41,792 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,794 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,795 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,796 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,797 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,801 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,801 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,803 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,803 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,805 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,806 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,808 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,809 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,813 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,815 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,817 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,817 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,818 - INFO - CLOSED short at 2067.79 | PnL: 0.31% | $0.39 +2025-03-10 13:02:41,820 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,821 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,821 - INFO - OPENED LONG at 2067.46 | Stop loss: 2057.1040428571428 | Take profit: 2098.4998857142855 +2025-03-10 13:02:41,822 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,823 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,824 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,824 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,829 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,830 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,831 - INFO - CLOSED long at 2063.61 | PnL: -0.19% | $-0.53 +2025-03-10 13:02:41,832 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,833 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,834 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.6049571428575 | Take profit: 2034.2531142857144 +2025-03-10 13:02:41,836 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,837 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,837 - INFO - CLOSED short at 2067.89 | PnL: -0.13% | $-0.42 +2025-03-10 13:02:41,838 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,840 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,845 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,845 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,847 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,848 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,852 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,853 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,854 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.502042857143 | Take profit: 2098.905885714286 +2025-03-10 13:02:41,855 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,856 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,860 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,861 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,861 - INFO - CLOSED long at 2069.2 | PnL: 0.06% | $-0.06 +2025-03-10 13:02:41,862 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,863 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,868 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,869 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,870 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,871 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,873 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,874 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,876 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,878 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,882 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,883 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,885 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,886 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,888 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,888 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,890 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,890 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,892 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,893 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,896 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,897 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,898 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,899 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,899 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.7508428571427 | Take profit: 2097.1194857142855 +2025-03-10 13:02:41,901 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,901 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,902 - INFO - CLOSED long at 2065.28 | PnL: -0.04% | $-0.26 +2025-03-10 13:02:41,902 - INFO - OPENED SHORT at 2065.28 | Stop loss: 2075.6250571428577 | Take profit: 2034.2728142857145 +2025-03-10 13:02:41,904 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,905 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,906 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,907 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,908 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,909 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,911 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,912 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,916 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,918 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,919 - INFO - CLOSED short at 2068.18 | PnL: -0.14% | $-0.44 +2025-03-10 13:02:41,919 - INFO - OPENED LONG at 2068.18 | Stop loss: 2057.8204428571426 | Take profit: 2099.2306857142858 +2025-03-10 13:02:41,920 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,920 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,921 - INFO - CLOSED long at 2065.69 | PnL: -0.12% | $-0.40 +2025-03-10 13:02:41,921 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.037107142857 | Take profit: 2034.6766642857144 +2025-03-10 13:02:41,922 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,922 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,929 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,930 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,931 - INFO - CLOSED short at 2064.99 | PnL: 0.03% | $-0.12 +2025-03-10 13:02:41,931 - INFO - OPENED LONG at 2064.99 | Stop loss: 2054.6463928571425 | Take profit: 2095.9928357142853 +2025-03-10 13:02:41,933 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,934 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,935 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,937 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,937 - INFO - CLOSED long at 2066.15 | PnL: 0.06% | $-0.08 +2025-03-10 13:02:41,937 - INFO - OPENED SHORT at 2066.15 | Stop loss: 2076.4994071428573 | Take profit: 2035.1297642857144 +2025-03-10 13:02:41,939 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,940 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,941 - INFO - CLOSED short at 2065.26 | PnL: 0.04% | $-0.10 +2025-03-10 13:02:41,941 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.915042857143 | Take profit: 2096.2668857142858 +2025-03-10 13:02:41,943 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,944 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,944 - INFO - CLOSED long at 2062.89 | PnL: -0.11% | $-0.39 +2025-03-10 13:02:41,944 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.223107142857 | Take profit: 2031.9186642857142 +2025-03-10 13:02:41,945 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,945 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,947 - INFO - CLOSED short at 2062.65 | PnL: 0.01% | $-0.16 +2025-03-10 13:02:41,948 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,949 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,949 - INFO - OPENED SHORT at 2061.78 | Stop loss: 2072.1075571428573 | Take profit: 2030.8253142857145 +2025-03-10 13:02:41,950 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,951 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,952 - INFO - CLOSED short at 2059.59 | PnL: 0.11% | $0.01 +2025-03-10 13:02:41,954 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,955 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,956 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,957 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,959 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,960 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,961 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,963 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,964 - INFO - OPENED LONG at 2066.24 | Stop loss: 2055.8901428571426 | Take profit: 2097.2615857142855 +2025-03-10 13:02:41,965 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,966 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,968 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,969 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,970 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,972 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,972 - INFO - CLOSED long at 2066.09 | PnL: -0.01% | $-0.19 +2025-03-10 13:02:41,973 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,974 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,975 - INFO - OPENED SHORT at 2064.45 | Stop loss: 2074.790907142857 | Take profit: 2033.455264285714 +2025-03-10 13:02:41,976 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,978 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,979 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,980 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,981 - INFO - CLOSED short at 2062.71 | PnL: 0.08% | $-0.03 +2025-03-10 13:02:41,981 - INFO - OPENED LONG at 2062.71 | Stop loss: 2052.3777928571426 | Take profit: 2093.678635714286 +2025-03-10 13:02:41,982 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,983 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,984 - INFO - CLOSED long at 2062.89 | PnL: 0.01% | $-0.16 +2025-03-10 13:02:41,985 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,986 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,987 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.1588428571426 | Take profit: 2095.4954857142857 +2025-03-10 13:02:41,988 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,989 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,994 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,994 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:41,995 - INFO - CLOSED long at 2061.6 | PnL: -0.14% | $-0.43 +2025-03-10 13:02:41,996 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:41,998 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,003 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,004 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,005 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,006 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,007 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.576892857143 | Take profit: 2089.8013357142854 +2025-03-10 13:02:42,008 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,008 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,010 - INFO - CLOSED long at 2059.3 | PnL: 0.02% | $-0.14 +2025-03-10 13:02:42,011 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,011 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,012 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.9897928571427 | Take profit: 2091.2426357142854 +2025-03-10 13:02:42,013 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,013 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,014 - INFO - CLOSED long at 2061.8 | PnL: 0.07% | $-0.05 +2025-03-10 13:02:42,014 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,017 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,018 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,019 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,019 - INFO - OPENED SHORT at 2062.61 | Stop loss: 2072.941707142857 | Take profit: 2031.6428642857145 +2025-03-10 13:02:42,021 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,021 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,023 - INFO - CLOSED short at 2060.91 | PnL: 0.08% | $-0.03 +2025-03-10 13:02:42,024 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,025 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,025 - INFO - OPENED LONG at 2060.3 | Stop loss: 2049.979842857143 | Take profit: 2091.2324857142858 +2025-03-10 13:02:42,026 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,027 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,028 - INFO - CLOSED long at 2061.13 | PnL: 0.04% | $-0.11 +2025-03-10 13:02:42,028 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,030 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,030 - INFO - OPENED SHORT at 2061.9 | Stop loss: 2072.228157142857 | Take profit: 2030.9435142857144 +2025-03-10 13:02:42,032 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,033 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,034 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,035 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,036 - INFO - CLOSED short at 2065.36 | PnL: -0.17% | $-0.47 +2025-03-10 13:02:42,036 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,038 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,039 - INFO - OPENED LONG at 2064.33 | Stop loss: 2053.9896928571425 | Take profit: 2095.3229357142854 +2025-03-10 13:02:42,040 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,041 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,041 - INFO - CLOSED long at 2063.39 | PnL: -0.05% | $-0.26 +2025-03-10 13:02:42,042 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,043 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,044 - INFO - OPENED LONG at 2064.79 | Stop loss: 2054.447392857143 | Take profit: 2095.789835714286 +2025-03-10 13:02:42,046 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,047 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,050 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,051 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,052 - INFO - CLOSED long at 2063.53 | PnL: -0.06% | $-0.28 +2025-03-10 13:02:42,052 - INFO - OPENED SHORT at 2063.53 | Stop loss: 2073.8663071428573 | Take profit: 2032.5490642857144 +2025-03-10 13:02:42,054 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,055 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,056 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,058 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,059 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,060 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,060 - INFO - CLOSED short at 2061.89 | PnL: 0.08% | $-0.04 +2025-03-10 13:02:42,060 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.5618928571425 | Take profit: 2092.846335714286 +2025-03-10 13:02:42,062 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,063 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,068 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,069 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,073 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,074 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,076 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,077 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,082 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,083 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,084 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,085 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,085 - INFO - CLOSED long at 2059.02 | PnL: -0.14% | $-0.42 +2025-03-10 13:02:42,086 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,087 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,089 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,091 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,097 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,098 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,099 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,100 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,101 - INFO - OPENED SHORT at 2057.4 | Stop loss: 2067.7056571428575 | Take profit: 2026.5110142857143 +2025-03-10 13:02:42,102 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,103 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,105 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,106 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,110 - INFO - CLOSED short at 2056.28 | PnL: 0.05% | $-0.08 +2025-03-10 13:02:42,111 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,112 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,113 - INFO - OPENED SHORT at 2055.6 | Stop loss: 2065.8966571428573 | Take profit: 2024.7380142857141 +2025-03-10 13:02:42,115 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,116 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,118 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,118 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,119 - INFO - CLOSED short at 2054.83 | PnL: 0.04% | $-0.11 +2025-03-10 13:02:42,119 - INFO - OPENED LONG at 2054.83 | Stop loss: 2044.5371928571428 | Take profit: 2085.6804357142855 +2025-03-10 13:02:42,120 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,122 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,122 - INFO - CLOSED long at 2056.71 | PnL: 0.09% | $-0.01 +2025-03-10 13:02:42,123 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,125 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,125 - INFO - OPENED LONG at 2058.15 | Stop loss: 2047.8405928571428 | Take profit: 2089.050235714286 +2025-03-10 13:02:42,127 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,127 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,128 - INFO - CLOSED long at 2059.8 | PnL: 0.08% | $-0.03 +2025-03-10 13:02:42,128 - INFO - OPENED SHORT at 2059.8 | Stop loss: 2070.1176571428573 | Take profit: 2028.8750142857145 +2025-03-10 13:02:42,130 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,131 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,132 - INFO - CLOSED short at 2061.66 | PnL: -0.09% | $-0.33 +2025-03-10 13:02:42,133 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,134 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,139 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,140 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,140 - INFO - OPENED SHORT at 2061.6 | Stop loss: 2071.926657142857 | Take profit: 2030.6480142857142 +2025-03-10 13:02:42,142 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,143 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,144 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,145 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,146 - INFO - CLOSED short at 2062.69 | PnL: -0.05% | $-0.26 +2025-03-10 13:02:42,147 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,148 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,149 - INFO - OPENED LONG at 2063.4 | Stop loss: 2053.064342857143 | Take profit: 2094.378985714286 +2025-03-10 13:02:42,150 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,151 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,157 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,158 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,158 - INFO - CLOSED long at 2066.01 | PnL: 0.13% | $0.05 +2025-03-10 13:02:42,160 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,160 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,162 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,163 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,165 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,166 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,170 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,171 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,172 - INFO - OPENED LONG at 2066.34 | Stop loss: 2055.9896428571433 | Take profit: 2097.3630857142857 +2025-03-10 13:02:42,173 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,174 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,174 - INFO - CLOSED long at 2066.79 | PnL: 0.02% | $-0.13 +2025-03-10 13:02:42,175 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,176 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,181 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,182 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,184 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,185 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,191 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,191 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,193 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,194 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,196 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,197 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,198 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,199 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,200 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,201 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,202 - INFO - OPENED LONG at 2075.01 | Stop loss: 2064.616292857143 | Take profit: 2106.163135714286 +2025-03-10 13:02:42,203 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,204 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,208 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,209 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,211 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,212 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,213 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,214 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,216 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,217 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,221 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,222 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,224 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,225 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,225 - INFO - CLOSED long at 2068.15 | PnL: -0.33% | $-0.74 +2025-03-10 13:02:42,226 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,227 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,228 - INFO - OPENED LONG at 2068.39 | Stop loss: 2058.0293928571427 | Take profit: 2099.4438357142853 +2025-03-10 13:02:42,229 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,230 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,232 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,232 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,239 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,240 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,241 - INFO - CLOSED long at 2067.44 | PnL: -0.05% | $-0.25 +2025-03-10 13:02:42,242 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,242 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,243 - INFO - OPENED LONG at 2068.79 | Stop loss: 2058.427392857143 | Take profit: 2099.8498357142853 +2025-03-10 13:02:42,245 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,246 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,247 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,248 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,250 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,251 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,257 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,258 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,258 - INFO - CLOSED long at 2067.33 | PnL: -0.07% | $-0.29 +2025-03-10 13:02:42,258 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.685307142857 | Take profit: 2036.292064285714 +2025-03-10 13:02:42,259 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,260 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,266 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,267 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,268 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,269 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,269 - INFO - CLOSED short at 2065.66 | PnL: 0.08% | $-0.03 +2025-03-10 13:02:42,269 - INFO - OPENED LONG at 2065.66 | Stop loss: 2055.3130428571426 | Take profit: 2096.6728857142857 +2025-03-10 13:02:42,271 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,272 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,273 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,275 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,276 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,277 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,278 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,279 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,280 - INFO - CLOSED long at 2065.3 | PnL: -0.02% | $-0.20 +2025-03-10 13:02:42,280 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,281 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,282 - INFO - OPENED LONG at 2064.4 | Stop loss: 2054.059342857143 | Take profit: 2095.393985714286 +2025-03-10 13:02:42,283 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,284 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,284 - INFO - CLOSED long at 2064.31 | PnL: -0.00% | $-0.18 +2025-03-10 13:02:42,286 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,287 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,287 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,289 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,290 - INFO - OPENED SHORT at 2067.53 | Stop loss: 2077.8863071428573 | Take profit: 2036.4890642857147 +2025-03-10 13:02:42,291 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,292 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,296 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,298 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,299 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,300 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,301 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,303 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,307 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,308 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,310 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,311 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,313 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,314 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,319 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,320 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,321 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,323 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,324 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,325 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,326 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,327 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,328 - INFO - CLOSED short at 2070.7 | PnL: -0.15% | $-0.43 +2025-03-10 13:02:42,328 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,329 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,336 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,336 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,339 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,339 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,340 - INFO - OPENED LONG at 2070.61 | Stop loss: 2060.238292857143 | Take profit: 2101.6971357142857 +2025-03-10 13:02:42,341 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,342 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,348 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,348 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,351 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,352 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,352 - INFO - CLOSED long at 2068.67 | PnL: -0.09% | $-0.32 +2025-03-10 13:02:42,352 - INFO - OPENED SHORT at 2068.67 | Stop loss: 2079.0320071428573 | Take profit: 2037.6119642857143 +2025-03-10 13:02:42,353 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,355 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,355 - INFO - CLOSED short at 2070.67 | PnL: -0.10% | $-0.33 +2025-03-10 13:02:42,356 - INFO - OPENED LONG at 2070.67 | Stop loss: 2060.2979928571426 | Take profit: 2101.7580357142856 +2025-03-10 13:02:42,357 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,358 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,358 - INFO - CLOSED long at 2069.78 | PnL: -0.04% | $-0.24 +2025-03-10 13:02:42,359 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,360 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,366 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,367 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,368 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,369 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,371 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,372 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,374 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,376 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,376 - INFO - OPENED SHORT at 2073.27 | Stop loss: 2083.655007142857 | Take profit: 2042.1429642857142 +2025-03-10 13:02:42,377 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,378 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,383 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,384 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,384 - INFO - CLOSED short at 2075.32 | PnL: -0.10% | $-0.33 +2025-03-10 13:02:42,386 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,387 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,391 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,392 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,393 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,394 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,395 - INFO - OPENED SHORT at 2075.61 | Stop loss: 2086.006707142857 | Take profit: 2044.4478642857146 +2025-03-10 13:02:42,395 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,397 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,398 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,399 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,401 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,402 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,402 - INFO - CLOSED short at 2069.97 | PnL: 0.27% | $0.28 +2025-03-10 13:02:42,403 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,404 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,404 - INFO - OPENED SHORT at 2067.7 | Stop loss: 2078.057157142857 | Take profit: 2036.6565142857141 +2025-03-10 13:02:42,406 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,407 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,408 - INFO - CLOSED short at 2067.0 | PnL: 0.03% | $-0.11 +2025-03-10 13:02:42,408 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.646342857143 | Take profit: 2098.032985714286 +2025-03-10 13:02:42,409 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,409 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,410 - INFO - CLOSED long at 2067.9 | PnL: 0.04% | $-0.09 +2025-03-10 13:02:42,410 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,411 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,412 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.750657142857 | Take profit: 2035.3760142857143 +2025-03-10 13:02:42,413 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,414 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,415 - INFO - CLOSED short at 2066.89 | PnL: -0.02% | $-0.20 +2025-03-10 13:02:42,416 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,417 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,419 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,421 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,421 - INFO - OPENED SHORT at 2065.45 | Stop loss: 2075.795907142857 | Take profit: 2034.4402642857142 +2025-03-10 13:02:42,422 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,423 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,424 - INFO - CLOSED short at 2068.1 | PnL: -0.13% | $-0.38 +2025-03-10 13:02:42,424 - INFO - OPENED LONG at 2068.1 | Stop loss: 2057.740842857143 | Take profit: 2099.1494857142857 +2025-03-10 13:02:42,425 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,426 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,427 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,428 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,433 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,434 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,434 - INFO - CLOSED long at 2070.1 | PnL: 0.10% | $-0.01 +2025-03-10 13:02:42,435 - INFO - OPENED SHORT at 2070.1 | Stop loss: 2080.469157142857 | Take profit: 2039.0205142857142 +2025-03-10 13:02:42,435 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,436 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,438 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,439 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,440 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,441 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,442 - INFO - CLOSED short at 2065.7 | PnL: 0.21% | $0.18 +2025-03-10 13:02:42,442 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.3528428571426 | Take profit: 2096.713485714286 +2025-03-10 13:02:42,443 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,445 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,449 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,451 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,451 - INFO - CLOSED long at 2065.07 | PnL: -0.03% | $-0.21 +2025-03-10 13:02:42,451 - INFO - OPENED SHORT at 2065.07 | Stop loss: 2075.4140071428574 | Take profit: 2034.0659642857145 +2025-03-10 13:02:42,452 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,454 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,454 - INFO - CLOSED short at 2066.09 | PnL: -0.05% | $-0.25 +2025-03-10 13:02:42,454 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.740892857143 | Take profit: 2097.109335714286 +2025-03-10 13:02:42,455 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,456 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,457 - INFO - CLOSED long at 2063.39 | PnL: -0.13% | $-0.38 +2025-03-10 13:02:42,459 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,459 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,460 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,461 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,467 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,468 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,470 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,470 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,472 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,473 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,473 - INFO - OPENED SHORT at 2064.11 | Stop loss: 2074.449207142857 | Take profit: 2033.1203642857145 +2025-03-10 13:02:42,474 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,475 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,480 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,482 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,482 - INFO - CLOSED short at 2066.33 | PnL: -0.11% | $-0.34 +2025-03-10 13:02:42,483 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.9796928571427 | Take profit: 2097.3529357142856 +2025-03-10 13:02:42,484 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,485 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,487 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,488 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,488 - INFO - CLOSED long at 2060.7 | PnL: -0.27% | $-0.60 +2025-03-10 13:02:42,489 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.022157142857 | Take profit: 2029.7615142857142 +2025-03-10 13:02:42,490 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,491 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,492 - INFO - CLOSED short at 2060.2 | PnL: 0.02% | $-0.12 +2025-03-10 13:02:42,492 - INFO - OPENED LONG at 2060.2 | Stop loss: 2049.8803428571428 | Take profit: 2091.1309857142855 +2025-03-10 13:02:42,493 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,494 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,495 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,496 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,501 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,502 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,504 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,505 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,505 - INFO - CLOSED long at 2056.77 | PnL: -0.17% | $-0.43 +2025-03-10 13:02:42,505 - INFO - OPENED SHORT at 2056.77 | Stop loss: 2067.0725071428574 | Take profit: 2025.8904642857142 +2025-03-10 13:02:42,506 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,507 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,508 - INFO - CLOSED short at 2053.01 | PnL: 0.18% | $0.13 +2025-03-10 13:02:42,509 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,510 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,511 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,513 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,513 - INFO - OPENED SHORT at 2049.5 | Stop loss: 2059.766157142857 | Take profit: 2018.7295142857145 +2025-03-10 13:02:42,514 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,515 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,515 - INFO - CLOSED short at 2051.99 | PnL: -0.12% | $-0.35 +2025-03-10 13:02:42,517 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,518 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,518 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.989842857143 | Take profit: 2089.2024857142856 +2025-03-10 13:02:42,519 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,519 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,521 - INFO - CLOSED long at 2056.85 | PnL: -0.07% | $-0.27 +2025-03-10 13:02:42,521 - INFO - OPENED SHORT at 2056.85 | Stop loss: 2067.1529071428567 | Take profit: 2025.9692642857142 +2025-03-10 13:02:42,523 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,524 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,525 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,526 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,527 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,528 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,529 - INFO - CLOSED short at 2062.83 | PnL: -0.29% | $-0.62 +2025-03-10 13:02:42,530 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,531 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,536 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,536 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,537 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,538 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,542 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,545 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,546 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,547 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,549 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,550 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,550 - INFO - OPENED SHORT at 2068.33 | Stop loss: 2078.6903071428574 | Take profit: 2037.2770642857142 +2025-03-10 13:02:42,552 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,552 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,555 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,556 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,557 - INFO - CLOSED short at 2066.59 | PnL: 0.08% | $-0.03 +2025-03-10 13:02:42,558 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,559 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,565 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,566 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,570 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,571 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,573 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,574 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,575 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.022157142857 | Take profit: 2029.7615142857142 +2025-03-10 13:02:42,576 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,578 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,579 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,580 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,581 - INFO - CLOSED short at 2062.54 | PnL: -0.09% | $-0.30 +2025-03-10 13:02:42,581 - INFO - OPENED LONG at 2062.54 | Stop loss: 2052.208642857143 | Take profit: 2093.5060857142857 +2025-03-10 13:02:42,583 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,586 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,587 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,587 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,589 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,589 - INFO - CLOSED long at 2070.24 | PnL: 0.37% | $0.43 +2025-03-10 13:02:42,591 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,592 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,592 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.7053571428573 | Take profit: 2038.2719142857143 +2025-03-10 13:02:42,593 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,594 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,595 - INFO - CLOSED short at 2069.81 | PnL: -0.02% | $-0.19 +2025-03-10 13:02:42,595 - INFO - OPENED LONG at 2069.81 | Stop loss: 2059.4422928571425 | Take profit: 2100.8851357142858 +2025-03-10 13:02:42,597 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,598 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,599 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,600 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,601 - INFO - CLOSED long at 2073.49 | PnL: 0.18% | $0.12 +2025-03-10 13:02:42,602 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,603 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,607 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,608 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,609 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,610 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,611 - INFO - OPENED SHORT at 2071.89 | Stop loss: 2082.268107142857 | Take profit: 2040.7836642857142 +2025-03-10 13:02:42,611 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,613 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,614 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,615 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,616 - INFO - CLOSED short at 2074.9 | PnL: -0.15% | $-0.39 +2025-03-10 13:02:42,616 - INFO - OPENED LONG at 2074.9 | Stop loss: 2064.506842857143 | Take profit: 2106.0514857142857 +2025-03-10 13:02:42,618 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,618 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,620 - INFO - CLOSED long at 2076.08 | PnL: 0.06% | $-0.07 +2025-03-10 13:02:42,621 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,622 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,623 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,624 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,625 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,626 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,628 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,628 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,629 - INFO - OPENED LONG at 2103.02 | Stop loss: 2092.4862428571428 | Take profit: 2134.5932857142857 +2025-03-10 13:02:42,630 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,632 - INFO - CLOSED long at 2130.7 | PnL: 1.32% | $1.91 +2025-03-10 13:02:42,632 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.372157142857 | Take profit: 2098.711514285714 +2025-03-10 13:02:42,633 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,634 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,636 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,637 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,637 - INFO - CLOSED short at 2131.78 | PnL: -0.05% | $-0.24 +2025-03-10 13:02:42,638 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,639 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,641 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,642 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,644 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,645 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,646 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,647 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,648 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,649 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,650 - INFO - OPENED LONG at 2142.68 | Stop loss: 2131.9479428571426 | Take profit: 2174.8481857142856 +2025-03-10 13:02:42,652 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,653 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,654 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,655 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,655 - INFO - CLOSED long at 2134.78 | PnL: -0.37% | $-0.75 +2025-03-10 13:02:42,656 - INFO - OPENED SHORT at 2134.78 | Stop loss: 2145.4725571428576 | Take profit: 2102.7303142857145 +2025-03-10 13:02:42,656 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,658 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,658 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,660 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,662 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,663 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,664 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,666 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,666 - INFO - CLOSED short at 2121.09 | PnL: 0.64% | $0.86 +2025-03-10 13:02:42,667 - INFO - OPENED LONG at 2121.09 | Stop loss: 2110.465892857143 | Take profit: 2152.9343357142857 +2025-03-10 13:02:42,668 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,670 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,671 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,671 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,672 - INFO - CLOSED long at 2117.24 | PnL: -0.18% | $-0.45 +2025-03-10 13:02:42,672 - INFO - OPENED SHORT at 2117.24 | Stop loss: 2127.844857142857 | Take profit: 2085.453414285714 +2025-03-10 13:02:42,674 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,675 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,676 - INFO - CLOSED short at 2119.93 | PnL: -0.13% | $-0.36 +2025-03-10 13:02:42,676 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3116928571426 | Take profit: 2151.7569357142856 +2025-03-10 13:02:42,677 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,678 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,685 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,686 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,686 - INFO - CLOSED long at 2118.52 | PnL: -0.07% | $-0.26 +2025-03-10 13:02:42,688 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,689 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,689 - INFO - OPENED SHORT at 2119.14 | Stop loss: 2129.7543571428573 | Take profit: 2087.324914285714 +2025-03-10 13:02:42,690 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,691 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,691 - INFO - CLOSED short at 2119.07 | PnL: 0.00% | $-0.15 +2025-03-10 13:02:42,692 - INFO - OPENED LONG at 2119.07 | Stop loss: 2108.455992857143 | Take profit: 2150.884035714286 +2025-03-10 13:02:42,693 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,695 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,695 - INFO - CLOSED long at 2115.28 | PnL: -0.18% | $-0.44 +2025-03-10 13:02:42,696 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,697 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,698 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,700 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,700 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.028342857143 | Take profit: 2142.2869857142855 +2025-03-10 13:02:42,701 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,702 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,703 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,705 - INFO - CLOSED long at 2112.09 | PnL: 0.07% | $-0.05 +2025-03-10 13:02:42,706 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,706 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,708 - INFO - OPENED SHORT at 2112.95 | Stop loss: 2123.533407142857 | Take profit: 2081.2277642857143 +2025-03-10 13:02:42,709 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,709 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,711 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,712 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,712 - INFO - CLOSED short at 2113.24 | PnL: -0.01% | $-0.18 +2025-03-10 13:02:42,713 - INFO - OPENED LONG at 2113.24 | Stop loss: 2102.655142857143 | Take profit: 2144.9665857142854 +2025-03-10 13:02:42,714 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,714 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,716 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,717 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,719 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,720 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,720 - INFO - CLOSED long at 2116.48 | PnL: 0.15% | $0.08 +2025-03-10 13:02:42,723 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,724 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,728 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,730 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,734 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,735 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,739 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,740 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,742 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,744 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,749 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,751 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,751 - INFO - OPENED SHORT at 2103.33 | Stop loss: 2113.865307142857 | Take profit: 2071.7520642857144 +2025-03-10 13:02:42,753 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,754 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,758 - INFO - CLOSED short at 2100.5 | PnL: 0.13% | $0.05 +2025-03-10 13:02:42,759 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,760 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,760 - INFO - OPENED SHORT at 2090.0 | Stop loss: 2100.468657142857 | Take profit: 2058.622014285714 +2025-03-10 13:02:42,762 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,763 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,764 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,765 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,767 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,767 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,769 - INFO - CLOSED short at 2102.19 | PnL: -0.58% | $-1.07 +2025-03-10 13:02:42,770 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,771 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,772 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,773 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,775 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,775 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,777 - INFO - OPENED SHORT at 2098.9 | Stop loss: 2109.4131571428575 | Take profit: 2067.3885142857143 +2025-03-10 13:02:42,778 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,779 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,784 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,785 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,786 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,787 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,787 - INFO - CLOSED short at 2106.39 | PnL: -0.36% | $-0.71 +2025-03-10 13:02:42,789 - INFO - OPENED LONG at 2106.39 | Stop loss: 2095.8393928571427 | Take profit: 2138.0138357142855 +2025-03-10 13:02:42,790 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,791 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,791 - INFO - CLOSED long at 2100.74 | PnL: -0.27% | $-0.57 +2025-03-10 13:02:42,791 - INFO - OPENED SHORT at 2100.74 | Stop loss: 2111.262357142857 | Take profit: 2069.200914285714 +2025-03-10 13:02:42,793 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,793 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,795 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,796 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,797 - INFO - CLOSED short at 2104.68 | PnL: -0.19% | $-0.44 +2025-03-10 13:02:42,798 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,799 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,800 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,802 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,803 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,805 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,805 - INFO - OPENED SHORT at 2100.02 | Stop loss: 2110.538757142857 | Take profit: 2068.4917142857144 +2025-03-10 13:02:42,807 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,808 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,808 - INFO - CLOSED short at 2098.39 | PnL: 0.08% | $-0.03 +2025-03-10 13:02:42,809 - INFO - OPENED LONG at 2098.39 | Stop loss: 2087.8793928571426 | Take profit: 2129.8938357142856 +2025-03-10 13:02:42,810 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,810 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,815 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,816 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,817 - INFO - CLOSED long at 2093.46 | PnL: -0.23% | $-0.51 +2025-03-10 13:02:42,817 - INFO - OPENED SHORT at 2093.46 | Stop loss: 2103.945957142857 | Take profit: 2062.0301142857143 +2025-03-10 13:02:42,819 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,820 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,825 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,826 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,827 - INFO - CLOSED short at 2092.46 | PnL: 0.05% | $-0.08 +2025-03-10 13:02:42,828 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,829 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,836 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,837 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,838 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,839 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,840 - INFO - OPENED SHORT at 2094.08 | Stop loss: 2104.569057142857 | Take profit: 2062.640814285714 +2025-03-10 13:02:42,841 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,842 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,843 - INFO - CLOSED short at 2088.35 | PnL: 0.27% | $0.26 +2025-03-10 13:02:42,844 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,845 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,850 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,851 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,851 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.979142857143 | Take profit: 2119.7945857142854 +2025-03-10 13:02:42,853 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,854 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,855 - INFO - CLOSED long at 2083.97 | PnL: -0.21% | $-0.47 +2025-03-10 13:02:42,856 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,857 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,858 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,859 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,860 - INFO - OPENED LONG at 2082.44 | Stop loss: 2072.0091428571427 | Take profit: 2113.7045857142857 +2025-03-10 13:02:42,861 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,862 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,863 - INFO - CLOSED long at 2081.49 | PnL: -0.05% | $-0.22 +2025-03-10 13:02:42,863 - INFO - OPENED SHORT at 2081.49 | Stop loss: 2091.916107142857 | Take profit: 2050.239664285714 +2025-03-10 13:02:42,864 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,865 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,866 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,867 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,873 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,874 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,876 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,877 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,882 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,883 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,886 - INFO - CLOSED short at 2083.59 | PnL: -0.10% | $-0.30 +2025-03-10 13:02:42,887 - INFO - OPENED LONG at 2083.59 | Stop loss: 2073.153392857143 | Take profit: 2114.871835714286 +2025-03-10 13:02:42,887 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,890 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,891 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,892 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,897 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,898 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,902 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,903 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,905 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,905 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,906 - INFO - CLOSED long at 2085.85 | PnL: 0.11% | $0.01 +2025-03-10 13:02:42,907 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,908 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,909 - INFO - OPENED SHORT at 2088.66 | Stop loss: 2099.121957142857 | Take profit: 2057.302114285714 +2025-03-10 13:02:42,910 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,912 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,912 - INFO - CLOSED short at 2088.32 | PnL: 0.02% | $-0.12 +2025-03-10 13:02:42,914 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,915 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,915 - INFO - OPENED SHORT at 2088.1 | Stop loss: 2098.559157142857 | Take profit: 2056.750514285714 +2025-03-10 13:02:42,916 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,917 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,920 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,921 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,922 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,924 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,924 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,927 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,928 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,928 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,929 - INFO - CLOSED short at 2086.81 | PnL: 0.06% | $-0.06 +2025-03-10 13:02:42,929 - INFO - OPENED LONG at 2086.81 | Stop loss: 2076.3572928571425 | Take profit: 2118.1401357142854 +2025-03-10 13:02:42,931 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,932 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,932 - INFO - CLOSED long at 2089.79 | PnL: 0.14% | $0.06 +2025-03-10 13:02:42,934 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,934 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,936 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,937 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,942 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,943 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,943 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.5239071428573 | Take profit: 2059.6562642857148 +2025-03-10 13:02:42,944 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,946 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,946 - INFO - CLOSED short at 2091.05 | PnL: 0.00% | $-0.15 +2025-03-10 13:02:42,946 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.576092857143 | Take profit: 2122.4437357142856 +2025-03-10 13:02:42,947 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,948 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,949 - INFO - CLOSED long at 2091.95 | PnL: 0.04% | $-0.08 +2025-03-10 13:02:42,950 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,951 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,953 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,954 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,955 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,956 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,958 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,959 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,960 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,961 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,962 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,964 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,965 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,966 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,968 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,969 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,971 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,972 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,977 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,978 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,979 - INFO - OPENED LONG at 2106.15 | Stop loss: 2095.600592857143 | Take profit: 2137.7702357142857 +2025-03-10 13:02:42,980 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,981 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,984 - INFO - CLOSED long at 2103.48 | PnL: -0.13% | $-0.34 +2025-03-10 13:02:42,985 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:42,987 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:42,988 - INFO - Trade Analysis: Win Rate=5.9% in uptrends, 0.0% in downtrends | Avg Win=$0.28, Avg Loss=$-0.27 +2025-03-10 13:02:42,988 - INFO - Episode 3: Reward=-148.63, Balance=$74.40, Win Rate=13.5%, Trades=133, Episode PnL=$-19.59, Total PnL=$-105.59, Max Drawdown=25.6%, Pred Accuracy=98.6% +2025-03-10 13:02:42,988 - ERROR - Error in episode 3: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:02:42,990 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1763, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:02:43,010 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 13:02:43,198 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,200 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,200 - INFO - OPENED SHORT at 2049.49 | Stop loss: 2059.756107142857 | Take profit: 2018.719664285714 +2025-03-10 13:02:43,202 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,203 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,205 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,206 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,208 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,210 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,212 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,213 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,216 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,217 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,218 - INFO - CLOSED short at 2049.24 | PnL: 0.01% | $-0.17 +2025-03-10 13:02:43,219 - INFO - OPENED LONG at 2049.24 | Stop loss: 2038.9751428571426 | Take profit: 2080.0065857142854 +2025-03-10 13:02:43,220 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,222 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,224 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,225 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,227 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,229 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,229 - INFO - CLOSED long at 2046.58 | PnL: -0.13% | $-0.45 +2025-03-10 13:02:43,230 - INFO - OPENED SHORT at 2046.58 | Stop loss: 2056.8315571428575 | Take profit: 2015.8533142857143 +2025-03-10 13:02:43,232 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,233 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,235 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,236 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,238 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,240 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,247 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,249 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,250 - INFO - CLOSED short at 2045.99 | PnL: 0.03% | $-0.14 +2025-03-10 13:02:43,251 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,253 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,253 - INFO - OPENED LONG at 2045.79 | Stop loss: 2035.5423928571429 | Take profit: 2076.5048357142855 +2025-03-10 13:02:43,255 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,256 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,258 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,259 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,261 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,262 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,264 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,266 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,266 - INFO - CLOSED long at 2050.0 | PnL: 0.21% | $0.21 +2025-03-10 13:02:43,267 - INFO - OPENED SHORT at 2050.0 | Stop loss: 2060.268657142857 | Take profit: 2019.2220142857143 +2025-03-10 13:02:43,268 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,269 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,271 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,272 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,274 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,276 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,278 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,279 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,281 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,283 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,289 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,290 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,292 - INFO - CLOSED short at 2052.3 | PnL: -0.11% | $-0.42 +2025-03-10 13:02:43,292 - INFO - OPENED LONG at 2052.3 | Stop loss: 2042.0198428571432 | Take profit: 2083.112485714286 +2025-03-10 13:02:43,294 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,296 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,296 - INFO - CLOSED long at 2055.69 | PnL: 0.17% | $0.13 +2025-03-10 13:02:43,298 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,299 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,300 - INFO - OPENED SHORT at 2057.01 | Stop loss: 2067.3137071428573 | Take profit: 2026.1268642857144 +2025-03-10 13:02:43,301 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,303 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,304 - INFO - CLOSED short at 2056.89 | PnL: 0.01% | $-0.19 +2025-03-10 13:02:43,305 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,307 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,308 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,310 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,311 - INFO - OPENED LONG at 2060.13 | Stop loss: 2049.810692857143 | Take profit: 2091.059935714286 +2025-03-10 13:02:43,313 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,314 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,315 - INFO - CLOSED long at 2059.7 | PnL: -0.02% | $-0.24 +2025-03-10 13:02:43,317 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,318 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,320 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,321 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,322 - INFO - OPENED SHORT at 2063.29 | Stop loss: 2073.6251071428574 | Take profit: 2032.3126642857144 +2025-03-10 13:02:43,323 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,324 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,325 - INFO - CLOSED short at 2064.61 | PnL: -0.06% | $-0.32 +2025-03-10 13:02:43,325 - INFO - OPENED LONG at 2064.61 | Stop loss: 2054.268292857143 | Take profit: 2095.6071357142855 +2025-03-10 13:02:43,327 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,328 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,329 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,331 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,333 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,333 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,336 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,337 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,338 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,339 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,340 - INFO - CLOSED long at 2060.99 | PnL: -0.18% | $-0.54 +2025-03-10 13:02:43,342 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,343 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,345 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,346 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,348 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,349 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,351 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,351 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,352 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.556892857143 | Take profit: 2093.8613357142854 +2025-03-10 13:02:43,354 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,356 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,357 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,358 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,360 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,361 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,362 - INFO - CLOSED long at 2057.8 | PnL: -0.25% | $-0.67 +2025-03-10 13:02:43,363 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,364 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,366 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,367 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,369 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,369 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,370 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.8007928571428 | Take profit: 2089.0096357142857 +2025-03-10 13:02:43,371 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,373 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,374 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,375 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,380 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,381 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,384 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,385 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,389 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,391 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,391 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,393 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,393 - INFO - CLOSED long at 2068.11 | PnL: 0.49% | $0.74 +2025-03-10 13:02:43,394 - INFO - OPENED SHORT at 2068.11 | Stop loss: 2078.4692071428576 | Take profit: 2037.0603642857143 +2025-03-10 13:02:43,395 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,396 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,402 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,403 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,403 - INFO - CLOSED short at 2067.89 | PnL: 0.01% | $-0.17 +2025-03-10 13:02:43,405 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,406 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,406 - INFO - OPENED LONG at 2071.63 | Stop loss: 2061.253192857143 | Take profit: 2102.7324357142857 +2025-03-10 13:02:43,408 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,408 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,410 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,411 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,412 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,413 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,414 - INFO - CLOSED long at 2068.65 | PnL: -0.14% | $-0.47 +2025-03-10 13:02:43,415 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,417 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,418 - INFO - OPENED LONG at 2068.99 | Stop loss: 2058.6263928571425 | Take profit: 2100.0528357142853 +2025-03-10 13:02:43,419 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,421 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,427 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,428 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,429 - INFO - CLOSED long at 2067.69 | PnL: -0.06% | $-0.31 +2025-03-10 13:02:43,430 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,431 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,436 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,437 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,442 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,443 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,447 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,448 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,449 - INFO - OPENED SHORT at 2075.1 | Stop loss: 2085.4941571428567 | Take profit: 2043.9455142857141 +2025-03-10 13:02:43,450 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,451 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,453 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,454 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,454 - INFO - CLOSED short at 2072.33 | PnL: 0.13% | $0.06 +2025-03-10 13:02:43,456 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,457 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,457 - INFO - OPENED LONG at 2071.38 | Stop loss: 2061.0044428571427 | Take profit: 2102.478685714286 +2025-03-10 13:02:43,459 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,460 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,460 - INFO - CLOSED long at 2071.41 | PnL: 0.00% | $-0.19 +2025-03-10 13:02:43,461 - INFO - OPENED SHORT at 2071.41 | Stop loss: 2081.785707142857 | Take profit: 2040.3108642857142 +2025-03-10 13:02:43,462 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,463 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,467 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,468 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,470 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,471 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,473 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,474 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,474 - INFO - CLOSED short at 2070.79 | PnL: 0.03% | $-0.13 +2025-03-10 13:02:43,475 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,476 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,478 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,479 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,481 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,483 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,483 - INFO - OPENED LONG at 2067.2 | Stop loss: 2056.8453428571424 | Take profit: 2098.2359857142856 +2025-03-10 13:02:43,484 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,485 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,486 - INFO - CLOSED long at 2070.36 | PnL: 0.15% | $0.10 +2025-03-10 13:02:43,487 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,488 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,490 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,491 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,492 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,493 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,494 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,495 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,496 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,497 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,498 - INFO - OPENED SHORT at 2068.8 | Stop loss: 2079.1626571428574 | Take profit: 2037.7400142857143 +2025-03-10 13:02:43,499 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,501 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,501 - INFO - CLOSED short at 2067.6 | PnL: 0.06% | $-0.08 +2025-03-10 13:02:43,501 - INFO - OPENED LONG at 2067.6 | Stop loss: 2057.2433428571426 | Take profit: 2098.6419857142855 +2025-03-10 13:02:43,503 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,503 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,505 - INFO - CLOSED long at 2067.51 | PnL: -0.00% | $-0.20 +2025-03-10 13:02:43,505 - INFO - OPENED SHORT at 2067.51 | Stop loss: 2077.8662071428575 | Take profit: 2036.4693642857146 +2025-03-10 13:02:43,506 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,507 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,508 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,509 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,511 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,512 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,513 - INFO - CLOSED short at 2065.99 | PnL: 0.07% | $-0.05 +2025-03-10 13:02:43,513 - INFO - OPENED LONG at 2065.99 | Stop loss: 2055.6413928571424 | Take profit: 2097.0078357142856 +2025-03-10 13:02:43,514 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,515 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,517 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,518 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,519 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,520 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,524 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,526 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,526 - INFO - CLOSED long at 2066.18 | PnL: 0.01% | $-0.17 +2025-03-10 13:02:43,526 - INFO - OPENED SHORT at 2066.18 | Stop loss: 2076.529557142857 | Take profit: 2035.1593142857141 +2025-03-10 13:02:43,528 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,529 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,534 - INFO - CLOSED short at 2068.76 | PnL: -0.12% | $-0.43 +2025-03-10 13:02:43,535 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,536 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,538 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,539 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,540 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,541 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,541 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.228392857143 | Take profit: 2099.6468357142858 +2025-03-10 13:02:43,543 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,544 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,546 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,547 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,548 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,549 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,550 - INFO - CLOSED long at 2069.96 | PnL: 0.07% | $-0.06 +2025-03-10 13:02:43,550 - INFO - OPENED SHORT at 2069.96 | Stop loss: 2080.328457142857 | Take profit: 2038.8826142857142 +2025-03-10 13:02:43,551 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,552 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,553 - INFO - CLOSED short at 2071.4 | PnL: -0.07% | $-0.32 +2025-03-10 13:02:43,553 - INFO - OPENED LONG at 2071.4 | Stop loss: 2061.024342857143 | Take profit: 2102.498985714286 +2025-03-10 13:02:43,555 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,556 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,556 - INFO - CLOSED long at 2071.39 | PnL: -0.00% | $-0.19 +2025-03-10 13:02:43,556 - INFO - OPENED SHORT at 2071.39 | Stop loss: 2081.765607142857 | Take profit: 2040.291164285714 +2025-03-10 13:02:43,558 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,559 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,559 - INFO - CLOSED short at 2071.36 | PnL: 0.00% | $-0.19 +2025-03-10 13:02:43,561 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,561 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,562 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,564 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,569 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,570 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,575 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,577 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,577 - INFO - OPENED LONG at 2072.15 | Stop loss: 2061.770592857143 | Take profit: 2103.2602357142855 +2025-03-10 13:02:43,578 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,579 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,581 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,582 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,584 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,585 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,587 - INFO - CLOSED long at 2071.92 | PnL: -0.01% | $-0.21 +2025-03-10 13:02:43,588 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,588 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,589 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.770657142857 | Take profit: 2039.3160142857146 +2025-03-10 13:02:43,591 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,592 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,594 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,595 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,596 - INFO - CLOSED short at 2069.46 | PnL: 0.05% | $-0.10 +2025-03-10 13:02:43,596 - INFO - OPENED LONG at 2069.46 | Stop loss: 2059.094042857143 | Take profit: 2100.5298857142857 +2025-03-10 13:02:43,598 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,599 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,605 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,606 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,607 - INFO - CLOSED long at 2068.32 | PnL: -0.06% | $-0.29 +2025-03-10 13:02:43,608 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,609 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,611 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,612 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,613 - INFO - OPENED SHORT at 2067.79 | Stop loss: 2078.1476071428574 | Take profit: 2036.7451642857143 +2025-03-10 13:02:43,615 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,616 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,618 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,619 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,620 - INFO - CLOSED short at 2066.8 | PnL: 0.05% | $-0.10 +2025-03-10 13:02:43,620 - INFO - OPENED LONG at 2066.8 | Stop loss: 2056.447342857143 | Take profit: 2097.829985714286 +2025-03-10 13:02:43,622 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,629 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,631 - INFO - CLOSED long at 2063.61 | PnL: -0.15% | $-0.48 +2025-03-10 13:02:43,632 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,634 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,635 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,636 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,637 - INFO - OPENED LONG at 2067.89 | Stop loss: 2057.531892857143 | Take profit: 2098.9363357142856 +2025-03-10 13:02:43,638 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,640 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,641 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,643 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,643 - INFO - CLOSED long at 2068.8 | PnL: 0.04% | $-0.10 +2025-03-10 13:02:43,643 - INFO - OPENED SHORT at 2068.8 | Stop loss: 2079.1626571428574 | Take profit: 2037.7400142857143 +2025-03-10 13:02:43,645 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,646 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,647 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,649 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,650 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,653 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,654 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,658 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,660 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,661 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,662 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,662 - INFO - CLOSED short at 2071.59 | PnL: -0.13% | $-0.44 +2025-03-10 13:02:43,664 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,665 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,666 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3278428571425 | Take profit: 2101.7884857142853 +2025-03-10 13:02:43,667 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,668 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,675 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,676 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,681 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,682 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,686 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,688 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,689 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,691 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,692 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,693 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,694 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,695 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,697 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,698 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,700 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,702 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,702 - INFO - CLOSED long at 2066.1 | PnL: -0.22% | $-0.60 +2025-03-10 13:02:43,703 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,705 - INFO - OPENED LONG at 2065.28 | Stop loss: 2054.934942857143 | Take profit: 2096.287185714286 +2025-03-10 13:02:43,706 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,707 - INFO - CLOSED long at 2066.39 | PnL: 0.05% | $-0.09 +2025-03-10 13:02:43,708 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.7406071428572 | Take profit: 2035.3661642857141 +2025-03-10 13:02:43,709 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,710 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,711 - INFO - CLOSED short at 2064.47 | PnL: 0.09% | $-0.01 +2025-03-10 13:02:43,712 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,713 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,715 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,716 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,718 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,719 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,719 - INFO - OPENED SHORT at 2068.18 | Stop loss: 2078.539557142857 | Take profit: 2037.1293142857141 +2025-03-10 13:02:43,720 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,722 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,722 - INFO - CLOSED short at 2065.69 | PnL: 0.12% | $0.04 +2025-03-10 13:02:43,723 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,724 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,725 - INFO - OPENED SHORT at 2067.88 | Stop loss: 2078.2380571428575 | Take profit: 2036.8338142857144 +2025-03-10 13:02:43,726 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,729 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,730 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,731 - INFO - CLOSED short at 2065.83 | PnL: 0.10% | $-0.00 +2025-03-10 13:02:43,732 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,733 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,734 - INFO - OPENED LONG at 2066.15 | Stop loss: 2055.800592857143 | Take profit: 2097.170235714286 +2025-03-10 13:02:43,735 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,736 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,738 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,739 - INFO - CLOSED long at 2062.89 | PnL: -0.16% | $-0.47 +2025-03-10 13:02:43,739 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.223107142857 | Take profit: 2031.9186642857142 +2025-03-10 13:02:43,741 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,742 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,743 - INFO - CLOSED short at 2062.65 | PnL: 0.01% | $-0.16 +2025-03-10 13:02:43,743 - INFO - OPENED LONG at 2062.65 | Stop loss: 2052.318092857143 | Take profit: 2093.617735714286 +2025-03-10 13:02:43,744 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,745 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,747 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,748 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,749 - INFO - CLOSED long at 2059.59 | PnL: -0.15% | $-0.45 +2025-03-10 13:02:43,749 - INFO - OPENED SHORT at 2059.59 | Stop loss: 2069.9066071428574 | Take profit: 2028.6681642857145 +2025-03-10 13:02:43,750 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,752 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,752 - INFO - CLOSED short at 2061.3 | PnL: -0.08% | $-0.33 +2025-03-10 13:02:43,753 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,754 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,759 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,760 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,761 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.616542857143 | Take profit: 2095.9623857142856 +2025-03-10 13:02:43,762 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,763 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,768 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,769 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,769 - INFO - CLOSED long at 2067.1 | PnL: 0.10% | $0.01 +2025-03-10 13:02:43,771 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,771 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,772 - INFO - OPENED SHORT at 2065.54 | Stop loss: 2075.8863571428574 | Take profit: 2034.528914285714 +2025-03-10 13:02:43,773 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,774 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,774 - INFO - CLOSED short at 2066.09 | PnL: -0.03% | $-0.23 +2025-03-10 13:02:43,776 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,777 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,779 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,780 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,784 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,785 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,787 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,788 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,788 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.556892857143 | Take profit: 2093.8613357142854 +2025-03-10 13:02:43,789 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,790 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,791 - INFO - CLOSED long at 2064.5 | PnL: 0.08% | $-0.04 +2025-03-10 13:02:43,792 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,793 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,793 - INFO - OPENED SHORT at 2063.5 | Stop loss: 2073.8361571428572 | Take profit: 2032.5195142857144 +2025-03-10 13:02:43,794 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,795 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,796 - INFO - CLOSED short at 2061.6 | PnL: 0.09% | $-0.01 +2025-03-10 13:02:43,797 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,803 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,804 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,805 - INFO - OPENED SHORT at 2060.65 | Stop loss: 2070.971907142857 | Take profit: 2029.7122642857146 +2025-03-10 13:02:43,806 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,808 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,809 - INFO - CLOSED short at 2058.89 | PnL: 0.09% | $-0.03 +2025-03-10 13:02:43,809 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.576892857143 | Take profit: 2089.8013357142854 +2025-03-10 13:02:43,810 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,811 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,815 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,817 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,817 - INFO - CLOSED long at 2060.31 | PnL: 0.07% | $-0.06 +2025-03-10 13:02:43,817 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.630207142857 | Take profit: 2029.377364285714 +2025-03-10 13:02:43,819 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,820 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,821 - INFO - CLOSED short at 2061.8 | PnL: -0.07% | $-0.31 +2025-03-10 13:02:43,822 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,823 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,823 - INFO - OPENED SHORT at 2064.7 | Stop loss: 2075.042157142857 | Take profit: 2033.7015142857142 +2025-03-10 13:02:43,825 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,826 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,827 - INFO - CLOSED short at 2062.61 | PnL: 0.10% | $0.00 +2025-03-10 13:02:43,827 - INFO - OPENED LONG at 2062.61 | Stop loss: 2052.278292857143 | Take profit: 2093.577135714286 +2025-03-10 13:02:43,829 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,830 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,830 - INFO - CLOSED long at 2060.91 | PnL: -0.08% | $-0.33 +2025-03-10 13:02:43,831 - INFO - OPENED SHORT at 2060.91 | Stop loss: 2071.233207142857 | Take profit: 2029.968364285714 +2025-03-10 13:02:43,832 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,833 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,835 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,836 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,837 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,838 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,840 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,840 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,841 - INFO - CLOSED short at 2064.1 | PnL: -0.15% | $-0.46 +2025-03-10 13:02:43,842 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,843 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,847 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,848 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,855 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,856 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,857 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,858 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,859 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,860 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,862 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,863 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,864 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,866 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,869 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,872 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,873 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,874 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,875 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,877 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,877 - INFO - OPENED LONG at 2061.7 | Stop loss: 2051.3728428571426 | Take profit: 2092.6534857142856 +2025-03-10 13:02:43,879 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,880 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,880 - INFO - CLOSED long at 2060.7 | PnL: -0.05% | $-0.26 +2025-03-10 13:02:43,880 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.022157142857 | Take profit: 2029.7615142857142 +2025-03-10 13:02:43,882 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,883 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,885 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,886 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,886 - INFO - CLOSED short at 2059.61 | PnL: 0.05% | $-0.08 +2025-03-10 13:02:43,887 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,888 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,889 - INFO - OPENED LONG at 2059.16 | Stop loss: 2048.845542857143 | Take profit: 2090.075385714286 +2025-03-10 13:02:43,890 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,892 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,892 - INFO - CLOSED long at 2059.02 | PnL: -0.01% | $-0.19 +2025-03-10 13:02:43,893 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,894 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,896 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,897 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,899 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,900 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,902 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,903 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,904 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,905 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,907 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,909 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,914 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,915 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,916 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,917 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,918 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,919 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,921 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,922 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,923 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,924 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,926 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,927 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,927 - INFO - OPENED LONG at 2059.8 | Stop loss: 2049.482342857143 | Take profit: 2090.724985714286 +2025-03-10 13:02:43,928 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,929 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,930 - INFO - CLOSED long at 2061.66 | PnL: 0.09% | $-0.02 +2025-03-10 13:02:43,930 - INFO - OPENED SHORT at 2061.66 | Stop loss: 2071.9869571428567 | Take profit: 2030.707114285714 +2025-03-10 13:02:43,931 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,932 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,933 - INFO - CLOSED short at 2061.5 | PnL: 0.01% | $-0.16 +2025-03-10 13:02:43,934 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,935 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,940 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,941 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,941 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.6251571428575 | Take profit: 2030.3525142857145 +2025-03-10 13:02:43,942 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,943 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,944 - INFO - CLOSED short at 2062.69 | PnL: -0.07% | $-0.30 +2025-03-10 13:02:43,946 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,947 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,952 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,953 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,954 - INFO - OPENED SHORT at 2066.36 | Stop loss: 2076.7104571428576 | Take profit: 2035.3366142857144 +2025-03-10 13:02:43,955 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,956 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,956 - INFO - CLOSED short at 2066.01 | PnL: 0.02% | $-0.15 +2025-03-10 13:02:43,957 - INFO - OPENED LONG at 2066.01 | Stop loss: 2055.661292857143 | Take profit: 2097.0281357142862 +2025-03-10 13:02:43,958 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,959 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,959 - INFO - CLOSED long at 2063.9 | PnL: -0.10% | $-0.36 +2025-03-10 13:02:43,961 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,962 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,967 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,968 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,968 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6803071428567 | Take profit: 2035.3070642857142 +2025-03-10 13:02:43,970 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,971 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,973 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,974 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,975 - INFO - CLOSED short at 2066.79 | PnL: -0.02% | $-0.21 +2025-03-10 13:02:43,975 - INFO - OPENED LONG at 2066.79 | Stop loss: 2056.4373928571426 | Take profit: 2097.8198357142855 +2025-03-10 13:02:43,976 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,977 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,979 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,979 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,982 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,983 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,983 - INFO - CLOSED long at 2065.69 | PnL: -0.05% | $-0.27 +2025-03-10 13:02:43,985 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,985 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,987 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,989 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,989 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3786571428573 | Take profit: 2040.8920142857141 +2025-03-10 13:02:43,991 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,992 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,993 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:43,994 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:43,999 - INFO - CLOSED short at 2078.01 | PnL: -0.29% | $-0.68 +2025-03-10 13:02:43,999 - INFO - OPENED LONG at 2078.01 | Stop loss: 2067.601292857143 | Take profit: 2109.208135714286 +2025-03-10 13:02:44,000 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,001 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,003 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,004 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,005 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,007 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,007 - INFO - CLOSED long at 2071.04 | PnL: -0.34% | $-0.75 +2025-03-10 13:02:44,008 - INFO - OPENED SHORT at 2071.04 | Stop loss: 2081.413857142857 | Take profit: 2039.9464142857141 +2025-03-10 13:02:44,009 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,010 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,011 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,012 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,012 - INFO - CLOSED short at 2071.6 | PnL: -0.03% | $-0.22 +2025-03-10 13:02:44,015 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,016 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,017 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,018 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,019 - INFO - OPENED SHORT at 2070.0 | Stop loss: 2080.368657142857 | Take profit: 2038.922014285714 +2025-03-10 13:02:44,020 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,021 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,023 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,024 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,025 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,026 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,026 - INFO - CLOSED short at 2069.69 | PnL: 0.01% | $-0.15 +2025-03-10 13:02:44,028 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,029 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,030 - INFO - OPENED SHORT at 2069.03 | Stop loss: 2079.3938071428574 | Take profit: 2037.9665642857144 +2025-03-10 13:02:44,031 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,032 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,033 - INFO - CLOSED short at 2067.44 | PnL: 0.08% | $-0.04 +2025-03-10 13:02:44,033 - INFO - OPENED LONG at 2067.44 | Stop loss: 2057.084142857143 | Take profit: 2098.479585714286 +2025-03-10 13:02:44,034 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,036 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,036 - INFO - CLOSED long at 2068.79 | PnL: 0.07% | $-0.06 +2025-03-10 13:02:44,038 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,039 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,039 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6063928571425 | Take profit: 2104.1128357142857 +2025-03-10 13:02:44,040 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,041 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,042 - INFO - CLOSED long at 2071.49 | PnL: -0.07% | $-0.29 +2025-03-10 13:02:44,043 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,044 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,044 - INFO - OPENED LONG at 2069.87 | Stop loss: 2059.501992857143 | Take profit: 2100.9460357142857 +2025-03-10 13:02:44,046 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,048 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,049 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,051 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,051 - INFO - CLOSED long at 2066.38 | PnL: -0.17% | $-0.46 +2025-03-10 13:02:44,053 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,054 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,054 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.3528428571426 | Take profit: 2096.713485714286 +2025-03-10 13:02:44,056 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,057 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,062 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,063 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,063 - INFO - CLOSED long at 2063.95 | PnL: -0.08% | $-0.31 +2025-03-10 13:02:44,063 - INFO - OPENED SHORT at 2063.95 | Stop loss: 2074.288407142857 | Take profit: 2032.962764285714 +2025-03-10 13:02:44,065 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,066 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,067 - INFO - CLOSED short at 2063.97 | PnL: -0.00% | $-0.17 +2025-03-10 13:02:44,067 - INFO - OPENED LONG at 2063.97 | Stop loss: 2053.631492857143 | Take profit: 2094.9575357142853 +2025-03-10 13:02:44,068 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,069 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,073 - INFO - CLOSED long at 2064.5 | PnL: 0.03% | $-0.12 +2025-03-10 13:02:44,074 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,075 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,080 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,081 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,088 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,089 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,089 - INFO - OPENED SHORT at 2064.31 | Stop loss: 2074.650207142857 | Take profit: 2033.3173642857143 +2025-03-10 13:02:44,090 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,091 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,092 - INFO - CLOSED short at 2065.5 | PnL: -0.06% | $-0.26 +2025-03-10 13:02:44,093 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,096 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,096 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,097 - INFO - OPENED SHORT at 2065.29 | Stop loss: 2075.635107142857 | Take profit: 2034.2826642857144 +2025-03-10 13:02:44,098 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,100 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,100 - INFO - CLOSED short at 2065.31 | PnL: -0.00% | $-0.17 +2025-03-10 13:02:44,101 - INFO - OPENED LONG at 2065.31 | Stop loss: 2054.9647928571426 | Take profit: 2096.3176357142856 +2025-03-10 13:02:44,102 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,103 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,103 - INFO - CLOSED long at 2066.8 | PnL: 0.07% | $-0.05 +2025-03-10 13:02:44,105 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,105 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,106 - INFO - OPENED SHORT at 2066.5 | Stop loss: 2076.851157142857 | Take profit: 2035.4745142857143 +2025-03-10 13:02:44,107 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,109 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,110 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,111 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,112 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,114 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,115 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,116 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,117 - INFO - CLOSED short at 2071.35 | PnL: -0.23% | $-0.56 +2025-03-10 13:02:44,118 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,119 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,120 - INFO - OPENED SHORT at 2070.9 | Stop loss: 2081.273157142857 | Take profit: 2039.8085142857144 +2025-03-10 13:02:44,121 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,122 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,123 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,124 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,126 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,127 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,128 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,130 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,134 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,135 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,137 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,138 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,143 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,144 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,145 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,146 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,148 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,149 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,153 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,154 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,156 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,157 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,158 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,159 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,160 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,161 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,162 - INFO - CLOSED short at 2075.07 | PnL: -0.20% | $-0.50 +2025-03-10 13:02:44,162 - INFO - OPENED LONG at 2075.07 | Stop loss: 2064.6759928571432 | Take profit: 2106.224035714286 +2025-03-10 13:02:44,163 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,164 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,166 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,166 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,168 - INFO - CLOSED long at 2073.27 | PnL: -0.09% | $-0.31 +2025-03-10 13:02:44,169 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,170 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,170 - INFO - OPENED SHORT at 2073.99 | Stop loss: 2084.378607142857 | Take profit: 2042.852164285714 +2025-03-10 13:02:44,171 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,173 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,173 - INFO - CLOSED short at 2075.32 | PnL: -0.06% | $-0.27 +2025-03-10 13:02:44,174 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,175 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,176 - INFO - OPENED SHORT at 2075.29 | Stop loss: 2085.6851071428573 | Take profit: 2044.1326642857143 +2025-03-10 13:02:44,177 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,178 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,179 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,180 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,182 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,184 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,184 - INFO - CLOSED short at 2074.0 | PnL: 0.06% | $-0.06 +2025-03-10 13:02:44,185 - INFO - OPENED LONG at 2074.0 | Stop loss: 2063.611342857143 | Take profit: 2105.137985714286 +2025-03-10 13:02:44,186 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,187 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,192 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,193 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,198 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,199 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,199 - INFO - CLOSED long at 2067.7 | PnL: -0.30% | $-0.66 +2025-03-10 13:02:44,200 - INFO - OPENED SHORT at 2067.7 | Stop loss: 2078.057157142857 | Take profit: 2036.6565142857141 +2025-03-10 13:02:44,201 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,202 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,204 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,205 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,206 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,207 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,209 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,210 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,211 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,212 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,214 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,215 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,219 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,220 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,221 - INFO - CLOSED short at 2068.1 | PnL: -0.02% | $-0.19 +2025-03-10 13:02:44,221 - INFO - OPENED LONG at 2068.1 | Stop loss: 2057.740842857143 | Take profit: 2099.1494857142857 +2025-03-10 13:02:44,222 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,224 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,224 - INFO - CLOSED long at 2069.0 | PnL: 0.04% | $-0.09 +2025-03-10 13:02:44,224 - INFO - OPENED SHORT at 2069.0 | Stop loss: 2079.363657142857 | Take profit: 2037.9370142857144 +2025-03-10 13:02:44,225 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,226 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,229 - INFO - CLOSED short at 2070.19 | PnL: -0.06% | $-0.25 +2025-03-10 13:02:44,230 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,232 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,233 - INFO - OPENED LONG at 2070.1 | Stop loss: 2059.7308428571428 | Take profit: 2101.1794857142854 +2025-03-10 13:02:44,234 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,235 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,239 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,240 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,246 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,247 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,247 - INFO - CLOSED long at 2065.7 | PnL: -0.21% | $-0.50 +2025-03-10 13:02:44,248 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.047157142857 | Take profit: 2034.686514285714 +2025-03-10 13:02:44,250 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,251 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,251 - INFO - CLOSED short at 2065.8 | PnL: -0.00% | $-0.17 +2025-03-10 13:02:44,252 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,253 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,258 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,259 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,261 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,262 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,264 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,265 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,266 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,267 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,271 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,273 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,274 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,275 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,276 - INFO - OPENED LONG at 2065.06 | Stop loss: 2054.716042857143 | Take profit: 2096.063885714286 +2025-03-10 13:02:44,277 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,279 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,280 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,281 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,281 - INFO - CLOSED long at 2064.5 | PnL: -0.03% | $-0.20 +2025-03-10 13:02:44,283 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,284 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,285 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,286 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,286 - INFO - OPENED SHORT at 2063.01 | Stop loss: 2073.3437071428575 | Take profit: 2032.0368642857145 +2025-03-10 13:02:44,287 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,289 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,289 - INFO - CLOSED short at 2060.7 | PnL: 0.11% | $0.02 +2025-03-10 13:02:44,289 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3778428571427 | Take profit: 2091.6384857142853 +2025-03-10 13:02:44,291 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,292 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,292 - INFO - CLOSED long at 2060.2 | PnL: -0.02% | $-0.20 +2025-03-10 13:02:44,293 - INFO - OPENED SHORT at 2060.2 | Stop loss: 2070.519657142857 | Take profit: 2029.269014285714 +2025-03-10 13:02:44,294 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,295 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,296 - INFO - CLOSED short at 2059.2 | PnL: 0.05% | $-0.08 +2025-03-10 13:02:44,296 - INFO - OPENED LONG at 2059.2 | Stop loss: 2048.885342857143 | Take profit: 2090.1159857142857 +2025-03-10 13:02:44,297 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,298 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,299 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,300 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,301 - INFO - CLOSED long at 2058.65 | PnL: -0.03% | $-0.20 +2025-03-10 13:02:44,301 - INFO - OPENED SHORT at 2058.65 | Stop loss: 2068.9619071428574 | Take profit: 2027.7422642857143 +2025-03-10 13:02:44,302 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,303 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,308 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,309 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,309 - INFO - CLOSED short at 2053.01 | PnL: 0.27% | $0.28 +2025-03-10 13:02:44,310 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.726292857143 | Take profit: 2083.8331357142856 +2025-03-10 13:02:44,311 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,312 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,312 - INFO - CLOSED long at 2049.21 | PnL: -0.19% | $-0.45 +2025-03-10 13:02:44,313 - INFO - OPENED SHORT at 2049.21 | Stop loss: 2059.474707142857 | Take profit: 2018.4438642857142 +2025-03-10 13:02:44,314 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,315 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,321 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,322 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,328 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,329 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,330 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,331 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,333 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,335 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,336 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,337 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,342 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,342 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,347 - INFO - STOP LOSS hit for short at 2059.474707142857 | PnL: -0.50% | $-0.95 +2025-03-10 13:02:44,349 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,350 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,355 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,357 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,359 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,361 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,362 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,363 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,364 - INFO - OPENED SHORT at 2062.55 | Stop loss: 2072.881407142857 | Take profit: 2031.5837642857146 +2025-03-10 13:02:44,365 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,366 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,367 - INFO - CLOSED short at 2065.12 | PnL: -0.12% | $-0.35 +2025-03-10 13:02:44,367 - INFO - OPENED LONG at 2065.12 | Stop loss: 2054.7757428571426 | Take profit: 2096.1247857142857 +2025-03-10 13:02:44,368 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,369 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,370 - INFO - CLOSED long at 2068.33 | PnL: 0.16% | $0.09 +2025-03-10 13:02:44,370 - INFO - OPENED SHORT at 2068.33 | Stop loss: 2078.6903071428574 | Take profit: 2037.2770642857142 +2025-03-10 13:02:44,372 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,374 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,374 - INFO - CLOSED short at 2067.49 | PnL: 0.04% | $-0.09 +2025-03-10 13:02:44,375 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,377 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,379 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,380 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,380 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.419057142857 | Take profit: 2033.0908142857143 +2025-03-10 13:02:44,382 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,383 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,390 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,391 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,392 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,393 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,395 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,396 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,397 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,398 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,404 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,405 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,405 - INFO - CLOSED short at 2065.72 | PnL: -0.08% | $-0.28 +2025-03-10 13:02:44,406 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,407 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,408 - INFO - OPENED LONG at 2070.31 | Stop loss: 2059.939792857143 | Take profit: 2101.3926357142855 +2025-03-10 13:02:44,410 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,411 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,416 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,417 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,419 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,420 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,421 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,422 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,427 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,428 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,430 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,432 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,433 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,434 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,439 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,440 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,441 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,442 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,443 - INFO - CLOSED long at 2071.8 | PnL: 0.07% | $-0.04 +2025-03-10 13:02:44,444 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,445 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,449 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,451 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,452 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,453 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,454 - INFO - OPENED LONG at 2077.61 | Stop loss: 2067.203292857143 | Take profit: 2108.8021357142857 +2025-03-10 13:02:44,455 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,456 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,460 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,461 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,462 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,463 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,465 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,466 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,467 - INFO - TAKE PROFIT hit for long at 2108.8021357142857 | PnL: 1.50% | $2.17 +2025-03-10 13:02:44,468 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,469 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,470 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,471 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,472 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,473 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,476 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,477 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,479 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,480 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,482 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,483 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,484 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,485 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,486 - INFO - OPENED SHORT at 2142.68 | Stop loss: 2153.412057142857 | Take profit: 2110.511814285714 +2025-03-10 13:02:44,487 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,489 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,493 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,494 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,496 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,497 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,503 - INFO - CLOSED short at 2126.99 | PnL: 0.73% | $1.01 +2025-03-10 13:02:44,503 - INFO - OPENED LONG at 2126.99 | Stop loss: 2116.336392857143 | Take profit: 2158.9228357142856 +2025-03-10 13:02:44,505 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,506 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,510 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,510 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,512 - INFO - CLOSED long at 2128.69 | PnL: 0.08% | $-0.03 +2025-03-10 13:02:44,512 - INFO - OPENED SHORT at 2128.69 | Stop loss: 2139.352107142857 | Take profit: 2096.731664285714 +2025-03-10 13:02:44,513 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,514 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,515 - INFO - CLOSED short at 2121.09 | PnL: 0.36% | $0.41 +2025-03-10 13:02:44,516 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,517 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,517 - INFO - OPENED SHORT at 2120.15 | Stop loss: 2130.769407142857 | Take profit: 2088.3197642857144 +2025-03-10 13:02:44,518 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,519 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,520 - INFO - CLOSED short at 2117.24 | PnL: 0.14% | $0.06 +2025-03-10 13:02:44,521 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,522 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,523 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3116928571426 | Take profit: 2151.7569357142856 +2025-03-10 13:02:44,525 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,526 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,527 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,529 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,529 - INFO - CLOSED long at 2118.52 | PnL: -0.07% | $-0.27 +2025-03-10 13:02:44,529 - INFO - OPENED SHORT at 2118.52 | Stop loss: 2129.131257142857 | Take profit: 2086.714214285714 +2025-03-10 13:02:44,531 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,532 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,533 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,534 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,535 - INFO - CLOSED short at 2119.07 | PnL: -0.03% | $-0.20 +2025-03-10 13:02:44,537 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,538 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,539 - INFO - OPENED SHORT at 2115.28 | Stop loss: 2125.8750571428573 | Take profit: 2083.5228142857145 +2025-03-10 13:02:44,540 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,541 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,546 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,547 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,548 - INFO - CLOSED short at 2110.6 | PnL: 0.22% | $0.20 +2025-03-10 13:02:44,549 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,551 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,555 - INFO - OPENED LONG at 2109.05 | Stop loss: 2098.486092857143 | Take profit: 2140.7137357142856 +2025-03-10 13:02:44,556 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,558 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,558 - INFO - CLOSED long at 2112.09 | PnL: 0.14% | $0.07 +2025-03-10 13:02:44,558 - INFO - OPENED SHORT at 2112.09 | Stop loss: 2122.6691071428572 | Take profit: 2080.3806642857144 +2025-03-10 13:02:44,560 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,561 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,566 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,568 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,572 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,573 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,574 - INFO - CLOSED short at 2113.24 | PnL: -0.05% | $-0.25 +2025-03-10 13:02:44,574 - INFO - OPENED LONG at 2113.24 | Stop loss: 2102.655142857143 | Take profit: 2144.9665857142854 +2025-03-10 13:02:44,576 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,577 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,579 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,580 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,580 - INFO - CLOSED long at 2120.81 | PnL: 0.36% | $0.42 +2025-03-10 13:02:44,581 - INFO - OPENED SHORT at 2120.81 | Stop loss: 2131.432707142857 | Take profit: 2088.9698642857143 +2025-03-10 13:02:44,582 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,583 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,585 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,586 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,586 - INFO - CLOSED short at 2114.8 | PnL: 0.28% | $0.30 +2025-03-10 13:02:44,588 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,589 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,590 - INFO - OPENED SHORT at 2110.9 | Stop loss: 2121.4731571428574 | Take profit: 2079.2085142857145 +2025-03-10 13:02:44,591 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,592 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,594 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,595 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,595 - INFO - CLOSED short at 2106.49 | PnL: 0.21% | $0.18 +2025-03-10 13:02:44,595 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.938892857143 | Take profit: 2138.1153357142853 +2025-03-10 13:02:44,596 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,597 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,598 - INFO - CLOSED long at 2108.06 | PnL: 0.07% | $-0.04 +2025-03-10 13:02:44,600 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,601 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,601 - INFO - OPENED LONG at 2103.33 | Stop loss: 2092.7946928571428 | Take profit: 2134.907935714286 +2025-03-10 13:02:44,603 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,604 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,609 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,610 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,614 - INFO - STOP LOSS hit for long at 2092.7946928571428 | PnL: -0.50% | $-0.98 +2025-03-10 13:02:44,615 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,617 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,618 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,619 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,620 - INFO - OPENED SHORT at 2098.1 | Stop loss: 2108.609157142857 | Take profit: 2066.6005142857143 +2025-03-10 13:02:44,621 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,622 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,622 - INFO - CLOSED short at 2102.19 | PnL: -0.19% | $-0.47 +2025-03-10 13:02:44,623 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,624 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,625 - INFO - OPENED SHORT at 2102.29 | Stop loss: 2112.820107142857 | Take profit: 2070.727664285714 +2025-03-10 13:02:44,626 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,627 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,629 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,630 - INFO - CLOSED short at 2098.9 | PnL: 0.16% | $0.10 +2025-03-10 13:02:44,631 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,633 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,638 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,639 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,640 - INFO - OPENED SHORT at 2104.83 | Stop loss: 2115.3728071428573 | Take profit: 2073.2295642857143 +2025-03-10 13:02:44,641 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,642 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,643 - INFO - CLOSED short at 2106.39 | PnL: -0.07% | $-0.28 +2025-03-10 13:02:44,643 - INFO - OPENED LONG at 2106.39 | Stop loss: 2095.8393928571427 | Take profit: 2138.0138357142855 +2025-03-10 13:02:44,644 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,645 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,647 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,648 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,648 - INFO - CLOSED long at 2103.86 | PnL: -0.12% | $-0.35 +2025-03-10 13:02:44,650 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,656 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,657 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,657 - INFO - OPENED SHORT at 2101.51 | Stop loss: 2112.0362071428576 | Take profit: 2069.9593642857144 +2025-03-10 13:02:44,659 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,660 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,661 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,663 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,666 - INFO - CLOSED short at 2100.02 | PnL: 0.07% | $-0.05 +2025-03-10 13:02:44,667 - INFO - OPENED LONG at 2100.02 | Stop loss: 2089.501242857143 | Take profit: 2131.5482857142856 +2025-03-10 13:02:44,668 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,669 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,669 - INFO - CLOSED long at 2098.39 | PnL: -0.08% | $-0.28 +2025-03-10 13:02:44,670 - INFO - OPENED SHORT at 2098.39 | Stop loss: 2108.900607142857 | Take profit: 2066.886164285714 +2025-03-10 13:02:44,671 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,672 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,673 - INFO - CLOSED short at 2095.29 | PnL: 0.15% | $0.08 +2025-03-10 13:02:44,674 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,675 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,680 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,681 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,687 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,688 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,693 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,694 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,698 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,699 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,700 - INFO - OPENED SHORT at 2094.72 | Stop loss: 2105.212257142857 | Take profit: 2063.271214285714 +2025-03-10 13:02:44,701 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,701 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,703 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,705 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,706 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,707 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,709 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,710 - INFO - CLOSED short at 2088.44 | PnL: 0.30% | $0.32 +2025-03-10 13:02:44,710 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.979142857143 | Take profit: 2119.7945857142854 +2025-03-10 13:02:44,711 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,712 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,713 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,714 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,718 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,719 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,720 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,721 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,726 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,729 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,730 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,731 - INFO - CLOSED long at 2081.25 | PnL: -0.34% | $-0.71 +2025-03-10 13:02:44,731 - INFO - OPENED SHORT at 2081.25 | Stop loss: 2091.674907142857 | Take profit: 2050.003264285714 +2025-03-10 13:02:44,733 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,734 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,734 - INFO - CLOSED short at 2083.41 | PnL: -0.10% | $-0.32 +2025-03-10 13:02:44,735 - INFO - OPENED LONG at 2083.41 | Stop loss: 2072.9742928571427 | Take profit: 2114.6891357142854 +2025-03-10 13:02:44,735 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,737 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,737 - INFO - CLOSED long at 2085.09 | PnL: 0.08% | $-0.03 +2025-03-10 13:02:44,738 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,742 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,743 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,744 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,745 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,745 - INFO - OPENED SHORT at 2085.8 | Stop loss: 2096.2476571428574 | Take profit: 2054.4850142857144 +2025-03-10 13:02:44,746 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,747 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,748 - INFO - CLOSED short at 2084.72 | PnL: 0.05% | $-0.08 +2025-03-10 13:02:44,749 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,750 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,751 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,752 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,753 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,754 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,755 - INFO - OPENED LONG at 2088.66 | Stop loss: 2078.198042857143 | Take profit: 2120.0178857142855 +2025-03-10 13:02:44,756 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,757 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,758 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,759 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,766 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,767 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,768 - INFO - CLOSED long at 2089.96 | PnL: 0.06% | $-0.06 +2025-03-10 13:02:44,768 - INFO - OPENED SHORT at 2089.96 | Stop loss: 2100.4284571428575 | Take profit: 2058.582614285714 +2025-03-10 13:02:44,769 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,770 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,771 - INFO - CLOSED short at 2087.0 | PnL: 0.14% | $0.07 +2025-03-10 13:02:44,772 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,773 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,777 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,778 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,779 - INFO - OPENED LONG at 2087.78 | Stop loss: 2077.322442857143 | Take profit: 2119.124685714286 +2025-03-10 13:02:44,780 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,781 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,787 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,788 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,790 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,791 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,791 - INFO - CLOSED long at 2085.67 | PnL: -0.10% | $-0.32 +2025-03-10 13:02:44,792 - INFO - OPENED SHORT at 2085.67 | Stop loss: 2096.117007142857 | Take profit: 2054.3569642857146 +2025-03-10 13:02:44,793 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,794 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,795 - INFO - CLOSED short at 2089.2 | PnL: -0.17% | $-0.42 +2025-03-10 13:02:44,796 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,797 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,802 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,803 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,804 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.5239071428573 | Take profit: 2059.6562642857148 +2025-03-10 13:02:44,806 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,807 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,807 - INFO - CLOSED short at 2091.95 | PnL: -0.04% | $-0.22 +2025-03-10 13:02:44,808 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,809 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,811 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,812 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,812 - INFO - OPENED LONG at 2097.8 | Stop loss: 2087.292342857143 | Take profit: 2129.2949857142858 +2025-03-10 13:02:44,814 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,815 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,815 - INFO - CLOSED long at 2099.99 | PnL: 0.10% | $0.01 +2025-03-10 13:02:44,816 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.508607142857 | Take profit: 2068.462164285714 +2025-03-10 13:02:44,817 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,819 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,820 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,821 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,822 - INFO - CLOSED short at 2097.11 | PnL: 0.14% | $0.06 +2025-03-10 13:02:44,822 - INFO - OPENED LONG at 2097.11 | Stop loss: 2086.605792857143 | Take profit: 2128.5946357142857 +2025-03-10 13:02:44,823 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,825 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,826 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,827 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,828 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,829 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,829 - INFO - CLOSED long at 2100.89 | PnL: 0.18% | $0.12 +2025-03-10 13:02:44,829 - INFO - OPENED SHORT at 2100.89 | Stop loss: 2111.413107142857 | Take profit: 2069.348664285714 +2025-03-10 13:02:44,830 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,831 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,832 - INFO - CLOSED short at 2099.73 | PnL: 0.06% | $-0.07 +2025-03-10 13:02:44,833 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,834 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,840 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,842 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,842 - INFO - OPENED LONG at 2103.48 | Stop loss: 2092.9439428571427 | Take profit: 2135.060185714286 +2025-03-10 13:02:44,843 - ERROR - Error during learning: mat1 and mat2 must have the same dtype, but got Double and Half +2025-03-10 13:02:44,844 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1453, in learn + current_q_values = self.policy_net(states).gather(1, actions.unsqueeze(1)) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 144, in forward + x = self.fc1(x) + ^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1739, in _wrapped_call_impl + return self._call_impl(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\module.py", line 1750, in _call_impl + return forward_call(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\nn\modules\linear.py", line 125, in forward + return F.linear(input, self.weight, self.bias) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: mat1 and mat2 must have the same dtype, but got Double and Half + +2025-03-10 13:02:44,846 - INFO - Trade Analysis: Win Rate=22.9% in uptrends, 0.0% in downtrends | Avg Win=$0.27, Avg Loss=$-0.26 +2025-03-10 13:02:44,847 - INFO - Episode 4: Reward=-130.86, Balance=$78.23, Win Rate=19.6%, Trades=138, Episode PnL=$-15.53, Total PnL=$-127.36, Max Drawdown=21.9%, Pred Accuracy=99.1% +2025-03-10 13:02:44,847 - ERROR - Error in episode 4: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:02:44,848 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1763, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:02:44,869 - INFO - Identified 25 optimal buy points and 28 optimal sell points +2025-03-10 13:08:30,320 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 13:08:30,341 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 13:08:30,341 - INFO - Fetching initial data for ETH/USDT +2025-03-10 13:08:34,135 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 13:08:34,153 - INFO - Initialized environment with 500 candles +2025-03-10 13:08:34,363 - INFO - Exchange connection closed +2025-03-10 13:09:59,572 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 13:09:59,593 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 13:09:59,593 - INFO - Fetching initial data for ETH/USDT +2025-03-10 13:10:03,364 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 13:10:03,382 - INFO - Initialized environment with 500 candles +2025-03-10 13:10:06,284 - INFO - Starting training for 1000 episodes... +2025-03-10 13:10:06,284 - INFO - Starting training on device: cuda +2025-03-10 13:10:06,319 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:06,606 - ERROR - Error in episode 0: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:06,613 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:06,638 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:06,809 - ERROR - Error in episode 1: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:06,812 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:06,831 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:07,017 - ERROR - Error in episode 2: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:07,021 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:07,052 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:07,251 - ERROR - Error in episode 3: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:07,254 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:07,282 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:07,487 - ERROR - Error in episode 4: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:07,487 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:07,517 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:07,709 - ERROR - Error in episode 5: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:07,715 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:07,735 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:07,912 - ERROR - Error in episode 6: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:07,915 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:07,937 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:08,106 - ERROR - Error in episode 7: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:08,106 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:08,138 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:08,315 - ERROR - Error in episode 8: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:08,320 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:08,353 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:08,548 - ERROR - Error in episode 9: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:08,553 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:08,580 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:08,761 - ERROR - Error in episode 10: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:08,770 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:08,796 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:08,986 - ERROR - Error in episode 11: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:08,991 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:09,020 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:09,204 - ERROR - Error in episode 12: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:09,209 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:09,237 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:09,413 - ERROR - Error in episode 13: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:09,416 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:09,440 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:09,614 - ERROR - Error in episode 14: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:09,614 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:09,638 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:09,808 - ERROR - Error in episode 15: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:09,816 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:09,837 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:10,028 - ERROR - Error in episode 16: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:10,032 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:10,051 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:10,238 - ERROR - Error in episode 17: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:10,238 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:10,260 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:10,446 - ERROR - Error in episode 18: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:10,446 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:10,472 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:10,657 - ERROR - Error in episode 19: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:10,657 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:10,680 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:10,858 - ERROR - Error in episode 20: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:10,862 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:10,883 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:11,060 - ERROR - Error in episode 21: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:11,060 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:11,084 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:11,272 - ERROR - Error in episode 22: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:11,272 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:11,297 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:11,476 - ERROR - Error in episode 23: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:11,481 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:11,500 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:11,681 - ERROR - Error in episode 24: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:11,689 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:11,710 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:11,893 - ERROR - Error in episode 25: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:11,893 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:11,920 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:12,097 - ERROR - Error in episode 26: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:12,098 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:12,118 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:12,292 - ERROR - Error in episode 27: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:12,297 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:12,319 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:12,493 - ERROR - Error in episode 28: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:12,493 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:12,523 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:12,698 - ERROR - Error in episode 29: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:12,705 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:12,727 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:12,906 - ERROR - Error in episode 30: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:12,912 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:12,932 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:13,113 - ERROR - Error in episode 31: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:13,122 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:13,139 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:13,327 - ERROR - Error in episode 32: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:13,331 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:13,352 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:13,525 - ERROR - Error in episode 33: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:13,525 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:13,549 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:13,718 - ERROR - Error in episode 34: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:13,718 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:13,741 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:13,921 - ERROR - Error in episode 35: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:13,921 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:13,950 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:14,128 - ERROR - Error in episode 36: 'Agent' object has no attribute 'epsilon_end' +2025-03-10 13:10:14,140 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1734, in train_agent + action = agent.select_action(state) + ^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1428, in select_action + eps_threshold = self.epsilon_end + (self.epsilon_start - self.epsilon_end) * \ + ^^^^^^^^^^^^^^^^ +AttributeError: 'Agent' object has no attribute 'epsilon_end' + +2025-03-10 13:10:14,156 - INFO - Identified 26 optimal buy points and 28 optimal sell points +2025-03-10 13:10:14,271 - INFO - Exchange connection closed +2025-03-10 13:10:14,273 - INFO - Program terminated by user +2025-03-10 13:11:38,759 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 13:11:38,786 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 13:11:38,786 - INFO - Fetching initial data for ETH/USDT +2025-03-10 13:11:42,391 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 13:11:42,415 - INFO - Initialized environment with 500 candles +2025-03-10 13:11:45,319 - INFO - Starting training for 1000 episodes... +2025-03-10 13:11:45,319 - INFO - Starting training on device: cuda +2025-03-10 13:11:45,358 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:11:45,639 - INFO - OPENED SHORT at 2047.4 | Stop loss: 2057.652532142857 | Take profit: 2016.6657017857144 +2025-03-10 13:11:45,640 - INFO - CLOSED short at 2047.2 | PnL: 0.01% | $-0.18 +2025-03-10 13:11:45,640 - INFO - OPENED LONG at 2047.2 | Stop loss: 2036.9484678571428 | Take profit: 2077.931298214286 +2025-03-10 13:11:45,640 - INFO - CLOSED long at 2045.99 | PnL: -0.06% | $-0.32 +2025-03-10 13:11:45,640 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.235482142857 | Take profit: 2015.2768517857144 +2025-03-10 13:11:45,640 - INFO - CLOSED short at 2047.59 | PnL: -0.08% | $-0.35 +2025-03-10 13:11:45,642 - INFO - OPENED SHORT at 2048.51 | Stop loss: 2058.7680821428576 | Take profit: 2017.7590517857145 +2025-03-10 13:11:45,642 - INFO - CLOSED short at 2050.0 | PnL: -0.07% | $-0.34 +2025-03-10 13:11:45,642 - INFO - OPENED SHORT at 2050.24 | Stop loss: 2060.506732142857 | Take profit: 2019.4631017857141 +2025-03-10 13:11:45,642 - INFO - CLOSED short at 2049.89 | PnL: 0.02% | $-0.16 +2025-03-10 13:11:45,642 - INFO - OPENED LONG at 2049.89 | Stop loss: 2039.6250178571427 | Take profit: 2080.661648214286 +2025-03-10 13:11:45,642 - INFO - CLOSED long at 2051.11 | PnL: 0.06% | $-0.08 +2025-03-10 13:11:45,646 - INFO - OPENED LONG at 2052.3 | Stop loss: 2042.022967857143 | Take profit: 2083.107798214286 +2025-03-10 13:11:45,647 - INFO - CLOSED long at 2057.01 | PnL: 0.23% | $0.25 +2025-03-10 13:11:45,647 - INFO - OPENED SHORT at 2058.39 | Stop loss: 2068.697482142857 | Take profit: 2027.490851785714 +2025-03-10 13:11:45,648 - INFO - CLOSED short at 2060.13 | PnL: -0.08% | $-0.36 +2025-03-10 13:11:45,648 - INFO - OPENED LONG at 2059.7 | Stop loss: 2049.3859678571425 | Take profit: 2090.6187982142856 +2025-03-10 13:11:45,649 - INFO - CLOSED long at 2061.49 | PnL: 0.09% | $-0.03 +2025-03-10 13:11:45,649 - INFO - OPENED SHORT at 2061.49 | Stop loss: 2071.812982142857 | Take profit: 2030.544351785714 +2025-03-10 13:11:45,650 - INFO - CLOSED short at 2061.61 | PnL: -0.01% | $-0.21 +2025-03-10 13:11:45,650 - INFO - OPENED LONG at 2061.61 | Stop loss: 2051.286417857143 | Take profit: 2092.557448214286 +2025-03-10 13:11:45,650 - INFO - CLOSED long at 2064.69 | PnL: 0.15% | $0.10 +2025-03-10 13:11:45,650 - INFO - OPENED SHORT at 2063.01 | Stop loss: 2073.3405821428573 | Take profit: 2032.0415517857145 +2025-03-10 13:11:45,650 - INFO - CLOSED short at 2061.89 | PnL: 0.05% | $-0.09 +2025-03-10 13:11:45,650 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.5650178571427 | Take profit: 2092.841648214285 +2025-03-10 13:11:45,653 - INFO - CLOSED long at 2062.89 | PnL: 0.05% | $-0.10 +2025-03-10 13:11:45,653 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.992917857143 | Take profit: 2091.237948214286 +2025-03-10 13:11:45,655 - INFO - CLOSED long at 2059.49 | PnL: -0.04% | $-0.27 +2025-03-10 13:11:45,656 - INFO - OPENED SHORT at 2059.49 | Stop loss: 2069.8029821428568 | Take profit: 2028.574351785714 +2025-03-10 13:11:45,656 - INFO - CLOSED short at 2057.8 | PnL: 0.08% | $-0.03 +2025-03-10 13:11:45,656 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.194982142857 | Take profit: 2026.9983517857142 +2025-03-10 13:11:45,658 - INFO - CLOSED short at 2057.94 | PnL: -0.00% | $-0.20 +2025-03-10 13:11:45,658 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.4160821428572 | Take profit: 2027.2150517857144 +2025-03-10 13:11:45,659 - INFO - CLOSED short at 2061.79 | PnL: -0.18% | $-0.54 +2025-03-10 13:11:45,659 - INFO - OPENED LONG at 2064.32 | Stop loss: 2053.982867857143 | Take profit: 2095.308098214286 +2025-03-10 13:11:45,660 - INFO - CLOSED long at 2065.86 | PnL: 0.07% | $-0.05 +2025-03-10 13:11:45,661 - INFO - OPENED LONG at 2068.11 | Stop loss: 2057.753917857143 | Take profit: 2099.154948214286 +2025-03-10 13:11:45,661 - INFO - CLOSED long at 2068.29 | PnL: 0.01% | $-0.18 +2025-03-10 13:11:45,661 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.244982142857 | Take profit: 2036.8483517857142 +2025-03-10 13:11:45,662 - INFO - CLOSED short at 2071.63 | PnL: -0.18% | $-0.54 +2025-03-10 13:11:45,662 - INFO - OPENED LONG at 2071.63 | Stop loss: 2061.256317857143 | Take profit: 2102.727748214286 +2025-03-10 13:11:45,691 - INFO - CLOSED long at 2070.99 | PnL: -0.03% | $-0.25 +2025-03-10 13:11:45,691 - INFO - OPENED LONG at 2069.6 | Stop loss: 2059.236467857143 | Take profit: 2100.6672982142854 +2025-03-10 13:11:45,693 - INFO - CLOSED long at 2068.99 | PnL: -0.03% | $-0.25 +2025-03-10 13:11:45,693 - INFO - OPENED SHORT at 2068.99 | Stop loss: 2079.350482142857 | Take profit: 2037.931851785714 +2025-03-10 13:11:45,693 - INFO - CLOSED short at 2067.69 | PnL: 0.06% | $-0.07 +2025-03-10 13:11:45,693 - INFO - OPENED LONG at 2067.69 | Stop loss: 2057.336017857143 | Take profit: 2098.7286482142854 +2025-03-10 13:11:45,695 - INFO - CLOSED long at 2070.26 | PnL: 0.12% | $0.05 +2025-03-10 13:11:45,695 - INFO - OPENED SHORT at 2070.26 | Stop loss: 2080.6268321428574 | Take profit: 2039.1828017857144 +2025-03-10 13:11:45,695 - INFO - CLOSED short at 2071.44 | PnL: -0.06% | $-0.30 +2025-03-10 13:11:45,695 - INFO - OPENED LONG at 2071.44 | Stop loss: 2061.0672678571427 | Take profit: 2102.534898214286 +2025-03-10 13:11:45,697 - INFO - CLOSED long at 2072.91 | PnL: 0.07% | $-0.06 +2025-03-10 13:11:45,698 - INFO - OPENED SHORT at 2072.91 | Stop loss: 2083.290082142857 | Take profit: 2041.793051785714 +2025-03-10 13:11:45,698 - INFO - CLOSED short at 2071.38 | PnL: 0.07% | $-0.05 +2025-03-10 13:11:45,699 - INFO - OPENED LONG at 2071.38 | Stop loss: 2061.007567857143 | Take profit: 2102.4739982142855 +2025-03-10 13:11:45,837 - INFO - CLOSED long at 2072.8 | PnL: 0.07% | $-0.06 +2025-03-10 13:11:45,837 - INFO - OPENED SHORT at 2072.8 | Stop loss: 2083.1795321428576 | Take profit: 2041.6847017857144 +2025-03-10 13:11:45,871 - INFO - CLOSED short at 2070.28 | PnL: 0.12% | $0.04 +2025-03-10 13:11:45,899 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.375632142857 | Take profit: 2036.9764017857142 +2025-03-10 13:11:45,918 - INFO - CLOSED short at 2067.2 | PnL: 0.04% | $-0.11 +2025-03-10 13:11:45,919 - INFO - OPENED LONG at 2067.2 | Stop loss: 2056.8484678571426 | Take profit: 2098.2312982142853 +2025-03-10 13:11:45,937 - INFO - CLOSED long at 2070.36 | PnL: 0.15% | $0.10 +2025-03-10 13:11:45,956 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.539967857143 | Take profit: 2099.956798214286 +2025-03-10 13:11:45,975 - INFO - CLOSED long at 2070.7 | PnL: 0.09% | $-0.02 +2025-03-10 13:11:45,994 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.977767857143 | Take profit: 2100.4033982142855 +2025-03-10 13:11:46,011 - INFO - CLOSED long at 2069.19 | PnL: -0.01% | $-0.20 +2025-03-10 13:11:46,012 - INFO - OPENED SHORT at 2069.19 | Stop loss: 2079.551482142857 | Take profit: 2038.1288517857145 +2025-03-10 13:11:46,029 - INFO - CLOSED short at 2068.8 | PnL: 0.02% | $-0.15 +2025-03-10 13:11:46,072 - INFO - OPENED SHORT at 2067.51 | Stop loss: 2077.8630821428574 | Take profit: 2036.4740517857144 +2025-03-10 13:11:46,099 - INFO - CLOSED short at 2069.01 | PnL: -0.07% | $-0.33 +2025-03-10 13:11:46,144 - INFO - OPENED SHORT at 2065.99 | Stop loss: 2076.335482142857 | Take profit: 2034.9768517857142 +2025-03-10 13:11:46,183 - INFO - CLOSED short at 2066.29 | PnL: -0.01% | $-0.22 +2025-03-10 13:11:46,184 - INFO - OPENED LONG at 2066.29 | Stop loss: 2055.943017857143 | Take profit: 2097.3076482142856 +2025-03-10 13:11:46,223 - INFO - CLOSED long at 2066.18 | PnL: -0.01% | $-0.20 +2025-03-10 13:11:46,223 - INFO - OPENED SHORT at 2066.18 | Stop loss: 2076.526432142857 | Take profit: 2035.1640017857142 +2025-03-10 13:11:46,245 - INFO - CLOSED short at 2068.76 | PnL: -0.12% | $-0.42 +2025-03-10 13:11:46,246 - INFO - OPENED LONG at 2068.76 | Stop loss: 2058.400667857143 | Take profit: 2099.814698214286 +2025-03-10 13:11:46,272 - INFO - CLOSED long at 2068.9 | PnL: 0.01% | $-0.17 +2025-03-10 13:11:46,272 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.260032142857 | Take profit: 2037.8432017857144 +2025-03-10 13:11:46,391 - INFO - CLOSED short at 2071.4 | PnL: -0.12% | $-0.41 +2025-03-10 13:11:46,413 - INFO - OPENED LONG at 2071.39 | Stop loss: 2061.0175178571426 | Take profit: 2102.4841482142856 +2025-03-10 13:11:46,433 - INFO - CLOSED long at 2071.36 | PnL: -0.00% | $-0.19 +2025-03-10 13:11:46,488 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.0790321428567 | Take profit: 2041.586201785714 +2025-03-10 13:11:46,526 - INFO - CLOSED short at 2074.29 | PnL: -0.08% | $-0.33 +2025-03-10 13:11:46,560 - INFO - OPENED SHORT at 2071.92 | Stop loss: 2082.2951321428573 | Take profit: 2040.8179017857142 +2025-03-10 13:11:46,578 - INFO - CLOSED short at 2070.4 | PnL: 0.07% | $-0.05 +2025-03-10 13:11:46,578 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.032467857143 | Take profit: 2101.479298214286 +2025-03-10 13:11:46,649 - INFO - CLOSED long at 2068.32 | PnL: -0.10% | $-0.37 +2025-03-10 13:11:46,659 - INFO - OPENED SHORT at 2068.32 | Stop loss: 2078.6771321428573 | Take profit: 2037.2719017857144 +2025-03-10 13:11:46,715 - INFO - CLOSED short at 2067.46 | PnL: 0.04% | $-0.11 +2025-03-10 13:11:46,716 - INFO - OPENED LONG at 2067.46 | Stop loss: 2057.107167857143 | Take profit: 2098.4951982142857 +2025-03-10 13:11:46,831 - INFO - CLOSED long at 2068.8 | PnL: 0.06% | $-0.06 +2025-03-10 13:11:46,869 - INFO - OPENED SHORT at 2067.86 | Stop loss: 2078.2148321428576 | Take profit: 2036.8188017857144 +2025-03-10 13:11:46,954 - INFO - CLOSED short at 2070.7 | PnL: -0.14% | $-0.43 +2025-03-10 13:11:46,954 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3309678571427 | Take profit: 2101.7837982142855 +2025-03-10 13:11:46,971 - INFO - CLOSED long at 2070.4 | PnL: -0.01% | $-0.21 +2025-03-10 13:11:46,971 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7675321428574 | Take profit: 2039.3207017857144 +2025-03-10 13:11:47,013 - INFO - CLOSED short at 2068.5 | PnL: 0.09% | $-0.01 +2025-03-10 13:11:47,013 - INFO - OPENED LONG at 2068.5 | Stop loss: 2058.141967857143 | Take profit: 2099.550798214286 +2025-03-10 13:11:47,071 - INFO - CLOSED long at 2067.11 | PnL: -0.07% | $-0.30 +2025-03-10 13:11:47,082 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.505167857143 | Take profit: 2098.9011982142856 +2025-03-10 13:11:47,108 - INFO - CLOSED long at 2066.4 | PnL: -0.07% | $-0.31 +2025-03-10 13:11:47,109 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.7475321428574 | Take profit: 2035.3807017857143 +2025-03-10 13:11:47,126 - INFO - CLOSED short at 2066.1 | PnL: 0.01% | $-0.15 +2025-03-10 13:11:47,147 - INFO - OPENED LONG at 2065.28 | Stop loss: 2054.9380678571433 | Take profit: 2096.282498214286 +2025-03-10 13:11:47,168 - INFO - CLOSED long at 2066.39 | PnL: 0.05% | $-0.08 +2025-03-10 13:11:47,230 - INFO - OPENED SHORT at 2068.18 | Stop loss: 2078.536432142857 | Take profit: 2037.1340017857142 +2025-03-10 13:11:47,255 - INFO - CLOSED short at 2065.69 | PnL: 0.12% | $0.04 +2025-03-10 13:11:47,289 - INFO - OPENED LONG at 2064.99 | Stop loss: 2054.6495178571427 | Take profit: 2095.9881482142855 +2025-03-10 13:11:47,327 - INFO - CLOSED long at 2066.15 | PnL: 0.06% | $-0.08 +2025-03-10 13:11:47,362 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.219982142857 | Take profit: 2031.9233517857142 +2025-03-10 13:11:47,420 - INFO - CLOSED short at 2059.59 | PnL: 0.16% | $0.11 +2025-03-10 13:11:47,440 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.977967857143 | Take profit: 2092.242798214286 +2025-03-10 13:11:47,476 - INFO - CLOSED long at 2064.96 | PnL: 0.18% | $0.14 +2025-03-10 13:11:47,495 - INFO - OPENED LONG at 2066.24 | Stop loss: 2055.8932678571427 | Take profit: 2097.2568982142857 +2025-03-10 13:11:47,517 - INFO - CLOSED long at 2067.1 | PnL: 0.04% | $-0.11 +2025-03-10 13:11:47,536 - INFO - OPENED LONG at 2065.54 | Stop loss: 2055.1967678571427 | Take profit: 2096.5463982142855 +2025-03-10 13:11:47,578 - INFO - CLOSED long at 2064.45 | PnL: -0.05% | $-0.28 +2025-03-10 13:11:47,578 - INFO - OPENED SHORT at 2064.45 | Stop loss: 2074.787782142857 | Take profit: 2033.459951785714 +2025-03-10 13:11:47,612 - INFO - CLOSED short at 2062.71 | PnL: 0.08% | $-0.03 +2025-03-10 13:11:47,634 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.219982142857 | Take profit: 2031.9233517857142 +2025-03-10 13:11:47,717 - INFO - CLOSED short at 2060.65 | PnL: 0.11% | $0.02 +2025-03-10 13:11:47,717 - INFO - OPENED LONG at 2060.65 | Stop loss: 2050.3312178571427 | Take profit: 2091.583048214286 +2025-03-10 13:11:47,793 - INFO - CLOSED long at 2061.8 | PnL: 0.06% | $-0.08 +2025-03-10 13:11:47,793 - INFO - OPENED SHORT at 2061.8 | Stop loss: 2072.1245321428573 | Take profit: 2030.8497017857144 +2025-03-10 13:11:47,823 - INFO - CLOSED short at 2064.7 | PnL: -0.14% | $-0.43 +2025-03-10 13:11:47,824 - INFO - OPENED LONG at 2064.7 | Stop loss: 2054.360967857143 | Take profit: 2095.6937982142854 +2025-03-10 13:11:47,927 - INFO - CLOSED long at 2061.9 | PnL: -0.14% | $-0.42 +2025-03-10 13:11:47,972 - INFO - OPENED LONG at 2065.36 | Stop loss: 2055.017667857143 | Take profit: 2096.363698214286 +2025-03-10 13:11:48,015 - INFO - CLOSED long at 2063.39 | PnL: -0.10% | $-0.35 +2025-03-10 13:11:48,015 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.722482142857 | Take profit: 2032.415851785714 +2025-03-10 13:11:48,043 - INFO - CLOSED short at 2064.79 | PnL: -0.07% | $-0.30 +2025-03-10 13:11:48,096 - INFO - OPENED SHORT at 2063.53 | Stop loss: 2073.863182142857 | Take profit: 2032.5537517857144 +2025-03-10 13:11:48,115 - INFO - CLOSED short at 2063.0 | PnL: 0.03% | $-0.13 +2025-03-10 13:11:48,122 - INFO - OPENED LONG at 2063.0 | Stop loss: 2052.6694678571425 | Take profit: 2093.968298214286 +2025-03-10 13:11:48,169 - INFO - CLOSED long at 2061.89 | PnL: -0.05% | $-0.27 +2025-03-10 13:11:48,172 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.214982142857 | Take profit: 2030.938351785714 +2025-03-10 13:11:48,199 - INFO - CLOSED short at 2061.7 | PnL: 0.01% | $-0.16 +2025-03-10 13:11:48,199 - INFO - OPENED LONG at 2061.7 | Stop loss: 2051.3759678571428 | Take profit: 2092.6487982142853 +2025-03-10 13:11:48,225 - INFO - CLOSED long at 2060.7 | PnL: -0.05% | $-0.26 +2025-03-10 13:11:48,248 - INFO - OPENED SHORT at 2061.09 | Stop loss: 2071.4109821428574 | Take profit: 2030.1503517857145 +2025-03-10 13:11:48,293 - INFO - CLOSED short at 2059.16 | PnL: 0.09% | $-0.01 +2025-03-10 13:11:48,293 - INFO - OPENED LONG at 2059.16 | Stop loss: 2048.8486678571426 | Take profit: 2090.0706982142856 +2025-03-10 13:11:48,375 - INFO - CLOSED long at 2059.46 | PnL: 0.01% | $-0.15 +2025-03-10 13:11:48,432 - INFO - OPENED LONG at 2058.28 | Stop loss: 2047.9730678571432 | Take profit: 2089.177498214286 +2025-03-10 13:11:48,455 - INFO - CLOSED long at 2056.28 | PnL: -0.10% | $-0.34 +2025-03-10 13:11:48,457 - INFO - OPENED SHORT at 2056.28 | Stop loss: 2066.5769321428575 | Take profit: 2025.4125017857145 +2025-03-10 13:11:48,498 - INFO - CLOSED short at 2054.89 | PnL: 0.07% | $-0.06 +2025-03-10 13:11:48,539 - INFO - OPENED SHORT at 2056.71 | Stop loss: 2067.0090821428576 | Take profit: 2025.8360517857145 +2025-03-10 13:11:48,560 - INFO - CLOSED short at 2058.15 | PnL: -0.07% | $-0.30 +2025-03-10 13:11:48,581 - INFO - OPENED SHORT at 2059.8 | Stop loss: 2070.114532142857 | Take profit: 2028.8797017857144 +2025-03-10 13:11:48,638 - INFO - CLOSED short at 2061.6 | PnL: -0.09% | $-0.32 +2025-03-10 13:11:48,675 - INFO - OPENED SHORT at 2062.69 | Stop loss: 2073.018982142857 | Take profit: 2031.7263517857143 +2025-03-10 13:11:48,722 - INFO - CLOSED short at 2066.36 | PnL: -0.18% | $-0.48 +2025-03-10 13:11:48,770 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.564967857143 | Take profit: 2094.881798214286 +2025-03-10 13:11:48,836 - INFO - CLOSED long at 2066.34 | PnL: 0.12% | $0.03 +2025-03-10 13:11:48,836 - INFO - OPENED SHORT at 2066.34 | Stop loss: 2076.6872321428573 | Take profit: 2035.3216017857144 +2025-03-10 13:11:48,854 - INFO - CLOSED short at 2066.79 | PnL: -0.02% | $-0.21 +2025-03-10 13:11:48,854 - INFO - OPENED LONG at 2066.79 | Stop loss: 2056.440517857143 | Take profit: 2097.8151482142853 +2025-03-10 13:11:48,878 - INFO - CLOSED long at 2067.33 | PnL: 0.03% | $-0.13 +2025-03-10 13:11:48,952 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3755321428575 | Take profit: 2040.8967017857144 +2025-03-10 13:11:48,989 - INFO - CLOSED short at 2078.01 | PnL: -0.29% | $-0.67 +2025-03-10 13:11:48,989 - INFO - OPENED LONG at 2078.01 | Stop loss: 2067.604417857143 | Take profit: 2109.203448214286 +2025-03-10 13:11:49,052 - INFO - CLOSED long at 2072.6 | PnL: -0.26% | $-0.61 +2025-03-10 13:11:49,052 - INFO - OPENED SHORT at 2072.6 | Stop loss: 2082.9785321428567 | Take profit: 2041.4877017857143 +2025-03-10 13:11:49,112 - INFO - CLOSED short at 2070.01 | PnL: 0.12% | $0.04 +2025-03-10 13:11:49,139 - INFO - OPENED LONG at 2071.6 | Stop loss: 2061.226467857143 | Take profit: 2102.6972982142856 +2025-03-10 13:11:49,166 - INFO - CLOSED long at 2073.23 | PnL: 0.08% | $-0.04 +2025-03-10 13:11:49,193 - INFO - OPENED LONG at 2070.0 | Stop loss: 2059.634467857143 | Take profit: 2101.0732982142854 +2025-03-10 13:11:49,246 - INFO - CLOSED long at 2068.39 | PnL: -0.08% | $-0.30 +2025-03-10 13:11:49,300 - INFO - OPENED LONG at 2067.44 | Stop loss: 2057.0872678571427 | Take profit: 2098.4748982142855 +2025-03-10 13:11:49,319 - INFO - CLOSED long at 2068.79 | PnL: 0.07% | $-0.06 +2025-03-10 13:11:49,389 - INFO - OPENED SHORT at 2069.87 | Stop loss: 2080.234882142857 | Take profit: 2038.7986517857141 +2025-03-10 13:11:49,447 - INFO - CLOSED short at 2066.38 | PnL: 0.17% | $0.12 +2025-03-10 13:11:49,447 - INFO - OPENED LONG at 2066.38 | Stop loss: 2056.032567857143 | Take profit: 2097.3989982142857 +2025-03-10 13:11:49,528 - INFO - CLOSED long at 2065.66 | PnL: -0.03% | $-0.23 +2025-03-10 13:11:49,530 - INFO - OPENED SHORT at 2065.66 | Stop loss: 2076.003832142857 | Take profit: 2034.651801785714 +2025-03-10 13:11:49,761 - INFO - CLOSED short at 2067.53 | PnL: -0.09% | $-0.32 +2025-03-10 13:11:49,819 - INFO - OPENED LONG at 2066.8 | Stop loss: 2056.450467857143 | Take profit: 2097.825298214286 +2025-03-10 13:11:49,839 - INFO - CLOSED long at 2066.5 | PnL: -0.01% | $-0.19 +2025-03-10 13:11:49,840 - INFO - OPENED SHORT at 2066.5 | Stop loss: 2076.848032142857 | Take profit: 2035.4792017857144 +2025-03-10 13:11:50,032 - INFO - CLOSED short at 2070.9 | PnL: -0.21% | $-0.52 +2025-03-10 13:11:50,032 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.529967857143 | Take profit: 2101.986798214286 +2025-03-10 13:11:50,077 - INFO - CLOSED long at 2070.7 | PnL: -0.01% | $-0.18 +2025-03-10 13:11:50,077 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.069032142857 | Take profit: 2039.6162017857139 +2025-03-10 13:11:50,102 - INFO - CLOSED short at 2070.8 | PnL: -0.00% | $-0.17 +2025-03-10 13:11:50,103 - INFO - OPENED LONG at 2070.8 | Stop loss: 2060.430467857143 | Take profit: 2101.885298214286 +2025-03-10 13:11:50,196 - INFO - CLOSED long at 2068.19 | PnL: -0.13% | $-0.37 +2025-03-10 13:11:50,240 - INFO - OPENED LONG at 2070.67 | Stop loss: 2060.301117857143 | Take profit: 2101.753348214286 +2025-03-10 13:11:50,318 - INFO - CLOSED long at 2071.61 | PnL: 0.05% | $-0.09 +2025-03-10 13:11:50,318 - INFO - OPENED SHORT at 2071.61 | Stop loss: 2081.9835821428574 | Take profit: 2040.5125517857143 +2025-03-10 13:11:50,469 - INFO - CLOSED short at 2073.27 | PnL: -0.08% | $-0.29 +2025-03-10 13:11:50,493 - INFO - OPENED LONG at 2073.99 | Stop loss: 2063.6045178571426 | Take profit: 2105.1231482142853 +2025-03-10 13:11:50,511 - INFO - CLOSED long at 2075.32 | PnL: 0.06% | $-0.06 +2025-03-10 13:11:50,514 - INFO - OPENED SHORT at 2075.32 | Stop loss: 2085.7121321428576 | Take profit: 2044.1669017857146 +2025-03-10 13:11:50,557 - INFO - CLOSED short at 2076.9 | PnL: -0.08% | $-0.29 +2025-03-10 13:11:50,671 - INFO - OPENED SHORT at 2069.97 | Stop loss: 2080.335382142857 | Take profit: 2038.897151785714 +2025-03-10 13:11:50,714 - INFO - CLOSED short at 2067.7 | PnL: 0.11% | $0.02 +2025-03-10 13:11:50,797 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.255032142857 | Take profit: 2036.8582017857143 +2025-03-10 13:11:50,840 - INFO - CLOSED short at 2066.4 | PnL: 0.07% | $-0.04 +2025-03-10 13:11:50,884 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.525067857143 | Take profit: 2098.9214982142857 +2025-03-10 13:11:50,914 - INFO - CLOSED long at 2065.45 | PnL: -0.12% | $-0.35 +2025-03-10 13:11:50,943 - INFO - OPENED LONG at 2068.1 | Stop loss: 2057.7439678571427 | Take profit: 2099.1447982142854 +2025-03-10 13:11:51,031 - INFO - CLOSED long at 2070.1 | PnL: 0.10% | $-0.01 +2025-03-10 13:11:51,174 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.355967857143 | Take profit: 2096.7087982142857 +2025-03-10 13:11:51,254 - INFO - CLOSED long at 2065.07 | PnL: -0.03% | $-0.21 +2025-03-10 13:11:51,254 - INFO - OPENED SHORT at 2065.07 | Stop loss: 2075.4108821428576 | Take profit: 2034.0706517857145 +2025-03-10 13:11:51,278 - INFO - CLOSED short at 2066.09 | PnL: -0.05% | $-0.24 +2025-03-10 13:11:51,304 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.722482142857 | Take profit: 2032.415851785714 +2025-03-10 13:11:51,412 - INFO - CLOSED short at 2064.11 | PnL: -0.03% | $-0.22 +2025-03-10 13:11:51,434 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.838032142857 | Take profit: 2033.5092017857144 +2025-03-10 13:11:51,470 - INFO - CLOSED short at 2066.33 | PnL: -0.09% | $-0.30 +2025-03-10 13:11:51,540 - INFO - OPENED SHORT at 2063.01 | Stop loss: 2073.3405821428573 | Take profit: 2032.0415517857145 +2025-03-10 13:11:51,663 - INFO - CLOSED short at 2060.2 | PnL: 0.14% | $0.06 +2025-03-10 13:11:51,664 - INFO - OPENED LONG at 2060.2 | Stop loss: 2049.8834678571425 | Take profit: 2091.1262982142853 +2025-03-10 13:11:51,716 - INFO - CLOSED long at 2058.09 | PnL: -0.10% | $-0.32 +2025-03-10 13:11:51,716 - INFO - OPENED SHORT at 2058.09 | Stop loss: 2068.3959821428575 | Take profit: 2027.1953517857144 +2025-03-10 13:11:51,764 - INFO - CLOSED short at 2056.77 | PnL: 0.06% | $-0.06 +2025-03-10 13:11:51,785 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.729417857143 | Take profit: 2083.828448214286 +2025-03-10 13:11:51,862 - INFO - CLOSED long at 2051.99 | PnL: -0.05% | $-0.24 +2025-03-10 13:11:51,899 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9929678571432 | Take profit: 2089.1977982142857 +2025-03-10 13:11:52,050 - INFO - CLOSED long at 2062.83 | PnL: 0.22% | $0.19 +2025-03-10 13:11:52,122 - INFO - OPENED SHORT at 2062.43 | Stop loss: 2072.757682142857 | Take profit: 2031.470251785714 +2025-03-10 13:11:52,163 - INFO - CLOSED short at 2065.12 | PnL: -0.13% | $-0.37 +2025-03-10 13:11:52,163 - INFO - OPENED LONG at 2065.12 | Stop loss: 2054.778867857143 | Take profit: 2096.120098214286 +2025-03-10 13:11:52,207 - INFO - CLOSED long at 2067.49 | PnL: 0.11% | $0.02 +2025-03-10 13:11:52,254 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.744067857143 | Take profit: 2095.0644982142853 +2025-03-10 13:11:52,331 - INFO - CLOSED long at 2059.9 | PnL: -0.20% | $-0.48 +2025-03-10 13:11:52,433 - INFO - OPENED SHORT at 2062.54 | Stop loss: 2072.868232142857 | Take profit: 2031.5786017857142 +2025-03-10 13:11:52,503 - INFO - CLOSED short at 2070.24 | PnL: -0.37% | $-0.75 +2025-03-10 13:11:52,503 - INFO - OPENED LONG at 2070.24 | Stop loss: 2059.8732678571428 | Take profit: 2101.3168982142856 +2025-03-10 13:11:52,529 - INFO - CLOSED long at 2069.34 | PnL: -0.04% | $-0.22 +2025-03-10 13:11:52,554 - INFO - OPENED SHORT at 2069.81 | Stop loss: 2080.1745821428567 | Take profit: 2038.7395517857142 +2025-03-10 13:11:52,684 - INFO - CLOSED short at 2072.99 | PnL: -0.15% | $-0.39 +2025-03-10 13:11:52,685 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6095178571427 | Take profit: 2104.1081482142854 +2025-03-10 13:11:52,720 - INFO - CLOSED long at 2071.89 | PnL: -0.05% | $-0.24 +2025-03-10 13:11:52,757 - INFO - OPENED SHORT at 2071.8 | Stop loss: 2082.1745321428575 | Take profit: 2040.6997017857145 +2025-03-10 13:11:52,837 - INFO - CLOSED short at 2076.08 | PnL: -0.21% | $-0.47 +2025-03-10 13:11:52,858 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2088.0135821428576 | Take profit: 2046.4225517857144 +2025-03-10 13:11:52,882 - INFO - CLOSED short at 2085.56 | PnL: -0.38% | $-0.74 +2025-03-10 13:11:52,980 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.253232142857 | Take profit: 2107.4236017857143 +2025-03-10 13:11:53,032 - INFO - CLOSED short at 2133.95 | PnL: 0.26% | $0.24 +2025-03-10 13:11:53,033 - INFO - OPENED LONG at 2133.95 | Stop loss: 2123.264717857143 | Take profit: 2165.9825482142855 +2025-03-10 13:11:53,245 - INFO - CLOSED long at 2134.78 | PnL: 0.04% | $-0.09 +2025-03-10 13:11:53,267 - INFO - OPENED LONG at 2126.99 | Stop loss: 2116.3395178571427 | Take profit: 2158.9181482142853 +2025-03-10 13:11:53,287 - INFO - CLOSED long at 2127.3 | PnL: 0.01% | $-0.13 +2025-03-10 13:11:53,288 - INFO - OPENED SHORT at 2127.3 | Stop loss: 2137.952032142857 | Take profit: 2095.3672017857143 +2025-03-10 13:11:53,308 - INFO - CLOSED short at 2128.69 | PnL: -0.07% | $-0.25 +2025-03-10 13:11:53,309 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.031017857143 | Take profit: 2160.643648214286 +2025-03-10 13:11:53,333 - INFO - CLOSED long at 2121.09 | PnL: -0.36% | $-0.69 +2025-03-10 13:11:53,333 - INFO - OPENED SHORT at 2121.09 | Stop loss: 2131.710982142857 | Take profit: 2089.2503517857144 +2025-03-10 13:11:53,429 - INFO - CLOSED short at 2121.4 | PnL: -0.01% | $-0.17 +2025-03-10 13:11:53,644 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.0314678571426 | Take profit: 2142.282298214285 +2025-03-10 13:11:53,671 - INFO - CLOSED long at 2109.05 | PnL: -0.07% | $-0.26 +2025-03-10 13:11:53,802 - INFO - OPENED LONG at 2120.81 | Stop loss: 2110.1904178571426 | Take profit: 2152.645448214286 +2025-03-10 13:11:53,905 - INFO - CLOSED long at 2108.71 | PnL: -0.57% | $-1.00 +2025-03-10 13:11:53,940 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.9420178571427 | Take profit: 2138.1106482142854 +2025-03-10 13:11:54,010 - INFO - CLOSED long at 2103.33 | PnL: -0.15% | $-0.37 +2025-03-10 13:11:54,087 - INFO - OPENED SHORT at 2099.53 | Stop loss: 2110.0431821428574 | Take profit: 2068.0137517857142 +2025-03-10 13:11:54,110 - INFO - CLOSED short at 2098.1 | PnL: 0.07% | $-0.05 +2025-03-10 13:11:54,187 - INFO - OPENED LONG at 2098.9 | Stop loss: 2088.389967857143 | Take profit: 2130.4067982142856 +2025-03-10 13:11:54,223 - INFO - CLOSED long at 2104.83 | PnL: 0.28% | $0.27 +2025-03-10 13:11:54,245 - INFO - OPENED LONG at 2106.39 | Stop loss: 2095.842517857143 | Take profit: 2138.0091482142857 +2025-03-10 13:11:54,317 - INFO - CLOSED long at 2103.86 | PnL: -0.12% | $-0.32 +2025-03-10 13:11:54,317 - INFO - OPENED SHORT at 2103.86 | Stop loss: 2114.394832142857 | Take profit: 2072.278801785714 +2025-03-10 13:11:54,354 - INFO - CLOSED short at 2104.68 | PnL: -0.04% | $-0.20 +2025-03-10 13:11:54,452 - INFO - OPENED LONG at 2100.02 | Stop loss: 2089.504367857143 | Take profit: 2131.543598214286 +2025-03-10 13:11:54,470 - INFO - CLOSED long at 2098.39 | PnL: -0.08% | $-0.26 +2025-03-10 13:11:54,470 - INFO - OPENED SHORT at 2098.39 | Stop loss: 2108.8974821428574 | Take profit: 2066.890851785714 +2025-03-10 13:11:54,515 - INFO - CLOSED short at 2093.46 | PnL: 0.23% | $0.20 +2025-03-10 13:11:54,542 - INFO - OPENED SHORT at 2093.33 | Stop loss: 2103.812182142857 | Take profit: 2061.9067517857143 +2025-03-10 13:11:54,565 - INFO - CLOSED short at 2092.46 | PnL: 0.04% | $-0.09 +2025-03-10 13:11:54,565 - INFO - OPENED LONG at 2092.46 | Stop loss: 2081.982167857143 | Take profit: 2123.8701982142857 +2025-03-10 13:11:54,638 - INFO - CLOSED long at 2094.08 | PnL: 0.08% | $-0.03 +2025-03-10 13:11:54,638 - INFO - OPENED SHORT at 2094.08 | Stop loss: 2104.565932142857 | Take profit: 2062.6455017857143 +2025-03-10 13:11:54,674 - INFO - CLOSED short at 2088.35 | PnL: 0.27% | $0.25 +2025-03-10 13:11:54,674 - INFO - OPENED LONG at 2088.35 | Stop loss: 2077.8927178571425 | Take profit: 2119.6985482142854 +2025-03-10 13:11:54,728 - INFO - CLOSED long at 2083.28 | PnL: -0.24% | $-0.50 +2025-03-10 13:11:54,728 - INFO - OPENED SHORT at 2083.28 | Stop loss: 2093.711932142857 | Take profit: 2052.0075017857143 +2025-03-10 13:11:54,764 - INFO - CLOSED short at 2088.44 | PnL: -0.25% | $-0.50 +2025-03-10 13:11:54,764 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.9822678571427 | Take profit: 2119.789898214286 +2025-03-10 13:11:54,898 - INFO - CLOSED long at 2080.38 | PnL: -0.39% | $-0.70 +2025-03-10 13:11:54,898 - INFO - OPENED SHORT at 2080.38 | Stop loss: 2090.7974321428574 | Take profit: 2049.1510017857145 +2025-03-10 13:11:54,917 - INFO - CLOSED short at 2081.25 | PnL: -0.04% | $-0.20 +2025-03-10 13:11:54,961 - INFO - OPENED LONG at 2085.09 | Stop loss: 2074.649017857143 | Take profit: 2116.389648214286 +2025-03-10 13:11:54,980 - INFO - CLOSED long at 2083.59 | PnL: -0.07% | $-0.24 +2025-03-10 13:11:54,996 - INFO - OPENED LONG at 2086.57 | Stop loss: 2076.121617857143 | Take profit: 2117.8918482142863 +2025-03-10 13:11:55,059 - INFO - CLOSED long at 2085.83 | PnL: -0.04% | $-0.19 +2025-03-10 13:11:55,180 - INFO - OPENED SHORT at 2088.1 | Stop loss: 2098.556032142857 | Take profit: 2056.7552017857142 +2025-03-10 13:11:55,241 - INFO - CLOSED short at 2087.0 | PnL: 0.05% | $-0.07 +2025-03-10 13:11:55,241 - INFO - OPENED LONG at 2087.0 | Stop loss: 2076.5494678571426 | Take profit: 2118.328298214286 +2025-03-10 13:11:55,261 - INFO - CLOSED long at 2087.47 | PnL: 0.02% | $-0.11 +2025-03-10 13:11:55,337 - INFO - OPENED LONG at 2085.67 | Stop loss: 2075.226117857143 | Take profit: 2116.978348214286 +2025-03-10 13:11:55,356 - INFO - CLOSED long at 2089.2 | PnL: 0.17% | $0.10 +2025-03-10 13:11:55,356 - INFO - OPENED SHORT at 2089.2 | Stop loss: 2099.661532142857 | Take profit: 2057.838701785714 +2025-03-10 13:11:55,438 - INFO - CLOSED short at 2094.7 | PnL: -0.26% | $-0.51 +2025-03-10 13:11:55,438 - INFO - OPENED LONG at 2094.7 | Stop loss: 2084.210967857143 | Take profit: 2126.1437982142857 +2025-03-10 13:11:55,596 - INFO - CLOSED long at 2098.49 | PnL: 0.18% | $0.11 +2025-03-10 13:11:55,711 - INFO - OPENED LONG at 2103.48 | Stop loss: 2092.947067857143 | Take profit: 2135.0554982142858 +2025-03-10 13:11:55,783 - INFO - CLOSED long at 2101.5 | PnL: -0.09% | $-0.27 +2025-03-10 13:11:55,837 - INFO - OPENED LONG at 2105.2 | Stop loss: 2094.6584678571426 | Take profit: 2136.8012982142855 +2025-03-10 13:11:55,856 - INFO - CLOSED long at 2103.52 | PnL: -0.08% | $-0.25 +2025-03-10 13:11:55,862 - INFO - OPENED SHORT at 2103.52 | Stop loss: 2114.0531321428575 | Take profit: 2071.9439017857144 +2025-03-10 13:11:55,892 - INFO - CLOSED short at 2104.4 | PnL: -0.04% | $-0.20 +2025-03-10 13:11:55,893 - INFO - OPENED LONG at 2104.4 | Stop loss: 2093.862467857143 | Take profit: 2135.989298214286 +2025-03-10 13:11:55,929 - INFO - Trade Analysis: Win Rate=13.5% in uptrends, 0.0% in downtrends | Avg Win=$0.11, Avg Loss=$-0.25 +2025-03-10 13:11:55,929 - INFO - Episode 0: Reward=-243.33, Balance=$69.99, Win Rate=14.5%, Trades=152, Episode PnL=$-21.96, Total PnL=$-30.01, Max Drawdown=29.6%, Pred Accuracy=97.7% +2025-03-10 13:11:55,929 - ERROR - Error in episode 0: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:11:55,932 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:11:55,954 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:11:56,211 - INFO - OPENED LONG at 2046.58 | Stop loss: 2036.3315678571428 | Take profit: 2077.3019982142855 +2025-03-10 13:11:56,231 - INFO - CLOSED long at 2047.4 | PnL: 0.04% | $-0.12 +2025-03-10 13:11:56,272 - INFO - OPENED LONG at 2045.99 | Stop loss: 2035.744517857143 | Take profit: 2076.703148214286 +2025-03-10 13:11:56,293 - INFO - CLOSED long at 2045.99 | PnL: 0.00% | $-0.20 +2025-03-10 13:11:56,294 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.235482142857 | Take profit: 2015.2768517857144 +2025-03-10 13:11:56,319 - INFO - CLOSED short at 2045.79 | PnL: 0.01% | $-0.18 +2025-03-10 13:11:56,343 - INFO - OPENED LONG at 2048.13 | Stop loss: 2037.873817857143 | Take profit: 2078.875248214286 +2025-03-10 13:11:56,412 - INFO - CLOSED long at 2050.0 | PnL: 0.09% | $-0.02 +2025-03-10 13:11:56,413 - INFO - OPENED SHORT at 2050.0 | Stop loss: 2060.2655321428574 | Take profit: 2019.2267017857143 +2025-03-10 13:11:56,482 - INFO - CLOSED short at 2051.11 | PnL: -0.05% | $-0.30 +2025-03-10 13:11:56,516 - INFO - OPENED LONG at 2053.26 | Stop loss: 2042.9781678571433 | Take profit: 2084.082198214286 +2025-03-10 13:11:56,552 - INFO - CLOSED long at 2051.89 | PnL: -0.07% | $-0.33 +2025-03-10 13:11:56,671 - INFO - OPENED SHORT at 2056.89 | Stop loss: 2067.189982142857 | Take profit: 2026.0133517857143 +2025-03-10 13:11:56,690 - INFO - CLOSED short at 2058.39 | PnL: -0.07% | $-0.34 +2025-03-10 13:11:56,727 - INFO - OPENED LONG at 2059.7 | Stop loss: 2049.3859678571425 | Take profit: 2090.6187982142856 +2025-03-10 13:11:56,764 - INFO - CLOSED long at 2063.29 | PnL: 0.17% | $0.15 +2025-03-10 13:11:56,784 - INFO - OPENED SHORT at 2064.61 | Stop loss: 2074.948582142857 | Take profit: 2033.6175517857146 +2025-03-10 13:11:56,834 - INFO - CLOSED short at 2064.69 | PnL: -0.00% | $-0.20 +2025-03-10 13:11:56,856 - INFO - OPENED SHORT at 2063.01 | Stop loss: 2073.3405821428573 | Take profit: 2032.0415517857145 +2025-03-10 13:11:56,917 - INFO - CLOSED short at 2058.3 | PnL: 0.23% | $0.25 +2025-03-10 13:11:56,917 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9929678571432 | Take profit: 2089.1977982142857 +2025-03-10 13:11:56,947 - INFO - CLOSED long at 2060.0 | PnL: 0.08% | $-0.03 +2025-03-10 13:11:57,005 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.5600178571426 | Take profit: 2093.8566482142855 +2025-03-10 13:11:57,037 - INFO - CLOSED long at 2060.31 | PnL: -0.13% | $-0.44 +2025-03-10 13:11:57,038 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.627082142857 | Take profit: 2029.3820517857143 +2025-03-10 13:11:57,058 - INFO - CLOSED short at 2059.49 | PnL: 0.04% | $-0.12 +2025-03-10 13:11:57,076 - INFO - OPENED SHORT at 2057.8 | Stop loss: 2068.1045321428574 | Take profit: 2026.9097017857146 +2025-03-10 13:11:57,132 - INFO - CLOSED short at 2058.11 | PnL: -0.02% | $-0.22 +2025-03-10 13:11:57,132 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.803917857143 | Take profit: 2089.004948214286 +2025-03-10 13:11:57,148 - INFO - CLOSED long at 2061.79 | PnL: 0.18% | $0.15 +2025-03-10 13:11:57,166 - INFO - OPENED LONG at 2061.18 | Stop loss: 2050.8585678571426 | Take profit: 2092.1209982142855 +2025-03-10 13:11:57,206 - INFO - CLOSED long at 2065.86 | PnL: 0.23% | $0.25 +2025-03-10 13:11:57,207 - INFO - OPENED SHORT at 2065.86 | Stop loss: 2076.204832142857 | Take profit: 2034.8488017857146 +2025-03-10 13:11:57,271 - INFO - CLOSED short at 2068.29 | PnL: -0.12% | $-0.42 +2025-03-10 13:11:57,271 - INFO - OPENED LONG at 2068.29 | Stop loss: 2057.9330178571427 | Take profit: 2099.3376482142858 +2025-03-10 13:11:57,303 - INFO - CLOSED long at 2067.89 | PnL: -0.02% | $-0.23 +2025-03-10 13:11:57,337 - INFO - OPENED LONG at 2071.63 | Stop loss: 2061.256317857143 | Take profit: 2102.727748214286 +2025-03-10 13:11:57,367 - INFO - CLOSED long at 2070.99 | PnL: -0.03% | $-0.25 +2025-03-10 13:11:57,429 - INFO - OPENED LONG at 2068.65 | Stop loss: 2058.291217857143 | Take profit: 2099.703048214286 +2025-03-10 13:11:57,452 - INFO - CLOSED long at 2068.99 | PnL: 0.02% | $-0.16 +2025-03-10 13:11:57,471 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.255032142857 | Take profit: 2036.8582017857143 +2025-03-10 13:11:57,489 - INFO - CLOSED short at 2067.69 | PnL: 0.01% | $-0.17 +2025-03-10 13:11:57,489 - INFO - OPENED LONG at 2067.69 | Stop loss: 2057.336017857143 | Take profit: 2098.7286482142854 +2025-03-10 13:11:57,524 - INFO - CLOSED long at 2071.44 | PnL: 0.18% | $0.16 +2025-03-10 13:11:57,545 - INFO - OPENED SHORT at 2073.73 | Stop loss: 2084.1141821428573 | Take profit: 2042.6007517857142 +2025-03-10 13:11:57,595 - INFO - CLOSED short at 2072.33 | PnL: 0.07% | $-0.06 +2025-03-10 13:11:57,596 - INFO - OPENED LONG at 2072.33 | Stop loss: 2061.9528178571427 | Take profit: 2103.4382482142855 +2025-03-10 13:11:57,615 - INFO - CLOSED long at 2071.38 | PnL: -0.05% | $-0.28 +2025-03-10 13:11:57,655 - INFO - OPENED LONG at 2069.37 | Stop loss: 2059.0076178571426 | Take profit: 2100.4338482142857 +2025-03-10 13:11:57,713 - INFO - CLOSED long at 2072.8 | PnL: 0.17% | $0.13 +2025-03-10 13:11:57,865 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.539967857143 | Take profit: 2099.956798214286 +2025-03-10 13:11:57,917 - INFO - CLOSED long at 2069.19 | PnL: 0.01% | $-0.17 +2025-03-10 13:11:57,917 - INFO - OPENED SHORT at 2069.19 | Stop loss: 2079.551482142857 | Take profit: 2038.1288517857145 +2025-03-10 13:11:57,934 - INFO - CLOSED short at 2068.8 | PnL: 0.02% | $-0.16 +2025-03-10 13:11:57,934 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.440467857143 | Take profit: 2099.855298214286 +2025-03-10 13:11:58,019 - INFO - CLOSED long at 2065.99 | PnL: -0.14% | $-0.45 +2025-03-10 13:11:58,082 - INFO - OPENED LONG at 2065.08 | Stop loss: 2054.739067857143 | Take profit: 2096.0794982142856 +2025-03-10 13:11:58,160 - INFO - CLOSED long at 2068.9 | PnL: 0.18% | $0.16 +2025-03-10 13:11:58,162 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.260032142857 | Take profit: 2037.8432017857144 +2025-03-10 13:11:58,218 - INFO - CLOSED short at 2068.59 | PnL: 0.01% | $-0.16 +2025-03-10 13:11:58,218 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.231517857143 | Take profit: 2099.642148214286 +2025-03-10 13:11:58,247 - INFO - CLOSED long at 2069.7 | PnL: 0.05% | $-0.09 +2025-03-10 13:11:58,248 - INFO - OPENED SHORT at 2069.7 | Stop loss: 2080.064032142857 | Take profit: 2038.6312017857142 +2025-03-10 13:11:58,285 - INFO - CLOSED short at 2069.96 | PnL: -0.01% | $-0.21 +2025-03-10 13:11:58,286 - INFO - OPENED LONG at 2069.96 | Stop loss: 2059.594667857143 | Take profit: 2101.0326982142856 +2025-03-10 13:11:58,434 - INFO - CLOSED long at 2073.9 | PnL: 0.19% | $0.17 +2025-03-10 13:11:58,434 - INFO - OPENED SHORT at 2073.9 | Stop loss: 2084.2850321428573 | Take profit: 2042.7682017857144 +2025-03-10 13:11:58,455 - INFO - CLOSED short at 2071.92 | PnL: 0.10% | $-0.01 +2025-03-10 13:11:58,456 - INFO - OPENED LONG at 2071.92 | Stop loss: 2061.544867857143 | Take profit: 2103.0220982142855 +2025-03-10 13:11:58,485 - INFO - CLOSED long at 2070.4 | PnL: -0.07% | $-0.33 +2025-03-10 13:11:58,516 - INFO - OPENED SHORT at 2071.11 | Stop loss: 2081.4810821428573 | Take profit: 2040.0200517857143 +2025-03-10 13:11:58,547 - INFO - CLOSED short at 2069.46 | PnL: 0.08% | $-0.04 +2025-03-10 13:11:58,547 - INFO - OPENED LONG at 2069.46 | Stop loss: 2059.0971678571427 | Take profit: 2100.525198214286 +2025-03-10 13:11:58,576 - INFO - CLOSED long at 2069.35 | PnL: -0.01% | $-0.20 +2025-03-10 13:11:58,634 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.350532142857 | Take profit: 2035.9717017857142 +2025-03-10 13:11:58,707 - INFO - CLOSED short at 2065.49 | PnL: 0.07% | $-0.05 +2025-03-10 13:11:58,785 - INFO - OPENED SHORT at 2068.58 | Stop loss: 2078.9384321428574 | Take profit: 2037.5280017857142 +2025-03-10 13:11:58,837 - INFO - CLOSED short at 2067.86 | PnL: 0.03% | $-0.12 +2025-03-10 13:11:58,864 - INFO - OPENED SHORT at 2067.59 | Stop loss: 2077.943482142857 | Take profit: 2036.5528517857142 +2025-03-10 13:11:58,924 - INFO - CLOSED short at 2070.3 | PnL: -0.13% | $-0.44 +2025-03-10 13:11:58,952 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.9634821428576 | Take profit: 2040.4928517857145 +2025-03-10 13:11:58,983 - INFO - CLOSED short at 2070.7 | PnL: 0.04% | $-0.11 +2025-03-10 13:11:59,013 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.032467857143 | Take profit: 2101.479298214286 +2025-03-10 13:11:59,047 - INFO - CLOSED long at 2070.73 | PnL: 0.02% | $-0.16 +2025-03-10 13:11:59,086 - INFO - OPENED LONG at 2068.69 | Stop loss: 2058.331017857143 | Take profit: 2099.7436482142857 +2025-03-10 13:11:59,103 - INFO - CLOSED long at 2067.84 | PnL: -0.04% | $-0.27 +2025-03-10 13:11:59,103 - INFO - OPENED SHORT at 2067.84 | Stop loss: 2078.1947321428574 | Take profit: 2036.7991017857144 +2025-03-10 13:11:59,123 - INFO - CLOSED short at 2067.11 | PnL: 0.04% | $-0.12 +2025-03-10 13:11:59,123 - INFO - OPENED LONG at 2067.11 | Stop loss: 2056.758917857143 | Take profit: 2098.139948214286 +2025-03-10 13:11:59,179 - INFO - CLOSED long at 2066.1 | PnL: -0.05% | $-0.28 +2025-03-10 13:11:59,180 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.446032142857 | Take profit: 2035.0852017857142 +2025-03-10 13:11:59,217 - INFO - CLOSED short at 2066.39 | PnL: -0.01% | $-0.21 +2025-03-10 13:11:59,217 - INFO - OPENED LONG at 2066.39 | Stop loss: 2056.0425178571427 | Take profit: 2097.409148214286 +2025-03-10 13:11:59,256 - INFO - CLOSED long at 2070.04 | PnL: 0.18% | $0.14 +2025-03-10 13:11:59,286 - INFO - OPENED SHORT at 2067.8 | Stop loss: 2078.154532142857 | Take profit: 2036.7597017857145 +2025-03-10 13:11:59,343 - INFO - CLOSED short at 2065.69 | PnL: 0.10% | $0.00 +2025-03-10 13:11:59,343 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.346017857143 | Take profit: 2096.6986482142856 +2025-03-10 13:11:59,507 - INFO - CLOSED long at 2062.65 | PnL: -0.15% | $-0.46 +2025-03-10 13:11:59,537 - INFO - OPENED SHORT at 2061.78 | Stop loss: 2072.104432142857 | Take profit: 2030.8300017857146 +2025-03-10 13:11:59,582 - INFO - CLOSED short at 2061.3 | PnL: 0.02% | $-0.14 +2025-03-10 13:11:59,620 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.6196678571428 | Take profit: 2095.9576982142858 +2025-03-10 13:11:59,674 - INFO - CLOSED long at 2067.1 | PnL: 0.10% | $0.01 +2025-03-10 13:11:59,710 - INFO - OPENED LONG at 2065.54 | Stop loss: 2055.1967678571427 | Take profit: 2096.5463982142855 +2025-03-10 13:11:59,745 - INFO - CLOSED long at 2066.09 | PnL: 0.03% | $-0.14 +2025-03-10 13:11:59,745 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.4359821428575 | Take profit: 2035.0753517857145 +2025-03-10 13:11:59,844 - INFO - CLOSED short at 2062.71 | PnL: 0.16% | $0.12 +2025-03-10 13:11:59,845 - INFO - OPENED LONG at 2062.71 | Stop loss: 2052.380917857143 | Take profit: 2093.6739482142857 +2025-03-10 13:11:59,862 - INFO - CLOSED long at 2062.89 | PnL: 0.01% | $-0.17 +2025-03-10 13:11:59,862 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.219982142857 | Take profit: 2031.9233517857142 +2025-03-10 13:11:59,934 - INFO - CLOSED short at 2060.9 | PnL: 0.10% | $-0.01 +2025-03-10 13:11:59,934 - INFO - OPENED LONG at 2060.9 | Stop loss: 2050.579967857143 | Take profit: 2091.836798214286 +2025-03-10 13:11:59,951 - INFO - CLOSED long at 2060.65 | PnL: -0.01% | $-0.21 +2025-03-10 13:11:59,951 - INFO - OPENED SHORT at 2060.65 | Stop loss: 2070.9687821428574 | Take profit: 2029.7169517857144 +2025-03-10 13:11:59,967 - INFO - CLOSED short at 2058.89 | PnL: 0.09% | $-0.03 +2025-03-10 13:12:00,004 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.992917857143 | Take profit: 2091.237948214286 +2025-03-10 13:12:00,024 - INFO - CLOSED long at 2061.8 | PnL: 0.07% | $-0.05 +2025-03-10 13:12:00,025 - INFO - OPENED SHORT at 2061.8 | Stop loss: 2072.1245321428573 | Take profit: 2030.8497017857144 +2025-03-10 13:12:00,044 - INFO - CLOSED short at 2064.7 | PnL: -0.14% | $-0.44 +2025-03-10 13:12:00,182 - INFO - OPENED SHORT at 2061.9 | Stop loss: 2072.2250321428573 | Take profit: 2030.9482017857144 +2025-03-10 13:12:00,214 - INFO - CLOSED short at 2064.1 | PnL: -0.11% | $-0.38 +2025-03-10 13:12:00,266 - INFO - OPENED SHORT at 2064.33 | Stop loss: 2074.667182142857 | Take profit: 2033.3417517857142 +2025-03-10 13:12:00,348 - INFO - CLOSED short at 2063.0 | PnL: 0.06% | $-0.06 +2025-03-10 13:12:00,348 - INFO - OPENED LONG at 2063.0 | Stop loss: 2052.6694678571425 | Take profit: 2093.968298214286 +2025-03-10 13:12:00,417 - INFO - CLOSED long at 2060.7 | PnL: -0.11% | $-0.39 +2025-03-10 13:12:00,418 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.019032142857 | Take profit: 2029.7662017857142 +2025-03-10 13:12:00,435 - INFO - CLOSED short at 2061.09 | PnL: -0.02% | $-0.22 +2025-03-10 13:12:00,492 - INFO - OPENED SHORT at 2059.16 | Stop loss: 2069.471332142857 | Take profit: 2028.2493017857141 +2025-03-10 13:12:00,522 - INFO - CLOSED short at 2059.02 | PnL: 0.01% | $-0.17 +2025-03-10 13:12:00,522 - INFO - OPENED LONG at 2059.02 | Stop loss: 2048.7093678571428 | Take profit: 2089.9285982142856 +2025-03-10 13:12:00,553 - INFO - CLOSED long at 2058.89 | PnL: -0.01% | $-0.19 +2025-03-10 13:12:00,553 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.199982142857 | Take profit: 2027.9833517857144 +2025-03-10 13:12:00,607 - INFO - CLOSED short at 2059.46 | PnL: -0.03% | $-0.23 +2025-03-10 13:12:00,607 - INFO - OPENED LONG at 2059.46 | Stop loss: 2049.147167857143 | Take profit: 2090.375198214286 +2025-03-10 13:12:00,803 - INFO - CLOSED long at 2061.5 | PnL: 0.10% | $-0.00 +2025-03-10 13:12:00,821 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.276467857143 | Take profit: 2092.547298214286 +2025-03-10 13:12:00,838 - INFO - CLOSED long at 2061.3 | PnL: -0.01% | $-0.21 +2025-03-10 13:12:00,838 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.6220321428573 | Take profit: 2030.3572017857146 +2025-03-10 13:12:00,868 - INFO - CLOSED short at 2062.69 | PnL: -0.07% | $-0.30 +2025-03-10 13:12:00,868 - INFO - OPENED LONG at 2062.69 | Stop loss: 2052.361017857143 | Take profit: 2093.6536482142856 +2025-03-10 13:12:00,957 - INFO - CLOSED long at 2066.01 | PnL: 0.16% | $0.11 +2025-03-10 13:12:01,040 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.982817857143 | Take profit: 2097.348248214286 +2025-03-10 13:12:01,079 - INFO - CLOSED long at 2066.79 | PnL: 0.02% | $-0.14 +2025-03-10 13:12:01,089 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.977817857143 | Take profit: 2098.3632482142857 +2025-03-10 13:12:01,112 - INFO - CLOSED long at 2067.01 | PnL: -0.02% | $-0.21 +2025-03-10 13:12:01,113 - INFO - OPENED SHORT at 2067.01 | Stop loss: 2077.3605821428573 | Take profit: 2035.9815517857144 +2025-03-10 13:12:01,131 - INFO - CLOSED short at 2065.69 | PnL: 0.06% | $-0.06 +2025-03-10 13:12:01,151 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.425517857143 | Take profit: 2100.860148214286 +2025-03-10 13:12:01,189 - INFO - CLOSED long at 2074.3 | PnL: 0.22% | $0.21 +2025-03-10 13:12:01,210 - INFO - OPENED LONG at 2078.01 | Stop loss: 2067.604417857143 | Take profit: 2109.203448214286 +2025-03-10 13:12:01,407 - INFO - CLOSED long at 2070.0 | PnL: -0.39% | $-0.87 +2025-03-10 13:12:01,407 - INFO - OPENED SHORT at 2070.0 | Stop loss: 2080.365532142857 | Take profit: 2038.9267017857142 +2025-03-10 13:12:01,439 - INFO - CLOSED short at 2068.15 | PnL: 0.09% | $-0.02 +2025-03-10 13:12:01,475 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.3260178571427 | Take profit: 2100.758648214286 +2025-03-10 13:12:01,497 - INFO - CLOSED long at 2069.03 | PnL: -0.03% | $-0.23 +2025-03-10 13:12:01,497 - INFO - OPENED SHORT at 2069.03 | Stop loss: 2079.3906821428573 | Take profit: 2037.9712517857145 +2025-03-10 13:12:01,542 - INFO - CLOSED short at 2072.99 | PnL: -0.19% | $-0.51 +2025-03-10 13:12:01,549 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6095178571427 | Take profit: 2104.1081482142854 +2025-03-10 13:12:01,564 - INFO - CLOSED long at 2071.49 | PnL: -0.07% | $-0.30 +2025-03-10 13:12:01,584 - INFO - OPENED SHORT at 2069.87 | Stop loss: 2080.234882142857 | Take profit: 2038.7986517857141 +2025-03-10 13:12:01,815 - INFO - CLOSED short at 2064.31 | PnL: 0.27% | $0.30 +2025-03-10 13:12:01,815 - INFO - OPENED LONG at 2064.31 | Stop loss: 2053.972917857143 | Take profit: 2095.297948214286 +2025-03-10 13:12:01,861 - INFO - CLOSED long at 2067.53 | PnL: 0.16% | $0.10 +2025-03-10 13:12:01,897 - INFO - OPENED LONG at 2065.31 | Stop loss: 2054.9679178571428 | Take profit: 2096.3129482142854 +2025-03-10 13:12:01,949 - INFO - CLOSED long at 2068.59 | PnL: 0.16% | $0.10 +2025-03-10 13:12:01,951 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.9484821428573 | Take profit: 2037.5378517857143 +2025-03-10 13:12:01,966 - INFO - CLOSED short at 2071.59 | PnL: -0.15% | $-0.43 +2025-03-10 13:12:01,980 - INFO - OPENED SHORT at 2070.2 | Stop loss: 2080.566532142857 | Take profit: 2039.123701785714 +2025-03-10 13:12:02,001 - INFO - CLOSED short at 2071.35 | PnL: -0.06% | $-0.27 +2025-03-10 13:12:02,068 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.069032142857 | Take profit: 2039.6162017857139 +2025-03-10 13:12:02,150 - INFO - CLOSED short at 2070.61 | PnL: 0.00% | $-0.17 +2025-03-10 13:12:02,150 - INFO - OPENED LONG at 2070.61 | Stop loss: 2060.241417857143 | Take profit: 2101.692448214286 +2025-03-10 13:12:02,211 - INFO - CLOSED long at 2068.19 | PnL: -0.12% | $-0.38 +2025-03-10 13:12:02,243 - INFO - OPENED LONG at 2068.67 | Stop loss: 2058.311117857143 | Take profit: 2099.723348214286 +2025-03-10 13:12:02,264 - INFO - CLOSED long at 2070.67 | PnL: 0.10% | $-0.01 +2025-03-10 13:12:02,264 - INFO - OPENED SHORT at 2070.67 | Stop loss: 2081.0388821428573 | Take profit: 2039.5866517857144 +2025-03-10 13:12:02,316 - INFO - CLOSED short at 2074.37 | PnL: -0.18% | $-0.48 +2025-03-10 13:12:02,316 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.982617857143 | Take profit: 2105.508848214286 +2025-03-10 13:12:02,391 - INFO - CLOSED long at 2073.99 | PnL: -0.02% | $-0.20 +2025-03-10 13:12:02,414 - INFO - OPENED LONG at 2075.32 | Stop loss: 2064.927867857143 | Take profit: 2106.473098214286 +2025-03-10 13:12:02,481 - INFO - CLOSED long at 2075.61 | PnL: 0.01% | $-0.15 +2025-03-10 13:12:02,540 - INFO - OPENED LONG at 2072.09 | Stop loss: 2061.714017857143 | Take profit: 2103.1946482142857 +2025-03-10 13:12:02,571 - INFO - CLOSED long at 2069.97 | PnL: -0.10% | $-0.35 +2025-03-10 13:12:02,572 - INFO - OPENED SHORT at 2069.97 | Stop loss: 2080.335382142857 | Take profit: 2038.897151785714 +2025-03-10 13:12:02,603 - INFO - CLOSED short at 2067.7 | PnL: 0.11% | $0.02 +2025-03-10 13:12:02,603 - INFO - OPENED LONG at 2067.7 | Stop loss: 2057.3459678571426 | Take profit: 2098.7387982142855 +2025-03-10 13:12:02,657 - INFO - CLOSED long at 2067.9 | PnL: 0.01% | $-0.15 +2025-03-10 13:12:02,658 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.255032142857 | Take profit: 2036.8582017857143 +2025-03-10 13:12:02,678 - INFO - CLOSED short at 2066.4 | PnL: 0.07% | $-0.05 +2025-03-10 13:12:02,678 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.052467857143 | Take profit: 2097.4192982142854 +2025-03-10 13:12:02,712 - INFO - CLOSED long at 2067.88 | PnL: 0.07% | $-0.05 +2025-03-10 13:12:02,712 - INFO - OPENED SHORT at 2067.88 | Stop loss: 2078.2349321428574 | Take profit: 2036.8385017857145 +2025-03-10 13:12:02,778 - INFO - CLOSED short at 2070.19 | PnL: -0.11% | $-0.36 +2025-03-10 13:12:02,796 - INFO - OPENED LONG at 2070.1 | Stop loss: 2059.7339678571425 | Take profit: 2101.1747982142856 +2025-03-10 13:12:02,883 - INFO - CLOSED long at 2065.8 | PnL: -0.21% | $-0.52 +2025-03-10 13:12:03,046 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.753967857143 | Take profit: 2097.1147982142857 +2025-03-10 13:12:03,080 - INFO - CLOSED long at 2064.11 | PnL: -0.10% | $-0.33 +2025-03-10 13:12:03,080 - INFO - OPENED SHORT at 2064.11 | Stop loss: 2074.4460821428574 | Take profit: 2033.1250517857143 +2025-03-10 13:12:03,097 - INFO - CLOSED short at 2064.5 | PnL: -0.02% | $-0.20 +2025-03-10 13:12:03,114 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.982817857143 | Take profit: 2097.348248214286 +2025-03-10 13:12:03,150 - INFO - CLOSED long at 2060.7 | PnL: -0.27% | $-0.63 +2025-03-10 13:12:03,150 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.019032142857 | Take profit: 2029.7662017857142 +2025-03-10 13:12:03,184 - INFO - CLOSED short at 2059.2 | PnL: 0.07% | $-0.05 +2025-03-10 13:12:03,203 - INFO - OPENED LONG at 2058.09 | Stop loss: 2047.784017857143 | Take profit: 2088.9846482142857 +2025-03-10 13:12:03,239 - INFO - CLOSED long at 2056.77 | PnL: -0.06% | $-0.27 +2025-03-10 13:12:03,271 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.729417857143 | Take profit: 2083.828448214286 +2025-03-10 13:12:03,300 - INFO - CLOSED long at 2049.21 | PnL: -0.19% | $-0.47 +2025-03-10 13:12:03,300 - INFO - OPENED SHORT at 2049.21 | Stop loss: 2059.471582142857 | Take profit: 2018.4485517857142 +2025-03-10 13:12:03,331 - INFO - CLOSED short at 2049.5 | PnL: -0.01% | $-0.19 +2025-03-10 13:12:03,389 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9929678571432 | Take profit: 2089.1977982142857 +2025-03-10 13:12:03,417 - INFO - CLOSED long at 2056.85 | PnL: -0.07% | $-0.28 +2025-03-10 13:12:03,448 - INFO - OPENED LONG at 2057.11 | Stop loss: 2046.808917857143 | Take profit: 2087.989948214286 +2025-03-10 13:12:03,466 - INFO - CLOSED long at 2057.89 | PnL: 0.04% | $-0.10 +2025-03-10 13:12:03,466 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.194982142857 | Take profit: 2026.9983517857142 +2025-03-10 13:12:03,488 - INFO - CLOSED short at 2062.83 | PnL: -0.24% | $-0.56 +2025-03-10 13:12:03,488 - INFO - OPENED LONG at 2062.83 | Stop loss: 2052.500317857143 | Take profit: 2093.7957482142856 +2025-03-10 13:12:03,506 - INFO - CLOSED long at 2063.9 | PnL: 0.05% | $-0.08 +2025-03-10 13:12:03,577 - INFO - OPENED SHORT at 2065.12 | Stop loss: 2075.4611321428574 | Take profit: 2034.1199017857143 +2025-03-10 13:12:03,594 - INFO - CLOSED short at 2068.33 | PnL: -0.16% | $-0.42 +2025-03-10 13:12:03,595 - INFO - OPENED LONG at 2068.33 | Stop loss: 2057.9728178571427 | Take profit: 2099.3782482142856 +2025-03-10 13:12:03,631 - INFO - CLOSED long at 2066.59 | PnL: -0.08% | $-0.30 +2025-03-10 13:12:03,632 - INFO - OPENED SHORT at 2066.59 | Stop loss: 2076.9384821428575 | Take profit: 2035.5678517857145 +2025-03-10 13:12:03,657 - INFO - CLOSED short at 2064.08 | PnL: 0.12% | $0.03 +2025-03-10 13:12:03,657 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.744067857143 | Take profit: 2095.0644982142853 +2025-03-10 13:12:03,691 - INFO - CLOSED long at 2061.21 | PnL: -0.14% | $-0.39 +2025-03-10 13:12:03,691 - INFO - OPENED SHORT at 2061.21 | Stop loss: 2071.531582142857 | Take profit: 2030.2685517857142 +2025-03-10 13:12:03,867 - INFO - CLOSED short at 2070.31 | PnL: -0.44% | $-0.87 +2025-03-10 13:12:03,868 - INFO - OPENED LONG at 2070.31 | Stop loss: 2059.942917857143 | Take profit: 2101.3879482142856 +2025-03-10 13:12:03,882 - INFO - CLOSED long at 2070.24 | PnL: -0.00% | $-0.16 +2025-03-10 13:12:03,902 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.702232142857 | Take profit: 2038.2766017857143 +2025-03-10 13:12:03,953 - INFO - CLOSED short at 2073.49 | PnL: -0.20% | $-0.48 +2025-03-10 13:12:03,977 - INFO - OPENED LONG at 2074.05 | Stop loss: 2063.6642178571433 | Take profit: 2105.184048214286 +2025-03-10 13:12:04,029 - INFO - CLOSED long at 2071.8 | PnL: -0.11% | $-0.33 +2025-03-10 13:12:04,055 - INFO - OPENED SHORT at 2074.9 | Stop loss: 2085.2900321428574 | Take profit: 2043.7532017857143 +2025-03-10 13:12:04,079 - INFO - CLOSED short at 2076.08 | PnL: -0.06% | $-0.25 +2025-03-10 13:12:04,137 - INFO - OPENED LONG at 2085.56 | Stop loss: 2075.116667857143 | Take profit: 2116.866698214286 +2025-03-10 13:12:04,165 - INFO - CLOSED long at 2090.49 | PnL: 0.24% | $0.21 +2025-03-10 13:12:04,165 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.957982142857 | Take profit: 2059.109351785714 +2025-03-10 13:12:04,189 - INFO - CLOSED short at 2103.02 | PnL: -0.60% | $-1.10 +2025-03-10 13:12:04,308 - INFO - OPENED SHORT at 2141.41 | Stop loss: 2152.1325821428572 | Take profit: 2109.2655517857143 +2025-03-10 13:12:04,331 - INFO - CLOSED short at 2141.3 | PnL: 0.01% | $-0.15 +2025-03-10 13:12:04,347 - INFO - OPENED SHORT at 2142.68 | Stop loss: 2153.4089321428573 | Take profit: 2110.516501785714 +2025-03-10 13:12:04,387 - INFO - CLOSED short at 2134.78 | PnL: 0.37% | $0.42 +2025-03-10 13:12:04,390 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.090567857143 | Take profit: 2166.8249982142856 +2025-03-10 13:12:04,407 - INFO - CLOSED long at 2126.99 | PnL: -0.36% | $-0.72 +2025-03-10 13:12:04,407 - INFO - OPENED SHORT at 2126.99 | Stop loss: 2137.640482142857 | Take profit: 2095.061851785714 +2025-03-10 13:12:04,430 - INFO - CLOSED short at 2127.3 | PnL: -0.01% | $-0.18 +2025-03-10 13:12:04,456 - INFO - OPENED SHORT at 2128.69 | Stop loss: 2139.348982142857 | Take profit: 2096.7363517857143 +2025-03-10 13:12:04,538 - INFO - CLOSED short at 2117.24 | PnL: 0.54% | $0.67 +2025-03-10 13:12:04,538 - INFO - OPENED LONG at 2117.24 | Stop loss: 2106.6382678571426 | Take profit: 2149.0218982142856 +2025-03-10 13:12:04,603 - INFO - CLOSED long at 2121.4 | PnL: 0.20% | $0.15 +2025-03-10 13:12:04,603 - INFO - OPENED SHORT at 2121.4 | Stop loss: 2132.022532142857 | Take profit: 2089.5557017857145 +2025-03-10 13:12:04,633 - INFO - CLOSED short at 2118.52 | PnL: 0.14% | $0.06 +2025-03-10 13:12:04,633 - INFO - OPENED LONG at 2118.52 | Stop loss: 2107.9118678571426 | Take profit: 2150.321098214286 +2025-03-10 13:12:04,653 - INFO - CLOSED long at 2119.14 | PnL: 0.03% | $-0.11 +2025-03-10 13:12:04,653 - INFO - OPENED SHORT at 2119.14 | Stop loss: 2129.751232142857 | Take profit: 2087.329601785714 +2025-03-10 13:12:04,674 - INFO - CLOSED short at 2119.07 | PnL: 0.00% | $-0.15 +2025-03-10 13:12:04,674 - INFO - OPENED LONG at 2119.07 | Stop loss: 2108.459117857143 | Take profit: 2150.8793482142855 +2025-03-10 13:12:04,693 - INFO - CLOSED long at 2115.28 | PnL: -0.18% | $-0.43 +2025-03-10 13:12:04,828 - INFO - OPENED LONG at 2112.99 | Stop loss: 2102.4095178571424 | Take profit: 2144.7081482142853 +2025-03-10 13:12:04,855 - INFO - CLOSED long at 2120.81 | PnL: 0.37% | $0.42 +2025-03-10 13:12:04,855 - INFO - OPENED SHORT at 2120.81 | Stop loss: 2131.429582142857 | Take profit: 2088.9745517857145 +2025-03-10 13:12:04,883 - INFO - CLOSED short at 2116.48 | PnL: 0.20% | $0.16 +2025-03-10 13:12:04,940 - INFO - OPENED SHORT at 2110.9 | Stop loss: 2121.4700321428572 | Take profit: 2079.2132017857143 +2025-03-10 13:12:04,972 - INFO - CLOSED short at 2108.71 | PnL: 0.10% | $0.01 +2025-03-10 13:12:04,972 - INFO - OPENED LONG at 2108.71 | Stop loss: 2098.1509178571428 | Take profit: 2140.3639482142858 +2025-03-10 13:12:05,035 - INFO - CLOSED long at 2108.06 | PnL: -0.03% | $-0.20 +2025-03-10 13:12:05,060 - INFO - OPENED LONG at 2103.33 | Stop loss: 2092.797817857143 | Take profit: 2134.9032482142857 +2025-03-10 13:12:05,094 - INFO - CLOSED long at 2090.0 | PnL: -0.63% | $-1.13 +2025-03-10 13:12:05,094 - INFO - OPENED SHORT at 2090.0 | Stop loss: 2100.4655321428572 | Take profit: 2058.6267017857144 +2025-03-10 13:12:05,115 - INFO - CLOSED short at 2099.53 | PnL: -0.46% | $-0.85 +2025-03-10 13:12:05,116 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.016817857143 | Take profit: 2131.046248214286 +2025-03-10 13:12:05,132 - INFO - CLOSED long at 2098.1 | PnL: -0.07% | $-0.25 +2025-03-10 13:12:05,221 - INFO - OPENED LONG at 2100.69 | Stop loss: 2090.171017857143 | Take profit: 2132.2236482142857 +2025-03-10 13:12:05,243 - INFO - CLOSED long at 2104.83 | PnL: 0.20% | $0.15 +2025-03-10 13:12:05,300 - INFO - OPENED LONG at 2100.74 | Stop loss: 2090.2207678571426 | Take profit: 2132.2743982142856 +2025-03-10 13:12:05,328 - INFO - CLOSED long at 2103.86 | PnL: 0.15% | $0.07 +2025-03-10 13:12:05,328 - INFO - OPENED SHORT at 2103.86 | Stop loss: 2114.394832142857 | Take profit: 2072.278801785714 +2025-03-10 13:12:05,388 - INFO - CLOSED short at 2101.51 | PnL: 0.11% | $0.02 +2025-03-10 13:12:05,442 - INFO - OPENED LONG at 2100.02 | Stop loss: 2089.504367857143 | Take profit: 2131.543598214286 +2025-03-10 13:12:05,463 - INFO - CLOSED long at 2098.39 | PnL: -0.08% | $-0.27 +2025-03-10 13:12:05,515 - INFO - OPENED LONG at 2093.33 | Stop loss: 2082.8478178571427 | Take profit: 2124.7532482142856 +2025-03-10 13:12:05,554 - INFO - CLOSED long at 2091.1 | PnL: -0.11% | $-0.31 +2025-03-10 13:12:05,555 - INFO - OPENED SHORT at 2091.1 | Stop loss: 2101.5710321428573 | Take profit: 2059.710201785714 +2025-03-10 13:12:05,619 - INFO - CLOSED short at 2083.28 | PnL: 0.37% | $0.41 +2025-03-10 13:12:05,620 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848067857143 | Take profit: 2114.5524982142856 +2025-03-10 13:12:05,700 - INFO - CLOSED long at 2085.3 | PnL: 0.10% | $-0.00 +2025-03-10 13:12:05,728 - INFO - OPENED SHORT at 2082.44 | Stop loss: 2092.867732142857 | Take profit: 2051.180101785714 +2025-03-10 13:12:05,758 - INFO - CLOSED short at 2081.49 | PnL: 0.05% | $-0.08 +2025-03-10 13:12:05,758 - INFO - OPENED LONG at 2081.49 | Stop loss: 2071.0670178571427 | Take profit: 2112.7356482142854 +2025-03-10 13:12:05,787 - INFO - CLOSED long at 2080.38 | PnL: -0.05% | $-0.23 +2025-03-10 13:12:05,814 - INFO - OPENED LONG at 2081.25 | Stop loss: 2070.8282178571426 | Take profit: 2112.492048214286 +2025-03-10 13:12:05,968 - INFO - CLOSED long at 2085.85 | PnL: 0.22% | $0.18 +2025-03-10 13:12:05,968 - INFO - OPENED SHORT at 2085.85 | Stop loss: 2096.294782142857 | Take profit: 2054.5389517857143 +2025-03-10 13:12:05,981 - INFO - CLOSED short at 2088.66 | PnL: -0.13% | $-0.35 +2025-03-10 13:12:05,981 - INFO - OPENED LONG at 2088.66 | Stop loss: 2078.2011678571425 | Take profit: 2120.0131982142857 +2025-03-10 13:12:06,061 - INFO - CLOSED long at 2087.0 | PnL: -0.08% | $-0.27 +2025-03-10 13:12:06,193 - INFO - OPENED LONG at 2085.67 | Stop loss: 2075.226117857143 | Take profit: 2116.978348214286 +2025-03-10 13:12:06,224 - INFO - CLOSED long at 2089.2 | PnL: 0.17% | $0.10 +2025-03-10 13:12:06,224 - INFO - OPENED SHORT at 2089.2 | Stop loss: 2099.661532142857 | Take profit: 2057.838701785714 +2025-03-10 13:12:06,247 - INFO - CLOSED short at 2091.05 | PnL: -0.09% | $-0.28 +2025-03-10 13:12:06,247 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.579217857143 | Take profit: 2122.4390482142862 +2025-03-10 13:12:06,428 - INFO - CLOSED long at 2098.49 | PnL: 0.36% | $0.38 +2025-03-10 13:12:06,583 - INFO - OPENED LONG at 2103.48 | Stop loss: 2092.947067857143 | Take profit: 2135.0554982142858 +2025-03-10 13:12:06,648 - INFO - CLOSED long at 2103.81 | PnL: 0.02% | $-0.13 +2025-03-10 13:12:06,685 - INFO - OPENED LONG at 2101.5 | Stop loss: 2090.976967857143 | Take profit: 2133.0457982142857 +2025-03-10 13:12:06,725 - INFO - CLOSED long at 2103.64 | PnL: 0.10% | $0.00 +2025-03-10 13:12:06,743 - INFO - OPENED LONG at 2105.2 | Stop loss: 2094.6584678571426 | Take profit: 2136.8012982142855 +2025-03-10 13:12:06,793 - INFO - Trade Analysis: Win Rate=28.2% in uptrends, 0.0% in downtrends | Avg Win=$0.17, Avg Loss=$-0.26 +2025-03-10 13:12:06,798 - INFO - Episode 1: Reward=-111.13, Balance=$75.04, Win Rate=22.9%, Trades=153, Episode PnL=$-17.62, Total PnL=$-54.97, Max Drawdown=25.0%, Pred Accuracy=99.2% +2025-03-10 13:12:06,798 - ERROR - Error in episode 1: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:12:06,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:12:06,820 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:12:07,175 - INFO - OPENED LONG at 2047.2 | Stop loss: 2036.9484678571428 | Take profit: 2077.931298214286 +2025-03-10 13:12:07,192 - INFO - CLOSED long at 2045.99 | PnL: -0.06% | $-0.32 +2025-03-10 13:12:07,194 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.235482142857 | Take profit: 2015.2768517857144 +2025-03-10 13:12:07,209 - INFO - CLOSED short at 2045.99 | PnL: 0.00% | $-0.20 +2025-03-10 13:12:07,245 - INFO - OPENED SHORT at 2048.13 | Stop loss: 2058.3861821428573 | Take profit: 2017.3847517857146 +2025-03-10 13:12:07,263 - INFO - CLOSED short at 2047.59 | PnL: 0.03% | $-0.15 +2025-03-10 13:12:07,280 - INFO - OPENED SHORT at 2048.51 | Stop loss: 2058.7680821428576 | Take profit: 2017.7590517857145 +2025-03-10 13:12:07,296 - INFO - CLOSED short at 2050.0 | PnL: -0.07% | $-0.34 +2025-03-10 13:12:07,356 - INFO - OPENED SHORT at 2051.11 | Stop loss: 2061.3810821428574 | Take profit: 2020.3200517857144 +2025-03-10 13:12:07,533 - INFO - CLOSED short at 2060.13 | PnL: -0.44% | $-1.06 +2025-03-10 13:12:07,533 - INFO - OPENED LONG at 2060.13 | Stop loss: 2049.813817857143 | Take profit: 2091.055248214286 +2025-03-10 13:12:07,570 - INFO - CLOSED long at 2059.7 | PnL: -0.02% | $-0.23 +2025-03-10 13:12:07,628 - INFO - OPENED LONG at 2063.29 | Stop loss: 2052.9580178571427 | Take profit: 2094.2626482142855 +2025-03-10 13:12:07,670 - INFO - CLOSED long at 2063.59 | PnL: 0.01% | $-0.17 +2025-03-10 13:12:07,710 - INFO - OPENED LONG at 2064.69 | Stop loss: 2054.351017857143 | Take profit: 2095.6836482142858 +2025-03-10 13:12:07,822 - INFO - CLOSED long at 2060.31 | PnL: -0.21% | $-0.60 +2025-03-10 13:12:07,845 - INFO - OPENED LONG at 2059.49 | Stop loss: 2049.177017857143 | Take profit: 2090.4056482142855 +2025-03-10 13:12:07,904 - INFO - CLOSED long at 2057.89 | PnL: -0.08% | $-0.34 +2025-03-10 13:12:07,933 - INFO - OPENED LONG at 2057.94 | Stop loss: 2047.6347678571428 | Take profit: 2088.832398214286 +2025-03-10 13:12:08,056 - INFO - CLOSED long at 2065.86 | PnL: 0.38% | $0.55 +2025-03-10 13:12:08,056 - INFO - OPENED SHORT at 2065.86 | Stop loss: 2076.204832142857 | Take profit: 2034.8488017857146 +2025-03-10 13:12:08,090 - INFO - CLOSED short at 2068.11 | PnL: -0.11% | $-0.40 +2025-03-10 13:12:08,111 - INFO - OPENED SHORT at 2068.29 | Stop loss: 2078.646982142857 | Take profit: 2037.2423517857142 +2025-03-10 13:12:08,140 - INFO - CLOSED short at 2071.63 | PnL: -0.16% | $-0.50 +2025-03-10 13:12:08,214 - INFO - OPENED LONG at 2068.99 | Stop loss: 2058.6295178571427 | Take profit: 2100.0481482142854 +2025-03-10 13:12:08,307 - INFO - CLOSED long at 2071.44 | PnL: 0.12% | $0.04 +2025-03-10 13:12:08,307 - INFO - OPENED SHORT at 2071.44 | Stop loss: 2081.8127321428574 | Take profit: 2040.3451017857144 +2025-03-10 13:12:08,336 - INFO - CLOSED short at 2073.73 | PnL: -0.11% | $-0.40 +2025-03-10 13:12:08,337 - INFO - OPENED LONG at 2073.73 | Stop loss: 2063.3458178571427 | Take profit: 2104.859248214286 +2025-03-10 13:12:08,420 - INFO - CLOSED long at 2072.33 | PnL: -0.07% | $-0.32 +2025-03-10 13:12:08,420 - INFO - OPENED SHORT at 2072.33 | Stop loss: 2082.707182142857 | Take profit: 2041.221751785714 +2025-03-10 13:12:08,442 - INFO - CLOSED short at 2071.38 | PnL: 0.05% | $-0.10 +2025-03-10 13:12:08,462 - INFO - OPENED LONG at 2071.41 | Stop loss: 2061.037417857143 | Take profit: 2102.5044482142857 +2025-03-10 13:12:08,515 - INFO - CLOSED long at 2072.8 | PnL: 0.07% | $-0.06 +2025-03-10 13:12:08,515 - INFO - OPENED SHORT at 2072.8 | Stop loss: 2083.1795321428576 | Take profit: 2041.6847017857144 +2025-03-10 13:12:08,531 - INFO - CLOSED short at 2070.79 | PnL: 0.10% | $-0.01 +2025-03-10 13:12:08,531 - INFO - OPENED LONG at 2070.79 | Stop loss: 2060.420517857143 | Take profit: 2101.8751482142857 +2025-03-10 13:12:08,566 - INFO - CLOSED long at 2068.02 | PnL: -0.13% | $-0.44 +2025-03-10 13:12:08,600 - INFO - OPENED SHORT at 2070.36 | Stop loss: 2080.7273321428574 | Take profit: 2039.2813017857145 +2025-03-10 13:12:08,638 - INFO - CLOSED short at 2070.7 | PnL: -0.02% | $-0.22 +2025-03-10 13:12:08,639 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3309678571427 | Take profit: 2101.7837982142855 +2025-03-10 13:12:08,666 - INFO - CLOSED long at 2069.34 | PnL: -0.07% | $-0.31 +2025-03-10 13:12:08,666 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.702232142857 | Take profit: 2038.2766017857143 +2025-03-10 13:12:08,698 - INFO - CLOSED short at 2069.19 | PnL: 0.01% | $-0.17 +2025-03-10 13:12:08,757 - INFO - OPENED SHORT at 2067.6 | Stop loss: 2077.953532142857 | Take profit: 2036.5627017857141 +2025-03-10 13:12:08,785 - INFO - CLOSED short at 2067.51 | PnL: 0.00% | $-0.18 +2025-03-10 13:12:08,859 - INFO - OPENED LONG at 2065.99 | Stop loss: 2055.6445178571425 | Take profit: 2097.0031482142854 +2025-03-10 13:12:08,876 - INFO - CLOSED long at 2066.19 | PnL: 0.01% | $-0.17 +2025-03-10 13:12:08,911 - INFO - OPENED LONG at 2065.08 | Stop loss: 2054.739067857143 | Take profit: 2096.0794982142856 +2025-03-10 13:12:08,945 - INFO - CLOSED long at 2068.76 | PnL: 0.18% | $0.15 +2025-03-10 13:12:08,947 - INFO - OPENED SHORT at 2068.76 | Stop loss: 2079.1193321428573 | Take profit: 2037.7053017857147 +2025-03-10 13:12:08,965 - INFO - CLOSED short at 2068.9 | PnL: -0.01% | $-0.20 +2025-03-10 13:12:09,003 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.231517857143 | Take profit: 2099.642148214286 +2025-03-10 13:12:09,025 - INFO - CLOSED long at 2069.7 | PnL: 0.05% | $-0.09 +2025-03-10 13:12:09,027 - INFO - OPENED SHORT at 2069.7 | Stop loss: 2080.064032142857 | Take profit: 2038.6312017857142 +2025-03-10 13:12:09,045 - INFO - CLOSED short at 2070.4 | PnL: -0.03% | $-0.25 +2025-03-10 13:12:09,045 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.032467857143 | Take profit: 2101.479298214286 +2025-03-10 13:12:09,108 - INFO - CLOSED long at 2071.4 | PnL: 0.05% | $-0.10 +2025-03-10 13:12:09,166 - INFO - OPENED LONG at 2071.36 | Stop loss: 2060.9876678571427 | Take profit: 2102.453698214286 +2025-03-10 13:12:09,222 - INFO - CLOSED long at 2073.11 | PnL: 0.08% | $-0.03 +2025-03-10 13:12:09,245 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.0790321428567 | Take profit: 2041.586201785714 +2025-03-10 13:12:09,262 - INFO - CLOSED short at 2072.15 | PnL: 0.03% | $-0.14 +2025-03-10 13:12:09,278 - INFO - OPENED LONG at 2074.29 | Stop loss: 2063.903017857143 | Take profit: 2105.4276482142855 +2025-03-10 13:12:09,296 - INFO - CLOSED long at 2073.9 | PnL: -0.02% | $-0.22 +2025-03-10 13:12:09,296 - INFO - OPENED SHORT at 2073.9 | Stop loss: 2084.2850321428573 | Take profit: 2042.7682017857144 +2025-03-10 13:12:09,317 - INFO - CLOSED short at 2071.92 | PnL: 0.10% | $-0.01 +2025-03-10 13:12:09,317 - INFO - OPENED LONG at 2071.92 | Stop loss: 2061.544867857143 | Take profit: 2103.0220982142855 +2025-03-10 13:12:09,336 - INFO - CLOSED long at 2070.4 | PnL: -0.07% | $-0.32 +2025-03-10 13:12:09,336 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7675321428574 | Take profit: 2039.3207017857144 +2025-03-10 13:12:09,356 - INFO - CLOSED short at 2071.11 | PnL: -0.03% | $-0.25 +2025-03-10 13:12:09,374 - INFO - OPENED LONG at 2069.46 | Stop loss: 2059.0971678571427 | Take profit: 2100.525198214286 +2025-03-10 13:12:09,509 - INFO - CLOSED long at 2066.8 | PnL: -0.13% | $-0.42 +2025-03-10 13:12:09,509 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.1495321428574 | Take profit: 2035.7747017857143 +2025-03-10 13:12:09,596 - INFO - CLOSED short at 2065.26 | PnL: 0.07% | $-0.05 +2025-03-10 13:12:09,596 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.918167857143 | Take profit: 2096.262198214286 +2025-03-10 13:12:09,746 - INFO - CLOSED long at 2070.3 | PnL: 0.24% | $0.26 +2025-03-10 13:12:09,746 - INFO - OPENED SHORT at 2070.3 | Stop loss: 2080.6670321428574 | Take profit: 2039.2222017857146 +2025-03-10 13:12:09,765 - INFO - CLOSED short at 2071.59 | PnL: -0.06% | $-0.30 +2025-03-10 13:12:09,766 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.216517857143 | Take profit: 2102.687148214286 +2025-03-10 13:12:09,783 - INFO - CLOSED long at 2070.7 | PnL: -0.04% | $-0.26 +2025-03-10 13:12:09,820 - INFO - OPENED SHORT at 2070.73 | Stop loss: 2081.099182142857 | Take profit: 2039.6457517857143 +2025-03-10 13:12:09,837 - INFO - CLOSED short at 2068.5 | PnL: 0.11% | $0.01 +2025-03-10 13:12:09,868 - INFO - OPENED SHORT at 2068.69 | Stop loss: 2079.0489821428573 | Take profit: 2037.6363517857144 +2025-03-10 13:12:09,955 - INFO - CLOSED short at 2067.86 | PnL: 0.04% | $-0.11 +2025-03-10 13:12:09,956 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.505167857143 | Take profit: 2098.9011982142856 +2025-03-10 13:12:09,984 - INFO - CLOSED long at 2066.4 | PnL: -0.07% | $-0.31 +2025-03-10 13:12:09,984 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.7475321428574 | Take profit: 2035.3807017857143 +2025-03-10 13:12:10,076 - INFO - CLOSED short at 2064.47 | PnL: 0.09% | $-0.01 +2025-03-10 13:12:10,076 - INFO - OPENED LONG at 2064.47 | Stop loss: 2054.132117857143 | Take profit: 2095.4603482142857 +2025-03-10 13:12:10,093 - INFO - CLOSED long at 2070.04 | PnL: 0.27% | $0.31 +2025-03-10 13:12:10,112 - INFO - OPENED LONG at 2067.8 | Stop loss: 2057.445467857143 | Take profit: 2098.8402982142857 +2025-03-10 13:12:10,130 - INFO - CLOSED long at 2068.18 | PnL: 0.02% | $-0.15 +2025-03-10 13:12:10,130 - INFO - OPENED SHORT at 2068.18 | Stop loss: 2078.536432142857 | Take profit: 2037.1340017857142 +2025-03-10 13:12:10,183 - INFO - CLOSED short at 2064.99 | PnL: 0.15% | $0.10 +2025-03-10 13:12:10,184 - INFO - OPENED LONG at 2064.99 | Stop loss: 2054.6495178571427 | Take profit: 2095.9881482142855 +2025-03-10 13:12:10,203 - INFO - CLOSED long at 2065.83 | PnL: 0.04% | $-0.11 +2025-03-10 13:12:10,223 - INFO - OPENED LONG at 2066.15 | Stop loss: 2055.803717857143 | Take profit: 2097.1655482142855 +2025-03-10 13:12:10,278 - INFO - CLOSED long at 2062.89 | PnL: -0.16% | $-0.47 +2025-03-10 13:12:10,310 - INFO - OPENED SHORT at 2062.65 | Stop loss: 2072.978782142857 | Take profit: 2031.6869517857142 +2025-03-10 13:12:10,338 - INFO - CLOSED short at 2061.78 | PnL: 0.04% | $-0.10 +2025-03-10 13:12:10,338 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.4555678571433 | Take profit: 2092.729998214286 +2025-03-10 13:12:10,367 - INFO - CLOSED long at 2059.59 | PnL: -0.11% | $-0.37 +2025-03-10 13:12:10,429 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.256517857143 | Take profit: 2094.567148214286 +2025-03-10 13:12:10,449 - INFO - CLOSED long at 2064.96 | PnL: 0.07% | $-0.06 +2025-03-10 13:12:10,449 - INFO - OPENED SHORT at 2064.96 | Stop loss: 2075.3003321428573 | Take profit: 2033.9623017857143 +2025-03-10 13:12:10,467 - INFO - CLOSED short at 2066.24 | PnL: -0.06% | $-0.29 +2025-03-10 13:12:10,486 - INFO - OPENED LONG at 2067.1 | Stop loss: 2056.748967857143 | Take profit: 2098.1297982142855 +2025-03-10 13:12:10,521 - INFO - CLOSED long at 2066.09 | PnL: -0.05% | $-0.27 +2025-03-10 13:12:10,539 - INFO - OPENED LONG at 2064.45 | Stop loss: 2054.1122178571427 | Take profit: 2095.4400482142855 +2025-03-10 13:12:10,560 - INFO - CLOSED long at 2064.08 | PnL: -0.02% | $-0.21 +2025-03-10 13:12:10,561 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.415932142857 | Take profit: 2033.095501785714 +2025-03-10 13:12:10,595 - INFO - CLOSED short at 2062.89 | PnL: 0.06% | $-0.08 +2025-03-10 13:12:10,612 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.161967857143 | Take profit: 2095.490798214286 +2025-03-10 13:12:10,670 - INFO - CLOSED long at 2061.6 | PnL: -0.14% | $-0.43 +2025-03-10 13:12:10,701 - INFO - OPENED LONG at 2060.9 | Stop loss: 2050.579967857143 | Take profit: 2091.836798214286 +2025-03-10 13:12:10,809 - INFO - CLOSED long at 2060.31 | PnL: -0.03% | $-0.23 +2025-03-10 13:12:10,811 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.627082142857 | Take profit: 2029.3820517857143 +2025-03-10 13:12:10,946 - INFO - CLOSED short at 2061.9 | PnL: -0.08% | $-0.31 +2025-03-10 13:12:10,946 - INFO - OPENED LONG at 2061.9 | Stop loss: 2051.574967857143 | Take profit: 2092.8517982142857 +2025-03-10 13:12:11,134 - INFO - CLOSED long at 2062.6 | PnL: 0.03% | $-0.12 +2025-03-10 13:12:11,134 - INFO - OPENED SHORT at 2062.6 | Stop loss: 2072.928532142857 | Take profit: 2031.6377017857142 +2025-03-10 13:12:11,164 - INFO - CLOSED short at 2061.89 | PnL: 0.03% | $-0.12 +2025-03-10 13:12:11,195 - INFO - OPENED LONG at 2061.7 | Stop loss: 2051.3759678571428 | Take profit: 2092.6487982142853 +2025-03-10 13:12:11,225 - INFO - CLOSED long at 2060.7 | PnL: -0.05% | $-0.26 +2025-03-10 13:12:11,327 - INFO - OPENED LONG at 2059.96 | Stop loss: 2049.644667857143 | Take profit: 2090.882698214286 +2025-03-10 13:12:11,471 - INFO - CLOSED long at 2054.83 | PnL: -0.25% | $-0.61 +2025-03-10 13:12:11,504 - INFO - OPENED LONG at 2056.71 | Stop loss: 2046.410917857143 | Take profit: 2087.583948214286 +2025-03-10 13:12:11,561 - INFO - CLOSED long at 2059.8 | PnL: 0.15% | $0.09 +2025-03-10 13:12:11,596 - INFO - OPENED LONG at 2061.66 | Stop loss: 2051.3361678571428 | Take profit: 2092.608198214286 +2025-03-10 13:12:11,626 - INFO - CLOSED long at 2061.5 | PnL: -0.01% | $-0.19 +2025-03-10 13:12:11,646 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.276467857143 | Take profit: 2092.547298214286 +2025-03-10 13:12:11,686 - INFO - CLOSED long at 2062.69 | PnL: 0.05% | $-0.08 +2025-03-10 13:12:11,686 - INFO - OPENED SHORT at 2062.69 | Stop loss: 2073.018982142857 | Take profit: 2031.7263517857143 +2025-03-10 13:12:11,703 - INFO - CLOSED short at 2063.4 | PnL: -0.03% | $-0.23 +2025-03-10 13:12:11,759 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.235032142857 | Take profit: 2032.9182017857145 +2025-03-10 13:12:11,777 - INFO - CLOSED short at 2064.49 | PnL: -0.03% | $-0.22 +2025-03-10 13:12:11,819 - INFO - OPENED LONG at 2066.34 | Stop loss: 2055.992767857143 | Take profit: 2097.358398214286 +2025-03-10 13:12:11,837 - INFO - CLOSED long at 2066.79 | PnL: 0.02% | $-0.13 +2025-03-10 13:12:12,008 - INFO - OPENED LONG at 2074.3 | Stop loss: 2063.912967857143 | Take profit: 2105.437798214286 +2025-03-10 13:12:12,055 - INFO - CLOSED long at 2075.01 | PnL: 0.03% | $-0.11 +2025-03-10 13:12:12,091 - INFO - OPENED SHORT at 2071.04 | Stop loss: 2081.4107321428573 | Take profit: 2039.9511017857142 +2025-03-10 13:12:12,175 - INFO - CLOSED short at 2068.15 | PnL: 0.14% | $0.07 +2025-03-10 13:12:12,193 - INFO - OPENED SHORT at 2068.39 | Stop loss: 2078.747482142857 | Take profit: 2037.3408517857142 +2025-03-10 13:12:12,226 - INFO - CLOSED short at 2069.03 | PnL: -0.03% | $-0.23 +2025-03-10 13:12:12,284 - INFO - OPENED LONG at 2068.79 | Stop loss: 2058.430517857143 | Take profit: 2099.8451482142855 +2025-03-10 13:12:12,312 - INFO - CLOSED long at 2072.99 | PnL: 0.20% | $0.18 +2025-03-10 13:12:12,312 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.370482142857 | Take profit: 2041.871851785714 +2025-03-10 13:12:12,420 - INFO - CLOSED short at 2066.38 | PnL: 0.32% | $0.38 +2025-03-10 13:12:12,460 - INFO - OPENED SHORT at 2065.66 | Stop loss: 2076.003832142857 | Take profit: 2034.651801785714 +2025-03-10 13:12:12,479 - INFO - CLOSED short at 2063.95 | PnL: 0.08% | $-0.03 +2025-03-10 13:12:12,479 - INFO - OPENED LONG at 2063.95 | Stop loss: 2053.6147178571428 | Take profit: 2094.932548214286 +2025-03-10 13:12:12,515 - INFO - CLOSED long at 2064.5 | PnL: 0.03% | $-0.13 +2025-03-10 13:12:12,516 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.838032142857 | Take profit: 2033.5092017857144 +2025-03-10 13:12:12,553 - INFO - CLOSED short at 2064.4 | PnL: 0.00% | $-0.16 +2025-03-10 13:12:12,571 - INFO - OPENED LONG at 2064.31 | Stop loss: 2053.972917857143 | Take profit: 2095.297948214286 +2025-03-10 13:12:12,589 - INFO - CLOSED long at 2065.5 | PnL: 0.06% | $-0.07 +2025-03-10 13:12:12,649 - INFO - OPENED SHORT at 2065.31 | Stop loss: 2075.652082142857 | Take profit: 2034.3070517857143 +2025-03-10 13:12:12,708 - INFO - CLOSED short at 2066.5 | PnL: -0.06% | $-0.27 +2025-03-10 13:12:12,708 - INFO - OPENED LONG at 2066.5 | Stop loss: 2056.1519678571426 | Take profit: 2097.5207982142856 +2025-03-10 13:12:12,738 - INFO - CLOSED long at 2068.59 | PnL: 0.10% | $0.00 +2025-03-10 13:12:12,738 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.9484821428573 | Take profit: 2037.5378517857143 +2025-03-10 13:12:12,769 - INFO - CLOSED short at 2071.59 | PnL: -0.15% | $-0.42 +2025-03-10 13:12:12,769 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.216517857143 | Take profit: 2102.687148214286 +2025-03-10 13:12:12,827 - INFO - CLOSED long at 2071.35 | PnL: -0.01% | $-0.19 +2025-03-10 13:12:12,827 - INFO - OPENED SHORT at 2071.35 | Stop loss: 2081.722282142857 | Take profit: 2040.2564517857143 +2025-03-10 13:12:12,871 - INFO - CLOSED short at 2069.69 | PnL: 0.08% | $-0.03 +2025-03-10 13:12:12,873 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.3260178571427 | Take profit: 2100.758648214286 +2025-03-10 13:12:12,907 - INFO - CLOSED long at 2070.8 | PnL: 0.05% | $-0.08 +2025-03-10 13:12:12,978 - INFO - OPENED SHORT at 2068.19 | Stop loss: 2078.5464821428573 | Take profit: 2037.1438517857143 +2025-03-10 13:12:13,031 - INFO - CLOSED short at 2069.78 | PnL: -0.08% | $-0.30 +2025-03-10 13:12:13,081 - INFO - OPENED SHORT at 2074.37 | Stop loss: 2084.7573821428573 | Take profit: 2043.2311517857142 +2025-03-10 13:12:13,165 - INFO - CLOSED short at 2073.27 | PnL: 0.05% | $-0.08 +2025-03-10 13:12:13,221 - INFO - OPENED SHORT at 2075.32 | Stop loss: 2085.7121321428576 | Take profit: 2044.1669017857146 +2025-03-10 13:12:13,275 - INFO - CLOSED short at 2075.61 | PnL: -0.01% | $-0.19 +2025-03-10 13:12:13,275 - INFO - OPENED LONG at 2075.61 | Stop loss: 2065.216417857143 | Take profit: 2106.7674482142857 +2025-03-10 13:12:13,292 - INFO - CLOSED long at 2074.0 | PnL: -0.08% | $-0.30 +2025-03-10 13:12:13,312 - INFO - OPENED LONG at 2072.09 | Stop loss: 2061.714017857143 | Take profit: 2103.1946482142857 +2025-03-10 13:12:13,350 - INFO - CLOSED long at 2067.7 | PnL: -0.21% | $-0.52 +2025-03-10 13:12:13,350 - INFO - OPENED SHORT at 2067.7 | Stop loss: 2078.054032142857 | Take profit: 2036.661201785714 +2025-03-10 13:12:13,370 - INFO - CLOSED short at 2067.0 | PnL: 0.03% | $-0.11 +2025-03-10 13:12:13,370 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.649467857143 | Take profit: 2098.0282982142858 +2025-03-10 13:12:13,405 - INFO - CLOSED long at 2066.4 | PnL: -0.03% | $-0.22 +2025-03-10 13:12:13,405 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.7475321428574 | Take profit: 2035.3807017857143 +2025-03-10 13:12:13,424 - INFO - CLOSED short at 2066.89 | PnL: -0.02% | $-0.21 +2025-03-10 13:12:13,424 - INFO - OPENED LONG at 2066.89 | Stop loss: 2056.5400178571426 | Take profit: 2097.9166482142855 +2025-03-10 13:12:13,446 - INFO - CLOSED long at 2067.88 | PnL: 0.05% | $-0.09 +2025-03-10 13:12:13,506 - INFO - OPENED LONG at 2068.1 | Stop loss: 2057.7439678571427 | Take profit: 2099.1447982142854 +2025-03-10 13:12:13,535 - INFO - CLOSED long at 2069.0 | PnL: 0.04% | $-0.09 +2025-03-10 13:12:13,535 - INFO - OPENED SHORT at 2069.0 | Stop loss: 2079.360532142857 | Take profit: 2037.9417017857143 +2025-03-10 13:12:13,616 - INFO - CLOSED short at 2067.19 | PnL: 0.09% | $-0.02 +2025-03-10 13:12:13,640 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.1569678571427 | Take profit: 2096.5057982142857 +2025-03-10 13:12:13,675 - INFO - CLOSED long at 2065.8 | PnL: 0.01% | $-0.14 +2025-03-10 13:12:13,676 - INFO - OPENED SHORT at 2065.8 | Stop loss: 2076.1445321428573 | Take profit: 2034.7897017857144 +2025-03-10 13:12:13,693 - INFO - CLOSED short at 2065.07 | PnL: 0.04% | $-0.11 +2025-03-10 13:12:13,693 - INFO - OPENED LONG at 2065.07 | Stop loss: 2054.729117857143 | Take profit: 2096.069348214286 +2025-03-10 13:12:13,714 - INFO - CLOSED long at 2066.09 | PnL: 0.05% | $-0.08 +2025-03-10 13:12:13,733 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.722482142857 | Take profit: 2032.415851785714 +2025-03-10 13:12:13,754 - INFO - CLOSED short at 2062.34 | PnL: 0.05% | $-0.08 +2025-03-10 13:12:13,754 - INFO - OPENED LONG at 2062.34 | Stop loss: 2052.012767857143 | Take profit: 2093.2983982142855 +2025-03-10 13:12:13,771 - INFO - CLOSED long at 2063.98 | PnL: 0.08% | $-0.03 +2025-03-10 13:12:13,792 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.446032142857 | Take profit: 2035.0852017857142 +2025-03-10 13:12:13,813 - INFO - CLOSED short at 2065.06 | PnL: 0.05% | $-0.08 +2025-03-10 13:12:13,867 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.838032142857 | Take profit: 2033.5092017857144 +2025-03-10 13:12:13,895 - INFO - CLOSED short at 2066.33 | PnL: -0.09% | $-0.31 +2025-03-10 13:12:13,953 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.019032142857 | Take profit: 2029.7662017857142 +2025-03-10 13:12:14,054 - INFO - CLOSED short at 2058.65 | PnL: 0.10% | $-0.00 +2025-03-10 13:12:14,090 - INFO - OPENED SHORT at 2053.01 | Stop loss: 2063.290582142857 | Take profit: 2022.1915517857146 +2025-03-10 13:12:14,112 - INFO - CLOSED short at 2049.21 | PnL: 0.19% | $0.14 +2025-03-10 13:12:14,112 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.9484178571429 | Take profit: 2079.971448214286 +2025-03-10 13:12:14,211 - INFO - CLOSED long at 2057.89 | PnL: 0.42% | $0.53 +2025-03-10 13:12:14,211 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.194982142857 | Take profit: 2026.9983517857142 +2025-03-10 13:12:14,307 - INFO - CLOSED short at 2062.43 | PnL: -0.22% | $-0.53 +2025-03-10 13:12:14,441 - INFO - OPENED LONG at 2066.59 | Stop loss: 2056.241517857143 | Take profit: 2097.612148214286 +2025-03-10 13:12:14,461 - INFO - CLOSED long at 2064.08 | PnL: -0.12% | $-0.36 +2025-03-10 13:12:14,461 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.415932142857 | Take profit: 2033.095501785714 +2025-03-10 13:12:14,479 - INFO - CLOSED short at 2061.21 | PnL: 0.14% | $0.06 +2025-03-10 13:12:14,480 - INFO - OPENED LONG at 2061.21 | Stop loss: 2050.888417857143 | Take profit: 2092.1514482142857 +2025-03-10 13:12:14,496 - INFO - CLOSED long at 2059.9 | PnL: -0.06% | $-0.27 +2025-03-10 13:12:14,496 - INFO - OPENED SHORT at 2059.9 | Stop loss: 2070.215032142857 | Take profit: 2028.9782017857144 +2025-03-10 13:12:14,512 - INFO - CLOSED short at 2060.7 | PnL: -0.04% | $-0.23 +2025-03-10 13:12:14,528 - INFO - OPENED LONG at 2061.84 | Stop loss: 2051.515267857143 | Take profit: 2092.790898214286 +2025-03-10 13:12:14,567 - INFO - CLOSED long at 2065.72 | PnL: 0.19% | $0.14 +2025-03-10 13:12:14,643 - INFO - OPENED SHORT at 2069.81 | Stop loss: 2080.1745821428567 | Take profit: 2038.7395517857142 +2025-03-10 13:12:14,729 - INFO - CLOSED short at 2074.05 | PnL: -0.20% | $-0.50 +2025-03-10 13:12:14,729 - INFO - OPENED LONG at 2074.05 | Stop loss: 2063.6642178571433 | Take profit: 2105.184048214286 +2025-03-10 13:12:14,818 - INFO - CLOSED long at 2071.8 | PnL: -0.11% | $-0.34 +2025-03-10 13:12:14,818 - INFO - OPENED SHORT at 2071.8 | Stop loss: 2082.1745321428575 | Take profit: 2040.6997017857145 +2025-03-10 13:12:14,849 - INFO - CLOSED short at 2074.9 | PnL: -0.15% | $-0.40 +2025-03-10 13:12:14,850 - INFO - OPENED LONG at 2074.9 | Stop loss: 2064.509967857143 | Take profit: 2106.046798214286 +2025-03-10 13:12:14,884 - INFO - CLOSED long at 2077.61 | PnL: 0.13% | $0.05 +2025-03-10 13:12:14,885 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2088.0135821428576 | Take profit: 2046.4225517857144 +2025-03-10 13:12:14,901 - INFO - CLOSED short at 2085.56 | PnL: -0.38% | $-0.78 +2025-03-10 13:12:14,937 - INFO - OPENED LONG at 2103.02 | Stop loss: 2092.489367857143 | Take profit: 2134.5885982142854 +2025-03-10 13:12:14,954 - INFO - CLOSED long at 2130.7 | PnL: 1.32% | $1.94 +2025-03-10 13:12:14,954 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.369032142857 | Take profit: 2098.716201785714 +2025-03-10 13:12:14,978 - INFO - CLOSED short at 2139.54 | PnL: -0.41% | $-0.84 +2025-03-10 13:12:14,979 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.826767857143 | Take profit: 2171.6563982142857 +2025-03-10 13:12:15,017 - INFO - CLOSED long at 2133.95 | PnL: -0.26% | $-0.58 +2025-03-10 13:12:15,017 - INFO - OPENED SHORT at 2133.95 | Stop loss: 2144.6352821428572 | Take profit: 2101.917451785714 +2025-03-10 13:12:15,034 - INFO - CLOSED short at 2137.59 | PnL: -0.17% | $-0.43 +2025-03-10 13:12:15,034 - INFO - OPENED LONG at 2137.59 | Stop loss: 2126.8865178571427 | Take profit: 2169.677148214286 +2025-03-10 13:12:15,144 - INFO - CLOSED long at 2140.01 | PnL: 0.11% | $0.02 +2025-03-10 13:12:15,201 - INFO - OPENED LONG at 2126.99 | Stop loss: 2116.3395178571427 | Take profit: 2158.9181482142853 +2025-03-10 13:12:15,270 - INFO - CLOSED long at 2121.09 | PnL: -0.28% | $-0.60 +2025-03-10 13:12:15,289 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.533717857143 | Take profit: 2151.9755482142855 +2025-03-10 13:12:15,304 - INFO - CLOSED long at 2117.24 | PnL: -0.14% | $-0.38 +2025-03-10 13:12:15,328 - INFO - OPENED SHORT at 2119.93 | Stop loss: 2130.545182142857 | Take profit: 2088.1077517857143 +2025-03-10 13:12:15,362 - INFO - CLOSED short at 2118.52 | PnL: 0.07% | $-0.05 +2025-03-10 13:12:15,414 - INFO - OPENED LONG at 2115.28 | Stop loss: 2104.688067857143 | Take profit: 2147.0324982142856 +2025-03-10 13:12:15,539 - INFO - CLOSED long at 2112.95 | PnL: -0.11% | $-0.33 +2025-03-10 13:12:15,597 - INFO - OPENED LONG at 2113.24 | Stop loss: 2102.6582678571426 | Take profit: 2144.961898214285 +2025-03-10 13:12:15,629 - INFO - CLOSED long at 2112.99 | PnL: -0.01% | $-0.18 +2025-03-10 13:12:15,704 - INFO - OPENED LONG at 2110.9 | Stop loss: 2100.329967857143 | Take profit: 2142.586798214286 +2025-03-10 13:12:15,789 - INFO - CLOSED long at 2100.5 | PnL: -0.49% | $-0.93 +2025-03-10 13:12:15,880 - INFO - OPENED LONG at 2102.19 | Stop loss: 2091.663517857143 | Take profit: 2133.7461482142858 +2025-03-10 13:12:15,991 - INFO - CLOSED long at 2100.69 | PnL: -0.07% | $-0.26 +2025-03-10 13:12:16,045 - INFO - OPENED LONG at 2106.39 | Stop loss: 2095.842517857143 | Take profit: 2138.0091482142857 +2025-03-10 13:12:16,062 - INFO - CLOSED long at 2100.74 | PnL: -0.27% | $-0.57 +2025-03-10 13:12:16,062 - INFO - OPENED SHORT at 2100.74 | Stop loss: 2111.259232142857 | Take profit: 2069.205601785714 +2025-03-10 13:12:16,103 - INFO - CLOSED short at 2104.68 | PnL: -0.19% | $-0.44 +2025-03-10 13:12:16,103 - INFO - OPENED LONG at 2104.68 | Stop loss: 2094.141067857143 | Take profit: 2136.2734982142856 +2025-03-10 13:12:16,136 - INFO - CLOSED long at 2099.59 | PnL: -0.24% | $-0.52 +2025-03-10 13:12:16,136 - INFO - OPENED SHORT at 2099.59 | Stop loss: 2110.1034821428575 | Take profit: 2068.0728517857146 +2025-03-10 13:12:16,177 - INFO - CLOSED short at 2098.39 | PnL: 0.06% | $-0.06 +2025-03-10 13:12:16,228 - INFO - OPENED LONG at 2093.33 | Stop loss: 2082.8478178571427 | Take profit: 2124.7532482142856 +2025-03-10 13:12:16,303 - INFO - CLOSED long at 2094.72 | PnL: 0.07% | $-0.05 +2025-03-10 13:12:16,303 - INFO - OPENED SHORT at 2094.72 | Stop loss: 2105.209132142857 | Take profit: 2063.275901785714 +2025-03-10 13:12:16,338 - INFO - CLOSED short at 2094.08 | PnL: 0.03% | $-0.10 +2025-03-10 13:12:16,338 - INFO - OPENED LONG at 2094.08 | Stop loss: 2083.594067857143 | Take profit: 2125.5144982142856 +2025-03-10 13:12:16,398 - INFO - STOP LOSS hit for long at 2083.594067857143 | PnL: -0.50% | $-0.90 +2025-03-10 13:12:16,448 - INFO - OPENED LONG at 2083.97 | Stop loss: 2073.5346178571426 | Take profit: 2115.2528482142857 +2025-03-10 13:12:16,547 - INFO - CLOSED long at 2081.25 | PnL: -0.13% | $-0.34 +2025-03-10 13:12:16,547 - INFO - OPENED SHORT at 2081.25 | Stop loss: 2091.6717821428574 | Take profit: 2050.0079517857143 +2025-03-10 13:12:16,568 - INFO - CLOSED short at 2083.41 | PnL: -0.10% | $-0.30 +2025-03-10 13:12:16,568 - INFO - OPENED LONG at 2083.41 | Stop loss: 2072.977417857143 | Take profit: 2114.6844482142856 +2025-03-10 13:12:16,589 - INFO - CLOSED long at 2085.09 | PnL: 0.08% | $-0.03 +2025-03-10 13:12:16,604 - INFO - OPENED SHORT at 2083.59 | Stop loss: 2094.023482142857 | Take profit: 2052.3128517857144 +2025-03-10 13:12:16,628 - INFO - CLOSED short at 2086.57 | PnL: -0.14% | $-0.36 +2025-03-10 13:12:16,628 - INFO - OPENED LONG at 2086.57 | Stop loss: 2076.121617857143 | Take profit: 2117.8918482142863 +2025-03-10 13:12:16,683 - INFO - CLOSED long at 2084.72 | PnL: -0.09% | $-0.28 +2025-03-10 13:12:16,684 - INFO - OPENED SHORT at 2084.72 | Stop loss: 2095.1591321428573 | Take profit: 2053.4259017857144 +2025-03-10 13:12:16,714 - INFO - CLOSED short at 2085.83 | PnL: -0.05% | $-0.22 +2025-03-10 13:12:16,747 - INFO - OPENED SHORT at 2085.85 | Stop loss: 2096.294782142857 | Take profit: 2054.5389517857143 +2025-03-10 13:12:16,781 - INFO - CLOSED short at 2088.66 | PnL: -0.13% | $-0.34 +2025-03-10 13:12:16,781 - INFO - OPENED LONG at 2088.66 | Stop loss: 2078.2011678571425 | Take profit: 2120.0131982142857 +2025-03-10 13:12:16,894 - INFO - CLOSED long at 2087.47 | PnL: -0.06% | $-0.23 +2025-03-10 13:12:16,894 - INFO - OPENED SHORT at 2087.47 | Stop loss: 2097.922882142857 | Take profit: 2056.134651785714 +2025-03-10 13:12:16,929 - INFO - CLOSED short at 2086.81 | PnL: 0.03% | $-0.10 +2025-03-10 13:12:16,929 - INFO - OPENED LONG at 2086.81 | Stop loss: 2076.3604178571427 | Take profit: 2118.1354482142856 +2025-03-10 13:12:16,951 - INFO - CLOSED long at 2089.79 | PnL: 0.14% | $0.06 +2025-03-10 13:12:16,951 - INFO - OPENED SHORT at 2089.79 | Stop loss: 2100.254482142857 | Take profit: 2058.4198517857144 +2025-03-10 13:12:16,968 - INFO - CLOSED short at 2085.67 | PnL: 0.20% | $0.14 +2025-03-10 13:12:16,986 - INFO - OPENED SHORT at 2089.2 | Stop loss: 2099.661532142857 | Take profit: 2057.838701785714 +2025-03-10 13:12:17,020 - INFO - CLOSED short at 2091.05 | PnL: -0.09% | $-0.27 +2025-03-10 13:12:17,038 - INFO - OPENED LONG at 2091.95 | Stop loss: 2081.474717857143 | Take profit: 2123.3525482142854 +2025-03-10 13:12:17,066 - INFO - CLOSED long at 2094.7 | PnL: 0.13% | $0.05 +2025-03-10 13:12:17,099 - INFO - OPENED SHORT at 2097.8 | Stop loss: 2108.3045321428576 | Take profit: 2066.3097017857144 +2025-03-10 13:12:17,131 - INFO - CLOSED short at 2099.99 | PnL: -0.10% | $-0.29 +2025-03-10 13:12:17,243 - INFO - OPENED SHORT at 2099.89 | Stop loss: 2110.404982142857 | Take profit: 2068.368351785714 +2025-03-10 13:12:17,261 - INFO - CLOSED short at 2100.89 | PnL: -0.05% | $-0.21 +2025-03-10 13:12:17,262 - INFO - OPENED LONG at 2100.89 | Stop loss: 2090.370017857143 | Take profit: 2132.4266482142853 +2025-03-10 13:12:17,364 - INFO - CLOSED long at 2103.07 | PnL: 0.10% | $0.01 +2025-03-10 13:12:17,365 - INFO - OPENED SHORT at 2103.07 | Stop loss: 2113.6008821428572 | Take profit: 2071.5006517857146 +2025-03-10 13:12:17,384 - INFO - CLOSED short at 2101.5 | PnL: 0.07% | $-0.04 +2025-03-10 13:12:17,384 - INFO - OPENED LONG at 2101.5 | Stop loss: 2090.976967857143 | Take profit: 2133.0457982142857 +2025-03-10 13:12:17,401 - INFO - CLOSED long at 2105.83 | PnL: 0.21% | $0.15 +2025-03-10 13:12:17,440 - INFO - OPENED LONG at 2105.2 | Stop loss: 2094.6584678571426 | Take profit: 2136.8012982142855 +2025-03-10 13:12:17,522 - INFO - Trade Analysis: Win Rate=8.1% in uptrends, 0.0% in downtrends | Avg Win=$0.23, Avg Loss=$-0.26 +2025-03-10 13:12:17,522 - INFO - Episode 2: Reward=-131.84, Balance=$72.29, Win Rate=15.7%, Trades=153, Episode PnL=$-23.43, Total PnL=$-82.68, Max Drawdown=27.7%, Pred Accuracy=98.6% +2025-03-10 13:12:17,522 - ERROR - Error in episode 2: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:12:17,522 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:12:17,545 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:12:17,792 - INFO - OPENED LONG at 2046.58 | Stop loss: 2036.3315678571428 | Take profit: 2077.3019982142855 +2025-03-10 13:12:17,831 - INFO - CLOSED long at 2047.2 | PnL: 0.03% | $-0.14 +2025-03-10 13:12:17,850 - INFO - OPENED LONG at 2045.99 | Stop loss: 2035.744517857143 | Take profit: 2076.703148214286 +2025-03-10 13:12:17,867 - INFO - CLOSED long at 2045.99 | PnL: 0.00% | $-0.20 +2025-03-10 13:12:17,867 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.235482142857 | Take profit: 2015.2768517857144 +2025-03-10 13:12:17,931 - INFO - CLOSED short at 2048.51 | PnL: -0.12% | $-0.44 +2025-03-10 13:12:17,940 - INFO - OPENED SHORT at 2050.0 | Stop loss: 2060.2655321428574 | Take profit: 2019.2267017857143 +2025-03-10 13:12:17,969 - INFO - CLOSED short at 2050.24 | PnL: -0.01% | $-0.22 +2025-03-10 13:12:17,970 - INFO - OPENED LONG at 2050.24 | Stop loss: 2039.9732678571427 | Take profit: 2081.0168982142854 +2025-03-10 13:12:18,022 - INFO - CLOSED long at 2053.26 | PnL: 0.15% | $0.09 +2025-03-10 13:12:18,022 - INFO - OPENED SHORT at 2053.26 | Stop loss: 2063.5418321428574 | Take profit: 2022.4378017857143 +2025-03-10 13:12:18,080 - INFO - CLOSED short at 2055.69 | PnL: -0.12% | $-0.43 +2025-03-10 13:12:18,108 - INFO - OPENED LONG at 2057.01 | Stop loss: 2046.709417857143 | Take profit: 2087.8884482142857 +2025-03-10 13:12:18,175 - INFO - CLOSED long at 2058.39 | PnL: 0.07% | $-0.06 +2025-03-10 13:12:18,207 - INFO - OPENED SHORT at 2060.13 | Stop loss: 2070.446182142857 | Take profit: 2029.2047517857145 +2025-03-10 13:12:18,243 - INFO - CLOSED short at 2059.7 | PnL: 0.02% | $-0.15 +2025-03-10 13:12:18,243 - INFO - OPENED LONG at 2059.7 | Stop loss: 2049.3859678571425 | Take profit: 2090.6187982142856 +2025-03-10 13:12:18,279 - INFO - CLOSED long at 2063.29 | PnL: 0.17% | $0.15 +2025-03-10 13:12:18,301 - INFO - OPENED LONG at 2064.61 | Stop loss: 2054.2714178571428 | Take profit: 2095.602448214286 +2025-03-10 13:12:18,316 - INFO - CLOSED long at 2063.59 | PnL: -0.05% | $-0.29 +2025-03-10 13:12:18,320 - INFO - OPENED SHORT at 2063.59 | Stop loss: 2073.923482142857 | Take profit: 2032.6128517857144 +2025-03-10 13:12:18,338 - INFO - CLOSED short at 2061.61 | PnL: 0.10% | $-0.01 +2025-03-10 13:12:18,357 - INFO - OPENED LONG at 2064.69 | Stop loss: 2054.351017857143 | Take profit: 2095.6836482142858 +2025-03-10 13:12:18,427 - INFO - CLOSED long at 2058.3 | PnL: -0.31% | $-0.80 +2025-03-10 13:12:18,427 - INFO - OPENED SHORT at 2058.3 | Stop loss: 2068.6070321428574 | Take profit: 2027.4022017857146 +2025-03-10 13:12:18,565 - INFO - CLOSED short at 2060.31 | PnL: -0.10% | $-0.38 +2025-03-10 13:12:18,565 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.992917857143 | Take profit: 2091.237948214286 +2025-03-10 13:12:18,601 - INFO - CLOSED long at 2059.49 | PnL: -0.04% | $-0.27 +2025-03-10 13:12:18,661 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.194982142857 | Take profit: 2026.9983517857142 +2025-03-10 13:12:18,722 - INFO - CLOSED short at 2061.79 | PnL: -0.19% | $-0.56 +2025-03-10 13:12:18,762 - INFO - OPENED LONG at 2064.32 | Stop loss: 2053.982867857143 | Take profit: 2095.308098214286 +2025-03-10 13:12:18,821 - INFO - CLOSED long at 2068.11 | PnL: 0.18% | $0.16 +2025-03-10 13:12:18,987 - INFO - OPENED SHORT at 2068.65 | Stop loss: 2079.0087821428574 | Take profit: 2037.5969517857145 +2025-03-10 13:12:19,019 - INFO - CLOSED short at 2068.99 | PnL: -0.02% | $-0.22 +2025-03-10 13:12:19,019 - INFO - OPENED LONG at 2068.99 | Stop loss: 2058.6295178571427 | Take profit: 2100.0481482142854 +2025-03-10 13:12:19,063 - INFO - CLOSED long at 2067.69 | PnL: -0.06% | $-0.31 +2025-03-10 13:12:19,064 - INFO - OPENED SHORT at 2067.69 | Stop loss: 2078.043982142857 | Take profit: 2036.6513517857143 +2025-03-10 13:12:19,113 - INFO - CLOSED short at 2073.73 | PnL: -0.29% | $-0.75 +2025-03-10 13:12:19,131 - INFO - OPENED SHORT at 2075.1 | Stop loss: 2085.491032142857 | Take profit: 2043.9502017857142 +2025-03-10 13:12:19,148 - INFO - CLOSED short at 2072.91 | PnL: 0.11% | $0.01 +2025-03-10 13:12:19,149 - INFO - OPENED LONG at 2072.91 | Stop loss: 2062.5299178571427 | Take profit: 2104.0269482142853 +2025-03-10 13:12:19,179 - INFO - CLOSED long at 2071.38 | PnL: -0.07% | $-0.33 +2025-03-10 13:12:19,179 - INFO - OPENED SHORT at 2071.38 | Stop loss: 2081.7524321428573 | Take profit: 2040.2860017857145 +2025-03-10 13:12:19,234 - INFO - CLOSED short at 2070.9 | PnL: 0.02% | $-0.14 +2025-03-10 13:12:19,234 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.529967857143 | Take profit: 2101.986798214286 +2025-03-10 13:12:19,362 - INFO - CLOSED long at 2067.2 | PnL: -0.18% | $-0.52 +2025-03-10 13:12:19,364 - INFO - OPENED SHORT at 2067.2 | Stop loss: 2077.551532142857 | Take profit: 2036.1687017857141 +2025-03-10 13:12:19,441 - INFO - CLOSED short at 2070.7 | PnL: -0.17% | $-0.50 +2025-03-10 13:12:19,441 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3309678571427 | Take profit: 2101.7837982142855 +2025-03-10 13:12:19,458 - INFO - CLOSED long at 2069.34 | PnL: -0.07% | $-0.31 +2025-03-10 13:12:19,459 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.702232142857 | Take profit: 2038.2766017857143 +2025-03-10 13:12:19,521 - INFO - CLOSED short at 2067.6 | PnL: 0.08% | $-0.03 +2025-03-10 13:12:19,522 - INFO - OPENED LONG at 2067.6 | Stop loss: 2057.2464678571428 | Take profit: 2098.6372982142857 +2025-03-10 13:12:19,574 - INFO - CLOSED long at 2066.39 | PnL: -0.06% | $-0.29 +2025-03-10 13:12:19,574 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.737482142857 | Take profit: 2035.3708517857142 +2025-03-10 13:12:19,609 - INFO - CLOSED short at 2066.19 | PnL: 0.01% | $-0.17 +2025-03-10 13:12:19,684 - INFO - OPENED LONG at 2066.18 | Stop loss: 2055.8335678571425 | Take profit: 2097.1959982142853 +2025-03-10 13:12:19,797 - INFO - CLOSED long at 2068.59 | PnL: 0.12% | $0.03 +2025-03-10 13:12:19,797 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.9484821428573 | Take profit: 2037.5378517857143 +2025-03-10 13:12:19,828 - INFO - CLOSED short at 2069.7 | PnL: -0.05% | $-0.28 +2025-03-10 13:12:19,847 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7675321428574 | Take profit: 2039.3207017857144 +2025-03-10 13:12:19,919 - INFO - CLOSED short at 2071.36 | PnL: -0.05% | $-0.27 +2025-03-10 13:12:19,919 - INFO - OPENED LONG at 2071.36 | Stop loss: 2060.9876678571427 | Take profit: 2102.453698214286 +2025-03-10 13:12:19,936 - INFO - CLOSED long at 2072.75 | PnL: 0.07% | $-0.06 +2025-03-10 13:12:19,936 - INFO - OPENED SHORT at 2072.75 | Stop loss: 2083.129282142857 | Take profit: 2041.6354517857144 +2025-03-10 13:12:20,034 - INFO - CLOSED short at 2071.92 | PnL: 0.04% | $-0.11 +2025-03-10 13:12:20,067 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.032467857143 | Take profit: 2101.479298214286 +2025-03-10 13:12:20,092 - INFO - CLOSED long at 2071.11 | PnL: 0.03% | $-0.12 +2025-03-10 13:12:20,118 - INFO - OPENED LONG at 2069.46 | Stop loss: 2059.0971678571427 | Take profit: 2100.525198214286 +2025-03-10 13:12:20,222 - INFO - CLOSED long at 2067.79 | PnL: -0.08% | $-0.33 +2025-03-10 13:12:20,350 - INFO - OPENED LONG at 2068.58 | Stop loss: 2058.221567857143 | Take profit: 2099.631998214286 +2025-03-10 13:12:20,405 - INFO - CLOSED long at 2067.86 | PnL: -0.03% | $-0.25 +2025-03-10 13:12:20,405 - INFO - OPENED SHORT at 2067.86 | Stop loss: 2078.2148321428576 | Take profit: 2036.8188017857144 +2025-03-10 13:12:20,459 - INFO - CLOSED short at 2069.2 | PnL: -0.06% | $-0.30 +2025-03-10 13:12:20,459 - INFO - OPENED LONG at 2069.2 | Stop loss: 2058.8384678571424 | Take profit: 2100.2612982142855 +2025-03-10 13:12:20,488 - INFO - CLOSED long at 2070.3 | PnL: 0.05% | $-0.08 +2025-03-10 13:12:20,558 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.069032142857 | Take profit: 2039.6162017857139 +2025-03-10 13:12:20,621 - INFO - CLOSED short at 2070.73 | PnL: -0.00% | $-0.18 +2025-03-10 13:12:20,674 - INFO - OPENED LONG at 2068.69 | Stop loss: 2058.331017857143 | Take profit: 2099.7436482142857 +2025-03-10 13:12:20,704 - INFO - CLOSED long at 2067.84 | PnL: -0.04% | $-0.25 +2025-03-10 13:12:20,704 - INFO - OPENED SHORT at 2067.84 | Stop loss: 2078.1947321428574 | Take profit: 2036.7991017857144 +2025-03-10 13:12:20,756 - INFO - CLOSED short at 2067.86 | PnL: -0.00% | $-0.18 +2025-03-10 13:12:20,756 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.505167857143 | Take profit: 2098.9011982142856 +2025-03-10 13:12:20,843 - INFO - CLOSED long at 2066.39 | PnL: -0.07% | $-0.31 +2025-03-10 13:12:20,914 - INFO - OPENED LONG at 2070.04 | Stop loss: 2059.6742678571427 | Take profit: 2101.113898214286 +2025-03-10 13:12:20,954 - INFO - CLOSED long at 2067.8 | PnL: -0.11% | $-0.37 +2025-03-10 13:12:21,103 - INFO - OPENED SHORT at 2066.15 | Stop loss: 2076.496282142857 | Take profit: 2035.1344517857142 +2025-03-10 13:12:21,123 - INFO - CLOSED short at 2065.26 | PnL: 0.04% | $-0.10 +2025-03-10 13:12:21,141 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.5600178571426 | Take profit: 2093.8566482142855 +2025-03-10 13:12:21,256 - INFO - CLOSED long at 2064.96 | PnL: 0.10% | $0.00 +2025-03-10 13:12:21,256 - INFO - OPENED SHORT at 2064.96 | Stop loss: 2075.3003321428573 | Take profit: 2033.9623017857143 +2025-03-10 13:12:21,347 - INFO - CLOSED short at 2065.54 | PnL: -0.03% | $-0.23 +2025-03-10 13:12:21,347 - INFO - OPENED LONG at 2065.54 | Stop loss: 2055.1967678571427 | Take profit: 2096.5463982142855 +2025-03-10 13:12:21,409 - INFO - CLOSED long at 2064.45 | PnL: -0.05% | $-0.27 +2025-03-10 13:12:21,409 - INFO - OPENED SHORT at 2064.45 | Stop loss: 2074.787782142857 | Take profit: 2033.459951785714 +2025-03-10 13:12:21,544 - INFO - CLOSED short at 2060.9 | PnL: 0.17% | $0.13 +2025-03-10 13:12:21,581 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.199982142857 | Take profit: 2027.9833517857144 +2025-03-10 13:12:21,618 - INFO - CLOSED short at 2060.31 | PnL: -0.07% | $-0.30 +2025-03-10 13:12:21,637 - INFO - OPENED SHORT at 2061.8 | Stop loss: 2072.1245321428573 | Take profit: 2030.8497017857144 +2025-03-10 13:12:21,697 - INFO - CLOSED short at 2062.61 | PnL: -0.04% | $-0.25 +2025-03-10 13:12:21,698 - INFO - OPENED LONG at 2062.61 | Stop loss: 2052.281417857143 | Take profit: 2093.572448214286 +2025-03-10 13:12:21,733 - INFO - CLOSED long at 2060.91 | PnL: -0.08% | $-0.32 +2025-03-10 13:12:21,842 - INFO - OPENED LONG at 2064.1 | Stop loss: 2053.7639678571427 | Take profit: 2095.0847982142855 +2025-03-10 13:12:21,877 - INFO - CLOSED long at 2064.33 | PnL: 0.01% | $-0.16 +2025-03-10 13:12:21,897 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.0575178571426 | Take profit: 2094.3641482142853 +2025-03-10 13:12:21,951 - INFO - CLOSED long at 2063.53 | PnL: 0.01% | $-0.16 +2025-03-10 13:12:21,968 - INFO - OPENED SHORT at 2063.0 | Stop loss: 2073.3305321428575 | Take profit: 2032.0317017857142 +2025-03-10 13:12:21,988 - INFO - CLOSED short at 2062.6 | PnL: 0.02% | $-0.14 +2025-03-10 13:12:21,988 - INFO - OPENED LONG at 2062.6 | Stop loss: 2052.271467857143 | Take profit: 2093.5622982142854 +2025-03-10 13:12:22,004 - INFO - CLOSED long at 2061.89 | PnL: -0.03% | $-0.23 +2025-03-10 13:12:22,109 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.2964178571433 | Take profit: 2090.527448214286 +2025-03-10 13:12:22,140 - INFO - CLOSED long at 2059.16 | PnL: -0.02% | $-0.21 +2025-03-10 13:12:22,140 - INFO - OPENED SHORT at 2059.16 | Stop loss: 2069.471332142857 | Take profit: 2028.2493017857141 +2025-03-10 13:12:22,203 - INFO - CLOSED short at 2058.89 | PnL: 0.01% | $-0.15 +2025-03-10 13:12:22,204 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.5800178571426 | Take profit: 2089.7966482142856 +2025-03-10 13:12:22,232 - INFO - CLOSED long at 2059.96 | PnL: 0.05% | $-0.08 +2025-03-10 13:12:22,301 - INFO - OPENED SHORT at 2056.28 | Stop loss: 2066.5769321428575 | Take profit: 2025.4125017857145 +2025-03-10 13:12:22,341 - INFO - CLOSED short at 2054.89 | PnL: 0.07% | $-0.06 +2025-03-10 13:12:22,341 - INFO - OPENED LONG at 2054.89 | Stop loss: 2044.6000178571428 | Take profit: 2085.736648214285 +2025-03-10 13:12:22,359 - INFO - CLOSED long at 2054.83 | PnL: -0.00% | $-0.18 +2025-03-10 13:12:22,463 - INFO - OPENED SHORT at 2061.5 | Stop loss: 2071.823032142857 | Take profit: 2030.5542017857142 +2025-03-10 13:12:22,497 - INFO - CLOSED short at 2061.6 | PnL: -0.00% | $-0.18 +2025-03-10 13:12:22,499 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.276467857143 | Take profit: 2092.547298214286 +2025-03-10 13:12:22,558 - INFO - CLOSED long at 2062.69 | PnL: 0.05% | $-0.08 +2025-03-10 13:12:22,558 - INFO - OPENED SHORT at 2062.69 | Stop loss: 2073.018982142857 | Take profit: 2031.7263517857143 +2025-03-10 13:12:22,591 - INFO - CLOSED short at 2063.4 | PnL: -0.03% | $-0.23 +2025-03-10 13:12:22,591 - INFO - OPENED LONG at 2063.4 | Stop loss: 2053.0674678571427 | Take profit: 2094.374298214286 +2025-03-10 13:12:22,622 - INFO - CLOSED long at 2066.36 | PnL: 0.14% | $0.07 +2025-03-10 13:12:22,663 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.564967857143 | Take profit: 2094.881798214286 +2025-03-10 13:12:22,701 - INFO - CLOSED long at 2066.33 | PnL: 0.12% | $0.03 +2025-03-10 13:12:22,701 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6771821428574 | Take profit: 2035.3117517857143 +2025-03-10 13:12:22,717 - INFO - CLOSED short at 2066.34 | PnL: -0.00% | $-0.17 +2025-03-10 13:12:22,790 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.346017857143 | Take profit: 2096.6986482142856 +2025-03-10 13:12:22,807 - INFO - CLOSED long at 2069.79 | PnL: 0.20% | $0.17 +2025-03-10 13:12:22,809 - INFO - OPENED SHORT at 2069.79 | Stop loss: 2080.154482142857 | Take profit: 2038.7198517857141 +2025-03-10 13:12:22,861 - INFO - CLOSED short at 2074.3 | PnL: -0.22% | $-0.55 +2025-03-10 13:12:22,861 - INFO - OPENED LONG at 2074.3 | Stop loss: 2063.912967857143 | Take profit: 2105.437798214286 +2025-03-10 13:12:22,892 - INFO - CLOSED long at 2078.01 | PnL: 0.18% | $0.13 +2025-03-10 13:12:22,977 - INFO - OPENED SHORT at 2071.04 | Stop loss: 2081.4107321428573 | Take profit: 2039.9511017857142 +2025-03-10 13:12:23,008 - INFO - CLOSED short at 2070.01 | PnL: 0.05% | $-0.09 +2025-03-10 13:12:23,008 - INFO - OPENED LONG at 2070.01 | Stop loss: 2059.6444178571433 | Take profit: 2101.083448214286 +2025-03-10 13:12:23,073 - INFO - CLOSED long at 2070.0 | PnL: -0.00% | $-0.17 +2025-03-10 13:12:23,091 - INFO - OPENED LONG at 2068.15 | Stop loss: 2057.793717857143 | Take profit: 2099.1955482142857 +2025-03-10 13:12:23,108 - INFO - CLOSED long at 2068.39 | PnL: 0.01% | $-0.15 +2025-03-10 13:12:23,144 - INFO - OPENED SHORT at 2069.03 | Stop loss: 2079.3906821428573 | Take profit: 2037.9712517857145 +2025-03-10 13:12:23,162 - INFO - CLOSED short at 2067.44 | PnL: 0.08% | $-0.04 +2025-03-10 13:12:23,162 - INFO - OPENED LONG at 2067.44 | Stop loss: 2057.0872678571427 | Take profit: 2098.4748982142855 +2025-03-10 13:12:23,198 - INFO - CLOSED long at 2072.99 | PnL: 0.27% | $0.29 +2025-03-10 13:12:23,198 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.370482142857 | Take profit: 2041.871851785714 +2025-03-10 13:12:23,218 - INFO - CLOSED short at 2071.49 | PnL: 0.07% | $-0.05 +2025-03-10 13:12:23,236 - INFO - OPENED SHORT at 2069.87 | Stop loss: 2080.234882142857 | Take profit: 2038.7986517857141 +2025-03-10 13:12:23,294 - INFO - CLOSED short at 2066.38 | PnL: 0.17% | $0.12 +2025-03-10 13:12:23,328 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.355967857143 | Take profit: 2096.7087982142857 +2025-03-10 13:12:23,355 - INFO - CLOSED long at 2065.66 | PnL: -0.00% | $-0.17 +2025-03-10 13:12:23,355 - INFO - OPENED SHORT at 2065.66 | Stop loss: 2076.003832142857 | Take profit: 2034.651801785714 +2025-03-10 13:12:23,389 - INFO - CLOSED short at 2063.95 | PnL: 0.08% | $-0.03 +2025-03-10 13:12:23,390 - INFO - OPENED LONG at 2063.95 | Stop loss: 2053.6147178571428 | Take profit: 2094.932548214286 +2025-03-10 13:12:23,422 - INFO - CLOSED long at 2063.97 | PnL: 0.00% | $-0.17 +2025-03-10 13:12:23,495 - INFO - OPENED LONG at 2064.31 | Stop loss: 2053.972917857143 | Take profit: 2095.297948214286 +2025-03-10 13:12:23,512 - INFO - CLOSED long at 2065.5 | PnL: 0.06% | $-0.07 +2025-03-10 13:12:23,512 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.843032142857 | Take profit: 2034.4942017857143 +2025-03-10 13:12:23,563 - INFO - CLOSED short at 2065.31 | PnL: 0.01% | $-0.15 +2025-03-10 13:12:23,587 - INFO - OPENED LONG at 2066.8 | Stop loss: 2056.450467857143 | Take profit: 2097.825298214286 +2025-03-10 13:12:23,603 - INFO - CLOSED long at 2066.5 | PnL: -0.01% | $-0.19 +2025-03-10 13:12:23,603 - INFO - OPENED SHORT at 2066.5 | Stop loss: 2076.848032142857 | Take profit: 2035.4792017857144 +2025-03-10 13:12:23,657 - INFO - CLOSED short at 2071.59 | PnL: -0.25% | $-0.59 +2025-03-10 13:12:23,658 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.216517857143 | Take profit: 2102.687148214286 +2025-03-10 13:12:23,804 - INFO - CLOSED long at 2070.7 | PnL: -0.04% | $-0.24 +2025-03-10 13:12:23,804 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.069032142857 | Take profit: 2039.6162017857139 +2025-03-10 13:12:23,835 - INFO - CLOSED short at 2070.8 | PnL: -0.00% | $-0.18 +2025-03-10 13:12:23,835 - INFO - OPENED LONG at 2070.8 | Stop loss: 2060.430467857143 | Take profit: 2101.885298214286 +2025-03-10 13:12:23,854 - INFO - CLOSED long at 2070.35 | PnL: -0.02% | $-0.20 +2025-03-10 13:12:23,854 - INFO - OPENED SHORT at 2070.35 | Stop loss: 2080.717282142857 | Take profit: 2039.2714517857144 +2025-03-10 13:12:23,875 - INFO - CLOSED short at 2070.61 | PnL: -0.01% | $-0.19 +2025-03-10 13:12:23,876 - INFO - OPENED LONG at 2070.61 | Stop loss: 2060.241417857143 | Take profit: 2101.692448214286 +2025-03-10 13:12:23,909 - INFO - CLOSED long at 2068.19 | PnL: -0.12% | $-0.36 +2025-03-10 13:12:23,927 - INFO - OPENED LONG at 2068.67 | Stop loss: 2058.311117857143 | Take profit: 2099.723348214286 +2025-03-10 13:12:23,944 - INFO - CLOSED long at 2070.67 | PnL: 0.10% | $-0.01 +2025-03-10 13:12:23,944 - INFO - OPENED SHORT at 2070.67 | Stop loss: 2081.0388821428573 | Take profit: 2039.5866517857144 +2025-03-10 13:12:23,964 - INFO - CLOSED short at 2069.78 | PnL: 0.04% | $-0.09 +2025-03-10 13:12:24,087 - INFO - OPENED SHORT at 2073.99 | Stop loss: 2084.375482142857 | Take profit: 2042.856851785714 +2025-03-10 13:12:24,122 - INFO - CLOSED short at 2075.32 | PnL: -0.06% | $-0.27 +2025-03-10 13:12:24,122 - INFO - OPENED LONG at 2075.32 | Stop loss: 2064.927867857143 | Take profit: 2106.473098214286 +2025-03-10 13:12:24,209 - INFO - CLOSED long at 2075.61 | PnL: 0.01% | $-0.14 +2025-03-10 13:12:24,209 - INFO - OPENED SHORT at 2075.61 | Stop loss: 2086.0035821428573 | Take profit: 2044.4525517857146 +2025-03-10 13:12:24,288 - INFO - CLOSED short at 2067.7 | PnL: 0.38% | $0.46 +2025-03-10 13:12:24,288 - INFO - OPENED LONG at 2067.7 | Stop loss: 2057.3459678571426 | Take profit: 2098.7387982142855 +2025-03-10 13:12:24,324 - INFO - CLOSED long at 2067.9 | PnL: 0.01% | $-0.15 +2025-03-10 13:12:24,362 - INFO - OPENED LONG at 2066.89 | Stop loss: 2056.5400178571426 | Take profit: 2097.9166482142855 +2025-03-10 13:12:24,512 - INFO - CLOSED long at 2067.19 | PnL: 0.01% | $-0.14 +2025-03-10 13:12:24,512 - INFO - OPENED SHORT at 2067.19 | Stop loss: 2077.541482142857 | Take profit: 2036.1588517857142 +2025-03-10 13:12:24,538 - INFO - CLOSED short at 2065.5 | PnL: 0.08% | $-0.03 +2025-03-10 13:12:24,571 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.355967857143 | Take profit: 2096.7087982142857 +2025-03-10 13:12:24,638 - INFO - CLOSED long at 2066.09 | PnL: 0.02% | $-0.13 +2025-03-10 13:12:24,638 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.4359821428575 | Take profit: 2035.0753517857145 +2025-03-10 13:12:24,745 - INFO - CLOSED short at 2064.11 | PnL: 0.10% | $-0.01 +2025-03-10 13:12:24,745 - INFO - OPENED LONG at 2064.11 | Stop loss: 2053.773917857143 | Take profit: 2095.094948214286 +2025-03-10 13:12:24,915 - INFO - CLOSED long at 2058.65 | PnL: -0.26% | $-0.60 +2025-03-10 13:12:24,915 - INFO - OPENED SHORT at 2058.65 | Stop loss: 2068.958782142857 | Take profit: 2027.7469517857144 +2025-03-10 13:12:24,944 - INFO - CLOSED short at 2056.77 | PnL: 0.09% | $-0.01 +2025-03-10 13:12:24,945 - INFO - OPENED LONG at 2056.77 | Stop loss: 2046.4706178571428 | Take profit: 2087.6448482142855 +2025-03-10 13:12:24,975 - INFO - CLOSED long at 2053.01 | PnL: -0.18% | $-0.46 +2025-03-10 13:12:25,028 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.2369678571429 | Take profit: 2080.2657982142855 +2025-03-10 13:12:25,073 - INFO - CLOSED long at 2058.3 | PnL: 0.43% | $0.54 +2025-03-10 13:12:25,139 - INFO - OPENED LONG at 2062.83 | Stop loss: 2052.500317857143 | Take profit: 2093.7957482142856 +2025-03-10 13:12:25,163 - INFO - CLOSED long at 2063.9 | PnL: 0.05% | $-0.08 +2025-03-10 13:12:25,179 - INFO - OPENED LONG at 2065.1 | Stop loss: 2054.758967857143 | Take profit: 2096.099798214286 +2025-03-10 13:12:25,213 - INFO - CLOSED long at 2062.55 | PnL: -0.12% | $-0.37 +2025-03-10 13:12:25,213 - INFO - OPENED SHORT at 2062.55 | Stop loss: 2072.878282142857 | Take profit: 2031.5884517857146 +2025-03-10 13:12:25,371 - INFO - CLOSED short at 2061.21 | PnL: 0.06% | $-0.06 +2025-03-10 13:12:25,371 - INFO - OPENED LONG at 2061.21 | Stop loss: 2050.888417857143 | Take profit: 2092.1514482142857 +2025-03-10 13:12:25,503 - INFO - CLOSED long at 2070.31 | PnL: 0.44% | $0.56 +2025-03-10 13:12:25,545 - INFO - OPENED SHORT at 2069.81 | Stop loss: 2080.1745821428567 | Take profit: 2038.7395517857142 +2025-03-10 13:12:25,587 - INFO - CLOSED short at 2073.49 | PnL: -0.18% | $-0.46 +2025-03-10 13:12:25,605 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.435782142857 | Take profit: 2042.9159517857145 +2025-03-10 13:12:25,626 - INFO - CLOSED short at 2072.99 | PnL: 0.05% | $-0.08 +2025-03-10 13:12:25,626 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6095178571427 | Take profit: 2104.1081482142854 +2025-03-10 13:12:25,716 - INFO - CLOSED long at 2074.9 | PnL: 0.09% | $-0.01 +2025-03-10 13:12:25,716 - INFO - OPENED SHORT at 2074.9 | Stop loss: 2085.2900321428574 | Take profit: 2043.7532017857143 +2025-03-10 13:12:25,746 - INFO - CLOSED short at 2076.08 | PnL: -0.06% | $-0.26 +2025-03-10 13:12:25,747 - INFO - OPENED LONG at 2076.08 | Stop loss: 2065.684067857143 | Take profit: 2107.2444982142856 +2025-03-10 13:12:25,862 - INFO - TAKE PROFIT hit for long at 2107.2444982142856 | PnL: 1.50% | $2.28 +2025-03-10 13:12:25,979 - INFO - OPENED LONG at 2141.3 | Stop loss: 2130.577967857143 | Take profit: 2173.4427982142856 +2025-03-10 13:12:26,031 - INFO - CLOSED long at 2134.78 | PnL: -0.30% | $-0.68 +2025-03-10 13:12:26,031 - INFO - OPENED SHORT at 2134.78 | Stop loss: 2145.4694321428574 | Take profit: 2102.7350017857143 +2025-03-10 13:12:26,062 - INFO - CLOSED short at 2126.99 | PnL: 0.36% | $0.44 +2025-03-10 13:12:26,096 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.647967857143 | Take profit: 2159.2327982142856 +2025-03-10 13:12:26,217 - INFO - CLOSED long at 2117.24 | PnL: -0.47% | $-0.95 +2025-03-10 13:12:26,217 - INFO - OPENED SHORT at 2117.24 | Stop loss: 2127.841732142857 | Take profit: 2085.458101785714 +2025-03-10 13:12:26,262 - INFO - CLOSED short at 2121.4 | PnL: -0.20% | $-0.49 +2025-03-10 13:12:26,278 - INFO - OPENED SHORT at 2118.52 | Stop loss: 2129.128132142857 | Take profit: 2086.7189017857145 +2025-03-10 13:12:26,298 - INFO - CLOSED short at 2119.14 | PnL: -0.03% | $-0.21 +2025-03-10 13:12:26,298 - INFO - OPENED LONG at 2119.14 | Stop loss: 2108.5287678571426 | Take profit: 2150.9503982142855 +2025-03-10 13:12:26,349 - INFO - CLOSED long at 2107.43 | PnL: -0.55% | $-1.07 +2025-03-10 13:12:26,370 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.0314678571426 | Take profit: 2142.282298214285 +2025-03-10 13:12:26,469 - INFO - CLOSED long at 2113.24 | PnL: 0.13% | $0.04 +2025-03-10 13:12:26,522 - INFO - OPENED SHORT at 2120.81 | Stop loss: 2131.429582142857 | Take profit: 2088.9745517857145 +2025-03-10 13:12:26,557 - INFO - CLOSED short at 2116.48 | PnL: 0.20% | $0.17 +2025-03-10 13:12:26,582 - INFO - OPENED LONG at 2114.8 | Stop loss: 2104.210467857143 | Take profit: 2146.545298214286 +2025-03-10 13:12:26,655 - INFO - CLOSED long at 2106.49 | PnL: -0.39% | $-0.80 +2025-03-10 13:12:26,655 - INFO - OPENED SHORT at 2106.49 | Stop loss: 2117.037982142857 | Take profit: 2074.869351785714 +2025-03-10 13:12:26,696 - INFO - CLOSED short at 2103.33 | PnL: 0.15% | $0.08 +2025-03-10 13:12:26,696 - INFO - OPENED LONG at 2103.33 | Stop loss: 2092.797817857143 | Take profit: 2134.9032482142857 +2025-03-10 13:12:26,736 - INFO - STOP LOSS hit for long at 2092.797817857143 | PnL: -0.50% | $-0.96 +2025-03-10 13:12:26,769 - INFO - OPENED LONG at 2098.1 | Stop loss: 2087.5939678571426 | Take profit: 2129.5947982142857 +2025-03-10 13:12:26,778 - INFO - CLOSED long at 2102.19 | PnL: 0.19% | $0.15 +2025-03-10 13:12:26,802 - INFO - OPENED SHORT at 2102.29 | Stop loss: 2112.816982142857 | Take profit: 2070.7323517857144 +2025-03-10 13:12:26,820 - INFO - CLOSED short at 2099.25 | PnL: 0.14% | $0.07 +2025-03-10 13:12:26,821 - INFO - OPENED LONG at 2099.25 | Stop loss: 2088.738217857143 | Take profit: 2130.7620482142856 +2025-03-10 13:12:26,839 - INFO - CLOSED long at 2098.9 | PnL: -0.02% | $-0.19 +2025-03-10 13:12:26,897 - INFO - OPENED LONG at 2104.83 | Stop loss: 2094.290317857143 | Take profit: 2136.4257482142857 +2025-03-10 13:12:26,930 - INFO - CLOSED long at 2106.39 | PnL: 0.07% | $-0.04 +2025-03-10 13:12:26,931 - INFO - OPENED SHORT at 2106.39 | Stop loss: 2116.937482142857 | Take profit: 2074.770851785714 +2025-03-10 13:12:26,961 - INFO - CLOSED short at 2100.74 | PnL: 0.27% | $0.27 +2025-03-10 13:12:26,990 - INFO - OPENED SHORT at 2103.86 | Stop loss: 2114.394832142857 | Take profit: 2072.278801785714 +2025-03-10 13:12:27,075 - INFO - CLOSED short at 2100.02 | PnL: 0.18% | $0.13 +2025-03-10 13:12:27,075 - INFO - OPENED LONG at 2100.02 | Stop loss: 2089.504367857143 | Take profit: 2131.543598214286 +2025-03-10 13:12:27,117 - INFO - CLOSED long at 2095.29 | PnL: -0.23% | $-0.52 +2025-03-10 13:12:27,117 - INFO - OPENED SHORT at 2095.29 | Stop loss: 2105.7819821428575 | Take profit: 2063.8373517857144 +2025-03-10 13:12:27,167 - INFO - CLOSED short at 2092.46 | PnL: 0.14% | $0.06 +2025-03-10 13:12:27,198 - INFO - OPENED SHORT at 2094.72 | Stop loss: 2105.209132142857 | Take profit: 2063.275901785714 +2025-03-10 13:12:27,218 - INFO - CLOSED short at 2094.08 | PnL: 0.03% | $-0.11 +2025-03-10 13:12:27,287 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.9822678571427 | Take profit: 2119.789898214286 +2025-03-10 13:12:27,395 - INFO - CLOSED long at 2081.49 | PnL: -0.33% | $-0.68 +2025-03-10 13:12:27,395 - INFO - OPENED SHORT at 2081.49 | Stop loss: 2091.912982142857 | Take profit: 2050.244351785714 +2025-03-10 13:12:27,424 - INFO - CLOSED short at 2080.38 | PnL: 0.05% | $-0.07 +2025-03-10 13:12:27,425 - INFO - OPENED LONG at 2080.38 | Stop loss: 2069.962567857143 | Take profit: 2111.6089982142857 +2025-03-10 13:12:27,448 - INFO - CLOSED long at 2081.25 | PnL: 0.04% | $-0.09 +2025-03-10 13:12:27,449 - INFO - OPENED SHORT at 2081.25 | Stop loss: 2091.6717821428574 | Take profit: 2050.0079517857143 +2025-03-10 13:12:27,487 - INFO - CLOSED short at 2085.09 | PnL: -0.18% | $-0.44 +2025-03-10 13:12:27,487 - INFO - OPENED LONG at 2085.09 | Stop loss: 2074.649017857143 | Take profit: 2116.389648214286 +2025-03-10 13:12:27,523 - INFO - CLOSED long at 2086.57 | PnL: 0.07% | $-0.05 +2025-03-10 13:12:27,523 - INFO - OPENED SHORT at 2086.57 | Stop loss: 2097.0183821428573 | Take profit: 2055.2481517857145 +2025-03-10 13:12:27,562 - INFO - CLOSED short at 2084.72 | PnL: 0.09% | $-0.02 +2025-03-10 13:12:27,562 - INFO - OPENED LONG at 2084.72 | Stop loss: 2074.2808678571428 | Take profit: 2116.0140982142852 +2025-03-10 13:12:27,686 - INFO - CLOSED long at 2089.96 | PnL: 0.25% | $0.23 +2025-03-10 13:12:27,686 - INFO - OPENED SHORT at 2089.96 | Stop loss: 2100.425332142857 | Take profit: 2058.5873017857143 +2025-03-10 13:12:27,859 - INFO - CLOSED short at 2085.67 | PnL: 0.21% | $0.16 +2025-03-10 13:12:27,859 - INFO - OPENED LONG at 2085.67 | Stop loss: 2075.226117857143 | Take profit: 2116.978348214286 +2025-03-10 13:12:27,892 - INFO - CLOSED long at 2091.05 | PnL: 0.26% | $0.25 +2025-03-10 13:12:27,950 - INFO - OPENED LONG at 2094.7 | Stop loss: 2084.210967857143 | Take profit: 2126.1437982142857 +2025-03-10 13:12:27,971 - INFO - CLOSED long at 2097.8 | PnL: 0.15% | $0.08 +2025-03-10 13:12:28,003 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.163732142857 | Take profit: 2070.092101785714 +2025-03-10 13:12:28,049 - INFO - CLOSED short at 2098.49 | PnL: 0.15% | $0.08 +2025-03-10 13:12:28,162 - INFO - OPENED LONG at 2106.15 | Stop loss: 2095.603717857143 | Take profit: 2137.765548214286 +2025-03-10 13:12:28,344 - INFO - CLOSED long at 2103.52 | PnL: -0.12% | $-0.35 +2025-03-10 13:12:28,344 - INFO - OPENED SHORT at 2103.52 | Stop loss: 2114.0531321428575 | Take profit: 2071.9439017857144 +2025-03-10 13:12:28,386 - INFO - Trade Analysis: Win Rate=16.7% in uptrends, 0.0% in downtrends | Avg Win=$0.24, Avg Loss=$-0.26 +2025-03-10 13:12:28,387 - INFO - Episode 3: Reward=-109.67, Balance=$78.60, Win Rate=21.7%, Trades=143, Episode PnL=$-11.62, Total PnL=$-104.09, Max Drawdown=21.2%, Pred Accuracy=98.5% +2025-03-10 13:12:28,387 - ERROR - Error in episode 3: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:12:28,387 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:12:28,408 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:12:28,770 - INFO - OPENED LONG at 2045.99 | Stop loss: 2035.744517857143 | Take profit: 2076.703148214286 +2025-03-10 13:12:28,918 - INFO - CLOSED long at 2049.89 | PnL: 0.19% | $0.18 +2025-03-10 13:12:28,918 - INFO - OPENED SHORT at 2049.89 | Stop loss: 2060.154982142857 | Take profit: 2019.1183517857141 +2025-03-10 13:12:28,937 - INFO - CLOSED short at 2051.11 | PnL: -0.06% | $-0.32 +2025-03-10 13:12:28,955 - INFO - OPENED SHORT at 2053.26 | Stop loss: 2063.5418321428574 | Take profit: 2022.4378017857143 +2025-03-10 13:12:28,972 - INFO - CLOSED short at 2051.89 | PnL: 0.07% | $-0.07 +2025-03-10 13:12:28,972 - INFO - OPENED LONG at 2051.89 | Stop loss: 2041.6150178571427 | Take profit: 2082.6916482142856 +2025-03-10 13:12:29,114 - INFO - CLOSED long at 2059.7 | PnL: 0.38% | $0.56 +2025-03-10 13:12:29,180 - INFO - OPENED SHORT at 2064.61 | Stop loss: 2074.948582142857 | Take profit: 2033.6175517857146 +2025-03-10 13:12:29,239 - INFO - CLOSED short at 2061.61 | PnL: 0.15% | $0.09 +2025-03-10 13:12:29,239 - INFO - OPENED LONG at 2061.61 | Stop loss: 2051.286417857143 | Take profit: 2092.557448214286 +2025-03-10 13:12:29,337 - INFO - CLOSED long at 2061.89 | PnL: 0.01% | $-0.17 +2025-03-10 13:12:29,337 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.214982142857 | Take profit: 2030.938351785714 +2025-03-10 13:12:29,356 - INFO - CLOSED short at 2062.89 | PnL: -0.05% | $-0.30 +2025-03-10 13:12:29,390 - INFO - OPENED SHORT at 2059.49 | Stop loss: 2069.8029821428568 | Take profit: 2028.574351785714 +2025-03-10 13:12:29,453 - INFO - CLOSED short at 2057.94 | PnL: 0.08% | $-0.05 +2025-03-10 13:12:29,453 - INFO - OPENED LONG at 2057.94 | Stop loss: 2047.6347678571428 | Take profit: 2088.832398214286 +2025-03-10 13:12:29,484 - INFO - CLOSED long at 2058.11 | PnL: 0.01% | $-0.18 +2025-03-10 13:12:29,485 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.4160821428572 | Take profit: 2027.2150517857144 +2025-03-10 13:12:29,628 - INFO - STOP LOSS hit for short at 2068.4160821428572 | PnL: -0.50% | $-1.19 +2025-03-10 13:12:29,645 - INFO - OPENED LONG at 2068.11 | Stop loss: 2057.753917857143 | Take profit: 2099.154948214286 +2025-03-10 13:12:29,705 - INFO - CLOSED long at 2071.63 | PnL: 0.17% | $0.14 +2025-03-10 13:12:29,705 - INFO - OPENED SHORT at 2071.63 | Stop loss: 2082.003682142857 | Take profit: 2040.5322517857144 +2025-03-10 13:12:29,830 - INFO - CLOSED short at 2070.26 | PnL: 0.07% | $-0.07 +2025-03-10 13:12:29,890 - INFO - OPENED LONG at 2073.73 | Stop loss: 2063.3458178571427 | Take profit: 2104.859248214286 +2025-03-10 13:12:30,101 - INFO - CLOSED long at 2070.79 | PnL: -0.14% | $-0.47 +2025-03-10 13:12:30,144 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.375632142857 | Take profit: 2036.9764017857142 +2025-03-10 13:12:30,277 - INFO - CLOSED short at 2068.8 | PnL: -0.04% | $-0.27 +2025-03-10 13:12:30,315 - INFO - OPENED LONG at 2067.6 | Stop loss: 2057.2464678571428 | Take profit: 2098.6372982142857 +2025-03-10 13:12:30,431 - INFO - CLOSED long at 2065.99 | PnL: -0.08% | $-0.35 +2025-03-10 13:12:30,431 - INFO - OPENED SHORT at 2065.99 | Stop loss: 2076.335482142857 | Take profit: 2034.9768517857142 +2025-03-10 13:12:30,470 - INFO - CLOSED short at 2066.29 | PnL: -0.01% | $-0.22 +2025-03-10 13:12:30,470 - INFO - OPENED LONG at 2066.29 | Stop loss: 2055.943017857143 | Take profit: 2097.3076482142856 +2025-03-10 13:12:30,598 - INFO - CLOSED long at 2070.4 | PnL: 0.20% | $0.19 +2025-03-10 13:12:30,670 - INFO - OPENED LONG at 2071.39 | Stop loss: 2061.0175178571426 | Take profit: 2102.4841482142856 +2025-03-10 13:12:30,730 - INFO - CLOSED long at 2072.75 | PnL: 0.07% | $-0.07 +2025-03-10 13:12:30,761 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.728917857143 | Take profit: 2104.2299482142857 +2025-03-10 13:12:30,814 - INFO - CLOSED long at 2072.15 | PnL: -0.05% | $-0.28 +2025-03-10 13:12:30,846 - INFO - OPENED LONG at 2074.29 | Stop loss: 2063.903017857143 | Take profit: 2105.4276482142855 +2025-03-10 13:12:30,863 - INFO - CLOSED long at 2073.9 | PnL: -0.02% | $-0.23 +2025-03-10 13:12:30,865 - INFO - OPENED SHORT at 2073.9 | Stop loss: 2084.2850321428573 | Take profit: 2042.7682017857144 +2025-03-10 13:12:30,921 - INFO - CLOSED short at 2071.11 | PnL: 0.13% | $0.07 +2025-03-10 13:12:30,923 - INFO - OPENED LONG at 2071.11 | Stop loss: 2060.738917857143 | Take profit: 2102.199948214286 +2025-03-10 13:12:31,017 - INFO - CLOSED long at 2067.46 | PnL: -0.18% | $-0.53 +2025-03-10 13:12:31,042 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.1495321428574 | Take profit: 2035.7747017857143 +2025-03-10 13:12:31,070 - INFO - CLOSED short at 2065.49 | PnL: 0.06% | $-0.07 +2025-03-10 13:12:31,070 - INFO - OPENED LONG at 2065.49 | Stop loss: 2055.1470178571426 | Take profit: 2096.4956482142857 +2025-03-10 13:12:31,215 - INFO - CLOSED long at 2068.8 | PnL: 0.16% | $0.12 +2025-03-10 13:12:31,262 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.505167857143 | Take profit: 2098.9011982142856 +2025-03-10 13:12:31,297 - INFO - CLOSED long at 2069.2 | PnL: 0.06% | $-0.07 +2025-03-10 13:12:31,297 - INFO - OPENED SHORT at 2069.2 | Stop loss: 2079.561532142857 | Take profit: 2038.1387017857141 +2025-03-10 13:12:31,350 - INFO - CLOSED short at 2070.7 | PnL: -0.07% | $-0.33 +2025-03-10 13:12:31,351 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3309678571427 | Take profit: 2101.7837982142855 +2025-03-10 13:12:31,378 - INFO - CLOSED long at 2070.73 | PnL: 0.00% | $-0.19 +2025-03-10 13:12:31,378 - INFO - OPENED SHORT at 2070.73 | Stop loss: 2081.099182142857 | Take profit: 2039.6457517857143 +2025-03-10 13:12:31,403 - INFO - CLOSED short at 2068.5 | PnL: 0.11% | $0.01 +2025-03-10 13:12:31,422 - INFO - OPENED LONG at 2068.69 | Stop loss: 2058.331017857143 | Take profit: 2099.7436482142857 +2025-03-10 13:12:31,471 - INFO - CLOSED long at 2067.11 | PnL: -0.08% | $-0.34 +2025-03-10 13:12:31,506 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.505167857143 | Take profit: 2098.9011982142856 +2025-03-10 13:12:31,535 - INFO - CLOSED long at 2066.4 | PnL: -0.07% | $-0.32 +2025-03-10 13:12:31,536 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.7475321428574 | Take profit: 2035.3807017857143 +2025-03-10 13:12:31,564 - INFO - CLOSED short at 2066.1 | PnL: 0.01% | $-0.16 +2025-03-10 13:12:31,564 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.753967857143 | Take profit: 2097.1147982142857 +2025-03-10 13:12:31,744 - INFO - CLOSED long at 2067.88 | PnL: 0.09% | $-0.03 +2025-03-10 13:12:31,745 - INFO - OPENED SHORT at 2067.88 | Stop loss: 2078.2349321428574 | Take profit: 2036.8385017857145 +2025-03-10 13:12:31,764 - INFO - CLOSED short at 2064.99 | PnL: 0.14% | $0.08 +2025-03-10 13:12:31,764 - INFO - OPENED LONG at 2064.99 | Stop loss: 2054.6495178571427 | Take profit: 2095.9881482142855 +2025-03-10 13:12:31,802 - INFO - CLOSED long at 2066.15 | PnL: 0.06% | $-0.08 +2025-03-10 13:12:31,803 - INFO - OPENED SHORT at 2066.15 | Stop loss: 2076.496282142857 | Take profit: 2035.1344517857142 +2025-03-10 13:12:31,845 - INFO - CLOSED short at 2062.89 | PnL: 0.16% | $0.11 +2025-03-10 13:12:31,846 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.5600178571426 | Take profit: 2093.8566482142855 +2025-03-10 13:12:31,880 - INFO - CLOSED long at 2062.65 | PnL: -0.01% | $-0.21 +2025-03-10 13:12:31,917 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.4555678571433 | Take profit: 2092.729998214286 +2025-03-10 13:12:31,980 - INFO - CLOSED long at 2061.3 | PnL: -0.02% | $-0.23 +2025-03-10 13:12:32,015 - INFO - OPENED SHORT at 2063.59 | Stop loss: 2073.923482142857 | Take profit: 2032.6128517857144 +2025-03-10 13:12:32,036 - INFO - CLOSED short at 2064.96 | PnL: -0.07% | $-0.31 +2025-03-10 13:12:32,036 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.6196678571428 | Take profit: 2095.9576982142858 +2025-03-10 13:12:32,059 - INFO - CLOSED long at 2066.24 | PnL: 0.06% | $-0.07 +2025-03-10 13:12:32,073 - INFO - OPENED LONG at 2067.1 | Stop loss: 2056.748967857143 | Take profit: 2098.1297982142855 +2025-03-10 13:12:32,129 - INFO - CLOSED long at 2064.45 | PnL: -0.13% | $-0.43 +2025-03-10 13:12:32,154 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.744067857143 | Take profit: 2095.0644982142853 +2025-03-10 13:12:32,170 - INFO - CLOSED long at 2062.71 | PnL: -0.07% | $-0.31 +2025-03-10 13:12:32,170 - INFO - OPENED SHORT at 2062.71 | Stop loss: 2073.0390821428573 | Take profit: 2031.7460517857144 +2025-03-10 13:12:32,188 - INFO - CLOSED short at 2062.89 | PnL: -0.01% | $-0.20 +2025-03-10 13:12:32,188 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.5600178571426 | Take profit: 2093.8566482142855 +2025-03-10 13:12:32,236 - INFO - CLOSED long at 2063.5 | PnL: 0.03% | $-0.13 +2025-03-10 13:12:32,236 - INFO - OPENED SHORT at 2063.5 | Stop loss: 2073.833032142857 | Take profit: 2032.5242017857142 +2025-03-10 13:12:32,324 - INFO - CLOSED short at 2060.65 | PnL: 0.14% | $0.07 +2025-03-10 13:12:32,325 - INFO - OPENED LONG at 2060.65 | Stop loss: 2050.3312178571427 | Take profit: 2091.583048214286 +2025-03-10 13:12:32,356 - INFO - CLOSED long at 2058.89 | PnL: -0.09% | $-0.34 +2025-03-10 13:12:32,388 - INFO - OPENED SHORT at 2059.3 | Stop loss: 2069.612032142857 | Take profit: 2028.3872017857145 +2025-03-10 13:12:32,421 - INFO - CLOSED short at 2060.31 | PnL: -0.05% | $-0.28 +2025-03-10 13:12:32,421 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.992917857143 | Take profit: 2091.237948214286 +2025-03-10 13:12:32,445 - INFO - CLOSED long at 2061.8 | PnL: 0.07% | $-0.05 +2025-03-10 13:12:32,445 - INFO - OPENED SHORT at 2061.8 | Stop loss: 2072.1245321428573 | Take profit: 2030.8497017857144 +2025-03-10 13:12:32,465 - INFO - CLOSED short at 2064.7 | PnL: -0.14% | $-0.44 +2025-03-10 13:12:32,465 - INFO - OPENED LONG at 2064.7 | Stop loss: 2054.360967857143 | Take profit: 2095.6937982142854 +2025-03-10 13:12:32,582 - INFO - CLOSED long at 2065.36 | PnL: 0.03% | $-0.12 +2025-03-10 13:12:32,582 - INFO - OPENED SHORT at 2065.36 | Stop loss: 2075.7023321428574 | Take profit: 2034.3563017857145 +2025-03-10 13:12:32,622 - INFO - CLOSED short at 2063.39 | PnL: 0.10% | $-0.01 +2025-03-10 13:12:32,622 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.0575178571426 | Take profit: 2094.3641482142853 +2025-03-10 13:12:32,730 - INFO - CLOSED long at 2063.0 | PnL: -0.02% | $-0.22 +2025-03-10 13:12:32,787 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.5650178571427 | Take profit: 2092.841648214285 +2025-03-10 13:12:32,871 - INFO - CLOSED long at 2059.61 | PnL: -0.11% | $-0.38 +2025-03-10 13:12:32,893 - INFO - OPENED LONG at 2059.16 | Stop loss: 2048.8486678571426 | Take profit: 2090.0706982142856 +2025-03-10 13:12:32,930 - INFO - CLOSED long at 2058.89 | PnL: -0.01% | $-0.21 +2025-03-10 13:12:32,945 - INFO - OPENED SHORT at 2059.96 | Stop loss: 2070.275332142857 | Take profit: 2029.0373017857144 +2025-03-10 13:12:33,011 - INFO - CLOSED short at 2056.28 | PnL: 0.18% | $0.14 +2025-03-10 13:12:33,011 - INFO - OPENED LONG at 2056.28 | Stop loss: 2045.9830678571432 | Take profit: 2087.147498214286 +2025-03-10 13:12:33,035 - INFO - CLOSED long at 2055.6 | PnL: -0.03% | $-0.24 +2025-03-10 13:12:33,037 - INFO - OPENED SHORT at 2055.6 | Stop loss: 2065.893532142857 | Take profit: 2024.7427017857142 +2025-03-10 13:12:33,119 - INFO - CLOSED short at 2056.71 | PnL: -0.05% | $-0.28 +2025-03-10 13:12:33,119 - INFO - OPENED LONG at 2056.71 | Stop loss: 2046.410917857143 | Take profit: 2087.583948214286 +2025-03-10 13:12:33,152 - INFO - CLOSED long at 2058.15 | PnL: 0.07% | $-0.05 +2025-03-10 13:12:33,212 - INFO - OPENED SHORT at 2061.66 | Stop loss: 2071.983832142857 | Take profit: 2030.7118017857142 +2025-03-10 13:12:33,242 - INFO - CLOSED short at 2061.5 | PnL: 0.01% | $-0.17 +2025-03-10 13:12:33,243 - INFO - OPENED LONG at 2061.5 | Stop loss: 2051.1769678571427 | Take profit: 2092.445798214286 +2025-03-10 13:12:33,254 - INFO - CLOSED long at 2061.6 | PnL: 0.00% | $-0.17 +2025-03-10 13:12:33,254 - INFO - OPENED SHORT at 2061.6 | Stop loss: 2071.9235321428573 | Take profit: 2030.6527017857143 +2025-03-10 13:12:33,278 - INFO - CLOSED short at 2061.3 | PnL: 0.01% | $-0.15 +2025-03-10 13:12:33,279 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.977967857143 | Take profit: 2092.242798214286 +2025-03-10 13:12:33,312 - INFO - CLOSED long at 2063.4 | PnL: 0.10% | $0.00 +2025-03-10 13:12:33,333 - INFO - OPENED LONG at 2066.36 | Stop loss: 2056.0126678571432 | Take profit: 2097.3786982142856 +2025-03-10 13:12:33,353 - INFO - CLOSED long at 2066.01 | PnL: -0.02% | $-0.21 +2025-03-10 13:12:33,353 - INFO - OPENED SHORT at 2066.01 | Stop loss: 2076.3555821428577 | Take profit: 2034.9965517857145 +2025-03-10 13:12:33,376 - INFO - CLOSED short at 2063.9 | PnL: 0.10% | $0.00 +2025-03-10 13:12:33,377 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.564967857143 | Take profit: 2094.881798214286 +2025-03-10 13:12:33,440 - INFO - CLOSED long at 2066.34 | PnL: 0.12% | $0.03 +2025-03-10 13:12:33,472 - INFO - OPENED SHORT at 2066.79 | Stop loss: 2077.139482142857 | Take profit: 2035.7648517857142 +2025-03-10 13:12:33,559 - INFO - CLOSED short at 2065.69 | PnL: 0.05% | $-0.08 +2025-03-10 13:12:33,559 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.346017857143 | Take profit: 2096.6986482142856 +2025-03-10 13:12:33,588 - INFO - CLOSED long at 2069.79 | PnL: 0.20% | $0.18 +2025-03-10 13:12:33,642 - INFO - OPENED SHORT at 2074.3 | Stop loss: 2084.6870321428573 | Take profit: 2043.1622017857144 +2025-03-10 13:12:33,662 - INFO - CLOSED short at 2078.01 | PnL: -0.18% | $-0.50 +2025-03-10 13:12:33,662 - INFO - OPENED LONG at 2078.01 | Stop loss: 2067.604417857143 | Take profit: 2109.203448214286 +2025-03-10 13:12:33,745 - INFO - CLOSED long at 2071.6 | PnL: -0.31% | $-0.73 +2025-03-10 13:12:33,752 - INFO - OPENED SHORT at 2071.6 | Stop loss: 2081.973532142857 | Take profit: 2040.5027017857142 +2025-03-10 13:12:33,769 - INFO - CLOSED short at 2073.23 | PnL: -0.08% | $-0.32 +2025-03-10 13:12:33,788 - INFO - OPENED SHORT at 2070.0 | Stop loss: 2080.365532142857 | Take profit: 2038.9267017857142 +2025-03-10 13:12:33,827 - INFO - CLOSED short at 2068.39 | PnL: 0.08% | $-0.04 +2025-03-10 13:12:33,827 - INFO - OPENED LONG at 2068.39 | Stop loss: 2058.032517857143 | Take profit: 2099.4391482142855 +2025-03-10 13:12:33,971 - INFO - CLOSED long at 2072.99 | PnL: 0.22% | $0.22 +2025-03-10 13:12:34,028 - INFO - OPENED SHORT at 2069.87 | Stop loss: 2080.234882142857 | Take profit: 2038.7986517857141 +2025-03-10 13:12:34,078 - INFO - CLOSED short at 2065.7 | PnL: 0.20% | $0.18 +2025-03-10 13:12:34,078 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.355967857143 | Take profit: 2096.7087982142857 +2025-03-10 13:12:34,103 - INFO - CLOSED long at 2065.66 | PnL: -0.00% | $-0.18 +2025-03-10 13:12:34,103 - INFO - OPENED SHORT at 2065.66 | Stop loss: 2076.003832142857 | Take profit: 2034.651801785714 +2025-03-10 13:12:34,123 - INFO - CLOSED short at 2063.95 | PnL: 0.08% | $-0.03 +2025-03-10 13:12:34,123 - INFO - OPENED LONG at 2063.95 | Stop loss: 2053.6147178571428 | Take profit: 2094.932548214286 +2025-03-10 13:12:34,158 - INFO - CLOSED long at 2064.5 | PnL: 0.03% | $-0.13 +2025-03-10 13:12:34,233 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.843032142857 | Take profit: 2034.4942017857143 +2025-03-10 13:12:34,311 - INFO - CLOSED short at 2065.31 | PnL: 0.01% | $-0.16 +2025-03-10 13:12:34,311 - INFO - OPENED LONG at 2065.31 | Stop loss: 2054.9679178571428 | Take profit: 2096.3129482142854 +2025-03-10 13:12:34,432 - INFO - CLOSED long at 2071.59 | PnL: 0.30% | $0.36 +2025-03-10 13:12:34,455 - INFO - OPENED LONG at 2070.2 | Stop loss: 2059.8334678571428 | Take profit: 2101.2762982142854 +2025-03-10 13:12:34,473 - INFO - CLOSED long at 2071.35 | PnL: 0.06% | $-0.08 +2025-03-10 13:12:34,512 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.3260178571427 | Take profit: 2100.758648214286 +2025-03-10 13:12:34,547 - INFO - CLOSED long at 2070.8 | PnL: 0.05% | $-0.08 +2025-03-10 13:12:34,579 - INFO - OPENED LONG at 2070.61 | Stop loss: 2060.241417857143 | Take profit: 2101.692448214286 +2025-03-10 13:12:34,602 - INFO - CLOSED long at 2071.99 | PnL: 0.07% | $-0.06 +2025-03-10 13:12:34,755 - INFO - OPENED SHORT at 2074.37 | Stop loss: 2084.7573821428573 | Take profit: 2043.2311517857142 +2025-03-10 13:12:34,820 - INFO - CLOSED short at 2074.35 | PnL: 0.00% | $-0.17 +2025-03-10 13:12:34,821 - INFO - OPENED LONG at 2074.35 | Stop loss: 2063.9627178571427 | Take profit: 2105.488548214286 +2025-03-10 13:12:34,837 - INFO - CLOSED long at 2073.27 | PnL: -0.05% | $-0.27 +2025-03-10 13:12:34,837 - INFO - OPENED SHORT at 2073.27 | Stop loss: 2083.6518821428567 | Take profit: 2042.1476517857143 +2025-03-10 13:12:34,968 - INFO - CLOSED short at 2072.09 | PnL: 0.06% | $-0.08 +2025-03-10 13:12:34,968 - INFO - OPENED LONG at 2072.09 | Stop loss: 2061.714017857143 | Take profit: 2103.1946482142857 +2025-03-10 13:12:35,077 - INFO - CLOSED long at 2066.4 | PnL: -0.27% | $-0.66 +2025-03-10 13:12:35,107 - INFO - OPENED SHORT at 2066.89 | Stop loss: 2077.239982142857 | Take profit: 2035.863351785714 +2025-03-10 13:12:35,163 - INFO - CLOSED short at 2065.45 | PnL: 0.07% | $-0.05 +2025-03-10 13:12:35,163 - INFO - OPENED LONG at 2065.45 | Stop loss: 2055.1072178571426 | Take profit: 2096.455048214286 +2025-03-10 13:12:35,259 - INFO - CLOSED long at 2070.1 | PnL: 0.23% | $0.22 +2025-03-10 13:12:35,259 - INFO - OPENED SHORT at 2070.1 | Stop loss: 2080.466032142857 | Take profit: 2039.0252017857142 +2025-03-10 13:12:35,278 - INFO - CLOSED short at 2067.19 | PnL: 0.14% | $0.07 +2025-03-10 13:12:35,278 - INFO - OPENED LONG at 2067.19 | Stop loss: 2056.838517857143 | Take profit: 2098.2211482142857 +2025-03-10 13:12:35,316 - INFO - CLOSED long at 2065.7 | PnL: -0.07% | $-0.30 +2025-03-10 13:12:35,316 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.044032142857 | Take profit: 2034.691201785714 +2025-03-10 13:12:35,335 - INFO - CLOSED short at 2065.8 | PnL: -0.00% | $-0.18 +2025-03-10 13:12:35,345 - INFO - OPENED SHORT at 2065.07 | Stop loss: 2075.4108821428576 | Take profit: 2034.0706517857145 +2025-03-10 13:12:35,388 - INFO - CLOSED short at 2063.39 | PnL: 0.08% | $-0.03 +2025-03-10 13:12:35,411 - INFO - OPENED LONG at 2062.34 | Stop loss: 2052.012767857143 | Take profit: 2093.2983982142855 +2025-03-10 13:12:35,431 - INFO - CLOSED long at 2063.98 | PnL: 0.08% | $-0.04 +2025-03-10 13:12:35,431 - INFO - OPENED SHORT at 2063.98 | Stop loss: 2074.315432142857 | Take profit: 2032.9970017857142 +2025-03-10 13:12:35,462 - INFO - CLOSED short at 2066.1 | PnL: -0.10% | $-0.35 +2025-03-10 13:12:35,462 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.753967857143 | Take profit: 2097.1147982142857 +2025-03-10 13:12:35,493 - INFO - CLOSED long at 2065.06 | PnL: -0.05% | $-0.26 +2025-03-10 13:12:35,545 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.838032142857 | Take profit: 2033.5092017857144 +2025-03-10 13:12:35,611 - INFO - CLOSED short at 2063.01 | PnL: 0.07% | $-0.05 +2025-03-10 13:12:35,673 - INFO - OPENED LONG at 2059.2 | Stop loss: 2048.8884678571426 | Take profit: 2090.1112982142854 +2025-03-10 13:12:35,737 - INFO - CLOSED long at 2053.01 | PnL: -0.30% | $-0.69 +2025-03-10 13:12:35,778 - INFO - OPENED SHORT at 2049.5 | Stop loss: 2059.7630321428574 | Take profit: 2018.7342017857143 +2025-03-10 13:12:35,816 - INFO - CLOSED short at 2058.3 | PnL: -0.43% | $-0.90 +2025-03-10 13:12:35,816 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9929678571432 | Take profit: 2089.1977982142857 +2025-03-10 13:12:35,834 - INFO - CLOSED long at 2056.85 | PnL: -0.07% | $-0.29 +2025-03-10 13:12:35,864 - INFO - OPENED SHORT at 2057.11 | Stop loss: 2067.411082142857 | Take profit: 2026.2300517857145 +2025-03-10 13:12:35,896 - INFO - CLOSED short at 2057.89 | PnL: -0.04% | $-0.23 +2025-03-10 13:12:35,927 - INFO - OPENED SHORT at 2062.83 | Stop loss: 2073.159682142857 | Take profit: 2031.8642517857143 +2025-03-10 13:12:36,011 - INFO - CLOSED short at 2062.43 | PnL: 0.02% | $-0.14 +2025-03-10 13:12:36,012 - INFO - OPENED LONG at 2062.43 | Stop loss: 2052.1023178571427 | Take profit: 2093.389748214285 +2025-03-10 13:12:36,037 - INFO - CLOSED long at 2062.55 | PnL: 0.01% | $-0.16 +2025-03-10 13:12:36,037 - INFO - OPENED SHORT at 2062.55 | Stop loss: 2072.878282142857 | Take profit: 2031.5884517857146 +2025-03-10 13:12:36,053 - INFO - CLOSED short at 2065.12 | PnL: -0.12% | $-0.38 +2025-03-10 13:12:36,053 - INFO - OPENED LONG at 2065.12 | Stop loss: 2054.778867857143 | Take profit: 2096.120098214286 +2025-03-10 13:12:36,111 - INFO - CLOSED long at 2066.59 | PnL: 0.07% | $-0.05 +2025-03-10 13:12:36,111 - INFO - OPENED SHORT at 2066.59 | Stop loss: 2076.9384821428575 | Take profit: 2035.5678517857145 +2025-03-10 13:12:36,128 - INFO - CLOSED short at 2064.08 | PnL: 0.12% | $0.04 +2025-03-10 13:12:36,147 - INFO - OPENED LONG at 2061.21 | Stop loss: 2050.888417857143 | Take profit: 2092.1514482142857 +2025-03-10 13:12:36,185 - INFO - CLOSED long at 2060.7 | PnL: -0.02% | $-0.21 +2025-03-10 13:12:36,239 - INFO - OPENED SHORT at 2065.72 | Stop loss: 2076.064132142857 | Take profit: 2034.7109017857142 +2025-03-10 13:12:36,402 - INFO - CLOSED short at 2073.49 | PnL: -0.38% | $-0.79 +2025-03-10 13:12:36,420 - INFO - OPENED LONG at 2074.05 | Stop loss: 2063.6642178571433 | Take profit: 2105.184048214286 +2025-03-10 13:12:36,453 - INFO - CLOSED long at 2071.89 | PnL: -0.10% | $-0.34 +2025-03-10 13:12:36,523 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2088.0135821428576 | Take profit: 2046.4225517857144 +2025-03-10 13:12:36,569 - INFO - CLOSED short at 2090.49 | PnL: -0.62% | $-1.18 +2025-03-10 13:12:36,569 - INFO - OPENED LONG at 2090.49 | Stop loss: 2080.0220178571426 | Take profit: 2121.8706482142857 +2025-03-10 13:12:36,593 - INFO - CLOSED long at 2103.02 | PnL: 0.60% | $0.81 +2025-03-10 13:12:36,706 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.0220321428574 | Take profit: 2109.1572017857147 +2025-03-10 13:12:36,731 - INFO - CLOSED short at 2142.68 | PnL: -0.06% | $-0.27 +2025-03-10 13:12:36,763 - INFO - OPENED SHORT at 2134.78 | Stop loss: 2145.4694321428574 | Take profit: 2102.7350017857143 +2025-03-10 13:12:36,783 - INFO - CLOSED short at 2126.99 | PnL: 0.36% | $0.43 +2025-03-10 13:12:36,821 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.031017857143 | Take profit: 2160.643648214286 +2025-03-10 13:12:36,870 - INFO - CLOSED long at 2117.24 | PnL: -0.54% | $-1.04 +2025-03-10 13:12:36,870 - INFO - OPENED SHORT at 2117.24 | Stop loss: 2127.841732142857 | Take profit: 2085.458101785714 +2025-03-10 13:12:36,893 - INFO - CLOSED short at 2119.93 | PnL: -0.13% | $-0.37 +2025-03-10 13:12:36,893 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3148178571428 | Take profit: 2151.752248214286 +2025-03-10 13:12:37,011 - INFO - STOP LOSS hit for long at 2109.3148178571428 | PnL: -0.50% | $-0.96 +2025-03-10 13:12:37,032 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1685321428567 | Take profit: 2078.917701785714 +2025-03-10 13:12:37,051 - INFO - CLOSED short at 2109.05 | PnL: 0.07% | $-0.04 +2025-03-10 13:12:37,161 - INFO - OPENED SHORT at 2120.81 | Stop loss: 2131.429582142857 | Take profit: 2088.9745517857145 +2025-03-10 13:12:37,354 - INFO - CLOSED short at 2099.53 | PnL: 1.00% | $1.43 +2025-03-10 13:12:37,354 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.016817857143 | Take profit: 2131.046248214286 +2025-03-10 13:12:37,478 - INFO - CLOSED long at 2104.83 | PnL: 0.25% | $0.25 +2025-03-10 13:12:37,478 - INFO - OPENED SHORT at 2104.83 | Stop loss: 2115.369682142857 | Take profit: 2073.234251785714 +2025-03-10 13:12:37,499 - INFO - CLOSED short at 2106.39 | PnL: -0.07% | $-0.28 +2025-03-10 13:12:37,499 - INFO - OPENED LONG at 2106.39 | Stop loss: 2095.842517857143 | Take profit: 2138.0091482142857 +2025-03-10 13:12:37,528 - INFO - CLOSED long at 2103.86 | PnL: -0.12% | $-0.36 +2025-03-10 13:12:37,554 - INFO - OPENED LONG at 2104.68 | Stop loss: 2094.141067857143 | Take profit: 2136.2734982142856 +2025-03-10 13:12:37,572 - INFO - CLOSED long at 2101.51 | PnL: -0.15% | $-0.40 +2025-03-10 13:12:37,630 - INFO - OPENED SHORT at 2098.39 | Stop loss: 2108.8974821428574 | Take profit: 2066.890851785714 +2025-03-10 13:12:37,646 - INFO - CLOSED short at 2095.29 | PnL: 0.15% | $0.08 +2025-03-10 13:12:37,687 - INFO - OPENED LONG at 2093.33 | Stop loss: 2082.8478178571427 | Take profit: 2124.7532482142856 +2025-03-10 13:12:37,797 - INFO - CLOSED long at 2083.28 | PnL: -0.48% | $-0.93 +2025-03-10 13:12:37,820 - INFO - OPENED SHORT at 2088.44 | Stop loss: 2098.8977321428574 | Take profit: 2057.090101785714 +2025-03-10 13:12:37,897 - INFO - CLOSED short at 2080.38 | PnL: 0.39% | $0.45 +2025-03-10 13:12:37,897 - INFO - OPENED LONG at 2080.38 | Stop loss: 2069.962567857143 | Take profit: 2111.6089982142857 +2025-03-10 13:12:37,926 - INFO - CLOSED long at 2081.25 | PnL: 0.04% | $-0.09 +2025-03-10 13:12:37,926 - INFO - OPENED SHORT at 2081.25 | Stop loss: 2091.6717821428574 | Take profit: 2050.0079517857143 +2025-03-10 13:12:37,945 - INFO - CLOSED short at 2083.41 | PnL: -0.10% | $-0.32 +2025-03-10 13:12:37,962 - INFO - OPENED SHORT at 2085.09 | Stop loss: 2095.5309821428573 | Take profit: 2053.7903517857144 +2025-03-10 13:12:37,980 - INFO - CLOSED short at 2083.59 | PnL: 0.07% | $-0.04 +2025-03-10 13:12:37,980 - INFO - OPENED LONG at 2083.59 | Stop loss: 2073.1565178571427 | Take profit: 2114.867148214286 +2025-03-10 13:12:38,012 - INFO - CLOSED long at 2085.8 | PnL: 0.11% | $0.01 +2025-03-10 13:12:38,068 - INFO - OPENED SHORT at 2085.85 | Stop loss: 2096.294782142857 | Take profit: 2054.5389517857143 +2025-03-10 13:12:38,085 - INFO - CLOSED short at 2088.66 | PnL: -0.13% | $-0.37 +2025-03-10 13:12:38,085 - INFO - OPENED LONG at 2088.66 | Stop loss: 2078.2011678571425 | Take profit: 2120.0131982142857 +2025-03-10 13:12:38,144 - INFO - CLOSED long at 2089.96 | PnL: 0.06% | $-0.06 +2025-03-10 13:12:38,144 - INFO - OPENED SHORT at 2089.96 | Stop loss: 2100.425332142857 | Take profit: 2058.5873017857143 +2025-03-10 13:12:38,180 - INFO - CLOSED short at 2087.47 | PnL: 0.12% | $0.03 +2025-03-10 13:12:38,182 - INFO - OPENED LONG at 2087.47 | Stop loss: 2077.0171178571427 | Take profit: 2118.805348214286 +2025-03-10 13:12:38,199 - INFO - CLOSED long at 2087.78 | PnL: 0.01% | $-0.13 +2025-03-10 13:12:38,217 - INFO - OPENED SHORT at 2086.81 | Stop loss: 2097.259582142857 | Take profit: 2055.4845517857143 +2025-03-10 13:12:38,235 - INFO - CLOSED short at 2089.79 | PnL: -0.14% | $-0.38 +2025-03-10 13:12:38,236 - INFO - OPENED LONG at 2089.79 | Stop loss: 2079.325517857143 | Take profit: 2121.1601482142855 +2025-03-10 13:12:38,294 - INFO - CLOSED long at 2091.05 | PnL: 0.06% | $-0.06 +2025-03-10 13:12:38,294 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.520782142857 | Take profit: 2059.6609517857146 +2025-03-10 13:12:38,311 - INFO - CLOSED short at 2091.05 | PnL: 0.00% | $-0.16 +2025-03-10 13:12:38,400 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.163732142857 | Take profit: 2070.092101785714 +2025-03-10 13:12:38,445 - INFO - CLOSED short at 2099.89 | PnL: 0.08% | $-0.03 +2025-03-10 13:12:38,466 - INFO - OPENED SHORT at 2100.89 | Stop loss: 2111.409982142857 | Take profit: 2069.353351785714 +2025-03-10 13:12:38,595 - INFO - CLOSED short at 2105.83 | PnL: -0.24% | $-0.52 +2025-03-10 13:12:38,637 - INFO - OPENED SHORT at 2105.2 | Stop loss: 2115.741532142857 | Take profit: 2073.598701785714 +2025-03-10 13:12:38,696 - INFO - Trade Analysis: Win Rate=26.1% in uptrends, 0.0% in downtrends | Avg Win=$0.22, Avg Loss=$-0.27 +2025-03-10 13:12:38,697 - INFO - Episode 4: Reward=-98.30, Balance=$77.97, Win Rate=22.2%, Trades=135, Episode PnL=$-16.98, Total PnL=$-126.12, Max Drawdown=22.3%, Pred Accuracy=99.1% +2025-03-10 13:12:38,697 - ERROR - Error in episode 4: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:12:38,698 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:12:38,719 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:12:38,925 - INFO - OPENED LONG at 2047.2 | Stop loss: 2036.9484678571428 | Take profit: 2077.931298214286 +2025-03-10 13:12:38,989 - INFO - CLOSED long at 2048.13 | PnL: 0.05% | $-0.11 +2025-03-10 13:12:38,989 - INFO - OPENED SHORT at 2048.13 | Stop loss: 2058.3861821428573 | Take profit: 2017.3847517857146 +2025-03-10 13:12:39,006 - INFO - CLOSED short at 2047.59 | PnL: 0.03% | $-0.15 +2025-03-10 13:12:39,027 - INFO - OPENED LONG at 2048.51 | Stop loss: 2038.251917857143 | Take profit: 2079.260948214286 +2025-03-10 13:12:39,046 - INFO - CLOSED long at 2050.0 | PnL: 0.07% | $-0.05 +2025-03-10 13:12:39,047 - INFO - OPENED SHORT at 2050.0 | Stop loss: 2060.2655321428574 | Take profit: 2019.2267017857143 +2025-03-10 13:12:39,161 - INFO - CLOSED short at 2052.3 | PnL: -0.11% | $-0.42 +2025-03-10 13:12:39,161 - INFO - OPENED LONG at 2052.3 | Stop loss: 2042.022967857143 | Take profit: 2083.107798214286 +2025-03-10 13:12:39,179 - INFO - CLOSED long at 2055.69 | PnL: 0.17% | $0.13 +2025-03-10 13:12:39,200 - INFO - OPENED LONG at 2057.01 | Stop loss: 2046.709417857143 | Take profit: 2087.8884482142857 +2025-03-10 13:12:39,219 - INFO - CLOSED long at 2056.89 | PnL: -0.01% | $-0.21 +2025-03-10 13:12:39,219 - INFO - OPENED SHORT at 2056.89 | Stop loss: 2067.189982142857 | Take profit: 2026.0133517857143 +2025-03-10 13:12:39,237 - INFO - CLOSED short at 2058.39 | PnL: -0.07% | $-0.34 +2025-03-10 13:12:39,260 - INFO - OPENED LONG at 2060.13 | Stop loss: 2049.813817857143 | Take profit: 2091.055248214286 +2025-03-10 13:12:39,278 - INFO - CLOSED long at 2059.7 | PnL: -0.02% | $-0.24 +2025-03-10 13:12:39,278 - INFO - OPENED SHORT at 2059.7 | Stop loss: 2070.014032142857 | Take profit: 2028.781201785714 +2025-03-10 13:12:39,334 - INFO - CLOSED short at 2064.61 | PnL: -0.24% | $-0.66 +2025-03-10 13:12:39,334 - INFO - OPENED LONG at 2064.61 | Stop loss: 2054.2714178571428 | Take profit: 2095.602448214286 +2025-03-10 13:12:39,344 - INFO - CLOSED long at 2063.59 | PnL: -0.05% | $-0.29 +2025-03-10 13:12:39,344 - INFO - OPENED SHORT at 2063.59 | Stop loss: 2073.923482142857 | Take profit: 2032.6128517857144 +2025-03-10 13:12:39,389 - INFO - CLOSED short at 2064.69 | PnL: -0.05% | $-0.30 +2025-03-10 13:12:39,545 - INFO - OPENED SHORT at 2057.8 | Stop loss: 2068.1045321428574 | Take profit: 2026.9097017857146 +2025-03-10 13:12:39,594 - INFO - CLOSED short at 2058.11 | PnL: -0.02% | $-0.22 +2025-03-10 13:12:39,637 - INFO - OPENED SHORT at 2061.18 | Stop loss: 2071.501432142857 | Take profit: 2030.239001785714 +2025-03-10 13:12:39,653 - INFO - CLOSED short at 2064.32 | PnL: -0.15% | $-0.49 +2025-03-10 13:12:39,653 - INFO - OPENED LONG at 2064.32 | Stop loss: 2053.982867857143 | Take profit: 2095.308098214286 +2025-03-10 13:12:39,732 - INFO - CLOSED long at 2068.29 | PnL: 0.19% | $0.18 +2025-03-10 13:12:39,732 - INFO - OPENED SHORT at 2068.29 | Stop loss: 2078.646982142857 | Take profit: 2037.2423517857142 +2025-03-10 13:12:39,749 - INFO - CLOSED short at 2067.89 | PnL: 0.02% | $-0.16 +2025-03-10 13:12:39,803 - INFO - OPENED SHORT at 2069.6 | Stop loss: 2079.963532142857 | Take profit: 2038.5327017857142 +2025-03-10 13:12:39,972 - INFO - CLOSED short at 2072.91 | PnL: -0.16% | $-0.50 +2025-03-10 13:12:40,058 - INFO - OPENED SHORT at 2069.37 | Stop loss: 2079.732382142857 | Take profit: 2038.3061517857143 +2025-03-10 13:12:40,176 - INFO - CLOSED short at 2070.28 | PnL: -0.04% | $-0.27 +2025-03-10 13:12:40,176 - INFO - OPENED LONG at 2070.28 | Stop loss: 2059.9130678571432 | Take profit: 2101.357498214286 +2025-03-10 13:12:40,234 - INFO - CLOSED long at 2067.2 | PnL: -0.15% | $-0.47 +2025-03-10 13:12:40,244 - INFO - OPENED SHORT at 2070.36 | Stop loss: 2080.7273321428574 | Take profit: 2039.2813017857145 +2025-03-10 13:12:40,269 - INFO - CLOSED short at 2068.9 | PnL: 0.07% | $-0.06 +2025-03-10 13:12:40,270 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.539967857143 | Take profit: 2099.956798214286 +2025-03-10 13:12:40,304 - INFO - CLOSED long at 2069.34 | PnL: 0.02% | $-0.15 +2025-03-10 13:12:40,380 - INFO - OPENED SHORT at 2067.51 | Stop loss: 2077.8630821428574 | Take profit: 2036.4740517857144 +2025-03-10 13:12:40,498 - INFO - CLOSED short at 2066.29 | PnL: 0.06% | $-0.08 +2025-03-10 13:12:40,498 - INFO - OPENED LONG at 2066.29 | Stop loss: 2055.943017857143 | Take profit: 2097.3076482142856 +2025-03-10 13:12:40,672 - INFO - CLOSED long at 2069.7 | PnL: 0.17% | $0.12 +2025-03-10 13:12:40,712 - INFO - OPENED LONG at 2069.96 | Stop loss: 2059.594667857143 | Take profit: 2101.0326982142856 +2025-03-10 13:12:40,747 - INFO - CLOSED long at 2071.39 | PnL: 0.07% | $-0.06 +2025-03-10 13:12:40,763 - INFO - OPENED SHORT at 2071.36 | Stop loss: 2081.7323321428576 | Take profit: 2040.2663017857144 +2025-03-10 13:12:40,798 - INFO - CLOSED short at 2073.11 | PnL: -0.08% | $-0.35 +2025-03-10 13:12:40,802 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.728917857143 | Take profit: 2104.2299482142857 +2025-03-10 13:12:40,820 - INFO - CLOSED long at 2072.7 | PnL: -0.02% | $-0.23 +2025-03-10 13:12:40,821 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.0790321428567 | Take profit: 2041.586201785714 +2025-03-10 13:12:40,875 - INFO - CLOSED short at 2074.29 | PnL: -0.08% | $-0.33 +2025-03-10 13:12:40,876 - INFO - OPENED LONG at 2074.29 | Stop loss: 2063.903017857143 | Take profit: 2105.4276482142855 +2025-03-10 13:12:40,958 - INFO - CLOSED long at 2070.4 | PnL: -0.19% | $-0.54 +2025-03-10 13:12:41,139 - INFO - OPENED SHORT at 2065.49 | Stop loss: 2075.832982142857 | Take profit: 2034.4843517857141 +2025-03-10 13:12:41,160 - INFO - CLOSED short at 2063.61 | PnL: 0.09% | $-0.02 +2025-03-10 13:12:41,177 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.918167857143 | Take profit: 2096.262198214286 +2025-03-10 13:12:41,230 - INFO - CLOSED long at 2068.8 | PnL: 0.17% | $0.13 +2025-03-10 13:12:41,306 - INFO - OPENED LONG at 2067.59 | Stop loss: 2057.236517857143 | Take profit: 2098.6271482142856 +2025-03-10 13:12:41,338 - INFO - CLOSED long at 2069.2 | PnL: 0.08% | $-0.04 +2025-03-10 13:12:41,344 - INFO - OPENED SHORT at 2069.2 | Stop loss: 2079.561532142857 | Take profit: 2038.1387017857141 +2025-03-10 13:12:41,405 - INFO - CLOSED short at 2071.59 | PnL: -0.12% | $-0.40 +2025-03-10 13:12:41,493 - INFO - OPENED SHORT at 2068.69 | Stop loss: 2079.0489821428573 | Take profit: 2037.6363517857144 +2025-03-10 13:12:41,659 - INFO - CLOSED short at 2064.47 | PnL: 0.20% | $0.19 +2025-03-10 13:12:41,849 - INFO - OPENED SHORT at 2065.83 | Stop loss: 2076.174682142857 | Take profit: 2034.8192517857142 +2025-03-10 13:12:41,866 - INFO - CLOSED short at 2066.15 | PnL: -0.02% | $-0.21 +2025-03-10 13:12:41,866 - INFO - OPENED LONG at 2066.15 | Stop loss: 2055.803717857143 | Take profit: 2097.1655482142855 +2025-03-10 13:12:41,930 - INFO - CLOSED long at 2061.78 | PnL: -0.21% | $-0.58 +2025-03-10 13:12:41,930 - INFO - OPENED SHORT at 2061.78 | Stop loss: 2072.104432142857 | Take profit: 2030.8300017857146 +2025-03-10 13:12:42,029 - INFO - CLOSED short at 2066.24 | PnL: -0.22% | $-0.58 +2025-03-10 13:12:42,060 - INFO - OPENED LONG at 2067.1 | Stop loss: 2056.748967857143 | Take profit: 2098.1297982142855 +2025-03-10 13:12:42,090 - INFO - CLOSED long at 2065.54 | PnL: -0.08% | $-0.32 +2025-03-10 13:12:42,090 - INFO - OPENED SHORT at 2065.54 | Stop loss: 2075.883232142857 | Take profit: 2034.5336017857142 +2025-03-10 13:12:42,118 - INFO - CLOSED short at 2066.09 | PnL: -0.03% | $-0.23 +2025-03-10 13:12:42,118 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.744017857143 | Take profit: 2097.1046482142856 +2025-03-10 13:12:42,196 - INFO - CLOSED long at 2062.71 | PnL: -0.16% | $-0.48 +2025-03-10 13:12:42,235 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.5600178571426 | Take profit: 2093.8566482142855 +2025-03-10 13:12:42,272 - INFO - CLOSED long at 2063.5 | PnL: 0.03% | $-0.13 +2025-03-10 13:12:42,312 - INFO - OPENED LONG at 2060.9 | Stop loss: 2050.579967857143 | Take profit: 2091.836798214286 +2025-03-10 13:12:42,346 - INFO - CLOSED long at 2058.89 | PnL: -0.10% | $-0.36 +2025-03-10 13:12:42,394 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.992917857143 | Take profit: 2091.237948214286 +2025-03-10 13:12:42,430 - INFO - CLOSED long at 2064.7 | PnL: 0.21% | $0.20 +2025-03-10 13:12:42,431 - INFO - OPENED SHORT at 2064.7 | Stop loss: 2075.039032142857 | Take profit: 2033.706201785714 +2025-03-10 13:12:42,460 - INFO - CLOSED short at 2062.61 | PnL: 0.10% | $0.00 +2025-03-10 13:12:42,524 - INFO - OPENED SHORT at 2060.3 | Stop loss: 2070.617032142857 | Take profit: 2029.3722017857144 +2025-03-10 13:12:42,631 - INFO - CLOSED short at 2065.36 | PnL: -0.25% | $-0.62 +2025-03-10 13:12:42,673 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.0575178571426 | Take profit: 2094.3641482142853 +2025-03-10 13:12:42,977 - INFO - CLOSED long at 2059.96 | PnL: -0.17% | $-0.48 +2025-03-10 13:12:42,977 - INFO - OPENED SHORT at 2059.96 | Stop loss: 2070.275332142857 | Take profit: 2029.0373017857144 +2025-03-10 13:12:43,003 - INFO - CLOSED short at 2059.46 | PnL: 0.02% | $-0.14 +2025-03-10 13:12:43,003 - INFO - OPENED LONG at 2059.46 | Stop loss: 2049.147167857143 | Take profit: 2090.375198214286 +2025-03-10 13:12:43,070 - INFO - CLOSED long at 2056.28 | PnL: -0.15% | $-0.45 +2025-03-10 13:12:43,152 - INFO - OPENED SHORT at 2058.15 | Stop loss: 2068.4562821428576 | Take profit: 2027.2544517857145 +2025-03-10 13:12:43,214 - INFO - CLOSED short at 2061.5 | PnL: -0.16% | $-0.47 +2025-03-10 13:12:43,215 - INFO - OPENED LONG at 2061.5 | Stop loss: 2051.1769678571427 | Take profit: 2092.445798214286 +2025-03-10 13:12:43,290 - INFO - CLOSED long at 2062.69 | PnL: 0.06% | $-0.07 +2025-03-10 13:12:43,290 - INFO - OPENED SHORT at 2062.69 | Stop loss: 2073.018982142857 | Take profit: 2031.7263517857143 +2025-03-10 13:12:43,321 - INFO - CLOSED short at 2063.4 | PnL: -0.03% | $-0.24 +2025-03-10 13:12:43,321 - INFO - OPENED LONG at 2063.4 | Stop loss: 2053.0674678571427 | Take profit: 2094.374298214286 +2025-03-10 13:12:43,380 - INFO - CLOSED long at 2066.01 | PnL: 0.13% | $0.05 +2025-03-10 13:12:43,450 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.982817857143 | Take profit: 2097.348248214286 +2025-03-10 13:12:43,487 - INFO - CLOSED long at 2066.79 | PnL: 0.02% | $-0.14 +2025-03-10 13:12:43,527 - INFO - OPENED LONG at 2067.01 | Stop loss: 2056.659417857143 | Take profit: 2098.038448214286 +2025-03-10 13:12:43,595 - INFO - CLOSED long at 2074.3 | PnL: 0.35% | $0.44 +2025-03-10 13:12:43,630 - INFO - OPENED LONG at 2075.01 | Stop loss: 2064.619417857143 | Take profit: 2106.158448214286 +2025-03-10 13:12:43,687 - INFO - CLOSED long at 2071.04 | PnL: -0.19% | $-0.51 +2025-03-10 13:12:43,687 - INFO - OPENED SHORT at 2071.04 | Stop loss: 2081.4107321428573 | Take profit: 2039.9511017857142 +2025-03-10 13:12:43,725 - INFO - CLOSED short at 2070.01 | PnL: 0.05% | $-0.09 +2025-03-10 13:12:43,726 - INFO - OPENED LONG at 2070.01 | Stop loss: 2059.6444178571433 | Take profit: 2101.083448214286 +2025-03-10 13:12:43,789 - INFO - CLOSED long at 2073.23 | PnL: 0.16% | $0.10 +2025-03-10 13:12:43,823 - INFO - OPENED LONG at 2070.0 | Stop loss: 2059.634467857143 | Take profit: 2101.0732982142854 +2025-03-10 13:12:43,990 - INFO - CLOSED long at 2069.87 | PnL: -0.01% | $-0.19 +2025-03-10 13:12:43,990 - INFO - OPENED SHORT at 2069.87 | Stop loss: 2080.234882142857 | Take profit: 2038.7986517857141 +2025-03-10 13:12:44,006 - INFO - CLOSED short at 2067.33 | PnL: 0.12% | $0.04 +2025-03-10 13:12:44,007 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.977817857143 | Take profit: 2098.3632482142857 +2025-03-10 13:12:44,134 - INFO - CLOSED long at 2063.97 | PnL: -0.16% | $-0.46 +2025-03-10 13:12:44,222 - INFO - OPENED LONG at 2064.4 | Stop loss: 2054.062467857143 | Take profit: 2095.3892982142856 +2025-03-10 13:12:44,261 - INFO - CLOSED long at 2065.5 | PnL: 0.05% | $-0.08 +2025-03-10 13:12:44,261 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.843032142857 | Take profit: 2034.4942017857143 +2025-03-10 13:12:44,293 - INFO - CLOSED short at 2065.29 | PnL: 0.01% | $-0.16 +2025-03-10 13:12:44,313 - INFO - OPENED LONG at 2065.31 | Stop loss: 2054.9679178571428 | Take profit: 2096.3129482142854 +2025-03-10 13:12:44,490 - INFO - CLOSED long at 2070.7 | PnL: 0.26% | $0.28 +2025-03-10 13:12:44,490 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.069032142857 | Take profit: 2039.6162017857139 +2025-03-10 13:12:44,510 - INFO - CLOSED short at 2070.8 | PnL: -0.00% | $-0.18 +2025-03-10 13:12:44,510 - INFO - OPENED LONG at 2070.8 | Stop loss: 2060.430467857143 | Take profit: 2101.885298214286 +2025-03-10 13:12:44,632 - INFO - CLOSED long at 2068.19 | PnL: -0.13% | $-0.39 +2025-03-10 13:12:44,653 - INFO - OPENED LONG at 2068.67 | Stop loss: 2058.311117857143 | Take profit: 2099.723348214286 +2025-03-10 13:12:44,671 - INFO - CLOSED long at 2070.67 | PnL: 0.10% | $-0.01 +2025-03-10 13:12:44,731 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.982617857143 | Take profit: 2105.508848214286 +2025-03-10 13:12:44,771 - INFO - CLOSED long at 2074.35 | PnL: -0.00% | $-0.17 +2025-03-10 13:12:44,772 - INFO - OPENED SHORT at 2074.35 | Stop loss: 2084.7372821428567 | Take profit: 2043.2114517857142 +2025-03-10 13:12:44,849 - INFO - CLOSED short at 2075.29 | PnL: -0.05% | $-0.25 +2025-03-10 13:12:44,849 - INFO - OPENED LONG at 2075.29 | Stop loss: 2064.898017857143 | Take profit: 2106.442648214286 +2025-03-10 13:12:45,058 - INFO - CLOSED long at 2067.9 | PnL: -0.36% | $-0.79 +2025-03-10 13:12:45,076 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.052467857143 | Take profit: 2097.4192982142854 +2025-03-10 13:12:45,129 - INFO - CLOSED long at 2065.45 | PnL: -0.05% | $-0.25 +2025-03-10 13:12:45,151 - INFO - OPENED LONG at 2068.1 | Stop loss: 2057.7439678571427 | Take profit: 2099.1447982142854 +2025-03-10 13:12:45,231 - INFO - CLOSED long at 2067.19 | PnL: -0.04% | $-0.25 +2025-03-10 13:12:45,232 - INFO - OPENED SHORT at 2067.19 | Stop loss: 2077.541482142857 | Take profit: 2036.1588517857142 +2025-03-10 13:12:45,262 - INFO - CLOSED short at 2065.5 | PnL: 0.08% | $-0.03 +2025-03-10 13:12:45,262 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.1569678571427 | Take profit: 2096.5057982142857 +2025-03-10 13:12:45,297 - INFO - CLOSED long at 2065.7 | PnL: 0.01% | $-0.15 +2025-03-10 13:12:45,327 - INFO - OPENED SHORT at 2065.8 | Stop loss: 2076.1445321428573 | Take profit: 2034.7897017857144 +2025-03-10 13:12:45,437 - INFO - CLOSED short at 2062.34 | PnL: 0.17% | $0.11 +2025-03-10 13:12:45,439 - INFO - OPENED LONG at 2062.34 | Stop loss: 2052.012767857143 | Take profit: 2093.2983982142855 +2025-03-10 13:12:45,455 - INFO - CLOSED long at 2063.98 | PnL: 0.08% | $-0.03 +2025-03-10 13:12:45,456 - INFO - OPENED SHORT at 2063.98 | Stop loss: 2074.315432142857 | Take profit: 2032.9970017857142 +2025-03-10 13:12:45,475 - INFO - CLOSED short at 2066.1 | PnL: -0.10% | $-0.34 +2025-03-10 13:12:45,475 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.753967857143 | Take profit: 2097.1147982142857 +2025-03-10 13:12:45,551 - INFO - CLOSED long at 2066.33 | PnL: 0.01% | $-0.15 +2025-03-10 13:12:45,610 - INFO - OPENED SHORT at 2060.2 | Stop loss: 2070.5165321428567 | Take profit: 2029.2737017857141 +2025-03-10 13:12:45,661 - INFO - CLOSED short at 2058.09 | PnL: 0.10% | $0.00 +2025-03-10 13:12:45,753 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.729417857143 | Take profit: 2083.828448214286 +2025-03-10 13:12:45,786 - INFO - CLOSED long at 2049.21 | PnL: -0.19% | $-0.48 +2025-03-10 13:12:45,786 - INFO - OPENED SHORT at 2049.21 | Stop loss: 2059.471582142857 | Take profit: 2018.4485517857142 +2025-03-10 13:12:45,857 - INFO - CLOSED short at 2058.3 | PnL: -0.44% | $-0.91 +2025-03-10 13:12:45,874 - INFO - OPENED LONG at 2056.85 | Stop loss: 2046.5502178571428 | Take profit: 2087.7260482142856 +2025-03-10 13:12:45,892 - INFO - CLOSED long at 2057.11 | PnL: 0.01% | $-0.14 +2025-03-10 13:12:45,892 - INFO - OPENED SHORT at 2057.11 | Stop loss: 2067.411082142857 | Take profit: 2026.2300517857145 +2025-03-10 13:12:45,912 - INFO - CLOSED short at 2057.89 | PnL: -0.04% | $-0.23 +2025-03-10 13:12:45,912 - INFO - OPENED LONG at 2057.89 | Stop loss: 2047.5850178571427 | Take profit: 2088.7816482142853 +2025-03-10 13:12:46,022 - INFO - CLOSED long at 2065.12 | PnL: 0.35% | $0.41 +2025-03-10 13:12:46,132 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.744067857143 | Take profit: 2095.0644982142853 +2025-03-10 13:12:46,187 - INFO - CLOSED long at 2059.9 | PnL: -0.20% | $-0.50 +2025-03-10 13:12:46,353 - INFO - OPENED LONG at 2069.81 | Stop loss: 2059.4454178571427 | Take profit: 2100.8804482142855 +2025-03-10 13:12:46,368 - INFO - CLOSED long at 2070.41 | PnL: 0.03% | $-0.12 +2025-03-10 13:12:46,370 - INFO - OPENED SHORT at 2070.41 | Stop loss: 2080.777582142857 | Take profit: 2039.3305517857143 +2025-03-10 13:12:46,422 - INFO - CLOSED short at 2072.99 | PnL: -0.12% | $-0.37 +2025-03-10 13:12:46,422 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6095178571427 | Take profit: 2104.1081482142854 +2025-03-10 13:12:46,531 - INFO - CLOSED long at 2076.08 | PnL: 0.15% | $0.08 +2025-03-10 13:12:46,592 - INFO - OPENED LONG at 2085.56 | Stop loss: 2075.116667857143 | Take profit: 2116.866698214286 +2025-03-10 13:12:46,641 - INFO - CLOSED long at 2103.02 | PnL: 0.84% | $1.21 +2025-03-10 13:12:46,641 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.550632142857 | Take profit: 2071.451401785714 +2025-03-10 13:12:46,661 - INFO - CLOSED short at 2130.7 | PnL: -1.32% | $-2.36 +2025-03-10 13:12:46,661 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.0309678571425 | Take profit: 2162.6837982142856 +2025-03-10 13:12:46,678 - INFO - CLOSED long at 2139.54 | PnL: 0.41% | $0.51 +2025-03-10 13:12:46,678 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.253232142857 | Take profit: 2107.4236017857143 +2025-03-10 13:12:46,699 - INFO - CLOSED short at 2131.78 | PnL: 0.36% | $0.43 +2025-03-10 13:12:46,700 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.105567857143 | Take profit: 2163.7799982142856 +2025-03-10 13:12:46,716 - INFO - CLOSED long at 2133.95 | PnL: 0.10% | $0.00 +2025-03-10 13:12:46,739 - INFO - OPENED LONG at 2137.59 | Stop loss: 2126.8865178571427 | Take profit: 2169.677148214286 +2025-03-10 13:12:46,775 - INFO - CLOSED long at 2141.3 | PnL: 0.17% | $0.12 +2025-03-10 13:12:46,794 - INFO - OPENED SHORT at 2142.68 | Stop loss: 2153.4089321428573 | Take profit: 2110.516501785714 +2025-03-10 13:12:46,816 - INFO - CLOSED short at 2140.01 | PnL: 0.12% | $0.04 +2025-03-10 13:12:46,817 - INFO - OPENED LONG at 2140.01 | Stop loss: 2129.294417857143 | Take profit: 2172.133448214286 +2025-03-10 13:12:46,875 - INFO - STOP LOSS hit for long at 2129.294417857143 | PnL: -0.50% | $-0.99 +2025-03-10 13:12:46,910 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.647967857143 | Take profit: 2159.2327982142856 +2025-03-10 13:12:46,969 - INFO - CLOSED long at 2121.09 | PnL: -0.29% | $-0.63 +2025-03-10 13:12:46,969 - INFO - OPENED SHORT at 2121.09 | Stop loss: 2131.710982142857 | Take profit: 2089.2503517857144 +2025-03-10 13:12:47,033 - INFO - CLOSED short at 2117.24 | PnL: 0.18% | $0.13 +2025-03-10 13:12:47,034 - INFO - OPENED LONG at 2117.24 | Stop loss: 2106.6382678571426 | Take profit: 2149.0218982142856 +2025-03-10 13:12:47,069 - INFO - CLOSED long at 2121.4 | PnL: 0.20% | $0.16 +2025-03-10 13:12:47,070 - INFO - OPENED SHORT at 2121.4 | Stop loss: 2132.022532142857 | Take profit: 2089.5557017857145 +2025-03-10 13:12:47,087 - INFO - CLOSED short at 2118.52 | PnL: 0.14% | $0.06 +2025-03-10 13:12:47,087 - INFO - OPENED LONG at 2118.52 | Stop loss: 2107.9118678571426 | Take profit: 2150.321098214286 +2025-03-10 13:12:47,141 - INFO - CLOSED long at 2115.28 | PnL: -0.15% | $-0.41 +2025-03-10 13:12:47,158 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.8773178571428 | Take profit: 2139.0647482142854 +2025-03-10 13:12:47,228 - INFO - CLOSED long at 2112.95 | PnL: 0.26% | $0.26 +2025-03-10 13:12:47,228 - INFO - OPENED SHORT at 2112.95 | Stop loss: 2123.5302821428572 | Take profit: 2081.232451785714 +2025-03-10 13:12:47,345 - INFO - CLOSED short at 2120.81 | PnL: -0.37% | $-0.76 +2025-03-10 13:12:47,399 - INFO - OPENED SHORT at 2114.8 | Stop loss: 2125.389532142857 | Take profit: 2083.0547017857143 +2025-03-10 13:12:47,446 - INFO - CLOSED short at 2108.71 | PnL: 0.29% | $0.30 +2025-03-10 13:12:47,481 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.504167857143 | Take profit: 2139.7041982142855 +2025-03-10 13:12:47,543 - INFO - CLOSED long at 2090.0 | PnL: -0.86% | $-1.53 +2025-03-10 13:12:47,543 - INFO - OPENED SHORT at 2090.0 | Stop loss: 2100.4655321428572 | Take profit: 2058.6267017857144 +2025-03-10 13:12:47,560 - INFO - CLOSED short at 2099.53 | PnL: -0.46% | $-0.87 +2025-03-10 13:12:47,560 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.016817857143 | Take profit: 2131.046248214286 +2025-03-10 13:12:47,642 - INFO - CLOSED long at 2099.25 | PnL: -0.01% | $-0.18 +2025-03-10 13:12:47,708 - INFO - OPENED LONG at 2100.69 | Stop loss: 2090.171017857143 | Take profit: 2132.2236482142857 +2025-03-10 13:12:47,770 - INFO - CLOSED long at 2106.39 | PnL: 0.27% | $0.27 +2025-03-10 13:12:47,770 - INFO - OPENED SHORT at 2106.39 | Stop loss: 2116.937482142857 | Take profit: 2074.770851785714 +2025-03-10 13:12:47,801 - INFO - CLOSED short at 2100.74 | PnL: 0.27% | $0.26 +2025-03-10 13:12:47,801 - INFO - OPENED LONG at 2100.74 | Stop loss: 2090.2207678571426 | Take profit: 2132.2743982142856 +2025-03-10 13:12:47,849 - INFO - CLOSED long at 2104.68 | PnL: 0.19% | $0.14 +2025-03-10 13:12:47,849 - INFO - OPENED SHORT at 2104.68 | Stop loss: 2115.218932142857 | Take profit: 2073.086501785714 +2025-03-10 13:12:47,919 - INFO - CLOSED short at 2098.39 | PnL: 0.30% | $0.31 +2025-03-10 13:12:47,920 - INFO - OPENED LONG at 2098.39 | Stop loss: 2087.882517857143 | Take profit: 2129.889148214286 +2025-03-10 13:12:47,935 - INFO - CLOSED long at 2095.29 | PnL: -0.15% | $-0.39 +2025-03-10 13:12:47,952 - INFO - OPENED LONG at 2093.46 | Stop loss: 2082.977167857143 | Take profit: 2124.8851982142855 +2025-03-10 13:12:48,118 - INFO - CLOSED long at 2083.28 | PnL: -0.49% | $-0.92 +2025-03-10 13:12:48,189 - INFO - OPENED LONG at 2083.97 | Stop loss: 2073.5346178571426 | Take profit: 2115.2528482142857 +2025-03-10 13:12:48,246 - INFO - CLOSED long at 2082.44 | PnL: -0.07% | $-0.27 +2025-03-10 13:12:48,246 - INFO - OPENED SHORT at 2082.44 | Stop loss: 2092.867732142857 | Take profit: 2051.180101785714 +2025-03-10 13:12:48,262 - INFO - CLOSED short at 2081.49 | PnL: 0.05% | $-0.08 +2025-03-10 13:12:48,283 - INFO - OPENED LONG at 2080.38 | Stop loss: 2069.962567857143 | Take profit: 2111.6089982142857 +2025-03-10 13:12:48,433 - INFO - CLOSED long at 2085.83 | PnL: 0.26% | $0.25 +2025-03-10 13:12:48,498 - INFO - OPENED SHORT at 2088.66 | Stop loss: 2099.1188321428567 | Take profit: 2057.306801785714 +2025-03-10 13:12:48,624 - INFO - CLOSED short at 2087.0 | PnL: 0.08% | $-0.03 +2025-03-10 13:12:48,660 - INFO - OPENED SHORT at 2087.78 | Stop loss: 2098.2344321428573 | Take profit: 2056.4400017857147 +2025-03-10 13:12:48,680 - INFO - CLOSED short at 2086.81 | PnL: 0.05% | $-0.08 +2025-03-10 13:12:48,680 - INFO - OPENED LONG at 2086.81 | Stop loss: 2076.3604178571427 | Take profit: 2118.1354482142856 +2025-03-10 13:12:48,738 - INFO - CLOSED long at 2089.2 | PnL: 0.11% | $0.02 +2025-03-10 13:12:48,759 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.520782142857 | Take profit: 2059.6609517857146 +2025-03-10 13:12:48,781 - INFO - CLOSED short at 2091.05 | PnL: 0.00% | $-0.15 +2025-03-10 13:12:49,022 - INFO - OPENED LONG at 2100.89 | Stop loss: 2090.370017857143 | Take profit: 2132.4266482142853 +2025-03-10 13:12:49,058 - INFO - CLOSED long at 2106.15 | PnL: 0.25% | $0.23 +2025-03-10 13:12:49,058 - INFO - OPENED SHORT at 2106.15 | Stop loss: 2116.6962821428574 | Take profit: 2074.5344517857143 +2025-03-10 13:12:49,108 - INFO - CLOSED short at 2103.81 | PnL: 0.11% | $0.02 +2025-03-10 13:12:49,145 - INFO - OPENED SHORT at 2101.5 | Stop loss: 2112.023032142857 | Take profit: 2069.9542017857143 +2025-03-10 13:12:49,165 - INFO - CLOSED short at 2105.83 | PnL: -0.21% | $-0.47 +2025-03-10 13:12:49,165 - INFO - OPENED LONG at 2105.83 | Stop loss: 2095.2853178571427 | Take profit: 2137.4407482142856 +2025-03-10 13:12:49,261 - INFO - Trade Analysis: Win Rate=24.2% in uptrends, 0.0% in downtrends | Avg Win=$0.21, Avg Loss=$-0.35 +2025-03-10 13:12:49,261 - INFO - Episode 5: Reward=-69.09, Balance=$77.21, Win Rate=29.2%, Trades=120, Episode PnL=$-19.19, Total PnL=$-148.91, Max Drawdown=22.6%, Pred Accuracy=99.1% +2025-03-10 13:12:49,261 - ERROR - Error in episode 5: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:12:49,261 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:12:49,286 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:12:49,578 - INFO - OPENED SHORT at 2047.4 | Stop loss: 2057.652532142857 | Take profit: 2016.6657017857144 +2025-03-10 13:12:49,596 - INFO - CLOSED short at 2047.2 | PnL: 0.01% | $-0.18 +2025-03-10 13:12:49,649 - INFO - OPENED LONG at 2045.79 | Stop loss: 2035.5455178571428 | Take profit: 2076.5001482142857 +2025-03-10 13:12:49,857 - INFO - CLOSED long at 2053.26 | PnL: 0.37% | $0.53 +2025-03-10 13:12:49,897 - INFO - OPENED SHORT at 2051.89 | Stop loss: 2062.164982142857 | Take profit: 2021.0883517857142 +2025-03-10 13:12:49,978 - INFO - CLOSED short at 2055.69 | PnL: -0.19% | $-0.57 +2025-03-10 13:12:50,076 - INFO - OPENED SHORT at 2060.13 | Stop loss: 2070.446182142857 | Take profit: 2029.2047517857145 +2025-03-10 13:12:50,096 - INFO - CLOSED short at 2059.7 | PnL: 0.02% | $-0.16 +2025-03-10 13:12:50,096 - INFO - OPENED LONG at 2059.7 | Stop loss: 2049.3859678571425 | Take profit: 2090.6187982142856 +2025-03-10 13:12:50,120 - INFO - CLOSED long at 2061.49 | PnL: 0.09% | $-0.03 +2025-03-10 13:12:50,201 - INFO - OPENED LONG at 2061.61 | Stop loss: 2051.286417857143 | Take profit: 2092.557448214286 +2025-03-10 13:12:50,280 - INFO - CLOSED long at 2060.99 | PnL: -0.03% | $-0.26 +2025-03-10 13:12:50,434 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.627082142857 | Take profit: 2029.3820517857143 +2025-03-10 13:12:50,472 - INFO - CLOSED short at 2057.8 | PnL: 0.12% | $0.04 +2025-03-10 13:12:50,472 - INFO - OPENED LONG at 2057.8 | Stop loss: 2047.495467857143 | Take profit: 2088.6902982142856 +2025-03-10 13:12:50,511 - INFO - CLOSED long at 2057.94 | PnL: 0.01% | $-0.18 +2025-03-10 13:12:50,531 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.803917857143 | Take profit: 2089.004948214286 +2025-03-10 13:12:50,547 - INFO - CLOSED long at 2061.79 | PnL: 0.18% | $0.16 +2025-03-10 13:12:50,547 - INFO - OPENED SHORT at 2061.79 | Stop loss: 2072.1144821428575 | Take profit: 2030.8398517857142 +2025-03-10 13:12:50,565 - INFO - CLOSED short at 2061.18 | PnL: 0.03% | $-0.14 +2025-03-10 13:12:50,565 - INFO - OPENED LONG at 2061.18 | Stop loss: 2050.8585678571426 | Take profit: 2092.1209982142855 +2025-03-10 13:12:50,602 - INFO - CLOSED long at 2065.86 | PnL: 0.23% | $0.25 +2025-03-10 13:12:50,621 - INFO - OPENED LONG at 2070.58 | Stop loss: 2060.2115678571427 | Take profit: 2101.6619982142856 +2025-03-10 13:12:50,672 - INFO - CLOSED long at 2068.29 | PnL: -0.11% | $-0.42 +2025-03-10 13:12:50,673 - INFO - OPENED SHORT at 2068.29 | Stop loss: 2078.646982142857 | Take profit: 2037.2423517857142 +2025-03-10 13:12:50,835 - INFO - CLOSED short at 2068.99 | PnL: -0.03% | $-0.26 +2025-03-10 13:12:50,852 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.255032142857 | Take profit: 2036.8582017857143 +2025-03-10 13:12:50,878 - INFO - CLOSED short at 2067.69 | PnL: 0.01% | $-0.18 +2025-03-10 13:12:50,878 - INFO - OPENED LONG at 2067.69 | Stop loss: 2057.336017857143 | Take profit: 2098.7286482142854 +2025-03-10 13:12:50,916 - INFO - CLOSED long at 2071.44 | PnL: 0.18% | $0.16 +2025-03-10 13:12:50,918 - INFO - OPENED SHORT at 2071.44 | Stop loss: 2081.8127321428574 | Take profit: 2040.3451017857144 +2025-03-10 13:12:50,990 - INFO - CLOSED short at 2072.33 | PnL: -0.04% | $-0.28 +2025-03-10 13:12:51,028 - INFO - OPENED LONG at 2071.41 | Stop loss: 2061.037417857143 | Take profit: 2102.5044482142857 +2025-03-10 13:12:51,171 - INFO - CLOSED long at 2070.28 | PnL: -0.05% | $-0.30 +2025-03-10 13:12:51,171 - INFO - OPENED SHORT at 2070.28 | Stop loss: 2080.646932142857 | Take profit: 2039.2025017857145 +2025-03-10 13:12:51,252 - INFO - CLOSED short at 2070.36 | PnL: -0.00% | $-0.20 +2025-03-10 13:12:51,254 - INFO - OPENED LONG at 2070.36 | Stop loss: 2059.992667857143 | Take profit: 2101.438698214286 +2025-03-10 13:12:51,307 - INFO - CLOSED long at 2069.34 | PnL: -0.05% | $-0.29 +2025-03-10 13:12:51,307 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.702232142857 | Take profit: 2038.2766017857143 +2025-03-10 13:12:51,344 - INFO - CLOSED short at 2068.8 | PnL: 0.03% | $-0.14 +2025-03-10 13:12:51,344 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.440467857143 | Take profit: 2099.855298214286 +2025-03-10 13:12:51,469 - INFO - CLOSED long at 2066.19 | PnL: -0.13% | $-0.44 +2025-03-10 13:12:51,530 - INFO - OPENED LONG at 2065.08 | Stop loss: 2054.739067857143 | Take profit: 2096.0794982142856 +2025-03-10 13:12:51,557 - INFO - CLOSED long at 2066.18 | PnL: 0.05% | $-0.09 +2025-03-10 13:12:51,557 - INFO - OPENED SHORT at 2066.18 | Stop loss: 2076.526432142857 | Take profit: 2035.1640017857142 +2025-03-10 13:12:51,675 - INFO - CLOSED short at 2069.7 | PnL: -0.17% | $-0.52 +2025-03-10 13:12:51,675 - INFO - OPENED LONG at 2069.7 | Stop loss: 2059.335967857143 | Take profit: 2100.7687982142857 +2025-03-10 13:12:51,721 - INFO - CLOSED long at 2069.96 | PnL: 0.01% | $-0.17 +2025-03-10 13:12:51,722 - INFO - OPENED SHORT at 2069.96 | Stop loss: 2080.3253321428574 | Take profit: 2038.8873017857145 +2025-03-10 13:12:51,801 - INFO - CLOSED short at 2072.75 | PnL: -0.13% | $-0.45 +2025-03-10 13:12:51,802 - INFO - OPENED LONG at 2072.75 | Stop loss: 2062.3707178571426 | Take profit: 2103.864548214286 +2025-03-10 13:12:51,841 - INFO - CLOSED long at 2072.7 | PnL: -0.00% | $-0.19 +2025-03-10 13:12:51,842 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.0790321428567 | Take profit: 2041.586201785714 +2025-03-10 13:12:51,878 - INFO - CLOSED short at 2072.15 | PnL: 0.03% | $-0.14 +2025-03-10 13:12:51,878 - INFO - OPENED LONG at 2072.15 | Stop loss: 2061.773717857143 | Take profit: 2103.2555482142857 +2025-03-10 13:12:52,092 - INFO - CLOSED long at 2068.32 | PnL: -0.18% | $-0.54 +2025-03-10 13:12:52,092 - INFO - OPENED SHORT at 2068.32 | Stop loss: 2078.6771321428573 | Take profit: 2037.2719017857144 +2025-03-10 13:12:52,269 - INFO - CLOSED short at 2068.58 | PnL: -0.01% | $-0.21 +2025-03-10 13:12:52,299 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.440467857143 | Take profit: 2099.855298214286 +2025-03-10 13:12:52,328 - INFO - CLOSED long at 2069.34 | PnL: 0.03% | $-0.14 +2025-03-10 13:12:52,418 - INFO - OPENED LONG at 2069.2 | Stop loss: 2058.8384678571424 | Take profit: 2100.2612982142855 +2025-03-10 13:12:52,524 - INFO - CLOSED long at 2068.5 | PnL: -0.03% | $-0.25 +2025-03-10 13:12:52,541 - INFO - OPENED LONG at 2068.69 | Stop loss: 2058.331017857143 | Take profit: 2099.7436482142857 +2025-03-10 13:12:52,614 - INFO - CLOSED long at 2066.4 | PnL: -0.11% | $-0.39 +2025-03-10 13:12:52,614 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.7475321428574 | Take profit: 2035.3807017857143 +2025-03-10 13:12:52,631 - INFO - CLOSED short at 2066.1 | PnL: 0.01% | $-0.16 +2025-03-10 13:12:52,663 - INFO - OPENED SHORT at 2065.28 | Stop loss: 2075.621932142857 | Take profit: 2034.2775017857145 +2025-03-10 13:12:52,953 - INFO - CLOSED short at 2062.65 | PnL: 0.13% | $0.05 +2025-03-10 13:12:52,953 - INFO - OPENED LONG at 2062.65 | Stop loss: 2052.321217857143 | Take profit: 2093.6130482142858 +2025-03-10 13:12:52,969 - INFO - CLOSED long at 2061.78 | PnL: -0.04% | $-0.27 +2025-03-10 13:12:52,986 - INFO - OPENED SHORT at 2059.59 | Stop loss: 2069.9034821428572 | Take profit: 2028.6728517857146 +2025-03-10 13:12:53,031 - INFO - CLOSED short at 2063.59 | PnL: -0.19% | $-0.55 +2025-03-10 13:12:53,031 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.256517857143 | Take profit: 2094.567148214286 +2025-03-10 13:12:53,119 - INFO - CLOSED long at 2067.1 | PnL: 0.17% | $0.13 +2025-03-10 13:12:53,208 - INFO - OPENED LONG at 2064.45 | Stop loss: 2054.1122178571427 | Take profit: 2095.4400482142855 +2025-03-10 13:12:53,254 - INFO - CLOSED long at 2062.71 | PnL: -0.08% | $-0.34 +2025-03-10 13:12:53,356 - INFO - OPENED LONG at 2060.65 | Stop loss: 2050.3312178571427 | Take profit: 2091.583048214286 +2025-03-10 13:12:53,395 - INFO - CLOSED long at 2059.3 | PnL: -0.07% | $-0.31 +2025-03-10 13:12:53,411 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.992917857143 | Take profit: 2091.237948214286 +2025-03-10 13:12:53,434 - INFO - CLOSED long at 2061.8 | PnL: 0.07% | $-0.05 +2025-03-10 13:12:53,435 - INFO - OPENED SHORT at 2061.8 | Stop loss: 2072.1245321428573 | Take profit: 2030.8497017857144 +2025-03-10 13:12:53,470 - INFO - CLOSED short at 2064.7 | PnL: -0.14% | $-0.44 +2025-03-10 13:12:53,470 - INFO - OPENED LONG at 2064.7 | Stop loss: 2054.360967857143 | Take profit: 2095.6937982142854 +2025-03-10 13:12:53,499 - INFO - CLOSED long at 2062.61 | PnL: -0.10% | $-0.37 +2025-03-10 13:12:53,499 - INFO - OPENED SHORT at 2062.61 | Stop loss: 2072.9385821428573 | Take profit: 2031.6475517857143 +2025-03-10 13:12:53,559 - INFO - CLOSED short at 2060.3 | PnL: 0.11% | $0.02 +2025-03-10 13:12:53,559 - INFO - OPENED LONG at 2060.3 | Stop loss: 2049.982967857143 | Take profit: 2091.227798214286 +2025-03-10 13:12:53,696 - INFO - CLOSED long at 2063.39 | PnL: 0.15% | $0.09 +2025-03-10 13:12:53,696 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.722482142857 | Take profit: 2032.415851785714 +2025-03-10 13:12:53,737 - INFO - CLOSED short at 2065.89 | PnL: -0.12% | $-0.40 +2025-03-10 13:12:53,738 - INFO - OPENED LONG at 2065.89 | Stop loss: 2055.5450178571427 | Take profit: 2096.9016482142856 +2025-03-10 13:12:53,775 - INFO - CLOSED long at 2063.0 | PnL: -0.14% | $-0.44 +2025-03-10 13:12:53,812 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.5650178571427 | Take profit: 2092.841648214285 +2025-03-10 13:12:54,047 - INFO - CLOSED long at 2059.46 | PnL: -0.12% | $-0.39 +2025-03-10 13:12:54,083 - INFO - OPENED LONG at 2058.28 | Stop loss: 2047.9730678571432 | Take profit: 2089.177498214286 +2025-03-10 13:12:54,121 - INFO - CLOSED long at 2055.6 | PnL: -0.13% | $-0.41 +2025-03-10 13:12:54,121 - INFO - OPENED SHORT at 2055.6 | Stop loss: 2065.893532142857 | Take profit: 2024.7427017857142 +2025-03-10 13:12:54,141 - INFO - CLOSED short at 2054.89 | PnL: 0.03% | $-0.12 +2025-03-10 13:12:54,141 - INFO - OPENED LONG at 2054.89 | Stop loss: 2044.6000178571428 | Take profit: 2085.736648214285 +2025-03-10 13:12:54,192 - INFO - CLOSED long at 2058.15 | PnL: 0.16% | $0.10 +2025-03-10 13:12:54,313 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.6220321428573 | Take profit: 2030.3572017857146 +2025-03-10 13:12:54,342 - INFO - CLOSED short at 2062.69 | PnL: -0.07% | $-0.30 +2025-03-10 13:12:54,342 - INFO - OPENED LONG at 2062.69 | Stop loss: 2052.361017857143 | Take profit: 2093.6536482142856 +2025-03-10 13:12:54,403 - INFO - CLOSED long at 2066.36 | PnL: 0.18% | $0.14 +2025-03-10 13:12:54,403 - INFO - OPENED SHORT at 2066.36 | Stop loss: 2076.7073321428575 | Take profit: 2035.3413017857144 +2025-03-10 13:12:54,450 - INFO - CLOSED short at 2063.9 | PnL: 0.12% | $0.03 +2025-03-10 13:12:54,450 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.564967857143 | Take profit: 2094.881798214286 +2025-03-10 13:12:54,470 - INFO - CLOSED long at 2064.49 | PnL: 0.03% | $-0.13 +2025-03-10 13:12:54,488 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.982817857143 | Take profit: 2097.348248214286 +2025-03-10 13:12:54,542 - INFO - CLOSED long at 2067.33 | PnL: 0.05% | $-0.09 +2025-03-10 13:12:54,569 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.346017857143 | Take profit: 2096.6986482142856 +2025-03-10 13:12:54,627 - INFO - CLOSED long at 2074.3 | PnL: 0.42% | $0.56 +2025-03-10 13:12:54,661 - INFO - OPENED LONG at 2078.01 | Stop loss: 2067.604417857143 | Take profit: 2109.203448214286 +2025-03-10 13:12:54,808 - INFO - CLOSED long at 2071.6 | PnL: -0.31% | $-0.73 +2025-03-10 13:12:54,851 - INFO - OPENED LONG at 2070.0 | Stop loss: 2059.634467857143 | Take profit: 2101.0732982142854 +2025-03-10 13:12:54,896 - INFO - CLOSED long at 2068.39 | PnL: -0.08% | $-0.32 +2025-03-10 13:12:54,937 - INFO - OPENED LONG at 2069.03 | Stop loss: 2058.669317857143 | Take profit: 2100.088748214286 +2025-03-10 13:12:54,973 - INFO - CLOSED long at 2068.79 | PnL: -0.01% | $-0.20 +2025-03-10 13:12:54,974 - INFO - OPENED SHORT at 2068.79 | Stop loss: 2079.149482142857 | Take profit: 2037.7348517857142 +2025-03-10 13:12:54,992 - INFO - CLOSED short at 2072.99 | PnL: -0.20% | $-0.54 +2025-03-10 13:12:54,992 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6095178571427 | Take profit: 2104.1081482142854 +2025-03-10 13:12:55,073 - INFO - CLOSED long at 2067.33 | PnL: -0.27% | $-0.66 +2025-03-10 13:12:55,103 - INFO - OPENED SHORT at 2066.38 | Stop loss: 2076.7274321428577 | Take profit: 2035.3610017857145 +2025-03-10 13:12:55,136 - INFO - CLOSED short at 2065.7 | PnL: 0.03% | $-0.12 +2025-03-10 13:12:55,164 - INFO - OPENED SHORT at 2065.66 | Stop loss: 2076.003832142857 | Take profit: 2034.651801785714 +2025-03-10 13:12:55,201 - INFO - CLOSED short at 2063.95 | PnL: 0.08% | $-0.03 +2025-03-10 13:12:55,202 - INFO - OPENED LONG at 2063.95 | Stop loss: 2053.6147178571428 | Take profit: 2094.932548214286 +2025-03-10 13:12:55,248 - INFO - CLOSED long at 2064.5 | PnL: 0.03% | $-0.13 +2025-03-10 13:12:55,271 - INFO - OPENED LONG at 2065.3 | Stop loss: 2054.957967857143 | Take profit: 2096.3027982142858 +2025-03-10 13:12:55,290 - INFO - CLOSED long at 2064.4 | PnL: -0.04% | $-0.25 +2025-03-10 13:12:55,292 - INFO - OPENED SHORT at 2064.4 | Stop loss: 2074.7375321428576 | Take profit: 2033.4107017857145 +2025-03-10 13:12:55,309 - INFO - CLOSED short at 2064.31 | PnL: 0.00% | $-0.17 +2025-03-10 13:12:55,331 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.1569678571427 | Take profit: 2096.5057982142857 +2025-03-10 13:12:55,349 - INFO - CLOSED long at 2067.53 | PnL: 0.10% | $-0.00 +2025-03-10 13:12:55,349 - INFO - OPENED SHORT at 2067.53 | Stop loss: 2077.883182142857 | Take profit: 2036.4937517857145 +2025-03-10 13:12:55,369 - INFO - CLOSED short at 2065.29 | PnL: 0.11% | $0.01 +2025-03-10 13:12:55,369 - INFO - OPENED LONG at 2065.29 | Stop loss: 2054.948017857143 | Take profit: 2096.2926482142857 +2025-03-10 13:12:55,392 - INFO - CLOSED long at 2065.31 | PnL: 0.00% | $-0.17 +2025-03-10 13:12:55,392 - INFO - OPENED SHORT at 2065.31 | Stop loss: 2075.652082142857 | Take profit: 2034.3070517857143 +2025-03-10 13:12:55,430 - INFO - CLOSED short at 2066.5 | PnL: -0.06% | $-0.27 +2025-03-10 13:12:55,430 - INFO - OPENED LONG at 2066.5 | Stop loss: 2056.1519678571426 | Take profit: 2097.5207982142856 +2025-03-10 13:12:55,555 - INFO - CLOSED long at 2071.35 | PnL: 0.23% | $0.23 +2025-03-10 13:12:55,555 - INFO - OPENED SHORT at 2071.35 | Stop loss: 2081.722282142857 | Take profit: 2040.2564517857143 +2025-03-10 13:12:55,589 - INFO - CLOSED short at 2070.9 | PnL: 0.02% | $-0.14 +2025-03-10 13:12:55,590 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.529967857143 | Take profit: 2101.986798214286 +2025-03-10 13:12:55,683 - INFO - CLOSED long at 2070.35 | PnL: -0.03% | $-0.22 +2025-03-10 13:12:55,705 - INFO - OPENED LONG at 2070.61 | Stop loss: 2060.241417857143 | Take profit: 2101.692448214286 +2025-03-10 13:12:55,760 - INFO - CLOSED long at 2068.67 | PnL: -0.09% | $-0.33 +2025-03-10 13:12:55,817 - INFO - OPENED LONG at 2071.61 | Stop loss: 2061.236417857143 | Take profit: 2102.7074482142857 +2025-03-10 13:12:55,903 - INFO - CLOSED long at 2074.35 | PnL: 0.13% | $0.06 +2025-03-10 13:12:55,933 - INFO - OPENED LONG at 2073.27 | Stop loss: 2062.888117857143 | Take profit: 2104.3923482142854 +2025-03-10 13:12:55,961 - INFO - CLOSED long at 2073.99 | PnL: 0.03% | $-0.11 +2025-03-10 13:12:55,961 - INFO - OPENED SHORT at 2073.99 | Stop loss: 2084.375482142857 | Take profit: 2042.856851785714 +2025-03-10 13:12:56,027 - INFO - CLOSED short at 2075.29 | PnL: -0.06% | $-0.28 +2025-03-10 13:12:56,027 - INFO - OPENED LONG at 2075.29 | Stop loss: 2064.898017857143 | Take profit: 2106.442648214286 +2025-03-10 13:12:56,046 - INFO - CLOSED long at 2076.9 | PnL: 0.08% | $-0.04 +2025-03-10 13:12:56,068 - INFO - OPENED LONG at 2075.61 | Stop loss: 2065.216417857143 | Take profit: 2106.7674482142857 +2025-03-10 13:12:56,105 - INFO - CLOSED long at 2072.09 | PnL: -0.17% | $-0.46 +2025-03-10 13:12:56,164 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.350532142857 | Take profit: 2035.9717017857142 +2025-03-10 13:12:56,200 - INFO - CLOSED short at 2066.4 | PnL: 0.03% | $-0.12 +2025-03-10 13:12:56,200 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.052467857143 | Take profit: 2097.4192982142854 +2025-03-10 13:12:56,435 - INFO - CLOSED long at 2065.5 | PnL: -0.04% | $-0.24 +2025-03-10 13:12:56,510 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.744017857143 | Take profit: 2097.1046482142856 +2025-03-10 13:12:56,634 - INFO - CLOSED long at 2064.5 | PnL: -0.08% | $-0.30 +2025-03-10 13:12:56,634 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.838032142857 | Take profit: 2033.5092017857144 +2025-03-10 13:12:56,668 - INFO - CLOSED short at 2066.33 | PnL: -0.09% | $-0.32 +2025-03-10 13:12:56,668 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.982817857143 | Take profit: 2097.348248214286 +2025-03-10 13:12:56,871 - INFO - STOP LOSS hit for long at 2055.982817857143 | PnL: -0.50% | $-1.01 +2025-03-10 13:12:56,907 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.2369678571429 | Take profit: 2080.2657982142855 +2025-03-10 13:12:56,976 - INFO - CLOSED long at 2057.11 | PnL: 0.37% | $0.45 +2025-03-10 13:12:56,995 - INFO - OPENED LONG at 2057.89 | Stop loss: 2047.5850178571427 | Take profit: 2088.7816482142853 +2025-03-10 13:12:57,061 - INFO - CLOSED long at 2065.1 | PnL: 0.35% | $0.42 +2025-03-10 13:12:57,063 - INFO - OPENED SHORT at 2065.1 | Stop loss: 2075.4410321428572 | Take profit: 2034.1002017857143 +2025-03-10 13:12:57,091 - INFO - CLOSED short at 2062.43 | PnL: 0.13% | $0.05 +2025-03-10 13:12:57,208 - INFO - OPENED LONG at 2067.49 | Stop loss: 2057.137017857143 | Take profit: 2098.5256482142854 +2025-03-10 13:12:57,322 - INFO - CLOSED long at 2061.84 | PnL: -0.27% | $-0.63 +2025-03-10 13:12:57,322 - INFO - OPENED SHORT at 2061.84 | Stop loss: 2072.1647321428572 | Take profit: 2030.8891017857145 +2025-03-10 13:12:57,338 - INFO - CLOSED short at 2062.54 | PnL: -0.03% | $-0.22 +2025-03-10 13:12:57,357 - INFO - OPENED SHORT at 2065.72 | Stop loss: 2076.064132142857 | Take profit: 2034.7109017857142 +2025-03-10 13:12:57,372 - INFO - CLOSED short at 2070.31 | PnL: -0.22% | $-0.53 +2025-03-10 13:12:57,433 - INFO - OPENED SHORT at 2069.81 | Stop loss: 2080.1745821428567 | Take profit: 2038.7395517857142 +2025-03-10 13:12:57,466 - INFO - CLOSED short at 2070.41 | PnL: -0.03% | $-0.21 +2025-03-10 13:12:57,467 - INFO - OPENED LONG at 2070.41 | Stop loss: 2060.042417857143 | Take profit: 2101.489448214286 +2025-03-10 13:12:57,614 - INFO - CLOSED long at 2071.8 | PnL: 0.07% | $-0.05 +2025-03-10 13:12:57,639 - INFO - OPENED LONG at 2074.9 | Stop loss: 2064.509967857143 | Take profit: 2106.046798214286 +2025-03-10 13:12:57,657 - INFO - CLOSED long at 2076.08 | PnL: 0.06% | $-0.07 +2025-03-10 13:12:57,658 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.475932142857 | Take profit: 2044.9155017857142 +2025-03-10 13:12:57,716 - INFO - CLOSED short at 2090.49 | PnL: -0.69% | $-1.30 +2025-03-10 13:12:57,716 - INFO - OPENED LONG at 2090.49 | Stop loss: 2080.0220178571426 | Take profit: 2121.8706482142857 +2025-03-10 13:12:57,751 - INFO - TAKE PROFIT hit for long at 2121.8706482142857 | PnL: 1.50% | $2.27 +2025-03-10 13:12:57,793 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.105567857143 | Take profit: 2163.7799982142856 +2025-03-10 13:12:57,827 - INFO - CLOSED long at 2137.59 | PnL: 0.27% | $0.29 +2025-03-10 13:12:57,827 - INFO - OPENED SHORT at 2137.59 | Stop loss: 2148.2934821428576 | Take profit: 2105.5028517857145 +2025-03-10 13:12:57,857 - INFO - CLOSED short at 2141.41 | PnL: -0.18% | $-0.46 +2025-03-10 13:12:57,886 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.0220321428574 | Take profit: 2109.1572017857147 +2025-03-10 13:12:58,001 - INFO - CLOSED short at 2126.99 | PnL: 0.67% | $0.94 +2025-03-10 13:12:58,033 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.647967857143 | Take profit: 2159.2327982142856 +2025-03-10 13:12:58,085 - INFO - CLOSED long at 2120.15 | PnL: -0.34% | $-0.73 +2025-03-10 13:12:58,106 - INFO - OPENED LONG at 2117.24 | Stop loss: 2106.6382678571426 | Take profit: 2149.0218982142856 +2025-03-10 13:12:58,178 - INFO - CLOSED long at 2119.14 | PnL: 0.09% | $-0.02 +2025-03-10 13:12:58,178 - INFO - OPENED SHORT at 2119.14 | Stop loss: 2129.751232142857 | Take profit: 2087.329601785714 +2025-03-10 13:12:58,212 - INFO - CLOSED short at 2115.28 | PnL: 0.18% | $0.14 +2025-03-10 13:12:58,213 - INFO - OPENED LONG at 2115.28 | Stop loss: 2104.688067857143 | Take profit: 2147.0324982142856 +2025-03-10 13:12:58,286 - INFO - CLOSED long at 2109.05 | PnL: -0.29% | $-0.66 +2025-03-10 13:12:58,286 - INFO - OPENED SHORT at 2109.05 | Stop loss: 2119.6107821428577 | Take profit: 2077.3909517857146 +2025-03-10 13:12:58,385 - INFO - CLOSED short at 2112.46 | PnL: -0.16% | $-0.43 +2025-03-10 13:12:58,387 - INFO - OPENED LONG at 2112.46 | Stop loss: 2101.882167857143 | Take profit: 2144.1701982142854 +2025-03-10 13:12:58,456 - INFO - CLOSED long at 2120.81 | PnL: 0.40% | $0.49 +2025-03-10 13:12:58,469 - INFO - OPENED SHORT at 2116.48 | Stop loss: 2127.077932142857 | Take profit: 2084.7095017857146 +2025-03-10 13:12:58,508 - INFO - CLOSED short at 2110.9 | PnL: 0.26% | $0.27 +2025-03-10 13:12:58,546 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.9420178571427 | Take profit: 2138.1106482142854 +2025-03-10 13:12:58,564 - INFO - CLOSED long at 2108.06 | PnL: 0.07% | $-0.04 +2025-03-10 13:12:58,565 - INFO - OPENED SHORT at 2108.06 | Stop loss: 2118.615832142857 | Take profit: 2076.4158017857144 +2025-03-10 13:12:58,583 - INFO - CLOSED short at 2103.33 | PnL: 0.22% | $0.21 +2025-03-10 13:12:58,602 - INFO - OPENED LONG at 2100.5 | Stop loss: 2089.981967857143 | Take profit: 2132.0307982142854 +2025-03-10 13:12:58,653 - INFO - CLOSED long at 2099.53 | PnL: -0.05% | $-0.24 +2025-03-10 13:12:58,653 - INFO - OPENED SHORT at 2099.53 | Stop loss: 2110.0431821428574 | Take profit: 2068.0137517857142 +2025-03-10 13:12:58,673 - INFO - CLOSED short at 2098.1 | PnL: 0.07% | $-0.05 +2025-03-10 13:12:58,673 - INFO - OPENED LONG at 2098.1 | Stop loss: 2087.5939678571426 | Take profit: 2129.5947982142857 +2025-03-10 13:12:58,898 - INFO - CLOSED long at 2103.86 | PnL: 0.27% | $0.29 +2025-03-10 13:12:58,970 - INFO - OPENED LONG at 2100.02 | Stop loss: 2089.504367857143 | Take profit: 2131.543598214286 +2025-03-10 13:12:59,010 - INFO - CLOSED long at 2095.29 | PnL: -0.23% | $-0.54 +2025-03-10 13:12:59,010 - INFO - OPENED SHORT at 2095.29 | Stop loss: 2105.7819821428575 | Take profit: 2063.8373517857144 +2025-03-10 13:12:59,122 - INFO - CLOSED short at 2091.1 | PnL: 0.20% | $0.17 +2025-03-10 13:12:59,153 - INFO - OPENED SHORT at 2094.72 | Stop loss: 2105.209132142857 | Take profit: 2063.275901785714 +2025-03-10 13:12:59,183 - INFO - CLOSED short at 2094.08 | PnL: 0.03% | $-0.11 +2025-03-10 13:12:59,183 - INFO - OPENED LONG at 2094.08 | Stop loss: 2083.594067857143 | Take profit: 2125.5144982142856 +2025-03-10 13:12:59,241 - INFO - STOP LOSS hit for long at 2083.594067857143 | PnL: -0.50% | $-0.99 +2025-03-10 13:12:59,329 - INFO - OPENED SHORT at 2081.49 | Stop loss: 2091.912982142857 | Take profit: 2050.244351785714 +2025-03-10 13:12:59,349 - INFO - CLOSED short at 2080.38 | PnL: 0.05% | $-0.08 +2025-03-10 13:12:59,350 - INFO - OPENED LONG at 2080.38 | Stop loss: 2069.962567857143 | Take profit: 2111.6089982142857 +2025-03-10 13:12:59,619 - INFO - CLOSED long at 2088.32 | PnL: 0.38% | $0.46 +2025-03-10 13:12:59,662 - INFO - OPENED LONG at 2089.96 | Stop loss: 2079.494667857143 | Take profit: 2121.3326982142858 +2025-03-10 13:12:59,695 - INFO - CLOSED long at 2087.47 | PnL: -0.12% | $-0.36 +2025-03-10 13:12:59,701 - INFO - OPENED SHORT at 2087.47 | Stop loss: 2097.922882142857 | Take profit: 2056.134651785714 +2025-03-10 13:12:59,718 - INFO - CLOSED short at 2087.78 | PnL: -0.01% | $-0.19 +2025-03-10 13:12:59,736 - INFO - OPENED SHORT at 2086.81 | Stop loss: 2097.259582142857 | Take profit: 2055.4845517857143 +2025-03-10 13:12:59,793 - INFO - CLOSED short at 2089.2 | PnL: -0.11% | $-0.35 +2025-03-10 13:12:59,793 - INFO - OPENED LONG at 2089.2 | Stop loss: 2078.738467857143 | Take profit: 2120.5612982142857 +2025-03-10 13:12:59,843 - INFO - CLOSED long at 2091.05 | PnL: 0.09% | $-0.02 +2025-03-10 13:12:59,894 - INFO - OPENED LONG at 2094.7 | Stop loss: 2084.210967857143 | Take profit: 2126.1437982142857 +2025-03-10 13:12:59,964 - INFO - CLOSED long at 2099.99 | PnL: 0.25% | $0.25 +2025-03-10 13:12:59,998 - INFO - OPENED LONG at 2101.64 | Stop loss: 2091.1162678571427 | Take profit: 2133.1878982142857 +2025-03-10 13:13:00,061 - INFO - CLOSED long at 2099.89 | PnL: -0.08% | $-0.30 +2025-03-10 13:13:00,061 - INFO - OPENED SHORT at 2099.89 | Stop loss: 2110.404982142857 | Take profit: 2068.368351785714 +2025-03-10 13:13:00,081 - INFO - CLOSED short at 2100.89 | PnL: -0.05% | $-0.24 +2025-03-10 13:13:00,081 - INFO - OPENED LONG at 2100.89 | Stop loss: 2090.370017857143 | Take profit: 2132.4266482142853 +2025-03-10 13:13:00,119 - INFO - CLOSED long at 2106.15 | PnL: 0.25% | $0.24 +2025-03-10 13:13:00,120 - INFO - OPENED SHORT at 2106.15 | Stop loss: 2116.6962821428574 | Take profit: 2074.5344517857143 +2025-03-10 13:13:00,152 - INFO - CLOSED short at 2104.93 | PnL: 0.06% | $-0.07 +2025-03-10 13:13:00,152 - INFO - OPENED LONG at 2104.93 | Stop loss: 2094.3898178571426 | Take profit: 2136.527248214286 +2025-03-10 13:13:00,172 - INFO - CLOSED long at 2103.81 | PnL: -0.05% | $-0.25 +2025-03-10 13:13:00,236 - INFO - OPENED LONG at 2105.83 | Stop loss: 2095.2853178571427 | Take profit: 2137.4407482142856 +2025-03-10 13:13:00,377 - INFO - Trade Analysis: Win Rate=18.4% in uptrends, 0.0% in downtrends | Avg Win=$0.31, Avg Loss=$-0.30 +2025-03-10 13:13:00,377 - INFO - Episode 6: Reward=-70.68, Balance=$81.30, Win Rate=24.6%, Trades=126, Episode PnL=$-13.31, Total PnL=$-167.61, Max Drawdown=19.0%, Pred Accuracy=99.4% +2025-03-10 13:13:00,379 - ERROR - Error in episode 6: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:13:00,379 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:13:00,393 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:13:00,621 - INFO - OPENED SHORT at 2047.4 | Stop loss: 2057.652532142857 | Take profit: 2016.6657017857144 +2025-03-10 13:13:00,643 - INFO - CLOSED short at 2047.2 | PnL: 0.01% | $-0.18 +2025-03-10 13:13:00,644 - INFO - OPENED LONG at 2047.2 | Stop loss: 2036.9484678571428 | Take profit: 2077.931298214286 +2025-03-10 13:13:00,679 - INFO - CLOSED long at 2045.99 | PnL: -0.06% | $-0.32 +2025-03-10 13:13:00,797 - INFO - OPENED LONG at 2049.89 | Stop loss: 2039.6250178571427 | Take profit: 2080.661648214286 +2025-03-10 13:13:01,086 - INFO - CLOSED long at 2063.29 | PnL: 0.65% | $1.09 +2025-03-10 13:13:01,154 - INFO - OPENED SHORT at 2064.69 | Stop loss: 2075.0289821428573 | Take profit: 2033.6963517857143 +2025-03-10 13:13:01,171 - INFO - CLOSED short at 2063.01 | PnL: 0.08% | $-0.04 +2025-03-10 13:13:01,171 - INFO - OPENED LONG at 2063.01 | Stop loss: 2052.679417857143 | Take profit: 2093.978448214286 +2025-03-10 13:13:01,244 - INFO - CLOSED long at 2061.89 | PnL: -0.05% | $-0.31 +2025-03-10 13:13:01,346 - INFO - OPENED LONG at 2057.8 | Stop loss: 2047.495467857143 | Take profit: 2088.6902982142856 +2025-03-10 13:13:01,384 - INFO - CLOSED long at 2057.89 | PnL: 0.00% | $-0.19 +2025-03-10 13:13:01,385 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.194982142857 | Take profit: 2026.9983517857142 +2025-03-10 13:13:01,451 - INFO - CLOSED short at 2061.79 | PnL: -0.19% | $-0.58 +2025-03-10 13:13:01,451 - INFO - OPENED LONG at 2061.79 | Stop loss: 2051.465517857143 | Take profit: 2092.740148214286 +2025-03-10 13:13:01,461 - INFO - CLOSED long at 2061.18 | PnL: -0.03% | $-0.26 +2025-03-10 13:13:01,505 - INFO - OPENED LONG at 2065.86 | Stop loss: 2055.515167857143 | Take profit: 2096.871198214286 +2025-03-10 13:13:01,570 - INFO - CLOSED long at 2067.89 | PnL: 0.10% | $-0.00 +2025-03-10 13:13:01,570 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.244982142857 | Take profit: 2036.8483517857142 +2025-03-10 13:13:01,607 - INFO - CLOSED short at 2070.99 | PnL: -0.15% | $-0.49 +2025-03-10 13:13:01,607 - INFO - OPENED LONG at 2070.99 | Stop loss: 2060.6195178571425 | Take profit: 2102.0781482142856 +2025-03-10 13:13:01,627 - INFO - CLOSED long at 2069.6 | PnL: -0.07% | $-0.33 +2025-03-10 13:13:01,661 - INFO - OPENED LONG at 2068.65 | Stop loss: 2058.291217857143 | Take profit: 2099.703048214286 +2025-03-10 13:13:01,693 - INFO - CLOSED long at 2068.99 | PnL: 0.02% | $-0.16 +2025-03-10 13:13:01,693 - INFO - OPENED SHORT at 2068.99 | Stop loss: 2079.350482142857 | Take profit: 2037.931851785714 +2025-03-10 13:13:01,783 - INFO - CLOSED short at 2070.26 | PnL: -0.06% | $-0.31 +2025-03-10 13:13:01,784 - INFO - OPENED LONG at 2070.26 | Stop loss: 2059.893167857143 | Take profit: 2101.3371982142858 +2025-03-10 13:13:01,834 - INFO - CLOSED long at 2073.73 | PnL: 0.17% | $0.13 +2025-03-10 13:13:01,854 - INFO - OPENED LONG at 2075.1 | Stop loss: 2064.708967857143 | Take profit: 2106.2497982142854 +2025-03-10 13:13:01,872 - INFO - CLOSED long at 2072.91 | PnL: -0.11% | $-0.40 +2025-03-10 13:13:01,889 - INFO - OPENED LONG at 2072.33 | Stop loss: 2061.9528178571427 | Take profit: 2103.4382482142855 +2025-03-10 13:13:01,902 - INFO - CLOSED long at 2071.38 | PnL: -0.05% | $-0.28 +2025-03-10 13:13:01,923 - INFO - OPENED LONG at 2071.41 | Stop loss: 2061.037417857143 | Take profit: 2102.5044482142857 +2025-03-10 13:13:01,940 - INFO - CLOSED long at 2069.37 | PnL: -0.10% | $-0.38 +2025-03-10 13:13:01,961 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.529967857143 | Take profit: 2101.986798214286 +2025-03-10 13:13:02,129 - INFO - CLOSED long at 2068.9 | PnL: -0.10% | $-0.38 +2025-03-10 13:13:02,130 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.260032142857 | Take profit: 2037.8432017857144 +2025-03-10 13:13:02,188 - INFO - CLOSED short at 2069.34 | PnL: -0.02% | $-0.23 +2025-03-10 13:13:02,220 - INFO - OPENED LONG at 2069.19 | Stop loss: 2058.8285178571427 | Take profit: 2100.251148214286 +2025-03-10 13:13:02,236 - INFO - CLOSED long at 2068.8 | PnL: -0.02% | $-0.23 +2025-03-10 13:13:02,257 - INFO - OPENED LONG at 2067.6 | Stop loss: 2057.2464678571428 | Take profit: 2098.6372982142857 +2025-03-10 13:13:02,294 - INFO - CLOSED long at 2069.01 | PnL: 0.07% | $-0.06 +2025-03-10 13:13:02,311 - INFO - OPENED LONG at 2066.39 | Stop loss: 2056.0425178571427 | Take profit: 2097.409148214286 +2025-03-10 13:13:02,388 - INFO - CLOSED long at 2065.08 | PnL: -0.06% | $-0.31 +2025-03-10 13:13:02,435 - INFO - OPENED LONG at 2068.76 | Stop loss: 2058.400667857143 | Take profit: 2099.814698214286 +2025-03-10 13:13:02,622 - INFO - CLOSED long at 2071.4 | PnL: 0.13% | $0.05 +2025-03-10 13:13:02,645 - INFO - OPENED LONG at 2071.39 | Stop loss: 2061.0175178571426 | Take profit: 2102.4841482142856 +2025-03-10 13:13:02,722 - INFO - CLOSED long at 2072.7 | PnL: 0.06% | $-0.07 +2025-03-10 13:13:02,722 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.0790321428567 | Take profit: 2041.586201785714 +2025-03-10 13:13:02,759 - INFO - CLOSED short at 2074.29 | PnL: -0.08% | $-0.34 +2025-03-10 13:13:02,793 - INFO - OPENED SHORT at 2071.92 | Stop loss: 2082.2951321428573 | Take profit: 2040.8179017857142 +2025-03-10 13:13:02,810 - INFO - CLOSED short at 2070.4 | PnL: 0.07% | $-0.05 +2025-03-10 13:13:02,810 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.032467857143 | Take profit: 2101.479298214286 +2025-03-10 13:13:02,841 - INFO - CLOSED long at 2071.11 | PnL: 0.03% | $-0.12 +2025-03-10 13:13:02,870 - INFO - OPENED SHORT at 2069.46 | Stop loss: 2079.8228321428574 | Take profit: 2038.3948017857144 +2025-03-10 13:13:02,906 - INFO - CLOSED short at 2069.35 | PnL: 0.01% | $-0.18 +2025-03-10 13:13:02,906 - INFO - OPENED LONG at 2069.35 | Stop loss: 2058.987717857143 | Take profit: 2100.4135482142856 +2025-03-10 13:13:02,989 - INFO - CLOSED long at 2067.79 | PnL: -0.08% | $-0.33 +2025-03-10 13:13:02,989 - INFO - OPENED SHORT at 2067.79 | Stop loss: 2078.144482142857 | Take profit: 2036.7498517857143 +2025-03-10 13:13:03,023 - INFO - CLOSED short at 2067.46 | PnL: 0.02% | $-0.16 +2025-03-10 13:13:03,023 - INFO - OPENED LONG at 2067.46 | Stop loss: 2057.107167857143 | Take profit: 2098.4951982142857 +2025-03-10 13:13:03,089 - INFO - CLOSED long at 2065.26 | PnL: -0.11% | $-0.39 +2025-03-10 13:13:03,146 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.440467857143 | Take profit: 2099.855298214286 +2025-03-10 13:13:03,172 - INFO - CLOSED long at 2069.34 | PnL: 0.03% | $-0.14 +2025-03-10 13:13:03,254 - INFO - OPENED SHORT at 2070.3 | Stop loss: 2080.6670321428574 | Take profit: 2039.2222017857146 +2025-03-10 13:13:03,287 - INFO - CLOSED short at 2071.59 | PnL: -0.06% | $-0.30 +2025-03-10 13:13:03,288 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.216517857143 | Take profit: 2102.687148214286 +2025-03-10 13:13:03,394 - INFO - CLOSED long at 2068.5 | PnL: -0.15% | $-0.46 +2025-03-10 13:13:03,394 - INFO - OPENED SHORT at 2068.5 | Stop loss: 2078.858032142857 | Take profit: 2037.4492017857142 +2025-03-10 13:13:03,460 - INFO - CLOSED short at 2067.11 | PnL: 0.07% | $-0.06 +2025-03-10 13:13:03,460 - INFO - OPENED LONG at 2067.11 | Stop loss: 2056.758917857143 | Take profit: 2098.139948214286 +2025-03-10 13:13:03,547 - INFO - CLOSED long at 2066.39 | PnL: -0.03% | $-0.25 +2025-03-10 13:13:03,585 - INFO - OPENED SHORT at 2070.04 | Stop loss: 2080.4057321428572 | Take profit: 2038.9661017857143 +2025-03-10 13:13:03,794 - INFO - CLOSED short at 2065.26 | PnL: 0.23% | $0.24 +2025-03-10 13:13:03,794 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.918167857143 | Take profit: 2096.262198214286 +2025-03-10 13:13:03,877 - INFO - CLOSED long at 2059.59 | PnL: -0.27% | $-0.69 +2025-03-10 13:13:03,877 - INFO - OPENED SHORT at 2059.59 | Stop loss: 2069.9034821428572 | Take profit: 2028.6728517857146 +2025-03-10 13:13:04,003 - INFO - CLOSED short at 2066.09 | PnL: -0.32% | $-0.76 +2025-03-10 13:13:04,003 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.744017857143 | Take profit: 2097.1046482142856 +2025-03-10 13:13:04,190 - INFO - CLOSED long at 2061.6 | PnL: -0.22% | $-0.58 +2025-03-10 13:13:04,190 - INFO - OPENED SHORT at 2061.6 | Stop loss: 2071.9235321428573 | Take profit: 2030.6527017857143 +2025-03-10 13:13:04,224 - INFO - CLOSED short at 2060.9 | PnL: 0.03% | $-0.12 +2025-03-10 13:13:04,224 - INFO - OPENED LONG at 2060.9 | Stop loss: 2050.579967857143 | Take profit: 2091.836798214286 +2025-03-10 13:13:04,294 - INFO - CLOSED long at 2060.31 | PnL: -0.03% | $-0.23 +2025-03-10 13:13:04,294 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.627082142857 | Take profit: 2029.3820517857143 +2025-03-10 13:13:04,319 - INFO - CLOSED short at 2061.8 | PnL: -0.07% | $-0.31 +2025-03-10 13:13:04,319 - INFO - OPENED LONG at 2061.8 | Stop loss: 2051.475467857143 | Take profit: 2092.7502982142855 +2025-03-10 13:13:04,442 - INFO - CLOSED long at 2061.9 | PnL: 0.00% | $-0.17 +2025-03-10 13:13:04,475 - INFO - OPENED LONG at 2064.1 | Stop loss: 2053.7639678571427 | Take profit: 2095.0847982142855 +2025-03-10 13:13:04,527 - INFO - CLOSED long at 2064.33 | PnL: 0.01% | $-0.16 +2025-03-10 13:13:04,527 - INFO - OPENED SHORT at 2064.33 | Stop loss: 2074.667182142857 | Take profit: 2033.3417517857142 +2025-03-10 13:13:04,559 - INFO - CLOSED short at 2063.39 | PnL: 0.05% | $-0.10 +2025-03-10 13:13:04,559 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.0575178571426 | Take profit: 2094.3641482142853 +2025-03-10 13:13:04,620 - INFO - CLOSED long at 2065.89 | PnL: 0.12% | $0.04 +2025-03-10 13:13:04,620 - INFO - OPENED SHORT at 2065.89 | Stop loss: 2076.234982142857 | Take profit: 2034.8783517857144 +2025-03-10 13:13:04,660 - INFO - CLOSED short at 2063.0 | PnL: 0.14% | $0.07 +2025-03-10 13:13:04,660 - INFO - OPENED LONG at 2063.0 | Stop loss: 2052.6694678571425 | Take profit: 2093.968298214286 +2025-03-10 13:13:04,680 - INFO - CLOSED long at 2062.6 | PnL: -0.02% | $-0.21 +2025-03-10 13:13:04,719 - INFO - OPENED LONG at 2061.7 | Stop loss: 2051.3759678571428 | Take profit: 2092.6487982142853 +2025-03-10 13:13:04,869 - INFO - CLOSED long at 2059.96 | PnL: -0.08% | $-0.33 +2025-03-10 13:13:04,869 - INFO - OPENED SHORT at 2059.96 | Stop loss: 2070.275332142857 | Take profit: 2029.0373017857144 +2025-03-10 13:13:04,902 - INFO - CLOSED short at 2059.46 | PnL: 0.02% | $-0.13 +2025-03-10 13:13:04,902 - INFO - OPENED LONG at 2059.46 | Stop loss: 2049.147167857143 | Take profit: 2090.375198214286 +2025-03-10 13:13:04,970 - INFO - CLOSED long at 2058.28 | PnL: -0.06% | $-0.28 +2025-03-10 13:13:04,970 - INFO - OPENED SHORT at 2058.28 | Stop loss: 2068.586932142857 | Take profit: 2027.3825017857146 +2025-03-10 13:13:05,003 - INFO - CLOSED short at 2056.28 | PnL: 0.10% | $-0.01 +2025-03-10 13:13:05,068 - INFO - OPENED LONG at 2054.83 | Stop loss: 2044.5403178571428 | Take profit: 2085.6757482142852 +2025-03-10 13:13:05,303 - INFO - CLOSED long at 2066.01 | PnL: 0.54% | $0.79 +2025-03-10 13:13:05,303 - INFO - OPENED SHORT at 2066.01 | Stop loss: 2076.3555821428577 | Take profit: 2034.9965517857145 +2025-03-10 13:13:05,394 - INFO - CLOSED short at 2066.33 | PnL: -0.02% | $-0.21 +2025-03-10 13:13:05,394 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.982817857143 | Take profit: 2097.348248214286 +2025-03-10 13:13:05,424 - INFO - CLOSED long at 2066.34 | PnL: 0.00% | $-0.18 +2025-03-10 13:13:05,444 - INFO - OPENED LONG at 2066.79 | Stop loss: 2056.440517857143 | Take profit: 2097.8151482142853 +2025-03-10 13:13:05,500 - INFO - CLOSED long at 2065.69 | PnL: -0.05% | $-0.27 +2025-03-10 13:13:05,520 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.425517857143 | Take profit: 2100.860148214286 +2025-03-10 13:13:05,571 - INFO - CLOSED long at 2078.01 | PnL: 0.40% | $0.53 +2025-03-10 13:13:05,594 - INFO - OPENED LONG at 2075.01 | Stop loss: 2064.619417857143 | Take profit: 2106.158448214286 +2025-03-10 13:13:05,801 - INFO - CLOSED long at 2068.39 | PnL: -0.32% | $-0.75 +2025-03-10 13:13:05,801 - INFO - OPENED SHORT at 2068.39 | Stop loss: 2078.747482142857 | Take profit: 2037.3408517857142 +2025-03-10 13:13:05,828 - INFO - CLOSED short at 2069.69 | PnL: -0.06% | $-0.29 +2025-03-10 13:13:05,829 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.3260178571427 | Take profit: 2100.758648214286 +2025-03-10 13:13:05,868 - INFO - CLOSED long at 2067.44 | PnL: -0.11% | $-0.37 +2025-03-10 13:13:05,868 - INFO - OPENED SHORT at 2067.44 | Stop loss: 2077.7927321428574 | Take profit: 2036.4051017857144 +2025-03-10 13:13:05,921 - INFO - CLOSED short at 2071.49 | PnL: -0.20% | $-0.52 +2025-03-10 13:13:05,921 - INFO - OPENED LONG at 2071.49 | Stop loss: 2061.117017857143 | Take profit: 2102.5856482142854 +2025-03-10 13:13:05,957 - INFO - CLOSED long at 2067.33 | PnL: -0.20% | $-0.53 +2025-03-10 13:13:05,957 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.682182142857 | Take profit: 2036.2967517857144 +2025-03-10 13:13:06,061 - INFO - CLOSED short at 2063.97 | PnL: 0.16% | $0.11 +2025-03-10 13:13:06,061 - INFO - OPENED LONG at 2063.97 | Stop loss: 2053.6346178571425 | Take profit: 2094.9528482142855 +2025-03-10 13:13:06,536 - INFO - CLOSED long at 2070.8 | PnL: 0.33% | $0.40 +2025-03-10 13:13:06,740 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.982617857143 | Take profit: 2105.508848214286 +2025-03-10 13:13:06,759 - INFO - CLOSED long at 2075.07 | PnL: 0.03% | $-0.12 +2025-03-10 13:13:06,799 - INFO - OPENED LONG at 2073.27 | Stop loss: 2062.888117857143 | Take profit: 2104.3923482142854 +2025-03-10 13:13:06,932 - INFO - CLOSED long at 2075.61 | PnL: 0.11% | $0.02 +2025-03-10 13:13:06,932 - INFO - OPENED SHORT at 2075.61 | Stop loss: 2086.0035821428573 | Take profit: 2044.4525517857146 +2025-03-10 13:13:07,002 - INFO - CLOSED short at 2072.09 | PnL: 0.17% | $0.12 +2025-03-10 13:13:07,002 - INFO - OPENED LONG at 2072.09 | Stop loss: 2061.714017857143 | Take profit: 2103.1946482142857 +2025-03-10 13:13:07,046 - INFO - CLOSED long at 2067.7 | PnL: -0.21% | $-0.54 +2025-03-10 13:13:07,068 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.649467857143 | Take profit: 2098.0282982142858 +2025-03-10 13:13:07,102 - INFO - CLOSED long at 2066.4 | PnL: -0.03% | $-0.22 +2025-03-10 13:13:07,102 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.7475321428574 | Take profit: 2035.3807017857143 +2025-03-10 13:13:07,127 - INFO - CLOSED short at 2066.89 | PnL: -0.02% | $-0.21 +2025-03-10 13:13:07,128 - INFO - OPENED LONG at 2066.89 | Stop loss: 2056.5400178571426 | Take profit: 2097.9166482142855 +2025-03-10 13:13:07,161 - INFO - CLOSED long at 2065.45 | PnL: -0.07% | $-0.29 +2025-03-10 13:13:07,161 - INFO - OPENED SHORT at 2065.45 | Stop loss: 2075.792782142857 | Take profit: 2034.4449517857142 +2025-03-10 13:13:07,183 - INFO - CLOSED short at 2068.1 | PnL: -0.13% | $-0.39 +2025-03-10 13:13:07,194 - INFO - OPENED LONG at 2069.0 | Stop loss: 2058.639467857143 | Take profit: 2100.058298214286 +2025-03-10 13:13:07,278 - INFO - CLOSED long at 2067.19 | PnL: -0.09% | $-0.32 +2025-03-10 13:13:07,287 - INFO - OPENED SHORT at 2067.19 | Stop loss: 2077.541482142857 | Take profit: 2036.1588517857142 +2025-03-10 13:13:07,424 - INFO - CLOSED short at 2066.09 | PnL: 0.05% | $-0.08 +2025-03-10 13:13:07,424 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.744017857143 | Take profit: 2097.1046482142856 +2025-03-10 13:13:07,468 - INFO - CLOSED long at 2062.34 | PnL: -0.18% | $-0.48 +2025-03-10 13:13:07,468 - INFO - OPENED SHORT at 2062.34 | Stop loss: 2072.6672321428573 | Take profit: 2031.3816017857143 +2025-03-10 13:13:07,599 - INFO - CLOSED short at 2063.01 | PnL: -0.03% | $-0.22 +2025-03-10 13:13:07,667 - INFO - OPENED LONG at 2060.2 | Stop loss: 2049.8834678571425 | Take profit: 2091.1262982142853 +2025-03-10 13:13:07,835 - INFO - CLOSED long at 2049.21 | PnL: -0.53% | $-1.07 +2025-03-10 13:13:07,874 - INFO - OPENED SHORT at 2051.99 | Stop loss: 2062.265482142857 | Take profit: 2021.186851785714 +2025-03-10 13:13:07,927 - INFO - CLOSED short at 2057.11 | PnL: -0.25% | $-0.58 +2025-03-10 13:13:07,945 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.194982142857 | Take profit: 2026.9983517857142 +2025-03-10 13:13:07,963 - INFO - CLOSED short at 2062.83 | PnL: -0.24% | $-0.56 +2025-03-10 13:13:08,003 - INFO - OPENED LONG at 2065.1 | Stop loss: 2054.758967857143 | Take profit: 2096.099798214286 +2025-03-10 13:13:08,110 - INFO - CLOSED long at 2068.33 | PnL: 0.16% | $0.09 +2025-03-10 13:13:08,258 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3809678571424 | Take profit: 2091.633798214286 +2025-03-10 13:13:08,296 - INFO - CLOSED long at 2062.54 | PnL: 0.09% | $-0.02 +2025-03-10 13:13:08,316 - INFO - OPENED LONG at 2065.72 | Stop loss: 2055.3758678571426 | Take profit: 2096.729098214286 +2025-03-10 13:13:08,333 - INFO - CLOSED long at 2070.31 | PnL: 0.22% | $0.20 +2025-03-10 13:13:08,349 - INFO - OPENED LONG at 2070.24 | Stop loss: 2059.8732678571428 | Take profit: 2101.3168982142856 +2025-03-10 13:13:08,403 - INFO - CLOSED long at 2070.41 | PnL: 0.01% | $-0.15 +2025-03-10 13:13:08,492 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6095178571427 | Take profit: 2104.1081482142854 +2025-03-10 13:13:08,574 - INFO - CLOSED long at 2074.9 | PnL: 0.09% | $-0.01 +2025-03-10 13:13:08,635 - INFO - OPENED LONG at 2077.61 | Stop loss: 2067.206417857143 | Take profit: 2108.797448214286 +2025-03-10 13:13:08,705 - INFO - TAKE PROFIT hit for long at 2108.797448214286 | PnL: 1.50% | $2.31 +2025-03-10 13:13:08,787 - INFO - OPENED LONG at 2137.59 | Stop loss: 2126.8865178571427 | Take profit: 2169.677148214286 +2025-03-10 13:13:08,830 - INFO - CLOSED long at 2141.3 | PnL: 0.17% | $0.12 +2025-03-10 13:13:08,954 - INFO - OPENED LONG at 2126.99 | Stop loss: 2116.3395178571427 | Take profit: 2158.9181482142853 +2025-03-10 13:13:08,986 - INFO - CLOSED long at 2127.3 | PnL: 0.01% | $-0.15 +2025-03-10 13:13:08,987 - INFO - OPENED SHORT at 2127.3 | Stop loss: 2137.952032142857 | Take profit: 2095.3672017857143 +2025-03-10 13:13:09,022 - INFO - CLOSED short at 2128.69 | PnL: -0.07% | $-0.28 +2025-03-10 13:13:09,039 - INFO - OPENED SHORT at 2121.09 | Stop loss: 2131.710982142857 | Take profit: 2089.2503517857144 +2025-03-10 13:13:09,095 - INFO - CLOSED short at 2119.93 | PnL: 0.05% | $-0.08 +2025-03-10 13:13:09,096 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3148178571428 | Take profit: 2151.752248214286 +2025-03-10 13:13:09,118 - INFO - CLOSED long at 2121.4 | PnL: 0.07% | $-0.05 +2025-03-10 13:13:09,119 - INFO - OPENED SHORT at 2121.4 | Stop loss: 2132.022532142857 | Take profit: 2089.5557017857145 +2025-03-10 13:13:09,139 - INFO - CLOSED short at 2118.52 | PnL: 0.14% | $0.06 +2025-03-10 13:13:09,139 - INFO - OPENED LONG at 2118.52 | Stop loss: 2107.9118678571426 | Take profit: 2150.321098214286 +2025-03-10 13:13:09,212 - INFO - CLOSED long at 2107.43 | PnL: -0.52% | $-1.05 +2025-03-10 13:13:09,213 - INFO - OPENED SHORT at 2107.43 | Stop loss: 2117.982682142857 | Take profit: 2075.7952517857143 +2025-03-10 13:13:09,235 - INFO - CLOSED short at 2110.6 | PnL: -0.15% | $-0.42 +2025-03-10 13:13:09,271 - INFO - OPENED LONG at 2109.05 | Stop loss: 2098.489217857143 | Take profit: 2140.709048214286 +2025-03-10 13:13:09,447 - INFO - CLOSED long at 2116.48 | PnL: 0.35% | $0.42 +2025-03-10 13:13:09,469 - INFO - OPENED LONG at 2114.8 | Stop loss: 2104.210467857143 | Take profit: 2146.545298214286 +2025-03-10 13:13:09,537 - INFO - CLOSED long at 2108.06 | PnL: -0.32% | $-0.70 +2025-03-10 13:13:09,537 - INFO - OPENED SHORT at 2108.06 | Stop loss: 2118.615832142857 | Take profit: 2076.4158017857144 +2025-03-10 13:13:09,575 - INFO - CLOSED short at 2100.5 | PnL: 0.36% | $0.43 +2025-03-10 13:13:09,592 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.5344678571428 | Take profit: 2121.3732982142856 +2025-03-10 13:13:09,610 - INFO - CLOSED long at 2099.53 | PnL: 0.46% | $0.59 +2025-03-10 13:13:09,611 - INFO - OPENED SHORT at 2099.53 | Stop loss: 2110.0431821428574 | Take profit: 2068.0137517857142 +2025-03-10 13:13:09,641 - INFO - CLOSED short at 2098.1 | PnL: 0.07% | $-0.05 +2025-03-10 13:13:09,676 - INFO - OPENED LONG at 2102.19 | Stop loss: 2091.663517857143 | Take profit: 2133.7461482142858 +2025-03-10 13:13:09,704 - INFO - CLOSED long at 2102.29 | PnL: 0.00% | $-0.16 +2025-03-10 13:13:09,704 - INFO - OPENED SHORT at 2102.29 | Stop loss: 2112.816982142857 | Take profit: 2070.7323517857144 +2025-03-10 13:13:09,792 - INFO - CLOSED short at 2100.69 | PnL: 0.08% | $-0.04 +2025-03-10 13:13:09,792 - INFO - OPENED LONG at 2100.69 | Stop loss: 2090.171017857143 | Take profit: 2132.2236482142857 +2025-03-10 13:13:09,909 - INFO - CLOSED long at 2101.51 | PnL: 0.04% | $-0.10 +2025-03-10 13:13:09,952 - INFO - OPENED SHORT at 2100.02 | Stop loss: 2110.535632142857 | Take profit: 2068.496401785714 +2025-03-10 13:13:09,991 - INFO - CLOSED short at 2095.29 | PnL: 0.23% | $0.21 +2025-03-10 13:13:09,991 - INFO - OPENED LONG at 2095.29 | Stop loss: 2084.798017857143 | Take profit: 2126.742648214286 +2025-03-10 13:13:10,009 - INFO - CLOSED long at 2093.46 | PnL: -0.09% | $-0.31 +2025-03-10 13:13:10,009 - INFO - OPENED SHORT at 2093.46 | Stop loss: 2103.9428321428572 | Take profit: 2062.0348017857145 +2025-03-10 13:13:10,085 - INFO - CLOSED short at 2091.1 | PnL: 0.11% | $0.02 +2025-03-10 13:13:10,085 - INFO - OPENED LONG at 2091.1 | Stop loss: 2080.628967857143 | Take profit: 2122.4897982142857 +2025-03-10 13:13:10,290 - INFO - CLOSED long at 2081.49 | PnL: -0.46% | $-0.93 +2025-03-10 13:13:10,290 - INFO - OPENED SHORT at 2081.49 | Stop loss: 2091.912982142857 | Take profit: 2050.244351785714 +2025-03-10 13:13:10,308 - INFO - CLOSED short at 2080.38 | PnL: 0.05% | $-0.08 +2025-03-10 13:13:10,345 - INFO - OPENED LONG at 2083.41 | Stop loss: 2072.977417857143 | Take profit: 2114.6844482142856 +2025-03-10 13:13:10,403 - INFO - CLOSED long at 2086.57 | PnL: 0.15% | $0.09 +2025-03-10 13:13:10,403 - INFO - OPENED SHORT at 2086.57 | Stop loss: 2097.0183821428573 | Take profit: 2055.2481517857145 +2025-03-10 13:13:10,476 - INFO - CLOSED short at 2085.83 | PnL: 0.04% | $-0.11 +2025-03-10 13:13:10,511 - INFO - OPENED SHORT at 2085.85 | Stop loss: 2096.294782142857 | Take profit: 2054.5389517857143 +2025-03-10 13:13:10,568 - INFO - CLOSED short at 2088.32 | PnL: -0.12% | $-0.36 +2025-03-10 13:13:10,568 - INFO - OPENED LONG at 2088.32 | Stop loss: 2077.862867857143 | Take profit: 2119.6680982142857 +2025-03-10 13:13:10,680 - INFO - CLOSED long at 2087.78 | PnL: -0.03% | $-0.21 +2025-03-10 13:13:10,701 - INFO - OPENED LONG at 2086.81 | Stop loss: 2076.3604178571427 | Take profit: 2118.1354482142856 +2025-03-10 13:13:10,720 - INFO - CLOSED long at 2089.79 | PnL: 0.14% | $0.07 +2025-03-10 13:13:10,805 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.579217857143 | Take profit: 2122.4390482142862 +2025-03-10 13:13:10,852 - INFO - CLOSED long at 2094.7 | PnL: 0.17% | $0.12 +2025-03-10 13:13:10,969 - INFO - OPENED LONG at 2097.11 | Stop loss: 2086.608917857143 | Take profit: 2128.589948214286 +2025-03-10 13:13:11,155 - INFO - CLOSED long at 2103.07 | PnL: 0.28% | $0.30 +2025-03-10 13:13:11,173 - INFO - OPENED LONG at 2101.5 | Stop loss: 2090.976967857143 | Take profit: 2133.0457982142857 +2025-03-10 13:13:11,317 - INFO - Trade Analysis: Win Rate=25.8% in uptrends, 0.0% in downtrends | Avg Win=$0.33, Avg Loss=$-0.29 +2025-03-10 13:13:11,318 - INFO - Episode 7: Reward=-62.39, Balance=$82.79, Win Rate=22.8%, Trades=114, Episode PnL=$-8.55, Total PnL=$-184.82, Max Drawdown=18.2%, Pred Accuracy=99.1% +2025-03-10 13:13:11,318 - ERROR - Error in episode 7: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:13:11,318 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:13:11,339 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:13:11,580 - INFO - OPENED LONG at 2046.58 | Stop loss: 2036.3315678571428 | Take profit: 2077.3019982142855 +2025-03-10 13:13:11,596 - INFO - CLOSED long at 2047.4 | PnL: 0.04% | $-0.12 +2025-03-10 13:13:11,618 - INFO - OPENED LONG at 2047.2 | Stop loss: 2036.9484678571428 | Take profit: 2077.931298214286 +2025-03-10 13:13:11,656 - INFO - CLOSED long at 2045.99 | PnL: -0.06% | $-0.32 +2025-03-10 13:13:11,702 - INFO - OPENED LONG at 2047.59 | Stop loss: 2037.3365178571428 | Take profit: 2078.327148214286 +2025-03-10 13:13:11,762 - INFO - CLOSED long at 2050.24 | PnL: 0.13% | $0.06 +2025-03-10 13:13:11,762 - INFO - OPENED SHORT at 2050.24 | Stop loss: 2060.506732142857 | Take profit: 2019.4631017857141 +2025-03-10 13:13:11,802 - INFO - CLOSED short at 2051.11 | PnL: -0.04% | $-0.28 +2025-03-10 13:13:11,802 - INFO - OPENED LONG at 2051.11 | Stop loss: 2040.8389178571429 | Take profit: 2081.899948214286 +2025-03-10 13:13:11,826 - INFO - CLOSED long at 2053.26 | PnL: 0.10% | $0.01 +2025-03-10 13:13:11,826 - INFO - OPENED SHORT at 2053.26 | Stop loss: 2063.5418321428574 | Take profit: 2022.4378017857143 +2025-03-10 13:13:11,848 - INFO - CLOSED short at 2051.89 | PnL: 0.07% | $-0.07 +2025-03-10 13:13:11,881 - INFO - OPENED LONG at 2052.3 | Stop loss: 2042.022967857143 | Take profit: 2083.107798214286 +2025-03-10 13:13:12,043 - INFO - CLOSED long at 2059.7 | PnL: 0.36% | $0.51 +2025-03-10 13:13:12,064 - INFO - OPENED LONG at 2061.49 | Stop loss: 2051.1670178571426 | Take profit: 2092.4356482142853 +2025-03-10 13:13:12,081 - INFO - CLOSED long at 2063.29 | PnL: 0.09% | $-0.03 +2025-03-10 13:13:12,081 - INFO - OPENED SHORT at 2063.29 | Stop loss: 2073.6219821428567 | Take profit: 2032.3173517857142 +2025-03-10 13:13:12,103 - INFO - CLOSED short at 2064.61 | PnL: -0.06% | $-0.32 +2025-03-10 13:13:12,103 - INFO - OPENED LONG at 2064.61 | Stop loss: 2054.2714178571428 | Take profit: 2095.602448214286 +2025-03-10 13:13:12,321 - INFO - CLOSED long at 2060.31 | PnL: -0.21% | $-0.61 +2025-03-10 13:13:12,355 - INFO - OPENED LONG at 2059.49 | Stop loss: 2049.177017857143 | Take profit: 2090.4056482142855 +2025-03-10 13:13:12,495 - INFO - CLOSED long at 2064.32 | PnL: 0.23% | $0.26 +2025-03-10 13:13:12,495 - INFO - OPENED SHORT at 2064.32 | Stop loss: 2074.6571321428573 | Take profit: 2033.3319017857145 +2025-03-10 13:13:12,527 - INFO - CLOSED short at 2065.86 | PnL: -0.07% | $-0.34 +2025-03-10 13:13:12,527 - INFO - OPENED LONG at 2065.86 | Stop loss: 2055.515167857143 | Take profit: 2096.871198214286 +2025-03-10 13:13:12,597 - INFO - CLOSED long at 2067.89 | PnL: 0.10% | $-0.00 +2025-03-10 13:13:12,621 - INFO - OPENED SHORT at 2071.63 | Stop loss: 2082.003682142857 | Take profit: 2040.5322517857144 +2025-03-10 13:13:12,656 - INFO - CLOSED short at 2070.99 | PnL: 0.03% | $-0.14 +2025-03-10 13:13:12,657 - INFO - OPENED LONG at 2070.99 | Stop loss: 2060.6195178571425 | Take profit: 2102.0781482142856 +2025-03-10 13:13:12,882 - INFO - CLOSED long at 2075.1 | PnL: 0.20% | $0.19 +2025-03-10 13:13:12,903 - INFO - OPENED LONG at 2072.91 | Stop loss: 2062.5299178571427 | Take profit: 2104.0269482142853 +2025-03-10 13:13:12,955 - INFO - CLOSED long at 2071.41 | PnL: -0.07% | $-0.34 +2025-03-10 13:13:12,994 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.529967857143 | Take profit: 2101.986798214286 +2025-03-10 13:13:13,011 - INFO - CLOSED long at 2072.8 | PnL: 0.09% | $-0.02 +2025-03-10 13:13:13,014 - INFO - OPENED SHORT at 2072.8 | Stop loss: 2083.1795321428576 | Take profit: 2041.6847017857144 +2025-03-10 13:13:13,120 - INFO - CLOSED short at 2067.2 | PnL: 0.27% | $0.33 +2025-03-10 13:13:13,151 - INFO - OPENED LONG at 2070.36 | Stop loss: 2059.992667857143 | Take profit: 2101.438698214286 +2025-03-10 13:13:13,318 - INFO - CLOSED long at 2069.01 | PnL: -0.07% | $-0.32 +2025-03-10 13:13:13,342 - INFO - OPENED LONG at 2066.39 | Stop loss: 2056.0425178571427 | Take profit: 2097.409148214286 +2025-03-10 13:13:13,487 - INFO - CLOSED long at 2068.9 | PnL: 0.12% | $0.04 +2025-03-10 13:13:13,575 - INFO - OPENED LONG at 2069.7 | Stop loss: 2059.335967857143 | Take profit: 2100.7687982142857 +2025-03-10 13:13:13,667 - INFO - CLOSED long at 2071.39 | PnL: 0.08% | $-0.04 +2025-03-10 13:13:13,667 - INFO - OPENED SHORT at 2071.39 | Stop loss: 2081.762482142857 | Take profit: 2040.2958517857141 +2025-03-10 13:13:13,684 - INFO - CLOSED short at 2071.36 | PnL: 0.00% | $-0.19 +2025-03-10 13:13:13,685 - INFO - OPENED LONG at 2071.36 | Stop loss: 2060.9876678571427 | Take profit: 2102.453698214286 +2025-03-10 13:13:13,719 - INFO - CLOSED long at 2073.11 | PnL: 0.08% | $-0.03 +2025-03-10 13:13:13,719 - INFO - OPENED SHORT at 2073.11 | Stop loss: 2083.491082142857 | Take profit: 2041.9900517857143 +2025-03-10 13:13:13,736 - INFO - CLOSED short at 2072.7 | PnL: 0.02% | $-0.16 +2025-03-10 13:13:13,736 - INFO - OPENED LONG at 2072.7 | Stop loss: 2062.3209678571425 | Take profit: 2103.8137982142857 +2025-03-10 13:13:13,796 - INFO - CLOSED long at 2073.9 | PnL: 0.06% | $-0.08 +2025-03-10 13:13:13,815 - INFO - OPENED SHORT at 2071.92 | Stop loss: 2082.2951321428573 | Take profit: 2040.8179017857142 +2025-03-10 13:13:13,851 - INFO - CLOSED short at 2070.4 | PnL: 0.07% | $-0.05 +2025-03-10 13:13:13,852 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.032467857143 | Take profit: 2101.479298214286 +2025-03-10 13:13:13,972 - INFO - CLOSED long at 2068.32 | PnL: -0.10% | $-0.39 +2025-03-10 13:13:14,006 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.649467857143 | Take profit: 2098.0282982142858 +2025-03-10 13:13:14,031 - INFO - CLOSED long at 2067.79 | PnL: 0.04% | $-0.12 +2025-03-10 13:13:14,052 - INFO - OPENED LONG at 2067.46 | Stop loss: 2057.107167857143 | Take profit: 2098.4951982142857 +2025-03-10 13:13:14,086 - INFO - CLOSED long at 2065.49 | PnL: -0.10% | $-0.38 +2025-03-10 13:13:14,087 - INFO - OPENED SHORT at 2065.49 | Stop loss: 2075.832982142857 | Take profit: 2034.4843517857141 +2025-03-10 13:13:14,105 - INFO - CLOSED short at 2063.61 | PnL: 0.09% | $-0.02 +2025-03-10 13:13:14,105 - INFO - OPENED LONG at 2063.61 | Stop loss: 2053.276417857143 | Take profit: 2094.587448214286 +2025-03-10 13:13:14,209 - INFO - CLOSED long at 2067.86 | PnL: 0.21% | $0.20 +2025-03-10 13:13:14,229 - INFO - OPENED LONG at 2067.59 | Stop loss: 2057.236517857143 | Take profit: 2098.6271482142856 +2025-03-10 13:13:14,378 - INFO - CLOSED long at 2070.4 | PnL: 0.14% | $0.07 +2025-03-10 13:13:14,378 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7675321428574 | Take profit: 2039.3207017857144 +2025-03-10 13:13:14,433 - INFO - CLOSED short at 2068.5 | PnL: 0.09% | $-0.02 +2025-03-10 13:13:14,434 - INFO - OPENED LONG at 2068.5 | Stop loss: 2058.141967857143 | Take profit: 2099.550798214286 +2025-03-10 13:13:14,450 - INFO - CLOSED long at 2068.69 | PnL: 0.01% | $-0.18 +2025-03-10 13:13:14,471 - INFO - OPENED LONG at 2067.84 | Stop loss: 2057.485267857143 | Take profit: 2098.880898214286 +2025-03-10 13:13:14,581 - INFO - CLOSED long at 2066.39 | PnL: -0.07% | $-0.33 +2025-03-10 13:13:14,582 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.737482142857 | Take profit: 2035.3708517857142 +2025-03-10 13:13:14,668 - INFO - CLOSED short at 2068.18 | PnL: -0.09% | $-0.36 +2025-03-10 13:13:14,726 - INFO - OPENED SHORT at 2067.88 | Stop loss: 2078.2349321428574 | Take profit: 2036.8385017857145 +2025-03-10 13:13:14,755 - INFO - CLOSED short at 2064.99 | PnL: 0.14% | $0.08 +2025-03-10 13:13:14,755 - INFO - OPENED LONG at 2064.99 | Stop loss: 2054.6495178571427 | Take profit: 2095.9881482142855 +2025-03-10 13:13:14,786 - INFO - CLOSED long at 2065.83 | PnL: 0.04% | $-0.11 +2025-03-10 13:13:14,786 - INFO - OPENED SHORT at 2065.83 | Stop loss: 2076.174682142857 | Take profit: 2034.8192517857142 +2025-03-10 13:13:14,897 - INFO - CLOSED short at 2061.78 | PnL: 0.20% | $0.18 +2025-03-10 13:13:14,897 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.4555678571433 | Take profit: 2092.729998214286 +2025-03-10 13:13:15,133 - INFO - CLOSED long at 2064.08 | PnL: 0.11% | $0.02 +2025-03-10 13:13:15,133 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.415932142857 | Take profit: 2033.095501785714 +2025-03-10 13:13:15,167 - INFO - CLOSED short at 2062.71 | PnL: 0.07% | $-0.06 +2025-03-10 13:13:15,199 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.219982142857 | Take profit: 2031.9233517857142 +2025-03-10 13:13:15,231 - INFO - CLOSED short at 2064.5 | PnL: -0.08% | $-0.34 +2025-03-10 13:13:15,231 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.161967857143 | Take profit: 2095.490798214286 +2025-03-10 13:13:15,407 - INFO - CLOSED long at 2062.61 | PnL: -0.09% | $-0.37 +2025-03-10 13:13:15,407 - INFO - OPENED SHORT at 2062.61 | Stop loss: 2072.9385821428573 | Take profit: 2031.6475517857143 +2025-03-10 13:13:15,487 - INFO - CLOSED short at 2061.13 | PnL: 0.07% | $-0.05 +2025-03-10 13:13:15,487 - INFO - OPENED LONG at 2061.13 | Stop loss: 2050.808817857143 | Take profit: 2092.0702482142856 +2025-03-10 13:13:15,661 - INFO - CLOSED long at 2065.89 | PnL: 0.23% | $0.25 +2025-03-10 13:13:15,661 - INFO - OPENED SHORT at 2065.89 | Stop loss: 2076.234982142857 | Take profit: 2034.8783517857144 +2025-03-10 13:13:15,702 - INFO - CLOSED short at 2063.0 | PnL: 0.14% | $0.08 +2025-03-10 13:13:15,722 - INFO - OPENED LONG at 2062.6 | Stop loss: 2052.271467857143 | Take profit: 2093.5622982142854 +2025-03-10 13:13:16,044 - INFO - CLOSED long at 2055.6 | PnL: -0.34% | $-0.84 +2025-03-10 13:13:16,070 - INFO - OPENED SHORT at 2054.89 | Stop loss: 2065.1799821428567 | Take profit: 2024.043351785714 +2025-03-10 13:13:16,091 - INFO - CLOSED short at 2054.83 | PnL: 0.00% | $-0.18 +2025-03-10 13:13:16,129 - INFO - OPENED LONG at 2058.15 | Stop loss: 2047.843717857143 | Take profit: 2089.045548214286 +2025-03-10 13:13:16,168 - INFO - CLOSED long at 2061.66 | PnL: 0.17% | $0.13 +2025-03-10 13:13:16,168 - INFO - OPENED SHORT at 2061.66 | Stop loss: 2071.983832142857 | Take profit: 2030.7118017857142 +2025-03-10 13:13:16,210 - INFO - CLOSED short at 2061.6 | PnL: 0.00% | $-0.18 +2025-03-10 13:13:16,211 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.276467857143 | Take profit: 2092.547298214286 +2025-03-10 13:13:16,268 - INFO - CLOSED long at 2062.69 | PnL: 0.05% | $-0.09 +2025-03-10 13:13:16,269 - INFO - OPENED SHORT at 2062.69 | Stop loss: 2073.018982142857 | Take profit: 2031.7263517857143 +2025-03-10 13:13:16,355 - INFO - CLOSED short at 2066.01 | PnL: -0.16% | $-0.49 +2025-03-10 13:13:16,412 - INFO - OPENED LONG at 2064.49 | Stop loss: 2054.1520178571427 | Take profit: 2095.480648214286 +2025-03-10 13:13:16,473 - INFO - CLOSED long at 2066.79 | PnL: 0.11% | $0.02 +2025-03-10 13:13:16,474 - INFO - OPENED SHORT at 2066.79 | Stop loss: 2077.139482142857 | Take profit: 2035.7648517857142 +2025-03-10 13:13:16,524 - INFO - CLOSED short at 2065.69 | PnL: 0.05% | $-0.09 +2025-03-10 13:13:16,525 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.346017857143 | Take profit: 2096.6986482142856 +2025-03-10 13:13:16,615 - INFO - CLOSED long at 2075.01 | PnL: 0.45% | $0.66 +2025-03-10 13:13:16,615 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.4005821428573 | Take profit: 2043.8615517857145 +2025-03-10 13:13:16,677 - INFO - CLOSED short at 2071.04 | PnL: 0.19% | $0.17 +2025-03-10 13:13:16,677 - INFO - OPENED LONG at 2071.04 | Stop loss: 2060.669267857143 | Take profit: 2102.1288982142855 +2025-03-10 13:13:16,798 - INFO - CLOSED long at 2070.0 | PnL: -0.05% | $-0.28 +2025-03-10 13:13:16,818 - INFO - OPENED LONG at 2068.15 | Stop loss: 2057.793717857143 | Take profit: 2099.1955482142857 +2025-03-10 13:13:16,968 - INFO - CLOSED long at 2069.87 | PnL: 0.08% | $-0.03 +2025-03-10 13:13:16,968 - INFO - OPENED SHORT at 2069.87 | Stop loss: 2080.234882142857 | Take profit: 2038.7986517857141 +2025-03-10 13:13:17,004 - INFO - CLOSED short at 2066.38 | PnL: 0.17% | $0.13 +2025-03-10 13:13:17,004 - INFO - OPENED LONG at 2066.38 | Stop loss: 2056.032567857143 | Take profit: 2097.3989982142857 +2025-03-10 13:13:17,431 - INFO - CLOSED long at 2069.69 | PnL: 0.16% | $0.11 +2025-03-10 13:13:17,467 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3309678571427 | Take profit: 2101.7837982142855 +2025-03-10 13:13:17,580 - INFO - CLOSED long at 2071.99 | PnL: 0.06% | $-0.07 +2025-03-10 13:13:17,613 - INFO - OPENED LONG at 2068.19 | Stop loss: 2057.833517857143 | Take profit: 2099.236148214286 +2025-03-10 13:13:17,729 - INFO - CLOSED long at 2074.35 | PnL: 0.30% | $0.37 +2025-03-10 13:13:17,729 - INFO - OPENED SHORT at 2074.35 | Stop loss: 2084.7372821428567 | Take profit: 2043.2114517857142 +2025-03-10 13:13:17,752 - INFO - CLOSED short at 2073.27 | PnL: 0.05% | $-0.09 +2025-03-10 13:13:17,753 - INFO - OPENED LONG at 2073.27 | Stop loss: 2062.888117857143 | Take profit: 2104.3923482142854 +2025-03-10 13:13:17,792 - INFO - CLOSED long at 2075.32 | PnL: 0.10% | $-0.00 +2025-03-10 13:13:17,792 - INFO - OPENED SHORT at 2075.32 | Stop loss: 2085.7121321428576 | Take profit: 2044.1669017857146 +2025-03-10 13:13:17,811 - INFO - CLOSED short at 2075.29 | PnL: 0.00% | $-0.19 +2025-03-10 13:13:17,811 - INFO - OPENED LONG at 2075.29 | Stop loss: 2064.898017857143 | Take profit: 2106.442648214286 +2025-03-10 13:13:18,103 - INFO - CLOSED long at 2065.45 | PnL: -0.47% | $-1.08 +2025-03-10 13:13:18,103 - INFO - OPENED SHORT at 2065.45 | Stop loss: 2075.792782142857 | Take profit: 2034.4449517857142 +2025-03-10 13:13:18,143 - INFO - CLOSED short at 2069.0 | PnL: -0.17% | $-0.51 +2025-03-10 13:13:18,143 - INFO - OPENED LONG at 2069.0 | Stop loss: 2058.639467857143 | Take profit: 2100.058298214286 +2025-03-10 13:13:18,162 - INFO - CLOSED long at 2070.19 | PnL: 0.06% | $-0.08 +2025-03-10 13:13:18,199 - INFO - OPENED LONG at 2067.19 | Stop loss: 2056.838517857143 | Take profit: 2098.2211482142857 +2025-03-10 13:13:18,218 - INFO - CLOSED long at 2065.5 | PnL: -0.08% | $-0.34 +2025-03-10 13:13:18,219 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.843032142857 | Take profit: 2034.4942017857143 +2025-03-10 13:13:18,253 - INFO - CLOSED short at 2065.7 | PnL: -0.01% | $-0.20 +2025-03-10 13:13:18,253 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.355967857143 | Take profit: 2096.7087982142857 +2025-03-10 13:13:18,421 - INFO - CLOSED long at 2062.34 | PnL: -0.16% | $-0.48 +2025-03-10 13:13:18,421 - INFO - OPENED SHORT at 2062.34 | Stop loss: 2072.6672321428573 | Take profit: 2031.3816017857143 +2025-03-10 13:13:18,505 - INFO - CLOSED short at 2064.11 | PnL: -0.09% | $-0.34 +2025-03-10 13:13:18,528 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.161967857143 | Take profit: 2095.490798214286 +2025-03-10 13:13:18,776 - INFO - STOP LOSS hit for long at 2054.161967857143 | PnL: -0.50% | $-1.10 +2025-03-10 13:13:18,828 - INFO - OPENED SHORT at 2049.5 | Stop loss: 2059.7630321428574 | Take profit: 2018.7342017857143 +2025-03-10 13:13:18,872 - INFO - CLOSED short at 2058.3 | PnL: -0.43% | $-0.96 +2025-03-10 13:13:18,872 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9929678571432 | Take profit: 2089.1977982142857 +2025-03-10 13:13:19,004 - INFO - CLOSED long at 2062.43 | PnL: 0.20% | $0.18 +2025-03-10 13:13:19,004 - INFO - OPENED SHORT at 2062.43 | Stop loss: 2072.757682142857 | Take profit: 2031.470251785714 +2025-03-10 13:13:19,059 - INFO - CLOSED short at 2065.12 | PnL: -0.13% | $-0.41 +2025-03-10 13:13:19,059 - INFO - OPENED LONG at 2065.12 | Stop loss: 2054.778867857143 | Take profit: 2096.120098214286 +2025-03-10 13:13:19,119 - INFO - CLOSED long at 2067.49 | PnL: 0.11% | $0.03 +2025-03-10 13:13:19,120 - INFO - OPENED SHORT at 2067.49 | Stop loss: 2077.8429821428567 | Take profit: 2036.4543517857142 +2025-03-10 13:13:19,153 - INFO - CLOSED short at 2066.59 | PnL: 0.04% | $-0.10 +2025-03-10 13:13:19,153 - INFO - OPENED LONG at 2066.59 | Stop loss: 2056.241517857143 | Take profit: 2097.612148214286 +2025-03-10 13:13:19,210 - INFO - CLOSED long at 2061.21 | PnL: -0.26% | $-0.64 +2025-03-10 13:13:19,235 - INFO - OPENED LONG at 2059.9 | Stop loss: 2049.584967857143 | Take profit: 2090.821798214286 +2025-03-10 13:13:19,303 - INFO - CLOSED long at 2065.72 | PnL: 0.28% | $0.32 +2025-03-10 13:13:19,328 - INFO - OPENED LONG at 2070.31 | Stop loss: 2059.942917857143 | Take profit: 2101.3879482142856 +2025-03-10 13:13:19,361 - INFO - CLOSED long at 2069.34 | PnL: -0.05% | $-0.26 +2025-03-10 13:13:19,361 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.702232142857 | Take profit: 2038.2766017857143 +2025-03-10 13:13:19,383 - INFO - CLOSED short at 2069.81 | PnL: -0.02% | $-0.22 +2025-03-10 13:13:19,384 - INFO - OPENED LONG at 2069.81 | Stop loss: 2059.4454178571427 | Take profit: 2100.8804482142855 +2025-03-10 13:13:19,400 - INFO - CLOSED long at 2070.41 | PnL: 0.03% | $-0.13 +2025-03-10 13:13:19,418 - INFO - OPENED LONG at 2073.49 | Stop loss: 2063.1070178571426 | Take profit: 2104.6156482142856 +2025-03-10 13:13:19,484 - INFO - CLOSED long at 2072.99 | PnL: -0.02% | $-0.22 +2025-03-10 13:13:19,514 - INFO - OPENED LONG at 2071.89 | Stop loss: 2061.5150178571425 | Take profit: 2102.9916482142853 +2025-03-10 13:13:19,643 - INFO - CLOSED long at 2085.56 | PnL: 0.66% | $0.99 +2025-03-10 13:13:19,643 - INFO - OPENED SHORT at 2085.56 | Stop loss: 2096.0033321428573 | Take profit: 2054.2533017857145 +2025-03-10 13:13:19,661 - INFO - CLOSED short at 2090.49 | PnL: -0.24% | $-0.60 +2025-03-10 13:13:19,678 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.550632142857 | Take profit: 2071.451401785714 +2025-03-10 13:13:19,698 - INFO - CLOSED short at 2130.7 | PnL: -1.32% | $-2.50 +2025-03-10 13:13:19,698 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.0309678571425 | Take profit: 2162.6837982142856 +2025-03-10 13:13:19,821 - INFO - CLOSED long at 2142.68 | PnL: 0.56% | $0.79 +2025-03-10 13:13:19,821 - INFO - OPENED SHORT at 2142.68 | Stop loss: 2153.4089321428573 | Take profit: 2110.516501785714 +2025-03-10 13:13:19,853 - INFO - CLOSED short at 2140.01 | PnL: 0.12% | $0.04 +2025-03-10 13:13:19,854 - INFO - OPENED LONG at 2140.01 | Stop loss: 2129.294417857143 | Take profit: 2172.133448214286 +2025-03-10 13:13:19,915 - INFO - STOP LOSS hit for long at 2129.294417857143 | PnL: -0.50% | $-1.04 +2025-03-10 13:13:19,968 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.031017857143 | Take profit: 2160.643648214286 +2025-03-10 13:13:20,039 - INFO - STOP LOSS hit for long at 2118.031017857143 | PnL: -0.50% | $-1.03 +2025-03-10 13:13:20,081 - INFO - OPENED LONG at 2121.4 | Stop loss: 2110.777467857143 | Take profit: 2153.2442982142857 +2025-03-10 13:13:20,139 - INFO - CLOSED long at 2119.07 | PnL: -0.11% | $-0.36 +2025-03-10 13:13:20,139 - INFO - OPENED SHORT at 2119.07 | Stop loss: 2129.680882142857 | Take profit: 2087.2606517857143 +2025-03-10 13:13:20,159 - INFO - CLOSED short at 2115.28 | PnL: 0.18% | $0.13 +2025-03-10 13:13:20,160 - INFO - OPENED LONG at 2115.28 | Stop loss: 2104.688067857143 | Take profit: 2147.0324982142856 +2025-03-10 13:13:20,176 - INFO - CLOSED long at 2107.43 | PnL: -0.37% | $-0.80 +2025-03-10 13:13:20,177 - INFO - OPENED SHORT at 2107.43 | Stop loss: 2117.982682142857 | Take profit: 2075.7952517857143 +2025-03-10 13:13:20,284 - INFO - CLOSED short at 2112.46 | PnL: -0.24% | $-0.57 +2025-03-10 13:13:20,284 - INFO - OPENED LONG at 2112.46 | Stop loss: 2101.882167857143 | Take profit: 2144.1701982142854 +2025-03-10 13:13:20,426 - INFO - CLOSED long at 2114.8 | PnL: 0.11% | $0.02 +2025-03-10 13:13:20,426 - INFO - OPENED SHORT at 2114.8 | Stop loss: 2125.389532142857 | Take profit: 2083.0547017857143 +2025-03-10 13:13:20,467 - INFO - CLOSED short at 2108.71 | PnL: 0.29% | $0.31 +2025-03-10 13:13:20,467 - INFO - OPENED LONG at 2108.71 | Stop loss: 2098.1509178571428 | Take profit: 2140.3639482142858 +2025-03-10 13:13:20,566 - INFO - CLOSED long at 2090.0 | PnL: -0.89% | $-1.65 +2025-03-10 13:13:20,585 - INFO - OPENED SHORT at 2099.53 | Stop loss: 2110.0431821428574 | Take profit: 2068.0137517857142 +2025-03-10 13:13:20,623 - INFO - CLOSED short at 2102.19 | PnL: -0.13% | $-0.37 +2025-03-10 13:13:20,623 - INFO - OPENED LONG at 2102.19 | Stop loss: 2091.663517857143 | Take profit: 2133.7461482142858 +2025-03-10 13:13:20,655 - INFO - CLOSED long at 2102.29 | PnL: 0.00% | $-0.16 +2025-03-10 13:13:20,655 - INFO - OPENED SHORT at 2102.29 | Stop loss: 2112.816982142857 | Take profit: 2070.7323517857144 +2025-03-10 13:13:20,692 - INFO - CLOSED short at 2099.25 | PnL: 0.14% | $0.07 +2025-03-10 13:13:20,692 - INFO - OPENED LONG at 2099.25 | Stop loss: 2088.738217857143 | Take profit: 2130.7620482142856 +2025-03-10 13:13:20,854 - INFO - CLOSED long at 2103.86 | PnL: 0.22% | $0.19 +2025-03-10 13:13:20,855 - INFO - OPENED SHORT at 2103.86 | Stop loss: 2114.394832142857 | Take profit: 2072.278801785714 +2025-03-10 13:13:20,876 - INFO - CLOSED short at 2104.68 | PnL: -0.04% | $-0.23 +2025-03-10 13:13:20,877 - INFO - OPENED LONG at 2104.68 | Stop loss: 2094.141067857143 | Take profit: 2136.2734982142856 +2025-03-10 13:13:20,894 - INFO - CLOSED long at 2101.51 | PnL: -0.15% | $-0.41 +2025-03-10 13:13:20,894 - INFO - OPENED SHORT at 2101.51 | Stop loss: 2112.0330821428574 | Take profit: 2069.964051785714 +2025-03-10 13:13:20,931 - INFO - CLOSED short at 2100.02 | PnL: 0.07% | $-0.05 +2025-03-10 13:13:20,931 - INFO - OPENED LONG at 2100.02 | Stop loss: 2089.504367857143 | Take profit: 2131.543598214286 +2025-03-10 13:13:21,030 - INFO - CLOSED long at 2092.46 | PnL: -0.36% | $-0.74 +2025-03-10 13:13:21,030 - INFO - OPENED SHORT at 2092.46 | Stop loss: 2102.937832142857 | Take profit: 2061.0498017857144 +2025-03-10 13:13:21,060 - INFO - CLOSED short at 2091.1 | PnL: 0.06% | $-0.06 +2025-03-10 13:13:21,121 - INFO - OPENED LONG at 2094.08 | Stop loss: 2083.594067857143 | Take profit: 2125.5144982142856 +2025-03-10 13:13:21,182 - INFO - CLOSED long at 2083.28 | PnL: -0.52% | $-0.99 +2025-03-10 13:13:21,182 - INFO - OPENED SHORT at 2083.28 | Stop loss: 2093.711932142857 | Take profit: 2052.0075017857143 +2025-03-10 13:13:21,235 - INFO - CLOSED short at 2083.97 | PnL: -0.03% | $-0.21 +2025-03-10 13:13:21,235 - INFO - OPENED LONG at 2083.97 | Stop loss: 2073.5346178571426 | Take profit: 2115.2528482142857 +2025-03-10 13:13:21,309 - INFO - CLOSED long at 2080.38 | PnL: -0.17% | $-0.43 +2025-03-10 13:13:21,346 - INFO - OPENED LONG at 2083.41 | Stop loss: 2072.977417857143 | Take profit: 2114.6844482142856 +2025-03-10 13:13:21,385 - INFO - CLOSED long at 2083.59 | PnL: 0.01% | $-0.14 +2025-03-10 13:13:21,385 - INFO - OPENED SHORT at 2083.59 | Stop loss: 2094.023482142857 | Take profit: 2052.3128517857144 +2025-03-10 13:13:21,407 - INFO - CLOSED short at 2086.57 | PnL: -0.14% | $-0.38 +2025-03-10 13:13:21,407 - INFO - OPENED LONG at 2086.57 | Stop loss: 2076.121617857143 | Take profit: 2117.8918482142863 +2025-03-10 13:13:21,459 - INFO - CLOSED long at 2084.72 | PnL: -0.09% | $-0.29 +2025-03-10 13:13:21,459 - INFO - OPENED SHORT at 2084.72 | Stop loss: 2095.1591321428573 | Take profit: 2053.4259017857144 +2025-03-10 13:13:21,496 - INFO - CLOSED short at 2085.83 | PnL: -0.05% | $-0.24 +2025-03-10 13:13:21,496 - INFO - OPENED LONG at 2085.83 | Stop loss: 2075.3853178571426 | Take profit: 2117.140748214286 +2025-03-10 13:13:21,621 - INFO - CLOSED long at 2088.1 | PnL: 0.11% | $0.01 +2025-03-10 13:13:21,644 - INFO - OPENED LONG at 2089.96 | Stop loss: 2079.494667857143 | Take profit: 2121.3326982142858 +2025-03-10 13:13:21,791 - INFO - CLOSED long at 2091.05 | PnL: 0.05% | $-0.07 +2025-03-10 13:13:21,791 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.520782142857 | Take profit: 2059.6609517857146 +2025-03-10 13:13:21,812 - INFO - CLOSED short at 2091.05 | PnL: 0.00% | $-0.15 +2025-03-10 13:13:21,812 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.579217857143 | Take profit: 2122.4390482142862 +2025-03-10 13:13:21,872 - INFO - CLOSED long at 2094.7 | PnL: 0.17% | $0.12 +2025-03-10 13:13:21,872 - INFO - OPENED SHORT at 2094.7 | Stop loss: 2105.189032142857 | Take profit: 2063.256201785714 +2025-03-10 13:13:21,910 - INFO - CLOSED short at 2097.8 | PnL: -0.15% | $-0.38 +2025-03-10 13:13:21,910 - INFO - OPENED LONG at 2097.8 | Stop loss: 2087.295467857143 | Take profit: 2129.290298214286 +2025-03-10 13:13:22,004 - INFO - CLOSED long at 2097.11 | PnL: -0.03% | $-0.20 +2025-03-10 13:13:22,030 - INFO - OPENED LONG at 2098.49 | Stop loss: 2087.9820178571426 | Take profit: 2129.9906482142856 +2025-03-10 13:13:22,126 - INFO - CLOSED long at 2103.48 | PnL: 0.24% | $0.21 +2025-03-10 13:13:22,149 - INFO - OPENED LONG at 2104.93 | Stop loss: 2094.3898178571426 | Take profit: 2136.527248214286 +2025-03-10 13:13:22,185 - INFO - CLOSED long at 2103.07 | PnL: -0.09% | $-0.29 +2025-03-10 13:13:22,185 - INFO - OPENED SHORT at 2103.07 | Stop loss: 2113.6008821428572 | Take profit: 2071.5006517857146 +2025-03-10 13:13:22,203 - INFO - CLOSED short at 2101.5 | PnL: 0.07% | $-0.04 +2025-03-10 13:13:22,203 - INFO - OPENED LONG at 2101.5 | Stop loss: 2090.976967857143 | Take profit: 2133.0457982142857 +2025-03-10 13:13:22,318 - INFO - CLOSED long at 2103.52 | PnL: 0.10% | $-0.01 +2025-03-10 13:13:22,352 - INFO - OPENED LONG at 2104.4 | Stop loss: 2093.862467857143 | Take profit: 2135.989298214286 +2025-03-10 13:13:22,383 - INFO - Trade Analysis: Win Rate=18.6% in uptrends, 0.0% in downtrends | Avg Win=$0.21, Avg Loss=$-0.34 +2025-03-10 13:13:22,383 - INFO - Episode 8: Reward=-34.23, Balance=$77.15, Win Rate=28.2%, Trades=124, Episode PnL=$-19.19, Total PnL=$-207.67, Max Drawdown=22.8%, Pred Accuracy=99.4% +2025-03-10 13:13:22,385 - ERROR - Error in episode 8: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:13:22,385 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:13:22,406 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:13:22,602 - INFO - OPENED LONG at 2046.58 | Stop loss: 2036.3315678571428 | Take profit: 2077.3019982142855 +2025-03-10 13:13:22,680 - INFO - CLOSED long at 2045.99 | PnL: -0.03% | $-0.26 +2025-03-10 13:13:22,680 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.235482142857 | Take profit: 2015.2768517857144 +2025-03-10 13:13:22,702 - INFO - CLOSED short at 2045.79 | PnL: 0.01% | $-0.18 +2025-03-10 13:13:22,702 - INFO - OPENED LONG at 2045.79 | Stop loss: 2035.5455178571428 | Take profit: 2076.5001482142857 +2025-03-10 13:13:22,904 - INFO - CLOSED long at 2052.3 | PnL: 0.32% | $0.43 +2025-03-10 13:13:23,052 - INFO - OPENED LONG at 2059.7 | Stop loss: 2049.3859678571425 | Take profit: 2090.6187982142856 +2025-03-10 13:13:23,085 - INFO - CLOSED long at 2063.29 | PnL: 0.17% | $0.15 +2025-03-10 13:13:23,085 - INFO - OPENED SHORT at 2063.29 | Stop loss: 2073.6219821428567 | Take profit: 2032.3173517857142 +2025-03-10 13:13:23,108 - INFO - CLOSED short at 2064.61 | PnL: -0.06% | $-0.33 +2025-03-10 13:13:23,108 - INFO - OPENED LONG at 2064.61 | Stop loss: 2054.2714178571428 | Take profit: 2095.602448214286 +2025-03-10 13:13:23,175 - INFO - CLOSED long at 2063.01 | PnL: -0.08% | $-0.35 +2025-03-10 13:13:23,175 - INFO - OPENED SHORT at 2063.01 | Stop loss: 2073.3405821428573 | Take profit: 2032.0415517857145 +2025-03-10 13:13:23,230 - INFO - CLOSED short at 2060.0 | PnL: 0.15% | $0.09 +2025-03-10 13:13:23,230 - INFO - OPENED LONG at 2060.0 | Stop loss: 2049.684467857143 | Take profit: 2090.9232982142858 +2025-03-10 13:13:23,426 - INFO - CLOSED long at 2057.94 | PnL: -0.10% | $-0.40 +2025-03-10 13:13:23,426 - INFO - OPENED SHORT at 2057.94 | Stop loss: 2068.2452321428573 | Take profit: 2027.0476017857145 +2025-03-10 13:13:23,443 - INFO - CLOSED short at 2058.11 | PnL: -0.01% | $-0.21 +2025-03-10 13:13:23,484 - INFO - OPENED LONG at 2061.18 | Stop loss: 2050.8585678571426 | Take profit: 2092.1209982142855 +2025-03-10 13:13:23,631 - INFO - CLOSED long at 2070.99 | PnL: 0.48% | $0.74 +2025-03-10 13:13:23,690 - INFO - OPENED LONG at 2068.65 | Stop loss: 2058.291217857143 | Take profit: 2099.703048214286 +2025-03-10 13:13:23,776 - INFO - CLOSED long at 2067.69 | PnL: -0.05% | $-0.29 +2025-03-10 13:13:23,829 - INFO - OPENED SHORT at 2071.44 | Stop loss: 2081.8127321428574 | Take profit: 2040.3451017857144 +2025-03-10 13:13:23,845 - INFO - CLOSED short at 2073.73 | PnL: -0.11% | $-0.42 +2025-03-10 13:13:23,845 - INFO - OPENED LONG at 2073.73 | Stop loss: 2063.3458178571427 | Take profit: 2104.859248214286 +2025-03-10 13:13:23,868 - INFO - CLOSED long at 2075.1 | PnL: 0.07% | $-0.07 +2025-03-10 13:13:23,908 - INFO - OPENED LONG at 2072.33 | Stop loss: 2061.9528178571427 | Take profit: 2103.4382482142855 +2025-03-10 13:13:23,949 - INFO - CLOSED long at 2071.41 | PnL: -0.04% | $-0.28 +2025-03-10 13:13:23,969 - INFO - OPENED LONG at 2069.37 | Stop loss: 2059.0076178571426 | Take profit: 2100.4338482142857 +2025-03-10 13:13:24,053 - INFO - CLOSED long at 2070.28 | PnL: 0.04% | $-0.11 +2025-03-10 13:13:24,093 - INFO - OPENED LONG at 2068.02 | Stop loss: 2057.6643678571427 | Take profit: 2099.063598214286 +2025-03-10 13:13:24,180 - INFO - CLOSED long at 2068.9 | PnL: 0.04% | $-0.11 +2025-03-10 13:13:24,180 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.260032142857 | Take profit: 2037.8432017857144 +2025-03-10 13:13:24,212 - INFO - CLOSED short at 2070.7 | PnL: -0.09% | $-0.37 +2025-03-10 13:13:24,230 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.977767857143 | Take profit: 2100.4033982142855 +2025-03-10 13:13:24,335 - INFO - CLOSED long at 2066.39 | PnL: -0.14% | $-0.47 +2025-03-10 13:13:24,336 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.737482142857 | Take profit: 2035.3708517857142 +2025-03-10 13:13:24,357 - INFO - CLOSED short at 2065.99 | PnL: 0.02% | $-0.16 +2025-03-10 13:13:24,357 - INFO - OPENED LONG at 2065.99 | Stop loss: 2055.6445178571425 | Take profit: 2097.0031482142854 +2025-03-10 13:13:24,470 - INFO - CLOSED long at 2068.76 | PnL: 0.13% | $0.07 +2025-03-10 13:13:24,503 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.539967857143 | Take profit: 2099.956798214286 +2025-03-10 13:13:24,643 - INFO - CLOSED long at 2069.96 | PnL: 0.05% | $-0.09 +2025-03-10 13:13:24,682 - INFO - OPENED LONG at 2071.39 | Stop loss: 2061.0175178571426 | Take profit: 2102.4841482142856 +2025-03-10 13:13:24,883 - INFO - CLOSED long at 2070.4 | PnL: -0.05% | $-0.29 +2025-03-10 13:13:24,916 - INFO - OPENED LONG at 2071.11 | Stop loss: 2060.738917857143 | Take profit: 2102.199948214286 +2025-03-10 13:13:25,115 - INFO - CLOSED long at 2063.61 | PnL: -0.36% | $-0.89 +2025-03-10 13:13:25,116 - INFO - OPENED SHORT at 2063.61 | Stop loss: 2073.9435821428574 | Take profit: 2032.6325517857144 +2025-03-10 13:13:25,150 - INFO - CLOSED short at 2067.89 | PnL: -0.21% | $-0.59 +2025-03-10 13:13:25,150 - INFO - OPENED LONG at 2067.89 | Stop loss: 2057.535017857143 | Take profit: 2098.9316482142854 +2025-03-10 13:13:25,415 - INFO - CLOSED long at 2070.73 | PnL: 0.14% | $0.07 +2025-03-10 13:13:25,415 - INFO - OPENED SHORT at 2070.73 | Stop loss: 2081.099182142857 | Take profit: 2039.6457517857143 +2025-03-10 13:13:25,437 - INFO - CLOSED short at 2068.5 | PnL: 0.11% | $0.01 +2025-03-10 13:13:25,437 - INFO - OPENED LONG at 2068.5 | Stop loss: 2058.141967857143 | Take profit: 2099.550798214286 +2025-03-10 13:13:25,455 - INFO - CLOSED long at 2068.69 | PnL: 0.01% | $-0.17 +2025-03-10 13:13:25,455 - INFO - OPENED SHORT at 2068.69 | Stop loss: 2079.0489821428573 | Take profit: 2037.6363517857144 +2025-03-10 13:13:25,476 - INFO - CLOSED short at 2067.84 | PnL: 0.04% | $-0.11 +2025-03-10 13:13:25,478 - INFO - OPENED LONG at 2067.84 | Stop loss: 2057.485267857143 | Take profit: 2098.880898214286 +2025-03-10 13:13:25,494 - INFO - CLOSED long at 2067.11 | PnL: -0.04% | $-0.26 +2025-03-10 13:13:25,495 - INFO - OPENED SHORT at 2067.11 | Stop loss: 2077.4610821428573 | Take profit: 2036.0800517857144 +2025-03-10 13:13:25,514 - INFO - CLOSED short at 2067.86 | PnL: -0.04% | $-0.26 +2025-03-10 13:13:25,514 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.505167857143 | Take profit: 2098.9011982142856 +2025-03-10 13:13:25,576 - INFO - CLOSED long at 2065.28 | PnL: -0.12% | $-0.42 +2025-03-10 13:13:25,640 - INFO - OPENED LONG at 2070.04 | Stop loss: 2059.6742678571427 | Take profit: 2101.113898214286 +2025-03-10 13:13:25,762 - INFO - CLOSED long at 2067.88 | PnL: -0.10% | $-0.38 +2025-03-10 13:13:25,762 - INFO - OPENED SHORT at 2067.88 | Stop loss: 2078.2349321428574 | Take profit: 2036.8385017857145 +2025-03-10 13:13:25,821 - INFO - CLOSED short at 2065.83 | PnL: 0.10% | $-0.00 +2025-03-10 13:13:25,823 - INFO - OPENED LONG at 2065.83 | Stop loss: 2055.4853178571425 | Take profit: 2096.8407482142857 +2025-03-10 13:13:25,857 - INFO - CLOSED long at 2065.26 | PnL: -0.03% | $-0.24 +2025-03-10 13:13:25,873 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.219982142857 | Take profit: 2031.9233517857142 +2025-03-10 13:13:25,908 - INFO - CLOSED short at 2061.78 | PnL: 0.05% | $-0.09 +2025-03-10 13:13:25,926 - INFO - OPENED LONG at 2059.59 | Stop loss: 2049.276517857143 | Take profit: 2090.507148214286 +2025-03-10 13:13:26,015 - INFO - CLOSED long at 2067.1 | PnL: 0.36% | $0.49 +2025-03-10 13:13:26,198 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.838032142857 | Take profit: 2033.5092017857144 +2025-03-10 13:13:26,219 - INFO - CLOSED short at 2063.5 | PnL: 0.05% | $-0.10 +2025-03-10 13:13:26,219 - INFO - OPENED LONG at 2063.5 | Stop loss: 2053.166967857143 | Take profit: 2094.4757982142855 +2025-03-10 13:13:26,240 - INFO - CLOSED long at 2061.6 | PnL: -0.09% | $-0.36 +2025-03-10 13:13:26,240 - INFO - OPENED SHORT at 2061.6 | Stop loss: 2071.9235321428573 | Take profit: 2030.6527017857143 +2025-03-10 13:13:26,260 - INFO - CLOSED short at 2060.9 | PnL: 0.03% | $-0.12 +2025-03-10 13:13:26,261 - INFO - OPENED LONG at 2060.9 | Stop loss: 2050.579967857143 | Take profit: 2091.836798214286 +2025-03-10 13:13:26,336 - INFO - CLOSED long at 2060.31 | PnL: -0.03% | $-0.24 +2025-03-10 13:13:26,337 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.627082142857 | Take profit: 2029.3820517857143 +2025-03-10 13:13:26,354 - INFO - CLOSED short at 2061.8 | PnL: -0.07% | $-0.32 +2025-03-10 13:13:26,374 - INFO - OPENED LONG at 2064.7 | Stop loss: 2054.360967857143 | Take profit: 2095.6937982142854 +2025-03-10 13:13:26,392 - INFO - CLOSED long at 2062.61 | PnL: -0.10% | $-0.37 +2025-03-10 13:13:26,432 - INFO - OPENED LONG at 2060.3 | Stop loss: 2049.982967857143 | Take profit: 2091.227798214286 +2025-03-10 13:13:26,484 - INFO - CLOSED long at 2061.9 | PnL: 0.08% | $-0.04 +2025-03-10 13:13:26,484 - INFO - OPENED SHORT at 2061.9 | Stop loss: 2072.2250321428573 | Take profit: 2030.9482017857144 +2025-03-10 13:13:26,526 - INFO - CLOSED short at 2064.1 | PnL: -0.11% | $-0.38 +2025-03-10 13:13:26,526 - INFO - OPENED LONG at 2064.1 | Stop loss: 2053.7639678571427 | Take profit: 2095.0847982142855 +2025-03-10 13:13:26,584 - INFO - CLOSED long at 2064.33 | PnL: 0.01% | $-0.16 +2025-03-10 13:13:26,584 - INFO - OPENED SHORT at 2064.33 | Stop loss: 2074.667182142857 | Take profit: 2033.3417517857142 +2025-03-10 13:13:26,617 - INFO - CLOSED short at 2063.39 | PnL: 0.05% | $-0.10 +2025-03-10 13:13:26,617 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.0575178571426 | Take profit: 2094.3641482142853 +2025-03-10 13:13:26,652 - INFO - CLOSED long at 2065.89 | PnL: 0.12% | $0.04 +2025-03-10 13:13:26,652 - INFO - OPENED SHORT at 2065.89 | Stop loss: 2076.234982142857 | Take profit: 2034.8783517857144 +2025-03-10 13:13:26,672 - INFO - CLOSED short at 2063.53 | PnL: 0.11% | $0.03 +2025-03-10 13:13:26,673 - INFO - OPENED LONG at 2063.53 | Stop loss: 2053.1968178571433 | Take profit: 2094.5062482142857 +2025-03-10 13:13:26,692 - INFO - CLOSED long at 2063.0 | PnL: -0.03% | $-0.23 +2025-03-10 13:13:26,711 - INFO - OPENED SHORT at 2062.6 | Stop loss: 2072.928532142857 | Take profit: 2031.6377017857142 +2025-03-10 13:13:26,732 - INFO - CLOSED short at 2061.89 | PnL: 0.03% | $-0.12 +2025-03-10 13:13:26,732 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.5650178571427 | Take profit: 2092.841648214285 +2025-03-10 13:13:26,815 - INFO - CLOSED long at 2059.61 | PnL: -0.11% | $-0.38 +2025-03-10 13:13:26,815 - INFO - OPENED SHORT at 2059.61 | Stop loss: 2069.9235821428574 | Take profit: 2028.6925517857144 +2025-03-10 13:13:26,849 - INFO - CLOSED short at 2059.16 | PnL: 0.02% | $-0.14 +2025-03-10 13:13:26,849 - INFO - OPENED LONG at 2059.16 | Stop loss: 2048.8486678571426 | Take profit: 2090.0706982142856 +2025-03-10 13:13:26,915 - INFO - CLOSED long at 2058.89 | PnL: -0.01% | $-0.20 +2025-03-10 13:13:26,915 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.199982142857 | Take profit: 2027.9833517857144 +2025-03-10 13:13:26,949 - INFO - CLOSED short at 2059.96 | PnL: -0.05% | $-0.27 +2025-03-10 13:13:26,950 - INFO - OPENED LONG at 2059.96 | Stop loss: 2049.644667857143 | Take profit: 2090.882698214286 +2025-03-10 13:13:27,014 - INFO - CLOSED long at 2057.4 | PnL: -0.12% | $-0.40 +2025-03-10 13:13:27,014 - INFO - OPENED SHORT at 2057.4 | Stop loss: 2067.7025321428573 | Take profit: 2026.5157017857146 +2025-03-10 13:13:27,033 - INFO - CLOSED short at 2058.28 | PnL: -0.04% | $-0.26 +2025-03-10 13:13:27,034 - INFO - OPENED LONG at 2058.28 | Stop loss: 2047.9730678571432 | Take profit: 2089.177498214286 +2025-03-10 13:13:27,190 - INFO - CLOSED long at 2061.5 | PnL: 0.16% | $0.10 +2025-03-10 13:13:27,370 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.564967857143 | Take profit: 2094.881798214286 +2025-03-10 13:13:27,580 - INFO - CLOSED long at 2078.01 | PnL: 0.68% | $1.05 +2025-03-10 13:13:27,580 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.415582142857 | Take profit: 2046.8165517857144 +2025-03-10 13:13:27,616 - INFO - CLOSED short at 2072.6 | PnL: 0.26% | $0.29 +2025-03-10 13:13:27,617 - INFO - OPENED LONG at 2072.6 | Stop loss: 2062.2214678571427 | Take profit: 2103.712298214286 +2025-03-10 13:13:27,855 - INFO - CLOSED long at 2069.03 | PnL: -0.17% | $-0.49 +2025-03-10 13:13:27,879 - INFO - OPENED LONG at 2067.44 | Stop loss: 2057.0872678571427 | Take profit: 2098.4748982142855 +2025-03-10 13:13:27,967 - INFO - CLOSED long at 2067.33 | PnL: -0.01% | $-0.19 +2025-03-10 13:13:28,030 - INFO - OPENED LONG at 2065.66 | Stop loss: 2055.316167857143 | Take profit: 2096.6681982142854 +2025-03-10 13:13:28,086 - INFO - CLOSED long at 2063.97 | PnL: -0.08% | $-0.33 +2025-03-10 13:13:28,086 - INFO - OPENED SHORT at 2063.97 | Stop loss: 2074.305382142857 | Take profit: 2032.987151785714 +2025-03-10 13:13:28,212 - INFO - CLOSED short at 2064.31 | PnL: -0.02% | $-0.21 +2025-03-10 13:13:28,212 - INFO - OPENED LONG at 2064.31 | Stop loss: 2053.972917857143 | Take profit: 2095.297948214286 +2025-03-10 13:13:28,431 - INFO - CLOSED long at 2069.69 | PnL: 0.26% | $0.29 +2025-03-10 13:13:28,469 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.069032142857 | Take profit: 2039.6162017857139 +2025-03-10 13:13:28,501 - INFO - CLOSED short at 2070.8 | PnL: -0.00% | $-0.19 +2025-03-10 13:13:28,501 - INFO - OPENED LONG at 2070.8 | Stop loss: 2060.430467857143 | Take profit: 2101.885298214286 +2025-03-10 13:13:28,628 - INFO - CLOSED long at 2068.67 | PnL: -0.10% | $-0.36 +2025-03-10 13:13:28,653 - INFO - OPENED SHORT at 2070.67 | Stop loss: 2081.0388821428573 | Take profit: 2039.5866517857144 +2025-03-10 13:13:28,668 - INFO - CLOSED short at 2069.78 | PnL: 0.04% | $-0.10 +2025-03-10 13:13:28,706 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.982617857143 | Take profit: 2105.508848214286 +2025-03-10 13:13:28,719 - INFO - CLOSED long at 2075.07 | PnL: 0.03% | $-0.12 +2025-03-10 13:13:28,744 - INFO - OPENED LONG at 2074.35 | Stop loss: 2063.9627178571427 | Take profit: 2105.488548214286 +2025-03-10 13:13:28,784 - INFO - CLOSED long at 2073.99 | PnL: -0.02% | $-0.21 +2025-03-10 13:13:28,785 - INFO - OPENED SHORT at 2073.99 | Stop loss: 2084.375482142857 | Take profit: 2042.856851785714 +2025-03-10 13:13:28,862 - INFO - CLOSED short at 2076.9 | PnL: -0.14% | $-0.43 +2025-03-10 13:13:28,862 - INFO - OPENED LONG at 2076.9 | Stop loss: 2066.499967857143 | Take profit: 2108.0767982142856 +2025-03-10 13:13:29,061 - INFO - STOP LOSS hit for long at 2066.499967857143 | PnL: -0.50% | $-1.06 +2025-03-10 13:13:29,089 - INFO - OPENED LONG at 2066.89 | Stop loss: 2056.5400178571426 | Take profit: 2097.9166482142855 +2025-03-10 13:13:29,107 - INFO - CLOSED long at 2067.88 | PnL: 0.05% | $-0.09 +2025-03-10 13:13:29,108 - INFO - OPENED SHORT at 2067.88 | Stop loss: 2078.2349321428574 | Take profit: 2036.8385017857145 +2025-03-10 13:13:29,127 - INFO - CLOSED short at 2065.45 | PnL: 0.12% | $0.03 +2025-03-10 13:13:29,127 - INFO - OPENED LONG at 2065.45 | Stop loss: 2055.1072178571426 | Take profit: 2096.455048214286 +2025-03-10 13:13:29,383 - INFO - CLOSED long at 2063.39 | PnL: -0.10% | $-0.35 +2025-03-10 13:13:29,383 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.722482142857 | Take profit: 2032.415851785714 +2025-03-10 13:13:29,413 - INFO - CLOSED short at 2062.34 | PnL: 0.05% | $-0.09 +2025-03-10 13:13:29,413 - INFO - OPENED LONG at 2062.34 | Stop loss: 2052.012767857143 | Take profit: 2093.2983982142855 +2025-03-10 13:13:29,485 - INFO - CLOSED long at 2064.11 | PnL: 0.09% | $-0.02 +2025-03-10 13:13:29,485 - INFO - OPENED SHORT at 2064.11 | Stop loss: 2074.4460821428574 | Take profit: 2033.1250517857143 +2025-03-10 13:13:29,519 - INFO - CLOSED short at 2066.33 | PnL: -0.11% | $-0.36 +2025-03-10 13:13:29,525 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.982817857143 | Take profit: 2097.348248214286 +2025-03-10 13:13:29,707 - INFO - STOP LOSS hit for long at 2055.982817857143 | PnL: -0.50% | $-1.04 +2025-03-10 13:13:29,747 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.9484178571429 | Take profit: 2079.971448214286 +2025-03-10 13:13:29,821 - INFO - CLOSED long at 2058.3 | PnL: 0.44% | $0.59 +2025-03-10 13:13:29,847 - INFO - OPENED LONG at 2056.85 | Stop loss: 2046.5502178571428 | Take profit: 2087.7260482142856 +2025-03-10 13:13:29,951 - INFO - CLOSED long at 2062.43 | PnL: 0.27% | $0.30 +2025-03-10 13:13:29,976 - INFO - OPENED SHORT at 2062.55 | Stop loss: 2072.878282142857 | Take profit: 2031.5884517857146 +2025-03-10 13:13:30,000 - INFO - CLOSED short at 2065.12 | PnL: -0.12% | $-0.39 +2025-03-10 13:13:30,001 - INFO - OPENED LONG at 2065.12 | Stop loss: 2054.778867857143 | Take profit: 2096.120098214286 +2025-03-10 13:13:30,177 - INFO - CLOSED long at 2059.9 | PnL: -0.25% | $-0.61 +2025-03-10 13:13:30,177 - INFO - OPENED SHORT at 2059.9 | Stop loss: 2070.215032142857 | Take profit: 2028.9782017857144 +2025-03-10 13:13:30,209 - INFO - CLOSED short at 2060.7 | PnL: -0.04% | $-0.24 +2025-03-10 13:13:30,209 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3809678571424 | Take profit: 2091.633798214286 +2025-03-10 13:13:30,362 - INFO - CLOSED long at 2070.41 | PnL: 0.47% | $0.63 +2025-03-10 13:13:30,363 - INFO - OPENED SHORT at 2070.41 | Stop loss: 2080.777582142857 | Take profit: 2039.3305517857143 +2025-03-10 13:13:30,400 - INFO - CLOSED short at 2074.05 | PnL: -0.18% | $-0.47 +2025-03-10 13:13:30,400 - INFO - OPENED LONG at 2074.05 | Stop loss: 2063.6642178571433 | Take profit: 2105.184048214286 +2025-03-10 13:13:30,549 - INFO - CLOSED long at 2076.08 | PnL: 0.10% | $-0.00 +2025-03-10 13:13:30,583 - INFO - OPENED LONG at 2077.61 | Stop loss: 2067.206417857143 | Take profit: 2108.797448214286 +2025-03-10 13:13:30,665 - INFO - TAKE PROFIT hit for long at 2108.797448214286 | PnL: 1.50% | $2.39 +2025-03-10 13:13:30,683 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.253232142857 | Take profit: 2107.4236017857143 +2025-03-10 13:13:30,701 - INFO - CLOSED short at 2131.78 | PnL: 0.36% | $0.46 +2025-03-10 13:13:30,718 - INFO - OPENED LONG at 2133.95 | Stop loss: 2123.264717857143 | Take profit: 2165.9825482142855 +2025-03-10 13:13:30,734 - INFO - CLOSED long at 2137.59 | PnL: 0.17% | $0.12 +2025-03-10 13:13:30,778 - INFO - OPENED LONG at 2141.3 | Stop loss: 2130.577967857143 | Take profit: 2173.4427982142856 +2025-03-10 13:13:30,877 - INFO - STOP LOSS hit for long at 2130.577967857143 | PnL: -0.50% | $-1.06 +2025-03-10 13:13:30,912 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.647967857143 | Take profit: 2159.2327982142856 +2025-03-10 13:13:30,969 - INFO - CLOSED long at 2121.09 | PnL: -0.29% | $-0.68 +2025-03-10 13:13:31,003 - INFO - OPENED SHORT at 2120.15 | Stop loss: 2130.766282142857 | Take profit: 2088.3244517857142 +2025-03-10 13:13:31,046 - INFO - CLOSED short at 2119.93 | PnL: 0.01% | $-0.16 +2025-03-10 13:13:31,046 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3148178571428 | Take profit: 2151.752248214286 +2025-03-10 13:13:31,089 - INFO - CLOSED long at 2118.52 | PnL: -0.07% | $-0.29 +2025-03-10 13:13:31,125 - INFO - OPENED LONG at 2119.07 | Stop loss: 2108.459117857143 | Take profit: 2150.8793482142855 +2025-03-10 13:13:31,152 - INFO - CLOSED long at 2115.28 | PnL: -0.18% | $-0.48 +2025-03-10 13:13:31,171 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.8773178571428 | Take profit: 2139.0647482142854 +2025-03-10 13:13:31,268 - INFO - CLOSED long at 2112.95 | PnL: 0.26% | $0.28 +2025-03-10 13:13:31,268 - INFO - OPENED SHORT at 2112.95 | Stop loss: 2123.5302821428572 | Take profit: 2081.232451785714 +2025-03-10 13:13:31,303 - INFO - CLOSED short at 2112.46 | PnL: 0.02% | $-0.13 +2025-03-10 13:13:31,361 - INFO - OPENED LONG at 2112.99 | Stop loss: 2102.4095178571424 | Take profit: 2144.7081482142853 +2025-03-10 13:13:31,441 - INFO - CLOSED long at 2114.8 | PnL: 0.09% | $-0.02 +2025-03-10 13:13:31,481 - INFO - OPENED LONG at 2108.71 | Stop loss: 2098.1509178571428 | Take profit: 2140.3639482142858 +2025-03-10 13:13:31,575 - INFO - STOP LOSS hit for long at 2098.1509178571428 | PnL: -0.50% | $-1.03 +2025-03-10 13:13:31,600 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.016817857143 | Take profit: 2131.046248214286 +2025-03-10 13:13:31,661 - INFO - CLOSED long at 2102.19 | PnL: 0.13% | $0.05 +2025-03-10 13:13:31,662 - INFO - OPENED SHORT at 2102.19 | Stop loss: 2112.716482142857 | Take profit: 2070.6338517857143 +2025-03-10 13:13:31,693 - INFO - CLOSED short at 2102.29 | PnL: -0.00% | $-0.18 +2025-03-10 13:13:31,727 - INFO - OPENED LONG at 2099.25 | Stop loss: 2088.738217857143 | Take profit: 2130.7620482142856 +2025-03-10 13:13:31,845 - INFO - CLOSED long at 2100.74 | PnL: 0.07% | $-0.05 +2025-03-10 13:13:31,845 - INFO - OPENED SHORT at 2100.74 | Stop loss: 2111.259232142857 | Take profit: 2069.205601785714 +2025-03-10 13:13:31,869 - INFO - CLOSED short at 2103.86 | PnL: -0.15% | $-0.42 +2025-03-10 13:13:31,870 - INFO - OPENED LONG at 2103.86 | Stop loss: 2093.3251678571432 | Take profit: 2135.4411982142856 +2025-03-10 13:13:31,960 - INFO - CLOSED long at 2098.39 | PnL: -0.26% | $-0.61 +2025-03-10 13:13:31,960 - INFO - OPENED SHORT at 2098.39 | Stop loss: 2108.8974821428574 | Take profit: 2066.890851785714 +2025-03-10 13:13:31,981 - INFO - CLOSED short at 2095.29 | PnL: 0.15% | $0.08 +2025-03-10 13:13:31,981 - INFO - OPENED LONG at 2095.29 | Stop loss: 2084.798017857143 | Take profit: 2126.742648214286 +2025-03-10 13:13:32,190 - INFO - STOP LOSS hit for long at 2084.798017857143 | PnL: -0.50% | $-1.01 +2025-03-10 13:13:32,236 - INFO - OPENED LONG at 2083.97 | Stop loss: 2073.5346178571426 | Take profit: 2115.2528482142857 +2025-03-10 13:13:32,253 - INFO - CLOSED long at 2085.3 | PnL: 0.06% | $-0.06 +2025-03-10 13:13:32,253 - INFO - OPENED SHORT at 2085.3 | Stop loss: 2095.742032142857 | Take profit: 2053.9972017857144 +2025-03-10 13:13:32,265 - INFO - CLOSED short at 2082.44 | PnL: 0.14% | $0.06 +2025-03-10 13:13:32,265 - INFO - OPENED LONG at 2082.44 | Stop loss: 2072.012267857143 | Take profit: 2113.699898214286 +2025-03-10 13:13:32,289 - INFO - CLOSED long at 2081.49 | PnL: -0.05% | $-0.24 +2025-03-10 13:13:32,309 - INFO - OPENED LONG at 2080.38 | Stop loss: 2069.962567857143 | Take profit: 2111.6089982142857 +2025-03-10 13:13:32,512 - INFO - CLOSED long at 2085.85 | PnL: 0.26% | $0.27 +2025-03-10 13:13:32,550 - INFO - OPENED LONG at 2088.66 | Stop loss: 2078.2011678571425 | Take profit: 2120.0131982142857 +2025-03-10 13:13:32,724 - INFO - CLOSED long at 2085.67 | PnL: -0.14% | $-0.40 +2025-03-10 13:13:32,724 - INFO - OPENED SHORT at 2085.67 | Stop loss: 2096.113882142857 | Take profit: 2054.3616517857145 +2025-03-10 13:13:32,780 - INFO - CLOSED short at 2091.05 | PnL: -0.26% | $-0.59 +2025-03-10 13:13:32,781 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.579217857143 | Take profit: 2122.4390482142862 +2025-03-10 13:13:32,801 - INFO - CLOSED long at 2091.95 | PnL: 0.04% | $-0.09 +2025-03-10 13:13:32,831 - INFO - OPENED LONG at 2094.7 | Stop loss: 2084.210967857143 | Take profit: 2126.1437982142857 +2025-03-10 13:13:32,998 - INFO - CLOSED long at 2099.89 | PnL: 0.25% | $0.24 +2025-03-10 13:13:32,998 - INFO - OPENED SHORT at 2099.89 | Stop loss: 2110.404982142857 | Take profit: 2068.368351785714 +2025-03-10 13:13:33,023 - INFO - CLOSED short at 2100.89 | PnL: -0.05% | $-0.24 +2025-03-10 13:13:33,023 - INFO - OPENED LONG at 2100.89 | Stop loss: 2090.370017857143 | Take profit: 2132.4266482142853 +2025-03-10 13:13:33,199 - INFO - CLOSED long at 2105.2 | PnL: 0.21% | $0.17 +2025-03-10 13:13:33,199 - INFO - OPENED SHORT at 2105.2 | Stop loss: 2115.741532142857 | Take profit: 2073.598701785714 +2025-03-10 13:13:33,235 - INFO - CLOSED short at 2103.52 | PnL: 0.08% | $-0.03 +2025-03-10 13:13:33,236 - INFO - OPENED LONG at 2103.52 | Stop loss: 2092.986867857143 | Take profit: 2135.0960982142856 +2025-03-10 13:13:33,295 - INFO - Trade Analysis: Win Rate=19.0% in uptrends, 0.0% in downtrends | Avg Win=$0.34, Avg Loss=$-0.31 +2025-03-10 13:13:33,296 - INFO - Episode 9: Reward=70.44, Balance=$82.39, Win Rate=24.1%, Trades=116, Episode PnL=$-12.47, Total PnL=$-225.28, Max Drawdown=17.8%, Pred Accuracy=99.8% +2025-03-10 13:13:33,296 - ERROR - Error in episode 9: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:13:33,297 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:13:33,317 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:13:33,564 - INFO - OPENED SHORT at 2046.58 | Stop loss: 2056.8284321428573 | Take profit: 2015.8580017857144 +2025-03-10 13:13:33,603 - INFO - CLOSED short at 2047.2 | PnL: -0.03% | $-0.26 +2025-03-10 13:13:33,603 - INFO - OPENED LONG at 2047.2 | Stop loss: 2036.9484678571428 | Take profit: 2077.931298214286 +2025-03-10 13:13:33,745 - INFO - CLOSED long at 2050.24 | PnL: 0.15% | $0.10 +2025-03-10 13:13:33,745 - INFO - OPENED SHORT at 2050.24 | Stop loss: 2060.506732142857 | Take profit: 2019.4631017857141 +2025-03-10 13:13:33,770 - INFO - CLOSED short at 2049.89 | PnL: 0.02% | $-0.16 +2025-03-10 13:13:33,771 - INFO - OPENED LONG at 2049.89 | Stop loss: 2039.6250178571427 | Take profit: 2080.661648214286 +2025-03-10 13:13:33,785 - INFO - CLOSED long at 2051.11 | PnL: 0.06% | $-0.08 +2025-03-10 13:13:33,807 - INFO - OPENED SHORT at 2053.26 | Stop loss: 2063.5418321428574 | Take profit: 2022.4378017857143 +2025-03-10 13:13:33,828 - INFO - CLOSED short at 2051.89 | PnL: 0.07% | $-0.07 +2025-03-10 13:13:33,828 - INFO - OPENED LONG at 2051.89 | Stop loss: 2041.6150178571427 | Take profit: 2082.6916482142856 +2025-03-10 13:13:34,017 - INFO - CLOSED long at 2059.7 | PnL: 0.38% | $0.55 +2025-03-10 13:13:34,017 - INFO - OPENED SHORT at 2059.7 | Stop loss: 2070.014032142857 | Take profit: 2028.781201785714 +2025-03-10 13:13:34,041 - INFO - CLOSED short at 2061.49 | PnL: -0.09% | $-0.37 +2025-03-10 13:13:34,041 - INFO - OPENED LONG at 2061.49 | Stop loss: 2051.1670178571426 | Take profit: 2092.4356482142853 +2025-03-10 13:13:34,096 - INFO - CLOSED long at 2063.59 | PnL: 0.10% | $0.00 +2025-03-10 13:13:34,118 - INFO - OPENED LONG at 2061.61 | Stop loss: 2051.286417857143 | Take profit: 2092.557448214286 +2025-03-10 13:13:34,150 - INFO - CLOSED long at 2063.01 | PnL: 0.07% | $-0.06 +2025-03-10 13:13:34,150 - INFO - OPENED SHORT at 2063.01 | Stop loss: 2073.3405821428573 | Take profit: 2032.0415517857145 +2025-03-10 13:13:34,175 - INFO - CLOSED short at 2060.99 | PnL: 0.10% | $-0.00 +2025-03-10 13:13:34,175 - INFO - OPENED LONG at 2060.99 | Stop loss: 2050.6695178571426 | Take profit: 2091.9281482142856 +2025-03-10 13:13:34,361 - INFO - CLOSED long at 2057.8 | PnL: -0.15% | $-0.50 +2025-03-10 13:13:34,396 - INFO - OPENED LONG at 2057.89 | Stop loss: 2047.5850178571427 | Take profit: 2088.7816482142853 +2025-03-10 13:13:34,411 - INFO - CLOSED long at 2057.94 | PnL: 0.00% | $-0.19 +2025-03-10 13:13:34,433 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.803917857143 | Take profit: 2089.004948214286 +2025-03-10 13:13:34,452 - INFO - CLOSED long at 2061.79 | PnL: 0.18% | $0.15 +2025-03-10 13:13:34,470 - INFO - OPENED LONG at 2061.18 | Stop loss: 2050.8585678571426 | Take profit: 2092.1209982142855 +2025-03-10 13:13:34,626 - INFO - CLOSED long at 2070.99 | PnL: 0.48% | $0.74 +2025-03-10 13:13:34,626 - INFO - OPENED SHORT at 2070.99 | Stop loss: 2081.360482142857 | Take profit: 2039.9018517857141 +2025-03-10 13:13:34,664 - INFO - CLOSED short at 2069.6 | PnL: 0.07% | $-0.07 +2025-03-10 13:13:34,664 - INFO - OPENED LONG at 2069.6 | Stop loss: 2059.236467857143 | Take profit: 2100.6672982142854 +2025-03-10 13:13:34,750 - INFO - CLOSED long at 2067.9 | PnL: -0.08% | $-0.36 +2025-03-10 13:13:34,750 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.255032142857 | Take profit: 2036.8582017857143 +2025-03-10 13:13:34,787 - INFO - CLOSED short at 2067.69 | PnL: 0.01% | $-0.18 +2025-03-10 13:13:34,787 - INFO - OPENED LONG at 2067.69 | Stop loss: 2057.336017857143 | Take profit: 2098.7286482142854 +2025-03-10 13:13:34,836 - INFO - CLOSED long at 2071.44 | PnL: 0.18% | $0.16 +2025-03-10 13:13:34,836 - INFO - OPENED SHORT at 2071.44 | Stop loss: 2081.8127321428574 | Take profit: 2040.3451017857144 +2025-03-10 13:13:34,875 - INFO - CLOSED short at 2075.1 | PnL: -0.18% | $-0.55 +2025-03-10 13:13:34,876 - INFO - OPENED LONG at 2075.1 | Stop loss: 2064.708967857143 | Take profit: 2106.2497982142854 +2025-03-10 13:13:35,004 - INFO - CLOSED long at 2072.8 | PnL: -0.11% | $-0.41 +2025-03-10 13:13:35,004 - INFO - OPENED SHORT at 2072.8 | Stop loss: 2083.1795321428576 | Take profit: 2041.6847017857144 +2025-03-10 13:13:35,035 - INFO - CLOSED short at 2070.79 | PnL: 0.10% | $-0.01 +2025-03-10 13:13:35,094 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.375632142857 | Take profit: 2036.9764017857142 +2025-03-10 13:13:35,127 - INFO - CLOSED short at 2067.2 | PnL: 0.04% | $-0.12 +2025-03-10 13:13:35,128 - INFO - OPENED LONG at 2067.2 | Stop loss: 2056.8484678571426 | Take profit: 2098.2312982142853 +2025-03-10 13:13:35,156 - INFO - CLOSED long at 2070.36 | PnL: 0.15% | $0.10 +2025-03-10 13:13:35,193 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.539967857143 | Take profit: 2099.956798214286 +2025-03-10 13:13:35,251 - INFO - CLOSED long at 2069.19 | PnL: 0.01% | $-0.17 +2025-03-10 13:13:35,252 - INFO - OPENED SHORT at 2069.19 | Stop loss: 2079.551482142857 | Take profit: 2038.1288517857145 +2025-03-10 13:13:35,271 - INFO - CLOSED short at 2068.8 | PnL: 0.02% | $-0.16 +2025-03-10 13:13:35,271 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.440467857143 | Take profit: 2099.855298214286 +2025-03-10 13:13:35,538 - INFO - CLOSED long at 2068.51 | PnL: -0.01% | $-0.22 +2025-03-10 13:13:35,538 - INFO - OPENED SHORT at 2068.51 | Stop loss: 2078.8680821428575 | Take profit: 2037.4590517857146 +2025-03-10 13:13:35,578 - INFO - CLOSED short at 2068.59 | PnL: -0.00% | $-0.20 +2025-03-10 13:13:35,578 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.231517857143 | Take profit: 2099.642148214286 +2025-03-10 13:13:35,842 - INFO - CLOSED long at 2071.92 | PnL: 0.16% | $0.12 +2025-03-10 13:13:35,842 - INFO - OPENED SHORT at 2071.92 | Stop loss: 2082.2951321428573 | Take profit: 2040.8179017857142 +2025-03-10 13:13:35,879 - INFO - CLOSED short at 2070.4 | PnL: 0.07% | $-0.05 +2025-03-10 13:13:35,879 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.032467857143 | Take profit: 2101.479298214286 +2025-03-10 13:13:36,052 - INFO - CLOSED long at 2067.46 | PnL: -0.14% | $-0.47 +2025-03-10 13:13:36,110 - INFO - OPENED LONG at 2063.61 | Stop loss: 2053.276417857143 | Take profit: 2094.587448214286 +2025-03-10 13:13:36,277 - INFO - CLOSED long at 2067.59 | PnL: 0.19% | $0.18 +2025-03-10 13:13:36,308 - INFO - OPENED LONG at 2069.2 | Stop loss: 2058.8384678571424 | Take profit: 2100.2612982142855 +2025-03-10 13:13:36,526 - INFO - CLOSED long at 2067.86 | PnL: -0.06% | $-0.32 +2025-03-10 13:13:36,552 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.052467857143 | Take profit: 2097.4192982142854 +2025-03-10 13:13:36,584 - INFO - CLOSED long at 2065.28 | PnL: -0.05% | $-0.30 +2025-03-10 13:13:36,606 - INFO - OPENED LONG at 2066.39 | Stop loss: 2056.0425178571427 | Take profit: 2097.409148214286 +2025-03-10 13:13:36,705 - INFO - CLOSED long at 2067.8 | PnL: 0.07% | $-0.06 +2025-03-10 13:13:36,738 - INFO - OPENED SHORT at 2068.18 | Stop loss: 2078.536432142857 | Take profit: 2037.1340017857142 +2025-03-10 13:13:36,771 - INFO - CLOSED short at 2065.69 | PnL: 0.12% | $0.04 +2025-03-10 13:13:36,774 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.346017857143 | Take profit: 2096.6986482142856 +2025-03-10 13:13:37,298 - INFO - CLOSED long at 2062.89 | PnL: -0.14% | $-0.45 +2025-03-10 13:13:37,325 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.161967857143 | Take profit: 2095.490798214286 +2025-03-10 13:13:37,511 - INFO - CLOSED long at 2061.8 | PnL: -0.13% | $-0.44 +2025-03-10 13:13:37,545 - INFO - OPENED LONG at 2064.7 | Stop loss: 2054.360967857143 | Take profit: 2095.6937982142854 +2025-03-10 13:13:37,602 - INFO - CLOSED long at 2060.91 | PnL: -0.18% | $-0.54 +2025-03-10 13:13:37,602 - INFO - OPENED SHORT at 2060.91 | Stop loss: 2071.230082142857 | Take profit: 2029.973051785714 +2025-03-10 13:13:37,626 - INFO - CLOSED short at 2060.3 | PnL: 0.03% | $-0.13 +2025-03-10 13:13:37,626 - INFO - OPENED LONG at 2060.3 | Stop loss: 2049.982967857143 | Take profit: 2091.227798214286 +2025-03-10 13:13:37,666 - INFO - CLOSED long at 2061.9 | PnL: 0.08% | $-0.04 +2025-03-10 13:13:37,667 - INFO - OPENED SHORT at 2061.9 | Stop loss: 2072.2250321428573 | Take profit: 2030.9482017857144 +2025-03-10 13:13:37,684 - INFO - CLOSED short at 2064.1 | PnL: -0.11% | $-0.39 +2025-03-10 13:13:37,706 - INFO - OPENED LONG at 2065.36 | Stop loss: 2055.017667857143 | Take profit: 2096.363698214286 +2025-03-10 13:13:38,062 - INFO - CLOSED long at 2058.89 | PnL: -0.31% | $-0.78 +2025-03-10 13:13:38,091 - INFO - OPENED LONG at 2059.96 | Stop loss: 2049.644667857143 | Take profit: 2090.882698214286 +2025-03-10 13:13:38,171 - INFO - CLOSED long at 2056.28 | PnL: -0.18% | $-0.52 +2025-03-10 13:13:38,181 - INFO - OPENED SHORT at 2056.28 | Stop loss: 2066.5769321428575 | Take profit: 2025.4125017857145 +2025-03-10 13:13:38,284 - INFO - CLOSED short at 2054.83 | PnL: 0.07% | $-0.05 +2025-03-10 13:13:38,284 - INFO - OPENED LONG at 2054.83 | Stop loss: 2044.5403178571428 | Take profit: 2085.6757482142852 +2025-03-10 13:13:38,320 - INFO - CLOSED long at 2056.71 | PnL: 0.09% | $-0.02 +2025-03-10 13:13:38,321 - INFO - OPENED SHORT at 2056.71 | Stop loss: 2067.0090821428576 | Take profit: 2025.8360517857145 +2025-03-10 13:13:38,366 - INFO - CLOSED short at 2058.15 | PnL: -0.07% | $-0.32 +2025-03-10 13:13:38,367 - INFO - OPENED LONG at 2058.15 | Stop loss: 2047.843717857143 | Take profit: 2089.045548214286 +2025-03-10 13:13:38,501 - INFO - CLOSED long at 2062.69 | PnL: 0.22% | $0.22 +2025-03-10 13:13:38,501 - INFO - OPENED SHORT at 2062.69 | Stop loss: 2073.018982142857 | Take profit: 2031.7263517857143 +2025-03-10 13:13:38,522 - INFO - CLOSED short at 2063.4 | PnL: -0.03% | $-0.25 +2025-03-10 13:13:38,522 - INFO - OPENED LONG at 2063.4 | Stop loss: 2053.0674678571427 | Take profit: 2094.374298214286 +2025-03-10 13:13:38,572 - INFO - CLOSED long at 2063.9 | PnL: 0.02% | $-0.14 +2025-03-10 13:13:38,614 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.982817857143 | Take profit: 2097.348248214286 +2025-03-10 13:13:38,768 - INFO - CLOSED long at 2065.69 | PnL: -0.03% | $-0.24 +2025-03-10 13:13:38,768 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.0339821428574 | Take profit: 2034.6813517857142 +2025-03-10 13:13:38,809 - INFO - CLOSED short at 2069.79 | PnL: -0.20% | $-0.55 +2025-03-10 13:13:38,809 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.425517857143 | Take profit: 2100.860148214286 +2025-03-10 13:13:38,844 - INFO - CLOSED long at 2074.3 | PnL: 0.22% | $0.22 +2025-03-10 13:13:38,869 - INFO - OPENED LONG at 2078.01 | Stop loss: 2067.604417857143 | Take profit: 2109.203448214286 +2025-03-10 13:13:38,925 - INFO - CLOSED long at 2071.04 | PnL: -0.34% | $-0.80 +2025-03-10 13:13:38,925 - INFO - OPENED SHORT at 2071.04 | Stop loss: 2081.4107321428573 | Take profit: 2039.9511017857142 +2025-03-10 13:13:38,947 - INFO - CLOSED short at 2070.01 | PnL: 0.05% | $-0.09 +2025-03-10 13:13:38,968 - INFO - OPENED LONG at 2071.6 | Stop loss: 2061.226467857143 | Take profit: 2102.6972982142856 +2025-03-10 13:13:39,020 - INFO - CLOSED long at 2070.0 | PnL: -0.08% | $-0.32 +2025-03-10 13:13:39,086 - INFO - OPENED SHORT at 2068.39 | Stop loss: 2078.747482142857 | Take profit: 2037.3408517857142 +2025-03-10 13:13:39,125 - INFO - CLOSED short at 2069.69 | PnL: -0.06% | $-0.29 +2025-03-10 13:13:39,125 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.3260178571427 | Take profit: 2100.758648214286 +2025-03-10 13:13:39,269 - INFO - CLOSED long at 2069.87 | PnL: 0.01% | $-0.16 +2025-03-10 13:13:39,292 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.977817857143 | Take profit: 2098.3632482142857 +2025-03-10 13:13:39,310 - INFO - CLOSED long at 2066.38 | PnL: -0.05% | $-0.26 +2025-03-10 13:13:39,311 - INFO - OPENED SHORT at 2066.38 | Stop loss: 2076.7274321428577 | Take profit: 2035.3610017857145 +2025-03-10 13:13:39,327 - INFO - CLOSED short at 2065.7 | PnL: 0.03% | $-0.12 +2025-03-10 13:13:39,327 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.355967857143 | Take profit: 2096.7087982142857 +2025-03-10 13:13:39,518 - INFO - CLOSED long at 2065.5 | PnL: -0.01% | $-0.20 +2025-03-10 13:13:39,519 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.843032142857 | Take profit: 2034.4942017857143 +2025-03-10 13:13:39,552 - INFO - CLOSED short at 2067.53 | PnL: -0.10% | $-0.35 +2025-03-10 13:13:39,552 - INFO - OPENED LONG at 2067.53 | Stop loss: 2057.176817857143 | Take profit: 2098.566248214286 +2025-03-10 13:13:39,577 - INFO - CLOSED long at 2065.29 | PnL: -0.11% | $-0.37 +2025-03-10 13:13:39,608 - INFO - OPENED LONG at 2065.31 | Stop loss: 2054.9679178571428 | Take profit: 2096.3129482142854 +2025-03-10 13:13:39,691 - INFO - CLOSED long at 2070.2 | PnL: 0.24% | $0.24 +2025-03-10 13:13:39,720 - INFO - OPENED LONG at 2071.35 | Stop loss: 2060.9777178571426 | Take profit: 2102.443548214286 +2025-03-10 13:13:39,798 - INFO - CLOSED long at 2070.35 | PnL: -0.05% | $-0.26 +2025-03-10 13:13:39,798 - INFO - OPENED SHORT at 2070.35 | Stop loss: 2080.717282142857 | Take profit: 2039.2714517857144 +2025-03-10 13:13:39,842 - INFO - CLOSED short at 2070.61 | PnL: -0.01% | $-0.20 +2025-03-10 13:13:39,842 - INFO - OPENED LONG at 2070.61 | Stop loss: 2060.241417857143 | Take profit: 2101.692448214286 +2025-03-10 13:13:40,029 - INFO - CLOSED long at 2074.37 | PnL: 0.18% | $0.14 +2025-03-10 13:13:40,029 - INFO - OPENED SHORT at 2074.37 | Stop loss: 2084.7573821428573 | Take profit: 2043.2311517857142 +2025-03-10 13:13:40,069 - INFO - CLOSED short at 2074.35 | PnL: 0.00% | $-0.18 +2025-03-10 13:13:40,069 - INFO - OPENED LONG at 2074.35 | Stop loss: 2063.9627178571427 | Take profit: 2105.488548214286 +2025-03-10 13:13:40,110 - INFO - CLOSED long at 2073.99 | PnL: -0.02% | $-0.21 +2025-03-10 13:13:40,110 - INFO - OPENED SHORT at 2073.99 | Stop loss: 2084.375482142857 | Take profit: 2042.856851785714 +2025-03-10 13:13:40,126 - INFO - CLOSED short at 2075.32 | PnL: -0.06% | $-0.29 +2025-03-10 13:13:40,126 - INFO - OPENED LONG at 2075.32 | Stop loss: 2064.927867857143 | Take profit: 2106.473098214286 +2025-03-10 13:13:40,184 - INFO - CLOSED long at 2075.61 | PnL: 0.01% | $-0.15 +2025-03-10 13:13:40,202 - INFO - OPENED LONG at 2074.0 | Stop loss: 2063.6144678571427 | Take profit: 2105.133298214286 +2025-03-10 13:13:40,287 - INFO - CLOSED long at 2067.7 | PnL: -0.30% | $-0.71 +2025-03-10 13:13:40,318 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.350532142857 | Take profit: 2035.9717017857142 +2025-03-10 13:13:40,353 - INFO - CLOSED short at 2067.9 | PnL: -0.04% | $-0.25 +2025-03-10 13:13:40,353 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.544967857143 | Take profit: 2098.941798214286 +2025-03-10 13:13:40,382 - INFO - CLOSED long at 2066.4 | PnL: -0.07% | $-0.30 +2025-03-10 13:13:40,382 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.7475321428574 | Take profit: 2035.3807017857143 +2025-03-10 13:13:40,413 - INFO - CLOSED short at 2066.89 | PnL: -0.02% | $-0.21 +2025-03-10 13:13:40,413 - INFO - OPENED LONG at 2066.89 | Stop loss: 2056.5400178571426 | Take profit: 2097.9166482142855 +2025-03-10 13:13:40,572 - INFO - CLOSED long at 2065.7 | PnL: -0.06% | $-0.27 +2025-03-10 13:13:40,572 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.044032142857 | Take profit: 2034.691201785714 +2025-03-10 13:13:40,595 - INFO - CLOSED short at 2065.8 | PnL: -0.00% | $-0.18 +2025-03-10 13:13:40,613 - INFO - OPENED SHORT at 2065.07 | Stop loss: 2075.4108821428576 | Take profit: 2034.0706517857145 +2025-03-10 13:13:40,643 - INFO - CLOSED short at 2066.09 | PnL: -0.05% | $-0.26 +2025-03-10 13:13:40,643 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.744017857143 | Take profit: 2097.1046482142856 +2025-03-10 13:13:40,675 - INFO - CLOSED long at 2063.39 | PnL: -0.13% | $-0.40 +2025-03-10 13:13:40,709 - INFO - OPENED LONG at 2062.34 | Stop loss: 2052.012767857143 | Take profit: 2093.2983982142855 +2025-03-10 13:13:40,769 - INFO - CLOSED long at 2066.1 | PnL: 0.18% | $0.14 +2025-03-10 13:13:40,798 - INFO - OPENED LONG at 2065.06 | Stop loss: 2054.719167857143 | Take profit: 2096.0591982142855 +2025-03-10 13:13:40,820 - INFO - CLOSED long at 2064.11 | PnL: -0.05% | $-0.25 +2025-03-10 13:13:40,840 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.161967857143 | Take profit: 2095.490798214286 +2025-03-10 13:13:40,954 - INFO - CLOSED long at 2058.09 | PnL: -0.31% | $-0.70 +2025-03-10 13:13:40,975 - INFO - OPENED LONG at 2058.65 | Stop loss: 2048.341217857143 | Take profit: 2089.553048214286 +2025-03-10 13:13:41,093 - INFO - CLOSED long at 2051.99 | PnL: -0.32% | $-0.72 +2025-03-10 13:13:41,093 - INFO - OPENED SHORT at 2051.99 | Stop loss: 2062.265482142857 | Take profit: 2021.186851785714 +2025-03-10 13:13:41,134 - INFO - CLOSED short at 2058.3 | PnL: -0.31% | $-0.68 +2025-03-10 13:13:41,134 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9929678571432 | Take profit: 2089.1977982142857 +2025-03-10 13:13:41,254 - INFO - CLOSED long at 2063.9 | PnL: 0.27% | $0.29 +2025-03-10 13:13:41,279 - INFO - OPENED LONG at 2065.1 | Stop loss: 2054.758967857143 | Take profit: 2096.099798214286 +2025-03-10 13:13:41,555 - INFO - CLOSED long at 2062.54 | PnL: -0.12% | $-0.37 +2025-03-10 13:13:41,555 - INFO - OPENED SHORT at 2062.54 | Stop loss: 2072.868232142857 | Take profit: 2031.5786017857142 +2025-03-10 13:13:41,587 - INFO - CLOSED short at 2065.72 | PnL: -0.15% | $-0.42 +2025-03-10 13:13:41,587 - INFO - OPENED LONG at 2065.72 | Stop loss: 2055.3758678571426 | Take profit: 2096.729098214286 +2025-03-10 13:13:41,686 - INFO - CLOSED long at 2070.41 | PnL: 0.23% | $0.21 +2025-03-10 13:13:41,701 - INFO - OPENED SHORT at 2073.49 | Stop loss: 2083.872982142857 | Take profit: 2042.364351785714 +2025-03-10 13:13:41,742 - INFO - CLOSED short at 2072.99 | PnL: 0.02% | $-0.13 +2025-03-10 13:13:41,743 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6095178571427 | Take profit: 2104.1081482142854 +2025-03-10 13:13:41,760 - INFO - CLOSED long at 2071.89 | PnL: -0.05% | $-0.25 +2025-03-10 13:13:41,760 - INFO - OPENED SHORT at 2071.89 | Stop loss: 2082.2649821428568 | Take profit: 2040.7883517857142 +2025-03-10 13:13:41,780 - INFO - CLOSED short at 2071.8 | PnL: 0.00% | $-0.16 +2025-03-10 13:13:41,780 - INFO - OPENED LONG at 2071.8 | Stop loss: 2061.4254678571433 | Take profit: 2102.9002982142856 +2025-03-10 13:13:41,825 - INFO - CLOSED long at 2076.08 | PnL: 0.21% | $0.18 +2025-03-10 13:13:41,825 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.475932142857 | Take profit: 2044.9155017857142 +2025-03-10 13:13:41,890 - INFO - CLOSED short at 2085.56 | PnL: -0.46% | $-0.92 +2025-03-10 13:13:41,890 - INFO - OPENED LONG at 2085.56 | Stop loss: 2075.116667857143 | Take profit: 2116.866698214286 +2025-03-10 13:13:41,979 - INFO - TAKE PROFIT hit for long at 2116.866698214286 | PnL: 1.50% | $2.28 +2025-03-10 13:13:42,030 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.105567857143 | Take profit: 2163.7799982142856 +2025-03-10 13:13:42,051 - INFO - CLOSED long at 2133.95 | PnL: 0.10% | $0.00 +2025-03-10 13:13:42,075 - INFO - OPENED LONG at 2137.59 | Stop loss: 2126.8865178571427 | Take profit: 2169.677148214286 +2025-03-10 13:13:42,251 - INFO - CLOSED long at 2128.69 | PnL: -0.42% | $-0.87 +2025-03-10 13:13:42,251 - INFO - OPENED SHORT at 2128.69 | Stop loss: 2139.348982142857 | Take profit: 2096.7363517857143 +2025-03-10 13:13:42,281 - INFO - CLOSED short at 2121.09 | PnL: 0.36% | $0.43 +2025-03-10 13:13:42,319 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.533717857143 | Take profit: 2151.9755482142855 +2025-03-10 13:13:42,403 - INFO - CLOSED long at 2121.4 | PnL: 0.06% | $-0.07 +2025-03-10 13:13:42,428 - INFO - OPENED LONG at 2118.52 | Stop loss: 2107.9118678571426 | Take profit: 2150.321098214286 +2025-03-10 13:13:42,500 - INFO - STOP LOSS hit for long at 2107.9118678571426 | PnL: -0.50% | $-1.00 +2025-03-10 13:13:42,526 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.0314678571426 | Take profit: 2142.282298214285 +2025-03-10 13:13:42,830 - INFO - CLOSED long at 2108.06 | PnL: -0.12% | $-0.36 +2025-03-10 13:13:42,859 - INFO - OPENED LONG at 2103.33 | Stop loss: 2092.797817857143 | Take profit: 2134.9032482142857 +2025-03-10 13:13:42,900 - INFO - STOP LOSS hit for long at 2092.797817857143 | PnL: -0.50% | $-0.98 +2025-03-10 13:13:42,917 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.016817857143 | Take profit: 2131.046248214286 +2025-03-10 13:13:42,984 - INFO - CLOSED long at 2099.25 | PnL: -0.01% | $-0.18 +2025-03-10 13:13:43,010 - INFO - OPENED LONG at 2098.9 | Stop loss: 2088.389967857143 | Take profit: 2130.4067982142856 +2025-03-10 13:13:43,193 - INFO - CLOSED long at 2104.68 | PnL: 0.28% | $0.28 +2025-03-10 13:13:43,234 - INFO - OPENED LONG at 2099.59 | Stop loss: 2089.0765178571432 | Take profit: 2131.1071482142856 +2025-03-10 13:13:43,252 - INFO - CLOSED long at 2100.02 | PnL: 0.02% | $-0.13 +2025-03-10 13:13:43,308 - INFO - OPENED LONG at 2093.46 | Stop loss: 2082.977167857143 | Take profit: 2124.8851982142855 +2025-03-10 13:13:43,341 - INFO - CLOSED long at 2092.46 | PnL: -0.05% | $-0.24 +2025-03-10 13:13:43,362 - INFO - OPENED LONG at 2091.1 | Stop loss: 2080.628967857143 | Take profit: 2122.4897982142857 +2025-03-10 13:13:43,533 - INFO - CLOSED long at 2085.3 | PnL: -0.28% | $-0.61 +2025-03-10 13:13:43,567 - INFO - OPENED LONG at 2082.44 | Stop loss: 2072.012267857143 | Take profit: 2113.699898214286 +2025-03-10 13:13:43,717 - INFO - CLOSED long at 2085.8 | PnL: 0.16% | $0.10 +2025-03-10 13:13:43,717 - INFO - OPENED SHORT at 2085.8 | Stop loss: 2096.244532142857 | Take profit: 2054.4897017857147 +2025-03-10 13:13:43,735 - INFO - CLOSED short at 2084.72 | PnL: 0.05% | $-0.08 +2025-03-10 13:13:43,741 - INFO - OPENED LONG at 2084.72 | Stop loss: 2074.2808678571428 | Take profit: 2116.0140982142852 +2025-03-10 13:13:43,887 - INFO - CLOSED long at 2087.0 | PnL: 0.11% | $0.02 +2025-03-10 13:13:43,887 - INFO - OPENED SHORT at 2087.0 | Stop loss: 2097.4505321428574 | Take profit: 2055.671701785714 +2025-03-10 13:13:43,951 - INFO - CLOSED short at 2087.78 | PnL: -0.04% | $-0.22 +2025-03-10 13:13:43,951 - INFO - OPENED LONG at 2087.78 | Stop loss: 2077.325567857143 | Take profit: 2119.1199982142857 +2025-03-10 13:13:43,979 - INFO - CLOSED long at 2086.81 | PnL: -0.05% | $-0.23 +2025-03-10 13:13:43,980 - INFO - OPENED SHORT at 2086.81 | Stop loss: 2097.259582142857 | Take profit: 2055.4845517857143 +2025-03-10 13:13:44,009 - INFO - CLOSED short at 2089.79 | PnL: -0.14% | $-0.39 +2025-03-10 13:13:44,009 - INFO - OPENED LONG at 2089.79 | Stop loss: 2079.325517857143 | Take profit: 2121.1601482142855 +2025-03-10 13:13:44,136 - INFO - CLOSED long at 2097.8 | PnL: 0.38% | $0.45 +2025-03-10 13:13:44,150 - INFO - OPENED LONG at 2099.99 | Stop loss: 2089.4745178571425 | Take profit: 2131.513148214285 +2025-03-10 13:13:44,346 - INFO - CLOSED long at 2103.48 | PnL: 0.17% | $0.11 +2025-03-10 13:13:44,380 - INFO - OPENED LONG at 2104.93 | Stop loss: 2094.3898178571426 | Take profit: 2136.527248214286 +2025-03-10 13:13:44,485 - INFO - CLOSED long at 2103.64 | PnL: -0.06% | $-0.26 +2025-03-10 13:13:44,501 - INFO - OPENED LONG at 2105.2 | Stop loss: 2094.6584678571426 | Take profit: 2136.8012982142855 +2025-03-10 13:13:44,565 - INFO - Trade Analysis: Win Rate=5.3% in uptrends, 0.0% in downtrends | Avg Win=$0.29, Avg Loss=$-0.31 +2025-03-10 13:13:44,566 - INFO - Episode 10: Reward=70.24, Balance=$80.19, Win Rate=22.8%, Trades=114, Episode PnL=$-14.80, Total PnL=$-245.09, Max Drawdown=19.8%, Pred Accuracy=99.5% +2025-03-10 13:13:44,566 - ERROR - Error in episode 10: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:13:44,567 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:13:44,586 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:13:44,908 - INFO - OPENED LONG at 2046.58 | Stop loss: 2036.3315678571428 | Take profit: 2077.3019982142855 +2025-03-10 13:13:44,944 - INFO - CLOSED long at 2047.2 | PnL: 0.03% | $-0.14 +2025-03-10 13:13:44,959 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.235482142857 | Take profit: 2015.2768517857144 +2025-03-10 13:13:44,984 - INFO - CLOSED short at 2045.99 | PnL: 0.00% | $-0.20 +2025-03-10 13:13:44,984 - INFO - OPENED LONG at 2045.99 | Stop loss: 2035.744517857143 | Take profit: 2076.703148214286 +2025-03-10 13:13:45,117 - INFO - CLOSED long at 2049.89 | PnL: 0.19% | $0.18 +2025-03-10 13:13:45,117 - INFO - OPENED SHORT at 2049.89 | Stop loss: 2060.154982142857 | Take profit: 2019.1183517857141 +2025-03-10 13:13:45,172 - INFO - CLOSED short at 2051.89 | PnL: -0.10% | $-0.39 +2025-03-10 13:13:45,173 - INFO - OPENED LONG at 2051.89 | Stop loss: 2041.6150178571427 | Take profit: 2082.6916482142856 +2025-03-10 13:13:45,230 - INFO - CLOSED long at 2057.01 | PnL: 0.25% | $0.30 +2025-03-10 13:13:45,230 - INFO - OPENED SHORT at 2057.01 | Stop loss: 2067.3105821428576 | Take profit: 2026.1315517857145 +2025-03-10 13:13:45,262 - INFO - CLOSED short at 2056.89 | PnL: 0.01% | $-0.19 +2025-03-10 13:13:45,262 - INFO - OPENED LONG at 2056.89 | Stop loss: 2046.5900178571426 | Take profit: 2087.766648214286 +2025-03-10 13:13:45,419 - INFO - CLOSED long at 2064.61 | PnL: 0.38% | $0.54 +2025-03-10 13:13:45,443 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.256517857143 | Take profit: 2094.567148214286 +2025-03-10 13:13:45,463 - INFO - CLOSED long at 2061.61 | PnL: -0.10% | $-0.39 +2025-03-10 13:13:45,463 - INFO - OPENED SHORT at 2061.61 | Stop loss: 2071.933582142857 | Take profit: 2030.6625517857144 +2025-03-10 13:13:45,597 - INFO - CLOSED short at 2060.31 | PnL: 0.06% | $-0.07 +2025-03-10 13:13:45,600 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.992917857143 | Take profit: 2091.237948214286 +2025-03-10 13:13:45,811 - INFO - CLOSED long at 2064.32 | PnL: 0.19% | $0.19 +2025-03-10 13:13:45,811 - INFO - OPENED SHORT at 2064.32 | Stop loss: 2074.6571321428573 | Take profit: 2033.3319017857145 +2025-03-10 13:13:45,837 - INFO - CLOSED short at 2065.86 | PnL: -0.07% | $-0.35 +2025-03-10 13:13:45,859 - INFO - OPENED LONG at 2070.58 | Stop loss: 2060.2115678571427 | Take profit: 2101.6619982142856 +2025-03-10 13:13:45,898 - INFO - CLOSED long at 2068.29 | PnL: -0.11% | $-0.42 +2025-03-10 13:13:45,915 - INFO - OPENED LONG at 2067.89 | Stop loss: 2057.535017857143 | Take profit: 2098.9316482142854 +2025-03-10 13:13:46,006 - INFO - CLOSED long at 2068.99 | PnL: 0.05% | $-0.09 +2025-03-10 13:13:46,006 - INFO - OPENED SHORT at 2068.99 | Stop loss: 2079.350482142857 | Take profit: 2037.931851785714 +2025-03-10 13:13:46,045 - INFO - CLOSED short at 2067.9 | PnL: 0.05% | $-0.09 +2025-03-10 13:13:46,045 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.544967857143 | Take profit: 2098.941798214286 +2025-03-10 13:13:46,272 - INFO - CLOSED long at 2071.41 | PnL: 0.17% | $0.14 +2025-03-10 13:13:46,293 - INFO - OPENED LONG at 2069.37 | Stop loss: 2059.0076178571426 | Take profit: 2100.4338482142857 +2025-03-10 13:13:46,325 - INFO - CLOSED long at 2072.8 | PnL: 0.17% | $0.13 +2025-03-10 13:13:46,325 - INFO - OPENED SHORT at 2072.8 | Stop loss: 2083.1795321428576 | Take profit: 2041.6847017857144 +2025-03-10 13:13:46,348 - INFO - CLOSED short at 2070.79 | PnL: 0.10% | $-0.01 +2025-03-10 13:13:46,364 - INFO - OPENED LONG at 2070.28 | Stop loss: 2059.9130678571432 | Take profit: 2101.357498214286 +2025-03-10 13:13:46,428 - INFO - CLOSED long at 2070.36 | PnL: 0.00% | $-0.19 +2025-03-10 13:13:46,458 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.260032142857 | Take profit: 2037.8432017857144 +2025-03-10 13:13:46,491 - INFO - CLOSED short at 2070.7 | PnL: -0.09% | $-0.37 +2025-03-10 13:13:46,525 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.977767857143 | Take profit: 2100.4033982142855 +2025-03-10 13:13:46,552 - INFO - CLOSED long at 2069.19 | PnL: -0.01% | $-0.21 +2025-03-10 13:13:46,552 - INFO - OPENED SHORT at 2069.19 | Stop loss: 2079.551482142857 | Take profit: 2038.1288517857145 +2025-03-10 13:13:46,585 - INFO - CLOSED short at 2068.8 | PnL: 0.02% | $-0.16 +2025-03-10 13:13:46,585 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.440467857143 | Take profit: 2099.855298214286 +2025-03-10 13:13:46,610 - INFO - CLOSED long at 2067.6 | PnL: -0.06% | $-0.31 +2025-03-10 13:13:46,628 - INFO - OPENED LONG at 2067.51 | Stop loss: 2057.156917857143 | Take profit: 2098.5459482142855 +2025-03-10 13:13:46,718 - INFO - CLOSED long at 2066.29 | PnL: -0.06% | $-0.31 +2025-03-10 13:13:46,734 - INFO - OPENED LONG at 2065.08 | Stop loss: 2054.739067857143 | Take profit: 2096.0794982142856 +2025-03-10 13:13:46,753 - INFO - CLOSED long at 2066.18 | PnL: 0.05% | $-0.09 +2025-03-10 13:13:46,754 - INFO - OPENED SHORT at 2066.18 | Stop loss: 2076.526432142857 | Take profit: 2035.1640017857142 +2025-03-10 13:13:46,773 - INFO - CLOSED short at 2068.76 | PnL: -0.12% | $-0.44 +2025-03-10 13:13:46,773 - INFO - OPENED LONG at 2068.76 | Stop loss: 2058.400667857143 | Take profit: 2099.814698214286 +2025-03-10 13:13:46,791 - INFO - CLOSED long at 2068.9 | PnL: 0.01% | $-0.18 +2025-03-10 13:13:46,791 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.260032142857 | Take profit: 2037.8432017857144 +2025-03-10 13:13:46,814 - INFO - CLOSED short at 2068.51 | PnL: 0.02% | $-0.16 +2025-03-10 13:13:46,814 - INFO - OPENED LONG at 2068.51 | Stop loss: 2058.151917857143 | Take profit: 2099.560948214286 +2025-03-10 13:13:47,012 - INFO - CLOSED long at 2071.36 | PnL: 0.14% | $0.07 +2025-03-10 13:13:47,033 - INFO - OPENED LONG at 2072.75 | Stop loss: 2062.3707178571426 | Take profit: 2103.864548214286 +2025-03-10 13:13:47,156 - INFO - CLOSED long at 2070.4 | PnL: -0.11% | $-0.41 +2025-03-10 13:13:47,156 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7675321428574 | Take profit: 2039.3207017857144 +2025-03-10 13:13:47,193 - INFO - CLOSED short at 2069.46 | PnL: 0.05% | $-0.10 +2025-03-10 13:13:47,193 - INFO - OPENED LONG at 2069.46 | Stop loss: 2059.0971678571427 | Take profit: 2100.525198214286 +2025-03-10 13:13:47,280 - INFO - CLOSED long at 2067.0 | PnL: -0.12% | $-0.42 +2025-03-10 13:13:47,336 - INFO - OPENED LONG at 2067.46 | Stop loss: 2057.107167857143 | Take profit: 2098.4951982142857 +2025-03-10 13:13:47,416 - INFO - CLOSED long at 2063.61 | PnL: -0.19% | $-0.54 +2025-03-10 13:13:47,418 - INFO - OPENED SHORT at 2063.61 | Stop loss: 2073.9435821428574 | Take profit: 2032.6325517857144 +2025-03-10 13:13:47,440 - INFO - CLOSED short at 2065.26 | PnL: -0.08% | $-0.34 +2025-03-10 13:13:47,440 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.918167857143 | Take profit: 2096.262198214286 +2025-03-10 13:13:47,512 - INFO - CLOSED long at 2069.34 | PnL: 0.20% | $0.18 +2025-03-10 13:13:47,512 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.702232142857 | Take profit: 2038.2766017857143 +2025-03-10 13:13:47,551 - INFO - CLOSED short at 2067.59 | PnL: 0.08% | $-0.03 +2025-03-10 13:13:47,552 - INFO - OPENED LONG at 2067.59 | Stop loss: 2057.236517857143 | Take profit: 2098.6271482142856 +2025-03-10 13:13:47,589 - INFO - CLOSED long at 2070.3 | PnL: 0.13% | $0.06 +2025-03-10 13:13:47,611 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.9634821428576 | Take profit: 2040.4928517857145 +2025-03-10 13:13:47,670 - INFO - CLOSED short at 2070.4 | PnL: 0.06% | $-0.08 +2025-03-10 13:13:47,703 - INFO - OPENED LONG at 2070.73 | Stop loss: 2060.360817857143 | Take profit: 2101.8142482142857 +2025-03-10 13:13:48,133 - INFO - CLOSED long at 2065.26 | PnL: -0.26% | $-0.69 +2025-03-10 13:13:48,173 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.5600178571426 | Take profit: 2093.8566482142855 +2025-03-10 13:13:48,462 - INFO - CLOSED long at 2062.71 | PnL: -0.01% | $-0.20 +2025-03-10 13:13:48,551 - INFO - OPENED LONG at 2063.5 | Stop loss: 2053.166967857143 | Take profit: 2094.4757982142855 +2025-03-10 13:13:48,670 - INFO - CLOSED long at 2060.31 | PnL: -0.15% | $-0.48 +2025-03-10 13:13:48,670 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.627082142857 | Take profit: 2029.3820517857143 +2025-03-10 13:13:48,683 - INFO - CLOSED short at 2061.8 | PnL: -0.07% | $-0.32 +2025-03-10 13:13:48,683 - INFO - OPENED LONG at 2061.8 | Stop loss: 2051.475467857143 | Take profit: 2092.7502982142855 +2025-03-10 13:13:48,799 - INFO - CLOSED long at 2061.13 | PnL: -0.03% | $-0.25 +2025-03-10 13:13:48,825 - INFO - OPENED LONG at 2061.9 | Stop loss: 2051.574967857143 | Take profit: 2092.8517982142857 +2025-03-10 13:13:48,845 - INFO - CLOSED long at 2064.1 | PnL: 0.11% | $0.01 +2025-03-10 13:13:48,870 - INFO - OPENED LONG at 2065.36 | Stop loss: 2055.017667857143 | Take profit: 2096.363698214286 +2025-03-10 13:13:49,001 - INFO - CLOSED long at 2062.6 | PnL: -0.13% | $-0.43 +2025-03-10 13:13:49,001 - INFO - OPENED SHORT at 2062.6 | Stop loss: 2072.928532142857 | Take profit: 2031.6377017857142 +2025-03-10 13:13:49,020 - INFO - CLOSED short at 2061.89 | PnL: 0.03% | $-0.12 +2025-03-10 13:13:49,020 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.5650178571427 | Take profit: 2092.841648214285 +2025-03-10 13:13:49,155 - INFO - CLOSED long at 2058.89 | PnL: -0.15% | $-0.45 +2025-03-10 13:13:49,177 - INFO - OPENED LONG at 2059.96 | Stop loss: 2049.644667857143 | Take profit: 2090.882698214286 +2025-03-10 13:13:49,250 - INFO - CLOSED long at 2056.28 | PnL: -0.18% | $-0.51 +2025-03-10 13:13:49,250 - INFO - OPENED SHORT at 2056.28 | Stop loss: 2066.5769321428575 | Take profit: 2025.4125017857145 +2025-03-10 13:13:49,260 - INFO - CLOSED short at 2055.6 | PnL: 0.03% | $-0.12 +2025-03-10 13:13:49,260 - INFO - OPENED LONG at 2055.6 | Stop loss: 2045.306467857143 | Take profit: 2086.457298214286 +2025-03-10 13:13:49,342 - INFO - CLOSED long at 2058.15 | PnL: 0.12% | $0.04 +2025-03-10 13:13:49,367 - INFO - OPENED LONG at 2059.8 | Stop loss: 2049.4854678571432 | Take profit: 2090.720298214286 +2025-03-10 13:13:49,443 - INFO - CLOSED long at 2061.3 | PnL: 0.07% | $-0.05 +2025-03-10 13:13:49,443 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.6220321428573 | Take profit: 2030.3572017857146 +2025-03-10 13:13:49,466 - INFO - CLOSED short at 2062.69 | PnL: -0.07% | $-0.30 +2025-03-10 13:13:49,466 - INFO - OPENED LONG at 2062.69 | Stop loss: 2052.361017857143 | Take profit: 2093.6536482142856 +2025-03-10 13:13:49,584 - INFO - CLOSED long at 2066.33 | PnL: 0.18% | $0.14 +2025-03-10 13:13:49,585 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6771821428574 | Take profit: 2035.3117517857143 +2025-03-10 13:13:49,603 - INFO - CLOSED short at 2066.34 | PnL: -0.00% | $-0.18 +2025-03-10 13:13:49,603 - INFO - OPENED LONG at 2066.34 | Stop loss: 2055.992767857143 | Take profit: 2097.358398214286 +2025-03-10 13:13:49,842 - INFO - CLOSED long at 2070.01 | PnL: 0.18% | $0.14 +2025-03-10 13:13:49,867 - INFO - OPENED LONG at 2071.6 | Stop loss: 2061.226467857143 | Take profit: 2102.6972982142856 +2025-03-10 13:13:49,887 - INFO - CLOSED long at 2073.23 | PnL: 0.08% | $-0.04 +2025-03-10 13:13:49,905 - INFO - OPENED LONG at 2070.0 | Stop loss: 2059.634467857143 | Take profit: 2101.0732982142854 +2025-03-10 13:13:49,963 - INFO - CLOSED long at 2069.69 | PnL: -0.01% | $-0.21 +2025-03-10 13:13:49,965 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.053982142857 | Take profit: 2038.6213517857145 +2025-03-10 13:13:50,009 - INFO - CLOSED short at 2067.44 | PnL: 0.11% | $0.02 +2025-03-10 13:13:50,009 - INFO - OPENED LONG at 2067.44 | Stop loss: 2057.0872678571427 | Take profit: 2098.4748982142855 +2025-03-10 13:13:50,171 - INFO - CLOSED long at 2065.66 | PnL: -0.09% | $-0.34 +2025-03-10 13:13:50,199 - INFO - OPENED LONG at 2063.95 | Stop loss: 2053.6147178571428 | Take profit: 2094.932548214286 +2025-03-10 13:13:50,505 - INFO - CLOSED long at 2070.2 | PnL: 0.30% | $0.37 +2025-03-10 13:13:50,505 - INFO - OPENED SHORT at 2070.2 | Stop loss: 2080.566532142857 | Take profit: 2039.123701785714 +2025-03-10 13:13:50,531 - INFO - CLOSED short at 2071.35 | PnL: -0.06% | $-0.28 +2025-03-10 13:13:50,531 - INFO - OPENED LONG at 2071.35 | Stop loss: 2060.9777178571426 | Take profit: 2102.443548214286 +2025-03-10 13:13:50,664 - INFO - CLOSED long at 2070.61 | PnL: -0.04% | $-0.24 +2025-03-10 13:13:50,694 - INFO - OPENED LONG at 2071.99 | Stop loss: 2061.614517857143 | Take profit: 2103.0931482142855 +2025-03-10 13:13:50,795 - INFO - CLOSED long at 2071.61 | PnL: -0.02% | $-0.21 +2025-03-10 13:13:50,795 - INFO - OPENED SHORT at 2071.61 | Stop loss: 2081.9835821428574 | Take profit: 2040.5125517857143 +2025-03-10 13:13:50,817 - INFO - CLOSED short at 2074.37 | PnL: -0.13% | $-0.42 +2025-03-10 13:13:50,877 - INFO - OPENED LONG at 2073.27 | Stop loss: 2062.888117857143 | Take profit: 2104.3923482142854 +2025-03-10 13:13:50,905 - INFO - CLOSED long at 2073.99 | PnL: 0.03% | $-0.12 +2025-03-10 13:13:50,929 - INFO - OPENED LONG at 2075.32 | Stop loss: 2064.927867857143 | Take profit: 2106.473098214286 +2025-03-10 13:13:50,984 - INFO - CLOSED long at 2075.61 | PnL: 0.01% | $-0.15 +2025-03-10 13:13:51,009 - INFO - OPENED LONG at 2074.0 | Stop loss: 2063.6144678571427 | Take profit: 2105.133298214286 +2025-03-10 13:13:51,097 - INFO - CLOSED long at 2067.9 | PnL: -0.29% | $-0.70 +2025-03-10 13:13:51,124 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.052467857143 | Take profit: 2097.4192982142854 +2025-03-10 13:13:51,145 - INFO - CLOSED long at 2066.89 | PnL: 0.02% | $-0.13 +2025-03-10 13:13:51,145 - INFO - OPENED SHORT at 2066.89 | Stop loss: 2077.239982142857 | Take profit: 2035.863351785714 +2025-03-10 13:13:51,173 - INFO - CLOSED short at 2067.88 | PnL: -0.05% | $-0.26 +2025-03-10 13:13:51,174 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.525067857143 | Take profit: 2098.9214982142857 +2025-03-10 13:13:51,232 - INFO - CLOSED long at 2068.1 | PnL: 0.01% | $-0.16 +2025-03-10 13:13:51,250 - INFO - OPENED LONG at 2069.0 | Stop loss: 2058.639467857143 | Take profit: 2100.058298214286 +2025-03-10 13:13:51,275 - INFO - CLOSED long at 2070.19 | PnL: 0.06% | $-0.07 +2025-03-10 13:13:51,275 - INFO - OPENED SHORT at 2070.19 | Stop loss: 2080.556482142857 | Take profit: 2039.1138517857144 +2025-03-10 13:13:51,298 - INFO - CLOSED short at 2070.1 | PnL: 0.00% | $-0.17 +2025-03-10 13:13:51,299 - INFO - OPENED LONG at 2070.1 | Stop loss: 2059.7339678571425 | Take profit: 2101.1747982142856 +2025-03-10 13:13:51,317 - INFO - CLOSED long at 2067.19 | PnL: -0.14% | $-0.42 +2025-03-10 13:13:51,317 - INFO - OPENED SHORT at 2067.19 | Stop loss: 2077.541482142857 | Take profit: 2036.1588517857142 +2025-03-10 13:13:51,342 - INFO - CLOSED short at 2065.5 | PnL: 0.08% | $-0.03 +2025-03-10 13:13:51,342 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.1569678571427 | Take profit: 2096.5057982142857 +2025-03-10 13:13:51,559 - INFO - CLOSED long at 2064.5 | PnL: -0.05% | $-0.26 +2025-03-10 13:13:51,584 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.982817857143 | Take profit: 2097.348248214286 +2025-03-10 13:13:51,741 - INFO - STOP LOSS hit for long at 2055.982817857143 | PnL: -0.50% | $-1.04 +2025-03-10 13:13:51,770 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.9484178571429 | Take profit: 2079.971448214286 +2025-03-10 13:13:51,789 - INFO - CLOSED long at 2049.5 | PnL: 0.01% | $-0.15 +2025-03-10 13:13:51,813 - INFO - OPENED LONG at 2051.99 | Stop loss: 2041.7145178571427 | Take profit: 2082.7931482142853 +2025-03-10 13:13:51,831 - INFO - CLOSED long at 2058.3 | PnL: 0.31% | $0.36 +2025-03-10 13:13:51,831 - INFO - OPENED SHORT at 2058.3 | Stop loss: 2068.6070321428574 | Take profit: 2027.4022017857146 +2025-03-10 13:13:51,859 - INFO - CLOSED short at 2056.85 | PnL: 0.07% | $-0.05 +2025-03-10 13:13:51,859 - INFO - OPENED LONG at 2056.85 | Stop loss: 2046.5502178571428 | Take profit: 2087.7260482142856 +2025-03-10 13:13:51,995 - INFO - CLOSED long at 2062.55 | PnL: 0.28% | $0.30 +2025-03-10 13:13:52,023 - INFO - OPENED LONG at 2065.12 | Stop loss: 2054.778867857143 | Take profit: 2096.120098214286 +2025-03-10 13:13:52,052 - INFO - CLOSED long at 2068.33 | PnL: 0.16% | $0.10 +2025-03-10 13:13:52,110 - INFO - OPENED LONG at 2066.59 | Stop loss: 2056.241517857143 | Take profit: 2097.612148214286 +2025-03-10 13:13:52,427 - INFO - CLOSED long at 2074.05 | PnL: 0.36% | $0.45 +2025-03-10 13:13:52,466 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6095178571427 | Take profit: 2104.1081482142854 +2025-03-10 13:13:52,659 - INFO - CLOSED long at 2090.49 | PnL: 0.84% | $1.29 +2025-03-10 13:13:52,683 - INFO - OPENED LONG at 2103.02 | Stop loss: 2092.489367857143 | Take profit: 2134.5885982142854 +2025-03-10 13:13:52,728 - INFO - TAKE PROFIT hit for long at 2134.5885982142854 | PnL: 1.50% | $2.47 +2025-03-10 13:13:52,749 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.105567857143 | Take profit: 2163.7799982142856 +2025-03-10 13:13:52,868 - INFO - CLOSED long at 2142.68 | PnL: 0.51% | $0.75 +2025-03-10 13:13:52,907 - INFO - OPENED LONG at 2140.01 | Stop loss: 2129.294417857143 | Take profit: 2172.133448214286 +2025-03-10 13:13:52,936 - INFO - CLOSED long at 2134.78 | PnL: -0.24% | $-0.63 +2025-03-10 13:13:52,974 - INFO - OPENED LONG at 2126.99 | Stop loss: 2116.3395178571427 | Take profit: 2158.9181482142853 +2025-03-10 13:13:53,045 - INFO - CLOSED long at 2121.09 | PnL: -0.28% | $-0.68 +2025-03-10 13:13:53,045 - INFO - OPENED SHORT at 2121.09 | Stop loss: 2131.710982142857 | Take profit: 2089.2503517857144 +2025-03-10 13:13:53,067 - INFO - CLOSED short at 2120.15 | PnL: 0.04% | $-0.10 +2025-03-10 13:13:53,068 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.533717857143 | Take profit: 2151.9755482142855 +2025-03-10 13:13:53,162 - INFO - CLOSED long at 2119.14 | PnL: -0.05% | $-0.27 +2025-03-10 13:13:53,162 - INFO - OPENED SHORT at 2119.14 | Stop loss: 2129.751232142857 | Take profit: 2087.329601785714 +2025-03-10 13:13:53,191 - INFO - CLOSED short at 2119.07 | PnL: 0.00% | $-0.17 +2025-03-10 13:13:53,192 - INFO - OPENED LONG at 2119.07 | Stop loss: 2108.459117857143 | Take profit: 2150.8793482142855 +2025-03-10 13:13:53,249 - INFO - STOP LOSS hit for long at 2108.459117857143 | PnL: -0.50% | $-1.08 +2025-03-10 13:13:53,301 - INFO - OPENED LONG at 2109.05 | Stop loss: 2098.489217857143 | Take profit: 2140.709048214286 +2025-03-10 13:13:53,400 - INFO - CLOSED long at 2112.46 | PnL: 0.16% | $0.11 +2025-03-10 13:13:53,422 - INFO - OPENED LONG at 2113.24 | Stop loss: 2102.6582678571426 | Take profit: 2144.961898214285 +2025-03-10 13:13:53,504 - INFO - CLOSED long at 2110.9 | PnL: -0.11% | $-0.37 +2025-03-10 13:13:53,504 - INFO - OPENED SHORT at 2110.9 | Stop loss: 2121.4700321428572 | Take profit: 2079.2132017857143 +2025-03-10 13:13:53,550 - INFO - CLOSED short at 2106.49 | PnL: 0.21% | $0.19 +2025-03-10 13:13:53,550 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.9420178571427 | Take profit: 2138.1106482142854 +2025-03-10 13:13:53,634 - INFO - STOP LOSS hit for long at 2095.9420178571427 | PnL: -0.50% | $-1.06 +2025-03-10 13:13:53,693 - INFO - OPENED LONG at 2098.1 | Stop loss: 2087.5939678571426 | Take profit: 2129.5947982142857 +2025-03-10 13:13:53,854 - INFO - CLOSED long at 2106.39 | PnL: 0.40% | $0.52 +2025-03-10 13:13:53,892 - INFO - OPENED LONG at 2103.86 | Stop loss: 2093.3251678571432 | Take profit: 2135.4411982142856 +2025-03-10 13:13:54,110 - INFO - STOP LOSS hit for long at 2093.3251678571432 | PnL: -0.50% | $-1.05 +2025-03-10 13:13:54,142 - INFO - OPENED LONG at 2091.1 | Stop loss: 2080.628967857143 | Take profit: 2122.4897982142857 +2025-03-10 13:13:54,245 - INFO - CLOSED long at 2083.28 | PnL: -0.37% | $-0.82 +2025-03-10 13:13:54,269 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.9822678571427 | Take profit: 2119.789898214286 +2025-03-10 13:13:54,411 - INFO - CLOSED long at 2083.41 | PnL: -0.24% | $-0.59 +2025-03-10 13:13:54,411 - INFO - OPENED SHORT at 2083.41 | Stop loss: 2093.8425821428573 | Take profit: 2052.135551785714 +2025-03-10 13:13:54,469 - INFO - CLOSED short at 2083.59 | PnL: -0.01% | $-0.19 +2025-03-10 13:13:54,469 - INFO - OPENED LONG at 2083.59 | Stop loss: 2073.1565178571427 | Take profit: 2114.867148214286 +2025-03-10 13:13:54,643 - INFO - CLOSED long at 2088.66 | PnL: 0.24% | $0.24 +2025-03-10 13:13:54,667 - INFO - OPENED LONG at 2088.32 | Stop loss: 2077.862867857143 | Take profit: 2119.6680982142857 +2025-03-10 13:13:54,756 - INFO - CLOSED long at 2087.78 | PnL: -0.03% | $-0.21 +2025-03-10 13:13:54,786 - INFO - OPENED LONG at 2086.81 | Stop loss: 2076.3604178571427 | Take profit: 2118.1354482142856 +2025-03-10 13:13:54,984 - INFO - CLOSED long at 2094.7 | PnL: 0.38% | $0.47 +2025-03-10 13:13:55,018 - INFO - OPENED LONG at 2097.8 | Stop loss: 2087.295467857143 | Take profit: 2129.290298214286 +2025-03-10 13:13:55,190 - INFO - CLOSED long at 2103.48 | PnL: 0.27% | $0.29 +2025-03-10 13:13:55,190 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.012932142857 | Take profit: 2071.9045017857143 +2025-03-10 13:13:55,213 - INFO - CLOSED short at 2104.93 | PnL: -0.07% | $-0.29 +2025-03-10 13:13:55,213 - INFO - OPENED LONG at 2104.93 | Stop loss: 2094.3898178571426 | Take profit: 2136.527248214286 +2025-03-10 13:13:55,241 - INFO - CLOSED long at 2103.81 | PnL: -0.05% | $-0.26 +2025-03-10 13:13:55,241 - INFO - OPENED SHORT at 2103.81 | Stop loss: 2114.3445821428572 | Take profit: 2072.229551785714 +2025-03-10 13:13:55,276 - INFO - CLOSED short at 2103.07 | PnL: 0.04% | $-0.11 +2025-03-10 13:13:55,276 - INFO - OPENED LONG at 2103.07 | Stop loss: 2092.539117857143 | Take profit: 2134.639348214286 +2025-03-10 13:13:55,412 - INFO - CLOSED long at 2103.52 | PnL: 0.02% | $-0.13 +2025-03-10 13:13:55,442 - INFO - OPENED LONG at 2104.4 | Stop loss: 2093.862467857143 | Take profit: 2135.989298214286 +2025-03-10 13:13:55,464 - INFO - Trade Analysis: Win Rate=9.1% in uptrends, 0.0% in downtrends | Avg Win=$0.36, Avg Loss=$-0.31 +2025-03-10 13:13:55,464 - INFO - Episode 11: Reward=90.04, Balance=$85.79, Win Rate=26.2%, Trades=107, Episode PnL=$-9.73, Total PnL=$-259.30, Max Drawdown=14.3%, Pred Accuracy=99.8% +2025-03-10 13:13:55,465 - ERROR - Error in episode 11: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:13:55,466 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:13:55,488 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:13:55,750 - INFO - OPENED LONG at 2047.2 | Stop loss: 2036.9484678571428 | Take profit: 2077.931298214286 +2025-03-10 13:13:55,802 - INFO - CLOSED long at 2045.99 | PnL: -0.06% | $-0.32 +2025-03-10 13:13:55,824 - INFO - OPENED LONG at 2045.79 | Stop loss: 2035.5455178571428 | Take profit: 2076.5001482142857 +2025-03-10 13:13:56,236 - INFO - CLOSED long at 2063.29 | PnL: 0.86% | $1.49 +2025-03-10 13:13:56,275 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.256517857143 | Take profit: 2094.567148214286 +2025-03-10 13:13:56,393 - INFO - CLOSED long at 2060.0 | PnL: -0.17% | $-0.55 +2025-03-10 13:13:56,393 - INFO - OPENED SHORT at 2060.0 | Stop loss: 2070.315532142857 | Take profit: 2029.0767017857142 +2025-03-10 13:13:56,418 - INFO - CLOSED short at 2061.89 | PnL: -0.09% | $-0.38 +2025-03-10 13:13:56,418 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.5650178571427 | Take profit: 2092.841648214285 +2025-03-10 13:13:56,542 - INFO - CLOSED long at 2057.8 | PnL: -0.20% | $-0.59 +2025-03-10 13:13:56,542 - INFO - OPENED SHORT at 2057.8 | Stop loss: 2068.1045321428574 | Take profit: 2026.9097017857146 +2025-03-10 13:13:56,578 - INFO - CLOSED short at 2057.89 | PnL: -0.00% | $-0.21 +2025-03-10 13:13:56,578 - INFO - OPENED LONG at 2057.89 | Stop loss: 2047.5850178571427 | Take profit: 2088.7816482142853 +2025-03-10 13:13:56,634 - INFO - CLOSED long at 2058.11 | PnL: 0.01% | $-0.18 +2025-03-10 13:13:56,635 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.4160821428572 | Take profit: 2027.2150517857144 +2025-03-10 13:13:56,655 - INFO - CLOSED short at 2061.79 | PnL: -0.18% | $-0.55 +2025-03-10 13:13:56,656 - INFO - OPENED LONG at 2061.79 | Stop loss: 2051.465517857143 | Take profit: 2092.740148214286 +2025-03-10 13:13:56,675 - INFO - CLOSED long at 2061.18 | PnL: -0.03% | $-0.25 +2025-03-10 13:13:56,713 - INFO - OPENED LONG at 2065.86 | Stop loss: 2055.515167857143 | Take profit: 2096.871198214286 +2025-03-10 13:13:56,752 - INFO - CLOSED long at 2068.11 | PnL: 0.11% | $0.02 +2025-03-10 13:13:56,774 - INFO - OPENED LONG at 2068.29 | Stop loss: 2057.9330178571427 | Take profit: 2099.3376482142858 +2025-03-10 13:13:56,997 - INFO - CLOSED long at 2067.69 | PnL: -0.03% | $-0.25 +2025-03-10 13:13:57,017 - INFO - OPENED LONG at 2070.26 | Stop loss: 2059.893167857143 | Take profit: 2101.3371982142858 +2025-03-10 13:13:57,358 - INFO - CLOSED long at 2070.36 | PnL: 0.00% | $-0.19 +2025-03-10 13:13:57,394 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.539967857143 | Take profit: 2099.956798214286 +2025-03-10 13:13:57,509 - INFO - CLOSED long at 2067.51 | PnL: -0.07% | $-0.33 +2025-03-10 13:13:57,528 - INFO - OPENED LONG at 2069.01 | Stop loss: 2058.6494178571434 | Take profit: 2100.068448214286 +2025-03-10 13:13:57,589 - INFO - CLOSED long at 2066.19 | PnL: -0.14% | $-0.46 +2025-03-10 13:13:57,590 - INFO - OPENED SHORT at 2066.19 | Stop loss: 2076.536482142857 | Take profit: 2035.1738517857143 +2025-03-10 13:13:57,609 - INFO - CLOSED short at 2066.29 | PnL: -0.00% | $-0.20 +2025-03-10 13:13:57,609 - INFO - OPENED LONG at 2066.29 | Stop loss: 2055.943017857143 | Take profit: 2097.3076482142856 +2025-03-10 13:13:57,628 - INFO - CLOSED long at 2065.08 | PnL: -0.06% | $-0.31 +2025-03-10 13:13:57,628 - INFO - OPENED SHORT at 2065.08 | Stop loss: 2075.420932142857 | Take profit: 2034.0805017857142 +2025-03-10 13:13:57,660 - INFO - CLOSED short at 2066.18 | PnL: -0.05% | $-0.29 +2025-03-10 13:13:57,660 - INFO - OPENED LONG at 2066.18 | Stop loss: 2055.8335678571425 | Take profit: 2097.1959982142853 +2025-03-10 13:13:57,725 - INFO - CLOSED long at 2068.9 | PnL: 0.13% | $0.06 +2025-03-10 13:13:57,759 - INFO - OPENED LONG at 2068.51 | Stop loss: 2058.151917857143 | Take profit: 2099.560948214286 +2025-03-10 13:13:57,929 - INFO - CLOSED long at 2072.75 | PnL: 0.20% | $0.20 +2025-03-10 13:13:57,950 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.728917857143 | Take profit: 2104.2299482142857 +2025-03-10 13:13:58,371 - INFO - CLOSED long at 2068.58 | PnL: -0.22% | $-0.61 +2025-03-10 13:13:58,391 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.440467857143 | Take profit: 2099.855298214286 +2025-03-10 13:13:58,409 - INFO - CLOSED long at 2069.34 | PnL: 0.03% | $-0.14 +2025-03-10 13:13:58,478 - INFO - OPENED LONG at 2069.2 | Stop loss: 2058.8384678571424 | Take profit: 2100.2612982142855 +2025-03-10 13:13:58,607 - INFO - CLOSED long at 2070.4 | PnL: 0.06% | $-0.08 +2025-03-10 13:13:58,629 - INFO - OPENED LONG at 2070.73 | Stop loss: 2060.360817857143 | Take profit: 2101.8142482142857 +2025-03-10 13:13:58,648 - INFO - CLOSED long at 2068.5 | PnL: -0.11% | $-0.40 +2025-03-10 13:13:58,666 - INFO - OPENED LONG at 2068.69 | Stop loss: 2058.331017857143 | Take profit: 2099.7436482142857 +2025-03-10 13:13:58,731 - INFO - CLOSED long at 2067.86 | PnL: -0.04% | $-0.27 +2025-03-10 13:13:58,732 - INFO - OPENED SHORT at 2067.86 | Stop loss: 2078.2148321428576 | Take profit: 2036.8188017857144 +2025-03-10 13:13:58,752 - INFO - CLOSED short at 2066.4 | PnL: 0.07% | $-0.06 +2025-03-10 13:13:58,775 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.753967857143 | Take profit: 2097.1147982142857 +2025-03-10 13:13:58,834 - INFO - CLOSED long at 2064.47 | PnL: -0.08% | $-0.34 +2025-03-10 13:13:58,876 - INFO - OPENED LONG at 2070.04 | Stop loss: 2059.6742678571427 | Take profit: 2101.113898214286 +2025-03-10 13:13:58,911 - INFO - CLOSED long at 2067.8 | PnL: -0.11% | $-0.39 +2025-03-10 13:13:58,941 - INFO - OPENED LONG at 2068.18 | Stop loss: 2057.8235678571427 | Take profit: 2099.2259982142855 +2025-03-10 13:13:58,993 - INFO - CLOSED long at 2067.88 | PnL: -0.01% | $-0.21 +2025-03-10 13:13:59,025 - INFO - OPENED LONG at 2064.99 | Stop loss: 2054.6495178571427 | Take profit: 2095.9881482142855 +2025-03-10 13:13:59,075 - INFO - CLOSED long at 2065.26 | PnL: 0.01% | $-0.16 +2025-03-10 13:13:59,108 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.5600178571426 | Take profit: 2093.8566482142855 +2025-03-10 13:13:59,126 - INFO - CLOSED long at 2062.65 | PnL: -0.01% | $-0.21 +2025-03-10 13:13:59,150 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.4555678571433 | Take profit: 2092.729998214286 +2025-03-10 13:13:59,194 - INFO - CLOSED long at 2061.3 | PnL: -0.02% | $-0.23 +2025-03-10 13:13:59,195 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.6220321428573 | Take profit: 2030.3572017857146 +2025-03-10 13:13:59,208 - INFO - CLOSED short at 2063.59 | PnL: -0.11% | $-0.39 +2025-03-10 13:13:59,208 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.256517857143 | Take profit: 2094.567148214286 +2025-03-10 13:13:59,246 - INFO - CLOSED long at 2064.96 | PnL: 0.07% | $-0.06 +2025-03-10 13:13:59,246 - INFO - OPENED SHORT at 2064.96 | Stop loss: 2075.3003321428573 | Take profit: 2033.9623017857143 +2025-03-10 13:13:59,283 - INFO - CLOSED short at 2066.24 | PnL: -0.06% | $-0.30 +2025-03-10 13:13:59,283 - INFO - OPENED LONG at 2066.24 | Stop loss: 2055.8932678571427 | Take profit: 2097.2568982142857 +2025-03-10 13:13:59,312 - INFO - CLOSED long at 2067.1 | PnL: 0.04% | $-0.11 +2025-03-10 13:13:59,348 - INFO - OPENED LONG at 2065.54 | Stop loss: 2055.1967678571427 | Take profit: 2096.5463982142855 +2025-03-10 13:13:59,468 - INFO - CLOSED long at 2062.89 | PnL: -0.13% | $-0.42 +2025-03-10 13:13:59,506 - INFO - OPENED LONG at 2063.5 | Stop loss: 2053.166967857143 | Take profit: 2094.4757982142855 +2025-03-10 13:13:59,799 - INFO - CLOSED long at 2061.13 | PnL: -0.11% | $-0.39 +2025-03-10 13:13:59,829 - INFO - OPENED LONG at 2061.9 | Stop loss: 2051.574967857143 | Take profit: 2092.8517982142857 +2025-03-10 13:13:59,991 - INFO - CLOSED long at 2063.0 | PnL: 0.05% | $-0.09 +2025-03-10 13:14:00,013 - INFO - OPENED LONG at 2062.6 | Stop loss: 2052.271467857143 | Take profit: 2093.5622982142854 +2025-03-10 13:14:00,156 - INFO - CLOSED long at 2059.61 | PnL: -0.14% | $-0.45 +2025-03-10 13:14:00,156 - INFO - OPENED SHORT at 2059.61 | Stop loss: 2069.9235821428574 | Take profit: 2028.6925517857144 +2025-03-10 13:14:00,210 - INFO - CLOSED short at 2059.02 | PnL: 0.03% | $-0.13 +2025-03-10 13:14:00,216 - INFO - OPENED LONG at 2059.02 | Stop loss: 2048.7093678571428 | Take profit: 2089.9285982142856 +2025-03-10 13:14:00,449 - INFO - CLOSED long at 2059.8 | PnL: 0.04% | $-0.11 +2025-03-10 13:14:00,449 - INFO - OPENED SHORT at 2059.8 | Stop loss: 2070.114532142857 | Take profit: 2028.8797017857144 +2025-03-10 13:14:00,487 - INFO - CLOSED short at 2061.66 | PnL: -0.09% | $-0.34 +2025-03-10 13:14:00,520 - INFO - OPENED LONG at 2061.5 | Stop loss: 2051.1769678571427 | Take profit: 2092.445798214286 +2025-03-10 13:14:00,574 - INFO - CLOSED long at 2061.3 | PnL: -0.01% | $-0.20 +2025-03-10 13:14:00,609 - INFO - OPENED LONG at 2062.69 | Stop loss: 2052.361017857143 | Take profit: 2093.6536482142856 +2025-03-10 13:14:00,805 - INFO - CLOSED long at 2067.01 | PnL: 0.21% | $0.20 +2025-03-10 13:14:00,855 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.425517857143 | Take profit: 2100.860148214286 +2025-03-10 13:14:01,201 - INFO - CLOSED long at 2067.44 | PnL: -0.11% | $-0.39 +2025-03-10 13:14:01,202 - INFO - OPENED SHORT at 2067.44 | Stop loss: 2077.7927321428574 | Take profit: 2036.4051017857144 +2025-03-10 13:14:01,226 - INFO - CLOSED short at 2068.79 | PnL: -0.07% | $-0.30 +2025-03-10 13:14:01,228 - INFO - OPENED LONG at 2068.79 | Stop loss: 2058.430517857143 | Take profit: 2099.8451482142855 +2025-03-10 13:14:01,255 - INFO - CLOSED long at 2072.99 | PnL: 0.20% | $0.18 +2025-03-10 13:14:01,369 - INFO - OPENED LONG at 2066.38 | Stop loss: 2056.032567857143 | Take profit: 2097.3989982142857 +2025-03-10 13:14:01,717 - INFO - CLOSED long at 2068.59 | PnL: 0.11% | $0.01 +2025-03-10 13:14:01,753 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.216517857143 | Take profit: 2102.687148214286 +2025-03-10 13:14:01,879 - INFO - CLOSED long at 2070.8 | PnL: -0.04% | $-0.25 +2025-03-10 13:14:01,879 - INFO - OPENED SHORT at 2070.8 | Stop loss: 2081.1695321428574 | Take profit: 2039.7147017857146 +2025-03-10 13:14:01,909 - INFO - CLOSED short at 2070.35 | PnL: 0.02% | $-0.14 +2025-03-10 13:14:01,910 - INFO - OPENED LONG at 2070.35 | Stop loss: 2059.9827178571427 | Take profit: 2101.4285482142855 +2025-03-10 13:14:02,005 - INFO - CLOSED long at 2070.67 | PnL: 0.02% | $-0.15 +2025-03-10 13:14:02,005 - INFO - OPENED SHORT at 2070.67 | Stop loss: 2081.0388821428573 | Take profit: 2039.5866517857144 +2025-03-10 13:14:02,033 - INFO - CLOSED short at 2069.78 | PnL: 0.04% | $-0.10 +2025-03-10 13:14:02,034 - INFO - OPENED LONG at 2069.78 | Stop loss: 2059.415567857143 | Take profit: 2100.8499982142857 +2025-03-10 13:14:02,199 - INFO - CLOSED long at 2073.99 | PnL: 0.20% | $0.18 +2025-03-10 13:14:02,209 - INFO - OPENED SHORT at 2073.99 | Stop loss: 2084.375482142857 | Take profit: 2042.856851785714 +2025-03-10 13:14:02,226 - INFO - CLOSED short at 2075.32 | PnL: -0.06% | $-0.29 +2025-03-10 13:14:02,226 - INFO - OPENED LONG at 2075.32 | Stop loss: 2064.927867857143 | Take profit: 2106.473098214286 +2025-03-10 13:14:02,395 - INFO - CLOSED long at 2067.9 | PnL: -0.36% | $-0.81 +2025-03-10 13:14:02,395 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.255032142857 | Take profit: 2036.8582017857143 +2025-03-10 13:14:02,417 - INFO - CLOSED short at 2066.4 | PnL: 0.07% | $-0.05 +2025-03-10 13:14:02,418 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.052467857143 | Take profit: 2097.4192982142854 +2025-03-10 13:14:02,495 - INFO - CLOSED long at 2065.45 | PnL: -0.05% | $-0.26 +2025-03-10 13:14:02,495 - INFO - OPENED SHORT at 2065.45 | Stop loss: 2075.792782142857 | Take profit: 2034.4449517857142 +2025-03-10 13:14:02,529 - INFO - CLOSED short at 2068.1 | PnL: -0.13% | $-0.40 +2025-03-10 13:14:02,529 - INFO - OPENED LONG at 2068.1 | Stop loss: 2057.7439678571427 | Take profit: 2099.1447982142854 +2025-03-10 13:14:02,590 - INFO - CLOSED long at 2070.19 | PnL: 0.10% | $0.00 +2025-03-10 13:14:02,616 - INFO - OPENED LONG at 2070.1 | Stop loss: 2059.7339678571425 | Take profit: 2101.1747982142856 +2025-03-10 13:14:02,708 - INFO - CLOSED long at 2065.07 | PnL: -0.24% | $-0.60 +2025-03-10 13:14:02,738 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.744017857143 | Take profit: 2097.1046482142856 +2025-03-10 13:14:02,851 - INFO - CLOSED long at 2064.11 | PnL: -0.10% | $-0.34 +2025-03-10 13:14:02,851 - INFO - OPENED SHORT at 2064.11 | Stop loss: 2074.4460821428574 | Take profit: 2033.1250517857143 +2025-03-10 13:14:02,887 - INFO - CLOSED short at 2064.5 | PnL: -0.02% | $-0.21 +2025-03-10 13:14:02,888 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.161967857143 | Take profit: 2095.490798214286 +2025-03-10 13:14:03,108 - INFO - CLOSED long at 2053.01 | PnL: -0.56% | $-1.13 +2025-03-10 13:14:03,146 - INFO - OPENED SHORT at 2049.5 | Stop loss: 2059.7630321428574 | Take profit: 2018.7342017857143 +2025-03-10 13:14:03,168 - INFO - CLOSED short at 2051.99 | PnL: -0.12% | $-0.38 +2025-03-10 13:14:03,168 - INFO - OPENED LONG at 2051.99 | Stop loss: 2041.7145178571427 | Take profit: 2082.7931482142853 +2025-03-10 13:14:03,205 - INFO - CLOSED long at 2056.85 | PnL: 0.24% | $0.23 +2025-03-10 13:14:03,228 - INFO - OPENED LONG at 2057.11 | Stop loss: 2046.808917857143 | Take profit: 2087.989948214286 +2025-03-10 13:14:03,480 - INFO - CLOSED long at 2066.59 | PnL: 0.46% | $0.61 +2025-03-10 13:14:03,512 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.744067857143 | Take profit: 2095.0644982142853 +2025-03-10 13:14:03,572 - INFO - CLOSED long at 2060.7 | PnL: -0.16% | $-0.45 +2025-03-10 13:14:03,572 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.019032142857 | Take profit: 2029.7662017857142 +2025-03-10 13:14:03,591 - INFO - CLOSED short at 2061.84 | PnL: -0.06% | $-0.26 +2025-03-10 13:14:03,608 - INFO - OPENED SHORT at 2062.54 | Stop loss: 2072.868232142857 | Take profit: 2031.5786017857142 +2025-03-10 13:14:03,643 - INFO - CLOSED short at 2065.72 | PnL: -0.15% | $-0.43 +2025-03-10 13:14:03,643 - INFO - OPENED LONG at 2065.72 | Stop loss: 2055.3758678571426 | Take profit: 2096.729098214286 +2025-03-10 13:14:03,710 - INFO - CLOSED long at 2070.24 | PnL: 0.22% | $0.20 +2025-03-10 13:14:03,710 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.606732142857 | Take profit: 2039.1631017857142 +2025-03-10 13:14:03,797 - INFO - CLOSED short at 2070.41 | PnL: -0.01% | $-0.18 +2025-03-10 13:14:03,799 - INFO - OPENED LONG at 2070.41 | Stop loss: 2060.042417857143 | Take profit: 2101.489448214286 +2025-03-10 13:14:03,868 - INFO - CLOSED long at 2071.89 | PnL: 0.07% | $-0.05 +2025-03-10 13:14:03,879 - INFO - OPENED SHORT at 2071.89 | Stop loss: 2082.2649821428568 | Take profit: 2040.7883517857142 +2025-03-10 13:14:03,904 - INFO - CLOSED short at 2071.8 | PnL: 0.00% | $-0.16 +2025-03-10 13:14:03,904 - INFO - OPENED LONG at 2071.8 | Stop loss: 2061.4254678571433 | Take profit: 2102.9002982142856 +2025-03-10 13:14:03,987 - INFO - CLOSED long at 2085.56 | PnL: 0.66% | $0.95 +2025-03-10 13:14:04,011 - INFO - OPENED LONG at 2090.49 | Stop loss: 2080.0220178571426 | Take profit: 2121.8706482142857 +2025-03-10 13:14:04,072 - INFO - TAKE PROFIT hit for long at 2121.8706482142857 | PnL: 1.50% | $2.39 +2025-03-10 13:14:04,105 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.826767857143 | Take profit: 2171.6563982142857 +2025-03-10 13:14:04,308 - INFO - STOP LOSS hit for long at 2128.826767857143 | PnL: -0.50% | $-1.05 +2025-03-10 13:14:04,325 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.647967857143 | Take profit: 2159.2327982142856 +2025-03-10 13:14:04,562 - INFO - STOP LOSS hit for long at 2116.647967857143 | PnL: -0.50% | $-1.04 +2025-03-10 13:14:04,601 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.8773178571428 | Take profit: 2139.0647482142854 +2025-03-10 13:14:04,782 - INFO - CLOSED long at 2114.8 | PnL: 0.35% | $0.43 +2025-03-10 13:14:04,808 - INFO - OPENED LONG at 2110.9 | Stop loss: 2100.329967857143 | Take profit: 2142.586798214286 +2025-03-10 13:14:04,963 - INFO - STOP LOSS hit for long at 2100.329967857143 | PnL: -0.50% | $-1.03 +2025-03-10 13:14:05,001 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.016817857143 | Take profit: 2131.046248214286 +2025-03-10 13:14:05,019 - INFO - CLOSED long at 2098.1 | PnL: -0.07% | $-0.29 +2025-03-10 13:14:05,019 - INFO - OPENED SHORT at 2098.1 | Stop loss: 2108.606032142857 | Take profit: 2066.605201785714 +2025-03-10 13:14:05,040 - INFO - CLOSED short at 2102.19 | PnL: -0.19% | $-0.50 +2025-03-10 13:14:05,042 - INFO - OPENED LONG at 2102.19 | Stop loss: 2091.663517857143 | Take profit: 2133.7461482142858 +2025-03-10 13:14:05,101 - INFO - CLOSED long at 2098.9 | PnL: -0.16% | $-0.43 +2025-03-10 13:14:05,102 - INFO - OPENED SHORT at 2098.9 | Stop loss: 2109.4100321428573 | Take profit: 2067.3932017857146 +2025-03-10 13:14:05,128 - INFO - CLOSED short at 2100.69 | PnL: -0.09% | $-0.31 +2025-03-10 13:14:05,128 - INFO - OPENED LONG at 2100.69 | Stop loss: 2090.171017857143 | Take profit: 2132.2236482142857 +2025-03-10 13:14:05,292 - INFO - CLOSED long at 2099.59 | PnL: -0.05% | $-0.25 +2025-03-10 13:14:05,355 - INFO - OPENED LONG at 2098.39 | Stop loss: 2087.882517857143 | Take profit: 2129.889148214286 +2025-03-10 13:14:05,384 - INFO - CLOSED long at 2095.29 | PnL: -0.15% | $-0.41 +2025-03-10 13:14:05,384 - INFO - OPENED SHORT at 2095.29 | Stop loss: 2105.7819821428575 | Take profit: 2063.8373517857144 +2025-03-10 13:14:05,414 - INFO - CLOSED short at 2093.46 | PnL: 0.09% | $-0.02 +2025-03-10 13:14:05,414 - INFO - OPENED LONG at 2093.46 | Stop loss: 2082.977167857143 | Take profit: 2124.8851982142855 +2025-03-10 13:14:05,432 - INFO - CLOSED long at 2093.33 | PnL: -0.01% | $-0.18 +2025-03-10 13:14:05,454 - INFO - OPENED LONG at 2092.46 | Stop loss: 2081.982167857143 | Take profit: 2123.8701982142857 +2025-03-10 13:14:05,475 - INFO - CLOSED long at 2091.1 | PnL: -0.06% | $-0.27 +2025-03-10 13:14:05,476 - INFO - OPENED SHORT at 2091.1 | Stop loss: 2101.5710321428573 | Take profit: 2059.710201785714 +2025-03-10 13:14:05,500 - INFO - CLOSED short at 2094.72 | PnL: -0.17% | $-0.45 +2025-03-10 13:14:05,500 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.2308678571426 | Take profit: 2126.1640982142853 +2025-03-10 13:14:05,565 - INFO - STOP LOSS hit for long at 2084.2308678571426 | PnL: -0.50% | $-0.98 +2025-03-10 13:14:05,584 - INFO - OPENED SHORT at 2088.44 | Stop loss: 2098.8977321428574 | Take profit: 2057.090101785714 +2025-03-10 13:14:05,625 - INFO - CLOSED short at 2085.3 | PnL: 0.15% | $0.08 +2025-03-10 13:14:05,626 - INFO - OPENED LONG at 2085.3 | Stop loss: 2074.857967857143 | Take profit: 2116.602798214286 +2025-03-10 13:14:05,657 - INFO - CLOSED long at 2082.44 | PnL: -0.14% | $-0.38 +2025-03-10 13:14:05,657 - INFO - OPENED SHORT at 2082.44 | Stop loss: 2092.867732142857 | Take profit: 2051.180101785714 +2025-03-10 13:14:05,692 - INFO - CLOSED short at 2081.49 | PnL: 0.05% | $-0.09 +2025-03-10 13:14:05,692 - INFO - OPENED LONG at 2081.49 | Stop loss: 2071.0670178571427 | Take profit: 2112.7356482142854 +2025-03-10 13:14:05,890 - INFO - CLOSED long at 2084.72 | PnL: 0.16% | $0.09 +2025-03-10 13:14:05,890 - INFO - OPENED SHORT at 2084.72 | Stop loss: 2095.1591321428573 | Take profit: 2053.4259017857144 +2025-03-10 13:14:05,911 - INFO - CLOSED short at 2085.83 | PnL: -0.05% | $-0.25 +2025-03-10 13:14:05,912 - INFO - OPENED LONG at 2085.83 | Stop loss: 2075.3853178571426 | Take profit: 2117.140748214286 +2025-03-10 13:14:05,973 - INFO - CLOSED long at 2088.32 | PnL: 0.12% | $0.03 +2025-03-10 13:14:05,973 - INFO - OPENED SHORT at 2088.32 | Stop loss: 2098.777132142857 | Take profit: 2056.971901785714 +2025-03-10 13:14:06,013 - INFO - CLOSED short at 2089.96 | PnL: -0.08% | $-0.29 +2025-03-10 13:14:06,013 - INFO - OPENED LONG at 2089.96 | Stop loss: 2079.494667857143 | Take profit: 2121.3326982142858 +2025-03-10 13:14:06,074 - INFO - CLOSED long at 2087.47 | PnL: -0.12% | $-0.35 +2025-03-10 13:14:06,074 - INFO - OPENED SHORT at 2087.47 | Stop loss: 2097.922882142857 | Take profit: 2056.134651785714 +2025-03-10 13:14:06,108 - INFO - CLOSED short at 2087.78 | PnL: -0.01% | $-0.18 +2025-03-10 13:14:06,109 - INFO - OPENED LONG at 2087.78 | Stop loss: 2077.325567857143 | Take profit: 2119.1199982142857 +2025-03-10 13:14:06,205 - INFO - CLOSED long at 2085.67 | PnL: -0.10% | $-0.32 +2025-03-10 13:14:06,205 - INFO - OPENED SHORT at 2085.67 | Stop loss: 2096.113882142857 | Take profit: 2054.3616517857145 +2025-03-10 13:14:06,235 - INFO - CLOSED short at 2089.2 | PnL: -0.17% | $-0.43 +2025-03-10 13:14:06,235 - INFO - OPENED LONG at 2089.2 | Stop loss: 2078.738467857143 | Take profit: 2120.5612982142857 +2025-03-10 13:14:06,258 - INFO - CLOSED long at 2091.05 | PnL: 0.09% | $-0.02 +2025-03-10 13:14:06,288 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.579217857143 | Take profit: 2122.4390482142862 +2025-03-10 13:14:06,308 - INFO - CLOSED long at 2091.95 | PnL: 0.04% | $-0.09 +2025-03-10 13:14:06,308 - INFO - OPENED SHORT at 2091.95 | Stop loss: 2102.425282142857 | Take profit: 2060.547451785714 +2025-03-10 13:14:06,338 - INFO - CLOSED short at 2094.7 | PnL: -0.13% | $-0.36 +2025-03-10 13:14:06,367 - INFO - OPENED LONG at 2097.8 | Stop loss: 2087.295467857143 | Take profit: 2129.290298214286 +2025-03-10 13:14:06,391 - INFO - CLOSED long at 2099.99 | PnL: 0.10% | $0.01 +2025-03-10 13:14:06,392 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.505482142857 | Take profit: 2068.466851785714 +2025-03-10 13:14:06,419 - INFO - CLOSED short at 2101.64 | PnL: -0.08% | $-0.28 +2025-03-10 13:14:06,419 - INFO - OPENED LONG at 2101.64 | Stop loss: 2091.1162678571427 | Take profit: 2133.1878982142857 +2025-03-10 13:14:06,709 - INFO - CLOSED long at 2103.07 | PnL: 0.07% | $-0.05 +2025-03-10 13:14:06,737 - INFO - OPENED LONG at 2101.5 | Stop loss: 2090.976967857143 | Take profit: 2133.0457982142857 +2025-03-10 13:14:06,757 - INFO - CLOSED long at 2105.83 | PnL: 0.21% | $0.17 +2025-03-10 13:14:06,806 - INFO - OPENED LONG at 2105.2 | Stop loss: 2094.6584678571426 | Take profit: 2136.8012982142855 +2025-03-10 13:14:06,897 - INFO - Trade Analysis: Win Rate=5.7% in uptrends, 0.0% in downtrends | Avg Win=$0.38, Avg Loss=$-0.33 +2025-03-10 13:14:06,897 - INFO - Episode 12: Reward=70.22, Balance=$78.76, Win Rate=18.5%, Trades=108, Episode PnL=$-13.31, Total PnL=$-280.54, Max Drawdown=22.3%, Pred Accuracy=99.9% +2025-03-10 13:14:06,897 - ERROR - Error in episode 12: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:14:06,900 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:14:06,923 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:14:07,350 - INFO - OPENED LONG at 2047.4 | Stop loss: 2037.147467857143 | Take profit: 2078.134298214286 +2025-03-10 13:14:07,369 - INFO - CLOSED long at 2047.2 | PnL: -0.01% | $-0.22 +2025-03-10 13:14:07,391 - INFO - OPENED LONG at 2045.99 | Stop loss: 2035.744517857143 | Take profit: 2076.703148214286 +2025-03-10 13:14:07,437 - INFO - CLOSED long at 2045.79 | PnL: -0.01% | $-0.22 +2025-03-10 13:14:07,459 - INFO - OPENED LONG at 2048.13 | Stop loss: 2037.873817857143 | Take profit: 2078.875248214286 +2025-03-10 13:14:07,560 - INFO - CLOSED long at 2049.89 | PnL: 0.09% | $-0.03 +2025-03-10 13:14:07,577 - INFO - OPENED LONG at 2051.11 | Stop loss: 2040.8389178571429 | Take profit: 2081.899948214286 +2025-03-10 13:14:07,649 - INFO - CLOSED long at 2052.3 | PnL: 0.06% | $-0.08 +2025-03-10 13:14:07,649 - INFO - OPENED SHORT at 2052.3 | Stop loss: 2062.577032142857 | Take profit: 2021.4922017857145 +2025-03-10 13:14:07,685 - INFO - CLOSED short at 2055.69 | PnL: -0.17% | $-0.52 +2025-03-10 13:14:07,685 - INFO - OPENED LONG at 2055.69 | Stop loss: 2045.396017857143 | Take profit: 2086.5486482142855 +2025-03-10 13:14:07,799 - INFO - CLOSED long at 2060.13 | PnL: 0.22% | $0.23 +2025-03-10 13:14:07,799 - INFO - OPENED SHORT at 2060.13 | Stop loss: 2070.446182142857 | Take profit: 2029.2047517857145 +2025-03-10 13:14:07,828 - INFO - CLOSED short at 2059.7 | PnL: 0.02% | $-0.16 +2025-03-10 13:14:07,828 - INFO - OPENED LONG at 2059.7 | Stop loss: 2049.3859678571425 | Take profit: 2090.6187982142856 +2025-03-10 13:14:07,845 - INFO - CLOSED long at 2061.49 | PnL: 0.09% | $-0.03 +2025-03-10 13:14:07,874 - INFO - OPENED LONG at 2063.29 | Stop loss: 2052.9580178571427 | Take profit: 2094.2626482142855 +2025-03-10 13:14:07,894 - INFO - CLOSED long at 2064.61 | PnL: 0.06% | $-0.07 +2025-03-10 13:14:07,914 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.256517857143 | Take profit: 2094.567148214286 +2025-03-10 13:14:08,058 - INFO - CLOSED long at 2060.0 | PnL: -0.17% | $-0.54 +2025-03-10 13:14:08,058 - INFO - OPENED SHORT at 2060.0 | Stop loss: 2070.315532142857 | Take profit: 2029.0767017857142 +2025-03-10 13:14:08,088 - INFO - CLOSED short at 2061.89 | PnL: -0.09% | $-0.37 +2025-03-10 13:14:08,088 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.5650178571427 | Take profit: 2092.841648214285 +2025-03-10 13:14:08,219 - INFO - CLOSED long at 2057.8 | PnL: -0.20% | $-0.58 +2025-03-10 13:14:08,219 - INFO - OPENED SHORT at 2057.8 | Stop loss: 2068.1045321428574 | Take profit: 2026.9097017857146 +2025-03-10 13:14:08,276 - INFO - CLOSED short at 2058.11 | PnL: -0.02% | $-0.22 +2025-03-10 13:14:08,276 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.803917857143 | Take profit: 2089.004948214286 +2025-03-10 13:14:08,363 - INFO - CLOSED long at 2065.86 | PnL: 0.38% | $0.53 +2025-03-10 13:14:08,383 - INFO - OPENED SHORT at 2070.58 | Stop loss: 2080.948432142857 | Take profit: 2039.4980017857142 +2025-03-10 13:14:08,407 - INFO - CLOSED short at 2068.11 | PnL: 0.12% | $0.04 +2025-03-10 13:14:08,407 - INFO - OPENED LONG at 2068.11 | Stop loss: 2057.753917857143 | Take profit: 2099.154948214286 +2025-03-10 13:14:08,432 - INFO - CLOSED long at 2068.29 | PnL: 0.01% | $-0.18 +2025-03-10 13:14:08,432 - INFO - OPENED SHORT at 2068.29 | Stop loss: 2078.646982142857 | Take profit: 2037.2423517857142 +2025-03-10 13:14:08,469 - INFO - CLOSED short at 2067.89 | PnL: 0.02% | $-0.16 +2025-03-10 13:14:08,469 - INFO - OPENED LONG at 2067.89 | Stop loss: 2057.535017857143 | Take profit: 2098.9316482142854 +2025-03-10 13:14:08,600 - INFO - CLOSED long at 2068.65 | PnL: 0.04% | $-0.12 +2025-03-10 13:14:08,627 - INFO - OPENED LONG at 2068.99 | Stop loss: 2058.6295178571427 | Take profit: 2100.0481482142854 +2025-03-10 13:14:08,708 - INFO - CLOSED long at 2071.44 | PnL: 0.12% | $0.04 +2025-03-10 13:14:08,732 - INFO - OPENED SHORT at 2073.73 | Stop loss: 2084.1141821428573 | Take profit: 2042.6007517857142 +2025-03-10 13:14:08,752 - INFO - CLOSED short at 2075.1 | PnL: -0.07% | $-0.32 +2025-03-10 13:14:08,752 - INFO - OPENED LONG at 2075.1 | Stop loss: 2064.708967857143 | Take profit: 2106.2497982142854 +2025-03-10 13:14:08,930 - INFO - CLOSED long at 2070.9 | PnL: -0.20% | $-0.58 +2025-03-10 13:14:08,930 - INFO - OPENED SHORT at 2070.9 | Stop loss: 2081.2700321428574 | Take profit: 2039.8132017857142 +2025-03-10 13:14:08,969 - INFO - CLOSED short at 2072.8 | PnL: -0.09% | $-0.37 +2025-03-10 13:14:08,969 - INFO - OPENED LONG at 2072.8 | Stop loss: 2062.420467857143 | Take profit: 2103.9152982142855 +2025-03-10 13:14:09,407 - INFO - CLOSED long at 2066.39 | PnL: -0.31% | $-0.78 +2025-03-10 13:14:09,407 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.737482142857 | Take profit: 2035.3708517857142 +2025-03-10 13:14:09,424 - INFO - CLOSED short at 2065.99 | PnL: 0.02% | $-0.15 +2025-03-10 13:14:09,424 - INFO - OPENED LONG at 2065.99 | Stop loss: 2055.6445178571425 | Take profit: 2097.0031482142854 +2025-03-10 13:14:09,483 - INFO - CLOSED long at 2065.08 | PnL: -0.04% | $-0.27 +2025-03-10 13:14:09,509 - INFO - OPENED LONG at 2066.18 | Stop loss: 2055.8335678571425 | Take profit: 2097.1959982142853 +2025-03-10 13:14:09,671 - INFO - CLOSED long at 2069.96 | PnL: 0.18% | $0.16 +2025-03-10 13:14:09,719 - INFO - OPENED LONG at 2071.4 | Stop loss: 2061.0274678571427 | Take profit: 2102.4942982142857 +2025-03-10 13:14:09,777 - INFO - CLOSED long at 2071.36 | PnL: -0.00% | $-0.19 +2025-03-10 13:14:09,777 - INFO - OPENED SHORT at 2071.36 | Stop loss: 2081.7323321428576 | Take profit: 2040.2663017857144 +2025-03-10 13:14:09,811 - INFO - CLOSED short at 2072.75 | PnL: -0.07% | $-0.31 +2025-03-10 13:14:09,812 - INFO - OPENED LONG at 2072.75 | Stop loss: 2062.3707178571426 | Take profit: 2103.864548214286 +2025-03-10 13:14:09,915 - INFO - CLOSED long at 2073.9 | PnL: 0.06% | $-0.08 +2025-03-10 13:14:09,916 - INFO - OPENED SHORT at 2073.9 | Stop loss: 2084.2850321428573 | Take profit: 2042.7682017857144 +2025-03-10 13:14:09,933 - INFO - CLOSED short at 2071.92 | PnL: 0.10% | $-0.01 +2025-03-10 13:14:09,933 - INFO - OPENED LONG at 2071.92 | Stop loss: 2061.544867857143 | Take profit: 2103.0220982142855 +2025-03-10 13:14:09,955 - INFO - CLOSED long at 2070.4 | PnL: -0.07% | $-0.32 +2025-03-10 13:14:09,955 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7675321428574 | Take profit: 2039.3207017857144 +2025-03-10 13:14:09,976 - INFO - CLOSED short at 2071.11 | PnL: -0.03% | $-0.25 +2025-03-10 13:14:09,977 - INFO - OPENED LONG at 2071.11 | Stop loss: 2060.738917857143 | Take profit: 2102.199948214286 +2025-03-10 13:14:09,991 - INFO - CLOSED long at 2069.46 | PnL: -0.08% | $-0.33 +2025-03-10 13:14:09,991 - INFO - OPENED SHORT at 2069.46 | Stop loss: 2079.8228321428574 | Take profit: 2038.3948017857144 +2025-03-10 13:14:10,022 - INFO - CLOSED short at 2069.35 | PnL: 0.01% | $-0.18 +2025-03-10 13:14:10,022 - INFO - OPENED LONG at 2069.35 | Stop loss: 2058.987717857143 | Take profit: 2100.4135482142856 +2025-03-10 13:14:10,085 - INFO - CLOSED long at 2067.0 | PnL: -0.11% | $-0.40 +2025-03-10 13:14:10,117 - INFO - OPENED LONG at 2067.79 | Stop loss: 2057.4355178571427 | Take profit: 2098.8301482142856 +2025-03-10 13:14:10,145 - INFO - CLOSED long at 2067.46 | PnL: -0.02% | $-0.21 +2025-03-10 13:14:10,186 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.1495321428574 | Take profit: 2035.7747017857143 +2025-03-10 13:14:10,218 - INFO - CLOSED short at 2065.49 | PnL: 0.06% | $-0.07 +2025-03-10 13:14:10,218 - INFO - OPENED LONG at 2065.49 | Stop loss: 2055.1470178571426 | Take profit: 2096.4956482142857 +2025-03-10 13:14:10,276 - INFO - CLOSED long at 2067.89 | PnL: 0.12% | $0.03 +2025-03-10 13:14:10,276 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.244982142857 | Take profit: 2036.8483517857142 +2025-03-10 13:14:10,296 - INFO - CLOSED short at 2068.58 | PnL: -0.03% | $-0.25 +2025-03-10 13:14:10,297 - INFO - OPENED LONG at 2068.58 | Stop loss: 2058.221567857143 | Take profit: 2099.631998214286 +2025-03-10 13:14:10,340 - INFO - CLOSED long at 2069.34 | PnL: 0.04% | $-0.12 +2025-03-10 13:14:10,359 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.505167857143 | Take profit: 2098.9011982142856 +2025-03-10 13:14:10,392 - INFO - CLOSED long at 2069.2 | PnL: 0.06% | $-0.06 +2025-03-10 13:14:10,399 - INFO - OPENED SHORT at 2069.2 | Stop loss: 2079.561532142857 | Take profit: 2038.1387017857141 +2025-03-10 13:14:10,428 - INFO - CLOSED short at 2070.3 | PnL: -0.05% | $-0.28 +2025-03-10 13:14:10,428 - INFO - OPENED LONG at 2070.3 | Stop loss: 2059.932967857143 | Take profit: 2101.377798214286 +2025-03-10 13:14:10,520 - INFO - CLOSED long at 2070.4 | PnL: 0.00% | $-0.17 +2025-03-10 13:14:10,520 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7675321428574 | Take profit: 2039.3207017857144 +2025-03-10 13:14:10,557 - INFO - CLOSED short at 2070.73 | PnL: -0.02% | $-0.21 +2025-03-10 13:14:10,557 - INFO - OPENED LONG at 2070.73 | Stop loss: 2060.360817857143 | Take profit: 2101.8142482142857 +2025-03-10 13:14:10,817 - INFO - CLOSED long at 2067.8 | PnL: -0.14% | $-0.44 +2025-03-10 13:14:10,817 - INFO - OPENED SHORT at 2067.8 | Stop loss: 2078.154532142857 | Take profit: 2036.7597017857145 +2025-03-10 13:14:10,851 - INFO - CLOSED short at 2068.18 | PnL: -0.02% | $-0.21 +2025-03-10 13:14:10,852 - INFO - OPENED LONG at 2068.18 | Stop loss: 2057.8235678571427 | Take profit: 2099.2259982142855 +2025-03-10 13:14:11,027 - INFO - CLOSED long at 2065.26 | PnL: -0.14% | $-0.44 +2025-03-10 13:14:11,027 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.6018321428573 | Take profit: 2034.2578017857145 +2025-03-10 13:14:11,045 - INFO - CLOSED short at 2062.89 | PnL: 0.11% | $0.03 +2025-03-10 13:14:11,066 - INFO - OPENED SHORT at 2062.65 | Stop loss: 2072.978782142857 | Take profit: 2031.6869517857142 +2025-03-10 13:14:11,087 - INFO - CLOSED short at 2061.78 | PnL: 0.04% | $-0.10 +2025-03-10 13:14:11,087 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.4555678571433 | Take profit: 2092.729998214286 +2025-03-10 13:14:11,125 - INFO - CLOSED long at 2061.3 | PnL: -0.02% | $-0.22 +2025-03-10 13:14:11,141 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.256517857143 | Take profit: 2094.567148214286 +2025-03-10 13:14:11,182 - INFO - CLOSED long at 2066.24 | PnL: 0.13% | $0.05 +2025-03-10 13:14:11,182 - INFO - OPENED SHORT at 2066.24 | Stop loss: 2076.586732142857 | Take profit: 2035.223101785714 +2025-03-10 13:14:11,231 - INFO - CLOSED short at 2065.54 | PnL: 0.03% | $-0.12 +2025-03-10 13:14:11,232 - INFO - OPENED LONG at 2065.54 | Stop loss: 2055.1967678571427 | Take profit: 2096.5463982142855 +2025-03-10 13:14:11,323 - INFO - CLOSED long at 2064.08 | PnL: -0.07% | $-0.31 +2025-03-10 13:14:11,323 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.415932142857 | Take profit: 2033.095501785714 +2025-03-10 13:14:11,356 - INFO - CLOSED short at 2062.71 | PnL: 0.07% | $-0.06 +2025-03-10 13:14:11,357 - INFO - OPENED LONG at 2062.71 | Stop loss: 2052.380917857143 | Take profit: 2093.6739482142857 +2025-03-10 13:14:11,416 - INFO - CLOSED long at 2064.5 | PnL: 0.09% | $-0.02 +2025-03-10 13:14:11,438 - INFO - OPENED LONG at 2063.5 | Stop loss: 2053.166967857143 | Take profit: 2094.4757982142855 +2025-03-10 13:14:11,563 - INFO - CLOSED long at 2060.31 | PnL: -0.15% | $-0.45 +2025-03-10 13:14:11,564 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.627082142857 | Take profit: 2029.3820517857143 +2025-03-10 13:14:11,587 - INFO - CLOSED short at 2061.8 | PnL: -0.07% | $-0.31 +2025-03-10 13:14:11,587 - INFO - OPENED LONG at 2061.8 | Stop loss: 2051.475467857143 | Take profit: 2092.7502982142855 +2025-03-10 13:14:11,643 - INFO - CLOSED long at 2062.61 | PnL: 0.04% | $-0.11 +2025-03-10 13:14:11,677 - INFO - OPENED LONG at 2060.91 | Stop loss: 2050.5899178571426 | Take profit: 2091.8469482142855 +2025-03-10 13:14:11,817 - INFO - CLOSED long at 2065.36 | PnL: 0.22% | $0.20 +2025-03-10 13:14:11,818 - INFO - OPENED SHORT at 2065.36 | Stop loss: 2075.7023321428574 | Take profit: 2034.3563017857145 +2025-03-10 13:14:11,840 - INFO - CLOSED short at 2064.33 | PnL: 0.05% | $-0.09 +2025-03-10 13:14:11,841 - INFO - OPENED LONG at 2064.33 | Stop loss: 2053.9928178571427 | Take profit: 2095.3182482142856 +2025-03-10 13:14:12,376 - INFO - CLOSED long at 2054.89 | PnL: -0.46% | $-0.98 +2025-03-10 13:14:12,402 - INFO - OPENED LONG at 2054.83 | Stop loss: 2044.5403178571428 | Take profit: 2085.6757482142852 +2025-03-10 13:14:12,659 - INFO - CLOSED long at 2063.4 | PnL: 0.42% | $0.55 +2025-03-10 13:14:12,700 - INFO - OPENED LONG at 2066.01 | Stop loss: 2055.664417857143 | Take profit: 2097.023448214286 +2025-03-10 13:14:12,762 - INFO - CLOSED long at 2066.33 | PnL: 0.02% | $-0.15 +2025-03-10 13:14:12,762 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6771821428574 | Take profit: 2035.3117517857143 +2025-03-10 13:14:12,787 - INFO - CLOSED short at 2066.34 | PnL: -0.00% | $-0.18 +2025-03-10 13:14:12,788 - INFO - OPENED LONG at 2066.34 | Stop loss: 2055.992767857143 | Take profit: 2097.358398214286 +2025-03-10 13:14:12,929 - INFO - CLOSED long at 2069.79 | PnL: 0.17% | $0.12 +2025-03-10 13:14:12,929 - INFO - OPENED SHORT at 2069.79 | Stop loss: 2080.154482142857 | Take profit: 2038.7198517857141 +2025-03-10 13:14:12,965 - INFO - CLOSED short at 2072.0 | PnL: -0.11% | $-0.36 +2025-03-10 13:14:12,965 - INFO - OPENED LONG at 2072.0 | Stop loss: 2061.624467857143 | Take profit: 2103.1032982142856 +2025-03-10 13:14:12,994 - INFO - CLOSED long at 2074.3 | PnL: 0.11% | $0.02 +2025-03-10 13:14:12,994 - INFO - OPENED SHORT at 2074.3 | Stop loss: 2084.6870321428573 | Take profit: 2043.1622017857144 +2025-03-10 13:14:13,024 - INFO - CLOSED short at 2078.01 | PnL: -0.18% | $-0.49 +2025-03-10 13:14:13,025 - INFO - OPENED LONG at 2078.01 | Stop loss: 2067.604417857143 | Take profit: 2109.203448214286 +2025-03-10 13:14:13,277 - INFO - CLOSED long at 2068.39 | PnL: -0.46% | $-0.98 +2025-03-10 13:14:13,313 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.053982142857 | Take profit: 2038.6213517857145 +2025-03-10 13:14:13,353 - INFO - CLOSED short at 2069.03 | PnL: 0.03% | $-0.12 +2025-03-10 13:14:13,354 - INFO - OPENED LONG at 2069.03 | Stop loss: 2058.669317857143 | Take profit: 2100.088748214286 +2025-03-10 13:14:13,813 - INFO - CLOSED long at 2065.5 | PnL: -0.17% | $-0.46 +2025-03-10 13:14:13,849 - INFO - OPENED LONG at 2067.53 | Stop loss: 2057.176817857143 | Take profit: 2098.566248214286 +2025-03-10 13:14:13,964 - INFO - CLOSED long at 2066.5 | PnL: -0.05% | $-0.26 +2025-03-10 13:14:13,996 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.231517857143 | Take profit: 2099.642148214286 +2025-03-10 13:14:14,240 - INFO - CLOSED long at 2070.61 | PnL: 0.10% | $-0.00 +2025-03-10 13:14:14,262 - INFO - OPENED LONG at 2071.99 | Stop loss: 2061.614517857143 | Take profit: 2103.0931482142855 +2025-03-10 13:14:14,284 - INFO - CLOSED long at 2068.19 | PnL: -0.18% | $-0.48 +2025-03-10 13:14:14,285 - INFO - OPENED SHORT at 2068.19 | Stop loss: 2078.5464821428573 | Take profit: 2037.1438517857143 +2025-03-10 13:14:14,305 - INFO - CLOSED short at 2068.67 | PnL: -0.02% | $-0.21 +2025-03-10 13:14:14,328 - INFO - OPENED LONG at 2070.67 | Stop loss: 2060.301117857143 | Take profit: 2101.753348214286 +2025-03-10 13:14:14,350 - INFO - CLOSED long at 2069.78 | PnL: -0.04% | $-0.24 +2025-03-10 13:14:14,376 - INFO - OPENED LONG at 2071.61 | Stop loss: 2061.236417857143 | Take profit: 2102.7074482142857 +2025-03-10 13:14:14,496 - INFO - CLOSED long at 2073.99 | PnL: 0.11% | $0.03 +2025-03-10 13:14:14,524 - INFO - OPENED LONG at 2075.32 | Stop loss: 2064.927867857143 | Take profit: 2106.473098214286 +2025-03-10 13:14:14,662 - INFO - CLOSED long at 2072.09 | PnL: -0.16% | $-0.43 +2025-03-10 13:14:14,663 - INFO - OPENED SHORT at 2072.09 | Stop loss: 2082.4659821428577 | Take profit: 2040.9853517857146 +2025-03-10 13:14:14,698 - INFO - CLOSED short at 2069.97 | PnL: 0.10% | $0.00 +2025-03-10 13:14:14,699 - INFO - OPENED LONG at 2069.97 | Stop loss: 2059.604617857143 | Take profit: 2101.042848214285 +2025-03-10 13:14:14,973 - INFO - CLOSED long at 2069.0 | PnL: -0.05% | $-0.25 +2025-03-10 13:14:15,002 - INFO - OPENED LONG at 2070.19 | Stop loss: 2059.8235178571426 | Take profit: 2101.2661482142857 +2025-03-10 13:14:15,295 - INFO - CLOSED long at 2064.11 | PnL: -0.29% | $-0.66 +2025-03-10 13:14:15,316 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.161967857143 | Take profit: 2095.490798214286 +2025-03-10 13:14:15,465 - INFO - CLOSED long at 2058.65 | PnL: -0.28% | $-0.64 +2025-03-10 13:14:15,496 - INFO - OPENED LONG at 2056.77 | Stop loss: 2046.4706178571428 | Take profit: 2087.6448482142855 +2025-03-10 13:14:15,538 - INFO - CLOSED long at 2049.21 | PnL: -0.37% | $-0.77 +2025-03-10 13:14:15,559 - INFO - OPENED SHORT at 2049.5 | Stop loss: 2059.7630321428574 | Take profit: 2018.7342017857143 +2025-03-10 13:14:15,598 - INFO - CLOSED short at 2058.3 | PnL: -0.43% | $-0.86 +2025-03-10 13:14:15,598 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9929678571432 | Take profit: 2089.1977982142857 +2025-03-10 13:14:15,620 - INFO - CLOSED long at 2056.85 | PnL: -0.07% | $-0.27 +2025-03-10 13:14:15,620 - INFO - OPENED SHORT at 2056.85 | Stop loss: 2067.149782142857 | Take profit: 2025.9739517857142 +2025-03-10 13:14:15,638 - INFO - CLOSED short at 2057.11 | PnL: -0.01% | $-0.18 +2025-03-10 13:14:15,639 - INFO - OPENED LONG at 2057.11 | Stop loss: 2046.808917857143 | Take profit: 2087.989948214286 +2025-03-10 13:14:15,678 - INFO - CLOSED long at 2062.83 | PnL: 0.28% | $0.29 +2025-03-10 13:14:15,697 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.235032142857 | Take profit: 2032.9182017857145 +2025-03-10 13:14:15,718 - INFO - CLOSED short at 2065.1 | PnL: -0.06% | $-0.25 +2025-03-10 13:14:15,741 - INFO - OPENED LONG at 2062.43 | Stop loss: 2052.1023178571427 | Take profit: 2093.389748214285 +2025-03-10 13:14:15,932 - INFO - CLOSED long at 2059.9 | PnL: -0.12% | $-0.36 +2025-03-10 13:14:15,932 - INFO - OPENED SHORT at 2059.9 | Stop loss: 2070.215032142857 | Take profit: 2028.9782017857144 +2025-03-10 13:14:15,955 - INFO - CLOSED short at 2060.7 | PnL: -0.04% | $-0.22 +2025-03-10 13:14:15,956 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3809678571424 | Take profit: 2091.633798214286 +2025-03-10 13:14:16,053 - INFO - CLOSED long at 2070.31 | PnL: 0.47% | $0.58 +2025-03-10 13:14:16,053 - INFO - OPENED SHORT at 2070.31 | Stop loss: 2080.677082142857 | Take profit: 2039.2320517857142 +2025-03-10 13:14:16,091 - INFO - CLOSED short at 2070.24 | PnL: 0.00% | $-0.15 +2025-03-10 13:14:16,091 - INFO - OPENED LONG at 2070.24 | Stop loss: 2059.8732678571428 | Take profit: 2101.3168982142856 +2025-03-10 13:14:16,374 - INFO - CLOSED long at 2085.56 | PnL: 0.74% | $1.02 +2025-03-10 13:14:16,374 - INFO - OPENED SHORT at 2085.56 | Stop loss: 2096.0033321428573 | Take profit: 2054.2533017857145 +2025-03-10 13:14:16,400 - INFO - CLOSED short at 2090.49 | PnL: -0.24% | $-0.55 +2025-03-10 13:14:16,400 - INFO - OPENED LONG at 2090.49 | Stop loss: 2080.0220178571426 | Take profit: 2121.8706482142857 +2025-03-10 13:14:16,454 - INFO - TAKE PROFIT hit for long at 2121.8706482142857 | PnL: 1.50% | $2.26 +2025-03-10 13:14:16,491 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.826767857143 | Take profit: 2171.6563982142857 +2025-03-10 13:14:16,711 - INFO - STOP LOSS hit for long at 2128.826767857143 | PnL: -0.50% | $-0.99 +2025-03-10 13:14:16,747 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.031017857143 | Take profit: 2160.643648214286 +2025-03-10 13:14:16,809 - INFO - STOP LOSS hit for long at 2118.031017857143 | PnL: -0.50% | $-0.98 +2025-03-10 13:14:16,826 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3148178571428 | Take profit: 2151.752248214286 +2025-03-10 13:14:17,009 - INFO - STOP LOSS hit for long at 2109.3148178571428 | PnL: -0.50% | $-0.97 +2025-03-10 13:14:17,029 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.0314678571426 | Take profit: 2142.282298214285 +2025-03-10 13:14:17,068 - INFO - CLOSED long at 2112.09 | PnL: 0.07% | $-0.05 +2025-03-10 13:14:17,107 - INFO - OPENED LONG at 2112.46 | Stop loss: 2101.882167857143 | Take profit: 2144.1701982142854 +2025-03-10 13:14:17,170 - INFO - CLOSED long at 2120.81 | PnL: 0.40% | $0.47 +2025-03-10 13:14:17,171 - INFO - OPENED SHORT at 2120.81 | Stop loss: 2131.429582142857 | Take profit: 2088.9745517857145 +2025-03-10 13:14:17,191 - INFO - CLOSED short at 2116.48 | PnL: 0.20% | $0.17 +2025-03-10 13:14:17,195 - INFO - OPENED LONG at 2116.48 | Stop loss: 2105.882067857143 | Take profit: 2148.250498214286 +2025-03-10 13:14:17,394 - INFO - STOP LOSS hit for long at 2105.882067857143 | PnL: -0.50% | $-0.97 +2025-03-10 13:14:17,416 - INFO - OPENED LONG at 2100.5 | Stop loss: 2089.981967857143 | Take profit: 2132.0307982142854 +2025-03-10 13:14:17,571 - INFO - CLOSED long at 2100.69 | PnL: 0.01% | $-0.14 +2025-03-10 13:14:17,593 - INFO - OPENED LONG at 2104.83 | Stop loss: 2094.290317857143 | Take profit: 2136.4257482142857 +2025-03-10 13:14:17,637 - INFO - CLOSED long at 2100.74 | PnL: -0.19% | $-0.47 +2025-03-10 13:14:17,670 - INFO - OPENED LONG at 2103.86 | Stop loss: 2093.3251678571432 | Take profit: 2135.4411982142856 +2025-03-10 13:14:17,895 - INFO - STOP LOSS hit for long at 2093.3251678571432 | PnL: -0.50% | $-0.95 +2025-03-10 13:14:17,933 - INFO - OPENED SHORT at 2094.72 | Stop loss: 2105.209132142857 | Take profit: 2063.275901785714 +2025-03-10 13:14:17,978 - INFO - CLOSED short at 2088.35 | PnL: 0.30% | $0.32 +2025-03-10 13:14:18,001 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848067857143 | Take profit: 2114.5524982142856 +2025-03-10 13:14:18,243 - INFO - CLOSED long at 2083.41 | PnL: 0.01% | $-0.15 +2025-03-10 13:14:18,245 - INFO - OPENED SHORT at 2083.41 | Stop loss: 2093.8425821428573 | Take profit: 2052.135551785714 +2025-03-10 13:14:18,272 - INFO - CLOSED short at 2085.09 | PnL: -0.08% | $-0.28 +2025-03-10 13:14:18,272 - INFO - OPENED LONG at 2085.09 | Stop loss: 2074.649017857143 | Take profit: 2116.389648214286 +2025-03-10 13:14:18,430 - INFO - CLOSED long at 2088.66 | PnL: 0.17% | $0.11 +2025-03-10 13:14:18,430 - INFO - OPENED SHORT at 2088.66 | Stop loss: 2099.1188321428567 | Take profit: 2057.306801785714 +2025-03-10 13:14:18,461 - INFO - CLOSED short at 2088.32 | PnL: 0.02% | $-0.13 +2025-03-10 13:14:18,461 - INFO - OPENED LONG at 2088.32 | Stop loss: 2077.862867857143 | Take profit: 2119.6680982142857 +2025-03-10 13:14:18,955 - INFO - CLOSED long at 2098.49 | PnL: 0.49% | $0.60 +2025-03-10 13:14:18,988 - INFO - OPENED LONG at 2099.89 | Stop loss: 2089.3750178571427 | Take profit: 2131.411648214286 +2025-03-10 13:14:19,041 - INFO - CLOSED long at 2099.73 | PnL: -0.01% | $-0.17 +2025-03-10 13:14:19,042 - INFO - OPENED SHORT at 2099.73 | Stop loss: 2110.244182142857 | Take profit: 2068.2107517857144 +2025-03-10 13:14:19,071 - INFO - CLOSED short at 2106.15 | PnL: -0.31% | $-0.63 +2025-03-10 13:14:19,071 - INFO - OPENED LONG at 2106.15 | Stop loss: 2095.603717857143 | Take profit: 2137.765548214286 +2025-03-10 13:14:19,263 - INFO - CLOSED long at 2103.52 | PnL: -0.12% | $-0.35 +2025-03-10 13:14:19,263 - INFO - OPENED SHORT at 2103.52 | Stop loss: 2114.0531321428575 | Take profit: 2071.9439017857144 +2025-03-10 13:14:19,286 - INFO - CLOSED short at 2104.4 | PnL: -0.04% | $-0.22 +2025-03-10 13:14:19,286 - INFO - OPENED LONG at 2104.4 | Stop loss: 2093.862467857143 | Take profit: 2135.989298214286 +2025-03-10 13:14:19,311 - INFO - Trade Analysis: Win Rate=9.1% in uptrends, 0.0% in downtrends | Avg Win=$0.34, Avg Loss=$-0.33 +2025-03-10 13:14:19,311 - INFO - Episode 13: Reward=-24.56, Balance=$77.59, Win Rate=20.0%, Trades=115, Episode PnL=$-17.34, Total PnL=$-302.95, Max Drawdown=21.5%, Pred Accuracy=99.6% +2025-03-10 13:14:19,312 - ERROR - Error in episode 13: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:14:19,313 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:14:19,337 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:14:19,554 - INFO - OPENED LONG at 2047.4 | Stop loss: 2037.147467857143 | Take profit: 2078.134298214286 +2025-03-10 13:14:19,872 - INFO - CLOSED long at 2052.3 | PnL: 0.24% | $0.28 +2025-03-10 13:14:19,947 - INFO - OPENED LONG at 2056.89 | Stop loss: 2046.5900178571426 | Take profit: 2087.766648214286 +2025-03-10 13:14:19,969 - INFO - CLOSED long at 2058.39 | PnL: 0.07% | $-0.05 +2025-03-10 13:14:19,969 - INFO - OPENED SHORT at 2058.39 | Stop loss: 2068.697482142857 | Take profit: 2027.490851785714 +2025-03-10 13:14:19,994 - INFO - CLOSED short at 2060.13 | PnL: -0.08% | $-0.37 +2025-03-10 13:14:19,994 - INFO - OPENED LONG at 2060.13 | Stop loss: 2049.813817857143 | Take profit: 2091.055248214286 +2025-03-10 13:14:20,171 - INFO - CLOSED long at 2063.01 | PnL: 0.14% | $0.08 +2025-03-10 13:14:20,174 - INFO - OPENED SHORT at 2063.01 | Stop loss: 2073.3405821428573 | Take profit: 2032.0415517857145 +2025-03-10 13:14:20,195 - INFO - CLOSED short at 2060.99 | PnL: 0.10% | $-0.00 +2025-03-10 13:14:20,195 - INFO - OPENED LONG at 2060.99 | Stop loss: 2050.6695178571426 | Take profit: 2091.9281482142856 +2025-03-10 13:14:20,268 - INFO - CLOSED long at 2061.89 | PnL: 0.04% | $-0.11 +2025-03-10 13:14:20,291 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.5600178571426 | Take profit: 2093.8566482142855 +2025-03-10 13:14:20,416 - INFO - CLOSED long at 2057.94 | PnL: -0.24% | $-0.67 +2025-03-10 13:14:20,461 - INFO - OPENED LONG at 2061.79 | Stop loss: 2051.465517857143 | Take profit: 2092.740148214286 +2025-03-10 13:14:20,606 - INFO - CLOSED long at 2067.89 | PnL: 0.30% | $0.39 +2025-03-10 13:14:20,629 - INFO - OPENED LONG at 2071.63 | Stop loss: 2061.256317857143 | Take profit: 2102.727748214286 +2025-03-10 13:14:20,772 - INFO - CLOSED long at 2070.26 | PnL: -0.07% | $-0.33 +2025-03-10 13:14:20,798 - INFO - OPENED LONG at 2071.44 | Stop loss: 2061.0672678571427 | Take profit: 2102.534898214286 +2025-03-10 13:14:20,817 - INFO - CLOSED long at 2073.73 | PnL: 0.11% | $0.02 +2025-03-10 13:14:20,840 - INFO - OPENED LONG at 2075.1 | Stop loss: 2064.708967857143 | Take profit: 2106.2497982142854 +2025-03-10 13:14:20,948 - INFO - CLOSED long at 2069.37 | PnL: -0.28% | $-0.74 +2025-03-10 13:14:20,991 - INFO - OPENED LONG at 2072.8 | Stop loss: 2062.420467857143 | Take profit: 2103.9152982142855 +2025-03-10 13:14:21,360 - INFO - CLOSED long at 2066.19 | PnL: -0.32% | $-0.82 +2025-03-10 13:14:21,392 - INFO - OPENED LONG at 2066.29 | Stop loss: 2055.943017857143 | Take profit: 2097.3076482142856 +2025-03-10 13:14:21,540 - INFO - CLOSED long at 2068.59 | PnL: 0.11% | $0.02 +2025-03-10 13:14:21,570 - INFO - OPENED LONG at 2069.7 | Stop loss: 2059.335967857143 | Take profit: 2100.7687982142857 +2025-03-10 13:14:21,795 - INFO - CLOSED long at 2074.29 | PnL: 0.22% | $0.24 +2025-03-10 13:14:21,796 - INFO - OPENED SHORT at 2074.29 | Stop loss: 2084.676982142857 | Take profit: 2043.1523517857142 +2025-03-10 13:14:21,823 - INFO - CLOSED short at 2073.9 | PnL: 0.02% | $-0.16 +2025-03-10 13:14:21,824 - INFO - OPENED LONG at 2073.9 | Stop loss: 2063.514967857143 | Take profit: 2105.0317982142856 +2025-03-10 13:14:21,937 - INFO - CLOSED long at 2069.35 | PnL: -0.22% | $-0.62 +2025-03-10 13:14:21,956 - INFO - OPENED LONG at 2068.32 | Stop loss: 2057.962867857143 | Take profit: 2099.368098214286 +2025-03-10 13:14:22,049 - INFO - CLOSED long at 2066.8 | PnL: -0.07% | $-0.33 +2025-03-10 13:14:22,086 - INFO - OPENED LONG at 2065.49 | Stop loss: 2055.1470178571426 | Take profit: 2096.4956482142857 +2025-03-10 13:14:22,282 - INFO - CLOSED long at 2067.59 | PnL: 0.10% | $0.00 +2025-03-10 13:14:22,323 - INFO - OPENED LONG at 2070.3 | Stop loss: 2059.932967857143 | Take profit: 2101.377798214286 +2025-03-10 13:14:22,513 - INFO - CLOSED long at 2067.84 | PnL: -0.12% | $-0.42 +2025-03-10 13:14:22,513 - INFO - OPENED SHORT at 2067.84 | Stop loss: 2078.1947321428574 | Take profit: 2036.7991017857144 +2025-03-10 13:14:22,552 - INFO - CLOSED short at 2067.11 | PnL: 0.04% | $-0.12 +2025-03-10 13:14:22,555 - INFO - OPENED LONG at 2067.11 | Stop loss: 2056.758917857143 | Take profit: 2098.139948214286 +2025-03-10 13:14:22,591 - INFO - CLOSED long at 2067.86 | PnL: 0.04% | $-0.12 +2025-03-10 13:14:22,591 - INFO - OPENED SHORT at 2067.86 | Stop loss: 2078.2148321428576 | Take profit: 2036.8188017857144 +2025-03-10 13:14:22,611 - INFO - CLOSED short at 2066.4 | PnL: 0.07% | $-0.06 +2025-03-10 13:14:22,611 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.052467857143 | Take profit: 2097.4192982142854 +2025-03-10 13:14:22,741 - INFO - CLOSED long at 2070.04 | PnL: 0.18% | $0.15 +2025-03-10 13:14:22,774 - INFO - OPENED LONG at 2067.8 | Stop loss: 2057.445467857143 | Take profit: 2098.8402982142857 +2025-03-10 13:14:22,893 - INFO - CLOSED long at 2064.99 | PnL: -0.14% | $-0.45 +2025-03-10 13:14:22,893 - INFO - OPENED SHORT at 2064.99 | Stop loss: 2075.330482142857 | Take profit: 2033.991851785714 +2025-03-10 13:14:22,947 - INFO - CLOSED short at 2065.83 | PnL: -0.04% | $-0.27 +2025-03-10 13:14:22,947 - INFO - OPENED LONG at 2065.83 | Stop loss: 2055.4853178571425 | Take profit: 2096.8407482142857 +2025-03-10 13:14:23,773 - INFO - CLOSED long at 2064.7 | PnL: -0.05% | $-0.29 +2025-03-10 13:14:23,774 - INFO - OPENED SHORT at 2064.7 | Stop loss: 2075.039032142857 | Take profit: 2033.706201785714 +2025-03-10 13:14:23,816 - INFO - CLOSED short at 2062.61 | PnL: 0.10% | $0.00 +2025-03-10 13:14:23,816 - INFO - OPENED LONG at 2062.61 | Stop loss: 2052.281417857143 | Take profit: 2093.572448214286 +2025-03-10 13:14:23,897 - INFO - CLOSED long at 2061.13 | PnL: -0.07% | $-0.32 +2025-03-10 13:14:23,928 - INFO - OPENED LONG at 2061.9 | Stop loss: 2051.574967857143 | Take profit: 2092.8517982142857 +2025-03-10 13:14:24,054 - INFO - CLOSED long at 2064.33 | PnL: 0.12% | $0.03 +2025-03-10 13:14:24,099 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.0575178571426 | Take profit: 2094.3641482142853 +2025-03-10 13:14:24,139 - INFO - CLOSED long at 2064.79 | PnL: 0.07% | $-0.06 +2025-03-10 13:14:24,177 - INFO - OPENED LONG at 2065.89 | Stop loss: 2055.5450178571427 | Take profit: 2096.9016482142856 +2025-03-10 13:14:24,259 - INFO - CLOSED long at 2062.6 | PnL: -0.16% | $-0.49 +2025-03-10 13:14:24,260 - INFO - OPENED SHORT at 2062.6 | Stop loss: 2072.928532142857 | Take profit: 2031.6377017857142 +2025-03-10 13:14:24,289 - INFO - CLOSED short at 2061.89 | PnL: 0.03% | $-0.12 +2025-03-10 13:14:24,290 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.5650178571427 | Take profit: 2092.841648214285 +2025-03-10 13:14:24,325 - INFO - CLOSED long at 2061.7 | PnL: -0.01% | $-0.20 +2025-03-10 13:14:24,326 - INFO - OPENED SHORT at 2061.7 | Stop loss: 2072.024032142857 | Take profit: 2030.751201785714 +2025-03-10 13:14:24,360 - INFO - CLOSED short at 2060.7 | PnL: 0.05% | $-0.10 +2025-03-10 13:14:24,361 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3809678571424 | Take profit: 2091.633798214286 +2025-03-10 13:14:24,392 - INFO - CLOSED long at 2061.09 | PnL: 0.02% | $-0.15 +2025-03-10 13:14:24,393 - INFO - OPENED SHORT at 2061.09 | Stop loss: 2071.4109821428574 | Take profit: 2030.1503517857145 +2025-03-10 13:14:24,433 - INFO - CLOSED short at 2059.61 | PnL: 0.07% | $-0.05 +2025-03-10 13:14:24,433 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.2964178571433 | Take profit: 2090.527448214286 +2025-03-10 13:14:24,861 - INFO - CLOSED long at 2059.8 | PnL: 0.01% | $-0.17 +2025-03-10 13:14:24,892 - INFO - OPENED LONG at 2061.66 | Stop loss: 2051.3361678571428 | Take profit: 2092.608198214286 +2025-03-10 13:14:24,992 - INFO - CLOSED long at 2061.3 | PnL: -0.02% | $-0.22 +2025-03-10 13:14:24,992 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.6220321428573 | Take profit: 2030.3572017857146 +2025-03-10 13:14:25,030 - INFO - CLOSED short at 2062.69 | PnL: -0.07% | $-0.31 +2025-03-10 13:14:25,031 - INFO - OPENED LONG at 2062.69 | Stop loss: 2052.361017857143 | Take profit: 2093.6536482142856 +2025-03-10 13:14:25,055 - INFO - CLOSED long at 2063.4 | PnL: 0.03% | $-0.12 +2025-03-10 13:14:25,056 - INFO - OPENED SHORT at 2063.4 | Stop loss: 2073.732532142857 | Take profit: 2032.4257017857144 +2025-03-10 13:14:25,108 - INFO - CLOSED short at 2066.01 | PnL: -0.13% | $-0.42 +2025-03-10 13:14:25,109 - INFO - OPENED LONG at 2066.01 | Stop loss: 2055.664417857143 | Take profit: 2097.023448214286 +2025-03-10 13:14:25,389 - INFO - CLOSED long at 2072.0 | PnL: 0.29% | $0.35 +2025-03-10 13:14:25,389 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3755321428575 | Take profit: 2040.8967017857144 +2025-03-10 13:14:25,420 - INFO - CLOSED short at 2074.3 | PnL: -0.11% | $-0.39 +2025-03-10 13:14:25,420 - INFO - OPENED LONG at 2074.3 | Stop loss: 2063.912967857143 | Take profit: 2105.437798214286 +2025-03-10 13:14:25,473 - INFO - CLOSED long at 2075.01 | PnL: 0.03% | $-0.12 +2025-03-10 13:14:25,502 - INFO - OPENED LONG at 2072.6 | Stop loss: 2062.2214678571427 | Take profit: 2103.712298214286 +2025-03-10 13:14:25,564 - INFO - CLOSED long at 2070.01 | PnL: -0.12% | $-0.41 +2025-03-10 13:14:25,596 - INFO - OPENED LONG at 2071.6 | Stop loss: 2061.226467857143 | Take profit: 2102.6972982142856 +2025-03-10 13:14:25,661 - INFO - CLOSED long at 2070.0 | PnL: -0.08% | $-0.32 +2025-03-10 13:14:25,661 - INFO - OPENED SHORT at 2070.0 | Stop loss: 2080.365532142857 | Take profit: 2038.9267017857142 +2025-03-10 13:14:25,728 - INFO - CLOSED short at 2068.39 | PnL: 0.08% | $-0.04 +2025-03-10 13:14:25,728 - INFO - OPENED LONG at 2068.39 | Stop loss: 2058.032517857143 | Take profit: 2099.4391482142855 +2025-03-10 13:14:25,898 - INFO - CLOSED long at 2071.49 | PnL: 0.15% | $0.09 +2025-03-10 13:14:25,899 - INFO - OPENED SHORT at 2071.49 | Stop loss: 2081.8629821428567 | Take profit: 2040.394351785714 +2025-03-10 13:14:25,926 - INFO - CLOSED short at 2069.87 | PnL: 0.08% | $-0.04 +2025-03-10 13:14:25,977 - INFO - OPENED LONG at 2066.38 | Stop loss: 2056.032567857143 | Take profit: 2097.3989982142857 +2025-03-10 13:14:26,076 - INFO - CLOSED long at 2063.95 | PnL: -0.12% | $-0.40 +2025-03-10 13:14:26,158 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.161967857143 | Take profit: 2095.490798214286 +2025-03-10 13:14:26,361 - INFO - CLOSED long at 2065.31 | PnL: 0.04% | $-0.11 +2025-03-10 13:14:26,386 - INFO - OPENED LONG at 2066.8 | Stop loss: 2056.450467857143 | Take profit: 2097.825298214286 +2025-03-10 13:14:26,679 - INFO - CLOSED long at 2069.69 | PnL: 0.14% | $0.07 +2025-03-10 13:14:26,729 - INFO - OPENED LONG at 2070.8 | Stop loss: 2060.430467857143 | Take profit: 2101.885298214286 +2025-03-10 13:14:26,771 - INFO - CLOSED long at 2070.61 | PnL: -0.01% | $-0.20 +2025-03-10 13:14:26,771 - INFO - OPENED SHORT at 2070.61 | Stop loss: 2080.9785821428572 | Take profit: 2039.5275517857144 +2025-03-10 13:14:26,799 - INFO - CLOSED short at 2071.99 | PnL: -0.07% | $-0.30 +2025-03-10 13:14:26,800 - INFO - OPENED LONG at 2071.99 | Stop loss: 2061.614517857143 | Take profit: 2103.0931482142855 +2025-03-10 13:14:26,924 - INFO - CLOSED long at 2071.61 | PnL: -0.02% | $-0.21 +2025-03-10 13:14:26,925 - INFO - OPENED SHORT at 2071.61 | Stop loss: 2081.9835821428574 | Take profit: 2040.5125517857143 +2025-03-10 13:14:26,953 - INFO - CLOSED short at 2074.37 | PnL: -0.13% | $-0.42 +2025-03-10 13:14:26,954 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.982617857143 | Take profit: 2105.508848214286 +2025-03-10 13:14:27,475 - INFO - CLOSED long at 2068.1 | PnL: -0.30% | $-0.72 +2025-03-10 13:14:27,500 - INFO - OPENED LONG at 2069.0 | Stop loss: 2058.639467857143 | Take profit: 2100.058298214286 +2025-03-10 13:14:27,617 - INFO - CLOSED long at 2065.7 | PnL: -0.16% | $-0.46 +2025-03-10 13:14:27,618 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.044032142857 | Take profit: 2034.691201785714 +2025-03-10 13:14:27,687 - INFO - CLOSED short at 2066.09 | PnL: -0.02% | $-0.21 +2025-03-10 13:14:27,687 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.744017857143 | Take profit: 2097.1046482142856 +2025-03-10 13:14:27,803 - INFO - CLOSED long at 2065.06 | PnL: -0.05% | $-0.26 +2025-03-10 13:14:27,803 - INFO - OPENED SHORT at 2065.06 | Stop loss: 2075.4008321428573 | Take profit: 2034.0608017857141 +2025-03-10 13:14:27,845 - INFO - CLOSED short at 2064.5 | PnL: 0.03% | $-0.13 +2025-03-10 13:14:27,845 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.161967857143 | Take profit: 2095.490798214286 +2025-03-10 13:14:28,034 - INFO - STOP LOSS hit for long at 2054.161967857143 | PnL: -0.50% | $-1.05 +2025-03-10 13:14:28,057 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.9484178571429 | Take profit: 2079.971448214286 +2025-03-10 13:14:28,147 - INFO - CLOSED long at 2056.85 | PnL: 0.37% | $0.47 +2025-03-10 13:14:28,170 - INFO - OPENED LONG at 2057.11 | Stop loss: 2046.808917857143 | Take profit: 2087.989948214286 +2025-03-10 13:14:28,832 - INFO - CLOSED long at 2072.99 | PnL: 0.77% | $1.17 +2025-03-10 13:14:28,833 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.370482142857 | Take profit: 2041.871851785714 +2025-03-10 13:14:28,860 - INFO - CLOSED short at 2071.89 | PnL: 0.05% | $-0.08 +2025-03-10 13:14:28,862 - INFO - OPENED LONG at 2071.89 | Stop loss: 2061.5150178571425 | Take profit: 2102.9916482142853 +2025-03-10 13:14:29,014 - INFO - CLOSED long at 2090.49 | PnL: 0.90% | $1.41 +2025-03-10 13:14:29,043 - INFO - OPENED LONG at 2103.02 | Stop loss: 2092.489367857143 | Take profit: 2134.5885982142854 +2025-03-10 13:14:29,106 - INFO - TAKE PROFIT hit for long at 2134.5885982142854 | PnL: 1.50% | $2.51 +2025-03-10 13:14:29,130 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.105567857143 | Take profit: 2163.7799982142856 +2025-03-10 13:14:29,391 - INFO - STOP LOSS hit for long at 2121.105567857143 | PnL: -0.50% | $-1.11 +2025-03-10 13:14:29,422 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.533717857143 | Take profit: 2151.9755482142855 +2025-03-10 13:14:29,448 - INFO - CLOSED long at 2117.24 | PnL: -0.14% | $-0.43 +2025-03-10 13:14:29,449 - INFO - OPENED SHORT at 2117.24 | Stop loss: 2127.841732142857 | Take profit: 2085.458101785714 +2025-03-10 13:14:29,479 - INFO - CLOSED short at 2119.93 | PnL: -0.13% | $-0.41 +2025-03-10 13:14:29,480 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3148178571428 | Take profit: 2151.752248214286 +2025-03-10 13:14:29,660 - INFO - STOP LOSS hit for long at 2109.3148178571428 | PnL: -0.50% | $-1.08 +2025-03-10 13:14:29,687 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.0314678571426 | Take profit: 2142.282298214285 +2025-03-10 13:14:30,158 - INFO - STOP LOSS hit for long at 2100.0314678571426 | PnL: -0.50% | $-1.07 +2025-03-10 13:14:30,192 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.016817857143 | Take profit: 2131.046248214286 +2025-03-10 13:14:30,278 - INFO - CLOSED long at 2099.25 | PnL: -0.01% | $-0.20 +2025-03-10 13:14:30,278 - INFO - OPENED SHORT at 2099.25 | Stop loss: 2109.761782142857 | Take profit: 2067.7379517857144 +2025-03-10 13:14:30,300 - INFO - CLOSED short at 2098.9 | PnL: 0.02% | $-0.15 +2025-03-10 13:14:30,300 - INFO - OPENED LONG at 2098.9 | Stop loss: 2088.389967857143 | Take profit: 2130.4067982142856 +2025-03-10 13:14:30,380 - INFO - CLOSED long at 2100.74 | PnL: 0.09% | $-0.02 +2025-03-10 13:14:30,381 - INFO - OPENED SHORT at 2100.74 | Stop loss: 2111.259232142857 | Take profit: 2069.205601785714 +2025-03-10 13:14:30,415 - INFO - CLOSED short at 2103.86 | PnL: -0.15% | $-0.44 +2025-03-10 13:14:30,416 - INFO - OPENED LONG at 2103.86 | Stop loss: 2093.3251678571432 | Take profit: 2135.4411982142856 +2025-03-10 13:14:30,664 - INFO - STOP LOSS hit for long at 2093.3251678571432 | PnL: -0.50% | $-1.05 +2025-03-10 13:14:30,687 - INFO - OPENED LONG at 2091.1 | Stop loss: 2080.628967857143 | Take profit: 2122.4897982142857 +2025-03-10 13:14:30,903 - INFO - CLOSED long at 2081.49 | PnL: -0.46% | $-0.96 +2025-03-10 13:14:30,939 - INFO - OPENED LONG at 2080.38 | Stop loss: 2069.962567857143 | Take profit: 2111.6089982142857 +2025-03-10 13:14:31,420 - INFO - CLOSED long at 2089.79 | PnL: 0.45% | $0.60 +2025-03-10 13:14:31,482 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.520782142857 | Take profit: 2059.6609517857146 +2025-03-10 13:14:31,511 - INFO - CLOSED short at 2091.05 | PnL: 0.00% | $-0.17 +2025-03-10 13:14:31,511 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.579217857143 | Take profit: 2122.4390482142862 +2025-03-10 13:14:31,571 - INFO - CLOSED long at 2097.8 | PnL: 0.32% | $0.38 +2025-03-10 13:14:31,572 - INFO - OPENED SHORT at 2097.8 | Stop loss: 2108.3045321428576 | Take profit: 2066.3097017857144 +2025-03-10 13:14:31,611 - INFO - CLOSED short at 2099.99 | PnL: -0.10% | $-0.35 +2025-03-10 13:14:31,612 - INFO - OPENED LONG at 2099.99 | Stop loss: 2089.4745178571425 | Take profit: 2131.513148214285 +2025-03-10 13:14:31,775 - INFO - CLOSED long at 2100.89 | PnL: 0.04% | $-0.10 +2025-03-10 13:14:31,775 - INFO - OPENED SHORT at 2100.89 | Stop loss: 2111.409982142857 | Take profit: 2069.353351785714 +2025-03-10 13:14:31,817 - INFO - CLOSED short at 2106.15 | PnL: -0.25% | $-0.60 +2025-03-10 13:14:31,842 - INFO - OPENED LONG at 2103.48 | Stop loss: 2092.947067857143 | Take profit: 2135.0554982142858 +2025-03-10 13:14:31,896 - INFO - CLOSED long at 2103.07 | PnL: -0.02% | $-0.20 +2025-03-10 13:14:31,925 - INFO - OPENED LONG at 2101.5 | Stop loss: 2090.976967857143 | Take profit: 2133.0457982142857 +2025-03-10 13:14:32,053 - INFO - CLOSED long at 2104.4 | PnL: 0.14% | $0.06 +2025-03-10 13:14:32,053 - INFO - OPENED SHORT at 2104.4 | Stop loss: 2114.9375321428574 | Take profit: 2072.8107017857146 +2025-03-10 13:14:32,091 - INFO - Trade Analysis: Win Rate=6.7% in uptrends, 0.0% in downtrends | Avg Win=$0.42, Avg Loss=$-0.35 +2025-03-10 13:14:32,091 - INFO - Episode 14: Reward=106.44, Balance=$85.42, Win Rate=23.3%, Trades=86, Episode PnL=$-12.22, Total PnL=$-317.53, Max Drawdown=14.9%, Pred Accuracy=99.9% +2025-03-10 13:14:32,091 - ERROR - Error in episode 14: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:14:32,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:14:32,114 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:14:32,381 - INFO - OPENED LONG at 2046.58 | Stop loss: 2036.3315678571428 | Take profit: 2077.3019982142855 +2025-03-10 13:14:32,399 - INFO - CLOSED long at 2047.4 | PnL: 0.04% | $-0.12 +2025-03-10 13:14:32,424 - INFO - OPENED LONG at 2047.2 | Stop loss: 2036.9484678571428 | Take profit: 2077.931298214286 +2025-03-10 13:14:32,777 - INFO - CLOSED long at 2052.3 | PnL: 0.25% | $0.30 +2025-03-10 13:14:32,802 - INFO - OPENED LONG at 2055.69 | Stop loss: 2045.396017857143 | Take profit: 2086.5486482142855 +2025-03-10 13:14:32,822 - INFO - CLOSED long at 2057.01 | PnL: 0.06% | $-0.07 +2025-03-10 13:14:32,822 - INFO - OPENED SHORT at 2057.01 | Stop loss: 2067.3105821428576 | Take profit: 2026.1315517857145 +2025-03-10 13:14:32,850 - INFO - CLOSED short at 2056.89 | PnL: 0.01% | $-0.19 +2025-03-10 13:14:32,850 - INFO - OPENED LONG at 2056.89 | Stop loss: 2046.5900178571426 | Take profit: 2087.766648214286 +2025-03-10 13:14:32,960 - INFO - CLOSED long at 2063.29 | PnL: 0.31% | $0.42 +2025-03-10 13:14:32,984 - INFO - OPENED LONG at 2064.61 | Stop loss: 2054.2714178571428 | Take profit: 2095.602448214286 +2025-03-10 13:14:33,081 - INFO - CLOSED long at 2064.69 | PnL: 0.00% | $-0.19 +2025-03-10 13:14:33,124 - INFO - OPENED LONG at 2063.01 | Stop loss: 2052.679417857143 | Take profit: 2093.978448214286 +2025-03-10 13:14:33,295 - INFO - CLOSED long at 2059.49 | PnL: -0.17% | $-0.54 +2025-03-10 13:14:33,295 - INFO - OPENED SHORT at 2059.49 | Stop loss: 2069.8029821428568 | Take profit: 2028.574351785714 +2025-03-10 13:14:33,316 - INFO - CLOSED short at 2057.8 | PnL: 0.08% | $-0.04 +2025-03-10 13:14:33,316 - INFO - OPENED LONG at 2057.8 | Stop loss: 2047.495467857143 | Take profit: 2088.6902982142856 +2025-03-10 13:14:33,590 - INFO - CLOSED long at 2070.58 | PnL: 0.62% | $1.03 +2025-03-10 13:14:33,590 - INFO - OPENED SHORT at 2070.58 | Stop loss: 2080.948432142857 | Take profit: 2039.4980017857142 +2025-03-10 13:14:33,621 - INFO - CLOSED short at 2068.11 | PnL: 0.12% | $0.04 +2025-03-10 13:14:33,622 - INFO - OPENED LONG at 2068.11 | Stop loss: 2057.753917857143 | Take profit: 2099.154948214286 +2025-03-10 13:14:33,829 - INFO - CLOSED long at 2068.99 | PnL: 0.04% | $-0.11 +2025-03-10 13:14:33,857 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.544967857143 | Take profit: 2098.941798214286 +2025-03-10 13:14:33,929 - INFO - CLOSED long at 2071.44 | PnL: 0.17% | $0.14 +2025-03-10 13:14:33,955 - INFO - OPENED LONG at 2073.73 | Stop loss: 2063.3458178571427 | Take profit: 2104.859248214286 +2025-03-10 13:14:34,455 - INFO - CLOSED long at 2067.6 | PnL: -0.30% | $-0.79 +2025-03-10 13:14:34,476 - INFO - OPENED LONG at 2067.51 | Stop loss: 2057.156917857143 | Take profit: 2098.5459482142855 +2025-03-10 13:14:34,712 - INFO - CLOSED long at 2068.76 | PnL: 0.06% | $-0.08 +2025-03-10 13:14:34,788 - INFO - OPENED LONG at 2068.51 | Stop loss: 2058.151917857143 | Take profit: 2099.560948214286 +2025-03-10 13:14:34,962 - INFO - CLOSED long at 2073.11 | PnL: 0.22% | $0.24 +2025-03-10 13:14:34,985 - INFO - OPENED LONG at 2072.7 | Stop loss: 2062.3209678571425 | Take profit: 2103.8137982142857 +2025-03-10 13:14:35,499 - INFO - CLOSED long at 2068.8 | PnL: -0.19% | $-0.57 +2025-03-10 13:14:35,539 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.977767857143 | Take profit: 2100.4033982142855 +2025-03-10 13:14:35,694 - INFO - CLOSED long at 2070.7 | PnL: 0.07% | $-0.07 +2025-03-10 13:14:35,694 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.069032142857 | Take profit: 2039.6162017857139 +2025-03-10 13:14:35,720 - INFO - CLOSED short at 2070.4 | PnL: 0.01% | $-0.17 +2025-03-10 13:14:35,720 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.032467857143 | Take profit: 2101.479298214286 +2025-03-10 13:14:35,761 - INFO - CLOSED long at 2068.5 | PnL: -0.09% | $-0.38 +2025-03-10 13:14:35,762 - INFO - OPENED SHORT at 2068.5 | Stop loss: 2078.858032142857 | Take profit: 2037.4492017857142 +2025-03-10 13:14:35,788 - INFO - CLOSED short at 2068.69 | PnL: -0.01% | $-0.21 +2025-03-10 13:14:35,788 - INFO - OPENED LONG at 2068.69 | Stop loss: 2058.331017857143 | Take profit: 2099.7436482142857 +2025-03-10 13:14:35,849 - INFO - CLOSED long at 2067.11 | PnL: -0.08% | $-0.35 +2025-03-10 13:14:35,849 - INFO - OPENED SHORT at 2067.11 | Stop loss: 2077.4610821428573 | Take profit: 2036.0800517857144 +2025-03-10 13:14:35,886 - INFO - CLOSED short at 2067.86 | PnL: -0.04% | $-0.27 +2025-03-10 13:14:35,886 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.505167857143 | Take profit: 2098.9011982142856 +2025-03-10 13:14:36,944 - INFO - CLOSED long at 2064.7 | PnL: -0.15% | $-0.49 +2025-03-10 13:14:36,944 - INFO - OPENED SHORT at 2064.7 | Stop loss: 2075.039032142857 | Take profit: 2033.706201785714 +2025-03-10 13:14:36,969 - INFO - CLOSED short at 2062.61 | PnL: 0.10% | $0.00 +2025-03-10 13:14:36,970 - INFO - OPENED LONG at 2062.61 | Stop loss: 2052.281417857143 | Take profit: 2093.572448214286 +2025-03-10 13:14:36,992 - INFO - CLOSED long at 2060.91 | PnL: -0.08% | $-0.35 +2025-03-10 13:14:37,086 - INFO - OPENED LONG at 2061.13 | Stop loss: 2050.808817857143 | Take profit: 2092.0702482142856 +2025-03-10 13:14:37,158 - INFO - CLOSED long at 2064.1 | PnL: 0.14% | $0.09 +2025-03-10 13:14:37,197 - INFO - OPENED LONG at 2065.36 | Stop loss: 2055.017667857143 | Take profit: 2096.363698214286 +2025-03-10 13:14:37,329 - INFO - CLOSED long at 2063.0 | PnL: -0.11% | $-0.41 +2025-03-10 13:14:37,410 - INFO - OPENED LONG at 2061.7 | Stop loss: 2051.3759678571428 | Take profit: 2092.6487982142853 +2025-03-10 13:14:38,044 - INFO - CLOSED long at 2066.36 | PnL: 0.23% | $0.24 +2025-03-10 13:14:38,071 - INFO - OPENED LONG at 2066.01 | Stop loss: 2055.664417857143 | Take profit: 2097.023448214286 +2025-03-10 13:14:38,159 - INFO - CLOSED long at 2066.34 | PnL: 0.02% | $-0.16 +2025-03-10 13:14:38,159 - INFO - OPENED SHORT at 2066.34 | Stop loss: 2076.6872321428573 | Take profit: 2035.3216017857144 +2025-03-10 13:14:38,179 - INFO - CLOSED short at 2066.79 | PnL: -0.02% | $-0.23 +2025-03-10 13:14:38,180 - INFO - OPENED LONG at 2066.79 | Stop loss: 2056.440517857143 | Take profit: 2097.8151482142853 +2025-03-10 13:14:38,412 - INFO - CLOSED long at 2075.01 | PnL: 0.40% | $0.57 +2025-03-10 13:14:38,413 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.4005821428573 | Take profit: 2043.8615517857145 +2025-03-10 13:14:38,447 - INFO - CLOSED short at 2071.04 | PnL: 0.19% | $0.18 +2025-03-10 13:14:38,449 - INFO - OPENED LONG at 2071.04 | Stop loss: 2060.669267857143 | Take profit: 2102.1288982142855 +2025-03-10 13:14:38,466 - INFO - CLOSED long at 2070.01 | PnL: -0.05% | $-0.29 +2025-03-10 13:14:38,466 - INFO - OPENED SHORT at 2070.01 | Stop loss: 2080.375582142857 | Take profit: 2038.9365517857145 +2025-03-10 13:14:38,490 - INFO - CLOSED short at 2071.6 | PnL: -0.08% | $-0.34 +2025-03-10 13:14:38,490 - INFO - OPENED LONG at 2071.6 | Stop loss: 2061.226467857143 | Take profit: 2102.6972982142856 +2025-03-10 13:14:38,732 - INFO - CLOSED long at 2071.49 | PnL: -0.01% | $-0.20 +2025-03-10 13:14:38,734 - INFO - OPENED SHORT at 2071.49 | Stop loss: 2081.8629821428567 | Take profit: 2040.394351785714 +2025-03-10 13:14:38,792 - INFO - CLOSED short at 2067.33 | PnL: 0.20% | $0.19 +2025-03-10 13:14:38,792 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.977817857143 | Take profit: 2098.3632482142857 +2025-03-10 13:14:38,908 - INFO - CLOSED long at 2064.5 | PnL: -0.14% | $-0.46 +2025-03-10 13:14:38,950 - INFO - OPENED LONG at 2064.4 | Stop loss: 2054.062467857143 | Take profit: 2095.3892982142856 +2025-03-10 13:14:39,058 - INFO - CLOSED long at 2065.29 | PnL: 0.04% | $-0.11 +2025-03-10 13:14:39,058 - INFO - OPENED SHORT at 2065.29 | Stop loss: 2075.631982142857 | Take profit: 2034.2873517857145 +2025-03-10 13:14:39,092 - INFO - CLOSED short at 2065.31 | PnL: -0.00% | $-0.19 +2025-03-10 13:14:39,093 - INFO - OPENED LONG at 2065.31 | Stop loss: 2054.9679178571428 | Take profit: 2096.3129482142854 +2025-03-10 13:14:39,257 - INFO - CLOSED long at 2071.35 | PnL: 0.29% | $0.37 +2025-03-10 13:14:39,281 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.529967857143 | Take profit: 2101.986798214286 +2025-03-10 13:14:39,679 - INFO - CLOSED long at 2073.99 | PnL: 0.15% | $0.09 +2025-03-10 13:14:39,701 - INFO - OPENED LONG at 2075.32 | Stop loss: 2064.927867857143 | Take profit: 2106.473098214286 +2025-03-10 13:14:39,723 - INFO - CLOSED long at 2075.29 | PnL: -0.00% | $-0.19 +2025-03-10 13:14:39,741 - INFO - OPENED LONG at 2076.9 | Stop loss: 2066.499967857143 | Take profit: 2108.0767982142856 +2025-03-10 13:14:39,846 - INFO - CLOSED long at 2069.97 | PnL: -0.33% | $-0.83 +2025-03-10 13:14:39,848 - INFO - OPENED SHORT at 2069.97 | Stop loss: 2080.335382142857 | Take profit: 2038.897151785714 +2025-03-10 13:14:39,880 - INFO - CLOSED short at 2067.7 | PnL: 0.11% | $0.02 +2025-03-10 13:14:39,922 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.649467857143 | Take profit: 2098.0282982142858 +2025-03-10 13:14:39,986 - INFO - CLOSED long at 2066.4 | PnL: -0.03% | $-0.24 +2025-03-10 13:14:40,008 - INFO - OPENED LONG at 2066.89 | Stop loss: 2056.5400178571426 | Take profit: 2097.9166482142855 +2025-03-10 13:14:40,086 - INFO - CLOSED long at 2069.0 | PnL: 0.10% | $0.00 +2025-03-10 13:14:40,086 - INFO - OPENED SHORT at 2069.0 | Stop loss: 2079.360532142857 | Take profit: 2037.9417017857143 +2025-03-10 13:14:40,116 - INFO - CLOSED short at 2070.19 | PnL: -0.06% | $-0.30 +2025-03-10 13:14:40,116 - INFO - OPENED LONG at 2070.19 | Stop loss: 2059.8235178571426 | Take profit: 2101.2661482142857 +2025-03-10 13:14:40,135 - INFO - CLOSED long at 2070.1 | PnL: -0.00% | $-0.20 +2025-03-10 13:14:40,135 - INFO - OPENED SHORT at 2070.1 | Stop loss: 2080.466032142857 | Take profit: 2039.0252017857142 +2025-03-10 13:14:40,158 - INFO - CLOSED short at 2067.19 | PnL: 0.14% | $0.08 +2025-03-10 13:14:40,158 - INFO - OPENED LONG at 2067.19 | Stop loss: 2056.838517857143 | Take profit: 2098.2211482142857 +2025-03-10 13:14:40,208 - INFO - CLOSED long at 2065.7 | PnL: -0.07% | $-0.32 +2025-03-10 13:14:40,241 - INFO - OPENED LONG at 2065.8 | Stop loss: 2055.455467857143 | Take profit: 2096.810298214286 +2025-03-10 13:14:40,336 - INFO - CLOSED long at 2063.39 | PnL: -0.12% | $-0.41 +2025-03-10 13:14:40,365 - INFO - OPENED LONG at 2062.34 | Stop loss: 2052.012767857143 | Take profit: 2093.2983982142855 +2025-03-10 13:14:40,507 - INFO - CLOSED long at 2063.01 | PnL: 0.03% | $-0.13 +2025-03-10 13:14:40,508 - INFO - OPENED SHORT at 2063.01 | Stop loss: 2073.3405821428573 | Take profit: 2032.0415517857145 +2025-03-10 13:14:40,528 - INFO - CLOSED short at 2060.7 | PnL: 0.11% | $0.02 +2025-03-10 13:14:40,528 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3809678571424 | Take profit: 2091.633798214286 +2025-03-10 13:14:40,690 - INFO - STOP LOSS hit for long at 2050.3809678571424 | PnL: -0.50% | $-1.12 +2025-03-10 13:14:40,723 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.2369678571429 | Take profit: 2080.2657982142855 +2025-03-10 13:14:40,793 - INFO - CLOSED long at 2056.85 | PnL: 0.36% | $0.48 +2025-03-10 13:14:40,803 - INFO - OPENED SHORT at 2056.85 | Stop loss: 2067.149782142857 | Take profit: 2025.9739517857142 +2025-03-10 13:14:40,824 - INFO - CLOSED short at 2057.11 | PnL: -0.01% | $-0.21 +2025-03-10 13:14:40,824 - INFO - OPENED LONG at 2057.11 | Stop loss: 2046.808917857143 | Take profit: 2087.989948214286 +2025-03-10 13:14:40,883 - INFO - CLOSED long at 2063.9 | PnL: 0.33% | $0.43 +2025-03-10 13:14:40,883 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.235032142857 | Take profit: 2032.9182017857145 +2025-03-10 13:14:40,899 - INFO - CLOSED short at 2065.1 | PnL: -0.06% | $-0.29 +2025-03-10 13:14:40,899 - INFO - OPENED LONG at 2065.1 | Stop loss: 2054.758967857143 | Take profit: 2096.099798214286 +2025-03-10 13:14:41,096 - INFO - CLOSED long at 2061.21 | PnL: -0.19% | $-0.53 +2025-03-10 13:14:41,098 - INFO - OPENED SHORT at 2061.21 | Stop loss: 2071.531582142857 | Take profit: 2030.2685517857142 +2025-03-10 13:14:41,164 - INFO - CLOSED short at 2060.7 | PnL: 0.02% | $-0.14 +2025-03-10 13:14:41,164 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3809678571424 | Take profit: 2091.633798214286 +2025-03-10 13:14:41,214 - INFO - CLOSED long at 2062.54 | PnL: 0.09% | $-0.02 +2025-03-10 13:14:41,214 - INFO - OPENED SHORT at 2062.54 | Stop loss: 2072.868232142857 | Take profit: 2031.5786017857142 +2025-03-10 13:14:41,239 - INFO - CLOSED short at 2065.72 | PnL: -0.15% | $-0.47 +2025-03-10 13:14:41,239 - INFO - OPENED LONG at 2065.72 | Stop loss: 2055.3758678571426 | Take profit: 2096.729098214286 +2025-03-10 13:14:41,340 - INFO - CLOSED long at 2070.41 | PnL: 0.23% | $0.23 +2025-03-10 13:14:41,340 - INFO - OPENED SHORT at 2070.41 | Stop loss: 2080.777582142857 | Take profit: 2039.3305517857143 +2025-03-10 13:14:41,361 - INFO - CLOSED short at 2073.49 | PnL: -0.15% | $-0.46 +2025-03-10 13:14:41,363 - INFO - OPENED LONG at 2073.49 | Stop loss: 2063.1070178571426 | Take profit: 2104.6156482142856 +2025-03-10 13:14:41,457 - INFO - CLOSED long at 2071.89 | PnL: -0.08% | $-0.32 +2025-03-10 13:14:41,504 - INFO - OPENED LONG at 2071.8 | Stop loss: 2061.4254678571433 | Take profit: 2102.9002982142856 +2025-03-10 13:14:41,646 - INFO - TAKE PROFIT hit for long at 2102.9002982142856 | PnL: 1.50% | $2.55 +2025-03-10 13:14:41,690 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.826767857143 | Take profit: 2171.6563982142857 +2025-03-10 13:14:41,741 - INFO - CLOSED long at 2137.59 | PnL: -0.09% | $-0.36 +2025-03-10 13:14:41,749 - INFO - OPENED SHORT at 2137.59 | Stop loss: 2148.2934821428576 | Take profit: 2105.5028517857145 +2025-03-10 13:14:41,769 - INFO - CLOSED short at 2141.41 | PnL: -0.18% | $-0.52 +2025-03-10 13:14:41,769 - INFO - OPENED LONG at 2141.41 | Stop loss: 2130.6874178571425 | Take profit: 2173.5544482142855 +2025-03-10 13:14:41,882 - INFO - CLOSED long at 2134.78 | PnL: -0.31% | $-0.76 +2025-03-10 13:14:41,927 - INFO - OPENED SHORT at 2126.99 | Stop loss: 2137.640482142857 | Take profit: 2095.061851785714 +2025-03-10 13:14:41,963 - INFO - CLOSED short at 2127.3 | PnL: -0.01% | $-0.21 +2025-03-10 13:14:41,964 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.647967857143 | Take profit: 2159.2327982142856 +2025-03-10 13:14:42,098 - INFO - CLOSED long at 2118.52 | PnL: -0.41% | $-0.94 +2025-03-10 13:14:42,098 - INFO - OPENED SHORT at 2118.52 | Stop loss: 2129.128132142857 | Take profit: 2086.7189017857145 +2025-03-10 13:14:42,141 - INFO - CLOSED short at 2119.07 | PnL: -0.03% | $-0.23 +2025-03-10 13:14:42,141 - INFO - OPENED LONG at 2119.07 | Stop loss: 2108.459117857143 | Take profit: 2150.8793482142855 +2025-03-10 13:14:42,180 - INFO - STOP LOSS hit for long at 2108.459117857143 | PnL: -0.50% | $-1.09 +2025-03-10 13:14:42,220 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.0314678571426 | Take profit: 2142.282298214285 +2025-03-10 13:14:42,251 - INFO - CLOSED long at 2109.05 | PnL: -0.07% | $-0.31 +2025-03-10 13:14:42,251 - INFO - OPENED SHORT at 2109.05 | Stop loss: 2119.6107821428577 | Take profit: 2077.3909517857146 +2025-03-10 13:14:42,288 - INFO - CLOSED short at 2112.09 | PnL: -0.14% | $-0.43 +2025-03-10 13:14:42,288 - INFO - OPENED LONG at 2112.09 | Stop loss: 2101.514017857143 | Take profit: 2143.794648214286 +2025-03-10 13:14:42,463 - INFO - CLOSED long at 2114.8 | PnL: 0.13% | $0.05 +2025-03-10 13:14:42,488 - INFO - OPENED LONG at 2110.9 | Stop loss: 2100.329967857143 | Take profit: 2142.586798214286 +2025-03-10 13:14:42,649 - INFO - STOP LOSS hit for long at 2100.329967857143 | PnL: -0.50% | $-1.07 +2025-03-10 13:14:42,686 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.016817857143 | Take profit: 2131.046248214286 +2025-03-10 13:14:42,756 - INFO - CLOSED long at 2102.19 | PnL: 0.13% | $0.05 +2025-03-10 13:14:42,756 - INFO - OPENED SHORT at 2102.19 | Stop loss: 2112.716482142857 | Take profit: 2070.6338517857143 +2025-03-10 13:14:42,809 - INFO - CLOSED short at 2099.25 | PnL: 0.14% | $0.07 +2025-03-10 13:14:42,811 - INFO - OPENED LONG at 2099.25 | Stop loss: 2088.738217857143 | Take profit: 2130.7620482142856 +2025-03-10 13:14:42,885 - INFO - CLOSED long at 2106.39 | PnL: 0.34% | $0.42 +2025-03-10 13:14:42,909 - INFO - OPENED LONG at 2100.74 | Stop loss: 2090.2207678571426 | Take profit: 2132.2743982142856 +2025-03-10 13:14:43,191 - INFO - CLOSED long at 2091.1 | PnL: -0.46% | $-0.99 +2025-03-10 13:14:43,214 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.2308678571426 | Take profit: 2126.1640982142853 +2025-03-10 13:14:43,234 - INFO - CLOSED long at 2094.08 | PnL: -0.03% | $-0.23 +2025-03-10 13:14:43,234 - INFO - OPENED SHORT at 2094.08 | Stop loss: 2104.565932142857 | Take profit: 2062.6455017857143 +2025-03-10 13:14:43,253 - INFO - CLOSED short at 2088.35 | PnL: 0.27% | $0.30 +2025-03-10 13:14:43,253 - INFO - OPENED LONG at 2088.35 | Stop loss: 2077.8927178571425 | Take profit: 2119.6985482142854 +2025-03-10 13:14:43,333 - INFO - CLOSED long at 2085.3 | PnL: -0.15% | $-0.43 +2025-03-10 13:14:43,358 - INFO - OPENED LONG at 2082.44 | Stop loss: 2072.012267857143 | Take profit: 2113.699898214286 +2025-03-10 13:14:43,497 - INFO - CLOSED long at 2086.57 | PnL: 0.20% | $0.17 +2025-03-10 13:14:43,503 - INFO - OPENED SHORT at 2086.57 | Stop loss: 2097.0183821428573 | Take profit: 2055.2481517857145 +2025-03-10 13:14:43,546 - INFO - CLOSED short at 2084.72 | PnL: 0.09% | $-0.02 +2025-03-10 13:14:43,546 - INFO - OPENED LONG at 2084.72 | Stop loss: 2074.2808678571428 | Take profit: 2116.0140982142852 +2025-03-10 13:14:44,249 - INFO - CLOSED long at 2105.83 | PnL: 1.01% | $1.59 +2025-03-10 13:14:44,249 - INFO - OPENED SHORT at 2105.83 | Stop loss: 2116.3746821428567 | Take profit: 2074.2192517857143 +2025-03-10 13:14:44,271 - INFO - CLOSED short at 2103.64 | PnL: 0.10% | $0.01 +2025-03-10 13:14:44,272 - INFO - OPENED LONG at 2103.64 | Stop loss: 2093.1062678571425 | Take profit: 2135.2178982142855 +2025-03-10 13:14:44,355 - INFO - Trade Analysis: Win Rate=31.2% in uptrends, 0.0% in downtrends | Avg Win=$0.35, Avg Loss=$-0.36 +2025-03-10 13:14:44,356 - INFO - Episode 15: Reward=124.50, Balance=$89.22, Win Rate=34.1%, Trades=88, Episode PnL=$-9.13, Total PnL=$-328.31, Max Drawdown=13.1%, Pred Accuracy=99.7% +2025-03-10 13:14:44,356 - ERROR - Error in episode 15: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:14:44,357 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:14:44,379 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:14:44,559 - INFO - OPENED LONG at 2046.58 | Stop loss: 2036.3315678571428 | Take profit: 2077.3019982142855 +2025-03-10 13:14:44,575 - INFO - CLOSED long at 2047.4 | PnL: 0.04% | $-0.12 +2025-03-10 13:14:44,575 - INFO - OPENED SHORT at 2047.4 | Stop loss: 2057.652532142857 | Take profit: 2016.6657017857144 +2025-03-10 13:14:44,602 - INFO - CLOSED short at 2047.2 | PnL: 0.01% | $-0.18 +2025-03-10 13:14:44,602 - INFO - OPENED LONG at 2047.2 | Stop loss: 2036.9484678571428 | Take profit: 2077.931298214286 +2025-03-10 13:14:44,816 - INFO - CLOSED long at 2051.89 | PnL: 0.23% | $0.26 +2025-03-10 13:14:44,842 - INFO - OPENED LONG at 2052.3 | Stop loss: 2042.022967857143 | Take profit: 2083.107798214286 +2025-03-10 13:14:45,533 - INFO - CLOSED long at 2071.63 | PnL: 0.94% | $1.67 +2025-03-10 13:14:45,555 - INFO - OPENED LONG at 2070.99 | Stop loss: 2060.6195178571425 | Take profit: 2102.0781482142856 +2025-03-10 13:14:45,835 - INFO - CLOSED long at 2072.91 | PnL: 0.09% | $-0.01 +2025-03-10 13:14:45,838 - INFO - OPENED SHORT at 2072.91 | Stop loss: 2083.290082142857 | Take profit: 2041.793051785714 +2025-03-10 13:14:45,867 - INFO - CLOSED short at 2072.33 | PnL: 0.03% | $-0.15 +2025-03-10 13:14:45,868 - INFO - OPENED LONG at 2072.33 | Stop loss: 2061.9528178571427 | Take profit: 2103.4382482142855 +2025-03-10 13:14:45,930 - INFO - CLOSED long at 2071.41 | PnL: -0.04% | $-0.29 +2025-03-10 13:14:45,930 - INFO - OPENED SHORT at 2071.41 | Stop loss: 2081.782582142857 | Take profit: 2040.3155517857142 +2025-03-10 13:14:45,962 - INFO - CLOSED short at 2069.37 | PnL: 0.10% | $-0.00 +2025-03-10 13:14:45,962 - INFO - OPENED LONG at 2069.37 | Stop loss: 2059.0076178571426 | Take profit: 2100.4338482142857 +2025-03-10 13:14:46,078 - INFO - CLOSED long at 2070.28 | PnL: 0.04% | $-0.11 +2025-03-10 13:14:46,078 - INFO - OPENED SHORT at 2070.28 | Stop loss: 2080.646932142857 | Take profit: 2039.2025017857145 +2025-03-10 13:14:46,108 - INFO - CLOSED short at 2068.02 | PnL: 0.11% | $0.02 +2025-03-10 13:14:46,109 - INFO - OPENED LONG at 2068.02 | Stop loss: 2057.6643678571427 | Take profit: 2099.063598214286 +2025-03-10 13:14:46,171 - INFO - CLOSED long at 2070.36 | PnL: 0.11% | $0.03 +2025-03-10 13:14:46,208 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.539967857143 | Take profit: 2099.956798214286 +2025-03-10 13:14:46,281 - INFO - CLOSED long at 2069.19 | PnL: 0.01% | $-0.17 +2025-03-10 13:14:46,281 - INFO - OPENED SHORT at 2069.19 | Stop loss: 2079.551482142857 | Take profit: 2038.1288517857145 +2025-03-10 13:14:46,317 - INFO - CLOSED short at 2068.8 | PnL: 0.02% | $-0.16 +2025-03-10 13:14:46,317 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.440467857143 | Take profit: 2099.855298214286 +2025-03-10 13:14:46,558 - INFO - CLOSED long at 2068.76 | PnL: -0.00% | $-0.20 +2025-03-10 13:14:46,559 - INFO - OPENED SHORT at 2068.76 | Stop loss: 2079.1193321428573 | Take profit: 2037.7053017857147 +2025-03-10 13:14:46,605 - INFO - CLOSED short at 2068.51 | PnL: 0.01% | $-0.18 +2025-03-10 13:14:46,605 - INFO - OPENED LONG at 2068.51 | Stop loss: 2058.151917857143 | Take profit: 2099.560948214286 +2025-03-10 13:14:46,626 - INFO - CLOSED long at 2068.59 | PnL: 0.00% | $-0.19 +2025-03-10 13:14:46,627 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.9484821428573 | Take profit: 2037.5378517857143 +2025-03-10 13:14:46,650 - INFO - CLOSED short at 2069.7 | PnL: -0.05% | $-0.31 +2025-03-10 13:14:46,651 - INFO - OPENED LONG at 2069.7 | Stop loss: 2059.335967857143 | Take profit: 2100.7687982142857 +2025-03-10 13:14:46,671 - INFO - CLOSED long at 2070.4 | PnL: 0.03% | $-0.13 +2025-03-10 13:14:46,700 - INFO - OPENED LONG at 2069.96 | Stop loss: 2059.594667857143 | Take profit: 2101.0326982142856 +2025-03-10 13:14:46,768 - INFO - CLOSED long at 2071.36 | PnL: 0.07% | $-0.06 +2025-03-10 13:14:46,801 - INFO - OPENED LONG at 2072.75 | Stop loss: 2062.3707178571426 | Take profit: 2103.864548214286 +2025-03-10 13:14:46,893 - INFO - CLOSED long at 2074.29 | PnL: 0.07% | $-0.05 +2025-03-10 13:14:46,893 - INFO - OPENED SHORT at 2074.29 | Stop loss: 2084.676982142857 | Take profit: 2043.1523517857142 +2025-03-10 13:14:46,919 - INFO - CLOSED short at 2073.9 | PnL: 0.02% | $-0.16 +2025-03-10 13:14:46,919 - INFO - OPENED LONG at 2073.9 | Stop loss: 2063.514967857143 | Take profit: 2105.0317982142856 +2025-03-10 13:14:47,022 - INFO - CLOSED long at 2069.35 | PnL: -0.22% | $-0.63 +2025-03-10 13:14:47,059 - INFO - OPENED LONG at 2068.32 | Stop loss: 2057.962867857143 | Take profit: 2099.368098214286 +2025-03-10 13:14:47,102 - INFO - CLOSED long at 2067.0 | PnL: -0.06% | $-0.32 +2025-03-10 13:14:47,180 - INFO - OPENED LONG at 2067.46 | Stop loss: 2057.107167857143 | Take profit: 2098.4951982142857 +2025-03-10 13:14:47,305 - INFO - CLOSED long at 2068.58 | PnL: 0.05% | $-0.09 +2025-03-10 13:14:47,305 - INFO - OPENED SHORT at 2068.58 | Stop loss: 2078.9384321428574 | Take profit: 2037.5280017857142 +2025-03-10 13:14:47,327 - INFO - CLOSED short at 2068.8 | PnL: -0.01% | $-0.22 +2025-03-10 13:14:47,327 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.440467857143 | Take profit: 2099.855298214286 +2025-03-10 13:14:47,385 - INFO - CLOSED long at 2067.59 | PnL: -0.06% | $-0.31 +2025-03-10 13:14:47,422 - INFO - OPENED LONG at 2069.2 | Stop loss: 2058.8384678571424 | Take profit: 2100.2612982142855 +2025-03-10 13:14:47,563 - INFO - CLOSED long at 2070.4 | PnL: 0.06% | $-0.08 +2025-03-10 13:14:47,563 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7675321428574 | Take profit: 2039.3207017857144 +2025-03-10 13:14:47,595 - INFO - CLOSED short at 2070.73 | PnL: -0.02% | $-0.23 +2025-03-10 13:14:47,642 - INFO - OPENED LONG at 2068.69 | Stop loss: 2058.331017857143 | Take profit: 2099.7436482142857 +2025-03-10 13:14:47,661 - INFO - CLOSED long at 2067.84 | PnL: -0.04% | $-0.27 +2025-03-10 13:14:47,683 - INFO - OPENED LONG at 2067.11 | Stop loss: 2056.758917857143 | Take profit: 2098.139948214286 +2025-03-10 13:14:47,730 - INFO - CLOSED long at 2066.4 | PnL: -0.03% | $-0.26 +2025-03-10 13:14:47,779 - INFO - OPENED LONG at 2065.28 | Stop loss: 2054.9380678571433 | Take profit: 2096.282498214286 +2025-03-10 13:14:47,815 - INFO - CLOSED long at 2066.39 | PnL: 0.05% | $-0.09 +2025-03-10 13:14:47,862 - INFO - OPENED LONG at 2064.47 | Stop loss: 2054.132117857143 | Take profit: 2095.4603482142857 +2025-03-10 13:14:47,899 - INFO - CLOSED long at 2070.04 | PnL: 0.27% | $0.33 +2025-03-10 13:14:47,945 - INFO - OPENED LONG at 2067.8 | Stop loss: 2057.445467857143 | Take profit: 2098.8402982142857 +2025-03-10 13:14:48,152 - INFO - CLOSED long at 2062.89 | PnL: -0.24% | $-0.65 +2025-03-10 13:14:48,152 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.219982142857 | Take profit: 2031.9233517857142 +2025-03-10 13:14:48,176 - INFO - CLOSED short at 2062.65 | PnL: 0.01% | $-0.17 +2025-03-10 13:14:48,176 - INFO - OPENED LONG at 2062.65 | Stop loss: 2052.321217857143 | Take profit: 2093.6130482142858 +2025-03-10 13:14:48,207 - INFO - CLOSED long at 2061.78 | PnL: -0.04% | $-0.27 +2025-03-10 13:14:48,208 - INFO - OPENED SHORT at 2061.78 | Stop loss: 2072.104432142857 | Take profit: 2030.8300017857146 +2025-03-10 13:14:48,254 - INFO - CLOSED short at 2059.59 | PnL: 0.11% | $0.01 +2025-03-10 13:14:48,256 - INFO - OPENED LONG at 2059.59 | Stop loss: 2049.276517857143 | Take profit: 2090.507148214286 +2025-03-10 13:14:48,370 - INFO - CLOSED long at 2064.96 | PnL: 0.26% | $0.31 +2025-03-10 13:14:48,371 - INFO - OPENED SHORT at 2064.96 | Stop loss: 2075.3003321428573 | Take profit: 2033.9623017857143 +2025-03-10 13:14:48,400 - INFO - CLOSED short at 2066.24 | PnL: -0.06% | $-0.31 +2025-03-10 13:14:48,401 - INFO - OPENED LONG at 2066.24 | Stop loss: 2055.8932678571427 | Take profit: 2097.2568982142857 +2025-03-10 13:14:48,570 - INFO - CLOSED long at 2062.71 | PnL: -0.17% | $-0.52 +2025-03-10 13:14:48,604 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.5600178571426 | Take profit: 2093.8566482142855 +2025-03-10 13:14:48,702 - INFO - CLOSED long at 2063.5 | PnL: 0.03% | $-0.13 +2025-03-10 13:14:48,702 - INFO - OPENED SHORT at 2063.5 | Stop loss: 2073.833032142857 | Take profit: 2032.5242017857142 +2025-03-10 13:14:48,748 - INFO - CLOSED short at 2061.6 | PnL: 0.09% | $-0.02 +2025-03-10 13:14:48,748 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.276467857143 | Take profit: 2092.547298214286 +2025-03-10 13:14:48,788 - INFO - CLOSED long at 2060.9 | PnL: -0.03% | $-0.25 +2025-03-10 13:14:48,788 - INFO - OPENED SHORT at 2060.9 | Stop loss: 2071.2200321428572 | Take profit: 2029.9632017857143 +2025-03-10 13:14:48,818 - INFO - CLOSED short at 2060.65 | PnL: 0.01% | $-0.17 +2025-03-10 13:14:48,818 - INFO - OPENED LONG at 2060.65 | Stop loss: 2050.3312178571427 | Take profit: 2091.583048214286 +2025-03-10 13:14:48,843 - INFO - CLOSED long at 2058.89 | PnL: -0.09% | $-0.35 +2025-03-10 13:14:48,921 - INFO - OPENED LONG at 2061.8 | Stop loss: 2051.475467857143 | Take profit: 2092.7502982142855 +2025-03-10 13:14:49,185 - INFO - CLOSED long at 2061.9 | PnL: 0.00% | $-0.18 +2025-03-10 13:14:49,186 - INFO - OPENED SHORT at 2061.9 | Stop loss: 2072.2250321428573 | Take profit: 2030.9482017857144 +2025-03-10 13:14:49,223 - INFO - CLOSED short at 2064.1 | PnL: -0.11% | $-0.39 +2025-03-10 13:14:49,224 - INFO - OPENED LONG at 2064.1 | Stop loss: 2053.7639678571427 | Take profit: 2095.0847982142855 +2025-03-10 13:14:49,341 - INFO - CLOSED long at 2064.79 | PnL: 0.03% | $-0.12 +2025-03-10 13:14:49,342 - INFO - OPENED SHORT at 2064.79 | Stop loss: 2075.1294821428573 | Take profit: 2033.7948517857142 +2025-03-10 13:14:49,370 - INFO - CLOSED short at 2065.89 | PnL: -0.05% | $-0.29 +2025-03-10 13:14:49,370 - INFO - OPENED LONG at 2065.89 | Stop loss: 2055.5450178571427 | Take profit: 2096.9016482142856 +2025-03-10 13:14:49,759 - INFO - CLOSED long at 2059.46 | PnL: -0.31% | $-0.77 +2025-03-10 13:14:49,799 - INFO - OPENED LONG at 2057.4 | Stop loss: 2047.097467857143 | Take profit: 2088.284298214286 +2025-03-10 13:14:49,820 - INFO - CLOSED long at 2058.28 | PnL: 0.04% | $-0.11 +2025-03-10 13:14:49,845 - INFO - OPENED LONG at 2056.28 | Stop loss: 2045.9830678571432 | Take profit: 2087.147498214286 +2025-03-10 13:14:49,932 - INFO - CLOSED long at 2056.71 | PnL: 0.02% | $-0.15 +2025-03-10 13:14:49,932 - INFO - OPENED SHORT at 2056.71 | Stop loss: 2067.0090821428576 | Take profit: 2025.8360517857145 +2025-03-10 13:14:49,956 - INFO - CLOSED short at 2058.15 | PnL: -0.07% | $-0.31 +2025-03-10 13:14:49,956 - INFO - OPENED LONG at 2058.15 | Stop loss: 2047.843717857143 | Take profit: 2089.045548214286 +2025-03-10 13:14:50,723 - INFO - CLOSED long at 2071.6 | PnL: 0.65% | $1.02 +2025-03-10 13:14:50,723 - INFO - OPENED SHORT at 2071.6 | Stop loss: 2081.973532142857 | Take profit: 2040.5027017857142 +2025-03-10 13:14:50,748 - INFO - CLOSED short at 2073.23 | PnL: -0.08% | $-0.33 +2025-03-10 13:14:50,749 - INFO - OPENED LONG at 2073.23 | Stop loss: 2062.848317857143 | Take profit: 2104.3517482142856 +2025-03-10 13:14:50,840 - INFO - CLOSED long at 2068.39 | PnL: -0.23% | $-0.62 +2025-03-10 13:14:50,905 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.3260178571427 | Take profit: 2100.758648214286 +2025-03-10 13:14:51,389 - INFO - CLOSED long at 2064.31 | PnL: -0.26% | $-0.66 +2025-03-10 13:14:51,390 - INFO - OPENED SHORT at 2064.31 | Stop loss: 2074.647082142857 | Take profit: 2033.3220517857144 +2025-03-10 13:14:51,413 - INFO - CLOSED short at 2065.5 | PnL: -0.06% | $-0.29 +2025-03-10 13:14:51,413 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.1569678571427 | Take profit: 2096.5057982142857 +2025-03-10 13:14:51,465 - INFO - CLOSED long at 2065.29 | PnL: -0.01% | $-0.20 +2025-03-10 13:14:51,467 - INFO - OPENED SHORT at 2065.29 | Stop loss: 2075.631982142857 | Take profit: 2034.2873517857145 +2025-03-10 13:14:51,496 - INFO - CLOSED short at 2065.31 | PnL: -0.00% | $-0.18 +2025-03-10 13:14:51,497 - INFO - OPENED LONG at 2065.31 | Stop loss: 2054.9679178571428 | Take profit: 2096.3129482142854 +2025-03-10 13:14:51,723 - INFO - CLOSED long at 2071.35 | PnL: 0.29% | $0.35 +2025-03-10 13:14:51,769 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.529967857143 | Take profit: 2101.986798214286 +2025-03-10 13:14:52,275 - INFO - CLOSED long at 2075.29 | PnL: 0.21% | $0.20 +2025-03-10 13:14:52,275 - INFO - OPENED SHORT at 2075.29 | Stop loss: 2085.681982142857 | Take profit: 2044.1373517857144 +2025-03-10 13:14:52,299 - INFO - CLOSED short at 2076.9 | PnL: -0.08% | $-0.32 +2025-03-10 13:14:52,300 - INFO - OPENED LONG at 2076.9 | Stop loss: 2066.499967857143 | Take profit: 2108.0767982142856 +2025-03-10 13:14:52,529 - INFO - STOP LOSS hit for long at 2066.499967857143 | PnL: -0.50% | $-1.09 +2025-03-10 13:14:52,584 - INFO - OPENED LONG at 2066.89 | Stop loss: 2056.5400178571426 | Take profit: 2097.9166482142855 +2025-03-10 13:14:53,163 - INFO - CLOSED long at 2060.7 | PnL: -0.30% | $-0.72 +2025-03-10 13:14:53,163 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.019032142857 | Take profit: 2029.7662017857142 +2025-03-10 13:14:53,186 - INFO - CLOSED short at 2060.2 | PnL: 0.02% | $-0.13 +2025-03-10 13:14:53,187 - INFO - OPENED LONG at 2060.2 | Stop loss: 2049.8834678571425 | Take profit: 2091.1262982142853 +2025-03-10 13:14:53,436 - INFO - STOP LOSS hit for long at 2049.8834678571425 | PnL: -0.50% | $-1.07 +2025-03-10 13:14:53,457 - INFO - OPENED SHORT at 2049.5 | Stop loss: 2059.7630321428574 | Take profit: 2018.7342017857143 +2025-03-10 13:14:53,481 - INFO - CLOSED short at 2051.99 | PnL: -0.12% | $-0.39 +2025-03-10 13:14:53,481 - INFO - OPENED LONG at 2051.99 | Stop loss: 2041.7145178571427 | Take profit: 2082.7931482142853 +2025-03-10 13:14:53,501 - INFO - CLOSED long at 2058.3 | PnL: 0.31% | $0.36 +2025-03-10 13:14:53,549 - INFO - OPENED LONG at 2057.11 | Stop loss: 2046.808917857143 | Take profit: 2087.989948214286 +2025-03-10 13:14:53,563 - INFO - CLOSED long at 2057.89 | PnL: 0.04% | $-0.11 +2025-03-10 13:14:53,591 - INFO - OPENED SHORT at 2062.83 | Stop loss: 2073.159682142857 | Take profit: 2031.8642517857143 +2025-03-10 13:14:53,637 - INFO - CLOSED short at 2063.9 | PnL: -0.05% | $-0.27 +2025-03-10 13:14:53,643 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.564967857143 | Take profit: 2094.881798214286 +2025-03-10 13:14:53,819 - INFO - CLOSED long at 2068.33 | PnL: 0.21% | $0.20 +2025-03-10 13:14:53,819 - INFO - OPENED SHORT at 2068.33 | Stop loss: 2078.687182142857 | Take profit: 2037.2817517857143 +2025-03-10 13:14:53,839 - INFO - CLOSED short at 2067.49 | PnL: 0.04% | $-0.10 +2025-03-10 13:14:53,839 - INFO - OPENED LONG at 2067.49 | Stop loss: 2057.137017857143 | Take profit: 2098.5256482142854 +2025-03-10 13:14:54,383 - INFO - CLOSED long at 2074.9 | PnL: 0.36% | $0.45 +2025-03-10 13:14:54,383 - INFO - OPENED SHORT at 2074.9 | Stop loss: 2085.2900321428574 | Take profit: 2043.7532017857143 +2025-03-10 13:14:54,423 - INFO - CLOSED short at 2076.08 | PnL: -0.06% | $-0.28 +2025-03-10 13:14:54,473 - INFO - OPENED LONG at 2077.61 | Stop loss: 2067.206417857143 | Take profit: 2108.797448214286 +2025-03-10 13:14:54,619 - INFO - TAKE PROFIT hit for long at 2108.797448214286 | PnL: 1.50% | $2.46 +2025-03-10 13:14:54,643 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.826767857143 | Take profit: 2171.6563982142857 +2025-03-10 13:14:54,684 - INFO - CLOSED long at 2133.95 | PnL: -0.26% | $-0.65 +2025-03-10 13:14:54,684 - INFO - OPENED SHORT at 2133.95 | Stop loss: 2144.6352821428572 | Take profit: 2101.917451785714 +2025-03-10 13:14:54,712 - INFO - CLOSED short at 2137.59 | PnL: -0.17% | $-0.48 +2025-03-10 13:14:54,713 - INFO - OPENED LONG at 2137.59 | Stop loss: 2126.8865178571427 | Take profit: 2169.677148214286 +2025-03-10 13:14:54,965 - INFO - CLOSED long at 2128.69 | PnL: -0.42% | $-0.92 +2025-03-10 13:14:54,991 - INFO - OPENED LONG at 2121.09 | Stop loss: 2110.4690178571427 | Take profit: 2152.929648214286 +2025-03-10 13:14:55,056 - INFO - CLOSED long at 2119.93 | PnL: -0.05% | $-0.27 +2025-03-10 13:14:55,056 - INFO - OPENED SHORT at 2119.93 | Stop loss: 2130.545182142857 | Take profit: 2088.1077517857143 +2025-03-10 13:14:55,083 - INFO - CLOSED short at 2121.4 | PnL: -0.07% | $-0.30 +2025-03-10 13:14:55,083 - INFO - OPENED LONG at 2121.4 | Stop loss: 2110.777467857143 | Take profit: 2153.2442982142857 +2025-03-10 13:14:55,105 - INFO - CLOSED long at 2118.52 | PnL: -0.14% | $-0.41 +2025-03-10 13:14:55,131 - INFO - OPENED LONG at 2119.14 | Stop loss: 2108.5287678571426 | Take profit: 2150.9503982142855 +2025-03-10 13:14:55,204 - INFO - STOP LOSS hit for long at 2108.5287678571426 | PnL: -0.50% | $-1.05 +2025-03-10 13:14:55,228 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.0314678571426 | Take profit: 2142.282298214285 +2025-03-10 13:14:55,591 - INFO - CLOSED long at 2100.5 | PnL: -0.48% | $-1.00 +2025-03-10 13:14:55,618 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.5344678571428 | Take profit: 2121.3732982142856 +2025-03-10 13:14:55,758 - INFO - CLOSED long at 2099.25 | PnL: 0.44% | $0.58 +2025-03-10 13:14:55,786 - INFO - OPENED LONG at 2098.9 | Stop loss: 2088.389967857143 | Take profit: 2130.4067982142856 +2025-03-10 13:14:56,248 - INFO - STOP LOSS hit for long at 2088.389967857143 | PnL: -0.50% | $-1.03 +2025-03-10 13:14:56,273 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848067857143 | Take profit: 2114.5524982142856 +2025-03-10 13:14:56,539 - INFO - CLOSED long at 2083.59 | PnL: 0.01% | $-0.14 +2025-03-10 13:14:56,539 - INFO - OPENED SHORT at 2083.59 | Stop loss: 2094.023482142857 | Take profit: 2052.3128517857144 +2025-03-10 13:14:56,566 - INFO - CLOSED short at 2086.57 | PnL: -0.14% | $-0.41 +2025-03-10 13:14:56,566 - INFO - OPENED LONG at 2086.57 | Stop loss: 2076.121617857143 | Take profit: 2117.8918482142863 +2025-03-10 13:14:56,838 - INFO - CLOSED long at 2087.78 | PnL: 0.06% | $-0.07 +2025-03-10 13:14:56,838 - INFO - OPENED SHORT at 2087.78 | Stop loss: 2098.2344321428573 | Take profit: 2056.4400017857147 +2025-03-10 13:14:56,866 - INFO - CLOSED short at 2086.81 | PnL: 0.05% | $-0.09 +2025-03-10 13:14:56,866 - INFO - OPENED LONG at 2086.81 | Stop loss: 2076.3604178571427 | Take profit: 2118.1354482142856 +2025-03-10 13:14:57,085 - INFO - CLOSED long at 2099.99 | PnL: 0.63% | $0.89 +2025-03-10 13:14:57,085 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.505482142857 | Take profit: 2068.466851785714 +2025-03-10 13:14:57,111 - INFO - CLOSED short at 2101.64 | PnL: -0.08% | $-0.30 +2025-03-10 13:14:57,111 - INFO - OPENED LONG at 2101.64 | Stop loss: 2091.1162678571427 | Take profit: 2133.1878982142857 +2025-03-10 13:14:57,237 - INFO - CLOSED long at 2106.15 | PnL: 0.21% | $0.19 +2025-03-10 13:14:57,237 - INFO - OPENED SHORT at 2106.15 | Stop loss: 2116.6962821428574 | Take profit: 2074.5344517857143 +2025-03-10 13:14:57,275 - INFO - CLOSED short at 2104.93 | PnL: 0.06% | $-0.07 +2025-03-10 13:14:57,275 - INFO - OPENED LONG at 2104.93 | Stop loss: 2094.3898178571426 | Take profit: 2136.527248214286 +2025-03-10 13:14:57,465 - INFO - Trade Analysis: Win Rate=8.3% in uptrends, 0.0% in downtrends | Avg Win=$0.55, Avg Loss=$-0.32 +2025-03-10 13:14:57,465 - INFO - Episode 16: Reward=91.96, Balance=$85.24, Win Rate=18.3%, Trades=93, Episode PnL=$-12.22, Total PnL=$-343.07, Max Drawdown=16.1%, Pred Accuracy=99.8% +2025-03-10 13:14:57,466 - ERROR - Error in episode 16: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:14:57,466 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:14:57,488 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:14:57,689 - INFO - OPENED LONG at 2046.58 | Stop loss: 2036.3315678571428 | Take profit: 2077.3019982142855 +2025-03-10 13:14:58,009 - INFO - CLOSED long at 2053.26 | PnL: 0.33% | $0.45 +2025-03-10 13:14:58,047 - INFO - OPENED LONG at 2051.89 | Stop loss: 2041.6150178571427 | Take profit: 2082.6916482142856 +2025-03-10 13:14:58,644 - INFO - CLOSED long at 2060.31 | PnL: 0.41% | $0.62 +2025-03-10 13:14:58,667 - INFO - OPENED LONG at 2059.49 | Stop loss: 2049.177017857143 | Take profit: 2090.4056482142855 +2025-03-10 13:14:58,730 - INFO - CLOSED long at 2057.94 | PnL: -0.08% | $-0.35 +2025-03-10 13:14:58,754 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.803917857143 | Take profit: 2089.004948214286 +2025-03-10 13:14:58,910 - INFO - CLOSED long at 2070.58 | PnL: 0.61% | $1.01 +2025-03-10 13:14:58,948 - INFO - OPENED LONG at 2068.11 | Stop loss: 2057.753917857143 | Take profit: 2099.154948214286 +2025-03-10 13:14:59,085 - INFO - CLOSED long at 2068.65 | PnL: 0.03% | $-0.15 +2025-03-10 13:14:59,115 - INFO - OPENED LONG at 2068.99 | Stop loss: 2058.6295178571427 | Take profit: 2100.0481482142854 +2025-03-10 13:14:59,307 - INFO - CLOSED long at 2072.91 | PnL: 0.19% | $0.18 +2025-03-10 13:14:59,311 - INFO - OPENED SHORT at 2072.91 | Stop loss: 2083.290082142857 | Take profit: 2041.793051785714 +2025-03-10 13:14:59,349 - INFO - CLOSED short at 2072.33 | PnL: 0.03% | $-0.15 +2025-03-10 13:14:59,349 - INFO - OPENED LONG at 2072.33 | Stop loss: 2061.9528178571427 | Take profit: 2103.4382482142855 +2025-03-10 13:14:59,406 - INFO - CLOSED long at 2071.41 | PnL: -0.04% | $-0.29 +2025-03-10 13:14:59,408 - INFO - OPENED SHORT at 2071.41 | Stop loss: 2081.782582142857 | Take profit: 2040.3155517857142 +2025-03-10 13:14:59,423 - INFO - CLOSED short at 2069.37 | PnL: 0.10% | $-0.00 +2025-03-10 13:14:59,423 - INFO - OPENED LONG at 2069.37 | Stop loss: 2059.0076178571426 | Take profit: 2100.4338482142857 +2025-03-10 13:14:59,897 - INFO - CLOSED long at 2066.39 | PnL: -0.14% | $-0.49 +2025-03-10 13:14:59,898 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.737482142857 | Take profit: 2035.3708517857142 +2025-03-10 13:14:59,934 - INFO - CLOSED short at 2065.99 | PnL: 0.02% | $-0.16 +2025-03-10 13:14:59,934 - INFO - OPENED LONG at 2065.99 | Stop loss: 2055.6445178571425 | Take profit: 2097.0031482142854 +2025-03-10 13:15:00,034 - INFO - CLOSED long at 2065.08 | PnL: -0.04% | $-0.29 +2025-03-10 13:15:00,034 - INFO - OPENED SHORT at 2065.08 | Stop loss: 2075.420932142857 | Take profit: 2034.0805017857142 +2025-03-10 13:15:00,067 - INFO - CLOSED short at 2066.18 | PnL: -0.05% | $-0.31 +2025-03-10 13:15:00,068 - INFO - OPENED LONG at 2066.18 | Stop loss: 2055.8335678571425 | Take profit: 2097.1959982142853 +2025-03-10 13:15:00,173 - INFO - CLOSED long at 2068.51 | PnL: 0.11% | $0.03 +2025-03-10 13:15:00,174 - INFO - OPENED SHORT at 2068.51 | Stop loss: 2078.8680821428575 | Take profit: 2037.4590517857146 +2025-03-10 13:15:00,210 - INFO - CLOSED short at 2068.59 | PnL: -0.00% | $-0.21 +2025-03-10 13:15:00,210 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.231517857143 | Take profit: 2099.642148214286 +2025-03-10 13:15:00,589 - INFO - CLOSED long at 2073.9 | PnL: 0.26% | $0.31 +2025-03-10 13:15:00,615 - INFO - OPENED LONG at 2071.92 | Stop loss: 2061.544867857143 | Take profit: 2103.0220982142855 +2025-03-10 13:15:00,658 - INFO - CLOSED long at 2071.11 | PnL: -0.04% | $-0.28 +2025-03-10 13:15:00,659 - INFO - OPENED SHORT at 2071.11 | Stop loss: 2081.4810821428573 | Take profit: 2040.0200517857143 +2025-03-10 13:15:00,682 - INFO - CLOSED short at 2069.46 | PnL: 0.08% | $-0.04 +2025-03-10 13:15:00,714 - INFO - OPENED LONG at 2069.35 | Stop loss: 2058.987717857143 | Take profit: 2100.4135482142856 +2025-03-10 13:15:01,160 - INFO - CLOSED long at 2067.59 | PnL: -0.09% | $-0.37 +2025-03-10 13:15:01,185 - INFO - OPENED LONG at 2069.2 | Stop loss: 2058.8384678571424 | Take profit: 2100.2612982142855 +2025-03-10 13:15:01,633 - INFO - CLOSED long at 2066.39 | PnL: -0.14% | $-0.47 +2025-03-10 13:15:01,683 - INFO - OPENED LONG at 2064.47 | Stop loss: 2054.132117857143 | Take profit: 2095.4603482142857 +2025-03-10 13:15:01,828 - INFO - CLOSED long at 2065.69 | PnL: 0.06% | $-0.08 +2025-03-10 13:15:01,828 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.0339821428574 | Take profit: 2034.6813517857142 +2025-03-10 13:15:01,855 - INFO - CLOSED short at 2067.88 | PnL: -0.11% | $-0.40 +2025-03-10 13:15:01,886 - INFO - OPENED LONG at 2064.99 | Stop loss: 2054.6495178571427 | Take profit: 2095.9881482142855 +2025-03-10 13:15:02,005 - INFO - CLOSED long at 2062.65 | PnL: -0.11% | $-0.42 +2025-03-10 13:15:02,048 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.4555678571433 | Take profit: 2092.729998214286 +2025-03-10 13:15:02,248 - INFO - CLOSED long at 2067.1 | PnL: 0.26% | $0.31 +2025-03-10 13:15:02,287 - INFO - OPENED LONG at 2065.54 | Stop loss: 2055.1967678571427 | Take profit: 2096.5463982142855 +2025-03-10 13:15:02,317 - INFO - CLOSED long at 2066.09 | PnL: 0.03% | $-0.14 +2025-03-10 13:15:02,352 - INFO - OPENED LONG at 2064.45 | Stop loss: 2054.1122178571427 | Take profit: 2095.4400482142855 +2025-03-10 13:15:02,457 - INFO - CLOSED long at 2062.71 | PnL: -0.08% | $-0.36 +2025-03-10 13:15:02,531 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.5600178571426 | Take profit: 2093.8566482142855 +2025-03-10 13:15:03,056 - INFO - CLOSED long at 2061.9 | PnL: -0.05% | $-0.29 +2025-03-10 13:15:03,056 - INFO - OPENED SHORT at 2061.9 | Stop loss: 2072.2250321428573 | Take profit: 2030.9482017857144 +2025-03-10 13:15:03,099 - INFO - CLOSED short at 2065.36 | PnL: -0.17% | $-0.52 +2025-03-10 13:15:03,099 - INFO - OPENED LONG at 2065.36 | Stop loss: 2055.017667857143 | Take profit: 2096.363698214286 +2025-03-10 13:15:03,147 - INFO - CLOSED long at 2063.39 | PnL: -0.10% | $-0.38 +2025-03-10 13:15:03,169 - INFO - OPENED SHORT at 2064.79 | Stop loss: 2075.1294821428573 | Take profit: 2033.7948517857142 +2025-03-10 13:15:03,203 - INFO - CLOSED short at 2065.89 | PnL: -0.05% | $-0.29 +2025-03-10 13:15:03,203 - INFO - OPENED LONG at 2065.89 | Stop loss: 2055.5450178571427 | Take profit: 2096.9016482142856 +2025-03-10 13:15:03,475 - INFO - CLOSED long at 2061.09 | PnL: -0.23% | $-0.64 +2025-03-10 13:15:03,475 - INFO - OPENED SHORT at 2061.09 | Stop loss: 2071.4109821428574 | Take profit: 2030.1503517857145 +2025-03-10 13:15:03,510 - INFO - CLOSED short at 2059.61 | PnL: 0.07% | $-0.05 +2025-03-10 13:15:03,510 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.2964178571433 | Take profit: 2090.527448214286 +2025-03-10 13:15:04,127 - INFO - CLOSED long at 2063.4 | PnL: 0.18% | $0.16 +2025-03-10 13:15:04,171 - INFO - OPENED LONG at 2066.36 | Stop loss: 2056.0126678571432 | Take profit: 2097.3786982142856 +2025-03-10 13:15:04,238 - INFO - CLOSED long at 2064.49 | PnL: -0.09% | $-0.36 +2025-03-10 13:15:04,238 - INFO - OPENED SHORT at 2064.49 | Stop loss: 2074.827982142857 | Take profit: 2033.499351785714 +2025-03-10 13:15:04,260 - INFO - CLOSED short at 2066.33 | PnL: -0.09% | $-0.36 +2025-03-10 13:15:04,260 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.982817857143 | Take profit: 2097.348248214286 +2025-03-10 13:15:04,327 - INFO - CLOSED long at 2067.33 | PnL: 0.05% | $-0.10 +2025-03-10 13:15:04,352 - INFO - OPENED LONG at 2067.01 | Stop loss: 2056.659417857143 | Take profit: 2098.038448214286 +2025-03-10 13:15:04,457 - INFO - CLOSED long at 2074.3 | PnL: 0.35% | $0.48 +2025-03-10 13:15:04,483 - INFO - OPENED LONG at 2078.01 | Stop loss: 2067.604417857143 | Take profit: 2109.203448214286 +2025-03-10 13:15:04,569 - INFO - CLOSED long at 2070.01 | PnL: -0.38% | $-0.92 +2025-03-10 13:15:04,595 - INFO - OPENED SHORT at 2071.6 | Stop loss: 2081.973532142857 | Take profit: 2040.5027017857142 +2025-03-10 13:15:04,624 - INFO - CLOSED short at 2073.23 | PnL: -0.08% | $-0.34 +2025-03-10 13:15:04,624 - INFO - OPENED LONG at 2073.23 | Stop loss: 2062.848317857143 | Take profit: 2104.3517482142856 +2025-03-10 13:15:04,825 - INFO - CLOSED long at 2071.49 | PnL: -0.08% | $-0.34 +2025-03-10 13:15:04,851 - INFO - OPENED SHORT at 2069.87 | Stop loss: 2080.234882142857 | Take profit: 2038.7986517857141 +2025-03-10 13:15:04,871 - INFO - CLOSED short at 2067.33 | PnL: 0.12% | $0.04 +2025-03-10 13:15:04,900 - INFO - OPENED LONG at 2066.38 | Stop loss: 2056.032567857143 | Take profit: 2097.3989982142857 +2025-03-10 13:15:05,064 - INFO - CLOSED long at 2064.4 | PnL: -0.10% | $-0.37 +2025-03-10 13:15:05,088 - INFO - OPENED LONG at 2064.31 | Stop loss: 2053.972917857143 | Take profit: 2095.297948214286 +2025-03-10 13:15:05,408 - INFO - CLOSED long at 2070.8 | PnL: 0.31% | $0.40 +2025-03-10 13:15:05,432 - INFO - OPENED LONG at 2070.35 | Stop loss: 2059.9827178571427 | Take profit: 2101.4285482142855 +2025-03-10 13:15:05,731 - INFO - CLOSED long at 2076.9 | PnL: 0.32% | $0.40 +2025-03-10 13:15:05,777 - INFO - OPENED LONG at 2074.0 | Stop loss: 2063.6144678571427 | Take profit: 2105.133298214286 +2025-03-10 13:15:05,833 - INFO - CLOSED long at 2067.7 | PnL: -0.30% | $-0.76 +2025-03-10 13:15:05,833 - INFO - OPENED SHORT at 2067.7 | Stop loss: 2078.054032142857 | Take profit: 2036.661201785714 +2025-03-10 13:15:05,870 - INFO - CLOSED short at 2067.9 | PnL: -0.01% | $-0.20 +2025-03-10 13:15:05,890 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.052467857143 | Take profit: 2097.4192982142854 +2025-03-10 13:15:05,992 - INFO - CLOSED long at 2069.0 | PnL: 0.13% | $0.05 +2025-03-10 13:15:06,014 - INFO - OPENED LONG at 2070.19 | Stop loss: 2059.8235178571426 | Take profit: 2101.2661482142857 +2025-03-10 13:15:06,052 - INFO - CLOSED long at 2067.19 | PnL: -0.14% | $-0.45 +2025-03-10 13:15:06,052 - INFO - OPENED SHORT at 2067.19 | Stop loss: 2077.541482142857 | Take profit: 2036.1588517857142 +2025-03-10 13:15:06,080 - INFO - CLOSED short at 2065.5 | PnL: 0.08% | $-0.03 +2025-03-10 13:15:06,081 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.1569678571427 | Take profit: 2096.5057982142857 +2025-03-10 13:15:06,124 - INFO - CLOSED long at 2065.8 | PnL: 0.01% | $-0.16 +2025-03-10 13:15:06,124 - INFO - OPENED SHORT at 2065.8 | Stop loss: 2076.1445321428573 | Take profit: 2034.7897017857144 +2025-03-10 13:15:06,150 - INFO - CLOSED short at 2065.07 | PnL: 0.04% | $-0.12 +2025-03-10 13:15:06,150 - INFO - OPENED LONG at 2065.07 | Stop loss: 2054.729117857143 | Take profit: 2096.069348214286 +2025-03-10 13:15:06,590 - INFO - STOP LOSS hit for long at 2054.729117857143 | PnL: -0.50% | $-1.11 +2025-03-10 13:15:06,645 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.2369678571429 | Take profit: 2080.2657982142855 +2025-03-10 13:15:07,155 - INFO - CLOSED long at 2070.31 | PnL: 1.02% | $1.67 +2025-03-10 13:15:07,199 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.977767857143 | Take profit: 2100.4033982142855 +2025-03-10 13:15:07,327 - INFO - CLOSED long at 2071.89 | PnL: 0.12% | $0.04 +2025-03-10 13:15:07,353 - INFO - OPENED LONG at 2071.8 | Stop loss: 2061.4254678571433 | Take profit: 2102.9002982142856 +2025-03-10 13:15:07,503 - INFO - TAKE PROFIT hit for long at 2102.9002982142856 | PnL: 1.50% | $2.60 +2025-03-10 13:15:07,533 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.0309678571425 | Take profit: 2162.6837982142856 +2025-03-10 13:15:07,624 - INFO - CLOSED long at 2137.59 | PnL: 0.32% | $0.43 +2025-03-10 13:15:07,624 - INFO - OPENED SHORT at 2137.59 | Stop loss: 2148.2934821428576 | Take profit: 2105.5028517857145 +2025-03-10 13:15:07,677 - INFO - CLOSED short at 2141.3 | PnL: -0.17% | $-0.52 +2025-03-10 13:15:07,678 - INFO - OPENED LONG at 2141.3 | Stop loss: 2130.577967857143 | Take profit: 2173.4427982142856 +2025-03-10 13:15:07,768 - INFO - STOP LOSS hit for long at 2130.577967857143 | PnL: -0.50% | $-1.14 +2025-03-10 13:15:07,789 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.647967857143 | Take profit: 2159.2327982142856 +2025-03-10 13:15:07,842 - INFO - CLOSED long at 2121.09 | PnL: -0.29% | $-0.74 +2025-03-10 13:15:07,868 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.533717857143 | Take profit: 2151.9755482142855 +2025-03-10 13:15:07,951 - INFO - CLOSED long at 2121.4 | PnL: 0.06% | $-0.08 +2025-03-10 13:15:07,976 - INFO - OPENED LONG at 2118.52 | Stop loss: 2107.9118678571426 | Take profit: 2150.321098214286 +2025-03-10 13:15:08,105 - INFO - STOP LOSS hit for long at 2107.9118678571426 | PnL: -0.50% | $-1.12 +2025-03-10 13:15:08,159 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.0314678571426 | Take profit: 2142.282298214285 +2025-03-10 13:15:08,243 - INFO - CLOSED long at 2112.95 | PnL: 0.11% | $0.02 +2025-03-10 13:15:08,267 - INFO - OPENED LONG at 2112.46 | Stop loss: 2101.882167857143 | Take profit: 2144.1701982142854 +2025-03-10 13:15:08,285 - INFO - CLOSED long at 2113.24 | PnL: 0.04% | $-0.12 +2025-03-10 13:15:08,310 - INFO - OPENED LONG at 2112.99 | Stop loss: 2102.4095178571424 | Take profit: 2144.7081482142853 +2025-03-10 13:15:08,480 - INFO - CLOSED long at 2108.71 | PnL: -0.20% | $-0.56 +2025-03-10 13:15:08,480 - INFO - OPENED SHORT at 2108.71 | Stop loss: 2119.2690821428573 | Take profit: 2077.0560517857143 +2025-03-10 13:15:08,514 - INFO - CLOSED short at 2106.49 | PnL: 0.11% | $0.01 +2025-03-10 13:15:08,559 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.504167857143 | Take profit: 2139.7041982142855 +2025-03-10 13:15:08,637 - INFO - STOP LOSS hit for long at 2097.504167857143 | PnL: -0.50% | $-1.10 +2025-03-10 13:15:08,661 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.016817857143 | Take profit: 2131.046248214286 +2025-03-10 13:15:08,704 - INFO - CLOSED long at 2102.19 | PnL: 0.13% | $0.05 +2025-03-10 13:15:08,704 - INFO - OPENED SHORT at 2102.19 | Stop loss: 2112.716482142857 | Take profit: 2070.6338517857143 +2025-03-10 13:15:08,742 - INFO - CLOSED short at 2099.25 | PnL: 0.14% | $0.07 +2025-03-10 13:15:08,742 - INFO - OPENED LONG at 2099.25 | Stop loss: 2088.738217857143 | Take profit: 2130.7620482142856 +2025-03-10 13:15:08,972 - INFO - CLOSED long at 2104.68 | PnL: 0.26% | $0.29 +2025-03-10 13:15:08,999 - INFO - OPENED LONG at 2101.51 | Stop loss: 2090.986917857143 | Take profit: 2133.0559482142858 +2025-03-10 13:15:09,288 - INFO - CLOSED long at 2088.35 | PnL: -0.63% | $-1.32 +2025-03-10 13:15:09,328 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848067857143 | Take profit: 2114.5524982142856 +2025-03-10 13:15:09,478 - INFO - CLOSED long at 2080.38 | PnL: -0.14% | $-0.43 +2025-03-10 13:15:09,479 - INFO - OPENED SHORT at 2080.38 | Stop loss: 2090.7974321428574 | Take profit: 2049.1510017857145 +2025-03-10 13:15:09,526 - INFO - CLOSED short at 2083.41 | PnL: -0.15% | $-0.44 +2025-03-10 13:15:09,528 - INFO - OPENED LONG at 2083.41 | Stop loss: 2072.977417857143 | Take profit: 2114.6844482142856 +2025-03-10 13:15:09,723 - INFO - CLOSED long at 2085.83 | PnL: 0.12% | $0.03 +2025-03-10 13:15:09,760 - INFO - OPENED LONG at 2085.85 | Stop loss: 2075.405217857143 | Take profit: 2117.1610482142855 +2025-03-10 13:15:09,809 - INFO - CLOSED long at 2088.32 | PnL: 0.12% | $0.03 +2025-03-10 13:15:09,810 - INFO - OPENED SHORT at 2088.32 | Stop loss: 2098.777132142857 | Take profit: 2056.971901785714 +2025-03-10 13:15:09,830 - INFO - CLOSED short at 2088.1 | PnL: 0.01% | $-0.16 +2025-03-10 13:15:09,830 - INFO - OPENED LONG at 2088.1 | Stop loss: 2077.643967857143 | Take profit: 2119.4447982142856 +2025-03-10 13:15:10,235 - INFO - CLOSED long at 2099.99 | PnL: 0.57% | $0.83 +2025-03-10 13:15:10,280 - INFO - OPENED SHORT at 2097.11 | Stop loss: 2107.611082142857 | Take profit: 2065.6300517857144 +2025-03-10 13:15:10,309 - INFO - CLOSED short at 2098.49 | PnL: -0.07% | $-0.30 +2025-03-10 13:15:10,309 - INFO - OPENED LONG at 2098.49 | Stop loss: 2087.9820178571426 | Take profit: 2129.9906482142856 +2025-03-10 13:15:10,426 - INFO - CLOSED long at 2106.15 | PnL: 0.37% | $0.47 +2025-03-10 13:15:10,426 - INFO - OPENED SHORT at 2106.15 | Stop loss: 2116.6962821428574 | Take profit: 2074.5344517857143 +2025-03-10 13:15:10,471 - INFO - CLOSED short at 2103.48 | PnL: 0.13% | $0.05 +2025-03-10 13:15:10,471 - INFO - OPENED LONG at 2103.48 | Stop loss: 2092.947067857143 | Take profit: 2135.0554982142858 +2025-03-10 13:15:10,742 - INFO - Trade Analysis: Win Rate=13.0% in uptrends, 0.0% in downtrends | Avg Win=$0.41, Avg Loss=$-0.40 +2025-03-10 13:15:10,743 - INFO - Episode 17: Reward=133.49, Balance=$90.27, Win Rate=34.2%, Trades=79, Episode PnL=$-5.85, Total PnL=$-352.80, Max Drawdown=12.2%, Pred Accuracy=100.0% +2025-03-10 13:15:10,743 - ERROR - Error in episode 17: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:15:10,744 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:15:10,764 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:15:11,119 - INFO - OPENED LONG at 2046.58 | Stop loss: 2036.3315678571428 | Take profit: 2077.3019982142855 +2025-03-10 13:15:11,208 - INFO - CLOSED long at 2045.99 | PnL: -0.03% | $-0.26 +2025-03-10 13:15:11,208 - INFO - OPENED SHORT at 2045.99 | Stop loss: 2056.235482142857 | Take profit: 2015.2768517857144 +2025-03-10 13:15:11,237 - INFO - CLOSED short at 2045.79 | PnL: 0.01% | $-0.18 +2025-03-10 13:15:11,237 - INFO - OPENED LONG at 2045.79 | Stop loss: 2035.5455178571428 | Take profit: 2076.5001482142857 +2025-03-10 13:15:11,350 - INFO - CLOSED long at 2050.24 | PnL: 0.22% | $0.23 +2025-03-10 13:15:11,375 - INFO - OPENED LONG at 2049.89 | Stop loss: 2039.6250178571427 | Take profit: 2080.661648214286 +2025-03-10 13:15:11,741 - INFO - CLOSED long at 2064.69 | PnL: 0.72% | $1.23 +2025-03-10 13:15:11,769 - INFO - OPENED LONG at 2063.01 | Stop loss: 2052.679417857143 | Take profit: 2093.978448214286 +2025-03-10 13:15:12,015 - INFO - CLOSED long at 2057.94 | PnL: -0.25% | $-0.69 +2025-03-10 13:15:12,038 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.803917857143 | Take profit: 2089.004948214286 +2025-03-10 13:15:12,107 - INFO - CLOSED long at 2064.32 | PnL: 0.30% | $0.40 +2025-03-10 13:15:12,131 - INFO - OPENED LONG at 2065.86 | Stop loss: 2055.515167857143 | Take profit: 2096.871198214286 +2025-03-10 13:15:12,371 - INFO - CLOSED long at 2067.9 | PnL: 0.10% | $-0.00 +2025-03-10 13:15:12,395 - INFO - OPENED LONG at 2067.69 | Stop loss: 2057.336017857143 | Take profit: 2098.7286482142854 +2025-03-10 13:15:12,788 - INFO - CLOSED long at 2070.7 | PnL: 0.15% | $0.09 +2025-03-10 13:15:12,813 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.977767857143 | Take profit: 2100.4033982142855 +2025-03-10 13:15:13,876 - INFO - CLOSED long at 2070.3 | PnL: 0.05% | $-0.11 +2025-03-10 13:15:13,904 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.216517857143 | Take profit: 2102.687148214286 +2025-03-10 13:15:14,076 - INFO - CLOSED long at 2067.11 | PnL: -0.22% | $-0.63 +2025-03-10 13:15:14,102 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.505167857143 | Take profit: 2098.9011982142856 +2025-03-10 13:15:14,221 - INFO - CLOSED long at 2064.47 | PnL: -0.16% | $-0.52 +2025-03-10 13:15:14,246 - INFO - OPENED LONG at 2070.04 | Stop loss: 2059.6742678571427 | Take profit: 2101.113898214286 +2025-03-10 13:15:14,508 - INFO - STOP LOSS hit for long at 2059.6742678571427 | PnL: -0.50% | $-1.19 +2025-03-10 13:15:14,532 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.977967857143 | Take profit: 2092.242798214286 +2025-03-10 13:15:14,895 - INFO - CLOSED long at 2060.9 | PnL: -0.02% | $-0.23 +2025-03-10 13:15:14,896 - INFO - OPENED SHORT at 2060.9 | Stop loss: 2071.2200321428572 | Take profit: 2029.9632017857143 +2025-03-10 13:15:14,924 - INFO - CLOSED short at 2060.65 | PnL: 0.01% | $-0.17 +2025-03-10 13:15:14,926 - INFO - OPENED LONG at 2060.65 | Stop loss: 2050.3312178571427 | Take profit: 2091.583048214286 +2025-03-10 13:15:15,052 - INFO - CLOSED long at 2064.7 | PnL: 0.20% | $0.19 +2025-03-10 13:15:15,052 - INFO - OPENED SHORT at 2064.7 | Stop loss: 2075.039032142857 | Take profit: 2033.706201785714 +2025-03-10 13:15:15,099 - INFO - CLOSED short at 2062.61 | PnL: 0.10% | $0.00 +2025-03-10 13:15:15,099 - INFO - OPENED LONG at 2062.61 | Stop loss: 2052.281417857143 | Take profit: 2093.572448214286 +2025-03-10 13:15:15,274 - INFO - CLOSED long at 2065.36 | PnL: 0.13% | $0.06 +2025-03-10 13:15:15,274 - INFO - OPENED SHORT at 2065.36 | Stop loss: 2075.7023321428574 | Take profit: 2034.3563017857145 +2025-03-10 13:15:15,302 - INFO - CLOSED short at 2064.33 | PnL: 0.05% | $-0.10 +2025-03-10 13:15:15,302 - INFO - OPENED LONG at 2064.33 | Stop loss: 2053.9928178571427 | Take profit: 2095.3182482142856 +2025-03-10 13:15:15,645 - INFO - CLOSED long at 2060.7 | PnL: -0.18% | $-0.54 +2025-03-10 13:15:15,673 - INFO - OPENED LONG at 2061.09 | Stop loss: 2050.769017857143 | Take profit: 2092.0296482142858 +2025-03-10 13:15:15,695 - INFO - CLOSED long at 2059.61 | PnL: -0.07% | $-0.33 +2025-03-10 13:15:15,695 - INFO - OPENED SHORT at 2059.61 | Stop loss: 2069.9235821428574 | Take profit: 2028.6925517857144 +2025-03-10 13:15:15,726 - INFO - CLOSED short at 2059.16 | PnL: 0.02% | $-0.15 +2025-03-10 13:15:15,726 - INFO - OPENED LONG at 2059.16 | Stop loss: 2048.8486678571426 | Take profit: 2090.0706982142856 +2025-03-10 13:15:16,038 - INFO - CLOSED long at 2055.6 | PnL: -0.17% | $-0.53 +2025-03-10 13:15:16,039 - INFO - OPENED SHORT at 2055.6 | Stop loss: 2065.893532142857 | Take profit: 2024.7427017857142 +2025-03-10 13:15:16,069 - INFO - CLOSED short at 2054.89 | PnL: 0.03% | $-0.13 +2025-03-10 13:15:16,069 - INFO - OPENED LONG at 2054.89 | Stop loss: 2044.6000178571428 | Take profit: 2085.736648214285 +2025-03-10 13:15:16,548 - INFO - CLOSED long at 2063.9 | PnL: 0.44% | $0.65 +2025-03-10 13:15:16,581 - INFO - OPENED LONG at 2064.49 | Stop loss: 2054.1520178571427 | Take profit: 2095.480648214286 +2025-03-10 13:15:16,627 - INFO - CLOSED long at 2066.33 | PnL: 0.09% | $-0.02 +2025-03-10 13:15:16,722 - INFO - OPENED LONG at 2066.79 | Stop loss: 2056.440517857143 | Take profit: 2097.8151482142853 +2025-03-10 13:15:17,433 - INFO - CLOSED long at 2068.79 | PnL: 0.10% | $-0.01 +2025-03-10 13:15:17,433 - INFO - OPENED SHORT at 2068.79 | Stop loss: 2079.149482142857 | Take profit: 2037.7348517857142 +2025-03-10 13:15:17,488 - INFO - CLOSED short at 2072.99 | PnL: -0.20% | $-0.58 +2025-03-10 13:15:17,488 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6095178571427 | Take profit: 2104.1081482142854 +2025-03-10 13:15:17,619 - INFO - CLOSED long at 2067.33 | PnL: -0.27% | $-0.71 +2025-03-10 13:15:17,621 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.682182142857 | Take profit: 2036.2967517857144 +2025-03-10 13:15:17,657 - INFO - CLOSED short at 2066.38 | PnL: 0.05% | $-0.10 +2025-03-10 13:15:17,658 - INFO - OPENED LONG at 2066.38 | Stop loss: 2056.032567857143 | Take profit: 2097.3989982142857 +2025-03-10 13:15:17,796 - INFO - CLOSED long at 2063.97 | PnL: -0.12% | $-0.41 +2025-03-10 13:15:17,797 - INFO - OPENED SHORT at 2063.97 | Stop loss: 2074.305382142857 | Take profit: 2032.987151785714 +2025-03-10 13:15:17,832 - INFO - CLOSED short at 2064.5 | PnL: -0.03% | $-0.24 +2025-03-10 13:15:17,832 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.161967857143 | Take profit: 2095.490798214286 +2025-03-10 13:15:18,363 - INFO - CLOSED long at 2069.69 | PnL: 0.25% | $0.29 +2025-03-10 13:15:18,363 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.053982142857 | Take profit: 2038.6213517857145 +2025-03-10 13:15:18,394 - INFO - CLOSED short at 2070.7 | PnL: -0.05% | $-0.28 +2025-03-10 13:15:18,394 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3309678571427 | Take profit: 2101.7837982142855 +2025-03-10 13:15:18,786 - INFO - CLOSED long at 2074.37 | PnL: 0.18% | $0.15 +2025-03-10 13:15:18,818 - INFO - OPENED LONG at 2075.07 | Stop loss: 2064.679117857143 | Take profit: 2106.219348214286 +2025-03-10 13:15:19,235 - INFO - CLOSED long at 2067.9 | PnL: -0.35% | $-0.84 +2025-03-10 13:15:19,235 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.255032142857 | Take profit: 2036.8582017857143 +2025-03-10 13:15:19,259 - INFO - CLOSED short at 2066.4 | PnL: 0.07% | $-0.05 +2025-03-10 13:15:19,260 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.052467857143 | Take profit: 2097.4192982142854 +2025-03-10 13:15:20,042 - INFO - STOP LOSS hit for long at 2056.052467857143 | PnL: -0.50% | $-1.12 +2025-03-10 13:15:20,075 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.9484178571429 | Take profit: 2079.971448214286 +2025-03-10 13:15:20,130 - INFO - CLOSED long at 2051.99 | PnL: 0.14% | $0.07 +2025-03-10 13:15:20,131 - INFO - OPENED SHORT at 2051.99 | Stop loss: 2062.265482142857 | Take profit: 2021.186851785714 +2025-03-10 13:15:20,157 - INFO - CLOSED short at 2058.3 | PnL: -0.31% | $-0.75 +2025-03-10 13:15:20,158 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9929678571432 | Take profit: 2089.1977982142857 +2025-03-10 13:15:20,434 - INFO - CLOSED long at 2067.49 | PnL: 0.45% | $0.64 +2025-03-10 13:15:20,434 - INFO - OPENED SHORT at 2067.49 | Stop loss: 2077.8429821428567 | Take profit: 2036.4543517857142 +2025-03-10 13:15:20,462 - INFO - CLOSED short at 2066.59 | PnL: 0.04% | $-0.10 +2025-03-10 13:15:20,463 - INFO - OPENED LONG at 2066.59 | Stop loss: 2056.241517857143 | Take profit: 2097.612148214286 +2025-03-10 13:15:20,540 - INFO - CLOSED long at 2059.9 | PnL: -0.32% | $-0.78 +2025-03-10 13:15:20,540 - INFO - OPENED SHORT at 2059.9 | Stop loss: 2070.215032142857 | Take profit: 2028.9782017857144 +2025-03-10 13:15:20,567 - INFO - CLOSED short at 2060.7 | PnL: -0.04% | $-0.25 +2025-03-10 13:15:20,568 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3809678571424 | Take profit: 2091.633798214286 +2025-03-10 13:15:20,619 - INFO - CLOSED long at 2062.54 | PnL: 0.09% | $-0.02 +2025-03-10 13:15:20,620 - INFO - OPENED SHORT at 2062.54 | Stop loss: 2072.868232142857 | Take profit: 2031.5786017857142 +2025-03-10 13:15:20,653 - INFO - CLOSED short at 2065.72 | PnL: -0.15% | $-0.46 +2025-03-10 13:15:20,654 - INFO - OPENED LONG at 2065.72 | Stop loss: 2055.3758678571426 | Take profit: 2096.729098214286 +2025-03-10 13:15:20,675 - INFO - CLOSED long at 2070.31 | PnL: 0.22% | $0.22 +2025-03-10 13:15:20,676 - INFO - OPENED SHORT at 2070.31 | Stop loss: 2080.677082142857 | Take profit: 2039.2320517857142 +2025-03-10 13:15:20,708 - INFO - CLOSED short at 2070.24 | PnL: 0.00% | $-0.18 +2025-03-10 13:15:20,708 - INFO - OPENED LONG at 2070.24 | Stop loss: 2059.8732678571428 | Take profit: 2101.3168982142856 +2025-03-10 13:15:21,081 - INFO - TAKE PROFIT hit for long at 2101.3168982142856 | PnL: 1.50% | $2.55 +2025-03-10 13:15:21,111 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.0309678571425 | Take profit: 2162.6837982142856 +2025-03-10 13:15:21,521 - INFO - STOP LOSS hit for long at 2120.0309678571425 | PnL: -0.50% | $-1.12 +2025-03-10 13:15:21,547 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3148178571428 | Take profit: 2151.752248214286 +2025-03-10 13:15:21,636 - INFO - CLOSED long at 2119.14 | PnL: -0.04% | $-0.25 +2025-03-10 13:15:21,636 - INFO - OPENED SHORT at 2119.14 | Stop loss: 2129.751232142857 | Take profit: 2087.329601785714 +2025-03-10 13:15:21,668 - INFO - CLOSED short at 2119.07 | PnL: 0.00% | $-0.18 +2025-03-10 13:15:21,668 - INFO - OPENED LONG at 2119.07 | Stop loss: 2108.459117857143 | Take profit: 2150.8793482142855 +2025-03-10 13:15:21,728 - INFO - STOP LOSS hit for long at 2108.459117857143 | PnL: -0.50% | $-1.10 +2025-03-10 13:15:21,759 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.0314678571426 | Take profit: 2142.282298214285 +2025-03-10 13:15:21,978 - INFO - CLOSED long at 2116.48 | PnL: 0.28% | $0.32 +2025-03-10 13:15:21,979 - INFO - OPENED SHORT at 2116.48 | Stop loss: 2127.077932142857 | Take profit: 2084.7095017857146 +2025-03-10 13:15:22,007 - INFO - CLOSED short at 2114.8 | PnL: 0.08% | $-0.04 +2025-03-10 13:15:22,007 - INFO - OPENED LONG at 2114.8 | Stop loss: 2104.210467857143 | Take profit: 2146.545298214286 +2025-03-10 13:15:22,032 - INFO - CLOSED long at 2110.9 | PnL: -0.18% | $-0.52 +2025-03-10 13:15:22,064 - INFO - OPENED LONG at 2108.71 | Stop loss: 2098.1509178571428 | Take profit: 2140.3639482142858 +2025-03-10 13:15:22,175 - INFO - CLOSED long at 2100.5 | PnL: -0.39% | $-0.89 +2025-03-10 13:15:22,179 - INFO - OPENED SHORT at 2100.5 | Stop loss: 2111.0180321428575 | Take profit: 2068.969201785714 +2025-03-10 13:15:22,211 - INFO - CLOSED short at 2090.0 | PnL: 0.50% | $0.72 +2025-03-10 13:15:22,211 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.5344678571428 | Take profit: 2121.3732982142856 +2025-03-10 13:15:22,289 - INFO - CLOSED long at 2102.19 | PnL: 0.58% | $0.87 +2025-03-10 13:15:22,346 - INFO - OPENED LONG at 2099.25 | Stop loss: 2088.738217857143 | Take profit: 2130.7620482142856 +2025-03-10 13:15:22,643 - INFO - CLOSED long at 2100.02 | PnL: 0.04% | $-0.12 +2025-03-10 13:15:22,670 - INFO - OPENED SHORT at 2098.39 | Stop loss: 2108.8974821428574 | Take profit: 2066.890851785714 +2025-03-10 13:15:22,755 - INFO - CLOSED short at 2093.33 | PnL: 0.24% | $0.26 +2025-03-10 13:15:22,755 - INFO - OPENED LONG at 2093.33 | Stop loss: 2082.8478178571427 | Take profit: 2124.7532482142856 +2025-03-10 13:15:22,913 - INFO - CLOSED long at 2083.28 | PnL: -0.48% | $-1.06 +2025-03-10 13:15:22,945 - INFO - OPENED SHORT at 2088.44 | Stop loss: 2098.8977321428574 | Take profit: 2057.090101785714 +2025-03-10 13:15:22,973 - INFO - CLOSED short at 2083.97 | PnL: 0.21% | $0.21 +2025-03-10 13:15:22,973 - INFO - OPENED LONG at 2083.97 | Stop loss: 2073.5346178571426 | Take profit: 2115.2528482142857 +2025-03-10 13:15:22,999 - INFO - CLOSED long at 2085.3 | PnL: 0.06% | $-0.07 +2025-03-10 13:15:23,030 - INFO - OPENED LONG at 2082.44 | Stop loss: 2072.012267857143 | Take profit: 2113.699898214286 +2025-03-10 13:15:23,223 - INFO - CLOSED long at 2083.41 | PnL: 0.05% | $-0.10 +2025-03-10 13:15:23,223 - INFO - OPENED SHORT at 2083.41 | Stop loss: 2093.8425821428573 | Take profit: 2052.135551785714 +2025-03-10 13:15:23,330 - INFO - CLOSED short at 2083.59 | PnL: -0.01% | $-0.20 +2025-03-10 13:15:23,330 - INFO - OPENED LONG at 2083.59 | Stop loss: 2073.1565178571427 | Take profit: 2114.867148214286 +2025-03-10 13:15:23,377 - INFO - CLOSED long at 2086.57 | PnL: 0.14% | $0.08 +2025-03-10 13:15:23,406 - INFO - OPENED LONG at 2085.8 | Stop loss: 2075.355467857143 | Take profit: 2117.110298214286 +2025-03-10 13:15:23,481 - INFO - CLOSED long at 2085.85 | PnL: 0.00% | $-0.18 +2025-03-10 13:15:23,481 - INFO - OPENED SHORT at 2085.85 | Stop loss: 2096.294782142857 | Take profit: 2054.5389517857143 +2025-03-10 13:15:23,508 - INFO - CLOSED short at 2088.66 | PnL: -0.13% | $-0.42 +2025-03-10 13:15:23,508 - INFO - OPENED LONG at 2088.66 | Stop loss: 2078.2011678571425 | Take profit: 2120.0131982142857 +2025-03-10 13:15:23,532 - INFO - CLOSED long at 2088.32 | PnL: -0.02% | $-0.21 +2025-03-10 13:15:23,532 - INFO - OPENED SHORT at 2088.32 | Stop loss: 2098.777132142857 | Take profit: 2056.971901785714 +2025-03-10 13:15:23,567 - INFO - CLOSED short at 2088.1 | PnL: 0.01% | $-0.16 +2025-03-10 13:15:23,567 - INFO - OPENED LONG at 2088.1 | Stop loss: 2077.643967857143 | Take profit: 2119.4447982142856 +2025-03-10 13:15:24,374 - INFO - CLOSED long at 2103.07 | PnL: 0.72% | $1.10 +2025-03-10 13:15:24,432 - INFO - OPENED LONG at 2101.5 | Stop loss: 2090.976967857143 | Take profit: 2133.0457982142857 +2025-03-10 13:15:24,531 - INFO - CLOSED long at 2103.64 | PnL: 0.10% | $0.00 +2025-03-10 13:15:24,574 - INFO - OPENED LONG at 2105.2 | Stop loss: 2094.6584678571426 | Take profit: 2136.8012982142855 +2025-03-10 13:15:24,670 - INFO - Trade Analysis: Win Rate=17.2% in uptrends, 0.0% in downtrends | Avg Win=$0.47, Avg Loss=$-0.39 +2025-03-10 13:15:24,672 - INFO - Episode 18: Reward=135.09, Balance=$91.03, Win Rate=30.6%, Trades=72, Episode PnL=$-5.01, Total PnL=$-361.77, Max Drawdown=10.0%, Pred Accuracy=99.9% +2025-03-10 13:15:24,672 - ERROR - Error in episode 18: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:15:24,672 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:15:24,698 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:15:25,037 - INFO - OPENED LONG at 2046.58 | Stop loss: 2036.3315678571428 | Take profit: 2077.3019982142855 +2025-03-10 13:15:25,999 - INFO - CLOSED long at 2063.01 | PnL: 0.80% | $1.40 +2025-03-10 13:15:25,999 - INFO - OPENED SHORT at 2063.01 | Stop loss: 2073.3405821428573 | Take profit: 2032.0415517857145 +2025-03-10 13:15:26,050 - INFO - CLOSED short at 2060.99 | PnL: 0.10% | $-0.00 +2025-03-10 13:15:26,056 - INFO - OPENED LONG at 2060.99 | Stop loss: 2050.6695178571426 | Take profit: 2091.9281482142856 +2025-03-10 13:15:26,186 - INFO - CLOSED long at 2061.89 | PnL: 0.04% | $-0.11 +2025-03-10 13:15:26,211 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.5600178571426 | Take profit: 2093.8566482142855 +2025-03-10 13:15:26,559 - INFO - CLOSED long at 2065.86 | PnL: 0.14% | $0.09 +2025-03-10 13:15:26,583 - INFO - OPENED LONG at 2070.58 | Stop loss: 2060.2115678571427 | Take profit: 2101.6619982142856 +2025-03-10 13:15:27,251 - INFO - CLOSED long at 2070.7 | PnL: 0.01% | $-0.19 +2025-03-10 13:15:27,251 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.069032142857 | Take profit: 2039.6162017857139 +2025-03-10 13:15:27,280 - INFO - CLOSED short at 2069.34 | PnL: 0.07% | $-0.07 +2025-03-10 13:15:27,280 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.977767857143 | Take profit: 2100.4033982142855 +2025-03-10 13:15:27,353 - INFO - CLOSED long at 2067.6 | PnL: -0.08% | $-0.37 +2025-03-10 13:15:27,382 - INFO - OPENED LONG at 2067.51 | Stop loss: 2057.156917857143 | Take profit: 2098.5459482142855 +2025-03-10 13:15:27,434 - INFO - CLOSED long at 2066.39 | PnL: -0.05% | $-0.31 +2025-03-10 13:15:27,434 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.737482142857 | Take profit: 2035.3708517857142 +2025-03-10 13:15:27,468 - INFO - CLOSED short at 2065.99 | PnL: 0.02% | $-0.16 +2025-03-10 13:15:27,469 - INFO - OPENED LONG at 2065.99 | Stop loss: 2055.6445178571425 | Take profit: 2097.0031482142854 +2025-03-10 13:15:27,711 - INFO - CLOSED long at 2068.9 | PnL: 0.14% | $0.08 +2025-03-10 13:15:27,711 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.260032142857 | Take profit: 2037.8432017857144 +2025-03-10 13:15:27,753 - INFO - CLOSED short at 2068.51 | PnL: 0.02% | $-0.16 +2025-03-10 13:15:27,755 - INFO - OPENED LONG at 2068.51 | Stop loss: 2058.151917857143 | Take profit: 2099.560948214286 +2025-03-10 13:15:28,129 - INFO - CLOSED long at 2072.15 | PnL: 0.18% | $0.15 +2025-03-10 13:15:28,129 - INFO - OPENED SHORT at 2072.15 | Stop loss: 2082.5262821428573 | Take profit: 2041.0444517857145 +2025-03-10 13:15:28,160 - INFO - CLOSED short at 2074.29 | PnL: -0.10% | $-0.40 +2025-03-10 13:15:28,161 - INFO - OPENED LONG at 2074.29 | Stop loss: 2063.903017857143 | Take profit: 2105.4276482142855 +2025-03-10 13:15:28,184 - INFO - CLOSED long at 2073.9 | PnL: -0.02% | $-0.24 +2025-03-10 13:15:28,211 - INFO - OPENED LONG at 2071.92 | Stop loss: 2061.544867857143 | Take profit: 2103.0220982142855 +2025-03-10 13:15:28,592 - INFO - CLOSED long at 2068.58 | PnL: -0.16% | $-0.52 +2025-03-10 13:15:28,616 - INFO - OPENED SHORT at 2068.8 | Stop loss: 2079.159532142857 | Take profit: 2037.7447017857144 +2025-03-10 13:15:28,644 - INFO - CLOSED short at 2069.34 | PnL: -0.03% | $-0.25 +2025-03-10 13:15:28,644 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.977767857143 | Take profit: 2100.4033982142855 +2025-03-10 13:15:28,829 - INFO - CLOSED long at 2070.4 | PnL: 0.05% | $-0.10 +2025-03-10 13:15:28,829 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7675321428574 | Take profit: 2039.3207017857144 +2025-03-10 13:15:28,863 - INFO - CLOSED short at 2070.73 | PnL: -0.02% | $-0.23 +2025-03-10 13:15:28,864 - INFO - OPENED LONG at 2070.73 | Stop loss: 2060.360817857143 | Take profit: 2101.8142482142857 +2025-03-10 13:15:29,437 - INFO - CLOSED long at 2062.65 | PnL: -0.39% | $-0.96 +2025-03-10 13:15:29,437 - INFO - OPENED SHORT at 2062.65 | Stop loss: 2072.978782142857 | Take profit: 2031.6869517857142 +2025-03-10 13:15:29,464 - INFO - CLOSED short at 2061.78 | PnL: 0.04% | $-0.11 +2025-03-10 13:15:29,493 - INFO - OPENED LONG at 2059.59 | Stop loss: 2049.276517857143 | Take profit: 2090.507148214286 +2025-03-10 13:15:29,692 - INFO - CLOSED long at 2066.09 | PnL: 0.32% | $0.42 +2025-03-10 13:15:29,746 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.744067857143 | Take profit: 2095.0644982142853 +2025-03-10 13:15:29,910 - INFO - CLOSED long at 2060.9 | PnL: -0.15% | $-0.49 +2025-03-10 13:15:29,910 - INFO - OPENED SHORT at 2060.9 | Stop loss: 2071.2200321428572 | Take profit: 2029.9632017857143 +2025-03-10 13:15:29,944 - INFO - CLOSED short at 2060.65 | PnL: 0.01% | $-0.17 +2025-03-10 13:15:29,944 - INFO - OPENED LONG at 2060.65 | Stop loss: 2050.3312178571427 | Take profit: 2091.583048214286 +2025-03-10 13:15:29,967 - INFO - CLOSED long at 2058.89 | PnL: -0.09% | $-0.36 +2025-03-10 13:15:29,967 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.199982142857 | Take profit: 2027.9833517857144 +2025-03-10 13:15:30,035 - INFO - CLOSED short at 2060.31 | PnL: -0.07% | $-0.33 +2025-03-10 13:15:30,035 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.992917857143 | Take profit: 2091.237948214286 +2025-03-10 13:15:30,209 - INFO - CLOSED long at 2062.61 | PnL: 0.11% | $0.02 +2025-03-10 13:15:30,210 - INFO - OPENED SHORT at 2062.61 | Stop loss: 2072.9385821428573 | Take profit: 2031.6475517857143 +2025-03-10 13:15:30,240 - INFO - CLOSED short at 2060.91 | PnL: 0.08% | $-0.03 +2025-03-10 13:15:30,241 - INFO - OPENED LONG at 2060.91 | Stop loss: 2050.5899178571426 | Take profit: 2091.8469482142855 +2025-03-10 13:15:30,271 - INFO - CLOSED long at 2060.3 | PnL: -0.03% | $-0.25 +2025-03-10 13:15:30,303 - INFO - OPENED LONG at 2061.13 | Stop loss: 2050.808817857143 | Take profit: 2092.0702482142856 +2025-03-10 13:15:30,706 - INFO - CLOSED long at 2063.0 | PnL: 0.09% | $-0.02 +2025-03-10 13:15:30,736 - INFO - OPENED LONG at 2062.6 | Stop loss: 2052.271467857143 | Take profit: 2093.5622982142854 +2025-03-10 13:15:30,798 - INFO - CLOSED long at 2061.7 | PnL: -0.04% | $-0.27 +2025-03-10 13:15:30,798 - INFO - OPENED SHORT at 2061.7 | Stop loss: 2072.024032142857 | Take profit: 2030.751201785714 +2025-03-10 13:15:30,870 - INFO - CLOSED short at 2060.7 | PnL: 0.05% | $-0.10 +2025-03-10 13:15:30,870 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3809678571424 | Take profit: 2091.633798214286 +2025-03-10 13:15:30,984 - INFO - CLOSED long at 2059.61 | PnL: -0.05% | $-0.29 +2025-03-10 13:15:30,984 - INFO - OPENED SHORT at 2059.61 | Stop loss: 2069.9235821428574 | Take profit: 2028.6925517857144 +2025-03-10 13:15:31,013 - INFO - CLOSED short at 2059.16 | PnL: 0.02% | $-0.15 +2025-03-10 13:15:31,013 - INFO - OPENED LONG at 2059.16 | Stop loss: 2048.8486678571426 | Take profit: 2090.0706982142856 +2025-03-10 13:15:31,366 - INFO - CLOSED long at 2054.89 | PnL: -0.21% | $-0.58 +2025-03-10 13:15:31,366 - INFO - OPENED SHORT at 2054.89 | Stop loss: 2065.1799821428567 | Take profit: 2024.043351785714 +2025-03-10 13:15:31,392 - INFO - CLOSED short at 2054.83 | PnL: 0.00% | $-0.18 +2025-03-10 13:15:31,392 - INFO - OPENED LONG at 2054.83 | Stop loss: 2044.5403178571428 | Take profit: 2085.6757482142852 +2025-03-10 13:15:31,676 - INFO - CLOSED long at 2063.4 | PnL: 0.42% | $0.60 +2025-03-10 13:15:31,740 - INFO - OPENED LONG at 2066.36 | Stop loss: 2056.0126678571432 | Take profit: 2097.3786982142856 +2025-03-10 13:15:31,796 - INFO - CLOSED long at 2063.9 | PnL: -0.12% | $-0.41 +2025-03-10 13:15:31,829 - INFO - OPENED LONG at 2064.49 | Stop loss: 2054.1520178571427 | Take profit: 2095.480648214286 +2025-03-10 13:15:32,319 - INFO - CLOSED long at 2070.0 | PnL: 0.27% | $0.31 +2025-03-10 13:15:32,319 - INFO - OPENED SHORT at 2070.0 | Stop loss: 2080.365532142857 | Take profit: 2038.9267017857142 +2025-03-10 13:15:32,350 - INFO - CLOSED short at 2068.15 | PnL: 0.09% | $-0.02 +2025-03-10 13:15:32,350 - INFO - OPENED LONG at 2068.15 | Stop loss: 2057.793717857143 | Take profit: 2099.1955482142857 +2025-03-10 13:15:32,497 - INFO - CLOSED long at 2069.03 | PnL: 0.04% | $-0.11 +2025-03-10 13:15:32,497 - INFO - OPENED SHORT at 2069.03 | Stop loss: 2079.3906821428573 | Take profit: 2037.9712517857145 +2025-03-10 13:15:32,568 - INFO - CLOSED short at 2067.44 | PnL: 0.08% | $-0.04 +2025-03-10 13:15:32,568 - INFO - OPENED LONG at 2067.44 | Stop loss: 2057.0872678571427 | Take profit: 2098.4748982142855 +2025-03-10 13:15:32,591 - INFO - CLOSED long at 2068.79 | PnL: 0.07% | $-0.07 +2025-03-10 13:15:32,617 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6095178571427 | Take profit: 2104.1081482142854 +2025-03-10 13:15:32,641 - INFO - CLOSED long at 2071.49 | PnL: -0.07% | $-0.33 +2025-03-10 13:15:32,663 - INFO - OPENED LONG at 2069.87 | Stop loss: 2059.505117857143 | Take profit: 2100.9413482142854 +2025-03-10 13:15:33,652 - INFO - CLOSED long at 2073.27 | PnL: 0.16% | $0.12 +2025-03-10 13:15:33,652 - INFO - OPENED SHORT at 2073.27 | Stop loss: 2083.6518821428567 | Take profit: 2042.1476517857143 +2025-03-10 13:15:33,673 - INFO - CLOSED short at 2073.99 | PnL: -0.03% | $-0.25 +2025-03-10 13:15:33,673 - INFO - OPENED LONG at 2073.99 | Stop loss: 2063.6045178571426 | Take profit: 2105.1231482142853 +2025-03-10 13:15:33,823 - INFO - CLOSED long at 2069.97 | PnL: -0.19% | $-0.55 +2025-03-10 13:15:33,823 - INFO - OPENED SHORT at 2069.97 | Stop loss: 2080.335382142857 | Take profit: 2038.897151785714 +2025-03-10 13:15:33,848 - INFO - CLOSED short at 2067.7 | PnL: 0.11% | $0.02 +2025-03-10 13:15:33,848 - INFO - OPENED LONG at 2067.7 | Stop loss: 2057.3459678571426 | Take profit: 2098.7387982142855 +2025-03-10 13:15:33,867 - INFO - CLOSED long at 2067.0 | PnL: -0.03% | $-0.25 +2025-03-10 13:15:33,867 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.350532142857 | Take profit: 2035.9717017857142 +2025-03-10 13:15:33,889 - INFO - CLOSED short at 2067.9 | PnL: -0.04% | $-0.27 +2025-03-10 13:15:33,889 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.544967857143 | Take profit: 2098.941798214286 +2025-03-10 13:15:34,165 - INFO - CLOSED long at 2065.07 | PnL: -0.14% | $-0.44 +2025-03-10 13:15:34,165 - INFO - OPENED SHORT at 2065.07 | Stop loss: 2075.4108821428576 | Take profit: 2034.0706517857145 +2025-03-10 13:15:34,185 - INFO - CLOSED short at 2066.09 | PnL: -0.05% | $-0.28 +2025-03-10 13:15:34,185 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.744017857143 | Take profit: 2097.1046482142856 +2025-03-10 13:15:34,380 - INFO - CLOSED long at 2063.01 | PnL: -0.15% | $-0.46 +2025-03-10 13:15:34,380 - INFO - OPENED SHORT at 2063.01 | Stop loss: 2073.3405821428573 | Take profit: 2032.0415517857145 +2025-03-10 13:15:34,402 - INFO - CLOSED short at 2060.7 | PnL: 0.11% | $0.02 +2025-03-10 13:15:34,403 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3809678571424 | Take profit: 2091.633798214286 +2025-03-10 13:15:34,561 - INFO - STOP LOSS hit for long at 2050.3809678571424 | PnL: -0.50% | $-1.10 +2025-03-10 13:15:34,583 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.2369678571429 | Take profit: 2080.2657982142855 +2025-03-10 13:15:34,673 - INFO - CLOSED long at 2057.11 | PnL: 0.37% | $0.49 +2025-03-10 13:15:34,673 - INFO - OPENED SHORT at 2057.11 | Stop loss: 2067.411082142857 | Take profit: 2026.2300517857145 +2025-03-10 13:15:34,698 - INFO - CLOSED short at 2057.89 | PnL: -0.04% | $-0.25 +2025-03-10 13:15:34,698 - INFO - OPENED LONG at 2057.89 | Stop loss: 2047.5850178571427 | Take profit: 2088.7816482142853 +2025-03-10 13:15:34,717 - INFO - CLOSED long at 2062.83 | PnL: 0.24% | $0.25 +2025-03-10 13:15:34,718 - INFO - OPENED SHORT at 2062.83 | Stop loss: 2073.159682142857 | Take profit: 2031.8642517857143 +2025-03-10 13:15:34,742 - INFO - CLOSED short at 2063.9 | PnL: -0.05% | $-0.28 +2025-03-10 13:15:34,743 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.564967857143 | Take profit: 2094.881798214286 +2025-03-10 13:15:35,118 - INFO - CLOSED long at 2069.34 | PnL: 0.26% | $0.30 +2025-03-10 13:15:35,145 - INFO - OPENED SHORT at 2069.81 | Stop loss: 2080.1745821428567 | Take profit: 2038.7395517857142 +2025-03-10 13:15:35,170 - INFO - CLOSED short at 2070.41 | PnL: -0.03% | $-0.23 +2025-03-10 13:15:35,170 - INFO - OPENED LONG at 2070.41 | Stop loss: 2060.042417857143 | Take profit: 2101.489448214286 +2025-03-10 13:15:35,427 - INFO - TAKE PROFIT hit for long at 2101.489448214286 | PnL: 1.50% | $2.55 +2025-03-10 13:15:35,458 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.0309678571425 | Take profit: 2162.6837982142856 +2025-03-10 13:15:35,824 - INFO - STOP LOSS hit for long at 2120.0309678571425 | PnL: -0.50% | $-1.12 +2025-03-10 13:15:35,851 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3148178571428 | Take profit: 2151.752248214286 +2025-03-10 13:15:36,011 - INFO - STOP LOSS hit for long at 2109.3148178571428 | PnL: -0.50% | $-1.11 +2025-03-10 13:15:36,040 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.0314678571426 | Take profit: 2142.282298214285 +2025-03-10 13:15:36,407 - INFO - CLOSED long at 2120.81 | PnL: 0.48% | $0.70 +2025-03-10 13:15:36,440 - INFO - OPENED LONG at 2116.48 | Stop loss: 2105.882067857143 | Take profit: 2148.250498214286 +2025-03-10 13:15:36,598 - INFO - STOP LOSS hit for long at 2105.882067857143 | PnL: -0.50% | $-1.10 +2025-03-10 13:15:36,632 - INFO - OPENED SHORT at 2100.5 | Stop loss: 2111.0180321428575 | Take profit: 2068.969201785714 +2025-03-10 13:15:36,760 - INFO - CLOSED short at 2098.1 | PnL: 0.11% | $0.03 +2025-03-10 13:15:36,761 - INFO - OPENED LONG at 2098.1 | Stop loss: 2087.5939678571426 | Take profit: 2129.5947982142857 +2025-03-10 13:15:37,130 - INFO - CLOSED long at 2101.51 | PnL: 0.16% | $0.11 +2025-03-10 13:15:37,130 - INFO - OPENED SHORT at 2101.51 | Stop loss: 2112.0330821428574 | Take profit: 2069.964051785714 +2025-03-10 13:15:37,175 - INFO - CLOSED short at 2099.59 | PnL: 0.09% | $-0.02 +2025-03-10 13:15:37,175 - INFO - OPENED LONG at 2099.59 | Stop loss: 2089.0765178571432 | Take profit: 2131.1071482142856 +2025-03-10 13:15:37,306 - INFO - CLOSED long at 2093.33 | PnL: -0.30% | $-0.72 +2025-03-10 13:15:37,333 - INFO - OPENED LONG at 2092.46 | Stop loss: 2081.982167857143 | Take profit: 2123.8701982142857 +2025-03-10 13:15:37,740 - INFO - STOP LOSS hit for long at 2081.982167857143 | PnL: -0.50% | $-1.08 +2025-03-10 13:15:37,768 - INFO - OPENED LONG at 2080.38 | Stop loss: 2069.962567857143 | Take profit: 2111.6089982142857 +2025-03-10 13:15:38,423 - INFO - CLOSED long at 2085.67 | PnL: 0.25% | $0.27 +2025-03-10 13:15:38,423 - INFO - OPENED SHORT at 2085.67 | Stop loss: 2096.113882142857 | Take profit: 2054.3616517857145 +2025-03-10 13:15:38,443 - INFO - CLOSED short at 2089.2 | PnL: -0.17% | $-0.48 +2025-03-10 13:15:38,443 - INFO - OPENED LONG at 2089.2 | Stop loss: 2078.738467857143 | Take profit: 2120.5612982142857 +2025-03-10 13:15:38,582 - INFO - CLOSED long at 2099.99 | PnL: 0.52% | $0.74 +2025-03-10 13:15:38,584 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.505482142857 | Take profit: 2068.466851785714 +2025-03-10 13:15:38,621 - INFO - CLOSED short at 2101.64 | PnL: -0.08% | $-0.32 +2025-03-10 13:15:38,621 - INFO - OPENED LONG at 2101.64 | Stop loss: 2091.1162678571427 | Take profit: 2133.1878982142857 +2025-03-10 13:15:38,672 - INFO - CLOSED long at 2097.11 | PnL: -0.22% | $-0.56 +2025-03-10 13:15:38,672 - INFO - OPENED SHORT at 2097.11 | Stop loss: 2107.611082142857 | Take profit: 2065.6300517857144 +2025-03-10 13:15:38,713 - INFO - CLOSED short at 2098.49 | PnL: -0.07% | $-0.29 +2025-03-10 13:15:38,713 - INFO - OPENED LONG at 2098.49 | Stop loss: 2087.9820178571426 | Take profit: 2129.9906482142856 +2025-03-10 13:15:38,784 - INFO - CLOSED long at 2100.89 | PnL: 0.11% | $0.03 +2025-03-10 13:15:38,784 - INFO - OPENED SHORT at 2100.89 | Stop loss: 2111.409982142857 | Take profit: 2069.353351785714 +2025-03-10 13:15:38,808 - INFO - CLOSED short at 2099.73 | PnL: 0.06% | $-0.08 +2025-03-10 13:15:38,809 - INFO - OPENED LONG at 2099.73 | Stop loss: 2089.215817857143 | Take profit: 2131.249248214286 +2025-03-10 13:15:38,933 - INFO - CLOSED long at 2101.5 | PnL: 0.08% | $-0.03 +2025-03-10 13:15:38,958 - INFO - OPENED LONG at 2105.83 | Stop loss: 2095.2853178571427 | Take profit: 2137.4407482142856 +2025-03-10 13:15:39,152 - INFO - Trade Analysis: Win Rate=11.4% in uptrends, 0.0% in downtrends | Avg Win=$0.41, Avg Loss=$-0.34 +2025-03-10 13:15:39,153 - INFO - Episode 19: Reward=124.61, Balance=$89.03, Win Rate=26.6%, Trades=79, Episode PnL=$-9.03, Total PnL=$-372.73, Max Drawdown=12.2%, Pred Accuracy=99.9% +2025-03-10 13:15:39,153 - ERROR - Error in episode 19: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:15:39,155 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + f"Max Drawdown={env.max_drawdown*100:.1f}%, Pred Accuracy={prediction_accuracy:.1f}%") + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:15:39,177 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:15:39,395 - INFO - OPENED LONG at 2046.58 | Stop loss: 2036.3315678571428 | Take profit: 2077.3019982142855 +2025-03-10 13:15:39,643 - INFO - CLOSED long at 2049.89 | PnL: 0.16% | $0.12 +2025-03-10 13:15:39,643 - INFO - OPENED SHORT at 2049.89 | Stop loss: 2060.154982142857 | Take profit: 2019.1183517857141 +2025-03-10 13:15:39,676 - INFO - CLOSED short at 2051.11 | PnL: -0.06% | $-0.32 +2025-03-10 13:15:39,676 - INFO - OPENED LONG at 2051.11 | Stop loss: 2040.8389178571429 | Take profit: 2081.899948214286 +2025-03-10 13:15:40,348 - INFO - CLOSED long at 2064.32 | PnL: 0.64% | $1.08 +2025-03-10 13:15:40,373 - INFO - OPENED LONG at 2065.86 | Stop loss: 2055.515167857143 | Take profit: 2096.871198214286 +2025-03-10 13:15:40,604 - INFO - CLOSED long at 2067.69 | PnL: 0.09% | $-0.02 +2025-03-10 13:15:40,626 - INFO - OPENED LONG at 2070.26 | Stop loss: 2059.893167857143 | Take profit: 2101.3371982142858 +2025-03-10 13:15:41,086 - INFO - CLOSED long at 2067.51 | PnL: -0.13% | $-0.47 +2025-03-10 13:15:41,087 - INFO - OPENED SHORT at 2067.51 | Stop loss: 2077.8630821428574 | Take profit: 2036.4740517857144 +2025-03-10 13:15:41,112 - INFO - CLOSED short at 2069.01 | PnL: -0.07% | $-0.34 +2025-03-10 13:15:41,112 - INFO - OPENED LONG at 2069.01 | Stop loss: 2058.6494178571434 | Take profit: 2100.068448214286 +2025-03-10 13:15:41,233 - INFO - CLOSED long at 2065.08 | PnL: -0.19% | $-0.58 +2025-03-10 13:15:41,262 - INFO - OPENED LONG at 2066.18 | Stop loss: 2055.8335678571425 | Take profit: 2097.1959982142853 +2025-03-10 13:15:41,380 - INFO - CLOSED long at 2069.7 | PnL: 0.17% | $0.14 +2025-03-10 13:15:41,403 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.032467857143 | Take profit: 2101.479298214286 +2025-03-10 13:15:41,543 - INFO - CLOSED long at 2072.7 | PnL: 0.11% | $0.02 +2025-03-10 13:15:41,567 - INFO - OPENED LONG at 2072.15 | Stop loss: 2061.773717857143 | Take profit: 2103.2555482142857 +2025-03-10 13:15:41,607 - INFO - CLOSED long at 2073.9 | PnL: 0.08% | $-0.03 +2025-03-10 13:15:41,607 - INFO - OPENED SHORT at 2073.9 | Stop loss: 2084.2850321428573 | Take profit: 2042.7682017857144 +2025-03-10 13:15:41,649 - INFO - CLOSED short at 2070.4 | PnL: 0.17% | $0.14 +2025-03-10 13:15:41,649 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.032467857143 | Take profit: 2101.479298214286 +2025-03-10 13:15:41,916 - INFO - CLOSED long at 2065.26 | PnL: -0.25% | $-0.69 +2025-03-10 13:15:41,948 - INFO - OPENED LONG at 2067.89 | Stop loss: 2057.535017857143 | Take profit: 2098.9316482142854 +2025-03-10 13:15:42,064 - INFO - CLOSED long at 2067.59 | PnL: -0.01% | $-0.23 +2025-03-10 13:15:42,066 - INFO - OPENED SHORT at 2067.59 | Stop loss: 2077.943482142857 | Take profit: 2036.5528517857142 +2025-03-10 13:15:42,094 - INFO - CLOSED short at 2069.2 | PnL: -0.08% | $-0.35 +2025-03-10 13:15:42,094 - INFO - OPENED LONG at 2069.2 | Stop loss: 2058.8384678571424 | Take profit: 2100.2612982142855 +2025-03-10 13:15:42,284 - INFO - CLOSED long at 2067.84 | PnL: -0.07% | $-0.32 +2025-03-10 13:15:42,284 - INFO - OPENED SHORT at 2067.84 | Stop loss: 2078.1947321428574 | Take profit: 2036.7991017857144 +2025-03-10 13:15:42,309 - INFO - CLOSED short at 2067.11 | PnL: 0.04% | $-0.13 +2025-03-10 13:15:42,310 - INFO - OPENED LONG at 2067.11 | Stop loss: 2056.758917857143 | Take profit: 2098.139948214286 +2025-03-10 13:15:42,620 - INFO - CLOSED long at 2065.26 | PnL: -0.09% | $-0.37 +2025-03-10 13:15:42,645 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.5600178571426 | Take profit: 2093.8566482142855 +2025-03-10 13:15:42,786 - INFO - CLOSED long at 2066.24 | PnL: 0.16% | $0.12 +2025-03-10 13:15:42,786 - INFO - OPENED SHORT at 2066.24 | Stop loss: 2076.586732142857 | Take profit: 2035.223101785714 +2025-03-10 13:15:42,805 - INFO - CLOSED short at 2067.1 | PnL: -0.04% | $-0.27 +2025-03-10 13:15:42,805 - INFO - OPENED LONG at 2067.1 | Stop loss: 2056.748967857143 | Take profit: 2098.1297982142855 +2025-03-10 13:15:42,843 - INFO - CLOSED long at 2066.09 | PnL: -0.05% | $-0.29 +2025-03-10 13:15:42,868 - INFO - OPENED LONG at 2064.45 | Stop loss: 2054.1122178571427 | Take profit: 2095.4400482142855 +2025-03-10 13:15:44,146 - INFO - CLOSED long at 2058.15 | PnL: -0.31% | $-0.78 +2025-03-10 13:15:44,146 - INFO - OPENED SHORT at 2058.15 | Stop loss: 2068.4562821428576 | Take profit: 2027.2544517857145 +2025-03-10 13:15:44,180 - INFO - CLOSED short at 2059.8 | PnL: -0.08% | $-0.34 +2025-03-10 13:15:44,181 - INFO - OPENED LONG at 2059.8 | Stop loss: 2049.4854678571432 | Take profit: 2090.720298214286 +2025-03-10 13:15:44,538 - INFO - CLOSED long at 2067.33 | PnL: 0.37% | $0.51 +2025-03-10 13:15:44,575 - INFO - OPENED LONG at 2067.01 | Stop loss: 2056.659417857143 | Take profit: 2098.038448214286 +2025-03-10 13:15:44,622 - INFO - CLOSED long at 2069.79 | PnL: 0.13% | $0.07 +2025-03-10 13:15:44,622 - INFO - OPENED SHORT at 2069.79 | Stop loss: 2080.154482142857 | Take profit: 2038.7198517857141 +2025-03-10 13:15:44,644 - INFO - CLOSED short at 2072.0 | PnL: -0.11% | $-0.40 +2025-03-10 13:15:44,645 - INFO - OPENED LONG at 2072.0 | Stop loss: 2061.624467857143 | Take profit: 2103.1032982142856 +2025-03-10 13:15:45,990 - INFO - CLOSED long at 2068.67 | PnL: -0.16% | $-0.50 +2025-03-10 13:15:45,990 - INFO - OPENED SHORT at 2068.67 | Stop loss: 2079.028882142857 | Take profit: 2037.6166517857143 +2025-03-10 13:15:46,030 - INFO - CLOSED short at 2070.67 | PnL: -0.10% | $-0.37 +2025-03-10 13:15:46,036 - INFO - OPENED LONG at 2070.67 | Stop loss: 2060.301117857143 | Take profit: 2101.753348214286 +2025-03-10 13:15:46,119 - INFO - CLOSED long at 2071.61 | PnL: 0.05% | $-0.10 +2025-03-10 13:15:46,162 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.982617857143 | Take profit: 2105.508848214286 +2025-03-10 13:15:47,020 - INFO - CLOSED long at 2063.39 | PnL: -0.53% | $-1.19 +2025-03-10 13:15:47,020 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.722482142857 | Take profit: 2032.415851785714 +2025-03-10 13:15:47,046 - INFO - CLOSED short at 2062.34 | PnL: 0.05% | $-0.09 +2025-03-10 13:15:47,046 - INFO - OPENED LONG at 2062.34 | Stop loss: 2052.012767857143 | Take profit: 2093.2983982142855 +2025-03-10 13:15:47,381 - INFO - CLOSED long at 2059.2 | PnL: -0.15% | $-0.47 +2025-03-10 13:15:47,381 - INFO - OPENED SHORT at 2059.2 | Stop loss: 2069.511532142857 | Take profit: 2028.288701785714 +2025-03-10 13:15:47,403 - INFO - CLOSED short at 2058.09 | PnL: 0.05% | $-0.09 +2025-03-10 13:15:47,403 - INFO - OPENED LONG at 2058.09 | Stop loss: 2047.784017857143 | Take profit: 2088.9846482142857 +2025-03-10 13:15:47,753 - INFO - CLOSED long at 2063.9 | PnL: 0.28% | $0.34 +2025-03-10 13:15:47,782 - INFO - OPENED LONG at 2065.1 | Stop loss: 2054.758967857143 | Take profit: 2096.099798214286 +2025-03-10 13:15:47,994 - INFO - CLOSED long at 2059.9 | PnL: -0.25% | $-0.65 +2025-03-10 13:15:47,994 - INFO - OPENED SHORT at 2059.9 | Stop loss: 2070.215032142857 | Take profit: 2028.9782017857144 +2025-03-10 13:15:48,047 - INFO - CLOSED short at 2060.7 | PnL: -0.04% | $-0.26 +2025-03-10 13:15:48,048 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3809678571424 | Take profit: 2091.633798214286 +2025-03-10 13:15:48,215 - INFO - CLOSED long at 2070.24 | PnL: 0.46% | $0.67 +2025-03-10 13:15:48,264 - INFO - OPENED LONG at 2069.81 | Stop loss: 2059.4454178571427 | Take profit: 2100.8804482142855 +2025-03-10 13:15:48,507 - INFO - CLOSED long at 2076.08 | PnL: 0.30% | $0.38 +2025-03-10 13:15:48,507 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.475932142857 | Take profit: 2044.9155017857142 +2025-03-10 13:15:48,560 - INFO - CLOSED short at 2077.61 | PnL: -0.07% | $-0.32 +2025-03-10 13:15:48,560 - INFO - OPENED LONG at 2077.61 | Stop loss: 2067.206417857143 | Take profit: 2108.797448214286 +2025-03-10 13:15:48,659 - INFO - TAKE PROFIT hit for long at 2108.797448214286 | PnL: 1.50% | $2.60 +2025-03-10 13:15:48,686 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.826767857143 | Take profit: 2171.6563982142857 +2025-03-10 13:15:48,878 - INFO - CLOSED long at 2142.68 | PnL: 0.15% | $0.09 +2025-03-10 13:15:48,918 - INFO - OPENED LONG at 2140.01 | Stop loss: 2129.294417857143 | Take profit: 2172.133448214286 +2025-03-10 13:15:48,978 - INFO - STOP LOSS hit for long at 2129.294417857143 | PnL: -0.50% | $-1.15 +2025-03-10 13:15:49,003 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.647967857143 | Take profit: 2159.2327982142856 +2025-03-10 13:15:49,070 - INFO - CLOSED long at 2120.15 | PnL: -0.34% | $-0.82 +2025-03-10 13:15:49,112 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3148178571428 | Take profit: 2151.752248214286 +2025-03-10 13:15:49,285 - INFO - STOP LOSS hit for long at 2109.3148178571428 | PnL: -0.50% | $-1.12 +2025-03-10 13:15:49,320 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.0314678571426 | Take profit: 2142.282298214285 +2025-03-10 13:15:49,730 - INFO - STOP LOSS hit for long at 2100.0314678571426 | PnL: -0.50% | $-1.11 +2025-03-10 13:15:49,776 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.016817857143 | Take profit: 2131.046248214286 +2025-03-10 13:15:50,104 - INFO - CLOSED long at 2101.51 | PnL: 0.09% | $-0.01 +2025-03-10 13:15:50,148 - INFO - OPENED LONG at 2099.59 | Stop loss: 2089.0765178571432 | Take profit: 2131.1071482142856 +2025-03-10 13:15:50,201 - INFO - CLOSED long at 2098.39 | PnL: -0.06% | $-0.29 +2025-03-10 13:15:50,202 - INFO - OPENED SHORT at 2098.39 | Stop loss: 2108.8974821428574 | Take profit: 2066.890851785714 +2025-03-10 13:15:50,226 - INFO - CLOSED short at 2095.29 | PnL: 0.15% | $0.09 +2025-03-10 13:15:50,226 - INFO - OPENED LONG at 2095.29 | Stop loss: 2084.798017857143 | Take profit: 2126.742648214286 +2025-03-10 13:15:50,339 - INFO - CLOSED long at 2094.72 | PnL: -0.03% | $-0.23 +2025-03-10 13:15:50,363 - INFO - OPENED LONG at 2094.08 | Stop loss: 2083.594067857143 | Take profit: 2125.5144982142856 +2025-03-10 13:15:50,441 - INFO - STOP LOSS hit for long at 2083.594067857143 | PnL: -0.50% | $-1.09 +2025-03-10 13:15:50,481 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.9822678571427 | Take profit: 2119.789898214286 +2025-03-10 13:15:50,578 - INFO - CLOSED long at 2082.44 | PnL: -0.29% | $-0.70 +2025-03-10 13:15:50,601 - INFO - OPENED LONG at 2081.49 | Stop loss: 2071.0670178571427 | Take profit: 2112.7356482142854 +2025-03-10 13:15:50,800 - INFO - CLOSED long at 2084.72 | PnL: 0.16% | $0.10 +2025-03-10 13:15:50,844 - INFO - OPENED LONG at 2085.83 | Stop loss: 2075.3853178571426 | Take profit: 2117.140748214286 +2025-03-10 13:15:50,930 - INFO - CLOSED long at 2088.66 | PnL: 0.14% | $0.06 +2025-03-10 13:15:50,933 - INFO - OPENED SHORT at 2088.66 | Stop loss: 2099.1188321428567 | Take profit: 2057.306801785714 +2025-03-10 13:15:50,977 - INFO - CLOSED short at 2088.32 | PnL: 0.02% | $-0.15 +2025-03-10 13:15:50,977 - INFO - OPENED LONG at 2088.32 | Stop loss: 2077.862867857143 | Take profit: 2119.6680982142857 +2025-03-10 13:15:51,793 - INFO - CLOSED long at 2101.5 | PnL: 0.63% | $0.95 +2025-03-10 13:15:51,836 - INFO - OPENED LONG at 2105.83 | Stop loss: 2095.2853178571427 | Take profit: 2137.4407482142856 +2025-03-10 13:15:51,997 - INFO - Trade Analysis: Win Rate=15.0% in uptrends, 0.0% in downtrends | Avg Win=$0.44, Avg Loss=$-0.45 +2025-03-10 13:15:51,997 - INFO - Episode 20: Reward=149.73, Balance=$90.81, Win Rate=31.5%, Trades=54, Episode PnL=$-5.01, Total PnL=$-381.92, Max Drawdown=10.9%, Pred Accuracy=99.8% +2025-03-10 13:15:51,997 - ERROR - Error in episode 20: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:15:51,997 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + f"Max Drawdown={env.max_drawdown*100:.1f}%, Pred Accuracy={prediction_accuracy:.1f}%") + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:15:52,027 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:15:52,238 - INFO - OPENED LONG at 2046.58 | Stop loss: 2036.3315678571428 | Take profit: 2077.3019982142855 +2025-03-10 13:15:52,723 - INFO - CLOSED long at 2060.13 | PnL: 0.66% | $1.12 +2025-03-10 13:15:52,723 - INFO - OPENED SHORT at 2060.13 | Stop loss: 2070.446182142857 | Take profit: 2029.2047517857145 +2025-03-10 13:15:52,746 - INFO - CLOSED short at 2059.7 | PnL: 0.02% | $-0.16 +2025-03-10 13:15:52,746 - INFO - OPENED LONG at 2059.7 | Stop loss: 2049.3859678571425 | Take profit: 2090.6187982142856 +2025-03-10 13:15:53,017 - INFO - CLOSED long at 2064.69 | PnL: 0.24% | $0.29 +2025-03-10 13:15:53,043 - INFO - OPENED LONG at 2063.01 | Stop loss: 2052.679417857143 | Take profit: 2093.978448214286 +2025-03-10 13:15:53,091 - INFO - CLOSED long at 2058.3 | PnL: -0.23% | $-0.66 +2025-03-10 13:15:53,091 - INFO - OPENED SHORT at 2058.3 | Stop loss: 2068.6070321428574 | Take profit: 2027.4022017857146 +2025-03-10 13:15:53,118 - INFO - CLOSED short at 2060.0 | PnL: -0.08% | $-0.36 +2025-03-10 13:15:53,118 - INFO - OPENED LONG at 2060.0 | Stop loss: 2049.684467857143 | Take profit: 2090.9232982142858 +2025-03-10 13:15:53,672 - INFO - CLOSED long at 2071.63 | PnL: 0.56% | $0.92 +2025-03-10 13:15:53,722 - INFO - OPENED LONG at 2070.99 | Stop loss: 2060.6195178571425 | Take profit: 2102.0781482142856 +2025-03-10 13:15:53,969 - INFO - CLOSED long at 2072.91 | PnL: 0.09% | $-0.01 +2025-03-10 13:15:54,011 - INFO - OPENED LONG at 2072.33 | Stop loss: 2061.9528178571427 | Take profit: 2103.4382482142855 +2025-03-10 13:15:54,643 - INFO - CLOSED long at 2066.39 | PnL: -0.29% | $-0.78 +2025-03-10 13:15:54,669 - INFO - OPENED LONG at 2065.99 | Stop loss: 2055.6445178571425 | Take profit: 2097.0031482142854 +2025-03-10 13:15:54,741 - INFO - CLOSED long at 2065.08 | PnL: -0.04% | $-0.29 +2025-03-10 13:15:54,741 - INFO - OPENED SHORT at 2065.08 | Stop loss: 2075.420932142857 | Take profit: 2034.0805017857142 +2025-03-10 13:15:54,765 - INFO - CLOSED short at 2066.18 | PnL: -0.05% | $-0.30 +2025-03-10 13:15:54,766 - INFO - OPENED LONG at 2066.18 | Stop loss: 2055.8335678571425 | Take profit: 2097.1959982142853 +2025-03-10 13:15:55,207 - INFO - CLOSED long at 2072.75 | PnL: 0.32% | $0.43 +2025-03-10 13:15:55,275 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.728917857143 | Take profit: 2104.2299482142857 +2025-03-10 13:15:56,320 - INFO - CLOSED long at 2065.28 | PnL: -0.38% | $-0.95 +2025-03-10 13:15:56,345 - INFO - OPENED LONG at 2066.39 | Stop loss: 2056.0425178571427 | Take profit: 2097.409148214286 +2025-03-10 13:15:57,013 - INFO - CLOSED long at 2064.08 | PnL: -0.11% | $-0.42 +2025-03-10 13:15:57,037 - INFO - OPENED LONG at 2062.71 | Stop loss: 2052.380917857143 | Take profit: 2093.6739482142857 +2025-03-10 13:15:57,222 - INFO - CLOSED long at 2058.89 | PnL: -0.19% | $-0.56 +2025-03-10 13:15:57,259 - INFO - OPENED LONG at 2059.3 | Stop loss: 2048.987967857143 | Take profit: 2090.212798214286 +2025-03-10 13:15:57,426 - INFO - CLOSED long at 2060.91 | PnL: 0.08% | $-0.04 +2025-03-10 13:15:57,443 - INFO - OPENED LONG at 2060.3 | Stop loss: 2049.982967857143 | Take profit: 2091.227798214286 +2025-03-10 13:15:57,521 - INFO - CLOSED long at 2064.1 | PnL: 0.18% | $0.16 +2025-03-10 13:15:57,545 - INFO - OPENED LONG at 2065.36 | Stop loss: 2055.017667857143 | Take profit: 2096.363698214286 +2025-03-10 13:15:57,570 - INFO - CLOSED long at 2064.33 | PnL: -0.05% | $-0.29 +2025-03-10 13:15:57,570 - INFO - OPENED SHORT at 2064.33 | Stop loss: 2074.667182142857 | Take profit: 2033.3417517857142 +2025-03-10 13:15:57,625 - INFO - CLOSED short at 2063.39 | PnL: 0.05% | $-0.11 +2025-03-10 13:15:57,625 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.0575178571426 | Take profit: 2094.3641482142853 +2025-03-10 13:15:57,677 - INFO - CLOSED long at 2064.79 | PnL: 0.07% | $-0.06 +2025-03-10 13:15:57,685 - INFO - OPENED SHORT at 2064.79 | Stop loss: 2075.1294821428573 | Take profit: 2033.7948517857142 +2025-03-10 13:15:57,742 - INFO - CLOSED short at 2065.89 | PnL: -0.05% | $-0.30 +2025-03-10 13:15:57,742 - INFO - OPENED LONG at 2065.89 | Stop loss: 2055.5450178571427 | Take profit: 2096.9016482142856 +2025-03-10 13:15:57,776 - INFO - CLOSED long at 2063.53 | PnL: -0.11% | $-0.42 +2025-03-10 13:15:57,800 - INFO - OPENED LONG at 2063.0 | Stop loss: 2052.6694678571425 | Take profit: 2093.968298214286 +2025-03-10 13:15:57,864 - INFO - CLOSED long at 2061.7 | PnL: -0.06% | $-0.31 +2025-03-10 13:15:57,888 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3809678571424 | Take profit: 2091.633798214286 +2025-03-10 13:15:58,722 - INFO - CLOSED long at 2066.33 | PnL: 0.27% | $0.33 +2025-03-10 13:15:58,723 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6771821428574 | Take profit: 2035.3117517857143 +2025-03-10 13:15:58,751 - INFO - CLOSED short at 2066.34 | PnL: -0.00% | $-0.19 +2025-03-10 13:15:58,751 - INFO - OPENED LONG at 2066.34 | Stop loss: 2055.992767857143 | Take profit: 2097.358398214286 +2025-03-10 13:15:58,998 - INFO - CLOSED long at 2069.79 | PnL: 0.17% | $0.13 +2025-03-10 13:15:58,999 - INFO - OPENED SHORT at 2069.79 | Stop loss: 2080.154482142857 | Take profit: 2038.7198517857141 +2025-03-10 13:15:59,025 - INFO - CLOSED short at 2072.0 | PnL: -0.11% | $-0.40 +2025-03-10 13:15:59,025 - INFO - OPENED LONG at 2072.0 | Stop loss: 2061.624467857143 | Take profit: 2103.1032982142856 +2025-03-10 13:15:59,393 - INFO - CLOSED long at 2069.69 | PnL: -0.11% | $-0.41 +2025-03-10 13:15:59,420 - INFO - OPENED LONG at 2069.03 | Stop loss: 2058.669317857143 | Take profit: 2100.088748214286 +2025-03-10 13:15:59,775 - INFO - CLOSED long at 2063.97 | PnL: -0.24% | $-0.66 +2025-03-10 13:15:59,775 - INFO - OPENED SHORT at 2063.97 | Stop loss: 2074.305382142857 | Take profit: 2032.987151785714 +2025-03-10 13:15:59,802 - INFO - CLOSED short at 2064.5 | PnL: -0.03% | $-0.24 +2025-03-10 13:15:59,802 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.161967857143 | Take profit: 2095.490798214286 +2025-03-10 13:15:59,822 - INFO - CLOSED long at 2065.3 | PnL: 0.04% | $-0.12 +2025-03-10 13:15:59,823 - INFO - OPENED SHORT at 2065.3 | Stop loss: 2075.6420321428573 | Take profit: 2034.2972017857144 +2025-03-10 13:15:59,849 - INFO - CLOSED short at 2064.4 | PnL: 0.04% | $-0.11 +2025-03-10 13:15:59,849 - INFO - OPENED LONG at 2064.4 | Stop loss: 2054.062467857143 | Take profit: 2095.3892982142856 +2025-03-10 13:16:00,208 - INFO - CLOSED long at 2071.59 | PnL: 0.35% | $0.47 +2025-03-10 13:16:00,237 - INFO - OPENED LONG at 2070.2 | Stop loss: 2059.8334678571428 | Take profit: 2101.2762982142854 +2025-03-10 13:16:00,668 - INFO - CLOSED long at 2074.37 | PnL: 0.20% | $0.19 +2025-03-10 13:16:00,709 - INFO - OPENED LONG at 2075.07 | Stop loss: 2064.679117857143 | Take profit: 2106.219348214286 +2025-03-10 13:16:00,812 - INFO - CLOSED long at 2075.32 | PnL: 0.01% | $-0.17 +2025-03-10 13:16:00,859 - INFO - OPENED LONG at 2075.29 | Stop loss: 2064.898017857143 | Take profit: 2106.442648214286 +2025-03-10 13:16:01,263 - INFO - CLOSED long at 2068.1 | PnL: -0.35% | $-0.85 +2025-03-10 13:16:01,263 - INFO - OPENED SHORT at 2068.1 | Stop loss: 2078.456032142857 | Take profit: 2037.0552017857142 +2025-03-10 13:16:01,308 - INFO - CLOSED short at 2069.0 | PnL: -0.04% | $-0.27 +2025-03-10 13:16:01,310 - INFO - OPENED LONG at 2069.0 | Stop loss: 2058.639467857143 | Take profit: 2100.058298214286 +2025-03-10 13:16:01,444 - INFO - CLOSED long at 2065.5 | PnL: -0.17% | $-0.51 +2025-03-10 13:16:01,471 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.355967857143 | Take profit: 2096.7087982142857 +2025-03-10 13:16:02,105 - INFO - STOP LOSS hit for long at 2055.355967857143 | PnL: -0.50% | $-1.12 +2025-03-10 13:16:02,150 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.9484178571429 | Take profit: 2079.971448214286 +2025-03-10 13:16:02,631 - INFO - CLOSED long at 2060.7 | PnL: 0.56% | $0.85 +2025-03-10 13:16:02,631 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.019032142857 | Take profit: 2029.7662017857142 +2025-03-10 13:16:02,650 - INFO - CLOSED short at 2061.84 | PnL: -0.06% | $-0.29 +2025-03-10 13:16:02,655 - INFO - OPENED LONG at 2061.84 | Stop loss: 2051.515267857143 | Take profit: 2092.790898214286 +2025-03-10 13:16:02,697 - INFO - CLOSED long at 2065.72 | PnL: 0.19% | $0.16 +2025-03-10 13:16:02,697 - INFO - OPENED SHORT at 2065.72 | Stop loss: 2076.064132142857 | Take profit: 2034.7109017857142 +2025-03-10 13:16:02,723 - INFO - CLOSED short at 2070.31 | PnL: -0.22% | $-0.60 +2025-03-10 13:16:02,724 - INFO - OPENED LONG at 2070.31 | Stop loss: 2059.942917857143 | Take profit: 2101.3879482142856 +2025-03-10 13:16:02,932 - INFO - CLOSED long at 2074.05 | PnL: 0.18% | $0.15 +2025-03-10 13:16:02,932 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.435782142857 | Take profit: 2042.9159517857145 +2025-03-10 13:16:02,972 - INFO - CLOSED short at 2072.99 | PnL: 0.05% | $-0.09 +2025-03-10 13:16:02,973 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6095178571427 | Take profit: 2104.1081482142854 +2025-03-10 13:16:03,047 - INFO - CLOSED long at 2074.9 | PnL: 0.09% | $-0.01 +2025-03-10 13:16:03,047 - INFO - OPENED SHORT at 2074.9 | Stop loss: 2085.2900321428574 | Take profit: 2043.7532017857143 +2025-03-10 13:16:03,076 - INFO - CLOSED short at 2076.08 | PnL: -0.06% | $-0.29 +2025-03-10 13:16:03,077 - INFO - OPENED LONG at 2076.08 | Stop loss: 2065.684067857143 | Take profit: 2107.2444982142856 +2025-03-10 13:16:03,222 - INFO - TAKE PROFIT hit for long at 2107.2444982142856 | PnL: 1.50% | $2.58 +2025-03-10 13:16:03,293 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.826767857143 | Take profit: 2171.6563982142857 +2025-03-10 13:16:03,517 - INFO - CLOSED long at 2140.01 | PnL: 0.02% | $-0.15 +2025-03-10 13:16:03,518 - INFO - OPENED SHORT at 2140.01 | Stop loss: 2150.725582142857 | Take profit: 2107.8865517857143 +2025-03-10 13:16:03,548 - INFO - CLOSED short at 2134.78 | PnL: 0.24% | $0.27 +2025-03-10 13:16:03,548 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.090567857143 | Take profit: 2166.8249982142856 +2025-03-10 13:16:03,698 - INFO - CLOSED long at 2128.69 | PnL: -0.29% | $-0.73 +2025-03-10 13:16:03,698 - INFO - OPENED SHORT at 2128.69 | Stop loss: 2139.348982142857 | Take profit: 2096.7363517857143 +2025-03-10 13:16:03,759 - INFO - CLOSED short at 2121.09 | PnL: 0.36% | $0.48 +2025-03-10 13:16:03,760 - INFO - OPENED LONG at 2121.09 | Stop loss: 2110.4690178571427 | Take profit: 2152.929648214286 +2025-03-10 13:16:04,162 - INFO - CLOSED long at 2107.43 | PnL: -0.64% | $-1.41 +2025-03-10 13:16:04,190 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.0314678571426 | Take profit: 2142.282298214285 +2025-03-10 13:16:04,288 - INFO - CLOSED long at 2112.46 | PnL: 0.09% | $-0.02 +2025-03-10 13:16:04,321 - INFO - OPENED LONG at 2113.24 | Stop loss: 2102.6582678571426 | Take profit: 2144.961898214285 +2025-03-10 13:16:04,663 - INFO - CLOSED long at 2103.33 | PnL: -0.47% | $-1.06 +2025-03-10 13:16:04,692 - INFO - OPENED LONG at 2100.5 | Stop loss: 2089.981967857143 | Take profit: 2132.0307982142854 +2025-03-10 13:16:04,718 - INFO - CLOSED long at 2090.0 | PnL: -0.50% | $-1.11 +2025-03-10 13:16:04,720 - INFO - OPENED SHORT at 2090.0 | Stop loss: 2100.4655321428572 | Take profit: 2058.6267017857144 +2025-03-10 13:16:04,748 - INFO - CLOSED short at 2099.53 | PnL: -0.46% | $-1.01 +2025-03-10 13:16:04,749 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.016817857143 | Take profit: 2131.046248214286 +2025-03-10 13:16:05,094 - INFO - CLOSED long at 2103.86 | PnL: 0.21% | $0.19 +2025-03-10 13:16:05,122 - INFO - OPENED LONG at 2104.68 | Stop loss: 2094.141067857143 | Take profit: 2136.2734982142856 +2025-03-10 13:16:05,145 - INFO - CLOSED long at 2101.51 | PnL: -0.15% | $-0.45 +2025-03-10 13:16:05,145 - INFO - OPENED SHORT at 2101.51 | Stop loss: 2112.0330821428574 | Take profit: 2069.964051785714 +2025-03-10 13:16:05,171 - INFO - CLOSED short at 2099.59 | PnL: 0.09% | $-0.02 +2025-03-10 13:16:05,171 - INFO - OPENED LONG at 2099.59 | Stop loss: 2089.0765178571432 | Take profit: 2131.1071482142856 +2025-03-10 13:16:05,326 - INFO - CLOSED long at 2095.29 | PnL: -0.20% | $-0.55 +2025-03-10 13:16:05,326 - INFO - OPENED SHORT at 2095.29 | Stop loss: 2105.7819821428575 | Take profit: 2063.8373517857144 +2025-03-10 13:16:05,376 - INFO - CLOSED short at 2093.46 | PnL: 0.09% | $-0.02 +2025-03-10 13:16:05,376 - INFO - OPENED LONG at 2093.46 | Stop loss: 2082.977167857143 | Take profit: 2124.8851982142855 +2025-03-10 13:16:05,403 - INFO - CLOSED long at 2093.33 | PnL: -0.01% | $-0.19 +2025-03-10 13:16:05,425 - INFO - OPENED LONG at 2092.46 | Stop loss: 2081.982167857143 | Take profit: 2123.8701982142857 +2025-03-10 13:16:05,738 - INFO - STOP LOSS hit for long at 2081.982167857143 | PnL: -0.50% | $-1.07 +2025-03-10 13:16:05,772 - INFO - OPENED LONG at 2080.38 | Stop loss: 2069.962567857143 | Take profit: 2111.6089982142857 +2025-03-10 13:16:05,911 - INFO - CLOSED long at 2085.8 | PnL: 0.26% | $0.28 +2025-03-10 13:16:05,934 - INFO - OPENED LONG at 2084.72 | Stop loss: 2074.2808678571428 | Take profit: 2116.0140982142852 +2025-03-10 13:16:06,224 - INFO - CLOSED long at 2087.47 | PnL: 0.13% | $0.06 +2025-03-10 13:16:06,252 - INFO - OPENED LONG at 2087.78 | Stop loss: 2077.325567857143 | Take profit: 2119.1199982142857 +2025-03-10 13:16:06,646 - INFO - CLOSED long at 2101.64 | PnL: 0.66% | $1.00 +2025-03-10 13:16:06,671 - INFO - OPENED LONG at 2097.11 | Stop loss: 2086.608917857143 | Take profit: 2128.589948214286 +2025-03-10 13:16:06,997 - INFO - CLOSED long at 2103.07 | PnL: 0.28% | $0.33 +2025-03-10 13:16:07,024 - INFO - OPENED LONG at 2101.5 | Stop loss: 2090.976967857143 | Take profit: 2133.0457982142857 +2025-03-10 13:16:07,162 - INFO - Trade Analysis: Win Rate=13.6% in uptrends, 0.0% in downtrends | Avg Win=$0.52, Avg Loss=$-0.43 +2025-03-10 13:16:07,163 - INFO - Episode 21: Reward=133.74, Balance=$90.28, Win Rate=29.9%, Trades=67, Episode PnL=$-6.54, Total PnL=$-391.64, Max Drawdown=12.5%, Pred Accuracy=100.0% +2025-03-10 13:16:07,163 - ERROR - Error in episode 21: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:16:07,165 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + f"Max Drawdown={env.max_drawdown*100:.1f}%, Pred Accuracy={prediction_accuracy:.1f}%") + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:16:07,186 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:16:07,553 - INFO - OPENED LONG at 2046.58 | Stop loss: 2036.3315678571428 | Take profit: 2077.3019982142855 +2025-03-10 13:16:07,573 - INFO - CLOSED long at 2047.4 | PnL: 0.04% | $-0.12 +2025-03-10 13:16:07,596 - INFO - OPENED LONG at 2047.2 | Stop loss: 2036.9484678571428 | Take profit: 2077.931298214286 +2025-03-10 13:16:07,663 - INFO - CLOSED long at 2045.79 | PnL: -0.07% | $-0.33 +2025-03-10 13:16:07,686 - INFO - OPENED LONG at 2048.13 | Stop loss: 2037.873817857143 | Take profit: 2078.875248214286 +2025-03-10 13:16:07,813 - INFO - CLOSED long at 2049.89 | PnL: 0.09% | $-0.03 +2025-03-10 13:16:07,854 - INFO - OPENED SHORT at 2051.11 | Stop loss: 2061.3810821428574 | Take profit: 2020.3200517857144 +2025-03-10 13:16:07,897 - INFO - CLOSED short at 2053.26 | PnL: -0.10% | $-0.40 +2025-03-10 13:16:07,898 - INFO - OPENED LONG at 2053.26 | Stop loss: 2042.9781678571433 | Take profit: 2084.082198214286 +2025-03-10 13:16:08,474 - INFO - CLOSED long at 2062.89 | PnL: 0.47% | $0.73 +2025-03-10 13:16:08,494 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.992917857143 | Take profit: 2091.237948214286 +2025-03-10 13:16:08,675 - INFO - CLOSED long at 2061.79 | PnL: 0.07% | $-0.06 +2025-03-10 13:16:08,721 - INFO - OPENED LONG at 2061.18 | Stop loss: 2050.8585678571426 | Take profit: 2092.1209982142855 +2025-03-10 13:16:08,784 - INFO - CLOSED long at 2065.86 | PnL: 0.23% | $0.25 +2025-03-10 13:16:08,806 - INFO - OPENED LONG at 2070.58 | Stop loss: 2060.2115678571427 | Take profit: 2101.6619982142856 +2025-03-10 13:16:08,900 - INFO - CLOSED long at 2070.99 | PnL: 0.02% | $-0.16 +2025-03-10 13:16:08,900 - INFO - OPENED SHORT at 2070.99 | Stop loss: 2081.360482142857 | Take profit: 2039.9018517857141 +2025-03-10 13:16:08,926 - INFO - CLOSED short at 2069.6 | PnL: 0.07% | $-0.07 +2025-03-10 13:16:08,926 - INFO - OPENED LONG at 2069.6 | Stop loss: 2059.236467857143 | Take profit: 2100.6672982142854 +2025-03-10 13:16:08,967 - INFO - CLOSED long at 2068.99 | PnL: -0.03% | $-0.26 +2025-03-10 13:16:08,967 - INFO - OPENED SHORT at 2068.99 | Stop loss: 2079.350482142857 | Take profit: 2037.931851785714 +2025-03-10 13:16:09,014 - INFO - CLOSED short at 2067.9 | PnL: 0.05% | $-0.09 +2025-03-10 13:16:09,016 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.544967857143 | Take profit: 2098.941798214286 +2025-03-10 13:16:09,133 - INFO - CLOSED long at 2071.44 | PnL: 0.17% | $0.14 +2025-03-10 13:16:09,173 - INFO - OPENED LONG at 2073.73 | Stop loss: 2063.3458178571427 | Take profit: 2104.859248214286 +2025-03-10 13:16:09,225 - INFO - CLOSED long at 2072.91 | PnL: -0.04% | $-0.28 +2025-03-10 13:16:09,251 - INFO - OPENED LONG at 2072.33 | Stop loss: 2061.9528178571427 | Take profit: 2103.4382482142855 +2025-03-10 13:16:10,057 - INFO - CLOSED long at 2068.59 | PnL: -0.18% | $-0.55 +2025-03-10 13:16:10,057 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.9484821428573 | Take profit: 2037.5378517857143 +2025-03-10 13:16:10,084 - INFO - CLOSED short at 2069.7 | PnL: -0.05% | $-0.30 +2025-03-10 13:16:10,085 - INFO - OPENED LONG at 2069.7 | Stop loss: 2059.335967857143 | Take profit: 2100.7687982142857 +2025-03-10 13:16:10,146 - INFO - CLOSED long at 2071.4 | PnL: 0.08% | $-0.03 +2025-03-10 13:16:10,207 - INFO - OPENED LONG at 2071.36 | Stop loss: 2060.9876678571427 | Take profit: 2102.453698214286 +2025-03-10 13:16:10,355 - INFO - CLOSED long at 2072.15 | PnL: 0.04% | $-0.12 +2025-03-10 13:16:10,383 - INFO - OPENED LONG at 2074.29 | Stop loss: 2063.903017857143 | Take profit: 2105.4276482142855 +2025-03-10 13:16:10,508 - INFO - CLOSED long at 2069.35 | PnL: -0.24% | $-0.66 +2025-03-10 13:16:10,508 - INFO - OPENED SHORT at 2069.35 | Stop loss: 2079.7122821428575 | Take profit: 2038.2864517857142 +2025-03-10 13:16:10,528 - INFO - CLOSED short at 2068.32 | PnL: 0.05% | $-0.10 +2025-03-10 13:16:10,528 - INFO - OPENED LONG at 2068.32 | Stop loss: 2057.962867857143 | Take profit: 2099.368098214286 +2025-03-10 13:16:10,924 - INFO - CLOSED long at 2067.59 | PnL: -0.04% | $-0.26 +2025-03-10 13:16:10,924 - INFO - OPENED SHORT at 2067.59 | Stop loss: 2077.943482142857 | Take profit: 2036.5528517857142 +2025-03-10 13:16:10,964 - INFO - CLOSED short at 2069.2 | PnL: -0.08% | $-0.34 +2025-03-10 13:16:10,964 - INFO - OPENED LONG at 2069.2 | Stop loss: 2058.8384678571424 | Take profit: 2100.2612982142855 +2025-03-10 13:16:11,458 - INFO - CLOSED long at 2065.28 | PnL: -0.19% | $-0.56 +2025-03-10 13:16:11,516 - INFO - OPENED LONG at 2066.39 | Stop loss: 2056.0425178571427 | Take profit: 2097.409148214286 +2025-03-10 13:16:12,273 - INFO - CLOSED long at 2066.09 | PnL: -0.01% | $-0.22 +2025-03-10 13:16:12,274 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.4359821428575 | Take profit: 2035.0753517857145 +2025-03-10 13:16:12,347 - INFO - CLOSED short at 2064.45 | PnL: 0.08% | $-0.04 +2025-03-10 13:16:12,348 - INFO - OPENED LONG at 2064.45 | Stop loss: 2054.1122178571427 | Take profit: 2095.4400482142855 +2025-03-10 13:16:12,603 - INFO - CLOSED long at 2059.3 | PnL: -0.25% | $-0.67 +2025-03-10 13:16:12,682 - INFO - OPENED LONG at 2061.8 | Stop loss: 2051.475467857143 | Take profit: 2092.7502982142855 +2025-03-10 13:16:13,195 - INFO - CLOSED long at 2059.61 | PnL: -0.11% | $-0.39 +2025-03-10 13:16:13,215 - INFO - OPENED LONG at 2059.16 | Stop loss: 2048.8486678571426 | Take profit: 2090.0706982142856 +2025-03-10 13:16:14,023 - INFO - CLOSED long at 2075.01 | PnL: 0.77% | $1.26 +2025-03-10 13:16:14,023 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.4005821428573 | Take profit: 2043.8615517857145 +2025-03-10 13:16:14,051 - INFO - CLOSED short at 2072.6 | PnL: 0.12% | $0.03 +2025-03-10 13:16:14,052 - INFO - OPENED LONG at 2072.6 | Stop loss: 2062.2214678571427 | Take profit: 2103.712298214286 +2025-03-10 13:16:14,092 - INFO - CLOSED long at 2070.01 | PnL: -0.12% | $-0.43 +2025-03-10 13:16:14,114 - INFO - OPENED LONG at 2071.6 | Stop loss: 2061.226467857143 | Take profit: 2102.6972982142856 +2025-03-10 13:16:14,139 - INFO - CLOSED long at 2073.23 | PnL: 0.08% | $-0.04 +2025-03-10 13:16:14,162 - INFO - OPENED LONG at 2070.0 | Stop loss: 2059.634467857143 | Take profit: 2101.0732982142854 +2025-03-10 13:16:14,484 - INFO - CLOSED long at 2067.33 | PnL: -0.13% | $-0.44 +2025-03-10 13:16:14,511 - INFO - OPENED LONG at 2066.38 | Stop loss: 2056.032567857143 | Take profit: 2097.3989982142857 +2025-03-10 13:16:14,922 - INFO - CLOSED long at 2068.59 | PnL: 0.11% | $0.01 +2025-03-10 13:16:14,943 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.216517857143 | Take profit: 2102.687148214286 +2025-03-10 13:16:15,586 - INFO - CLOSED long at 2075.61 | PnL: 0.19% | $0.18 +2025-03-10 13:16:15,607 - INFO - OPENED LONG at 2074.0 | Stop loss: 2063.6144678571427 | Take profit: 2105.133298214286 +2025-03-10 13:16:15,664 - INFO - CLOSED long at 2067.7 | PnL: -0.30% | $-0.77 +2025-03-10 13:16:15,664 - INFO - OPENED SHORT at 2067.7 | Stop loss: 2078.054032142857 | Take profit: 2036.661201785714 +2025-03-10 13:16:15,690 - INFO - CLOSED short at 2067.0 | PnL: 0.03% | $-0.12 +2025-03-10 13:16:15,690 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.649467857143 | Take profit: 2098.0282982142858 +2025-03-10 13:16:16,085 - INFO - CLOSED long at 2066.09 | PnL: -0.04% | $-0.27 +2025-03-10 13:16:16,109 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.0575178571426 | Take profit: 2094.3641482142853 +2025-03-10 13:16:16,409 - INFO - CLOSED long at 2059.2 | PnL: -0.20% | $-0.57 +2025-03-10 13:16:16,409 - INFO - OPENED SHORT at 2059.2 | Stop loss: 2069.511532142857 | Take profit: 2028.288701785714 +2025-03-10 13:16:16,433 - INFO - CLOSED short at 2058.09 | PnL: 0.05% | $-0.09 +2025-03-10 13:16:16,433 - INFO - OPENED LONG at 2058.09 | Stop loss: 2047.784017857143 | Take profit: 2088.9846482142857 +2025-03-10 13:16:16,721 - INFO - CLOSED long at 2063.9 | PnL: 0.28% | $0.34 +2025-03-10 13:16:16,721 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.235032142857 | Take profit: 2032.9182017857145 +2025-03-10 13:16:16,756 - INFO - CLOSED short at 2065.1 | PnL: -0.06% | $-0.30 +2025-03-10 13:16:16,756 - INFO - OPENED LONG at 2065.1 | Stop loss: 2054.758967857143 | Take profit: 2096.099798214286 +2025-03-10 13:16:16,874 - INFO - CLOSED long at 2066.59 | PnL: 0.07% | $-0.05 +2025-03-10 13:16:16,897 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.744067857143 | Take profit: 2095.0644982142853 +2025-03-10 13:16:17,456 - INFO - TAKE PROFIT hit for long at 2095.0644982142853 | PnL: 1.50% | $2.61 +2025-03-10 13:16:17,486 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.0309678571425 | Take profit: 2162.6837982142856 +2025-03-10 13:16:17,709 - INFO - CLOSED long at 2126.99 | PnL: -0.17% | $-0.52 +2025-03-10 13:16:17,727 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.647967857143 | Take profit: 2159.2327982142856 +2025-03-10 13:16:18,003 - INFO - STOP LOSS hit for long at 2116.647967857143 | PnL: -0.50% | $-1.14 +2025-03-10 13:16:18,024 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.8773178571428 | Take profit: 2139.0647482142854 +2025-03-10 13:16:18,458 - INFO - STOP LOSS hit for long at 2096.8773178571428 | PnL: -0.50% | $-1.13 +2025-03-10 13:16:18,486 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.016817857143 | Take profit: 2131.046248214286 +2025-03-10 13:16:18,689 - INFO - CLOSED long at 2100.74 | PnL: 0.06% | $-0.08 +2025-03-10 13:16:18,689 - INFO - OPENED SHORT at 2100.74 | Stop loss: 2111.259232142857 | Take profit: 2069.205601785714 +2025-03-10 13:16:18,711 - INFO - CLOSED short at 2103.86 | PnL: -0.15% | $-0.46 +2025-03-10 13:16:18,712 - INFO - OPENED LONG at 2103.86 | Stop loss: 2093.3251678571432 | Take profit: 2135.4411982142856 +2025-03-10 13:16:18,907 - INFO - STOP LOSS hit for long at 2093.3251678571432 | PnL: -0.50% | $-1.11 +2025-03-10 13:16:18,932 - INFO - OPENED LONG at 2091.1 | Stop loss: 2080.628967857143 | Take profit: 2122.4897982142857 +2025-03-10 13:16:19,125 - INFO - STOP LOSS hit for long at 2080.628967857143 | PnL: -0.50% | $-1.10 +2025-03-10 13:16:19,152 - INFO - OPENED LONG at 2081.25 | Stop loss: 2070.8282178571426 | Take profit: 2112.492048214286 +2025-03-10 13:16:19,628 - INFO - CLOSED long at 2099.99 | PnL: 0.90% | $1.44 +2025-03-10 13:16:19,651 - INFO - OPENED LONG at 2101.64 | Stop loss: 2091.1162678571427 | Take profit: 2133.1878982142857 +2025-03-10 13:16:19,700 - INFO - CLOSED long at 2098.49 | PnL: -0.15% | $-0.46 +2025-03-10 13:16:19,700 - INFO - OPENED SHORT at 2098.49 | Stop loss: 2108.997982142857 | Take profit: 2066.989351785714 +2025-03-10 13:16:19,729 - INFO - CLOSED short at 2099.89 | PnL: -0.07% | $-0.30 +2025-03-10 13:16:19,729 - INFO - OPENED LONG at 2099.89 | Stop loss: 2089.3750178571427 | Take profit: 2131.411648214286 +2025-03-10 13:16:19,751 - INFO - CLOSED long at 2100.89 | PnL: 0.05% | $-0.10 +2025-03-10 13:16:19,751 - INFO - OPENED SHORT at 2100.89 | Stop loss: 2111.409982142857 | Take profit: 2069.353351785714 +2025-03-10 13:16:19,780 - INFO - CLOSED short at 2099.73 | PnL: 0.06% | $-0.08 +2025-03-10 13:16:19,781 - INFO - OPENED LONG at 2099.73 | Stop loss: 2089.215817857143 | Take profit: 2131.249248214286 +2025-03-10 13:16:20,036 - INFO - CLOSED long at 2104.4 | PnL: 0.22% | $0.22 +2025-03-10 13:16:20,059 - INFO - Trade Analysis: Win Rate=10.5% in uptrends, 0.0% in downtrends | Avg Win=$0.66, Avg Loss=$-0.35 +2025-03-10 13:16:20,060 - INFO - Episode 22: Reward=137.40, Balance=$91.62, Win Rate=20.0%, Trades=55, Episode PnL=$-5.90, Total PnL=$-400.02, Max Drawdown=9.1%, Pred Accuracy=99.9% +2025-03-10 13:16:20,060 - ERROR - Error in episode 22: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:16:20,061 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + f"Max Drawdown={env.max_drawdown*100:.1f}%, Pred Accuracy={prediction_accuracy:.1f}%") + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:16:20,082 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:16:20,274 - INFO - OPENED LONG at 2046.58 | Stop loss: 2036.3315678571428 | Take profit: 2077.3019982142855 +2025-03-10 13:16:20,533 - INFO - CLOSED long at 2048.51 | PnL: 0.09% | $-0.01 +2025-03-10 13:16:20,577 - INFO - OPENED LONG at 2050.0 | Stop loss: 2039.7344678571428 | Take profit: 2080.773298214286 +2025-03-10 13:16:20,812 - INFO - CLOSED long at 2057.01 | PnL: 0.34% | $0.48 +2025-03-10 13:16:20,813 - INFO - OPENED SHORT at 2057.01 | Stop loss: 2067.3105821428576 | Take profit: 2026.1315517857145 +2025-03-10 13:16:20,838 - INFO - CLOSED short at 2056.89 | PnL: 0.01% | $-0.19 +2025-03-10 13:16:20,840 - INFO - OPENED LONG at 2056.89 | Stop loss: 2046.5900178571426 | Take profit: 2087.766648214286 +2025-03-10 13:16:20,860 - INFO - CLOSED long at 2058.39 | PnL: 0.07% | $-0.05 +2025-03-10 13:16:20,860 - INFO - OPENED SHORT at 2058.39 | Stop loss: 2068.697482142857 | Take profit: 2027.490851785714 +2025-03-10 13:16:20,881 - INFO - CLOSED short at 2060.13 | PnL: -0.08% | $-0.37 +2025-03-10 13:16:20,881 - INFO - OPENED LONG at 2060.13 | Stop loss: 2049.813817857143 | Take profit: 2091.055248214286 +2025-03-10 13:16:21,164 - INFO - CLOSED long at 2058.3 | PnL: -0.09% | $-0.37 +2025-03-10 13:16:21,225 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.214982142857 | Take profit: 2030.938351785714 +2025-03-10 13:16:21,272 - INFO - CLOSED short at 2060.31 | PnL: 0.08% | $-0.05 +2025-03-10 13:16:21,272 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.992917857143 | Take profit: 2091.237948214286 +2025-03-10 13:16:21,373 - INFO - CLOSED long at 2057.94 | PnL: -0.12% | $-0.42 +2025-03-10 13:16:21,394 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.803917857143 | Take profit: 2089.004948214286 +2025-03-10 13:16:21,716 - INFO - CLOSED long at 2067.9 | PnL: 0.48% | $0.74 +2025-03-10 13:16:21,716 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.255032142857 | Take profit: 2036.8582017857143 +2025-03-10 13:16:21,744 - INFO - CLOSED short at 2067.69 | PnL: 0.01% | $-0.18 +2025-03-10 13:16:21,745 - INFO - OPENED LONG at 2067.69 | Stop loss: 2057.336017857143 | Take profit: 2098.7286482142854 +2025-03-10 13:16:21,851 - INFO - CLOSED long at 2072.91 | PnL: 0.25% | $0.30 +2025-03-10 13:16:21,851 - INFO - OPENED SHORT at 2072.91 | Stop loss: 2083.290082142857 | Take profit: 2041.793051785714 +2025-03-10 13:16:21,874 - INFO - CLOSED short at 2072.33 | PnL: 0.03% | $-0.14 +2025-03-10 13:16:21,901 - INFO - OPENED LONG at 2071.38 | Stop loss: 2061.007567857143 | Take profit: 2102.4739982142855 +2025-03-10 13:16:22,058 - INFO - CLOSED long at 2068.02 | PnL: -0.16% | $-0.52 +2025-03-10 13:16:22,098 - INFO - OPENED LONG at 2067.2 | Stop loss: 2056.8484678571426 | Take profit: 2098.2312982142853 +2025-03-10 13:16:23,437 - INFO - CLOSED long at 2065.26 | PnL: -0.09% | $-0.38 +2025-03-10 13:16:23,438 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.6018321428573 | Take profit: 2034.2578017857145 +2025-03-10 13:16:23,520 - INFO - CLOSED short at 2068.58 | PnL: -0.16% | $-0.51 +2025-03-10 13:16:23,520 - INFO - OPENED LONG at 2068.58 | Stop loss: 2058.221567857143 | Take profit: 2099.631998214286 +2025-03-10 13:16:23,672 - INFO - CLOSED long at 2070.3 | PnL: 0.08% | $-0.03 +2025-03-10 13:16:23,673 - INFO - OPENED SHORT at 2070.3 | Stop loss: 2080.6670321428574 | Take profit: 2039.2222017857146 +2025-03-10 13:16:23,692 - INFO - CLOSED short at 2071.59 | PnL: -0.06% | $-0.32 +2025-03-10 13:16:23,693 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.216517857143 | Take profit: 2102.687148214286 +2025-03-10 13:16:23,966 - INFO - CLOSED long at 2066.4 | PnL: -0.25% | $-0.68 +2025-03-10 13:16:23,966 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.7475321428574 | Take profit: 2035.3807017857143 +2025-03-10 13:16:23,994 - INFO - CLOSED short at 2066.1 | PnL: 0.01% | $-0.17 +2025-03-10 13:16:23,994 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.753967857143 | Take profit: 2097.1147982142857 +2025-03-10 13:16:25,188 - INFO - CLOSED long at 2063.39 | PnL: -0.13% | $-0.45 +2025-03-10 13:16:25,188 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.722482142857 | Take profit: 2032.415851785714 +2025-03-10 13:16:25,209 - INFO - CLOSED short at 2064.79 | PnL: -0.07% | $-0.32 +2025-03-10 13:16:25,232 - INFO - OPENED LONG at 2065.89 | Stop loss: 2055.5450178571427 | Take profit: 2096.9016482142856 +2025-03-10 13:16:25,710 - INFO - STOP LOSS hit for long at 2055.5450178571427 | PnL: -0.50% | $-1.15 +2025-03-10 13:16:25,736 - INFO - OPENED LONG at 2054.83 | Stop loss: 2044.5403178571428 | Take profit: 2085.6757482142852 +2025-03-10 13:16:26,363 - INFO - CLOSED long at 2069.79 | PnL: 0.73% | $1.19 +2025-03-10 13:16:26,388 - INFO - OPENED LONG at 2072.0 | Stop loss: 2061.624467857143 | Take profit: 2103.1032982142856 +2025-03-10 13:16:26,936 - INFO - CLOSED long at 2065.7 | PnL: -0.30% | $-0.77 +2025-03-10 13:16:26,962 - INFO - OPENED LONG at 2065.66 | Stop loss: 2055.316167857143 | Take profit: 2096.6681982142854 +2025-03-10 13:16:26,998 - INFO - CLOSED long at 2063.95 | PnL: -0.08% | $-0.35 +2025-03-10 13:16:27,035 - INFO - OPENED LONG at 2063.97 | Stop loss: 2053.6346178571425 | Take profit: 2094.9528482142855 +2025-03-10 13:16:27,922 - INFO - CLOSED long at 2074.0 | PnL: 0.49% | $0.73 +2025-03-10 13:16:27,922 - INFO - OPENED SHORT at 2074.0 | Stop loss: 2084.3855321428573 | Take profit: 2042.8667017857142 +2025-03-10 13:16:27,958 - INFO - CLOSED short at 2072.09 | PnL: 0.09% | $-0.02 +2025-03-10 13:16:27,958 - INFO - OPENED LONG at 2072.09 | Stop loss: 2061.714017857143 | Take profit: 2103.1946482142857 +2025-03-10 13:16:27,978 - INFO - CLOSED long at 2069.97 | PnL: -0.10% | $-0.39 +2025-03-10 13:16:28,000 - INFO - OPENED LONG at 2067.7 | Stop loss: 2057.3459678571426 | Take profit: 2098.7387982142855 +2025-03-10 13:16:28,386 - INFO - CLOSED long at 2066.09 | PnL: -0.08% | $-0.34 +2025-03-10 13:16:28,386 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.4359821428575 | Take profit: 2035.0753517857145 +2025-03-10 13:16:28,407 - INFO - CLOSED short at 2063.39 | PnL: 0.13% | $0.06 +2025-03-10 13:16:28,408 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.0575178571426 | Take profit: 2094.3641482142853 +2025-03-10 13:16:28,429 - INFO - CLOSED long at 2062.34 | PnL: -0.05% | $-0.29 +2025-03-10 13:16:28,429 - INFO - OPENED SHORT at 2062.34 | Stop loss: 2072.6672321428573 | Take profit: 2031.3816017857143 +2025-03-10 13:16:28,448 - INFO - CLOSED short at 2063.98 | PnL: -0.08% | $-0.34 +2025-03-10 13:16:28,448 - INFO - OPENED LONG at 2063.98 | Stop loss: 2053.644567857143 | Take profit: 2094.9629982142856 +2025-03-10 13:16:28,471 - INFO - CLOSED long at 2066.1 | PnL: 0.10% | $0.01 +2025-03-10 13:16:28,471 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.446032142857 | Take profit: 2035.0852017857142 +2025-03-10 13:16:28,490 - INFO - CLOSED short at 2065.06 | PnL: 0.05% | $-0.09 +2025-03-10 13:16:28,495 - INFO - OPENED LONG at 2065.06 | Stop loss: 2054.719167857143 | Take profit: 2096.0591982142855 +2025-03-10 13:16:28,738 - INFO - CLOSED long at 2058.65 | PnL: -0.31% | $-0.77 +2025-03-10 13:16:28,786 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.729417857143 | Take profit: 2083.828448214286 +2025-03-10 13:16:28,825 - INFO - CLOSED long at 2049.5 | PnL: -0.17% | $-0.50 +2025-03-10 13:16:28,844 - INFO - OPENED LONG at 2051.99 | Stop loss: 2041.7145178571427 | Take profit: 2082.7931482142853 +2025-03-10 13:16:29,012 - INFO - CLOSED long at 2062.43 | PnL: 0.51% | $0.76 +2025-03-10 13:16:29,055 - INFO - OPENED LONG at 2062.55 | Stop loss: 2052.221717857143 | Take profit: 2093.511548214286 +2025-03-10 13:16:29,399 - INFO - CLOSED long at 2070.41 | PnL: 0.38% | $0.53 +2025-03-10 13:16:29,431 - INFO - OPENED LONG at 2073.49 | Stop loss: 2063.1070178571426 | Take profit: 2104.6156482142856 +2025-03-10 13:16:29,490 - INFO - CLOSED long at 2072.99 | PnL: -0.02% | $-0.23 +2025-03-10 13:16:29,490 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.370482142857 | Take profit: 2041.871851785714 +2025-03-10 13:16:29,522 - INFO - CLOSED short at 2071.89 | PnL: 0.05% | $-0.09 +2025-03-10 13:16:29,522 - INFO - OPENED LONG at 2071.89 | Stop loss: 2061.5150178571425 | Take profit: 2102.9916482142853 +2025-03-10 13:16:29,590 - INFO - CLOSED long at 2076.08 | PnL: 0.20% | $0.19 +2025-03-10 13:16:29,590 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.475932142857 | Take profit: 2044.9155017857142 +2025-03-10 13:16:29,614 - INFO - CLOSED short at 2077.61 | PnL: -0.07% | $-0.33 +2025-03-10 13:16:29,614 - INFO - OPENED LONG at 2077.61 | Stop loss: 2067.206417857143 | Take profit: 2108.797448214286 +2025-03-10 13:16:29,696 - INFO - TAKE PROFIT hit for long at 2108.797448214286 | PnL: 1.50% | $2.62 +2025-03-10 13:16:29,722 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.826767857143 | Take profit: 2171.6563982142857 +2025-03-10 13:16:29,969 - INFO - STOP LOSS hit for long at 2128.826767857143 | PnL: -0.50% | $-1.15 +2025-03-10 13:16:29,989 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.647967857143 | Take profit: 2159.2327982142856 +2025-03-10 13:16:30,166 - INFO - CLOSED long at 2119.14 | PnL: -0.38% | $-0.92 +2025-03-10 13:16:30,166 - INFO - OPENED SHORT at 2119.14 | Stop loss: 2129.751232142857 | Take profit: 2087.329601785714 +2025-03-10 13:16:30,212 - INFO - CLOSED short at 2119.07 | PnL: 0.00% | $-0.18 +2025-03-10 13:16:30,213 - INFO - OPENED LONG at 2119.07 | Stop loss: 2108.459117857143 | Take profit: 2150.8793482142855 +2025-03-10 13:16:30,308 - INFO - STOP LOSS hit for long at 2108.459117857143 | PnL: -0.50% | $-1.13 +2025-03-10 13:16:30,358 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.0314678571426 | Take profit: 2142.282298214285 +2025-03-10 13:16:30,403 - INFO - CLOSED long at 2112.09 | PnL: 0.07% | $-0.05 +2025-03-10 13:16:30,423 - INFO - OPENED LONG at 2112.95 | Stop loss: 2102.369717857143 | Take profit: 2144.6675482142855 +2025-03-10 13:16:30,753 - INFO - STOP LOSS hit for long at 2102.369717857143 | PnL: -0.50% | $-1.11 +2025-03-10 13:16:30,794 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.016817857143 | Take profit: 2131.046248214286 +2025-03-10 13:16:31,075 - INFO - CLOSED long at 2101.51 | PnL: 0.09% | $-0.01 +2025-03-10 13:16:31,077 - INFO - OPENED SHORT at 2101.51 | Stop loss: 2112.0330821428574 | Take profit: 2069.964051785714 +2025-03-10 13:16:31,115 - INFO - CLOSED short at 2099.59 | PnL: 0.09% | $-0.02 +2025-03-10 13:16:31,115 - INFO - OPENED LONG at 2099.59 | Stop loss: 2089.0765178571432 | Take profit: 2131.1071482142856 +2025-03-10 13:16:31,338 - INFO - STOP LOSS hit for long at 2089.0765178571432 | PnL: -0.50% | $-1.10 +2025-03-10 13:16:31,363 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848067857143 | Take profit: 2114.5524982142856 +2025-03-10 13:16:31,397 - INFO - CLOSED long at 2088.44 | PnL: 0.25% | $0.27 +2025-03-10 13:16:31,440 - INFO - OPENED LONG at 2083.97 | Stop loss: 2073.5346178571426 | Take profit: 2115.2528482142857 +2025-03-10 13:16:31,564 - INFO - CLOSED long at 2080.38 | PnL: -0.17% | $-0.49 +2025-03-10 13:16:31,564 - INFO - OPENED SHORT at 2080.38 | Stop loss: 2090.7974321428574 | Take profit: 2049.1510017857145 +2025-03-10 13:16:31,587 - INFO - CLOSED short at 2081.25 | PnL: -0.04% | $-0.26 +2025-03-10 13:16:31,587 - INFO - OPENED LONG at 2081.25 | Stop loss: 2070.8282178571426 | Take profit: 2112.492048214286 +2025-03-10 13:16:32,357 - INFO - CLOSED long at 2106.15 | PnL: 1.20% | $1.97 +2025-03-10 13:16:32,357 - INFO - OPENED SHORT at 2106.15 | Stop loss: 2116.6962821428574 | Take profit: 2074.5344517857143 +2025-03-10 13:16:32,384 - INFO - CLOSED short at 2103.48 | PnL: 0.13% | $0.05 +2025-03-10 13:16:32,384 - INFO - OPENED LONG at 2103.48 | Stop loss: 2092.947067857143 | Take profit: 2135.0554982142858 +2025-03-10 13:16:32,490 - INFO - CLOSED long at 2105.83 | PnL: 0.11% | $0.02 +2025-03-10 13:16:32,515 - INFO - OPENED LONG at 2103.64 | Stop loss: 2093.1062678571425 | Take profit: 2135.2178982142855 +2025-03-10 13:16:32,534 - INFO - CLOSED long at 2105.2 | PnL: 0.07% | $-0.05 +2025-03-10 13:16:32,560 - INFO - OPENED LONG at 2103.52 | Stop loss: 2092.986867857143 | Take profit: 2135.0960982142856 +2025-03-10 13:16:32,633 - INFO - Trade Analysis: Win Rate=13.0% in uptrends, 0.0% in downtrends | Avg Win=$0.66, Avg Loss=$-0.39 +2025-03-10 13:16:32,634 - INFO - Episode 23: Reward=141.02, Balance=$92.62, Win Rate=25.4%, Trades=59, Episode PnL=$-7.92, Total PnL=$-407.40, Max Drawdown=8.9%, Pred Accuracy=99.9% +2025-03-10 13:16:32,635 - ERROR - Error in episode 23: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:16:32,637 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + f"{trade_analysis.get('downtrend_win_rate', 0):.1f}% in downtrends | " + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:16:32,659 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:16:32,948 - INFO - OPENED LONG at 2046.58 | Stop loss: 2036.3315678571428 | Take profit: 2077.3019982142855 +2025-03-10 13:16:33,148 - INFO - CLOSED long at 2050.0 | PnL: 0.17% | $0.13 +2025-03-10 13:16:33,207 - INFO - OPENED LONG at 2049.89 | Stop loss: 2039.6250178571427 | Take profit: 2080.661648214286 +2025-03-10 13:16:33,236 - INFO - CLOSED long at 2051.11 | PnL: 0.06% | $-0.08 +2025-03-10 13:16:33,286 - INFO - OPENED LONG at 2053.26 | Stop loss: 2042.9781678571433 | Take profit: 2084.082198214286 +2025-03-10 13:16:33,586 - INFO - CLOSED long at 2064.61 | PnL: 0.55% | $0.90 +2025-03-10 13:16:33,586 - INFO - OPENED SHORT at 2064.61 | Stop loss: 2074.948582142857 | Take profit: 2033.6175517857146 +2025-03-10 13:16:33,633 - INFO - CLOSED short at 2063.59 | PnL: 0.05% | $-0.10 +2025-03-10 13:16:33,633 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.256517857143 | Take profit: 2094.567148214286 +2025-03-10 13:16:33,917 - INFO - CLOSED long at 2059.49 | PnL: -0.20% | $-0.60 +2025-03-10 13:16:33,917 - INFO - OPENED SHORT at 2059.49 | Stop loss: 2069.8029821428568 | Take profit: 2028.574351785714 +2025-03-10 13:16:33,944 - INFO - CLOSED short at 2057.8 | PnL: 0.08% | $-0.04 +2025-03-10 13:16:33,944 - INFO - OPENED LONG at 2057.8 | Stop loss: 2047.495467857143 | Take profit: 2088.6902982142856 +2025-03-10 13:16:34,706 - INFO - CLOSED long at 2070.28 | PnL: 0.61% | $1.01 +2025-03-10 13:16:34,707 - INFO - OPENED SHORT at 2070.28 | Stop loss: 2080.646932142857 | Take profit: 2039.2025017857145 +2025-03-10 13:16:34,734 - INFO - CLOSED short at 2068.02 | PnL: 0.11% | $0.02 +2025-03-10 13:16:34,735 - INFO - OPENED LONG at 2068.02 | Stop loss: 2057.6643678571427 | Take profit: 2099.063598214286 +2025-03-10 13:16:34,757 - INFO - CLOSED long at 2067.2 | PnL: -0.04% | $-0.28 +2025-03-10 13:16:34,757 - INFO - OPENED SHORT at 2067.2 | Stop loss: 2077.551532142857 | Take profit: 2036.1687017857141 +2025-03-10 13:16:34,805 - INFO - CLOSED short at 2070.36 | PnL: -0.15% | $-0.51 +2025-03-10 13:16:34,806 - INFO - OPENED LONG at 2070.36 | Stop loss: 2059.992667857143 | Take profit: 2101.438698214286 +2025-03-10 13:16:35,420 - INFO - CLOSED long at 2071.39 | PnL: 0.05% | $-0.10 +2025-03-10 13:16:35,454 - INFO - OPENED LONG at 2071.36 | Stop loss: 2060.9876678571427 | Take profit: 2102.453698214286 +2025-03-10 13:16:35,670 - INFO - CLOSED long at 2071.92 | PnL: 0.03% | $-0.15 +2025-03-10 13:16:35,671 - INFO - OPENED SHORT at 2071.92 | Stop loss: 2082.2951321428573 | Take profit: 2040.8179017857142 +2025-03-10 13:16:35,723 - INFO - CLOSED short at 2070.4 | PnL: 0.07% | $-0.05 +2025-03-10 13:16:35,724 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.032467857143 | Take profit: 2101.479298214286 +2025-03-10 13:16:36,158 - INFO - CLOSED long at 2067.59 | PnL: -0.14% | $-0.47 +2025-03-10 13:16:36,181 - INFO - OPENED LONG at 2069.2 | Stop loss: 2058.8384678571424 | Take profit: 2100.2612982142855 +2025-03-10 13:16:36,307 - INFO - CLOSED long at 2068.5 | PnL: -0.03% | $-0.26 +2025-03-10 13:16:36,333 - INFO - OPENED LONG at 2068.69 | Stop loss: 2058.331017857143 | Take profit: 2099.7436482142857 +2025-03-10 13:16:36,715 - INFO - CLOSED long at 2065.83 | PnL: -0.14% | $-0.47 +2025-03-10 13:16:36,715 - INFO - OPENED SHORT at 2065.83 | Stop loss: 2076.174682142857 | Take profit: 2034.8192517857142 +2025-03-10 13:16:36,734 - INFO - CLOSED short at 2066.15 | PnL: -0.02% | $-0.23 +2025-03-10 13:16:36,734 - INFO - OPENED LONG at 2066.15 | Stop loss: 2055.803717857143 | Take profit: 2097.1655482142855 +2025-03-10 13:16:37,059 - INFO - CLOSED long at 2064.08 | PnL: -0.10% | $-0.39 +2025-03-10 13:16:37,059 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.415932142857 | Take profit: 2033.095501785714 +2025-03-10 13:16:37,091 - INFO - CLOSED short at 2062.71 | PnL: 0.07% | $-0.07 +2025-03-10 13:16:37,091 - INFO - OPENED LONG at 2062.71 | Stop loss: 2052.380917857143 | Take profit: 2093.6739482142857 +2025-03-10 13:16:37,873 - INFO - CLOSED long at 2059.46 | PnL: -0.16% | $-0.50 +2025-03-10 13:16:37,874 - INFO - OPENED SHORT at 2059.46 | Stop loss: 2069.772832142857 | Take profit: 2028.5448017857143 +2025-03-10 13:16:37,899 - INFO - CLOSED short at 2057.4 | PnL: 0.10% | $0.00 +2025-03-10 13:16:37,899 - INFO - OPENED LONG at 2057.4 | Stop loss: 2047.097467857143 | Take profit: 2088.284298214286 +2025-03-10 13:16:38,470 - INFO - CLOSED long at 2065.69 | PnL: 0.40% | $0.59 +2025-03-10 13:16:38,471 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.0339821428574 | Take profit: 2034.6813517857142 +2025-03-10 13:16:38,510 - INFO - CLOSED short at 2069.79 | PnL: -0.20% | $-0.58 +2025-03-10 13:16:38,510 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.425517857143 | Take profit: 2100.860148214286 +2025-03-10 13:16:38,613 - INFO - CLOSED long at 2075.01 | PnL: 0.25% | $0.30 +2025-03-10 13:16:38,628 - INFO - OPENED SHORT at 2072.6 | Stop loss: 2082.9785321428567 | Take profit: 2041.4877017857143 +2025-03-10 13:16:38,650 - INFO - CLOSED short at 2071.04 | PnL: 0.08% | $-0.05 +2025-03-10 13:16:38,651 - INFO - OPENED LONG at 2071.04 | Stop loss: 2060.669267857143 | Take profit: 2102.1288982142855 +2025-03-10 13:16:38,691 - INFO - CLOSED long at 2071.6 | PnL: 0.03% | $-0.14 +2025-03-10 13:16:38,691 - INFO - OPENED SHORT at 2071.6 | Stop loss: 2081.973532142857 | Take profit: 2040.5027017857142 +2025-03-10 13:16:38,712 - INFO - CLOSED short at 2073.23 | PnL: -0.08% | $-0.35 +2025-03-10 13:16:38,712 - INFO - OPENED LONG at 2073.23 | Stop loss: 2062.848317857143 | Take profit: 2104.3517482142856 +2025-03-10 13:16:38,781 - INFO - CLOSED long at 2068.39 | PnL: -0.23% | $-0.65 +2025-03-10 13:16:38,825 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.3260178571427 | Take profit: 2100.758648214286 +2025-03-10 13:16:39,053 - INFO - CLOSED long at 2065.7 | PnL: -0.19% | $-0.56 +2025-03-10 13:16:39,073 - INFO - OPENED LONG at 2065.66 | Stop loss: 2055.316167857143 | Take profit: 2096.6681982142854 +2025-03-10 13:16:39,108 - INFO - CLOSED long at 2063.97 | PnL: -0.08% | $-0.35 +2025-03-10 13:16:39,134 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.161967857143 | Take profit: 2095.490798214286 +2025-03-10 13:16:39,827 - INFO - CLOSED long at 2074.35 | PnL: 0.48% | $0.72 +2025-03-10 13:16:39,828 - INFO - OPENED SHORT at 2074.35 | Stop loss: 2084.7372821428567 | Take profit: 2043.2114517857142 +2025-03-10 13:16:39,848 - INFO - CLOSED short at 2073.27 | PnL: 0.05% | $-0.09 +2025-03-10 13:16:39,849 - INFO - OPENED LONG at 2073.27 | Stop loss: 2062.888117857143 | Take profit: 2104.3923482142854 +2025-03-10 13:16:40,217 - INFO - CLOSED long at 2068.1 | PnL: -0.25% | $-0.67 +2025-03-10 13:16:40,245 - INFO - OPENED LONG at 2069.0 | Stop loss: 2058.639467857143 | Take profit: 2100.058298214286 +2025-03-10 13:16:40,300 - INFO - CLOSED long at 2067.19 | PnL: -0.09% | $-0.36 +2025-03-10 13:16:40,301 - INFO - OPENED SHORT at 2067.19 | Stop loss: 2077.541482142857 | Take profit: 2036.1588517857142 +2025-03-10 13:16:40,321 - INFO - CLOSED short at 2065.5 | PnL: 0.08% | $-0.03 +2025-03-10 13:16:40,322 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.1569678571427 | Take profit: 2096.5057982142857 +2025-03-10 13:16:40,726 - INFO - CLOSED long at 2058.09 | PnL: -0.36% | $-0.87 +2025-03-10 13:16:40,752 - INFO - OPENED LONG at 2058.65 | Stop loss: 2048.341217857143 | Take profit: 2089.553048214286 +2025-03-10 13:16:41,064 - INFO - CLOSED long at 2062.43 | PnL: 0.18% | $0.16 +2025-03-10 13:16:41,064 - INFO - OPENED SHORT at 2062.43 | Stop loss: 2072.757682142857 | Take profit: 2031.470251785714 +2025-03-10 13:16:41,086 - INFO - CLOSED short at 2062.55 | PnL: -0.01% | $-0.20 +2025-03-10 13:16:41,086 - INFO - OPENED LONG at 2062.55 | Stop loss: 2052.221717857143 | Take profit: 2093.511548214286 +2025-03-10 13:16:41,375 - INFO - CLOSED long at 2069.81 | PnL: 0.35% | $0.47 +2025-03-10 13:16:41,393 - INFO - OPENED LONG at 2070.41 | Stop loss: 2060.042417857143 | Take profit: 2101.489448214286 +2025-03-10 13:16:41,477 - INFO - CLOSED long at 2071.89 | PnL: 0.07% | $-0.05 +2025-03-10 13:16:41,537 - INFO - OPENED LONG at 2076.08 | Stop loss: 2065.684067857143 | Take profit: 2107.2444982142856 +2025-03-10 13:16:41,639 - INFO - CLOSED long at 2130.7 | PnL: 2.63% | $4.78 +2025-03-10 13:16:41,662 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.826767857143 | Take profit: 2171.6563982142857 +2025-03-10 13:16:41,832 - INFO - STOP LOSS hit for long at 2128.826767857143 | PnL: -0.50% | $-1.19 +2025-03-10 13:16:41,856 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.647967857143 | Take profit: 2159.2327982142856 +2025-03-10 13:16:42,053 - INFO - STOP LOSS hit for long at 2116.647967857143 | PnL: -0.50% | $-1.18 +2025-03-10 13:16:42,080 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.8773178571428 | Take profit: 2139.0647482142854 +2025-03-10 13:16:42,204 - INFO - CLOSED long at 2113.24 | PnL: 0.28% | $0.34 +2025-03-10 13:16:42,228 - INFO - OPENED LONG at 2112.99 | Stop loss: 2102.4095178571424 | Take profit: 2144.7081482142853 +2025-03-10 13:16:42,292 - INFO - CLOSED long at 2114.8 | PnL: 0.09% | $-0.03 +2025-03-10 13:16:42,312 - INFO - OPENED LONG at 2110.9 | Stop loss: 2100.329967857143 | Take profit: 2142.586798214286 +2025-03-10 13:16:42,427 - INFO - STOP LOSS hit for long at 2100.329967857143 | PnL: -0.50% | $-1.17 +2025-03-10 13:16:42,453 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.016817857143 | Take profit: 2131.046248214286 +2025-03-10 13:16:42,554 - INFO - CLOSED long at 2098.9 | PnL: -0.03% | $-0.25 +2025-03-10 13:16:42,578 - INFO - OPENED LONG at 2100.69 | Stop loss: 2090.171017857143 | Take profit: 2132.2236482142857 +2025-03-10 13:16:42,929 - INFO - STOP LOSS hit for long at 2090.171017857143 | PnL: -0.50% | $-1.15 +2025-03-10 13:16:42,953 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848067857143 | Take profit: 2114.5524982142856 +2025-03-10 13:16:43,070 - INFO - CLOSED long at 2080.38 | PnL: -0.14% | $-0.45 +2025-03-10 13:16:43,070 - INFO - OPENED SHORT at 2080.38 | Stop loss: 2090.7974321428574 | Take profit: 2049.1510017857145 +2025-03-10 13:16:43,092 - INFO - CLOSED short at 2081.25 | PnL: -0.04% | $-0.27 +2025-03-10 13:16:43,092 - INFO - OPENED LONG at 2081.25 | Stop loss: 2070.8282178571426 | Take profit: 2112.492048214286 +2025-03-10 13:16:43,669 - INFO - CLOSED long at 2098.49 | PnL: 0.83% | $1.37 +2025-03-10 13:16:43,710 - INFO - OPENED LONG at 2100.89 | Stop loss: 2090.370017857143 | Take profit: 2132.4266482142853 +2025-03-10 13:16:43,963 - INFO - Trade Analysis: Win Rate=10.5% in uptrends, 0.0% in downtrends | Avg Win=$0.83, Avg Loss=$-0.39 +2025-03-10 13:16:43,964 - INFO - Episode 24: Reward=151.47, Balance=$95.85, Win Rate=25.5%, Trades=51, Episode PnL=$-4.18, Total PnL=$-411.55, Max Drawdown=5.7%, Pred Accuracy=99.8% +2025-03-10 13:16:43,964 - ERROR - Error in episode 24: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:16:43,965 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + f"{trade_analysis.get('downtrend_win_rate', 0):.1f}% in downtrends | " + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:16:43,985 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:16:44,248 - INFO - OPENED LONG at 2046.58 | Stop loss: 2036.3315678571428 | Take profit: 2077.3019982142855 +2025-03-10 13:16:44,632 - INFO - CLOSED long at 2056.89 | PnL: 0.50% | $0.80 +2025-03-10 13:16:44,664 - INFO - OPENED LONG at 2058.39 | Stop loss: 2048.0825178571426 | Take profit: 2089.289148214286 +2025-03-10 13:16:44,975 - INFO - CLOSED long at 2061.89 | PnL: 0.17% | $0.14 +2025-03-10 13:16:44,975 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.214982142857 | Take profit: 2030.938351785714 +2025-03-10 13:16:45,012 - INFO - CLOSED short at 2062.89 | PnL: -0.05% | $-0.30 +2025-03-10 13:16:45,013 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.5600178571426 | Take profit: 2093.8566482142855 +2025-03-10 13:16:45,164 - INFO - CLOSED long at 2057.94 | PnL: -0.24% | $-0.68 +2025-03-10 13:16:45,164 - INFO - OPENED SHORT at 2057.94 | Stop loss: 2068.2452321428573 | Take profit: 2027.0476017857145 +2025-03-10 13:16:45,185 - INFO - CLOSED short at 2058.11 | PnL: -0.01% | $-0.21 +2025-03-10 13:16:45,185 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.803917857143 | Take profit: 2089.004948214286 +2025-03-10 13:16:45,485 - INFO - CLOSED long at 2068.65 | PnL: 0.51% | $0.82 +2025-03-10 13:16:45,485 - INFO - OPENED SHORT at 2068.65 | Stop loss: 2079.0087821428574 | Take profit: 2037.5969517857145 +2025-03-10 13:16:45,519 - INFO - CLOSED short at 2068.99 | PnL: -0.02% | $-0.23 +2025-03-10 13:16:45,555 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.255032142857 | Take profit: 2036.8582017857143 +2025-03-10 13:16:45,582 - INFO - CLOSED short at 2067.69 | PnL: 0.01% | $-0.18 +2025-03-10 13:16:45,582 - INFO - OPENED LONG at 2067.69 | Stop loss: 2057.336017857143 | Take profit: 2098.7286482142854 +2025-03-10 13:16:45,602 - INFO - CLOSED long at 2070.26 | PnL: 0.12% | $0.05 +2025-03-10 13:16:45,627 - INFO - OPENED LONG at 2071.44 | Stop loss: 2061.0672678571427 | Take profit: 2102.534898214286 +2025-03-10 13:16:46,021 - INFO - CLOSED long at 2070.7 | PnL: -0.04% | $-0.27 +2025-03-10 13:16:46,042 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.977767857143 | Take profit: 2100.4033982142855 +2025-03-10 13:16:46,099 - INFO - CLOSED long at 2067.6 | PnL: -0.08% | $-0.37 +2025-03-10 13:16:46,125 - INFO - OPENED LONG at 2067.51 | Stop loss: 2057.156917857143 | Take profit: 2098.5459482142855 +2025-03-10 13:16:46,307 - INFO - CLOSED long at 2066.18 | PnL: -0.06% | $-0.32 +2025-03-10 13:16:46,307 - INFO - OPENED SHORT at 2066.18 | Stop loss: 2076.526432142857 | Take profit: 2035.1640017857142 +2025-03-10 13:16:46,369 - INFO - CLOSED short at 2068.9 | PnL: -0.13% | $-0.46 +2025-03-10 13:16:46,369 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.539967857143 | Take profit: 2099.956798214286 +2025-03-10 13:16:46,517 - INFO - CLOSED long at 2071.39 | PnL: 0.12% | $0.04 +2025-03-10 13:16:46,518 - INFO - OPENED SHORT at 2071.39 | Stop loss: 2081.762482142857 | Take profit: 2040.2958517857141 +2025-03-10 13:16:46,555 - INFO - CLOSED short at 2072.75 | PnL: -0.07% | $-0.32 +2025-03-10 13:16:46,588 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.728917857143 | Take profit: 2104.2299482142857 +2025-03-10 13:16:46,758 - INFO - CLOSED long at 2070.4 | PnL: -0.13% | $-0.45 +2025-03-10 13:16:46,780 - INFO - OPENED LONG at 2071.11 | Stop loss: 2060.738917857143 | Take profit: 2102.199948214286 +2025-03-10 13:16:46,903 - INFO - CLOSED long at 2066.8 | PnL: -0.21% | $-0.60 +2025-03-10 13:16:46,903 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.1495321428574 | Take profit: 2035.7747017857143 +2025-03-10 13:16:46,925 - INFO - CLOSED short at 2065.49 | PnL: 0.06% | $-0.07 +2025-03-10 13:16:46,925 - INFO - OPENED LONG at 2065.49 | Stop loss: 2055.1470178571426 | Take profit: 2096.4956482142857 +2025-03-10 13:16:47,101 - INFO - CLOSED long at 2067.86 | PnL: 0.11% | $0.03 +2025-03-10 13:16:47,125 - INFO - OPENED LONG at 2067.59 | Stop loss: 2057.236517857143 | Take profit: 2098.6271482142856 +2025-03-10 13:16:47,693 - INFO - CLOSED long at 2062.65 | PnL: -0.24% | $-0.66 +2025-03-10 13:16:47,710 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.4555678571433 | Take profit: 2092.729998214286 +2025-03-10 13:16:48,112 - INFO - CLOSED long at 2058.89 | PnL: -0.14% | $-0.46 +2025-03-10 13:16:48,112 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.199982142857 | Take profit: 2027.9833517857144 +2025-03-10 13:16:48,135 - INFO - CLOSED short at 2059.3 | PnL: -0.02% | $-0.23 +2025-03-10 13:16:48,135 - INFO - OPENED LONG at 2059.3 | Stop loss: 2048.987967857143 | Take profit: 2090.212798214286 +2025-03-10 13:16:48,454 - INFO - CLOSED long at 2064.33 | PnL: 0.24% | $0.28 +2025-03-10 13:16:48,454 - INFO - OPENED SHORT at 2064.33 | Stop loss: 2074.667182142857 | Take profit: 2033.3417517857142 +2025-03-10 13:16:48,480 - INFO - CLOSED short at 2063.39 | PnL: 0.05% | $-0.10 +2025-03-10 13:16:48,480 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.0575178571426 | Take profit: 2094.3641482142853 +2025-03-10 13:16:48,552 - INFO - CLOSED long at 2063.53 | PnL: 0.01% | $-0.18 +2025-03-10 13:16:48,594 - INFO - OPENED LONG at 2063.0 | Stop loss: 2052.6694678571425 | Take profit: 2093.968298214286 +2025-03-10 13:16:48,700 - INFO - CLOSED long at 2061.7 | PnL: -0.06% | $-0.31 +2025-03-10 13:16:48,701 - INFO - OPENED SHORT at 2061.7 | Stop loss: 2072.024032142857 | Take profit: 2030.751201785714 +2025-03-10 13:16:48,737 - INFO - CLOSED short at 2060.7 | PnL: 0.05% | $-0.10 +2025-03-10 13:16:48,738 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3809678571424 | Take profit: 2091.633798214286 +2025-03-10 13:16:48,832 - INFO - CLOSED long at 2059.02 | PnL: -0.08% | $-0.34 +2025-03-10 13:16:48,857 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.5800178571426 | Take profit: 2089.7966482142856 +2025-03-10 13:16:48,879 - INFO - CLOSED long at 2059.96 | PnL: 0.05% | $-0.09 +2025-03-10 13:16:48,880 - INFO - OPENED SHORT at 2059.96 | Stop loss: 2070.275332142857 | Take profit: 2029.0373017857144 +2025-03-10 13:16:48,904 - INFO - CLOSED short at 2059.46 | PnL: 0.02% | $-0.14 +2025-03-10 13:16:48,904 - INFO - OPENED LONG at 2059.46 | Stop loss: 2049.147167857143 | Take profit: 2090.375198214286 +2025-03-10 13:16:49,987 - INFO - CLOSED long at 2069.03 | PnL: 0.46% | $0.69 +2025-03-10 13:16:50,005 - INFO - OPENED LONG at 2067.44 | Stop loss: 2057.0872678571427 | Take profit: 2098.4748982142855 +2025-03-10 13:16:50,769 - INFO - CLOSED long at 2070.61 | PnL: 0.15% | $0.10 +2025-03-10 13:16:50,791 - INFO - OPENED LONG at 2071.99 | Stop loss: 2061.614517857143 | Take profit: 2103.0931482142855 +2025-03-10 13:16:51,246 - INFO - CLOSED long at 2067.7 | PnL: -0.21% | $-0.58 +2025-03-10 13:16:51,274 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.649467857143 | Take profit: 2098.0282982142858 +2025-03-10 13:16:51,442 - INFO - CLOSED long at 2065.45 | PnL: -0.07% | $-0.33 +2025-03-10 13:16:51,479 - INFO - OPENED LONG at 2068.1 | Stop loss: 2057.7439678571427 | Take profit: 2099.1447982142854 +2025-03-10 13:16:51,558 - INFO - CLOSED long at 2070.1 | PnL: 0.10% | $-0.01 +2025-03-10 13:16:51,582 - INFO - OPENED LONG at 2067.19 | Stop loss: 2056.838517857143 | Take profit: 2098.2211482142857 +2025-03-10 13:16:52,111 - INFO - STOP LOSS hit for long at 2056.838517857143 | PnL: -0.50% | $-1.13 +2025-03-10 13:16:52,132 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.729417857143 | Take profit: 2083.828448214286 +2025-03-10 13:16:52,415 - INFO - CLOSED long at 2062.43 | PnL: 0.46% | $0.67 +2025-03-10 13:16:52,415 - INFO - OPENED SHORT at 2062.43 | Stop loss: 2072.757682142857 | Take profit: 2031.470251785714 +2025-03-10 13:16:52,441 - INFO - CLOSED short at 2062.55 | PnL: -0.01% | $-0.20 +2025-03-10 13:16:52,442 - INFO - OPENED LONG at 2062.55 | Stop loss: 2052.221717857143 | Take profit: 2093.511548214286 +2025-03-10 13:16:53,129 - INFO - TAKE PROFIT hit for long at 2093.511548214286 | PnL: 1.50% | $2.62 +2025-03-10 13:16:53,156 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.0309678571425 | Take profit: 2162.6837982142856 +2025-03-10 13:16:53,514 - INFO - STOP LOSS hit for long at 2120.0309678571425 | PnL: -0.50% | $-1.16 +2025-03-10 13:16:53,548 - INFO - OPENED SHORT at 2119.93 | Stop loss: 2130.545182142857 | Take profit: 2088.1077517857143 +2025-03-10 13:16:53,568 - INFO - CLOSED short at 2121.4 | PnL: -0.07% | $-0.32 +2025-03-10 13:16:53,568 - INFO - OPENED LONG at 2121.4 | Stop loss: 2110.777467857143 | Take profit: 2153.2442982142857 +2025-03-10 13:16:53,666 - INFO - STOP LOSS hit for long at 2110.777467857143 | PnL: -0.50% | $-1.14 +2025-03-10 13:16:53,689 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.0314678571426 | Take profit: 2142.282298214285 +2025-03-10 13:16:53,950 - INFO - CLOSED long at 2108.71 | PnL: -0.09% | $-0.35 +2025-03-10 13:16:53,975 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.9420178571427 | Take profit: 2138.1106482142854 +2025-03-10 13:16:54,053 - INFO - STOP LOSS hit for long at 2095.9420178571427 | PnL: -0.50% | $-1.12 +2025-03-10 13:16:54,073 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.016817857143 | Take profit: 2131.046248214286 +2025-03-10 13:16:54,330 - INFO - CLOSED long at 2104.68 | PnL: 0.25% | $0.27 +2025-03-10 13:16:54,357 - INFO - OPENED LONG at 2101.51 | Stop loss: 2090.986917857143 | Take profit: 2133.0559482142858 +2025-03-10 13:16:54,555 - INFO - STOP LOSS hit for long at 2090.986917857143 | PnL: -0.50% | $-1.11 +2025-03-10 13:16:54,610 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.9822678571427 | Take profit: 2119.789898214286 +2025-03-10 13:16:54,777 - INFO - CLOSED long at 2083.41 | PnL: -0.24% | $-0.62 +2025-03-10 13:16:54,797 - INFO - OPENED LONG at 2085.09 | Stop loss: 2074.649017857143 | Take profit: 2116.389648214286 +2025-03-10 13:16:55,151 - INFO - CLOSED long at 2085.67 | PnL: 0.03% | $-0.13 +2025-03-10 13:16:55,151 - INFO - OPENED SHORT at 2085.67 | Stop loss: 2096.113882142857 | Take profit: 2054.3616517857145 +2025-03-10 13:16:55,177 - INFO - CLOSED short at 2089.2 | PnL: -0.17% | $-0.49 +2025-03-10 13:16:55,178 - INFO - OPENED LONG at 2089.2 | Stop loss: 2078.738467857143 | Take profit: 2120.5612982142857 +2025-03-10 13:16:55,654 - INFO - CLOSED long at 2103.52 | PnL: 0.69% | $1.05 +2025-03-10 13:16:55,679 - INFO - OPENED LONG at 2104.4 | Stop loss: 2093.862467857143 | Take profit: 2135.989298214286 +2025-03-10 13:16:55,697 - INFO - Trade Analysis: Win Rate=5.6% in uptrends, 0.0% in downtrends | Avg Win=$0.58, Avg Loss=$-0.43 +2025-03-10 13:16:55,698 - INFO - Episode 25: Reward=148.82, Balance=$91.78, Win Rate=26.0%, Trades=50, Episode PnL=$-7.57, Total PnL=$-419.78, Max Drawdown=9.4%, Pred Accuracy=100.0% +2025-03-10 13:16:55,699 - ERROR - Error in episode 25: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:16:55,699 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + f"{trade_analysis.get('downtrend_win_rate', 0):.1f}% in downtrends | " + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:16:55,719 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:16:56,028 - INFO - OPENED LONG at 2046.58 | Stop loss: 2036.3315678571428 | Take profit: 2077.3019982142855 +2025-03-10 13:16:56,256 - INFO - CLOSED long at 2050.24 | PnL: 0.18% | $0.16 +2025-03-10 13:16:56,256 - INFO - OPENED SHORT at 2050.24 | Stop loss: 2060.506732142857 | Take profit: 2019.4631017857141 +2025-03-10 13:16:56,283 - INFO - CLOSED short at 2049.89 | PnL: 0.02% | $-0.16 +2025-03-10 13:16:56,283 - INFO - OPENED LONG at 2049.89 | Stop loss: 2039.6250178571427 | Take profit: 2080.661648214286 +2025-03-10 13:16:57,366 - INFO - CLOSED long at 2075.1 | PnL: 1.23% | $2.24 +2025-03-10 13:16:57,401 - INFO - OPENED LONG at 2072.91 | Stop loss: 2062.5299178571427 | Take profit: 2104.0269482142853 +2025-03-10 13:16:57,828 - INFO - CLOSED long at 2067.51 | PnL: -0.26% | $-0.73 +2025-03-10 13:16:57,828 - INFO - OPENED SHORT at 2067.51 | Stop loss: 2077.8630821428574 | Take profit: 2036.4740517857144 +2025-03-10 13:16:57,864 - INFO - CLOSED short at 2069.01 | PnL: -0.07% | $-0.35 +2025-03-10 13:16:57,864 - INFO - OPENED LONG at 2069.01 | Stop loss: 2058.6494178571434 | Take profit: 2100.068448214286 +2025-03-10 13:16:58,454 - INFO - CLOSED long at 2071.92 | PnL: 0.14% | $0.08 +2025-03-10 13:16:58,454 - INFO - OPENED SHORT at 2071.92 | Stop loss: 2082.2951321428573 | Take profit: 2040.8179017857142 +2025-03-10 13:16:58,474 - INFO - CLOSED short at 2070.4 | PnL: 0.07% | $-0.05 +2025-03-10 13:16:58,474 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.032467857143 | Take profit: 2101.479298214286 +2025-03-10 13:16:58,594 - INFO - CLOSED long at 2067.79 | PnL: -0.13% | $-0.45 +2025-03-10 13:16:58,595 - INFO - OPENED SHORT at 2067.79 | Stop loss: 2078.144482142857 | Take profit: 2036.7498517857143 +2025-03-10 13:16:58,628 - INFO - CLOSED short at 2067.46 | PnL: 0.02% | $-0.17 +2025-03-10 13:16:58,629 - INFO - OPENED LONG at 2067.46 | Stop loss: 2057.107167857143 | Take profit: 2098.4951982142857 +2025-03-10 13:16:58,729 - INFO - CLOSED long at 2063.61 | PnL: -0.19% | $-0.57 +2025-03-10 13:16:58,729 - INFO - OPENED SHORT at 2063.61 | Stop loss: 2073.9435821428574 | Take profit: 2032.6325517857144 +2025-03-10 13:16:58,754 - INFO - CLOSED short at 2065.26 | PnL: -0.08% | $-0.36 +2025-03-10 13:16:58,754 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.918167857143 | Take profit: 2096.262198214286 +2025-03-10 13:16:58,799 - INFO - CLOSED long at 2068.58 | PnL: 0.16% | $0.12 +2025-03-10 13:16:58,819 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.440467857143 | Take profit: 2099.855298214286 +2025-03-10 13:16:58,902 - INFO - CLOSED long at 2069.2 | PnL: 0.02% | $-0.16 +2025-03-10 13:16:58,903 - INFO - OPENED SHORT at 2069.2 | Stop loss: 2079.561532142857 | Take profit: 2038.1387017857141 +2025-03-10 13:16:58,924 - INFO - CLOSED short at 2070.3 | PnL: -0.05% | $-0.30 +2025-03-10 13:16:58,924 - INFO - OPENED LONG at 2070.3 | Stop loss: 2059.932967857143 | Take profit: 2101.377798214286 +2025-03-10 13:16:59,537 - INFO - CLOSED long at 2062.65 | PnL: -0.37% | $-0.93 +2025-03-10 13:16:59,537 - INFO - OPENED SHORT at 2062.65 | Stop loss: 2072.978782142857 | Take profit: 2031.6869517857142 +2025-03-10 13:16:59,559 - INFO - CLOSED short at 2061.78 | PnL: 0.04% | $-0.11 +2025-03-10 13:16:59,559 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.4555678571433 | Take profit: 2092.729998214286 +2025-03-10 13:17:00,518 - INFO - CLOSED long at 2061.7 | PnL: -0.00% | $-0.20 +2025-03-10 13:17:00,538 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3809678571424 | Take profit: 2091.633798214286 +2025-03-10 13:17:00,672 - INFO - CLOSED long at 2059.02 | PnL: -0.08% | $-0.35 +2025-03-10 13:17:00,713 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.5800178571426 | Take profit: 2089.7966482142856 +2025-03-10 13:17:00,804 - INFO - CLOSED long at 2058.28 | PnL: -0.03% | $-0.25 +2025-03-10 13:17:00,805 - INFO - OPENED SHORT at 2058.28 | Stop loss: 2068.586932142857 | Take profit: 2027.3825017857146 +2025-03-10 13:17:00,826 - INFO - CLOSED short at 2056.28 | PnL: 0.10% | $-0.01 +2025-03-10 13:17:00,826 - INFO - OPENED LONG at 2056.28 | Stop loss: 2045.9830678571432 | Take profit: 2087.147498214286 +2025-03-10 13:17:01,218 - INFO - CLOSED long at 2064.49 | PnL: 0.40% | $0.58 +2025-03-10 13:17:01,251 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.982817857143 | Take profit: 2097.348248214286 +2025-03-10 13:17:01,352 - INFO - CLOSED long at 2065.69 | PnL: -0.03% | $-0.25 +2025-03-10 13:17:01,352 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.0339821428574 | Take profit: 2034.6813517857142 +2025-03-10 13:17:01,369 - INFO - CLOSED short at 2069.79 | PnL: -0.20% | $-0.58 +2025-03-10 13:17:01,369 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.425517857143 | Take profit: 2100.860148214286 +2025-03-10 13:17:01,403 - INFO - CLOSED long at 2072.0 | PnL: 0.11% | $0.01 +2025-03-10 13:17:01,403 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3755321428575 | Take profit: 2040.8967017857144 +2025-03-10 13:17:01,443 - INFO - CLOSED short at 2074.3 | PnL: -0.11% | $-0.41 +2025-03-10 13:17:01,443 - INFO - OPENED LONG at 2074.3 | Stop loss: 2063.912967857143 | Take profit: 2105.437798214286 +2025-03-10 13:17:01,607 - INFO - CLOSED long at 2071.6 | PnL: -0.13% | $-0.44 +2025-03-10 13:17:01,626 - INFO - OPENED LONG at 2073.23 | Stop loss: 2062.848317857143 | Take profit: 2104.3517482142856 +2025-03-10 13:17:02,400 - INFO - CLOSED long at 2070.7 | PnL: -0.12% | $-0.42 +2025-03-10 13:17:02,400 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.069032142857 | Take profit: 2039.6162017857139 +2025-03-10 13:17:02,420 - INFO - CLOSED short at 2070.8 | PnL: -0.00% | $-0.20 +2025-03-10 13:17:02,420 - INFO - OPENED LONG at 2070.8 | Stop loss: 2060.430467857143 | Take profit: 2101.885298214286 +2025-03-10 13:17:02,519 - INFO - CLOSED long at 2068.67 | PnL: -0.10% | $-0.39 +2025-03-10 13:17:02,548 - INFO - OPENED LONG at 2070.67 | Stop loss: 2060.301117857143 | Take profit: 2101.753348214286 +2025-03-10 13:17:02,957 - INFO - CLOSED long at 2066.4 | PnL: -0.21% | $-0.58 +2025-03-10 13:17:02,957 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.7475321428574 | Take profit: 2035.3807017857143 +2025-03-10 13:17:02,991 - INFO - CLOSED short at 2066.89 | PnL: -0.02% | $-0.23 +2025-03-10 13:17:02,991 - INFO - OPENED LONG at 2066.89 | Stop loss: 2056.5400178571426 | Take profit: 2097.9166482142855 +2025-03-10 13:17:03,271 - INFO - CLOSED long at 2065.8 | PnL: -0.05% | $-0.29 +2025-03-10 13:17:03,272 - INFO - OPENED SHORT at 2065.8 | Stop loss: 2076.1445321428573 | Take profit: 2034.7897017857144 +2025-03-10 13:17:03,296 - INFO - CLOSED short at 2065.07 | PnL: 0.04% | $-0.12 +2025-03-10 13:17:03,296 - INFO - OPENED LONG at 2065.07 | Stop loss: 2054.729117857143 | Take profit: 2096.069348214286 +2025-03-10 13:17:03,392 - INFO - CLOSED long at 2063.98 | PnL: -0.05% | $-0.29 +2025-03-10 13:17:03,392 - INFO - OPENED SHORT at 2063.98 | Stop loss: 2074.315432142857 | Take profit: 2032.9970017857142 +2025-03-10 13:17:03,430 - INFO - CLOSED short at 2066.1 | PnL: -0.10% | $-0.38 +2025-03-10 13:17:03,430 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.753967857143 | Take profit: 2097.1147982142857 +2025-03-10 13:17:03,734 - INFO - STOP LOSS hit for long at 2055.753967857143 | PnL: -0.50% | $-1.11 +2025-03-10 13:17:03,758 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.9484178571429 | Take profit: 2079.971448214286 +2025-03-10 13:17:03,784 - INFO - CLOSED long at 2049.5 | PnL: 0.01% | $-0.16 +2025-03-10 13:17:03,820 - INFO - OPENED LONG at 2051.99 | Stop loss: 2041.7145178571427 | Take profit: 2082.7931482142853 +2025-03-10 13:17:04,017 - INFO - CLOSED long at 2062.43 | PnL: 0.51% | $0.75 +2025-03-10 13:17:04,042 - INFO - OPENED LONG at 2062.55 | Stop loss: 2052.221717857143 | Take profit: 2093.511548214286 +2025-03-10 13:17:04,058 - INFO - CLOSED long at 2065.12 | PnL: 0.12% | $0.05 +2025-03-10 13:17:04,083 - INFO - OPENED LONG at 2068.33 | Stop loss: 2057.9728178571427 | Take profit: 2099.3782482142856 +2025-03-10 13:17:04,105 - INFO - CLOSED long at 2067.49 | PnL: -0.04% | $-0.26 +2025-03-10 13:17:04,105 - INFO - OPENED SHORT at 2067.49 | Stop loss: 2077.8429821428567 | Take profit: 2036.4543517857142 +2025-03-10 13:17:04,125 - INFO - CLOSED short at 2066.59 | PnL: 0.04% | $-0.10 +2025-03-10 13:17:04,125 - INFO - OPENED LONG at 2066.59 | Stop loss: 2056.241517857143 | Take profit: 2097.612148214286 +2025-03-10 13:17:04,261 - INFO - CLOSED long at 2061.84 | PnL: -0.23% | $-0.61 +2025-03-10 13:17:04,261 - INFO - OPENED SHORT at 2061.84 | Stop loss: 2072.1647321428572 | Take profit: 2030.8891017857145 +2025-03-10 13:17:04,293 - INFO - CLOSED short at 2062.54 | PnL: -0.03% | $-0.24 +2025-03-10 13:17:04,293 - INFO - OPENED LONG at 2062.54 | Stop loss: 2052.211767857143 | Take profit: 2093.5013982142855 +2025-03-10 13:17:04,546 - INFO - CLOSED long at 2074.9 | PnL: 0.60% | $0.91 +2025-03-10 13:17:04,578 - INFO - OPENED LONG at 2076.08 | Stop loss: 2065.684067857143 | Take profit: 2107.2444982142856 +2025-03-10 13:17:04,729 - INFO - TAKE PROFIT hit for long at 2107.2444982142856 | PnL: 1.50% | $2.58 +2025-03-10 13:17:04,754 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.826767857143 | Take profit: 2171.6563982142857 +2025-03-10 13:17:04,869 - INFO - CLOSED long at 2142.68 | PnL: 0.15% | $0.09 +2025-03-10 13:17:04,890 - INFO - OPENED LONG at 2140.01 | Stop loss: 2129.294417857143 | Take profit: 2172.133448214286 +2025-03-10 13:17:04,931 - INFO - STOP LOSS hit for long at 2129.294417857143 | PnL: -0.50% | $-1.14 +2025-03-10 13:17:04,954 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.647967857143 | Take profit: 2159.2327982142856 +2025-03-10 13:17:05,219 - INFO - STOP LOSS hit for long at 2116.647967857143 | PnL: -0.50% | $-1.12 +2025-03-10 13:17:05,241 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.8773178571428 | Take profit: 2139.0647482142854 +2025-03-10 13:17:05,262 - INFO - CLOSED long at 2110.6 | PnL: 0.15% | $0.09 +2025-03-10 13:17:05,263 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1685321428567 | Take profit: 2078.917701785714 +2025-03-10 13:17:05,287 - INFO - CLOSED short at 2109.05 | PnL: 0.07% | $-0.05 +2025-03-10 13:17:05,287 - INFO - OPENED LONG at 2109.05 | Stop loss: 2098.489217857143 | Take profit: 2140.709048214286 +2025-03-10 13:17:05,334 - INFO - CLOSED long at 2112.95 | PnL: 0.18% | $0.16 +2025-03-10 13:17:05,334 - INFO - OPENED SHORT at 2112.95 | Stop loss: 2123.5302821428572 | Take profit: 2081.232451785714 +2025-03-10 13:17:05,359 - INFO - CLOSED short at 2112.46 | PnL: 0.02% | $-0.14 +2025-03-10 13:17:05,359 - INFO - OPENED LONG at 2112.46 | Stop loss: 2101.882167857143 | Take profit: 2144.1701982142854 +2025-03-10 13:17:05,634 - INFO - STOP LOSS hit for long at 2101.882167857143 | PnL: -0.50% | $-1.11 +2025-03-10 13:17:05,657 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.5344678571428 | Take profit: 2121.3732982142856 +2025-03-10 13:17:05,882 - INFO - CLOSED long at 2106.39 | PnL: 0.78% | $1.25 +2025-03-10 13:17:05,911 - INFO - OPENED LONG at 2100.74 | Stop loss: 2090.2207678571426 | Take profit: 2132.2743982142856 +2025-03-10 13:17:06,063 - INFO - CLOSED long at 2095.29 | PnL: -0.26% | $-0.67 +2025-03-10 13:17:06,069 - INFO - OPENED SHORT at 2095.29 | Stop loss: 2105.7819821428575 | Take profit: 2063.8373517857144 +2025-03-10 13:17:06,088 - INFO - CLOSED short at 2093.46 | PnL: 0.09% | $-0.02 +2025-03-10 13:17:06,088 - INFO - OPENED LONG at 2093.46 | Stop loss: 2082.977167857143 | Take profit: 2124.8851982142855 +2025-03-10 13:17:06,382 - INFO - STOP LOSS hit for long at 2082.977167857143 | PnL: -0.50% | $-1.10 +2025-03-10 13:17:06,399 - INFO - OPENED LONG at 2081.49 | Stop loss: 2071.0670178571427 | Take profit: 2112.7356482142854 +2025-03-10 13:17:06,578 - INFO - CLOSED long at 2085.83 | PnL: 0.21% | $0.20 +2025-03-10 13:17:06,578 - INFO - OPENED SHORT at 2085.83 | Stop loss: 2096.2746821428573 | Take profit: 2054.519251785714 +2025-03-10 13:17:06,615 - INFO - CLOSED short at 2085.85 | PnL: -0.00% | $-0.18 +2025-03-10 13:17:06,615 - INFO - OPENED LONG at 2085.85 | Stop loss: 2075.405217857143 | Take profit: 2117.1610482142855 +2025-03-10 13:17:07,053 - INFO - CLOSED long at 2101.64 | PnL: 0.76% | $1.19 +2025-03-10 13:17:07,053 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.163732142857 | Take profit: 2070.092101785714 +2025-03-10 13:17:07,086 - INFO - CLOSED short at 2097.11 | PnL: 0.22% | $0.21 +2025-03-10 13:17:07,088 - INFO - OPENED LONG at 2097.11 | Stop loss: 2086.608917857143 | Take profit: 2128.589948214286 +2025-03-10 13:17:07,147 - INFO - CLOSED long at 2099.89 | PnL: 0.13% | $0.06 +2025-03-10 13:17:07,147 - INFO - OPENED SHORT at 2099.89 | Stop loss: 2110.404982142857 | Take profit: 2068.368351785714 +2025-03-10 13:17:07,179 - INFO - CLOSED short at 2100.89 | PnL: -0.05% | $-0.27 +2025-03-10 13:17:07,179 - INFO - OPENED LONG at 2100.89 | Stop loss: 2090.370017857143 | Take profit: 2132.4266482142853 +2025-03-10 13:17:07,384 - INFO - CLOSED long at 2105.2 | PnL: 0.21% | $0.19 +2025-03-10 13:17:07,414 - INFO - OPENED LONG at 2103.52 | Stop loss: 2092.986867857143 | Take profit: 2135.0960982142856 +2025-03-10 13:17:07,480 - INFO - Trade Analysis: Win Rate=7.1% in uptrends, 0.0% in downtrends | Avg Win=$0.57, Avg Loss=$-0.40 +2025-03-10 13:17:07,482 - INFO - Episode 26: Reward=144.47, Balance=$92.88, Win Rate=29.7%, Trades=64, Episode PnL=$-2.61, Total PnL=$-426.89, Max Drawdown=10.5%, Pred Accuracy=99.9% +2025-03-10 13:17:07,482 - ERROR - Error in episode 26: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:17:07,482 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1812, in train_agent + f"{trade_analysis.get('downtrend_win_rate', 0):.1f}% in downtrends | " + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:17:07,503 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:17:07,904 - INFO - OPENED LONG at 2046.58 | Stop loss: 2036.3315678571428 | Take profit: 2077.3019982142855 +2025-03-10 13:17:07,942 - INFO - CLOSED long at 2047.2 | PnL: 0.03% | $-0.14 +2025-03-10 13:17:07,942 - INFO - OPENED SHORT at 2047.2 | Stop loss: 2057.451532142857 | Take profit: 2016.4687017857143 +2025-03-10 13:17:07,968 - INFO - CLOSED short at 2045.99 | PnL: 0.06% | $-0.08 +2025-03-10 13:17:07,968 - INFO - OPENED LONG at 2045.99 | Stop loss: 2035.744517857143 | Take profit: 2076.703148214286 +2025-03-10 13:17:08,626 - INFO - CLOSED long at 2060.99 | PnL: 0.73% | $1.25 +2025-03-10 13:17:08,657 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9929678571432 | Take profit: 2089.1977982142857 +2025-03-10 13:17:08,865 - INFO - CLOSED long at 2058.11 | PnL: -0.01% | $-0.22 +2025-03-10 13:17:08,892 - INFO - OPENED LONG at 2061.79 | Stop loss: 2051.465517857143 | Take profit: 2092.740148214286 +2025-03-10 13:17:09,387 - INFO - CLOSED long at 2071.41 | PnL: 0.47% | $0.73 +2025-03-10 13:17:09,389 - INFO - OPENED SHORT at 2071.41 | Stop loss: 2081.782582142857 | Take profit: 2040.3155517857142 +2025-03-10 13:17:09,416 - INFO - CLOSED short at 2069.37 | PnL: 0.10% | $-0.00 +2025-03-10 13:17:09,416 - INFO - OPENED LONG at 2069.37 | Stop loss: 2059.0076178571426 | Take profit: 2100.4338482142857 +2025-03-10 13:17:09,613 - INFO - CLOSED long at 2068.9 | PnL: -0.02% | $-0.25 +2025-03-10 13:17:09,613 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.260032142857 | Take profit: 2037.8432017857144 +2025-03-10 13:17:09,633 - INFO - CLOSED short at 2070.7 | PnL: -0.09% | $-0.38 +2025-03-10 13:17:09,639 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3309678571427 | Take profit: 2101.7837982142855 +2025-03-10 13:17:10,016 - INFO - CLOSED long at 2068.59 | PnL: -0.10% | $-0.40 +2025-03-10 13:17:10,033 - INFO - OPENED LONG at 2069.7 | Stop loss: 2059.335967857143 | Take profit: 2100.7687982142857 +2025-03-10 13:17:10,271 - INFO - CLOSED long at 2074.29 | PnL: 0.22% | $0.24 +2025-03-10 13:17:10,301 - INFO - OPENED SHORT at 2073.9 | Stop loss: 2084.2850321428573 | Take profit: 2042.7682017857144 +2025-03-10 13:17:10,330 - INFO - CLOSED short at 2071.92 | PnL: 0.10% | $-0.01 +2025-03-10 13:17:10,330 - INFO - OPENED LONG at 2071.92 | Stop loss: 2061.544867857143 | Take profit: 2103.0220982142855 +2025-03-10 13:17:10,351 - INFO - CLOSED long at 2070.4 | PnL: -0.07% | $-0.35 +2025-03-10 13:17:10,375 - INFO - OPENED LONG at 2071.11 | Stop loss: 2060.738917857143 | Take profit: 2102.199948214286 +2025-03-10 13:17:10,412 - INFO - CLOSED long at 2069.35 | PnL: -0.08% | $-0.37 +2025-03-10 13:17:10,413 - INFO - OPENED SHORT at 2069.35 | Stop loss: 2079.7122821428575 | Take profit: 2038.2864517857142 +2025-03-10 13:17:10,434 - INFO - CLOSED short at 2068.32 | PnL: 0.05% | $-0.10 +2025-03-10 13:17:10,435 - INFO - OPENED LONG at 2068.32 | Stop loss: 2057.962867857143 | Take profit: 2099.368098214286 +2025-03-10 13:17:10,451 - INFO - CLOSED long at 2067.0 | PnL: -0.06% | $-0.32 +2025-03-10 13:17:10,452 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.350532142857 | Take profit: 2035.9717017857142 +2025-03-10 13:17:10,472 - INFO - CLOSED short at 2067.79 | PnL: -0.04% | $-0.27 +2025-03-10 13:17:10,472 - INFO - OPENED LONG at 2067.79 | Stop loss: 2057.4355178571427 | Take profit: 2098.8301482142856 +2025-03-10 13:17:20,497 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 13:17:20,519 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 13:17:20,519 - INFO - Fetching initial data for ETH/USDT +2025-03-10 13:17:24,269 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 13:17:24,294 - INFO - Initialized environment with 500 candles +2025-03-10 13:17:26,817 - INFO - Starting training for 1000 episodes... +2025-03-10 13:17:26,817 - INFO - Starting training on device: cuda +2025-03-10 13:17:26,844 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:17:27,122 - INFO - OPENED SHORT at 2048.13 | Stop loss: 2058.3860178571426 | Take profit: 2017.3849982142858 +2025-03-10 13:17:27,122 - INFO - CLOSED short at 2047.59 | PnL: 0.03% | $-0.15 +2025-03-10 13:17:27,122 - INFO - OPENED LONG at 2050.0 | Stop loss: 2039.7346321428572 | Take profit: 2080.7730517857144 +2025-03-10 13:17:27,122 - INFO - CLOSED long at 2053.26 | PnL: 0.16% | $0.12 +2025-03-10 13:17:27,126 - INFO - OPENED SHORT at 2053.26 | Stop loss: 2063.5416678571432 | Take profit: 2022.4380482142858 +2025-03-10 13:17:27,126 - INFO - CLOSED short at 2051.89 | PnL: 0.07% | $-0.07 +2025-03-10 13:17:27,126 - INFO - OPENED LONG at 2051.89 | Stop loss: 2041.615182142857 | Take profit: 2082.691401785714 +2025-03-10 13:17:27,126 - INFO - CLOSED long at 2052.3 | PnL: 0.02% | $-0.16 +2025-03-10 13:17:27,126 - INFO - OPENED SHORT at 2052.3 | Stop loss: 2062.576867857143 | Take profit: 2021.492448214286 +2025-03-10 13:17:27,126 - INFO - CLOSED short at 2060.13 | PnL: -0.38% | $-0.95 +2025-03-10 13:17:27,126 - INFO - OPENED LONG at 2060.13 | Stop loss: 2049.813982142857 | Take profit: 2091.0550017857145 +2025-03-10 13:17:27,126 - INFO - CLOSED long at 2059.7 | PnL: -0.02% | $-0.24 +2025-03-10 13:17:27,130 - INFO - OPENED SHORT at 2059.7 | Stop loss: 2070.0138678571425 | Take profit: 2028.7814482142855 +2025-03-10 13:17:27,131 - INFO - CLOSED short at 2064.61 | PnL: -0.24% | $-0.66 +2025-03-10 13:17:27,131 - INFO - OPENED SHORT at 2063.59 | Stop loss: 2073.923317857143 | Take profit: 2032.6130982142859 +2025-03-10 13:17:27,132 - INFO - CLOSED short at 2061.61 | PnL: 0.10% | $-0.01 +2025-03-10 13:17:27,133 - INFO - OPENED SHORT at 2064.69 | Stop loss: 2075.028817857143 | Take profit: 2033.6965982142856 +2025-03-10 13:17:27,134 - INFO - CLOSED short at 2060.99 | PnL: 0.18% | $0.15 +2025-03-10 13:17:27,134 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9931321428573 | Take profit: 2089.197551785714 +2025-03-10 13:17:27,136 - INFO - CLOSED long at 2061.89 | PnL: 0.17% | $0.14 +2025-03-10 13:17:27,136 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.214817857143 | Take profit: 2030.9385982142855 +2025-03-10 13:17:27,137 - INFO - CLOSED short at 2059.49 | PnL: 0.12% | $0.03 +2025-03-10 13:17:27,138 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.194817857143 | Take profit: 2026.9985982142855 +2025-03-10 13:17:27,139 - INFO - CLOSED short at 2057.94 | PnL: -0.00% | $-0.20 +2025-03-10 13:17:27,139 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.415917857143 | Take profit: 2027.215298214286 +2025-03-10 13:17:27,140 - INFO - CLOSED short at 2061.18 | PnL: -0.15% | $-0.48 +2025-03-10 13:17:27,140 - INFO - OPENED SHORT at 2065.86 | Stop loss: 2076.2046678571432 | Take profit: 2034.8490482142859 +2025-03-10 13:17:27,141 - INFO - CLOSED short at 2070.58 | PnL: -0.23% | $-0.64 +2025-03-10 13:17:27,141 - INFO - OPENED LONG at 2070.58 | Stop loss: 2060.2117321428573 | Take profit: 2101.6617517857144 +2025-03-10 13:17:27,143 - INFO - CLOSED long at 2069.6 | PnL: -0.05% | $-0.28 +2025-03-10 13:17:27,143 - INFO - OPENED SHORT at 2069.6 | Stop loss: 2079.963367857143 | Take profit: 2038.5329482142856 +2025-03-10 13:17:27,145 - INFO - CLOSED short at 2070.26 | PnL: -0.03% | $-0.25 +2025-03-10 13:17:27,145 - INFO - OPENED LONG at 2070.26 | Stop loss: 2059.893332142857 | Take profit: 2101.3369517857145 +2025-03-10 13:17:27,146 - INFO - CLOSED long at 2075.1 | PnL: 0.23% | $0.26 +2025-03-10 13:17:27,146 - INFO - OPENED SHORT at 2075.1 | Stop loss: 2085.490867857143 | Take profit: 2043.9504482142856 +2025-03-10 13:17:27,148 - INFO - CLOSED short at 2072.33 | PnL: 0.13% | $0.06 +2025-03-10 13:17:27,148 - INFO - OPENED LONG at 2071.38 | Stop loss: 2061.0077321428575 | Take profit: 2102.4737517857143 +2025-03-10 13:17:27,149 - INFO - CLOSED long at 2071.41 | PnL: 0.00% | $-0.19 +2025-03-10 13:17:27,149 - INFO - OPENED SHORT at 2071.41 | Stop loss: 2081.7824178571427 | Take profit: 2040.3157982142855 +2025-03-10 13:17:27,150 - INFO - CLOSED short at 2069.37 | PnL: 0.10% | $-0.00 +2025-03-10 13:17:27,150 - INFO - OPENED LONG at 2069.37 | Stop loss: 2059.007782142857 | Take profit: 2100.4336017857145 +2025-03-10 13:17:27,150 - INFO - CLOSED long at 2072.8 | PnL: 0.17% | $0.13 +2025-03-10 13:17:27,150 - INFO - OPENED SHORT at 2072.8 | Stop loss: 2083.179367857143 | Take profit: 2041.684948214286 +2025-03-10 13:17:27,152 - INFO - CLOSED short at 2070.79 | PnL: 0.10% | $-0.01 +2025-03-10 13:17:27,152 - INFO - OPENED LONG at 2070.79 | Stop loss: 2060.420682142857 | Take profit: 2101.874901785714 +2025-03-10 13:17:27,153 - INFO - CLOSED long at 2070.28 | PnL: -0.02% | $-0.24 +2025-03-10 13:17:27,153 - INFO - OPENED SHORT at 2070.28 | Stop loss: 2080.6467678571435 | Take profit: 2039.202748214286 +2025-03-10 13:17:27,154 - INFO - CLOSED short at 2067.2 | PnL: 0.15% | $0.09 +2025-03-10 13:17:27,296 - INFO - OPENED LONG at 2070.36 | Stop loss: 2059.992832142857 | Take profit: 2101.4384517857143 +2025-03-10 13:17:27,318 - INFO - CLOSED long at 2068.9 | PnL: -0.07% | $-0.33 +2025-03-10 13:17:27,392 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.4406321428573 | Take profit: 2099.8550517857147 +2025-03-10 13:17:27,410 - INFO - CLOSED long at 2067.6 | PnL: -0.06% | $-0.30 +2025-03-10 13:17:27,427 - INFO - OPENED LONG at 2067.51 | Stop loss: 2057.1570821428572 | Take profit: 2098.5457017857143 +2025-03-10 13:17:27,464 - INFO - CLOSED long at 2066.39 | PnL: -0.05% | $-0.29 +2025-03-10 13:17:27,484 - INFO - OPENED SHORT at 2065.99 | Stop loss: 2076.335317857143 | Take profit: 2034.9770982142854 +2025-03-10 13:17:27,520 - INFO - CLOSED short at 2066.29 | PnL: -0.01% | $-0.22 +2025-03-10 13:17:27,520 - INFO - OPENED LONG at 2066.29 | Stop loss: 2055.943182142857 | Take profit: 2097.3074017857143 +2025-03-10 13:17:27,555 - INFO - CLOSED long at 2066.18 | PnL: -0.01% | $-0.20 +2025-03-10 13:17:27,591 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.259867857143 | Take profit: 2037.843448214286 +2025-03-10 13:17:27,627 - INFO - CLOSED short at 2068.59 | PnL: 0.01% | $-0.16 +2025-03-10 13:17:27,627 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.231682142857 | Take profit: 2099.6419017857143 +2025-03-10 13:17:27,678 - INFO - CLOSED long at 2069.96 | PnL: 0.07% | $-0.06 +2025-03-10 13:17:27,697 - INFO - OPENED SHORT at 2071.4 | Stop loss: 2081.7723678571433 | Take profit: 2040.305948214286 +2025-03-10 13:17:27,714 - INFO - CLOSED short at 2071.39 | PnL: 0.00% | $-0.19 +2025-03-10 13:17:27,714 - INFO - OPENED LONG at 2071.39 | Stop loss: 2061.0176821428568 | Take profit: 2102.483901785714 +2025-03-10 13:17:27,731 - INFO - CLOSED long at 2071.36 | PnL: -0.00% | $-0.19 +2025-03-10 13:17:27,731 - INFO - OPENED SHORT at 2071.36 | Stop loss: 2081.732167857143 | Take profit: 2040.2665482142859 +2025-03-10 13:17:27,752 - INFO - CLOSED short at 2072.75 | PnL: -0.07% | $-0.31 +2025-03-10 13:17:27,752 - INFO - OPENED LONG at 2072.75 | Stop loss: 2062.370882142857 | Take profit: 2103.8643017857144 +2025-03-10 13:17:27,770 - INFO - CLOSED long at 2073.11 | PnL: 0.02% | $-0.15 +2025-03-10 13:17:27,786 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.0788678571425 | Take profit: 2041.5864482142856 +2025-03-10 13:17:27,817 - INFO - CLOSED short at 2074.29 | PnL: -0.08% | $-0.33 +2025-03-10 13:17:27,916 - INFO - OPENED LONG at 2069.35 | Stop loss: 2058.987882142857 | Take profit: 2100.413301785714 +2025-03-10 13:17:27,942 - INFO - CLOSED long at 2068.32 | PnL: -0.05% | $-0.28 +2025-03-10 13:17:28,020 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.1493678571433 | Take profit: 2035.7749482142858 +2025-03-10 13:17:28,061 - INFO - CLOSED short at 2063.61 | PnL: 0.15% | $0.10 +2025-03-10 13:17:28,093 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.244817857143 | Take profit: 2036.8485982142856 +2025-03-10 13:17:28,149 - INFO - CLOSED short at 2069.34 | PnL: -0.07% | $-0.32 +2025-03-10 13:17:28,167 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.5053321428572 | Take profit: 2098.9009517857144 +2025-03-10 13:17:28,188 - INFO - CLOSED long at 2067.59 | PnL: -0.01% | $-0.21 +2025-03-10 13:17:28,188 - INFO - OPENED SHORT at 2067.59 | Stop loss: 2077.943317857143 | Take profit: 2036.553098214286 +2025-03-10 13:17:28,209 - INFO - CLOSED short at 2069.2 | PnL: -0.08% | $-0.33 +2025-03-10 13:17:28,249 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.963317857143 | Take profit: 2040.493098214286 +2025-03-10 13:17:28,269 - INFO - CLOSED short at 2070.7 | PnL: 0.04% | $-0.10 +2025-03-10 13:17:28,292 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.767367857143 | Take profit: 2039.3209482142859 +2025-03-10 13:17:28,362 - INFO - CLOSED short at 2067.84 | PnL: 0.12% | $0.04 +2025-03-10 13:17:28,362 - INFO - OPENED LONG at 2067.84 | Stop loss: 2057.4854321428575 | Take profit: 2098.8806517857142 +2025-03-10 13:17:28,434 - INFO - CLOSED long at 2066.1 | PnL: -0.08% | $-0.34 +2025-03-10 13:17:28,434 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.4458678571427 | Take profit: 2035.0854482142856 +2025-03-10 13:17:28,468 - INFO - CLOSED short at 2066.39 | PnL: -0.01% | $-0.21 +2025-03-10 13:17:28,531 - INFO - OPENED SHORT at 2067.8 | Stop loss: 2078.1543678571434 | Take profit: 2036.759948214286 +2025-03-10 13:17:28,575 - INFO - CLOSED short at 2065.69 | PnL: 0.10% | $0.00 +2025-03-10 13:17:28,575 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.3461821428573 | Take profit: 2096.6984017857144 +2025-03-10 13:17:28,610 - INFO - CLOSED long at 2064.99 | PnL: -0.03% | $-0.24 +2025-03-10 13:17:28,670 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.9183321428573 | Take profit: 2096.2619517857147 +2025-03-10 13:17:28,709 - INFO - CLOSED long at 2062.65 | PnL: -0.13% | $-0.41 +2025-03-10 13:17:28,709 - INFO - OPENED SHORT at 2062.65 | Stop loss: 2072.978617857143 | Take profit: 2031.6871982142857 +2025-03-10 13:17:28,725 - INFO - CLOSED short at 2061.78 | PnL: 0.04% | $-0.10 +2025-03-10 13:17:28,725 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.4557321428574 | Take profit: 2092.7297517857146 +2025-03-10 13:17:28,762 - INFO - CLOSED long at 2061.3 | PnL: -0.02% | $-0.22 +2025-03-10 13:17:28,762 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.621867857143 | Take profit: 2030.357448214286 +2025-03-10 13:17:28,786 - INFO - CLOSED short at 2063.59 | PnL: -0.11% | $-0.38 +2025-03-10 13:17:28,786 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.2566821428572 | Take profit: 2094.5669017857144 +2025-03-10 13:17:28,806 - INFO - CLOSED long at 2064.96 | PnL: 0.07% | $-0.06 +2025-03-10 13:17:28,867 - INFO - OPENED LONG at 2065.54 | Stop loss: 2055.196932142857 | Take profit: 2096.5461517857143 +2025-03-10 13:17:28,891 - INFO - CLOSED long at 2066.09 | PnL: 0.03% | $-0.13 +2025-03-10 13:17:28,909 - INFO - OPENED LONG at 2064.45 | Stop loss: 2054.112382142857 | Take profit: 2095.439801785714 +2025-03-10 13:17:28,960 - INFO - CLOSED long at 2062.89 | PnL: -0.08% | $-0.32 +2025-03-10 13:17:28,963 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.2198178571425 | Take profit: 2031.9235982142857 +2025-03-10 13:17:29,014 - INFO - CLOSED short at 2061.6 | PnL: 0.06% | $-0.07 +2025-03-10 13:17:29,015 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.276632142857 | Take profit: 2092.5470517857143 +2025-03-10 13:17:29,052 - INFO - CLOSED long at 2060.65 | PnL: -0.05% | $-0.26 +2025-03-10 13:17:29,052 - INFO - OPENED SHORT at 2060.65 | Stop loss: 2070.9686178571433 | Take profit: 2029.7171982142859 +2025-03-10 13:17:29,070 - INFO - CLOSED short at 2058.89 | PnL: 0.09% | $-0.03 +2025-03-10 13:17:29,084 - INFO - OPENED SHORT at 2059.3 | Stop loss: 2069.611867857143 | Take profit: 2028.3874482142858 +2025-03-10 13:17:29,141 - INFO - CLOSED short at 2064.7 | PnL: -0.26% | $-0.65 +2025-03-10 13:17:29,141 - INFO - OPENED LONG at 2064.7 | Stop loss: 2054.361132142857 | Take profit: 2095.693551785714 +2025-03-10 13:17:29,162 - INFO - CLOSED long at 2062.61 | PnL: -0.10% | $-0.36 +2025-03-10 13:17:29,245 - INFO - OPENED LONG at 2064.1 | Stop loss: 2053.764132142857 | Take profit: 2095.084551785714 +2025-03-10 13:17:29,268 - INFO - CLOSED long at 2065.36 | PnL: 0.06% | $-0.07 +2025-03-10 13:17:29,268 - INFO - OPENED SHORT at 2065.36 | Stop loss: 2075.702167857143 | Take profit: 2034.3565482142858 +2025-03-10 13:17:29,286 - INFO - CLOSED short at 2064.33 | PnL: 0.05% | $-0.09 +2025-03-10 13:17:29,385 - INFO - OPENED LONG at 2063.0 | Stop loss: 2052.669632142857 | Take profit: 2093.968051785714 +2025-03-10 13:17:29,424 - INFO - CLOSED long at 2061.89 | PnL: -0.05% | $-0.27 +2025-03-10 13:17:29,442 - INFO - OPENED SHORT at 2061.7 | Stop loss: 2072.0238678571427 | Take profit: 2030.7514482142856 +2025-03-10 13:17:29,475 - INFO - CLOSED short at 2061.09 | PnL: 0.03% | $-0.12 +2025-03-10 13:17:29,545 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.580182142857 | Take profit: 2089.7964017857144 +2025-03-10 13:17:29,574 - INFO - CLOSED long at 2059.96 | PnL: 0.05% | $-0.08 +2025-03-10 13:17:29,603 - INFO - OPENED LONG at 2057.4 | Stop loss: 2047.0976321428573 | Take profit: 2088.2840517857144 +2025-03-10 13:17:29,666 - INFO - CLOSED long at 2055.6 | PnL: -0.09% | $-0.33 +2025-03-10 13:17:29,685 - INFO - OPENED SHORT at 2054.89 | Stop loss: 2065.1798178571426 | Take profit: 2024.0435982142856 +2025-03-10 13:17:29,700 - INFO - CLOSED short at 2054.83 | PnL: 0.00% | $-0.17 +2025-03-10 13:17:29,758 - INFO - OPENED SHORT at 2059.8 | Stop loss: 2070.1143678571434 | Take profit: 2028.8799482142858 +2025-03-10 13:17:29,794 - INFO - CLOSED short at 2061.5 | PnL: -0.08% | $-0.32 +2025-03-10 13:17:29,812 - INFO - OPENED SHORT at 2061.6 | Stop loss: 2071.9233678571427 | Take profit: 2030.6529482142857 +2025-03-10 13:17:29,867 - INFO - CLOSED short at 2063.4 | PnL: -0.09% | $-0.33 +2025-03-10 13:17:29,909 - INFO - OPENED LONG at 2066.01 | Stop loss: 2055.6645821428574 | Take profit: 2097.0232017857147 +2025-03-10 13:17:29,981 - INFO - CLOSED long at 2066.34 | PnL: 0.02% | $-0.15 +2025-03-10 13:17:29,981 - INFO - OPENED SHORT at 2066.34 | Stop loss: 2076.687067857143 | Take profit: 2035.3218482142859 +2025-03-10 13:17:30,021 - INFO - CLOSED short at 2067.33 | PnL: -0.05% | $-0.26 +2025-03-10 13:17:30,021 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.977982142857 | Take profit: 2098.363001785714 +2025-03-10 13:17:30,039 - INFO - CLOSED long at 2067.01 | PnL: -0.02% | $-0.20 +2025-03-10 13:17:30,058 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.033817857143 | Take profit: 2034.6815982142857 +2025-03-10 13:17:30,117 - INFO - STOP LOSS hit for short at 2076.033817857143 | PnL: -0.50% | $-1.03 +2025-03-10 13:17:30,144 - INFO - OPENED LONG at 2075.01 | Stop loss: 2064.6195821428573 | Take profit: 2106.1582017857145 +2025-03-10 13:17:30,182 - INFO - CLOSED long at 2071.04 | PnL: -0.19% | $-0.49 +2025-03-10 13:17:30,258 - INFO - OPENED LONG at 2070.0 | Stop loss: 2059.634632142857 | Take profit: 2101.0730517857146 +2025-03-10 13:17:30,324 - INFO - CLOSED long at 2069.03 | PnL: -0.05% | $-0.25 +2025-03-10 13:17:30,324 - INFO - OPENED SHORT at 2069.03 | Stop loss: 2079.390517857143 | Take profit: 2037.9714982142857 +2025-03-10 13:17:30,369 - INFO - CLOSED short at 2068.79 | PnL: 0.01% | $-0.15 +2025-03-10 13:17:30,433 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.977982142857 | Take profit: 2098.363001785714 +2025-03-10 13:17:30,475 - INFO - CLOSED long at 2065.7 | PnL: -0.08% | $-0.30 +2025-03-10 13:17:30,475 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.0438678571427 | Take profit: 2034.6914482142856 +2025-03-10 13:17:30,496 - INFO - CLOSED short at 2065.66 | PnL: 0.00% | $-0.16 +2025-03-10 13:17:30,533 - INFO - OPENED LONG at 2063.97 | Stop loss: 2053.6347821428567 | Take profit: 2094.9526017857143 +2025-03-10 13:17:30,595 - INFO - CLOSED long at 2064.4 | PnL: 0.02% | $-0.13 +2025-03-10 13:17:30,595 - INFO - OPENED SHORT at 2064.4 | Stop loss: 2074.737367857143 | Take profit: 2033.4109482142858 +2025-03-10 13:17:30,642 - INFO - CLOSED short at 2067.53 | PnL: -0.15% | $-0.42 +2025-03-10 13:17:30,642 - INFO - OPENED LONG at 2067.53 | Stop loss: 2057.1769821428575 | Take profit: 2098.566001785715 +2025-03-10 13:17:30,700 - INFO - CLOSED long at 2066.8 | PnL: -0.04% | $-0.22 +2025-03-10 13:17:30,700 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.1493678571433 | Take profit: 2035.7749482142858 +2025-03-10 13:17:30,719 - INFO - CLOSED short at 2066.5 | PnL: 0.01% | $-0.14 +2025-03-10 13:17:30,719 - INFO - OPENED LONG at 2066.5 | Stop loss: 2056.152132142857 | Take profit: 2097.520551785714 +2025-03-10 13:17:30,736 - INFO - CLOSED long at 2068.59 | PnL: 0.10% | $0.00 +2025-03-10 13:17:30,736 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.948317857143 | Take profit: 2037.5380982142858 +2025-03-10 13:17:30,756 - INFO - CLOSED short at 2071.59 | PnL: -0.15% | $-0.40 +2025-03-10 13:17:30,779 - INFO - OPENED LONG at 2070.2 | Stop loss: 2059.833632142857 | Take profit: 2101.276051785714 +2025-03-10 13:17:30,829 - INFO - CLOSED long at 2069.69 | PnL: -0.02% | $-0.20 +2025-03-10 13:17:30,829 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.0538178571433 | Take profit: 2038.6215982142858 +2025-03-10 13:17:30,909 - INFO - CLOSED short at 2071.99 | PnL: -0.11% | $-0.35 +2025-03-10 13:17:30,934 - INFO - OPENED LONG at 2068.19 | Stop loss: 2057.8336821428575 | Take profit: 2099.2359017857148 +2025-03-10 13:17:30,958 - INFO - CLOSED long at 2068.67 | PnL: 0.02% | $-0.13 +2025-03-10 13:17:30,958 - INFO - OPENED SHORT at 2068.67 | Stop loss: 2079.028717857143 | Take profit: 2037.6168982142858 +2025-03-10 13:17:30,996 - INFO - CLOSED short at 2069.78 | PnL: -0.05% | $-0.25 +2025-03-10 13:17:31,051 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.460717857143 | Take profit: 2043.920898214286 +2025-03-10 13:17:31,143 - INFO - CLOSED short at 2075.32 | PnL: -0.01% | $-0.18 +2025-03-10 13:17:31,143 - INFO - OPENED LONG at 2075.32 | Stop loss: 2064.9280321428573 | Take profit: 2106.4728517857143 +2025-03-10 13:17:31,280 - INFO - CLOSED long at 2072.09 | PnL: -0.16% | $-0.41 +2025-03-10 13:17:31,280 - INFO - OPENED SHORT at 2072.09 | Stop loss: 2082.465817857143 | Take profit: 2040.985598214286 +2025-03-10 13:17:31,316 - INFO - CLOSED short at 2069.97 | PnL: 0.10% | $0.00 +2025-03-10 13:17:31,341 - INFO - OPENED SHORT at 2067.7 | Stop loss: 2078.0538678571424 | Take profit: 2036.6614482142857 +2025-03-10 13:17:31,360 - INFO - CLOSED short at 2067.0 | PnL: 0.03% | $-0.11 +2025-03-10 13:17:31,435 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.525232142857 | Take profit: 2098.9212517857145 +2025-03-10 13:17:31,524 - INFO - CLOSED long at 2070.1 | PnL: 0.11% | $0.01 +2025-03-10 13:17:31,542 - INFO - OPENED LONG at 2067.19 | Stop loss: 2056.838682142857 | Take profit: 2098.220901785714 +2025-03-10 13:17:31,576 - INFO - CLOSED long at 2065.5 | PnL: -0.08% | $-0.29 +2025-03-10 13:17:31,576 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.8428678571427 | Take profit: 2034.4944482142857 +2025-03-10 13:17:31,685 - INFO - CLOSED short at 2066.09 | PnL: -0.03% | $-0.21 +2025-03-10 13:17:31,685 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.7441821428574 | Take profit: 2097.1044017857143 +2025-03-10 13:17:31,718 - INFO - CLOSED long at 2063.39 | PnL: -0.13% | $-0.37 +2025-03-10 13:17:31,761 - INFO - OPENED SHORT at 2063.98 | Stop loss: 2074.3152678571428 | Take profit: 2032.9972482142857 +2025-03-10 13:17:31,784 - INFO - CLOSED short at 2066.1 | PnL: -0.10% | $-0.32 +2025-03-10 13:17:31,784 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.754132142857 | Take profit: 2097.1145517857144 +2025-03-10 13:17:31,802 - INFO - CLOSED long at 2065.06 | PnL: -0.05% | $-0.24 +2025-03-10 13:17:31,837 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.162132142857 | Take profit: 2095.4905517857146 +2025-03-10 13:17:31,856 - INFO - CLOSED long at 2066.33 | PnL: 0.09% | $-0.02 +2025-03-10 13:17:31,856 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6770178571423 | Take profit: 2035.3119982142855 +2025-03-10 13:17:31,877 - INFO - CLOSED short at 2063.01 | PnL: 0.16% | $0.10 +2025-03-10 13:17:31,913 - INFO - OPENED LONG at 2060.2 | Stop loss: 2049.883632142857 | Take profit: 2091.126051785714 +2025-03-10 13:17:31,931 - INFO - CLOSED long at 2059.2 | PnL: -0.05% | $-0.24 +2025-03-10 13:17:32,098 - INFO - OPENED SHORT at 2049.5 | Stop loss: 2059.762867857143 | Take profit: 2018.7344482142857 +2025-03-10 13:17:32,132 - INFO - CLOSED short at 2051.99 | PnL: -0.12% | $-0.35 +2025-03-10 13:17:32,155 - INFO - OPENED SHORT at 2058.3 | Stop loss: 2068.6068678571432 | Take profit: 2027.4024482142859 +2025-03-10 13:17:32,192 - INFO - CLOSED short at 2057.11 | PnL: 0.06% | $-0.07 +2025-03-10 13:17:32,192 - INFO - OPENED LONG at 2057.11 | Stop loss: 2046.8090821428573 | Take profit: 2087.9897017857147 +2025-03-10 13:17:32,210 - INFO - CLOSED long at 2057.89 | PnL: 0.04% | $-0.10 +2025-03-10 13:17:32,230 - INFO - OPENED LONG at 2062.83 | Stop loss: 2052.500482142857 | Take profit: 2093.7955017857144 +2025-03-10 13:17:32,254 - INFO - CLOSED long at 2063.9 | PnL: 0.05% | $-0.08 +2025-03-10 13:17:32,292 - INFO - OPENED LONG at 2062.43 | Stop loss: 2052.102482142857 | Take profit: 2093.389501785714 +2025-03-10 13:17:32,406 - INFO - CLOSED long at 2066.59 | PnL: 0.20% | $0.16 +2025-03-10 13:17:32,406 - INFO - OPENED SHORT at 2066.59 | Stop loss: 2076.938317857143 | Take profit: 2035.5680982142858 +2025-03-10 13:17:32,529 - INFO - CLOSED short at 2060.7 | PnL: 0.29% | $0.29 +2025-03-10 13:17:32,530 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.381132142857 | Take profit: 2091.6335517857137 +2025-03-10 13:17:32,610 - INFO - CLOSED long at 2070.31 | PnL: 0.47% | $0.58 +2025-03-10 13:17:32,610 - INFO - OPENED SHORT at 2070.31 | Stop loss: 2080.676917857143 | Take profit: 2039.2322982142857 +2025-03-10 13:17:32,630 - INFO - CLOSED short at 2070.24 | PnL: 0.00% | $-0.15 +2025-03-10 13:17:32,630 - INFO - OPENED LONG at 2070.24 | Stop loss: 2059.873432142857 | Take profit: 2101.316651785714 +2025-03-10 13:17:32,682 - INFO - CLOSED long at 2070.41 | PnL: 0.01% | $-0.15 +2025-03-10 13:17:32,704 - INFO - OPENED LONG at 2073.49 | Stop loss: 2063.107182142857 | Take profit: 2104.6154017857143 +2025-03-10 13:17:32,744 - INFO - CLOSED long at 2072.99 | PnL: -0.02% | $-0.20 +2025-03-10 13:17:32,770 - INFO - OPENED LONG at 2071.89 | Stop loss: 2061.515182142857 | Take profit: 2102.991401785714 +2025-03-10 13:17:32,828 - INFO - CLOSED long at 2074.9 | PnL: 0.15% | $0.07 +2025-03-10 13:17:32,828 - INFO - OPENED SHORT at 2074.9 | Stop loss: 2085.2898678571432 | Take profit: 2043.7534482142858 +2025-03-10 13:17:32,919 - INFO - CLOSED short at 2085.56 | PnL: -0.51% | $-0.97 +2025-03-10 13:17:32,919 - INFO - OPENED LONG at 2085.56 | Stop loss: 2075.116832142857 | Take profit: 2116.866451785714 +2025-03-10 13:17:32,960 - INFO - CLOSED long at 2103.02 | PnL: 0.84% | $1.15 +2025-03-10 13:17:32,960 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.550467857143 | Take profit: 2071.451648214286 +2025-03-10 13:17:32,977 - INFO - CLOSED short at 2130.7 | PnL: -1.32% | $-2.24 +2025-03-10 13:17:32,998 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.826932142857 | Take profit: 2171.6561517857144 +2025-03-10 13:17:33,084 - INFO - CLOSED long at 2141.3 | PnL: 0.08% | $-0.03 +2025-03-10 13:17:33,084 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.021867857143 | Take profit: 2109.157448214286 +2025-03-10 13:17:33,100 - INFO - CLOSED short at 2142.68 | PnL: -0.06% | $-0.25 +2025-03-10 13:17:33,166 - INFO - OPENED LONG at 2126.99 | Stop loss: 2116.339682142857 | Take profit: 2158.917901785714 +2025-03-10 13:17:33,266 - INFO - CLOSED long at 2120.15 | PnL: -0.32% | $-0.65 +2025-03-10 13:17:33,266 - INFO - OPENED SHORT at 2120.15 | Stop loss: 2130.766117857143 | Take profit: 2088.324698214286 +2025-03-10 13:17:33,324 - INFO - CLOSED short at 2119.93 | PnL: 0.01% | $-0.14 +2025-03-10 13:17:33,412 - INFO - OPENED SHORT at 2115.28 | Stop loss: 2125.871767857143 | Take profit: 2083.527748214286 +2025-03-10 13:17:33,429 - INFO - CLOSED short at 2107.43 | PnL: 0.37% | $0.41 +2025-03-10 13:17:33,497 - INFO - OPENED LONG at 2112.95 | Stop loss: 2102.369882142857 | Take profit: 2144.667301785714 +2025-03-10 13:17:33,524 - INFO - CLOSED long at 2112.46 | PnL: -0.02% | $-0.19 +2025-03-10 13:17:33,524 - INFO - OPENED SHORT at 2112.46 | Stop loss: 2123.037667857143 | Take profit: 2080.750048214286 +2025-03-10 13:17:33,557 - INFO - CLOSED short at 2112.99 | PnL: -0.03% | $-0.19 +2025-03-10 13:17:33,632 - INFO - OPENED SHORT at 2114.8 | Stop loss: 2125.389367857143 | Take profit: 2083.054948214286 +2025-03-10 13:17:33,689 - INFO - CLOSED short at 2108.71 | PnL: 0.29% | $0.29 +2025-03-10 13:17:33,689 - INFO - OPENED LONG at 2108.71 | Stop loss: 2098.1510821428574 | Take profit: 2140.3637017857145 +2025-03-10 13:17:33,722 - INFO - CLOSED long at 2106.49 | PnL: -0.11% | $-0.31 +2025-03-10 13:17:33,722 - INFO - OPENED SHORT at 2106.49 | Stop loss: 2117.0378178571427 | Take profit: 2074.8695982142854 +2025-03-10 13:17:33,737 - INFO - CLOSED short at 2108.06 | PnL: -0.07% | $-0.26 +2025-03-10 13:17:33,744 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.504332142857 | Take profit: 2139.703951785714 +2025-03-10 13:17:33,797 - INFO - STOP LOSS hit for long at 2097.504332142857 | PnL: -0.50% | $-0.91 +2025-03-10 13:17:33,860 - INFO - OPENED LONG at 2102.29 | Stop loss: 2091.763182142857 | Take profit: 2133.8474017857143 +2025-03-10 13:17:33,884 - INFO - CLOSED long at 2099.25 | PnL: -0.14% | $-0.37 +2025-03-10 13:17:33,885 - INFO - OPENED SHORT at 2099.25 | Stop loss: 2109.761617857143 | Take profit: 2067.7381982142856 +2025-03-10 13:17:33,900 - INFO - CLOSED short at 2098.9 | PnL: 0.02% | $-0.12 +2025-03-10 13:17:33,920 - INFO - OPENED SHORT at 2100.69 | Stop loss: 2111.208817857143 | Take profit: 2069.1565982142856 +2025-03-10 13:17:33,984 - INFO - CLOSED short at 2100.74 | PnL: -0.00% | $-0.15 +2025-03-10 13:17:34,054 - INFO - OPENED SHORT at 2101.51 | Stop loss: 2112.0329178571433 | Take profit: 2069.964298214286 +2025-03-10 13:17:34,084 - INFO - CLOSED short at 2099.59 | PnL: 0.09% | $-0.01 +2025-03-10 13:17:34,084 - INFO - OPENED LONG at 2099.59 | Stop loss: 2089.0766821428574 | Take profit: 2131.1069017857144 +2025-03-10 13:17:34,108 - INFO - CLOSED long at 2100.02 | PnL: 0.02% | $-0.12 +2025-03-10 13:17:34,108 - INFO - OPENED SHORT at 2100.02 | Stop loss: 2110.535467857143 | Take profit: 2068.496648214286 +2025-03-10 13:17:34,175 - INFO - CLOSED short at 2093.46 | PnL: 0.31% | $0.31 +2025-03-10 13:17:34,193 - INFO - OPENED SHORT at 2093.33 | Stop loss: 2103.8120178571426 | Take profit: 2061.9069982142855 +2025-03-10 13:17:34,247 - INFO - CLOSED short at 2094.72 | PnL: -0.07% | $-0.25 +2025-03-10 13:17:34,247 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.231032142857 | Take profit: 2126.163851785714 +2025-03-10 13:17:34,299 - INFO - CLOSED long at 2083.28 | PnL: -0.55% | $-0.96 +2025-03-10 13:17:34,354 - INFO - OPENED SHORT at 2085.3 | Stop loss: 2095.741867857143 | Take profit: 2053.9974482142857 +2025-03-10 13:17:34,424 - INFO - CLOSED short at 2080.38 | PnL: 0.24% | $0.20 +2025-03-10 13:17:34,495 - INFO - OPENED SHORT at 2085.09 | Stop loss: 2095.5308178571427 | Take profit: 2053.790598214286 +2025-03-10 13:17:34,540 - INFO - CLOSED short at 2086.57 | PnL: -0.07% | $-0.25 +2025-03-10 13:17:34,575 - INFO - OPENED SHORT at 2084.72 | Stop loss: 2095.1589678571427 | Take profit: 2053.4261482142856 +2025-03-10 13:17:34,611 - INFO - CLOSED short at 2085.85 | PnL: -0.05% | $-0.23 +2025-03-10 13:17:34,714 - INFO - OPENED LONG at 2089.96 | Stop loss: 2079.494832142857 | Take profit: 2121.332451785714 +2025-03-10 13:17:34,877 - INFO - CLOSED long at 2086.81 | PnL: -0.15% | $-0.37 +2025-03-10 13:17:34,877 - INFO - OPENED SHORT at 2086.81 | Stop loss: 2097.2594178571426 | Take profit: 2055.4847982142855 +2025-03-10 13:17:34,899 - INFO - CLOSED short at 2089.79 | PnL: -0.14% | $-0.35 +2025-03-10 13:17:34,953 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.5793821428574 | Take profit: 2122.4388017857145 +2025-03-10 13:17:34,972 - INFO - CLOSED long at 2091.05 | PnL: 0.00% | $-0.14 +2025-03-10 13:17:34,972 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.520617857143 | Take profit: 2059.661198214286 +2025-03-10 13:17:34,986 - INFO - CLOSED short at 2091.95 | PnL: -0.04% | $-0.21 +2025-03-10 13:17:35,026 - INFO - OPENED LONG at 2097.8 | Stop loss: 2087.2956321428574 | Take profit: 2129.2900517857142 +2025-03-10 13:17:35,045 - INFO - CLOSED long at 2099.99 | PnL: 0.10% | $0.01 +2025-03-10 13:17:35,046 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.505317857143 | Take profit: 2068.4670982142857 +2025-03-10 13:17:35,064 - INFO - CLOSED short at 2101.64 | PnL: -0.08% | $-0.26 +2025-03-10 13:17:35,082 - INFO - OPENED LONG at 2097.11 | Stop loss: 2086.6090821428575 | Take profit: 2128.589701785714 +2025-03-10 13:17:35,119 - INFO - CLOSED long at 2099.89 | PnL: 0.13% | $0.05 +2025-03-10 13:17:35,156 - INFO - OPENED LONG at 2099.73 | Stop loss: 2089.2159821428572 | Take profit: 2131.249001785714 +2025-03-10 13:17:35,228 - INFO - CLOSED long at 2103.81 | PnL: 0.19% | $0.13 +2025-03-10 13:17:35,270 - INFO - OPENED LONG at 2101.5 | Stop loss: 2090.977132142857 | Take profit: 2133.0455517857145 +2025-03-10 13:17:35,288 - INFO - CLOSED long at 2105.83 | PnL: 0.21% | $0.15 +2025-03-10 13:17:35,329 - INFO - OPENED LONG at 2105.2 | Stop loss: 2094.658632142857 | Take profit: 2136.801051785714 +2025-03-10 13:17:35,456 - INFO - CLOSED long at 2102.7 | PnL: -0.12% | $-0.31 +2025-03-10 13:17:35,473 - INFO - OPENED SHORT at 2102.0 | Stop loss: 2112.525367857143 | Take profit: 2070.446948214286 +2025-03-10 13:17:35,514 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.18, Avg Loss=$-0.28 +2025-03-10 13:17:35,514 - INFO - Episode 0: Reward=-114.02, Balance=$72.05, Win Rate=19.2%, Trades=146, Episode PnL=$-23.16, Total PnL=$-27.95, Max Drawdown=28.0%, Pred Accuracy=98.1% +2025-03-10 13:17:35,514 - ERROR - Error in episode 0: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:17:35,514 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1831, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:17:35,540 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:17:35,794 - INFO - OPENED LONG at 2048.51 | Stop loss: 2038.2520821428575 | Take profit: 2079.2607017857144 +2025-03-10 13:17:35,813 - INFO - CLOSED long at 2050.0 | PnL: 0.07% | $-0.05 +2025-03-10 13:17:35,869 - INFO - OPENED LONG at 2051.11 | Stop loss: 2040.8390821428573 | Take profit: 2081.8997017857146 +2025-03-10 13:17:35,886 - INFO - CLOSED long at 2053.26 | PnL: 0.10% | $0.01 +2025-03-10 13:17:35,886 - INFO - OPENED SHORT at 2053.26 | Stop loss: 2063.5416678571432 | Take profit: 2022.4380482142858 +2025-03-10 13:17:35,943 - INFO - CLOSED short at 2055.69 | PnL: -0.12% | $-0.43 +2025-03-10 13:17:36,014 - INFO - OPENED SHORT at 2060.13 | Stop loss: 2070.4460178571426 | Take profit: 2029.2049982142858 +2025-03-10 13:17:36,032 - INFO - CLOSED short at 2059.7 | PnL: 0.02% | $-0.16 +2025-03-10 13:17:36,032 - INFO - OPENED LONG at 2059.7 | Stop loss: 2049.386132142857 | Take profit: 2090.6185517857143 +2025-03-10 13:17:36,052 - INFO - CLOSED long at 2061.49 | PnL: 0.09% | $-0.03 +2025-03-10 13:17:36,054 - INFO - OPENED SHORT at 2061.49 | Stop loss: 2071.812817857143 | Take profit: 2030.5445982142855 +2025-03-10 13:17:36,072 - INFO - CLOSED short at 2063.29 | PnL: -0.09% | $-0.37 +2025-03-10 13:17:36,073 - INFO - OPENED LONG at 2063.29 | Stop loss: 2052.9581821428574 | Take profit: 2094.2624017857142 +2025-03-10 13:17:36,092 - INFO - CLOSED long at 2064.61 | PnL: 0.06% | $-0.07 +2025-03-10 13:17:36,093 - INFO - OPENED SHORT at 2064.61 | Stop loss: 2074.948417857143 | Take profit: 2033.6177982142858 +2025-03-10 13:17:36,112 - INFO - CLOSED short at 2063.59 | PnL: 0.05% | $-0.10 +2025-03-10 13:17:36,112 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.2566821428572 | Take profit: 2094.5669017857144 +2025-03-10 13:17:36,147 - INFO - CLOSED long at 2064.69 | PnL: 0.05% | $-0.09 +2025-03-10 13:17:36,174 - INFO - OPENED LONG at 2063.01 | Stop loss: 2052.6795821428573 | Take profit: 2093.9782017857146 +2025-03-10 13:17:36,195 - INFO - CLOSED long at 2060.99 | PnL: -0.10% | $-0.39 +2025-03-10 13:17:36,206 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9931321428573 | Take profit: 2089.197551785714 +2025-03-10 13:17:36,233 - INFO - CLOSED long at 2060.0 | PnL: 0.08% | $-0.03 +2025-03-10 13:17:36,296 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.626917857143 | Take profit: 2029.3822982142856 +2025-03-10 13:17:36,332 - INFO - CLOSED short at 2057.8 | PnL: 0.12% | $0.04 +2025-03-10 13:17:36,332 - INFO - OPENED LONG at 2057.8 | Stop loss: 2047.4956321428572 | Take profit: 2088.6900517857143 +2025-03-10 13:17:36,375 - INFO - CLOSED long at 2057.94 | PnL: 0.01% | $-0.18 +2025-03-10 13:17:36,376 - INFO - OPENED SHORT at 2057.94 | Stop loss: 2068.2450678571427 | Take profit: 2027.0478482142858 +2025-03-10 13:17:36,435 - INFO - CLOSED short at 2061.18 | PnL: -0.16% | $-0.50 +2025-03-10 13:17:36,511 - INFO - OPENED SHORT at 2068.11 | Stop loss: 2078.465917857143 | Take profit: 2037.0652982142858 +2025-03-10 13:17:36,530 - INFO - CLOSED short at 2068.29 | PnL: -0.01% | $-0.21 +2025-03-10 13:17:36,590 - INFO - OPENED LONG at 2070.99 | Stop loss: 2060.619682142857 | Take profit: 2102.077901785714 +2025-03-10 13:17:36,610 - INFO - CLOSED long at 2069.6 | PnL: -0.07% | $-0.32 +2025-03-10 13:17:36,660 - INFO - OPENED SHORT at 2068.99 | Stop loss: 2079.3503178571427 | Take profit: 2037.9320982142856 +2025-03-10 13:17:36,713 - INFO - CLOSED short at 2067.69 | PnL: 0.06% | $-0.07 +2025-03-10 13:17:36,767 - INFO - OPENED SHORT at 2071.44 | Stop loss: 2081.8125678571428 | Take profit: 2040.3453482142857 +2025-03-10 13:17:36,790 - INFO - CLOSED short at 2073.73 | PnL: -0.11% | $-0.41 +2025-03-10 13:17:36,837 - INFO - OPENED SHORT at 2072.91 | Stop loss: 2083.289917857143 | Take profit: 2041.7932982142856 +2025-03-10 13:17:36,891 - INFO - CLOSED short at 2071.38 | PnL: 0.07% | $-0.05 +2025-03-10 13:17:36,891 - INFO - OPENED LONG at 2071.38 | Stop loss: 2061.0077321428575 | Take profit: 2102.4737517857143 +2025-03-10 13:17:36,968 - INFO - CLOSED long at 2070.9 | PnL: -0.02% | $-0.24 +2025-03-10 13:17:36,995 - INFO - OPENED SHORT at 2072.8 | Stop loss: 2083.179367857143 | Take profit: 2041.684948214286 +2025-03-10 13:17:37,368 - INFO - CLOSED short at 2068.8 | PnL: 0.19% | $0.18 +2025-03-10 13:17:37,369 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.4406321428573 | Take profit: 2099.8550517857147 +2025-03-10 13:17:37,455 - INFO - CLOSED long at 2067.51 | PnL: -0.06% | $-0.31 +2025-03-10 13:17:37,489 - INFO - OPENED SHORT at 2069.01 | Stop loss: 2079.370417857143 | Take profit: 2037.951798214286 +2025-03-10 13:17:37,581 - INFO - CLOSED short at 2066.19 | PnL: 0.14% | $0.07 +2025-03-10 13:17:37,581 - INFO - OPENED LONG at 2066.19 | Stop loss: 2055.8436821428572 | Take profit: 2097.2059017857146 +2025-03-10 13:17:37,652 - INFO - CLOSED long at 2066.18 | PnL: -0.00% | $-0.19 +2025-03-10 13:17:37,652 - INFO - OPENED SHORT at 2066.18 | Stop loss: 2076.5262678571426 | Take profit: 2035.1642482142856 +2025-03-10 13:17:37,698 - INFO - CLOSED short at 2068.9 | PnL: -0.13% | $-0.44 +2025-03-10 13:17:37,718 - INFO - OPENED SHORT at 2068.51 | Stop loss: 2078.8679178571433 | Take profit: 2037.4592982142858 +2025-03-10 13:17:37,742 - INFO - CLOSED short at 2068.59 | PnL: -0.00% | $-0.20 +2025-03-10 13:17:37,820 - INFO - OPENED SHORT at 2069.96 | Stop loss: 2080.325167857143 | Take profit: 2038.8875482142857 +2025-03-10 13:17:37,847 - INFO - CLOSED short at 2071.4 | PnL: -0.07% | $-0.32 +2025-03-10 13:17:37,872 - INFO - OPENED SHORT at 2071.39 | Stop loss: 2081.7623178571425 | Take profit: 2040.2960982142856 +2025-03-10 13:17:37,918 - INFO - CLOSED short at 2072.75 | PnL: -0.07% | $-0.31 +2025-03-10 13:17:37,918 - INFO - OPENED LONG at 2072.75 | Stop loss: 2062.370882142857 | Take profit: 2103.8643017857144 +2025-03-10 13:17:37,941 - INFO - CLOSED long at 2073.11 | PnL: 0.02% | $-0.16 +2025-03-10 13:17:37,965 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.0788678571425 | Take profit: 2041.5864482142856 +2025-03-10 13:17:38,127 - INFO - CLOSED short at 2069.46 | PnL: 0.16% | $0.11 +2025-03-10 13:17:38,213 - INFO - OPENED SHORT at 2067.79 | Stop loss: 2078.1443178571426 | Take profit: 2036.7500982142856 +2025-03-10 13:17:38,254 - INFO - CLOSED short at 2066.8 | PnL: 0.05% | $-0.10 +2025-03-10 13:17:38,498 - INFO - OPENED LONG at 2070.3 | Stop loss: 2059.933132142857 | Take profit: 2101.3775517857143 +2025-03-10 13:17:38,519 - INFO - CLOSED long at 2071.59 | PnL: 0.06% | $-0.07 +2025-03-10 13:17:38,519 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.963317857143 | Take profit: 2040.493098214286 +2025-03-10 13:17:38,539 - INFO - CLOSED short at 2070.7 | PnL: 0.04% | $-0.11 +2025-03-10 13:17:38,540 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.331132142857 | Take profit: 2101.7835517857143 +2025-03-10 13:17:38,561 - INFO - CLOSED long at 2070.4 | PnL: -0.01% | $-0.21 +2025-03-10 13:17:38,727 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.754132142857 | Take profit: 2097.1145517857144 +2025-03-10 13:17:38,746 - INFO - CLOSED long at 2065.28 | PnL: -0.04% | $-0.26 +2025-03-10 13:17:38,746 - INFO - OPENED SHORT at 2065.28 | Stop loss: 2075.6217678571434 | Take profit: 2034.277748214286 +2025-03-10 13:17:38,764 - INFO - CLOSED short at 2066.39 | PnL: -0.05% | $-0.29 +2025-03-10 13:17:38,764 - INFO - OPENED LONG at 2066.39 | Stop loss: 2056.042682142857 | Take profit: 2097.408901785714 +2025-03-10 13:17:38,787 - INFO - CLOSED long at 2064.47 | PnL: -0.09% | $-0.36 +2025-03-10 13:17:38,787 - INFO - OPENED SHORT at 2064.47 | Stop loss: 2074.807717857143 | Take profit: 2033.4798982142854 +2025-03-10 13:17:38,826 - INFO - CLOSED short at 2067.8 | PnL: -0.16% | $-0.48 +2025-03-10 13:17:38,850 - INFO - OPENED SHORT at 2068.18 | Stop loss: 2078.536267857143 | Take profit: 2037.1342482142854 +2025-03-10 13:17:38,979 - INFO - CLOSED short at 2062.89 | PnL: 0.26% | $0.29 +2025-03-10 13:17:39,031 - INFO - OPENED LONG at 2059.59 | Stop loss: 2049.276682142857 | Take profit: 2090.5069017857145 +2025-03-10 13:17:39,074 - INFO - CLOSED long at 2063.59 | PnL: 0.19% | $0.17 +2025-03-10 13:17:39,144 - INFO - OPENED SHORT at 2065.54 | Stop loss: 2075.8830678571426 | Take profit: 2034.5338482142859 +2025-03-10 13:17:39,184 - INFO - CLOSED short at 2064.45 | PnL: 0.05% | $-0.09 +2025-03-10 13:17:39,184 - INFO - OPENED LONG at 2064.45 | Stop loss: 2054.112382142857 | Take profit: 2095.439801785714 +2025-03-10 13:17:39,203 - INFO - CLOSED long at 2064.08 | PnL: -0.02% | $-0.22 +2025-03-10 13:17:39,243 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560182142857 | Take profit: 2093.8564017857143 +2025-03-10 13:17:39,281 - INFO - CLOSED long at 2063.5 | PnL: 0.03% | $-0.13 +2025-03-10 13:17:39,324 - INFO - OPENED LONG at 2060.9 | Stop loss: 2050.580132142857 | Take profit: 2091.836551785714 +2025-03-10 13:17:39,362 - INFO - CLOSED long at 2058.89 | PnL: -0.10% | $-0.36 +2025-03-10 13:17:39,364 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.199817857143 | Take profit: 2027.9835982142856 +2025-03-10 13:17:39,404 - INFO - CLOSED short at 2060.31 | PnL: -0.07% | $-0.31 +2025-03-10 13:17:39,405 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.993082142857 | Take profit: 2091.2377017857143 +2025-03-10 13:17:39,442 - INFO - CLOSED long at 2064.7 | PnL: 0.21% | $0.21 +2025-03-10 13:17:39,442 - INFO - OPENED SHORT at 2064.7 | Stop loss: 2075.0388678571426 | Take profit: 2033.7064482142857 +2025-03-10 13:17:39,482 - INFO - CLOSED short at 2060.91 | PnL: 0.18% | $0.15 +2025-03-10 13:17:39,483 - INFO - OPENED LONG at 2060.91 | Stop loss: 2050.5900821428568 | Take profit: 2091.846701785714 +2025-03-10 13:17:39,503 - INFO - CLOSED long at 2060.3 | PnL: -0.03% | $-0.24 +2025-03-10 13:17:39,522 - INFO - OPENED LONG at 2061.13 | Stop loss: 2050.808982142857 | Take profit: 2092.0700017857143 +2025-03-10 13:17:39,542 - INFO - CLOSED long at 2061.9 | PnL: 0.04% | $-0.11 +2025-03-10 13:17:39,542 - INFO - OPENED SHORT at 2061.9 | Stop loss: 2072.2248678571427 | Take profit: 2030.9484482142857 +2025-03-10 13:17:39,580 - INFO - CLOSED short at 2065.36 | PnL: -0.17% | $-0.49 +2025-03-10 13:17:39,580 - INFO - OPENED LONG at 2065.36 | Stop loss: 2055.0178321428575 | Take profit: 2096.3634517857145 +2025-03-10 13:17:39,596 - INFO - CLOSED long at 2064.33 | PnL: -0.05% | $-0.27 +2025-03-10 13:17:39,596 - INFO - OPENED SHORT at 2064.33 | Stop loss: 2074.6670178571426 | Take profit: 2033.3419982142857 +2025-03-10 13:17:39,617 - INFO - CLOSED short at 2063.39 | PnL: 0.05% | $-0.10 +2025-03-10 13:17:39,617 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.057682142857 | Take profit: 2094.363901785714 +2025-03-10 13:17:39,654 - INFO - CLOSED long at 2065.89 | PnL: 0.12% | $0.04 +2025-03-10 13:17:39,688 - INFO - OPENED LONG at 2063.0 | Stop loss: 2052.669632142857 | Take profit: 2093.968051785714 +2025-03-10 13:17:39,746 - INFO - CLOSED long at 2061.7 | PnL: -0.06% | $-0.30 +2025-03-10 13:17:39,746 - INFO - OPENED SHORT at 2061.7 | Stop loss: 2072.0238678571427 | Take profit: 2030.7514482142856 +2025-03-10 13:17:39,801 - INFO - CLOSED short at 2059.61 | PnL: 0.10% | $0.00 +2025-03-10 13:17:39,821 - INFO - OPENED LONG at 2059.16 | Stop loss: 2048.848832142857 | Take profit: 2090.0704517857143 +2025-03-10 13:17:39,874 - INFO - CLOSED long at 2059.96 | PnL: 0.04% | $-0.11 +2025-03-10 13:17:39,891 - INFO - OPENED LONG at 2059.46 | Stop loss: 2049.147332142857 | Take profit: 2090.3749517857145 +2025-03-10 13:17:39,926 - INFO - CLOSED long at 2058.28 | PnL: -0.06% | $-0.28 +2025-03-10 13:17:39,926 - INFO - OPENED SHORT at 2058.28 | Stop loss: 2068.586767857143 | Take profit: 2027.382748214286 +2025-03-10 13:17:39,980 - INFO - CLOSED short at 2054.89 | PnL: 0.16% | $0.12 +2025-03-10 13:17:39,980 - INFO - OPENED LONG at 2054.89 | Stop loss: 2044.600182142857 | Take profit: 2085.7364017857144 +2025-03-10 13:17:40,046 - INFO - CLOSED long at 2058.15 | PnL: 0.16% | $0.11 +2025-03-10 13:17:40,067 - INFO - OPENED SHORT at 2059.8 | Stop loss: 2070.1143678571434 | Take profit: 2028.8799482142858 +2025-03-10 13:17:40,106 - INFO - CLOSED short at 2061.5 | PnL: -0.08% | $-0.33 +2025-03-10 13:17:40,106 - INFO - OPENED LONG at 2061.5 | Stop loss: 2051.1771321428573 | Take profit: 2092.445551785714 +2025-03-10 13:17:40,127 - INFO - CLOSED long at 2061.6 | PnL: 0.00% | $-0.17 +2025-03-10 13:17:40,145 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.621867857143 | Take profit: 2030.357448214286 +2025-03-10 13:17:40,219 - INFO - CLOSED short at 2066.01 | PnL: -0.23% | $-0.59 +2025-03-10 13:17:40,242 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.5651321428572 | Take profit: 2094.8815517857142 +2025-03-10 13:17:40,284 - INFO - CLOSED long at 2066.33 | PnL: 0.12% | $0.03 +2025-03-10 13:17:40,284 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6770178571423 | Take profit: 2035.3119982142855 +2025-03-10 13:17:40,305 - INFO - CLOSED short at 2066.34 | PnL: -0.00% | $-0.18 +2025-03-10 13:17:40,363 - INFO - OPENED LONG at 2067.01 | Stop loss: 2056.6595821428573 | Take profit: 2098.0382017857146 +2025-03-10 13:17:40,383 - INFO - CLOSED long at 2065.69 | PnL: -0.06% | $-0.29 +2025-03-10 13:17:40,444 - INFO - OPENED LONG at 2074.3 | Stop loss: 2063.913132142857 | Take profit: 2105.4375517857143 +2025-03-10 13:17:40,466 - INFO - CLOSED long at 2078.01 | PnL: 0.18% | $0.14 +2025-03-10 13:17:40,490 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.4004178571427 | Take profit: 2043.861798214286 +2025-03-10 13:17:40,530 - INFO - CLOSED short at 2071.04 | PnL: 0.19% | $0.16 +2025-03-10 13:17:40,531 - INFO - OPENED LONG at 2071.04 | Stop loss: 2060.669432142857 | Take profit: 2102.1286517857143 +2025-03-10 13:17:40,703 - INFO - CLOSED long at 2067.44 | PnL: -0.17% | $-0.49 +2025-03-10 13:17:40,723 - INFO - OPENED SHORT at 2068.79 | Stop loss: 2079.149317857143 | Take profit: 2037.7350982142857 +2025-03-10 13:17:40,742 - INFO - CLOSED short at 2072.99 | PnL: -0.20% | $-0.54 +2025-03-10 13:17:40,858 - INFO - OPENED LONG at 2065.66 | Stop loss: 2055.316332142857 | Take profit: 2096.6679517857137 +2025-03-10 13:17:40,877 - INFO - CLOSED long at 2063.95 | PnL: -0.08% | $-0.32 +2025-03-10 13:17:40,933 - INFO - OPENED LONG at 2065.3 | Stop loss: 2054.9581321428573 | Take profit: 2096.3025517857145 +2025-03-10 13:17:41,127 - INFO - CLOSED long at 2068.59 | PnL: 0.16% | $0.10 +2025-03-10 13:17:41,127 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.948317857143 | Take profit: 2037.5380982142858 +2025-03-10 13:17:41,163 - INFO - CLOSED short at 2071.59 | PnL: -0.15% | $-0.43 +2025-03-10 13:17:41,163 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.2166821428573 | Take profit: 2102.686901785715 +2025-03-10 13:17:41,229 - INFO - CLOSED long at 2071.35 | PnL: -0.01% | $-0.20 +2025-03-10 13:17:41,259 - INFO - OPENED SHORT at 2070.9 | Stop loss: 2081.269867857143 | Take profit: 2039.8134482142857 +2025-03-10 13:17:41,319 - INFO - CLOSED short at 2070.7 | PnL: 0.01% | $-0.16 +2025-03-10 13:17:41,319 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.331132142857 | Take profit: 2101.7835517857143 +2025-03-10 13:17:41,364 - INFO - CLOSED long at 2070.35 | PnL: -0.02% | $-0.20 +2025-03-10 13:17:41,365 - INFO - OPENED SHORT at 2070.35 | Stop loss: 2080.717117857143 | Take profit: 2039.2716982142856 +2025-03-10 13:17:41,389 - INFO - CLOSED short at 2070.61 | PnL: -0.01% | $-0.20 +2025-03-10 13:17:41,408 - INFO - OPENED LONG at 2071.99 | Stop loss: 2061.614682142857 | Take profit: 2103.0929017857143 +2025-03-10 13:17:41,503 - INFO - CLOSED long at 2071.61 | PnL: -0.02% | $-0.21 +2025-03-10 13:17:41,504 - INFO - OPENED SHORT at 2071.61 | Stop loss: 2081.983417857143 | Take profit: 2040.5127982142858 +2025-03-10 13:17:41,598 - INFO - CLOSED short at 2073.27 | PnL: -0.08% | $-0.31 +2025-03-10 13:17:41,659 - INFO - OPENED LONG at 2075.32 | Stop loss: 2064.9280321428573 | Take profit: 2106.4728517857143 +2025-03-10 13:17:41,845 - INFO - CLOSED long at 2067.7 | PnL: -0.37% | $-0.80 +2025-03-10 13:17:41,845 - INFO - OPENED SHORT at 2067.7 | Stop loss: 2078.0538678571424 | Take profit: 2036.6614482142857 +2025-03-10 13:17:41,866 - INFO - CLOSED short at 2067.0 | PnL: 0.03% | $-0.11 +2025-03-10 13:17:41,869 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.649632142857 | Take profit: 2098.0280517857145 +2025-03-10 13:17:41,890 - INFO - CLOSED long at 2067.9 | PnL: 0.04% | $-0.10 +2025-03-10 13:17:41,890 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.254867857143 | Take profit: 2036.858448214286 +2025-03-10 13:17:41,980 - INFO - CLOSED short at 2067.88 | PnL: 0.00% | $-0.17 +2025-03-10 13:17:41,981 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.525232142857 | Take profit: 2098.9212517857145 +2025-03-10 13:17:42,064 - INFO - CLOSED long at 2068.1 | PnL: 0.01% | $-0.15 +2025-03-10 13:17:42,065 - INFO - OPENED SHORT at 2068.1 | Stop loss: 2078.455867857143 | Take profit: 2037.0554482142857 +2025-03-10 13:17:42,107 - INFO - CLOSED short at 2069.0 | PnL: -0.04% | $-0.24 +2025-03-10 13:17:42,187 - INFO - OPENED SHORT at 2067.19 | Stop loss: 2077.541317857143 | Take profit: 2036.1590982142857 +2025-03-10 13:17:42,293 - INFO - CLOSED short at 2065.07 | PnL: 0.10% | $0.00 +2025-03-10 13:17:42,293 - INFO - OPENED LONG at 2065.07 | Stop loss: 2054.7292821428573 | Take profit: 2096.0691017857143 +2025-03-10 13:17:42,370 - INFO - CLOSED long at 2062.34 | PnL: -0.13% | $-0.39 +2025-03-10 13:17:42,371 - INFO - OPENED SHORT at 2062.34 | Stop loss: 2072.667067857143 | Take profit: 2031.381848214286 +2025-03-10 13:17:42,498 - INFO - CLOSED short at 2065.06 | PnL: -0.13% | $-0.39 +2025-03-10 13:17:42,499 - INFO - OPENED LONG at 2065.06 | Stop loss: 2054.719332142857 | Take profit: 2096.0589517857143 +2025-03-10 13:17:42,590 - INFO - CLOSED long at 2066.33 | PnL: 0.06% | $-0.06 +2025-03-10 13:17:42,643 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.381132142857 | Take profit: 2091.6335517857137 +2025-03-10 13:17:42,721 - INFO - CLOSED long at 2058.09 | PnL: -0.13% | $-0.38 +2025-03-10 13:17:42,741 - INFO - OPENED SHORT at 2058.65 | Stop loss: 2068.958617857143 | Take profit: 2027.7471982142856 +2025-03-10 13:17:42,850 - INFO - CLOSED short at 2049.21 | PnL: 0.46% | $0.60 +2025-03-10 13:17:42,851 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.948582142857 | Take profit: 2079.971201785714 +2025-03-10 13:17:42,926 - INFO - CLOSED long at 2051.99 | PnL: 0.14% | $0.06 +2025-03-10 13:17:42,926 - INFO - OPENED SHORT at 2051.99 | Stop loss: 2062.2653178571427 | Take profit: 2021.1870982142855 +2025-03-10 13:17:43,025 - INFO - STOP LOSS hit for short at 2062.2653178571427 | PnL: -0.50% | $-1.01 +2025-03-10 13:17:43,045 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.5651321428572 | Take profit: 2094.8815517857142 +2025-03-10 13:17:43,084 - INFO - CLOSED long at 2062.43 | PnL: -0.07% | $-0.28 +2025-03-10 13:17:43,108 - INFO - OPENED SHORT at 2062.55 | Stop loss: 2072.878117857143 | Take profit: 2031.5886982142858 +2025-03-10 13:17:43,159 - INFO - CLOSED short at 2068.33 | PnL: -0.28% | $-0.63 +2025-03-10 13:17:43,262 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.744232142857 | Take profit: 2095.064251785714 +2025-03-10 13:17:43,324 - INFO - CLOSED long at 2059.9 | PnL: -0.20% | $-0.50 +2025-03-10 13:17:43,371 - INFO - OPENED LONG at 2061.84 | Stop loss: 2051.515432142857 | Take profit: 2092.790651785714 +2025-03-10 13:17:43,395 - INFO - CLOSED long at 2062.54 | PnL: 0.03% | $-0.11 +2025-03-10 13:17:43,396 - INFO - OPENED SHORT at 2062.54 | Stop loss: 2072.8680678571427 | Take profit: 2031.5788482142857 +2025-03-10 13:17:43,499 - INFO - CLOSED short at 2069.81 | PnL: -0.35% | $-0.74 +2025-03-10 13:17:43,546 - INFO - OPENED LONG at 2073.49 | Stop loss: 2063.107182142857 | Take profit: 2104.6154017857143 +2025-03-10 13:17:43,656 - INFO - CLOSED long at 2071.89 | PnL: -0.08% | $-0.29 +2025-03-10 13:17:43,735 - INFO - OPENED SHORT at 2074.9 | Stop loss: 2085.2898678571432 | Take profit: 2043.7534482142858 +2025-03-10 13:17:43,763 - INFO - CLOSED short at 2076.08 | PnL: -0.06% | $-0.25 +2025-03-10 13:17:43,810 - INFO - OPENED LONG at 2085.56 | Stop loss: 2075.116832142857 | Take profit: 2116.866451785714 +2025-03-10 13:17:43,886 - INFO - CLOSED long at 2130.7 | PnL: 2.16% | $3.31 +2025-03-10 13:17:43,975 - INFO - OPENED LONG at 2133.95 | Stop loss: 2123.264882142857 | Take profit: 2165.982301785714 +2025-03-10 13:17:44,048 - INFO - CLOSED long at 2137.59 | PnL: 0.17% | $0.12 +2025-03-10 13:17:44,048 - INFO - OPENED SHORT at 2137.59 | Stop loss: 2148.293317857143 | Take profit: 2105.5030982142857 +2025-03-10 13:17:44,148 - INFO - CLOSED short at 2141.3 | PnL: -0.17% | $-0.46 +2025-03-10 13:17:44,227 - INFO - OPENED SHORT at 2134.78 | Stop loss: 2145.4692678571428 | Take profit: 2102.735248214286 +2025-03-10 13:17:44,253 - INFO - CLOSED short at 2126.99 | PnL: 0.36% | $0.44 +2025-03-10 13:17:44,256 - INFO - OPENED LONG at 2126.99 | Stop loss: 2116.339682142857 | Take profit: 2158.917901785714 +2025-03-10 13:17:44,341 - INFO - CLOSED long at 2121.09 | PnL: -0.28% | $-0.63 +2025-03-10 13:17:44,384 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.5338821428572 | Take profit: 2151.9753017857147 +2025-03-10 13:17:44,434 - INFO - CLOSED long at 2117.24 | PnL: -0.14% | $-0.39 +2025-03-10 13:17:44,435 - INFO - OPENED SHORT at 2117.24 | Stop loss: 2127.8415678571428 | Take profit: 2085.4583482142857 +2025-03-10 13:17:44,553 - INFO - CLOSED short at 2118.52 | PnL: -0.06% | $-0.27 +2025-03-10 13:17:44,656 - INFO - OPENED SHORT at 2107.43 | Stop loss: 2117.9825178571427 | Take profit: 2075.7954982142855 +2025-03-10 13:17:44,754 - INFO - CLOSED short at 2112.95 | PnL: -0.26% | $-0.60 +2025-03-10 13:17:44,755 - INFO - OPENED LONG at 2112.95 | Stop loss: 2102.369882142857 | Take profit: 2144.667301785714 +2025-03-10 13:17:44,871 - INFO - CLOSED long at 2112.99 | PnL: 0.00% | $-0.16 +2025-03-10 13:17:44,871 - INFO - OPENED SHORT at 2112.99 | Stop loss: 2123.570317857143 | Take profit: 2081.2720982142855 +2025-03-10 13:17:44,941 - INFO - CLOSED short at 2116.48 | PnL: -0.17% | $-0.43 +2025-03-10 13:17:44,942 - INFO - OPENED LONG at 2116.48 | Stop loss: 2105.882232142857 | Take profit: 2148.250251785714 +2025-03-10 13:17:44,995 - INFO - CLOSED long at 2110.9 | PnL: -0.26% | $-0.59 +2025-03-10 13:17:45,045 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.942182142857 | Take profit: 2138.1104017857137 +2025-03-10 13:17:45,099 - INFO - CLOSED long at 2103.33 | PnL: -0.15% | $-0.40 +2025-03-10 13:17:45,175 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0169821428576 | Take profit: 2131.0460017857145 +2025-03-10 13:17:45,222 - INFO - CLOSED long at 2102.19 | PnL: 0.13% | $0.04 +2025-03-10 13:17:45,287 - INFO - OPENED LONG at 2098.9 | Stop loss: 2088.390132142857 | Take profit: 2130.4065517857143 +2025-03-10 13:17:45,435 - INFO - CLOSED long at 2104.68 | PnL: 0.28% | $0.28 +2025-03-10 13:17:45,498 - INFO - OPENED SHORT at 2099.59 | Stop loss: 2110.1033178571433 | Take profit: 2068.073098214286 +2025-03-10 13:17:45,541 - INFO - CLOSED short at 2098.39 | PnL: 0.06% | $-0.07 +2025-03-10 13:17:45,548 - INFO - OPENED LONG at 2098.39 | Stop loss: 2087.882682142857 | Take profit: 2129.8889017857146 +2025-03-10 13:17:45,650 - INFO - CLOSED long at 2092.46 | PnL: -0.28% | $-0.62 +2025-03-10 13:17:45,703 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.231032142857 | Take profit: 2126.163851785714 +2025-03-10 13:17:45,728 - INFO - CLOSED long at 2094.08 | PnL: -0.03% | $-0.21 +2025-03-10 13:17:45,779 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.8482321428573 | Take profit: 2114.552251785715 +2025-03-10 13:17:45,828 - INFO - CLOSED long at 2083.97 | PnL: 0.03% | $-0.11 +2025-03-10 13:17:45,938 - INFO - OPENED LONG at 2080.38 | Stop loss: 2069.962732142857 | Take profit: 2111.6087517857145 +2025-03-10 13:17:46,001 - INFO - CLOSED long at 2085.09 | PnL: 0.23% | $0.20 +2025-03-10 13:17:46,020 - INFO - OPENED LONG at 2083.59 | Stop loss: 2073.1566821428573 | Take profit: 2114.866901785714 +2025-03-10 13:17:46,046 - INFO - CLOSED long at 2086.57 | PnL: 0.14% | $0.07 +2025-03-10 13:17:46,046 - INFO - OPENED SHORT at 2086.57 | Stop loss: 2097.018217857143 | Take profit: 2055.2483982142858 +2025-03-10 13:17:46,088 - INFO - CLOSED short at 2084.72 | PnL: 0.09% | $-0.02 +2025-03-10 13:17:46,172 - INFO - OPENED SHORT at 2088.32 | Stop loss: 2098.776967857143 | Take profit: 2056.972148214286 +2025-03-10 13:17:46,192 - INFO - CLOSED short at 2088.1 | PnL: 0.01% | $-0.14 +2025-03-10 13:17:46,213 - INFO - OPENED SHORT at 2089.96 | Stop loss: 2100.425167857143 | Take profit: 2058.5875482142856 +2025-03-10 13:17:46,258 - INFO - CLOSED short at 2087.47 | PnL: 0.12% | $0.03 +2025-03-10 13:17:46,258 - INFO - OPENED LONG at 2087.47 | Stop loss: 2077.017282142857 | Take profit: 2118.805101785714 +2025-03-10 13:17:46,278 - INFO - CLOSED long at 2087.78 | PnL: 0.01% | $-0.14 +2025-03-10 13:17:46,299 - INFO - OPENED SHORT at 2086.81 | Stop loss: 2097.2594178571426 | Take profit: 2055.4847982142855 +2025-03-10 13:17:46,353 - INFO - CLOSED short at 2085.67 | PnL: 0.05% | $-0.07 +2025-03-10 13:17:46,353 - INFO - OPENED LONG at 2085.67 | Stop loss: 2075.226282142857 | Take profit: 2116.9781017857144 +2025-03-10 13:17:46,399 - INFO - CLOSED long at 2091.05 | PnL: 0.26% | $0.25 +2025-03-10 13:17:46,419 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.5793821428574 | Take profit: 2122.4388017857145 +2025-03-10 13:17:46,450 - INFO - CLOSED long at 2091.95 | PnL: 0.04% | $-0.09 +2025-03-10 13:17:46,470 - INFO - OPENED LONG at 2094.7 | Stop loss: 2084.211132142857 | Take profit: 2126.143551785714 +2025-03-10 13:17:46,496 - INFO - CLOSED long at 2097.8 | PnL: 0.15% | $0.08 +2025-03-10 13:17:46,496 - INFO - OPENED SHORT at 2097.8 | Stop loss: 2108.304367857143 | Take profit: 2066.3099482142857 +2025-03-10 13:17:46,521 - INFO - CLOSED short at 2099.99 | PnL: -0.10% | $-0.33 +2025-03-10 13:17:46,521 - INFO - OPENED LONG at 2099.99 | Stop loss: 2089.474682142857 | Take profit: 2131.512901785714 +2025-03-10 13:17:46,568 - INFO - CLOSED long at 2097.11 | PnL: -0.14% | $-0.38 +2025-03-10 13:17:46,569 - INFO - OPENED SHORT at 2097.11 | Stop loss: 2107.6109178571432 | Take profit: 2065.630298214286 +2025-03-10 13:17:46,643 - INFO - CLOSED short at 2100.89 | PnL: -0.18% | $-0.44 +2025-03-10 13:17:46,724 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.012767857143 | Take profit: 2071.904748214286 +2025-03-10 13:17:46,810 - INFO - CLOSED short at 2103.07 | PnL: 0.02% | $-0.13 +2025-03-10 13:17:46,811 - INFO - OPENED LONG at 2103.07 | Stop loss: 2092.5392821428572 | Take profit: 2134.6391017857145 +2025-03-10 13:17:46,865 - INFO - CLOSED long at 2105.83 | PnL: 0.13% | $0.05 +2025-03-10 13:17:46,888 - INFO - OPENED SHORT at 2103.64 | Stop loss: 2114.1735678571426 | Take profit: 2072.0623482142855 +2025-03-10 13:17:46,959 - INFO - CLOSED short at 2104.4 | PnL: -0.04% | $-0.21 +2025-03-10 13:17:47,065 - INFO - OPENED SHORT at 2102.0 | Stop loss: 2112.525367857143 | Take profit: 2070.446948214286 +2025-03-10 13:17:47,112 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.24, Avg Loss=$-0.28 +2025-03-10 13:17:47,113 - INFO - Episode 1: Reward=-91.04, Balance=$78.84, Win Rate=23.3%, Trades=133, Episode PnL=$-16.45, Total PnL=$-49.11, Max Drawdown=21.2%, Pred Accuracy=99.3% +2025-03-10 13:17:47,113 - ERROR - Error in episode 1: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:17:47,114 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1831, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:17:47,139 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:17:47,352 - INFO - OPENED SHORT at 2048.13 | Stop loss: 2058.3860178571426 | Take profit: 2017.3849982142858 +2025-03-10 13:17:47,423 - INFO - CLOSED short at 2050.0 | PnL: -0.09% | $-0.38 +2025-03-10 13:17:47,423 - INFO - OPENED LONG at 2050.0 | Stop loss: 2039.7346321428572 | Take profit: 2080.7730517857144 +2025-03-10 13:17:47,513 - INFO - CLOSED long at 2051.11 | PnL: 0.05% | $-0.09 +2025-03-10 13:17:47,514 - INFO - OPENED SHORT at 2051.11 | Stop loss: 2061.380917857143 | Take profit: 2020.320298214286 +2025-03-10 13:17:47,590 - INFO - CLOSED short at 2052.3 | PnL: -0.06% | $-0.31 +2025-03-10 13:17:47,590 - INFO - OPENED LONG at 2052.3 | Stop loss: 2042.0231321428573 | Take profit: 2083.1075517857143 +2025-03-10 13:17:47,673 - INFO - CLOSED long at 2056.89 | PnL: 0.22% | $0.24 +2025-03-10 13:17:47,674 - INFO - OPENED SHORT at 2056.89 | Stop loss: 2067.1898178571428 | Take profit: 2026.0135982142856 +2025-03-10 13:17:47,719 - INFO - CLOSED short at 2060.13 | PnL: -0.16% | $-0.51 +2025-03-10 13:17:47,719 - INFO - OPENED LONG at 2060.13 | Stop loss: 2049.813982142857 | Take profit: 2091.0550017857145 +2025-03-10 13:17:47,744 - INFO - CLOSED long at 2059.7 | PnL: -0.02% | $-0.24 +2025-03-10 13:17:47,744 - INFO - OPENED SHORT at 2059.7 | Stop loss: 2070.0138678571425 | Take profit: 2028.7814482142855 +2025-03-10 13:17:47,859 - INFO - CLOSED short at 2061.61 | PnL: -0.09% | $-0.38 +2025-03-10 13:17:47,859 - INFO - OPENED LONG at 2061.61 | Stop loss: 2051.2865821428572 | Take profit: 2092.5572017857144 +2025-03-10 13:17:47,902 - INFO - CLOSED long at 2063.01 | PnL: 0.07% | $-0.06 +2025-03-10 13:17:47,965 - INFO - OPENED SHORT at 2060.0 | Stop loss: 2070.315367857143 | Take profit: 2029.0769482142857 +2025-03-10 13:17:47,988 - INFO - CLOSED short at 2061.89 | PnL: -0.09% | $-0.37 +2025-03-10 13:17:47,989 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.565182142857 | Take profit: 2092.841401785714 +2025-03-10 13:17:48,032 - INFO - CLOSED long at 2060.31 | PnL: -0.08% | $-0.34 +2025-03-10 13:17:48,052 - INFO - OPENED SHORT at 2059.49 | Stop loss: 2069.8028178571426 | Take profit: 2028.5745982142855 +2025-03-10 13:17:48,098 - INFO - CLOSED short at 2057.89 | PnL: 0.08% | $-0.04 +2025-03-10 13:17:48,186 - INFO - OPENED LONG at 2061.18 | Stop loss: 2050.8587321428568 | Take profit: 2092.120751785714 +2025-03-10 13:17:48,340 - INFO - CLOSED long at 2071.63 | PnL: 0.51% | $0.79 +2025-03-10 13:17:48,341 - INFO - OPENED SHORT at 2071.63 | Stop loss: 2082.003517857143 | Take profit: 2040.5324982142859 +2025-03-10 13:17:48,451 - INFO - CLOSED short at 2067.9 | PnL: 0.18% | $0.16 +2025-03-10 13:17:48,556 - INFO - OPENED LONG at 2073.73 | Stop loss: 2063.345982142857 | Take profit: 2104.8590017857146 +2025-03-10 13:17:48,583 - INFO - CLOSED long at 2075.1 | PnL: 0.07% | $-0.07 +2025-03-10 13:17:48,583 - INFO - OPENED SHORT at 2075.1 | Stop loss: 2085.490867857143 | Take profit: 2043.9504482142856 +2025-03-10 13:17:48,608 - INFO - CLOSED short at 2072.91 | PnL: 0.11% | $0.01 +2025-03-10 13:17:48,609 - INFO - OPENED LONG at 2072.91 | Stop loss: 2062.530082142857 | Take profit: 2104.026701785714 +2025-03-10 13:17:48,660 - INFO - CLOSED long at 2071.38 | PnL: -0.07% | $-0.34 +2025-03-10 13:17:48,861 - INFO - OPENED SHORT at 2070.36 | Stop loss: 2080.7271678571433 | Take profit: 2039.2815482142857 +2025-03-10 13:17:48,933 - INFO - CLOSED short at 2069.34 | PnL: 0.05% | $-0.10 +2025-03-10 13:17:49,033 - INFO - OPENED LONG at 2069.01 | Stop loss: 2058.6495821428575 | Take profit: 2100.0682017857143 +2025-03-10 13:17:49,100 - INFO - CLOSED long at 2066.19 | PnL: -0.14% | $-0.46 +2025-03-10 13:17:49,160 - INFO - OPENED SHORT at 2066.18 | Stop loss: 2076.5262678571426 | Take profit: 2035.1642482142856 +2025-03-10 13:17:49,203 - INFO - CLOSED short at 2068.9 | PnL: -0.13% | $-0.45 +2025-03-10 13:17:49,204 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.540132142857 | Take profit: 2099.9565517857145 +2025-03-10 13:17:49,225 - INFO - CLOSED long at 2068.51 | PnL: -0.02% | $-0.23 +2025-03-10 13:17:49,291 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.767367857143 | Take profit: 2039.3209482142859 +2025-03-10 13:17:49,312 - INFO - CLOSED short at 2069.96 | PnL: 0.02% | $-0.15 +2025-03-10 13:17:49,313 - INFO - OPENED LONG at 2069.96 | Stop loss: 2059.5948321428573 | Take profit: 2101.0324517857143 +2025-03-10 13:17:49,399 - INFO - CLOSED long at 2072.75 | PnL: 0.13% | $0.07 +2025-03-10 13:17:49,399 - INFO - OPENED SHORT at 2072.75 | Stop loss: 2083.129117857143 | Take profit: 2041.6356982142856 +2025-03-10 13:17:49,442 - INFO - CLOSED short at 2072.7 | PnL: 0.00% | $-0.19 +2025-03-10 13:17:49,442 - INFO - OPENED LONG at 2072.7 | Stop loss: 2062.321132142857 | Take profit: 2103.813551785714 +2025-03-10 13:17:49,499 - INFO - CLOSED long at 2073.9 | PnL: 0.06% | $-0.08 +2025-03-10 13:17:49,500 - INFO - OPENED SHORT at 2073.9 | Stop loss: 2084.2848678571427 | Take profit: 2042.7684482142859 +2025-03-10 13:17:49,518 - INFO - CLOSED short at 2071.92 | PnL: 0.10% | $-0.01 +2025-03-10 13:17:49,519 - INFO - OPENED LONG at 2071.92 | Stop loss: 2061.545032142857 | Take profit: 2103.0218517857147 +2025-03-10 13:17:49,563 - INFO - CLOSED long at 2071.11 | PnL: -0.04% | $-0.27 +2025-03-10 13:17:49,563 - INFO - OPENED SHORT at 2071.11 | Stop loss: 2081.480917857143 | Take profit: 2040.0202982142857 +2025-03-10 13:17:49,582 - INFO - CLOSED short at 2069.46 | PnL: 0.08% | $-0.04 +2025-03-10 13:17:49,605 - INFO - OPENED SHORT at 2069.35 | Stop loss: 2079.7121178571424 | Take profit: 2038.2866982142855 +2025-03-10 13:17:49,645 - INFO - CLOSED short at 2067.0 | PnL: 0.11% | $0.03 +2025-03-10 13:17:49,709 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.1493678571433 | Take profit: 2035.7749482142858 +2025-03-10 13:17:49,750 - INFO - CLOSED short at 2063.61 | PnL: 0.15% | $0.10 +2025-03-10 13:17:49,751 - INFO - OPENED LONG at 2063.61 | Stop loss: 2053.2765821428575 | Take profit: 2094.587201785714 +2025-03-10 13:17:49,795 - INFO - CLOSED long at 2067.89 | PnL: 0.21% | $0.21 +2025-03-10 13:17:49,818 - INFO - OPENED SHORT at 2068.58 | Stop loss: 2078.938267857143 | Take profit: 2037.5282482142857 +2025-03-10 13:17:49,838 - INFO - CLOSED short at 2068.8 | PnL: -0.01% | $-0.21 +2025-03-10 13:17:49,907 - INFO - OPENED LONG at 2067.59 | Stop loss: 2057.2366821428573 | Take profit: 2098.6269017857144 +2025-03-10 13:17:50,020 - INFO - CLOSED long at 2070.73 | PnL: 0.15% | $0.10 +2025-03-10 13:17:50,057 - INFO - OPENED LONG at 2068.69 | Stop loss: 2058.331182142857 | Take profit: 2099.7434017857145 +2025-03-10 13:17:50,138 - INFO - CLOSED long at 2066.4 | PnL: -0.11% | $-0.40 +2025-03-10 13:17:50,138 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.7473678571428 | Take profit: 2035.3809482142858 +2025-03-10 13:17:50,177 - INFO - CLOSED short at 2065.28 | PnL: 0.05% | $-0.09 +2025-03-10 13:17:50,177 - INFO - OPENED LONG at 2065.28 | Stop loss: 2054.9382321428575 | Take profit: 2096.282251785715 +2025-03-10 13:17:50,215 - INFO - CLOSED long at 2064.47 | PnL: -0.04% | $-0.27 +2025-03-10 13:17:50,277 - INFO - OPENED SHORT at 2068.18 | Stop loss: 2078.536267857143 | Take profit: 2037.1342482142854 +2025-03-10 13:17:50,360 - INFO - CLOSED short at 2065.83 | PnL: 0.11% | $0.03 +2025-03-10 13:17:50,360 - INFO - OPENED LONG at 2065.83 | Stop loss: 2055.485482142857 | Take profit: 2096.840501785714 +2025-03-10 13:17:50,384 - INFO - CLOSED long at 2066.15 | PnL: 0.02% | $-0.16 +2025-03-10 13:17:50,454 - INFO - OPENED SHORT at 2061.78 | Stop loss: 2072.1042678571434 | Take profit: 2030.830248214286 +2025-03-10 13:17:50,476 - INFO - CLOSED short at 2059.59 | PnL: 0.11% | $0.01 +2025-03-10 13:17:50,476 - INFO - OPENED LONG at 2059.59 | Stop loss: 2049.276682142857 | Take profit: 2090.5069017857145 +2025-03-10 13:17:50,495 - INFO - CLOSED long at 2061.3 | PnL: 0.08% | $-0.03 +2025-03-10 13:17:50,495 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.621867857143 | Take profit: 2030.357448214286 +2025-03-10 13:17:50,513 - INFO - CLOSED short at 2063.59 | PnL: -0.11% | $-0.40 +2025-03-10 13:17:50,565 - INFO - OPENED LONG at 2067.1 | Stop loss: 2056.749132142857 | Take profit: 2098.129551785714 +2025-03-10 13:17:50,585 - INFO - CLOSED long at 2065.54 | PnL: -0.08% | $-0.33 +2025-03-10 13:17:50,585 - INFO - OPENED SHORT at 2065.54 | Stop loss: 2075.8830678571426 | Take profit: 2034.5338482142859 +2025-03-10 13:17:50,638 - INFO - CLOSED short at 2064.08 | PnL: 0.07% | $-0.06 +2025-03-10 13:17:50,638 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.744232142857 | Take profit: 2095.064251785714 +2025-03-10 13:17:50,671 - INFO - CLOSED long at 2062.89 | PnL: -0.06% | $-0.30 +2025-03-10 13:17:50,671 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.2198178571425 | Take profit: 2031.9235982142857 +2025-03-10 13:17:50,885 - INFO - CLOSED short at 2062.61 | PnL: 0.01% | $-0.16 +2025-03-10 13:17:50,885 - INFO - OPENED LONG at 2062.61 | Stop loss: 2052.2815821428576 | Take profit: 2093.5722017857147 +2025-03-10 13:17:50,902 - INFO - CLOSED long at 2060.91 | PnL: -0.08% | $-0.34 +2025-03-10 13:17:50,956 - INFO - OPENED LONG at 2061.9 | Stop loss: 2051.5751321428575 | Take profit: 2092.851551785714 +2025-03-10 13:17:50,977 - INFO - CLOSED long at 2064.1 | PnL: 0.11% | $0.01 +2025-03-10 13:17:50,983 - INFO - OPENED SHORT at 2064.1 | Stop loss: 2074.4358678571425 | Take profit: 2033.1154482142856 +2025-03-10 13:17:51,004 - INFO - CLOSED short at 2065.36 | PnL: -0.06% | $-0.30 +2025-03-10 13:17:51,029 - INFO - OPENED LONG at 2064.33 | Stop loss: 2053.9929821428573 | Take profit: 2095.318001785714 +2025-03-10 13:17:51,132 - INFO - CLOSED long at 2063.53 | PnL: -0.04% | $-0.26 +2025-03-10 13:17:51,132 - INFO - OPENED SHORT at 2063.53 | Stop loss: 2073.863017857143 | Take profit: 2032.553998214286 +2025-03-10 13:17:51,167 - INFO - CLOSED short at 2063.0 | PnL: 0.03% | $-0.14 +2025-03-10 13:17:51,197 - INFO - OPENED SHORT at 2062.6 | Stop loss: 2072.928367857143 | Take profit: 2031.6379482142856 +2025-03-10 13:17:51,326 - INFO - CLOSED short at 2061.09 | PnL: 0.07% | $-0.05 +2025-03-10 13:17:51,329 - INFO - OPENED LONG at 2061.09 | Stop loss: 2050.7691821428575 | Take profit: 2092.0294017857145 +2025-03-10 13:17:51,533 - INFO - CLOSED long at 2056.28 | PnL: -0.23% | $-0.62 +2025-03-10 13:17:51,590 - INFO - OPENED LONG at 2054.89 | Stop loss: 2044.600182142857 | Take profit: 2085.7364017857144 +2025-03-10 13:17:51,867 - INFO - CLOSED long at 2061.3 | PnL: 0.31% | $0.39 +2025-03-10 13:17:51,867 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.621867857143 | Take profit: 2030.357448214286 +2025-03-10 13:17:51,935 - INFO - CLOSED short at 2063.4 | PnL: -0.10% | $-0.37 +2025-03-10 13:17:51,936 - INFO - OPENED LONG at 2063.4 | Stop loss: 2053.0676321428573 | Take profit: 2094.374051785714 +2025-03-10 13:17:52,058 - INFO - CLOSED long at 2064.49 | PnL: 0.05% | $-0.09 +2025-03-10 13:17:52,084 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6770178571423 | Take profit: 2035.3119982142855 +2025-03-10 13:17:52,108 - INFO - CLOSED short at 2066.34 | PnL: -0.00% | $-0.18 +2025-03-10 13:17:52,191 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.977982142857 | Take profit: 2098.363001785714 +2025-03-10 13:17:52,299 - INFO - CLOSED long at 2069.79 | PnL: 0.12% | $0.03 +2025-03-10 13:17:52,300 - INFO - OPENED SHORT at 2069.79 | Stop loss: 2080.154317857143 | Take profit: 2038.7200982142858 +2025-03-10 13:17:52,335 - INFO - CLOSED short at 2072.0 | PnL: -0.11% | $-0.38 +2025-03-10 13:17:52,335 - INFO - OPENED LONG at 2072.0 | Stop loss: 2061.624632142857 | Take profit: 2103.1030517857143 +2025-03-10 13:17:52,441 - INFO - CLOSED long at 2071.04 | PnL: -0.05% | $-0.27 +2025-03-10 13:17:52,525 - INFO - OPENED SHORT at 2070.0 | Stop loss: 2080.3653678571427 | Take profit: 2038.9269482142859 +2025-03-10 13:17:52,569 - INFO - CLOSED short at 2068.15 | PnL: 0.09% | $-0.02 +2025-03-10 13:17:52,675 - INFO - OPENED SHORT at 2069.03 | Stop loss: 2079.390517857143 | Take profit: 2037.9714982142857 +2025-03-10 13:17:52,716 - INFO - CLOSED short at 2067.44 | PnL: 0.08% | $-0.04 +2025-03-10 13:17:52,716 - INFO - OPENED LONG at 2067.44 | Stop loss: 2057.0874321428573 | Take profit: 2098.4746517857143 +2025-03-10 13:17:52,764 - INFO - CLOSED long at 2072.99 | PnL: 0.27% | $0.31 +2025-03-10 13:17:52,822 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.977982142857 | Take profit: 2098.363001785714 +2025-03-10 13:17:52,861 - INFO - CLOSED long at 2065.7 | PnL: -0.08% | $-0.33 +2025-03-10 13:17:52,861 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.0438678571427 | Take profit: 2034.6914482142856 +2025-03-10 13:17:52,880 - INFO - CLOSED short at 2065.66 | PnL: 0.00% | $-0.18 +2025-03-10 13:17:52,908 - INFO - OPENED SHORT at 2063.95 | Stop loss: 2074.2851178571427 | Take profit: 2032.9676982142855 +2025-03-10 13:17:52,953 - INFO - CLOSED short at 2064.5 | PnL: -0.03% | $-0.23 +2025-03-10 13:17:52,954 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.162132142857 | Take profit: 2095.4905517857146 +2025-03-10 13:17:53,126 - INFO - CLOSED long at 2067.53 | PnL: 0.15% | $0.08 +2025-03-10 13:17:53,127 - INFO - OPENED SHORT at 2067.53 | Stop loss: 2077.883017857143 | Take profit: 2036.493998214286 +2025-03-10 13:17:53,229 - INFO - CLOSED short at 2068.59 | PnL: -0.05% | $-0.27 +2025-03-10 13:17:53,349 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.331132142857 | Take profit: 2101.7835517857143 +2025-03-10 13:17:53,449 - INFO - CLOSED long at 2070.61 | PnL: -0.00% | $-0.19 +2025-03-10 13:17:53,549 - INFO - OPENED LONG at 2070.67 | Stop loss: 2060.3012821428574 | Take profit: 2101.753101785714 +2025-03-10 13:17:53,569 - INFO - CLOSED long at 2069.78 | PnL: -0.04% | $-0.26 +2025-03-10 13:17:53,607 - INFO - OPENED SHORT at 2074.37 | Stop loss: 2084.7572178571427 | Take profit: 2043.2313982142855 +2025-03-10 13:17:53,725 - INFO - CLOSED short at 2075.29 | PnL: -0.04% | $-0.26 +2025-03-10 13:17:53,824 - INFO - OPENED LONG at 2074.0 | Stop loss: 2063.614632142857 | Take profit: 2105.133051785714 +2025-03-10 13:17:53,905 - INFO - CLOSED long at 2069.97 | PnL: -0.19% | $-0.53 +2025-03-10 13:17:53,906 - INFO - OPENED SHORT at 2069.97 | Stop loss: 2080.3352178571427 | Take profit: 2038.8973982142854 +2025-03-10 13:17:53,937 - INFO - CLOSED short at 2067.7 | PnL: 0.11% | $0.02 +2025-03-10 13:17:53,938 - INFO - OPENED LONG at 2067.7 | Stop loss: 2057.3461321428567 | Take profit: 2098.738551785714 +2025-03-10 13:17:53,958 - INFO - CLOSED long at 2067.0 | PnL: -0.03% | $-0.24 +2025-03-10 13:17:53,986 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.254867857143 | Take profit: 2036.858448214286 +2025-03-10 13:17:54,039 - INFO - CLOSED short at 2066.89 | PnL: 0.05% | $-0.09 +2025-03-10 13:17:54,078 - INFO - OPENED SHORT at 2065.45 | Stop loss: 2075.792617857143 | Take profit: 2034.4451982142855 +2025-03-10 13:17:54,097 - INFO - CLOSED short at 2068.1 | PnL: -0.13% | $-0.41 +2025-03-10 13:17:54,187 - INFO - OPENED SHORT at 2067.19 | Stop loss: 2077.541317857143 | Take profit: 2036.1590982142857 +2025-03-10 13:17:54,315 - INFO - CLOSED short at 2066.09 | PnL: 0.05% | $-0.08 +2025-03-10 13:17:54,411 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.4458678571427 | Take profit: 2035.0854482142856 +2025-03-10 13:17:54,552 - INFO - CLOSED short at 2060.7 | PnL: 0.26% | $0.28 +2025-03-10 13:17:54,553 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.381132142857 | Take profit: 2091.6335517857137 +2025-03-10 13:17:54,648 - INFO - CLOSED long at 2059.2 | PnL: -0.07% | $-0.31 +2025-03-10 13:17:54,648 - INFO - OPENED SHORT at 2059.2 | Stop loss: 2069.511367857143 | Take profit: 2028.2889482142855 +2025-03-10 13:17:54,757 - INFO - CLOSED short at 2056.77 | PnL: 0.12% | $0.03 +2025-03-10 13:17:54,782 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.7295821428572 | Take profit: 2083.8282017857146 +2025-03-10 13:17:54,824 - INFO - CLOSED long at 2049.5 | PnL: -0.17% | $-0.48 +2025-03-10 13:17:54,824 - INFO - OPENED SHORT at 2049.5 | Stop loss: 2059.762867857143 | Take profit: 2018.7344482142857 +2025-03-10 13:17:54,845 - INFO - CLOSED short at 2051.99 | PnL: -0.12% | $-0.39 +2025-03-10 13:17:54,845 - INFO - OPENED LONG at 2051.99 | Stop loss: 2041.714682142857 | Take profit: 2082.792901785714 +2025-03-10 13:17:54,889 - INFO - CLOSED long at 2056.85 | PnL: 0.24% | $0.24 +2025-03-10 13:17:54,889 - INFO - OPENED SHORT at 2056.85 | Stop loss: 2067.149617857143 | Take profit: 2025.9741982142855 +2025-03-10 13:17:54,909 - INFO - CLOSED short at 2057.11 | PnL: -0.01% | $-0.20 +2025-03-10 13:17:55,087 - INFO - OPENED SHORT at 2062.43 | Stop loss: 2072.7575178571424 | Take profit: 2031.4704982142855 +2025-03-10 13:17:55,134 - INFO - CLOSED short at 2062.55 | PnL: -0.01% | $-0.19 +2025-03-10 13:17:55,156 - INFO - OPENED SHORT at 2065.12 | Stop loss: 2075.460967857143 | Take profit: 2034.1201482142856 +2025-03-10 13:17:55,204 - INFO - CLOSED short at 2067.49 | PnL: -0.11% | $-0.38 +2025-03-10 13:17:55,246 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.744232142857 | Take profit: 2095.064251785714 +2025-03-10 13:17:55,267 - INFO - CLOSED long at 2061.21 | PnL: -0.14% | $-0.42 +2025-03-10 13:17:55,268 - INFO - OPENED SHORT at 2061.21 | Stop loss: 2071.5314178571425 | Take profit: 2030.2687982142857 +2025-03-10 13:17:55,581 - INFO - STOP LOSS hit for short at 2071.5314178571425 | PnL: -0.50% | $-1.04 +2025-03-10 13:17:55,604 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4356178571434 | Take profit: 2042.916198214286 +2025-03-10 13:17:55,653 - INFO - CLOSED short at 2071.89 | PnL: 0.10% | $0.01 +2025-03-10 13:17:55,673 - INFO - OPENED LONG at 2071.8 | Stop loss: 2061.4256321428575 | Take profit: 2102.900051785715 +2025-03-10 13:17:55,695 - INFO - CLOSED long at 2074.9 | PnL: 0.15% | $0.08 +2025-03-10 13:17:55,925 - INFO - OPENED SHORT at 2141.41 | Stop loss: 2152.1324178571426 | Take profit: 2109.2657982142855 +2025-03-10 13:17:56,054 - INFO - CLOSED short at 2128.69 | PnL: 0.59% | $0.85 +2025-03-10 13:17:56,089 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.5338821428572 | Take profit: 2151.9753017857147 +2025-03-10 13:17:56,106 - INFO - CLOSED long at 2117.24 | PnL: -0.14% | $-0.41 +2025-03-10 13:17:56,123 - INFO - OPENED SHORT at 2119.93 | Stop loss: 2130.5450178571427 | Take profit: 2088.1079982142855 +2025-03-10 13:17:56,196 - INFO - CLOSED short at 2119.07 | PnL: 0.04% | $-0.10 +2025-03-10 13:17:56,196 - INFO - OPENED LONG at 2119.07 | Stop loss: 2108.4592821428573 | Take profit: 2150.8791017857147 +2025-03-10 13:17:56,233 - INFO - CLOSED long at 2107.43 | PnL: -0.55% | $-1.12 +2025-03-10 13:17:56,234 - INFO - OPENED SHORT at 2107.43 | Stop loss: 2117.9825178571427 | Take profit: 2075.7954982142855 +2025-03-10 13:17:56,291 - INFO - CLOSED short at 2112.09 | PnL: -0.22% | $-0.54 +2025-03-10 13:17:56,310 - INFO - OPENED SHORT at 2112.95 | Stop loss: 2123.5301178571426 | Take profit: 2081.2326982142854 +2025-03-10 13:17:56,374 - INFO - CLOSED short at 2112.99 | PnL: -0.00% | $-0.17 +2025-03-10 13:17:56,374 - INFO - OPENED LONG at 2112.99 | Stop loss: 2102.409682142857 | Take profit: 2144.707901785714 +2025-03-10 13:17:56,449 - INFO - CLOSED long at 2110.9 | PnL: -0.10% | $-0.33 +2025-03-10 13:17:56,450 - INFO - OPENED SHORT at 2110.9 | Stop loss: 2121.469867857143 | Take profit: 2079.2134482142856 +2025-03-10 13:17:56,479 - INFO - CLOSED short at 2108.71 | PnL: 0.10% | $0.01 +2025-03-10 13:17:56,502 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.942182142857 | Take profit: 2138.1104017857137 +2025-03-10 13:17:56,558 - INFO - CLOSED long at 2100.5 | PnL: -0.28% | $-0.64 +2025-03-10 13:17:56,559 - INFO - OPENED SHORT at 2100.5 | Stop loss: 2111.017867857143 | Take profit: 2068.969448214286 +2025-03-10 13:17:56,578 - INFO - CLOSED short at 2090.0 | PnL: 0.50% | $0.66 +2025-03-10 13:17:56,578 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.534632142857 | Take profit: 2121.3730517857143 +2025-03-10 13:17:56,604 - INFO - CLOSED long at 2099.53 | PnL: 0.46% | $0.60 +2025-03-10 13:17:56,604 - INFO - OPENED SHORT at 2099.53 | Stop loss: 2110.043017857143 | Take profit: 2068.013998214286 +2025-03-10 13:17:56,643 - INFO - CLOSED short at 2102.19 | PnL: -0.13% | $-0.38 +2025-03-10 13:17:56,643 - INFO - OPENED LONG at 2102.19 | Stop loss: 2091.6636821428574 | Take profit: 2133.7459017857145 +2025-03-10 13:17:56,707 - INFO - CLOSED long at 2098.9 | PnL: -0.16% | $-0.43 +2025-03-10 13:17:56,708 - INFO - OPENED SHORT at 2098.9 | Stop loss: 2109.409867857143 | Take profit: 2067.393448214286 +2025-03-10 13:17:56,783 - INFO - CLOSED short at 2100.74 | PnL: -0.09% | $-0.31 +2025-03-10 13:17:56,784 - INFO - OPENED LONG at 2100.74 | Stop loss: 2090.2209321428572 | Take profit: 2132.2741517857144 +2025-03-10 13:17:56,819 - INFO - CLOSED long at 2104.68 | PnL: 0.19% | $0.15 +2025-03-10 13:17:56,839 - INFO - OPENED LONG at 2101.51 | Stop loss: 2090.987082142857 | Take profit: 2133.0557017857145 +2025-03-10 13:17:56,857 - INFO - CLOSED long at 2099.59 | PnL: -0.09% | $-0.32 +2025-03-10 13:17:56,858 - INFO - OPENED SHORT at 2099.59 | Stop loss: 2110.1033178571433 | Take profit: 2068.073098214286 +2025-03-10 13:17:56,927 - INFO - CLOSED short at 2093.46 | PnL: 0.29% | $0.32 +2025-03-10 13:17:56,963 - INFO - OPENED LONG at 2092.46 | Stop loss: 2081.982332142857 | Take profit: 2123.8699517857144 +2025-03-10 13:17:57,091 - INFO - CLOSED long at 2083.97 | PnL: -0.41% | $-0.84 +2025-03-10 13:17:57,093 - INFO - OPENED SHORT at 2083.97 | Stop loss: 2094.4052178571424 | Take profit: 2052.6873982142856 +2025-03-10 13:17:57,128 - INFO - CLOSED short at 2082.44 | PnL: 0.07% | $-0.04 +2025-03-10 13:17:57,238 - INFO - OPENED LONG at 2083.59 | Stop loss: 2073.1566821428573 | Take profit: 2114.866901785714 +2025-03-10 13:17:57,335 - INFO - CLOSED long at 2085.85 | PnL: 0.11% | $0.01 +2025-03-10 13:17:57,335 - INFO - OPENED SHORT at 2085.85 | Stop loss: 2096.294617857143 | Take profit: 2054.5391982142855 +2025-03-10 13:17:57,354 - INFO - CLOSED short at 2088.66 | PnL: -0.13% | $-0.39 +2025-03-10 13:17:57,405 - INFO - OPENED SHORT at 2088.1 | Stop loss: 2098.555867857143 | Take profit: 2056.7554482142855 +2025-03-10 13:17:57,483 - INFO - CLOSED short at 2087.78 | PnL: 0.02% | $-0.14 +2025-03-10 13:17:57,483 - INFO - OPENED LONG at 2087.78 | Stop loss: 2077.3257321428573 | Take profit: 2119.1197517857145 +2025-03-10 13:17:57,572 - INFO - CLOSED long at 2091.05 | PnL: 0.16% | $0.09 +2025-03-10 13:17:57,590 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.5793821428574 | Take profit: 2122.4388017857145 +2025-03-10 13:17:57,718 - INFO - CLOSED long at 2098.49 | PnL: 0.36% | $0.42 +2025-03-10 13:17:57,718 - INFO - OPENED SHORT at 2098.49 | Stop loss: 2108.9978178571428 | Take profit: 2066.9895982142857 +2025-03-10 13:17:57,757 - INFO - CLOSED short at 2100.89 | PnL: -0.11% | $-0.35 +2025-03-10 13:17:57,778 - INFO - OPENED LONG at 2099.73 | Stop loss: 2089.2159821428572 | Take profit: 2131.249001785714 +2025-03-10 13:17:57,844 - INFO - CLOSED long at 2104.93 | PnL: 0.25% | $0.24 +2025-03-10 13:17:57,864 - INFO - OPENED SHORT at 2103.81 | Stop loss: 2114.344417857143 | Take profit: 2072.229798214286 +2025-03-10 13:17:57,885 - INFO - CLOSED short at 2103.07 | PnL: 0.04% | $-0.11 +2025-03-10 13:17:57,904 - INFO - OPENED LONG at 2101.5 | Stop loss: 2090.977132142857 | Take profit: 2133.0455517857145 +2025-03-10 13:17:57,989 - INFO - CLOSED long at 2103.52 | PnL: 0.10% | $-0.01 +2025-03-10 13:17:58,098 - INFO - OPENED LONG at 2102.0 | Stop loss: 2091.474632142857 | Take profit: 2133.5530517857146 +2025-03-10 13:17:58,142 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.21, Avg Loss=$-0.28 +2025-03-10 13:17:58,143 - INFO - Episode 2: Reward=-68.46, Balance=$82.92, Win Rate=27.6%, Trades=116, Episode PnL=$-12.17, Total PnL=$-66.19, Max Drawdown=17.3%, Pred Accuracy=98.6% +2025-03-10 13:17:58,143 - ERROR - Error in episode 2: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:17:58,143 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1831, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:17:58,165 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:17:58,361 - INFO - OPENED LONG at 2048.13 | Stop loss: 2037.8739821428571 | Take profit: 2078.8750017857146 +2025-03-10 13:17:58,423 - INFO - CLOSED long at 2050.0 | PnL: 0.09% | $-0.02 +2025-03-10 13:17:58,423 - INFO - OPENED SHORT at 2050.0 | Stop loss: 2060.265367857143 | Take profit: 2019.2269482142858 +2025-03-10 13:17:58,501 - INFO - CLOSED short at 2053.26 | PnL: -0.16% | $-0.51 +2025-03-10 13:17:58,501 - INFO - OPENED LONG at 2053.26 | Stop loss: 2042.9783321428572 | Take profit: 2084.0819517857144 +2025-03-10 13:17:58,537 - INFO - CLOSED long at 2052.3 | PnL: -0.05% | $-0.29 +2025-03-10 13:17:58,538 - INFO - OPENED SHORT at 2052.3 | Stop loss: 2062.576867857143 | Take profit: 2021.492448214286 +2025-03-10 13:17:58,556 - INFO - CLOSED short at 2055.69 | PnL: -0.17% | $-0.52 +2025-03-10 13:17:58,597 - INFO - OPENED SHORT at 2056.89 | Stop loss: 2067.1898178571428 | Take profit: 2026.0135982142856 +2025-03-10 13:17:58,614 - INFO - CLOSED short at 2058.39 | PnL: -0.07% | $-0.34 +2025-03-10 13:17:58,614 - INFO - OPENED LONG at 2058.39 | Stop loss: 2048.0826821428573 | Take profit: 2089.288901785714 +2025-03-10 13:17:58,673 - INFO - CLOSED long at 2061.49 | PnL: 0.15% | $0.10 +2025-03-10 13:17:58,711 - INFO - OPENED SHORT at 2064.61 | Stop loss: 2074.948417857143 | Take profit: 2033.6177982142858 +2025-03-10 13:17:58,786 - INFO - CLOSED short at 2063.01 | PnL: 0.08% | $-0.04 +2025-03-10 13:17:58,786 - INFO - OPENED LONG at 2063.01 | Stop loss: 2052.6795821428573 | Take profit: 2093.9782017857146 +2025-03-10 13:17:58,838 - INFO - CLOSED long at 2060.0 | PnL: -0.15% | $-0.48 +2025-03-10 13:17:58,912 - INFO - OPENED SHORT at 2059.49 | Stop loss: 2069.8028178571426 | Take profit: 2028.5745982142855 +2025-03-10 13:17:58,976 - INFO - CLOSED short at 2058.11 | PnL: 0.07% | $-0.06 +2025-03-10 13:17:58,976 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.8040821428572 | Take profit: 2089.0047017857146 +2025-03-10 13:17:58,999 - INFO - CLOSED long at 2061.79 | PnL: 0.18% | $0.15 +2025-03-10 13:17:58,999 - INFO - OPENED SHORT at 2061.79 | Stop loss: 2072.114317857143 | Take profit: 2030.8400982142857 +2025-03-10 13:17:59,022 - INFO - CLOSED short at 2061.18 | PnL: 0.03% | $-0.14 +2025-03-10 13:17:59,064 - INFO - OPENED LONG at 2065.86 | Stop loss: 2055.515332142857 | Take profit: 2096.870951785714 +2025-03-10 13:17:59,090 - INFO - CLOSED long at 2070.58 | PnL: 0.23% | $0.25 +2025-03-10 13:17:59,143 - INFO - OPENED LONG at 2068.29 | Stop loss: 2057.9331821428573 | Take profit: 2099.337401785714 +2025-03-10 13:17:59,227 - INFO - CLOSED long at 2070.99 | PnL: 0.13% | $0.06 +2025-03-10 13:17:59,227 - INFO - OPENED SHORT at 2070.99 | Stop loss: 2081.3603178571425 | Take profit: 2039.9020982142854 +2025-03-10 13:17:59,285 - INFO - CLOSED short at 2068.65 | PnL: 0.11% | $0.03 +2025-03-10 13:17:59,355 - INFO - OPENED SHORT at 2067.69 | Stop loss: 2078.043817857143 | Take profit: 2036.6515982142857 +2025-03-10 13:17:59,397 - INFO - CLOSED short at 2071.44 | PnL: -0.18% | $-0.55 +2025-03-10 13:17:59,398 - INFO - OPENED LONG at 2071.44 | Stop loss: 2061.0674321428573 | Take profit: 2102.5346517857142 +2025-03-10 13:17:59,499 - INFO - CLOSED long at 2071.38 | PnL: -0.00% | $-0.20 +2025-03-10 13:17:59,499 - INFO - OPENED SHORT at 2071.38 | Stop loss: 2081.752267857143 | Take profit: 2040.2862482142857 +2025-03-10 13:17:59,553 - INFO - CLOSED short at 2069.37 | PnL: 0.10% | $-0.01 +2025-03-10 13:17:59,554 - INFO - OPENED LONG at 2069.37 | Stop loss: 2059.007782142857 | Take profit: 2100.4336017857145 +2025-03-10 13:17:59,615 - INFO - CLOSED long at 2072.8 | PnL: 0.17% | $0.13 +2025-03-10 13:17:59,616 - INFO - OPENED SHORT at 2072.8 | Stop loss: 2083.179367857143 | Take profit: 2041.684948214286 +2025-03-10 13:17:59,677 - INFO - CLOSED short at 2070.28 | PnL: 0.12% | $0.04 +2025-03-10 13:17:59,708 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.3754678571427 | Take profit: 2036.9766482142857 +2025-03-10 13:17:59,733 - INFO - CLOSED short at 2067.2 | PnL: 0.04% | $-0.12 +2025-03-10 13:17:59,756 - INFO - OPENED SHORT at 2070.36 | Stop loss: 2080.7271678571433 | Take profit: 2039.2815482142857 +2025-03-10 13:17:59,774 - INFO - CLOSED short at 2068.9 | PnL: 0.07% | $-0.06 +2025-03-10 13:17:59,775 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.540132142857 | Take profit: 2099.9565517857145 +2025-03-10 13:17:59,795 - INFO - CLOSED long at 2070.7 | PnL: 0.09% | $-0.03 +2025-03-10 13:17:59,795 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.068867857143 | Take profit: 2039.6164482142856 +2025-03-10 13:17:59,814 - INFO - CLOSED short at 2069.34 | PnL: 0.07% | $-0.07 +2025-03-10 13:17:59,815 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.9779321428573 | Take profit: 2100.4031517857143 +2025-03-10 13:17:59,855 - INFO - CLOSED long at 2068.8 | PnL: -0.03% | $-0.24 +2025-03-10 13:17:59,896 - INFO - OPENED SHORT at 2067.51 | Stop loss: 2077.862917857143 | Take profit: 2036.474298214286 +2025-03-10 13:17:59,966 - INFO - CLOSED short at 2065.99 | PnL: 0.07% | $-0.05 +2025-03-10 13:18:00,046 - INFO - OPENED SHORT at 2066.29 | Stop loss: 2076.636817857143 | Take profit: 2035.2725982142856 +2025-03-10 13:18:00,085 - INFO - CLOSED short at 2065.08 | PnL: 0.06% | $-0.08 +2025-03-10 13:18:00,197 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.948317857143 | Take profit: 2037.5380982142858 +2025-03-10 13:18:00,240 - INFO - CLOSED short at 2070.4 | PnL: -0.09% | $-0.36 +2025-03-10 13:18:00,240 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.032632142857 | Take profit: 2101.4790517857145 +2025-03-10 13:18:00,352 - INFO - CLOSED long at 2072.75 | PnL: 0.11% | $0.03 +2025-03-10 13:18:00,382 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.7290821428574 | Take profit: 2104.2297017857145 +2025-03-10 13:18:00,500 - INFO - CLOSED long at 2073.9 | PnL: 0.04% | $-0.12 +2025-03-10 13:18:00,547 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.032632142857 | Take profit: 2101.4790517857145 +2025-03-10 13:18:00,584 - INFO - CLOSED long at 2069.46 | PnL: -0.05% | $-0.28 +2025-03-10 13:18:00,584 - INFO - OPENED SHORT at 2069.46 | Stop loss: 2079.822667857143 | Take profit: 2038.395048214286 +2025-03-10 13:18:00,647 - INFO - CLOSED short at 2067.0 | PnL: 0.12% | $0.04 +2025-03-10 13:18:00,664 - INFO - OPENED SHORT at 2067.79 | Stop loss: 2078.1443178571426 | Take profit: 2036.7500982142856 +2025-03-10 13:18:00,704 - INFO - CLOSED short at 2066.8 | PnL: 0.05% | $-0.10 +2025-03-10 13:18:00,747 - INFO - OPENED SHORT at 2063.61 | Stop loss: 2073.943417857143 | Take profit: 2032.632798214286 +2025-03-10 13:18:00,877 - INFO - CLOSED short at 2069.34 | PnL: -0.28% | $-0.72 +2025-03-10 13:18:00,994 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.331132142857 | Take profit: 2101.7835517857143 +2025-03-10 13:18:01,070 - INFO - CLOSED long at 2068.69 | PnL: -0.10% | $-0.37 +2025-03-10 13:18:01,070 - INFO - OPENED SHORT at 2068.69 | Stop loss: 2079.0488178571427 | Take profit: 2037.6365982142859 +2025-03-10 13:18:01,192 - INFO - CLOSED short at 2065.28 | PnL: 0.16% | $0.12 +2025-03-10 13:18:01,221 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.7373178571424 | Take profit: 2035.3710982142857 +2025-03-10 13:18:01,250 - INFO - CLOSED short at 2064.47 | PnL: 0.09% | $-0.01 +2025-03-10 13:18:01,250 - INFO - OPENED LONG at 2064.47 | Stop loss: 2054.132282142857 | Take profit: 2095.460101785714 +2025-03-10 13:18:01,305 - INFO - CLOSED long at 2067.8 | PnL: 0.16% | $0.12 +2025-03-10 13:18:01,305 - INFO - OPENED SHORT at 2067.8 | Stop loss: 2078.1543678571434 | Take profit: 2036.759948214286 +2025-03-10 13:18:01,363 - INFO - CLOSED short at 2067.88 | PnL: -0.00% | $-0.20 +2025-03-10 13:18:01,363 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.525232142857 | Take profit: 2098.9212517857145 +2025-03-10 13:18:01,393 - INFO - CLOSED long at 2064.99 | PnL: -0.14% | $-0.45 +2025-03-10 13:18:01,393 - INFO - OPENED SHORT at 2064.99 | Stop loss: 2075.3303178571427 | Take profit: 2033.9920982142855 +2025-03-10 13:18:01,411 - INFO - CLOSED short at 2065.83 | PnL: -0.04% | $-0.26 +2025-03-10 13:18:01,432 - INFO - OPENED LONG at 2066.15 | Stop loss: 2055.803882142857 | Take profit: 2097.1653017857147 +2025-03-10 13:18:01,452 - INFO - CLOSED long at 2065.26 | PnL: -0.04% | $-0.27 +2025-03-10 13:18:01,453 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.601667857143 | Take profit: 2034.258048214286 +2025-03-10 13:18:01,515 - INFO - CLOSED short at 2061.78 | PnL: 0.17% | $0.13 +2025-03-10 13:18:01,515 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.4557321428574 | Take profit: 2092.7297517857146 +2025-03-10 13:18:01,590 - INFO - CLOSED long at 2063.59 | PnL: 0.09% | $-0.02 +2025-03-10 13:18:01,709 - INFO - OPENED SHORT at 2065.54 | Stop loss: 2075.8830678571426 | Take profit: 2034.5338482142859 +2025-03-10 13:18:01,731 - INFO - CLOSED short at 2066.09 | PnL: -0.03% | $-0.24 +2025-03-10 13:18:01,751 - INFO - OPENED LONG at 2064.45 | Stop loss: 2054.112382142857 | Take profit: 2095.439801785714 +2025-03-10 13:18:01,769 - INFO - CLOSED long at 2064.08 | PnL: -0.02% | $-0.22 +2025-03-10 13:18:01,810 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560182142857 | Take profit: 2093.8564017857143 +2025-03-10 13:18:01,882 - INFO - CLOSED long at 2060.9 | PnL: -0.10% | $-0.37 +2025-03-10 13:18:01,882 - INFO - OPENED SHORT at 2060.9 | Stop loss: 2071.219867857143 | Take profit: 2029.9634482142858 +2025-03-10 13:18:01,920 - INFO - CLOSED short at 2058.89 | PnL: 0.10% | $-0.00 +2025-03-10 13:18:01,920 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.580182142857 | Take profit: 2089.7964017857144 +2025-03-10 13:18:01,940 - INFO - CLOSED long at 2059.3 | PnL: 0.02% | $-0.15 +2025-03-10 13:18:01,993 - INFO - OPENED SHORT at 2061.8 | Stop loss: 2072.1243678571427 | Take profit: 2030.8499482142859 +2025-03-10 13:18:02,026 - INFO - CLOSED short at 2064.7 | PnL: -0.14% | $-0.45 +2025-03-10 13:18:02,026 - INFO - OPENED LONG at 2064.7 | Stop loss: 2054.361132142857 | Take profit: 2095.693551785714 +2025-03-10 13:18:02,056 - INFO - CLOSED long at 2062.61 | PnL: -0.10% | $-0.37 +2025-03-10 13:18:02,119 - INFO - OPENED SHORT at 2060.3 | Stop loss: 2070.616867857143 | Take profit: 2029.372448214286 +2025-03-10 13:18:02,185 - INFO - CLOSED short at 2064.1 | PnL: -0.18% | $-0.52 +2025-03-10 13:18:02,210 - INFO - OPENED LONG at 2065.36 | Stop loss: 2055.0178321428575 | Take profit: 2096.3634517857145 +2025-03-10 13:18:02,227 - INFO - CLOSED long at 2064.33 | PnL: -0.05% | $-0.27 +2025-03-10 13:18:02,227 - INFO - OPENED SHORT at 2064.33 | Stop loss: 2074.6670178571426 | Take profit: 2033.3419982142857 +2025-03-10 13:18:02,287 - INFO - CLOSED short at 2065.89 | PnL: -0.08% | $-0.32 +2025-03-10 13:18:02,287 - INFO - OPENED LONG at 2065.89 | Stop loss: 2055.545182142857 | Take profit: 2096.9014017857144 +2025-03-10 13:18:02,327 - INFO - CLOSED long at 2063.0 | PnL: -0.14% | $-0.43 +2025-03-10 13:18:02,327 - INFO - OPENED SHORT at 2063.0 | Stop loss: 2073.330367857143 | Take profit: 2032.0319482142856 +2025-03-10 13:18:02,356 - INFO - CLOSED short at 2062.6 | PnL: 0.02% | $-0.15 +2025-03-10 13:18:02,396 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.565182142857 | Take profit: 2092.841401785714 +2025-03-10 13:18:02,454 - INFO - CLOSED long at 2060.7 | PnL: -0.06% | $-0.28 +2025-03-10 13:18:02,454 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0188678571426 | Take profit: 2029.7664482142854 +2025-03-10 13:18:02,641 - INFO - CLOSED short at 2059.46 | PnL: 0.06% | $-0.07 +2025-03-10 13:18:02,668 - INFO - OPENED LONG at 2057.4 | Stop loss: 2047.0976321428573 | Take profit: 2088.2840517857144 +2025-03-10 13:18:02,873 - INFO - CLOSED long at 2059.8 | PnL: 0.12% | $0.03 +2025-03-10 13:18:02,874 - INFO - OPENED SHORT at 2059.8 | Stop loss: 2070.1143678571434 | Take profit: 2028.8799482142858 +2025-03-10 13:18:02,945 - INFO - CLOSED short at 2061.5 | PnL: -0.08% | $-0.33 +2025-03-10 13:18:02,967 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.276632142857 | Take profit: 2092.5470517857143 +2025-03-10 13:18:02,998 - INFO - CLOSED long at 2061.3 | PnL: -0.01% | $-0.20 +2025-03-10 13:18:03,020 - INFO - OPENED LONG at 2062.69 | Stop loss: 2052.361182142857 | Take profit: 2093.6534017857143 +2025-03-10 13:18:03,083 - INFO - CLOSED long at 2066.01 | PnL: 0.16% | $0.11 +2025-03-10 13:18:03,102 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.5651321428572 | Take profit: 2094.8815517857142 +2025-03-10 13:18:03,126 - INFO - CLOSED long at 2064.49 | PnL: 0.03% | $-0.13 +2025-03-10 13:18:03,127 - INFO - OPENED SHORT at 2064.49 | Stop loss: 2074.8278178571427 | Take profit: 2033.4995982142855 +2025-03-10 13:18:03,157 - INFO - CLOSED short at 2066.33 | PnL: -0.09% | $-0.34 +2025-03-10 13:18:03,157 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.982982142857 | Take profit: 2097.348001785714 +2025-03-10 13:18:03,341 - INFO - CLOSED long at 2072.0 | PnL: 0.27% | $0.31 +2025-03-10 13:18:03,486 - INFO - OPENED LONG at 2071.6 | Stop loss: 2061.226632142857 | Take profit: 2102.697051785714 +2025-03-10 13:18:03,503 - INFO - CLOSED long at 2073.23 | PnL: 0.08% | $-0.04 +2025-03-10 13:18:03,503 - INFO - OPENED SHORT at 2073.23 | Stop loss: 2083.611517857143 | Take profit: 2042.1084982142859 +2025-03-10 13:18:03,529 - INFO - CLOSED short at 2070.0 | PnL: 0.16% | $0.10 +2025-03-10 13:18:03,530 - INFO - OPENED LONG at 2070.0 | Stop loss: 2059.634632142857 | Take profit: 2101.0730517857146 +2025-03-10 13:18:03,688 - INFO - CLOSED long at 2067.44 | PnL: -0.12% | $-0.40 +2025-03-10 13:18:03,689 - INFO - OPENED SHORT at 2067.44 | Stop loss: 2077.792567857143 | Take profit: 2036.4053482142858 +2025-03-10 13:18:03,723 - INFO - CLOSED short at 2068.79 | PnL: -0.07% | $-0.29 +2025-03-10 13:18:03,746 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.3703178571427 | Take profit: 2041.8720982142854 +2025-03-10 13:18:03,766 - INFO - CLOSED short at 2071.49 | PnL: 0.07% | $-0.05 +2025-03-10 13:18:03,842 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.0438678571427 | Take profit: 2034.6914482142856 +2025-03-10 13:18:03,901 - INFO - CLOSED short at 2063.97 | PnL: 0.08% | $-0.03 +2025-03-10 13:18:03,901 - INFO - OPENED LONG at 2063.97 | Stop loss: 2053.6347821428567 | Take profit: 2094.9526017857143 +2025-03-10 13:18:03,921 - INFO - CLOSED long at 2064.5 | PnL: 0.03% | $-0.13 +2025-03-10 13:18:03,921 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.8378678571426 | Take profit: 2033.5094482142858 +2025-03-10 13:18:04,081 - INFO - CLOSED short at 2065.29 | PnL: -0.04% | $-0.24 +2025-03-10 13:18:04,081 - INFO - OPENED LONG at 2065.29 | Stop loss: 2054.948182142857 | Take profit: 2096.2924017857144 +2025-03-10 13:18:04,115 - INFO - CLOSED long at 2065.31 | PnL: 0.00% | $-0.17 +2025-03-10 13:18:04,115 - INFO - OPENED SHORT at 2065.31 | Stop loss: 2075.6519178571425 | Take profit: 2034.3072982142855 +2025-03-10 13:18:04,169 - INFO - CLOSED short at 2068.59 | PnL: -0.16% | $-0.46 +2025-03-10 13:18:04,213 - INFO - OPENED LONG at 2070.2 | Stop loss: 2059.833632142857 | Take profit: 2101.276051785714 +2025-03-10 13:18:04,256 - INFO - CLOSED long at 2070.9 | PnL: 0.03% | $-0.12 +2025-03-10 13:18:04,256 - INFO - OPENED SHORT at 2070.9 | Stop loss: 2081.269867857143 | Take profit: 2039.8134482142857 +2025-03-10 13:18:04,386 - INFO - CLOSED short at 2070.61 | PnL: 0.01% | $-0.15 +2025-03-10 13:18:04,387 - INFO - OPENED LONG at 2070.61 | Stop loss: 2060.241582142857 | Take profit: 2101.692201785714 +2025-03-10 13:18:04,494 - INFO - CLOSED long at 2068.67 | PnL: -0.09% | $-0.34 +2025-03-10 13:18:04,586 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.982782142857 | Take profit: 2105.508601785714 +2025-03-10 13:18:04,636 - INFO - CLOSED long at 2073.27 | PnL: -0.05% | $-0.27 +2025-03-10 13:18:04,636 - INFO - OPENED SHORT at 2073.27 | Stop loss: 2083.651717857143 | Take profit: 2042.1478982142858 +2025-03-10 13:18:04,662 - INFO - CLOSED short at 2073.99 | PnL: -0.03% | $-0.23 +2025-03-10 13:18:04,732 - INFO - OPENED LONG at 2075.61 | Stop loss: 2065.216582142857 | Take profit: 2106.7672017857144 +2025-03-10 13:18:04,750 - INFO - CLOSED long at 2074.0 | PnL: -0.08% | $-0.31 +2025-03-10 13:18:04,750 - INFO - OPENED SHORT at 2074.0 | Stop loss: 2084.3853678571427 | Take profit: 2042.8669482142857 +2025-03-10 13:18:04,826 - INFO - CLOSED short at 2067.0 | PnL: 0.34% | $0.41 +2025-03-10 13:18:04,826 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.649632142857 | Take profit: 2098.0280517857145 +2025-03-10 13:18:04,865 - INFO - CLOSED long at 2066.4 | PnL: -0.03% | $-0.22 +2025-03-10 13:18:04,866 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.7473678571428 | Take profit: 2035.3809482142858 +2025-03-10 13:18:04,887 - INFO - CLOSED short at 2066.89 | PnL: -0.02% | $-0.21 +2025-03-10 13:18:05,175 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.4458678571427 | Take profit: 2035.0854482142856 +2025-03-10 13:18:05,202 - INFO - CLOSED short at 2065.06 | PnL: 0.05% | $-0.09 +2025-03-10 13:18:05,220 - INFO - OPENED SHORT at 2064.11 | Stop loss: 2074.445917857143 | Take profit: 2033.1252982142857 +2025-03-10 13:18:05,286 - INFO - CLOSED short at 2063.01 | PnL: 0.05% | $-0.08 +2025-03-10 13:18:05,286 - INFO - OPENED LONG at 2063.01 | Stop loss: 2052.6795821428573 | Take profit: 2093.9782017857146 +2025-03-10 13:18:05,302 - INFO - CLOSED long at 2060.7 | PnL: -0.11% | $-0.36 +2025-03-10 13:18:05,302 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0188678571426 | Take profit: 2029.7664482142854 +2025-03-10 13:18:05,330 - INFO - CLOSED short at 2060.2 | PnL: 0.02% | $-0.13 +2025-03-10 13:18:05,330 - INFO - OPENED LONG at 2060.2 | Stop loss: 2049.883632142857 | Take profit: 2091.126051785714 +2025-03-10 13:18:05,394 - INFO - CLOSED long at 2058.65 | PnL: -0.08% | $-0.30 +2025-03-10 13:18:05,394 - INFO - OPENED SHORT at 2058.65 | Stop loss: 2068.958617857143 | Take profit: 2027.7471982142856 +2025-03-10 13:18:05,455 - INFO - CLOSED short at 2049.21 | PnL: 0.46% | $0.61 +2025-03-10 13:18:05,455 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.948582142857 | Take profit: 2079.971201785714 +2025-03-10 13:18:05,504 - INFO - CLOSED long at 2051.99 | PnL: 0.14% | $0.06 +2025-03-10 13:18:05,504 - INFO - OPENED SHORT at 2051.99 | Stop loss: 2062.2653178571427 | Take profit: 2021.1870982142855 +2025-03-10 13:18:05,566 - INFO - CLOSED short at 2057.11 | PnL: -0.25% | $-0.60 +2025-03-10 13:18:05,566 - INFO - OPENED LONG at 2057.11 | Stop loss: 2046.8090821428573 | Take profit: 2087.9897017857147 +2025-03-10 13:18:05,603 - INFO - CLOSED long at 2062.83 | PnL: 0.28% | $0.30 +2025-03-10 13:18:05,603 - INFO - OPENED SHORT at 2062.83 | Stop loss: 2073.159517857143 | Take profit: 2031.8644982142857 +2025-03-10 13:18:05,665 - INFO - CLOSED short at 2062.43 | PnL: 0.02% | $-0.14 +2025-03-10 13:18:05,666 - INFO - OPENED LONG at 2062.43 | Stop loss: 2052.102482142857 | Take profit: 2093.389501785714 +2025-03-10 13:18:05,758 - INFO - CLOSED long at 2066.59 | PnL: 0.20% | $0.17 +2025-03-10 13:18:05,758 - INFO - OPENED SHORT at 2066.59 | Stop loss: 2076.938317857143 | Take profit: 2035.5680982142858 +2025-03-10 13:18:05,832 - INFO - CLOSED short at 2060.7 | PnL: 0.29% | $0.32 +2025-03-10 13:18:05,903 - INFO - OPENED LONG at 2070.31 | Stop loss: 2059.943082142857 | Take profit: 2101.3877017857144 +2025-03-10 13:18:06,009 - INFO - CLOSED long at 2074.05 | PnL: 0.18% | $0.14 +2025-03-10 13:18:06,065 - INFO - OPENED SHORT at 2071.8 | Stop loss: 2082.174367857143 | Take profit: 2040.699948214286 +2025-03-10 13:18:06,101 - INFO - CLOSED short at 2076.08 | PnL: -0.21% | $-0.53 +2025-03-10 13:18:06,228 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.253067857143 | Take profit: 2107.4238482142855 +2025-03-10 13:18:06,251 - INFO - CLOSED short at 2131.78 | PnL: 0.36% | $0.45 +2025-03-10 13:18:06,252 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.1057321428575 | Take profit: 2163.779751785715 +2025-03-10 13:18:06,312 - INFO - CLOSED long at 2137.59 | PnL: 0.27% | $0.30 +2025-03-10 13:18:06,342 - INFO - OPENED LONG at 2141.41 | Stop loss: 2130.687582142857 | Take profit: 2173.554201785714 +2025-03-10 13:18:06,398 - INFO - CLOSED long at 2142.68 | PnL: 0.06% | $-0.07 +2025-03-10 13:18:06,403 - INFO - OPENED SHORT at 2142.68 | Stop loss: 2153.4087678571427 | Take profit: 2110.5167482142856 +2025-03-10 13:18:06,464 - INFO - CLOSED short at 2134.78 | PnL: 0.37% | $0.46 +2025-03-10 13:18:06,464 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.090732142857 | Take profit: 2166.824751785715 +2025-03-10 13:18:06,567 - INFO - CLOSED long at 2128.69 | PnL: -0.29% | $-0.67 +2025-03-10 13:18:06,567 - INFO - OPENED SHORT at 2128.69 | Stop loss: 2139.348817857143 | Take profit: 2096.7365982142856 +2025-03-10 13:18:06,625 - INFO - CLOSED short at 2120.15 | PnL: 0.40% | $0.52 +2025-03-10 13:18:06,666 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.314982142857 | Take profit: 2151.7520017857137 +2025-03-10 13:18:06,749 - INFO - CLOSED long at 2119.07 | PnL: -0.04% | $-0.24 +2025-03-10 13:18:06,843 - INFO - OPENED SHORT at 2112.09 | Stop loss: 2122.6658178571433 | Take profit: 2080.385598214286 +2025-03-10 13:18:06,862 - INFO - CLOSED short at 2112.95 | PnL: -0.04% | $-0.24 +2025-03-10 13:18:06,882 - INFO - OPENED LONG at 2112.46 | Stop loss: 2101.882332142857 | Take profit: 2144.169951785714 +2025-03-10 13:18:06,916 - INFO - CLOSED long at 2112.99 | PnL: 0.03% | $-0.13 +2025-03-10 13:18:06,916 - INFO - OPENED SHORT at 2112.99 | Stop loss: 2123.570317857143 | Take profit: 2081.2720982142855 +2025-03-10 13:18:06,982 - INFO - CLOSED short at 2114.8 | PnL: -0.09% | $-0.32 +2025-03-10 13:18:06,982 - INFO - OPENED LONG at 2114.8 | Stop loss: 2104.2106321428573 | Take profit: 2146.545051785715 +2025-03-10 13:18:07,085 - INFO - STOP LOSS hit for long at 2104.2106321428573 | PnL: -0.50% | $-1.03 +2025-03-10 13:18:07,132 - INFO - OPENED SHORT at 2099.53 | Stop loss: 2110.043017857143 | Take profit: 2068.013998214286 +2025-03-10 13:18:07,196 - INFO - CLOSED short at 2102.29 | PnL: -0.13% | $-0.39 +2025-03-10 13:18:07,196 - INFO - OPENED LONG at 2102.29 | Stop loss: 2091.763182142857 | Take profit: 2133.8474017857143 +2025-03-10 13:18:07,215 - INFO - CLOSED long at 2099.25 | PnL: -0.14% | $-0.41 +2025-03-10 13:18:07,216 - INFO - OPENED SHORT at 2099.25 | Stop loss: 2109.761617857143 | Take profit: 2067.7381982142856 +2025-03-10 13:18:07,329 - INFO - CLOSED short at 2100.74 | PnL: -0.07% | $-0.29 +2025-03-10 13:18:07,329 - INFO - OPENED LONG at 2100.74 | Stop loss: 2090.2209321428572 | Take profit: 2132.2741517857144 +2025-03-10 13:18:07,403 - INFO - CLOSED long at 2101.51 | PnL: 0.04% | $-0.11 +2025-03-10 13:18:07,403 - INFO - OPENED SHORT at 2101.51 | Stop loss: 2112.0329178571433 | Take profit: 2069.964298214286 +2025-03-10 13:18:07,472 - INFO - CLOSED short at 2098.39 | PnL: 0.15% | $0.08 +2025-03-10 13:18:07,662 - INFO - OPENED SHORT at 2088.44 | Stop loss: 2098.8975678571433 | Take profit: 2057.0903482142858 +2025-03-10 13:18:07,701 - INFO - CLOSED short at 2085.3 | PnL: 0.15% | $0.08 +2025-03-10 13:18:07,745 - INFO - OPENED LONG at 2080.38 | Stop loss: 2069.962732142857 | Take profit: 2111.6087517857145 +2025-03-10 13:18:07,788 - INFO - CLOSED long at 2083.41 | PnL: 0.15% | $0.08 +2025-03-10 13:18:07,789 - INFO - OPENED SHORT at 2083.41 | Stop loss: 2093.8424178571427 | Take profit: 2052.1357982142854 +2025-03-10 13:18:07,940 - INFO - CLOSED short at 2088.66 | PnL: -0.25% | $-0.59 +2025-03-10 13:18:07,940 - INFO - OPENED LONG at 2088.66 | Stop loss: 2078.201332142857 | Take profit: 2120.012951785714 +2025-03-10 13:18:08,016 - INFO - CLOSED long at 2089.96 | PnL: 0.06% | $-0.06 +2025-03-10 13:18:08,016 - INFO - OPENED SHORT at 2089.96 | Stop loss: 2100.425167857143 | Take profit: 2058.5875482142856 +2025-03-10 13:18:08,201 - INFO - CLOSED short at 2085.67 | PnL: 0.21% | $0.17 +2025-03-10 13:18:08,264 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.520617857143 | Take profit: 2059.661198214286 +2025-03-10 13:18:08,328 - INFO - CLOSED short at 2091.95 | PnL: -0.04% | $-0.24 +2025-03-10 13:18:08,329 - INFO - OPENED LONG at 2091.95 | Stop loss: 2081.474882142857 | Take profit: 2123.352301785714 +2025-03-10 13:18:08,412 - INFO - CLOSED long at 2101.64 | PnL: 0.46% | $0.60 +2025-03-10 13:18:08,412 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.163567857143 | Take profit: 2070.0923482142857 +2025-03-10 13:18:08,430 - INFO - CLOSED short at 2097.11 | PnL: 0.22% | $0.19 +2025-03-10 13:18:08,450 - INFO - OPENED LONG at 2098.49 | Stop loss: 2087.982182142857 | Take profit: 2129.9904017857143 +2025-03-10 13:18:08,493 - INFO - CLOSED long at 2100.89 | PnL: 0.11% | $0.02 +2025-03-10 13:18:08,493 - INFO - OPENED SHORT at 2100.89 | Stop loss: 2111.4098178571426 | Take profit: 2069.3535982142857 +2025-03-10 13:18:08,665 - INFO - CLOSED short at 2103.07 | PnL: -0.10% | $-0.34 +2025-03-10 13:18:08,784 - INFO - OPENED SHORT at 2103.52 | Stop loss: 2114.052967857143 | Take profit: 2071.9441482142856 +2025-03-10 13:18:08,823 - INFO - CLOSED short at 2105.21 | PnL: -0.08% | $-0.30 +2025-03-10 13:18:08,823 - INFO - OPENED LONG at 2105.21 | Stop loss: 2094.6685821428573 | Take profit: 2136.8112017857143 +2025-03-10 13:18:08,834 - INFO - CLOSED long at 2103.9 | PnL: -0.06% | $-0.27 +2025-03-10 13:18:08,834 - INFO - OPENED SHORT at 2103.9 | Stop loss: 2114.4348678571428 | Take profit: 2072.3184482142856 +2025-03-10 13:18:08,855 - INFO - CLOSED short at 2100.0 | PnL: 0.19% | $0.14 +2025-03-10 13:18:08,855 - INFO - OPENED LONG at 2100.0 | Stop loss: 2089.484632142857 | Take profit: 2131.523051785714 +2025-03-10 13:18:08,877 - INFO - CLOSED long at 2102.7 | PnL: 0.13% | $0.05 +2025-03-10 13:18:08,917 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.942417857143 | Take profit: 2071.8357982142857 +2025-03-10 13:18:08,946 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.19, Avg Loss=$-0.26 +2025-03-10 13:18:08,947 - INFO - Episode 3: Reward=-71.47, Balance=$83.51, Win Rate=28.3%, Trades=127, Episode PnL=$-10.79, Total PnL=$-82.68, Max Drawdown=16.5%, Pred Accuracy=98.8% +2025-03-10 13:18:08,947 - ERROR - Error in episode 3: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:18:08,948 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1831, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:18:08,975 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:18:09,305 - INFO - OPENED SHORT at 2047.59 | Stop loss: 2057.8433178571427 | Take profit: 2016.8530982142856 +2025-03-10 13:18:09,485 - INFO - CLOSED short at 2051.89 | PnL: -0.21% | $-0.62 +2025-03-10 13:18:09,591 - INFO - OPENED SHORT at 2056.89 | Stop loss: 2067.1898178571428 | Take profit: 2026.0135982142856 +2025-03-10 13:18:09,638 - INFO - CLOSED short at 2060.13 | PnL: -0.16% | $-0.51 +2025-03-10 13:18:09,639 - INFO - OPENED LONG at 2060.13 | Stop loss: 2049.813982142857 | Take profit: 2091.0550017857145 +2025-03-10 13:18:09,663 - INFO - CLOSED long at 2059.7 | PnL: -0.02% | $-0.24 +2025-03-10 13:18:09,688 - INFO - OPENED LONG at 2061.49 | Stop loss: 2051.1671821428567 | Take profit: 2092.435401785714 +2025-03-10 13:18:09,714 - INFO - CLOSED long at 2063.29 | PnL: 0.09% | $-0.02 +2025-03-10 13:18:09,714 - INFO - OPENED SHORT at 2063.29 | Stop loss: 2073.621817857143 | Take profit: 2032.3175982142857 +2025-03-10 13:18:09,862 - INFO - CLOSED short at 2060.99 | PnL: 0.11% | $0.02 +2025-03-10 13:18:09,890 - INFO - OPENED SHORT at 2058.3 | Stop loss: 2068.6068678571432 | Take profit: 2027.4024482142859 +2025-03-10 13:18:09,915 - INFO - CLOSED short at 2060.0 | PnL: -0.08% | $-0.36 +2025-03-10 13:18:10,071 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.194817857143 | Take profit: 2026.9985982142855 +2025-03-10 13:18:10,126 - INFO - CLOSED short at 2058.11 | PnL: -0.01% | $-0.22 +2025-03-10 13:18:10,127 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.8040821428572 | Take profit: 2089.0047017857146 +2025-03-10 13:18:10,368 - INFO - CLOSED long at 2071.63 | PnL: 0.66% | $1.08 +2025-03-10 13:18:10,369 - INFO - OPENED SHORT at 2071.63 | Stop loss: 2082.003517857143 | Take profit: 2040.5324982142859 +2025-03-10 13:18:10,445 - INFO - CLOSED short at 2069.6 | PnL: 0.10% | $-0.00 +2025-03-10 13:18:10,445 - INFO - OPENED LONG at 2069.6 | Stop loss: 2059.236632142857 | Take profit: 2100.667051785714 +2025-03-10 13:18:10,484 - INFO - CLOSED long at 2068.65 | PnL: -0.05% | $-0.29 +2025-03-10 13:18:10,485 - INFO - OPENED SHORT at 2068.65 | Stop loss: 2079.008617857143 | Take profit: 2037.5971982142858 +2025-03-10 13:18:10,523 - INFO - CLOSED short at 2068.99 | PnL: -0.02% | $-0.23 +2025-03-10 13:18:10,523 - INFO - OPENED LONG at 2068.99 | Stop loss: 2058.629682142857 | Take profit: 2100.047901785714 +2025-03-10 13:18:10,543 - INFO - CLOSED long at 2067.9 | PnL: -0.05% | $-0.30 +2025-03-10 13:18:10,544 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.254867857143 | Take profit: 2036.858448214286 +2025-03-10 13:18:10,643 - INFO - CLOSED short at 2073.73 | PnL: -0.28% | $-0.75 +2025-03-10 13:18:10,687 - INFO - OPENED LONG at 2072.91 | Stop loss: 2062.530082142857 | Take profit: 2104.026701785714 +2025-03-10 13:18:10,770 - INFO - CLOSED long at 2071.41 | PnL: -0.07% | $-0.33 +2025-03-10 13:18:10,773 - INFO - OPENED SHORT at 2071.41 | Stop loss: 2081.7824178571427 | Take profit: 2040.3157982142855 +2025-03-10 13:18:10,812 - INFO - CLOSED short at 2069.37 | PnL: 0.10% | $-0.00 +2025-03-10 13:18:10,812 - INFO - OPENED LONG at 2069.37 | Stop loss: 2059.007782142857 | Take profit: 2100.4336017857145 +2025-03-10 13:18:10,889 - INFO - CLOSED long at 2072.8 | PnL: 0.17% | $0.13 +2025-03-10 13:18:10,921 - INFO - OPENED SHORT at 2070.79 | Stop loss: 2081.1593178571425 | Take profit: 2039.7050982142857 +2025-03-10 13:18:10,944 - INFO - CLOSED short at 2070.28 | PnL: 0.02% | $-0.15 +2025-03-10 13:18:10,944 - INFO - OPENED LONG at 2070.28 | Stop loss: 2059.9132321428574 | Take profit: 2101.3572517857147 +2025-03-10 13:18:10,961 - INFO - CLOSED long at 2068.02 | PnL: -0.11% | $-0.40 +2025-03-10 13:18:10,961 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.3754678571427 | Take profit: 2036.9766482142857 +2025-03-10 13:18:11,215 - INFO - CLOSED short at 2067.51 | PnL: 0.02% | $-0.14 +2025-03-10 13:18:11,249 - INFO - OPENED SHORT at 2069.01 | Stop loss: 2079.370417857143 | Take profit: 2037.951798214286 +2025-03-10 13:18:11,284 - INFO - CLOSED short at 2066.39 | PnL: 0.13% | $0.05 +2025-03-10 13:18:11,285 - INFO - OPENED LONG at 2066.39 | Stop loss: 2056.042682142857 | Take profit: 2097.408901785714 +2025-03-10 13:18:11,315 - INFO - CLOSED long at 2065.99 | PnL: -0.02% | $-0.23 +2025-03-10 13:18:11,336 - INFO - OPENED SHORT at 2066.19 | Stop loss: 2076.536317857143 | Take profit: 2035.1740982142856 +2025-03-10 13:18:11,424 - INFO - CLOSED short at 2068.76 | PnL: -0.12% | $-0.43 +2025-03-10 13:18:11,443 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.540132142857 | Take profit: 2099.9565517857145 +2025-03-10 13:18:11,464 - INFO - CLOSED long at 2068.51 | PnL: -0.02% | $-0.23 +2025-03-10 13:18:11,465 - INFO - OPENED SHORT at 2068.51 | Stop loss: 2078.8679178571433 | Take profit: 2037.4592982142858 +2025-03-10 13:18:11,489 - INFO - CLOSED short at 2068.59 | PnL: -0.00% | $-0.20 +2025-03-10 13:18:11,489 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.231682142857 | Take profit: 2099.6419017857143 +2025-03-10 13:18:11,594 - INFO - CLOSED long at 2071.4 | PnL: 0.14% | $0.07 +2025-03-10 13:18:11,594 - INFO - OPENED SHORT at 2071.4 | Stop loss: 2081.7723678571433 | Take profit: 2040.305948214286 +2025-03-10 13:18:11,719 - INFO - CLOSED short at 2073.11 | PnL: -0.08% | $-0.35 +2025-03-10 13:18:11,719 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.7290821428574 | Take profit: 2104.2297017857145 +2025-03-10 13:18:11,738 - INFO - CLOSED long at 2072.7 | PnL: -0.02% | $-0.23 +2025-03-10 13:18:11,739 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.0788678571425 | Take profit: 2041.5864482142856 +2025-03-10 13:18:11,803 - INFO - CLOSED short at 2073.9 | PnL: -0.06% | $-0.30 +2025-03-10 13:18:11,874 - INFO - OPENED LONG at 2071.11 | Stop loss: 2060.7390821428576 | Take profit: 2102.1997017857143 +2025-03-10 13:18:11,912 - INFO - CLOSED long at 2069.35 | PnL: -0.08% | $-0.35 +2025-03-10 13:18:11,952 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.350367857143 | Take profit: 2035.9719482142857 +2025-03-10 13:18:11,982 - INFO - CLOSED short at 2067.79 | PnL: -0.04% | $-0.26 +2025-03-10 13:18:12,019 - INFO - OPENED LONG at 2067.46 | Stop loss: 2057.107332142857 | Take profit: 2098.4949517857144 +2025-03-10 13:18:12,046 - INFO - CLOSED long at 2066.8 | PnL: -0.03% | $-0.25 +2025-03-10 13:18:12,142 - INFO - OPENED LONG at 2067.89 | Stop loss: 2057.535182142857 | Take profit: 2098.931401785714 +2025-03-10 13:18:12,308 - INFO - CLOSED long at 2070.7 | PnL: 0.14% | $0.07 +2025-03-10 13:18:12,308 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.068867857143 | Take profit: 2039.6164482142856 +2025-03-10 13:18:12,429 - INFO - CLOSED short at 2067.84 | PnL: 0.14% | $0.07 +2025-03-10 13:18:12,429 - INFO - OPENED LONG at 2067.84 | Stop loss: 2057.4854321428575 | Take profit: 2098.8806517857142 +2025-03-10 13:18:12,457 - INFO - CLOSED long at 2067.11 | PnL: -0.04% | $-0.25 +2025-03-10 13:18:12,457 - INFO - OPENED SHORT at 2067.11 | Stop loss: 2077.460917857143 | Take profit: 2036.0802982142857 +2025-03-10 13:18:12,585 - INFO - CLOSED short at 2064.47 | PnL: 0.13% | $0.05 +2025-03-10 13:18:12,585 - INFO - OPENED LONG at 2064.47 | Stop loss: 2054.132282142857 | Take profit: 2095.460101785714 +2025-03-10 13:18:12,654 - INFO - CLOSED long at 2068.18 | PnL: 0.18% | $0.15 +2025-03-10 13:18:12,694 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.525232142857 | Take profit: 2098.9212517857145 +2025-03-10 13:18:12,729 - INFO - CLOSED long at 2065.83 | PnL: -0.10% | $-0.37 +2025-03-10 13:18:12,764 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.601667857143 | Take profit: 2034.258048214286 +2025-03-10 13:18:12,834 - INFO - CLOSED short at 2059.59 | PnL: 0.27% | $0.32 +2025-03-10 13:18:12,856 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.621867857143 | Take profit: 2030.357448214286 +2025-03-10 13:18:12,979 - INFO - CLOSED short at 2064.45 | PnL: -0.15% | $-0.47 +2025-03-10 13:18:12,997 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.744232142857 | Take profit: 2095.064251785714 +2025-03-10 13:18:13,035 - INFO - CLOSED long at 2062.89 | PnL: -0.06% | $-0.29 +2025-03-10 13:18:13,092 - INFO - OPENED SHORT at 2061.6 | Stop loss: 2071.9233678571427 | Take profit: 2030.6529482142857 +2025-03-10 13:18:13,156 - INFO - CLOSED short at 2059.3 | PnL: 0.11% | $0.02 +2025-03-10 13:18:13,265 - INFO - OPENED LONG at 2060.3 | Stop loss: 2049.9831321428574 | Take profit: 2091.2275517857147 +2025-03-10 13:18:13,286 - INFO - CLOSED long at 2061.13 | PnL: 0.04% | $-0.11 +2025-03-10 13:18:13,286 - INFO - OPENED SHORT at 2061.13 | Stop loss: 2071.451017857143 | Take profit: 2030.1899982142859 +2025-03-10 13:18:13,305 - INFO - CLOSED short at 2061.9 | PnL: -0.04% | $-0.25 +2025-03-10 13:18:13,306 - INFO - OPENED LONG at 2061.9 | Stop loss: 2051.5751321428575 | Take profit: 2092.851551785714 +2025-03-10 13:18:13,366 - INFO - CLOSED long at 2064.33 | PnL: 0.12% | $0.03 +2025-03-10 13:18:13,408 - INFO - OPENED SHORT at 2064.79 | Stop loss: 2075.1293178571427 | Take profit: 2033.7950982142856 +2025-03-10 13:18:13,497 - INFO - CLOSED short at 2061.89 | PnL: 0.14% | $0.07 +2025-03-10 13:18:13,549 - INFO - OPENED LONG at 2061.09 | Stop loss: 2050.7691821428575 | Take profit: 2092.0294017857145 +2025-03-10 13:18:13,572 - INFO - CLOSED long at 2059.61 | PnL: -0.07% | $-0.32 +2025-03-10 13:18:13,573 - INFO - OPENED SHORT at 2059.61 | Stop loss: 2069.923417857143 | Take profit: 2028.6927982142859 +2025-03-10 13:18:13,697 - INFO - CLOSED short at 2058.28 | PnL: 0.06% | $-0.07 +2025-03-10 13:18:13,720 - INFO - OPENED LONG at 2056.28 | Stop loss: 2045.9832321428573 | Take profit: 2087.1472517857146 +2025-03-10 13:18:13,900 - INFO - CLOSED long at 2061.3 | PnL: 0.24% | $0.27 +2025-03-10 13:18:13,908 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.621867857143 | Take profit: 2030.357448214286 +2025-03-10 13:18:13,987 - INFO - CLOSED short at 2066.01 | PnL: -0.23% | $-0.61 +2025-03-10 13:18:14,005 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.5651321428572 | Take profit: 2094.8815517857142 +2025-03-10 13:18:14,044 - INFO - CLOSED long at 2066.33 | PnL: 0.12% | $0.03 +2025-03-10 13:18:14,045 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6770178571423 | Take profit: 2035.3119982142855 +2025-03-10 13:18:14,133 - INFO - CLOSED short at 2065.69 | PnL: 0.03% | $-0.13 +2025-03-10 13:18:14,150 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.425682142857 | Take profit: 2100.859901785714 +2025-03-10 13:18:14,184 - INFO - CLOSED long at 2074.3 | PnL: 0.22% | $0.22 +2025-03-10 13:18:14,224 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.4004178571427 | Take profit: 2043.861798214286 +2025-03-10 13:18:14,300 - INFO - CLOSED short at 2071.6 | PnL: 0.16% | $0.12 +2025-03-10 13:18:14,300 - INFO - OPENED LONG at 2071.6 | Stop loss: 2061.226632142857 | Take profit: 2102.697051785714 +2025-03-10 13:18:14,378 - INFO - CLOSED long at 2068.39 | PnL: -0.15% | $-0.47 +2025-03-10 13:18:14,436 - INFO - OPENED SHORT at 2067.44 | Stop loss: 2077.792567857143 | Take profit: 2036.4053482142858 +2025-03-10 13:18:14,608 - INFO - CLOSED short at 2063.95 | PnL: 0.17% | $0.13 +2025-03-10 13:18:14,626 - INFO - OPENED SHORT at 2063.97 | Stop loss: 2074.305217857143 | Take profit: 2032.9873982142856 +2025-03-10 13:18:14,666 - INFO - CLOSED short at 2065.3 | PnL: -0.06% | $-0.30 +2025-03-10 13:18:14,710 - INFO - OPENED LONG at 2064.31 | Stop loss: 2053.973082142857 | Take profit: 2095.2977017857143 +2025-03-10 13:18:14,877 - INFO - CLOSED long at 2071.59 | PnL: 0.35% | $0.46 +2025-03-10 13:18:14,878 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.963317857143 | Take profit: 2040.493098214286 +2025-03-10 13:18:14,924 - INFO - CLOSED short at 2071.35 | PnL: 0.01% | $-0.16 +2025-03-10 13:18:14,968 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.0538178571433 | Take profit: 2038.6215982142858 +2025-03-10 13:18:15,036 - INFO - CLOSED short at 2070.35 | PnL: -0.03% | $-0.24 +2025-03-10 13:18:15,036 - INFO - OPENED LONG at 2070.35 | Stop loss: 2059.9828821428573 | Take profit: 2101.428301785714 +2025-03-10 13:18:15,230 - INFO - CLOSED long at 2074.37 | PnL: 0.19% | $0.17 +2025-03-10 13:18:15,343 - INFO - OPENED LONG at 2075.32 | Stop loss: 2064.9280321428573 | Take profit: 2106.4728517857143 +2025-03-10 13:18:15,361 - INFO - CLOSED long at 2075.29 | PnL: -0.00% | $-0.19 +2025-03-10 13:18:15,362 - INFO - OPENED SHORT at 2075.29 | Stop loss: 2085.6818178571425 | Take profit: 2044.1375982142856 +2025-03-10 13:18:15,381 - INFO - CLOSED short at 2076.9 | PnL: -0.08% | $-0.32 +2025-03-10 13:18:15,399 - INFO - OPENED LONG at 2075.61 | Stop loss: 2065.216582142857 | Take profit: 2106.7672017857144 +2025-03-10 13:18:15,539 - INFO - CLOSED long at 2066.4 | PnL: -0.44% | $-0.99 +2025-03-10 13:18:15,540 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.7473678571428 | Take profit: 2035.3809482142858 +2025-03-10 13:18:15,617 - INFO - CLOSED short at 2068.1 | PnL: -0.08% | $-0.33 +2025-03-10 13:18:15,676 - INFO - OPENED LONG at 2070.1 | Stop loss: 2059.734132142857 | Take profit: 2101.1745517857144 +2025-03-10 13:18:15,739 - INFO - CLOSED long at 2065.7 | PnL: -0.21% | $-0.56 +2025-03-10 13:18:15,758 - INFO - OPENED SHORT at 2065.8 | Stop loss: 2076.144367857143 | Take profit: 2034.789948214286 +2025-03-10 13:18:15,892 - INFO - CLOSED short at 2065.06 | PnL: 0.04% | $-0.11 +2025-03-10 13:18:15,892 - INFO - OPENED LONG at 2065.06 | Stop loss: 2054.719332142857 | Take profit: 2096.0589517857143 +2025-03-10 13:18:15,948 - INFO - CLOSED long at 2066.33 | PnL: 0.06% | $-0.07 +2025-03-10 13:18:16,004 - INFO - OPENED LONG at 2060.2 | Stop loss: 2049.883632142857 | Take profit: 2091.126051785714 +2025-03-10 13:18:16,095 - INFO - CLOSED long at 2056.77 | PnL: -0.17% | $-0.47 +2025-03-10 13:18:16,096 - INFO - OPENED SHORT at 2056.77 | Stop loss: 2067.0692178571426 | Take profit: 2025.8953982142857 +2025-03-10 13:18:16,121 - INFO - CLOSED short at 2053.01 | PnL: 0.18% | $0.15 +2025-03-10 13:18:16,184 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.2371321428573 | Take profit: 2080.2655517857143 +2025-03-10 13:18:16,323 - INFO - CLOSED long at 2057.89 | PnL: 0.41% | $0.55 +2025-03-10 13:18:16,339 - INFO - OPENED LONG at 2062.83 | Stop loss: 2052.500482142857 | Take profit: 2093.7955017857144 +2025-03-10 13:18:16,355 - INFO - CLOSED long at 2063.9 | PnL: 0.05% | $-0.09 +2025-03-10 13:18:16,355 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.234867857143 | Take profit: 2032.9184482142857 +2025-03-10 13:18:16,515 - INFO - CLOSED short at 2064.08 | PnL: -0.01% | $-0.19 +2025-03-10 13:18:16,542 - INFO - OPENED SHORT at 2061.21 | Stop loss: 2071.5314178571425 | Take profit: 2030.2687982142857 +2025-03-10 13:18:16,569 - INFO - CLOSED short at 2059.9 | PnL: 0.06% | $-0.06 +2025-03-10 13:18:16,870 - INFO - OPENED SHORT at 2071.89 | Stop loss: 2082.264817857143 | Take profit: 2040.7885982142855 +2025-03-10 13:18:16,925 - INFO - CLOSED short at 2076.08 | PnL: -0.20% | $-0.54 +2025-03-10 13:18:17,053 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.9578178571423 | Take profit: 2059.1095982142856 +2025-03-10 13:18:17,088 - INFO - STOP LOSS hit for short at 2100.9578178571423 | PnL: -0.50% | $-1.06 +2025-03-10 13:18:17,137 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.826932142857 | Take profit: 2171.6561517857144 +2025-03-10 13:18:17,160 - INFO - CLOSED long at 2131.78 | PnL: -0.36% | $-0.81 +2025-03-10 13:18:17,353 - INFO - OPENED LONG at 2126.99 | Stop loss: 2116.339682142857 | Take profit: 2158.917901785714 +2025-03-10 13:18:17,484 - INFO - CLOSED long at 2121.09 | PnL: -0.28% | $-0.65 +2025-03-10 13:18:17,485 - INFO - OPENED SHORT at 2121.09 | Stop loss: 2131.710817857143 | Take profit: 2089.2505982142857 +2025-03-10 13:18:17,588 - INFO - CLOSED short at 2121.4 | PnL: -0.01% | $-0.20 +2025-03-10 13:18:17,644 - INFO - OPENED LONG at 2119.14 | Stop loss: 2108.528932142857 | Take profit: 2150.9501517857143 +2025-03-10 13:18:17,710 - INFO - STOP LOSS hit for long at 2108.528932142857 | PnL: -0.50% | $-1.03 +2025-03-10 13:18:17,735 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.0316321428572 | Take profit: 2142.282051785714 +2025-03-10 13:18:17,769 - INFO - CLOSED long at 2109.05 | PnL: -0.07% | $-0.29 +2025-03-10 13:18:18,022 - INFO - OPENED SHORT at 2110.9 | Stop loss: 2121.469867857143 | Take profit: 2079.2134482142856 +2025-03-10 13:18:18,042 - INFO - CLOSED short at 2108.71 | PnL: 0.10% | $0.01 +2025-03-10 13:18:18,065 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.942182142857 | Take profit: 2138.1104017857137 +2025-03-10 13:18:18,166 - INFO - STOP LOSS hit for long at 2095.942182142857 | PnL: -0.50% | $-1.01 +2025-03-10 13:18:18,241 - INFO - OPENED SHORT at 2098.1 | Stop loss: 2108.6058678571426 | Take profit: 2066.605448214286 +2025-03-10 13:18:18,285 - INFO - CLOSED short at 2102.19 | PnL: -0.19% | $-0.49 +2025-03-10 13:18:18,286 - INFO - OPENED LONG at 2102.19 | Stop loss: 2091.6636821428574 | Take profit: 2133.7459017857145 +2025-03-10 13:18:18,374 - INFO - CLOSED long at 2098.9 | PnL: -0.16% | $-0.42 +2025-03-10 13:18:18,374 - INFO - OPENED SHORT at 2098.9 | Stop loss: 2109.409867857143 | Take profit: 2067.393448214286 +2025-03-10 13:18:18,398 - INFO - CLOSED short at 2100.69 | PnL: -0.09% | $-0.31 +2025-03-10 13:18:18,398 - INFO - OPENED LONG at 2100.69 | Stop loss: 2090.171182142857 | Take profit: 2132.2234017857145 +2025-03-10 13:18:18,518 - INFO - CLOSED long at 2104.68 | PnL: 0.19% | $0.15 +2025-03-10 13:18:18,814 - INFO - OPENED SHORT at 2094.72 | Stop loss: 2105.2089678571424 | Take profit: 2063.2761482142855 +2025-03-10 13:18:18,904 - INFO - CLOSED short at 2088.44 | PnL: 0.30% | $0.33 +2025-03-10 13:18:18,904 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.9824321428573 | Take profit: 2119.7896517857143 +2025-03-10 13:18:18,925 - INFO - CLOSED long at 2083.97 | PnL: -0.21% | $-0.52 +2025-03-10 13:18:18,948 - INFO - OPENED SHORT at 2085.3 | Stop loss: 2095.741867857143 | Take profit: 2053.9974482142857 +2025-03-10 13:18:19,009 - INFO - CLOSED short at 2080.38 | PnL: 0.24% | $0.22 +2025-03-10 13:18:19,010 - INFO - OPENED LONG at 2080.38 | Stop loss: 2069.962732142857 | Take profit: 2111.6087517857145 +2025-03-10 13:18:19,073 - INFO - CLOSED long at 2085.09 | PnL: 0.23% | $0.21 +2025-03-10 13:18:19,168 - INFO - OPENED LONG at 2084.72 | Stop loss: 2074.281032142857 | Take profit: 2116.013851785714 +2025-03-10 13:18:19,260 - INFO - CLOSED long at 2088.32 | PnL: 0.17% | $0.12 +2025-03-10 13:18:19,278 - INFO - OPENED LONG at 2088.1 | Stop loss: 2077.644132142857 | Take profit: 2119.4445517857143 +2025-03-10 13:18:19,380 - INFO - CLOSED long at 2086.81 | PnL: -0.06% | $-0.27 +2025-03-10 13:18:19,492 - INFO - OPENED SHORT at 2091.95 | Stop loss: 2102.4251178571426 | Take profit: 2060.5476982142854 +2025-03-10 13:18:19,526 - INFO - CLOSED short at 2097.8 | PnL: -0.28% | $-0.62 +2025-03-10 13:18:19,526 - INFO - OPENED LONG at 2097.8 | Stop loss: 2087.2956321428574 | Take profit: 2129.2900517857142 +2025-03-10 13:18:19,604 - INFO - CLOSED long at 2098.49 | PnL: 0.03% | $-0.11 +2025-03-10 13:18:19,604 - INFO - OPENED SHORT at 2098.49 | Stop loss: 2108.9978178571428 | Take profit: 2066.9895982142857 +2025-03-10 13:18:19,624 - INFO - CLOSED short at 2099.89 | PnL: -0.07% | $-0.27 +2025-03-10 13:18:19,751 - INFO - OPENED LONG at 2103.07 | Stop loss: 2092.5392821428572 | Take profit: 2134.6391017857145 +2025-03-10 13:18:19,770 - INFO - CLOSED long at 2101.5 | PnL: -0.07% | $-0.28 +2025-03-10 13:18:19,801 - INFO - OPENED SHORT at 2103.64 | Stop loss: 2114.1735678571426 | Take profit: 2072.0623482142855 +2025-03-10 13:18:19,900 - INFO - CLOSED short at 2103.9 | PnL: -0.01% | $-0.18 +2025-03-10 13:18:19,900 - INFO - OPENED LONG at 2103.9 | Stop loss: 2093.365132142857 | Take profit: 2135.4815517857146 +2025-03-10 13:18:19,936 - INFO - CLOSED long at 2102.7 | PnL: -0.06% | $-0.25 +2025-03-10 13:18:19,954 - INFO - OPENED LONG at 2102.0 | Stop loss: 2091.474632142857 | Take profit: 2133.5530517857146 +2025-03-10 13:18:19,992 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.19, Avg Loss=$-0.34 +2025-03-10 13:18:19,992 - INFO - Episode 4: Reward=-55.80, Balance=$81.15, Win Rate=28.6%, Trades=98, Episode PnL=$-15.42, Total PnL=$-101.53, Max Drawdown=18.8%, Pred Accuracy=99.6% +2025-03-10 13:18:19,993 - ERROR - Error in episode 4: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:18:19,993 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1831, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:18:20,013 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:18:20,213 - INFO - OPENED LONG at 2048.13 | Stop loss: 2037.8739821428571 | Take profit: 2078.8750017857146 +2025-03-10 13:18:20,233 - INFO - CLOSED long at 2047.59 | PnL: -0.03% | $-0.25 +2025-03-10 13:18:20,233 - INFO - OPENED SHORT at 2047.59 | Stop loss: 2057.8433178571427 | Take profit: 2016.8530982142856 +2025-03-10 13:18:20,254 - INFO - CLOSED short at 2048.51 | PnL: -0.04% | $-0.29 +2025-03-10 13:18:20,295 - INFO - OPENED SHORT at 2050.24 | Stop loss: 2060.5065678571427 | Take profit: 2019.4633482142856 +2025-03-10 13:18:20,313 - INFO - CLOSED short at 2049.89 | PnL: 0.02% | $-0.16 +2025-03-10 13:18:20,361 - INFO - OPENED LONG at 2053.26 | Stop loss: 2042.9783321428572 | Take profit: 2084.0819517857144 +2025-03-10 13:18:20,381 - INFO - CLOSED long at 2051.89 | PnL: -0.07% | $-0.33 +2025-03-10 13:18:20,382 - INFO - OPENED SHORT at 2051.89 | Stop loss: 2062.1648178571427 | Take profit: 2021.0885982142856 +2025-03-10 13:18:20,425 - INFO - CLOSED short at 2055.69 | PnL: -0.19% | $-0.56 +2025-03-10 13:18:20,426 - INFO - OPENED LONG at 2055.69 | Stop loss: 2045.396182142857 | Take profit: 2086.5484017857143 +2025-03-10 13:18:20,501 - INFO - CLOSED long at 2060.13 | PnL: 0.22% | $0.23 +2025-03-10 13:18:20,501 - INFO - OPENED SHORT at 2060.13 | Stop loss: 2070.4460178571426 | Take profit: 2029.2049982142858 +2025-03-10 13:18:20,541 - INFO - CLOSED short at 2061.49 | PnL: -0.07% | $-0.33 +2025-03-10 13:18:20,541 - INFO - OPENED LONG at 2061.49 | Stop loss: 2051.1671821428567 | Take profit: 2092.435401785714 +2025-03-10 13:18:20,721 - INFO - CLOSED long at 2061.89 | PnL: 0.02% | $-0.16 +2025-03-10 13:18:20,721 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.214817857143 | Take profit: 2030.9385982142855 +2025-03-10 13:18:20,752 - INFO - CLOSED short at 2060.31 | PnL: 0.08% | $-0.05 +2025-03-10 13:18:20,752 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.993082142857 | Take profit: 2091.2377017857143 +2025-03-10 13:18:20,794 - INFO - CLOSED long at 2057.8 | PnL: -0.12% | $-0.43 +2025-03-10 13:18:20,794 - INFO - OPENED SHORT at 2057.8 | Stop loss: 2068.104367857143 | Take profit: 2026.909948214286 +2025-03-10 13:18:20,829 - INFO - CLOSED short at 2057.94 | PnL: -0.01% | $-0.21 +2025-03-10 13:18:20,920 - INFO - OPENED LONG at 2065.86 | Stop loss: 2055.515332142857 | Take profit: 2096.870951785714 +2025-03-10 13:18:20,955 - INFO - CLOSED long at 2068.11 | PnL: 0.11% | $0.02 +2025-03-10 13:18:20,977 - INFO - OPENED SHORT at 2068.29 | Stop loss: 2078.6468178571427 | Take profit: 2037.2425982142856 +2025-03-10 13:18:21,015 - INFO - CLOSED short at 2071.63 | PnL: -0.16% | $-0.51 +2025-03-10 13:18:21,035 - INFO - OPENED LONG at 2070.99 | Stop loss: 2060.619682142857 | Take profit: 2102.077901785714 +2025-03-10 13:18:21,096 - INFO - CLOSED long at 2068.99 | PnL: -0.10% | $-0.38 +2025-03-10 13:18:21,115 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.5451321428573 | Take profit: 2098.9415517857146 +2025-03-10 13:18:21,151 - INFO - CLOSED long at 2070.26 | PnL: 0.11% | $0.03 +2025-03-10 13:18:21,153 - INFO - OPENED SHORT at 2070.26 | Stop loss: 2080.6266678571433 | Take profit: 2039.183048214286 +2025-03-10 13:18:21,210 - INFO - CLOSED short at 2075.1 | PnL: -0.23% | $-0.64 +2025-03-10 13:18:21,245 - INFO - OPENED LONG at 2072.33 | Stop loss: 2061.952982142857 | Take profit: 2103.4380017857143 +2025-03-10 13:18:21,268 - INFO - CLOSED long at 2071.38 | PnL: -0.05% | $-0.28 +2025-03-10 13:18:21,480 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.331132142857 | Take profit: 2101.7835517857143 +2025-03-10 13:18:21,543 - INFO - CLOSED long at 2068.8 | PnL: -0.09% | $-0.36 +2025-03-10 13:18:21,543 - INFO - OPENED SHORT at 2068.8 | Stop loss: 2079.159367857143 | Take profit: 2037.7449482142858 +2025-03-10 13:18:21,560 - INFO - CLOSED short at 2067.6 | PnL: 0.06% | $-0.08 +2025-03-10 13:18:21,560 - INFO - OPENED LONG at 2067.6 | Stop loss: 2057.246632142857 | Take profit: 2098.6370517857144 +2025-03-10 13:18:21,604 - INFO - CLOSED long at 2069.01 | PnL: 0.07% | $-0.06 +2025-03-10 13:18:21,604 - INFO - OPENED SHORT at 2069.01 | Stop loss: 2079.370417857143 | Take profit: 2037.951798214286 +2025-03-10 13:18:21,645 - INFO - CLOSED short at 2065.99 | PnL: 0.15% | $0.09 +2025-03-10 13:18:21,645 - INFO - OPENED LONG at 2065.99 | Stop loss: 2055.644682142857 | Take profit: 2097.002901785714 +2025-03-10 13:18:21,868 - INFO - CLOSED long at 2071.4 | PnL: 0.26% | $0.31 +2025-03-10 13:18:21,868 - INFO - OPENED SHORT at 2071.4 | Stop loss: 2081.7723678571433 | Take profit: 2040.305948214286 +2025-03-10 13:18:21,990 - INFO - CLOSED short at 2074.29 | PnL: -0.14% | $-0.45 +2025-03-10 13:18:21,999 - INFO - OPENED LONG at 2074.29 | Stop loss: 2063.903182142857 | Take profit: 2105.427401785714 +2025-03-10 13:18:22,035 - INFO - CLOSED long at 2071.92 | PnL: -0.11% | $-0.40 +2025-03-10 13:18:22,234 - INFO - OPENED LONG at 2067.79 | Stop loss: 2057.435682142857 | Take profit: 2098.8299017857144 +2025-03-10 13:18:22,263 - INFO - CLOSED long at 2067.46 | PnL: -0.02% | $-0.22 +2025-03-10 13:18:22,326 - INFO - OPENED SHORT at 2065.49 | Stop loss: 2075.832817857143 | Take profit: 2034.4845982142854 +2025-03-10 13:18:22,390 - INFO - CLOSED short at 2067.89 | PnL: -0.12% | $-0.41 +2025-03-10 13:18:22,450 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.9779321428573 | Take profit: 2100.4031517857143 +2025-03-10 13:18:22,709 - INFO - CLOSED long at 2068.69 | PnL: -0.03% | $-0.25 +2025-03-10 13:18:22,709 - INFO - OPENED SHORT at 2068.69 | Stop loss: 2079.0488178571427 | Take profit: 2037.6365982142859 +2025-03-10 13:18:22,793 - INFO - CLOSED short at 2066.4 | PnL: 0.11% | $0.02 +2025-03-10 13:18:22,793 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.0526321428574 | Take profit: 2097.4190517857146 +2025-03-10 13:18:22,828 - INFO - CLOSED long at 2065.28 | PnL: -0.05% | $-0.29 +2025-03-10 13:18:22,829 - INFO - OPENED SHORT at 2065.28 | Stop loss: 2075.6217678571434 | Take profit: 2034.277748214286 +2025-03-10 13:18:22,890 - INFO - CLOSED short at 2070.04 | PnL: -0.23% | $-0.61 +2025-03-10 13:18:22,891 - INFO - OPENED LONG at 2070.04 | Stop loss: 2059.6744321428573 | Take profit: 2101.1136517857144 +2025-03-10 13:18:22,909 - INFO - CLOSED long at 2067.8 | PnL: -0.11% | $-0.38 +2025-03-10 13:18:22,988 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.525232142857 | Take profit: 2098.9212517857145 +2025-03-10 13:18:23,130 - INFO - CLOSED long at 2062.89 | PnL: -0.24% | $-0.63 +2025-03-10 13:18:23,130 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.2198178571425 | Take profit: 2031.9235982142857 +2025-03-10 13:18:23,208 - INFO - CLOSED short at 2061.3 | PnL: 0.08% | $-0.04 +2025-03-10 13:18:23,353 - INFO - OPENED LONG at 2064.45 | Stop loss: 2054.112382142857 | Take profit: 2095.439801785714 +2025-03-10 13:18:23,612 - INFO - CLOSED long at 2060.31 | PnL: -0.20% | $-0.55 +2025-03-10 13:18:23,612 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.626917857143 | Take profit: 2029.3822982142856 +2025-03-10 13:18:23,711 - INFO - CLOSED short at 2060.3 | PnL: 0.00% | $-0.18 +2025-03-10 13:18:23,712 - INFO - OPENED LONG at 2060.3 | Stop loss: 2049.9831321428574 | Take profit: 2091.2275517857147 +2025-03-10 13:18:23,862 - INFO - CLOSED long at 2064.1 | PnL: 0.18% | $0.15 +2025-03-10 13:18:23,863 - INFO - OPENED SHORT at 2064.1 | Stop loss: 2074.4358678571425 | Take profit: 2033.1154482142856 +2025-03-10 13:18:23,948 - INFO - CLOSED short at 2063.39 | PnL: 0.03% | $-0.12 +2025-03-10 13:18:24,022 - INFO - OPENED LONG at 2063.0 | Stop loss: 2052.669632142857 | Take profit: 2093.968051785714 +2025-03-10 13:18:24,230 - INFO - CLOSED long at 2059.02 | PnL: -0.19% | $-0.53 +2025-03-10 13:18:24,231 - INFO - OPENED SHORT at 2059.02 | Stop loss: 2069.330467857143 | Take profit: 2028.1116482142857 +2025-03-10 13:18:24,338 - INFO - CLOSED short at 2059.46 | PnL: -0.02% | $-0.22 +2025-03-10 13:18:24,338 - INFO - OPENED LONG at 2059.46 | Stop loss: 2049.147332142857 | Take profit: 2090.3749517857145 +2025-03-10 13:18:24,377 - INFO - CLOSED long at 2058.28 | PnL: -0.06% | $-0.28 +2025-03-10 13:18:24,397 - INFO - OPENED SHORT at 2056.28 | Stop loss: 2066.576767857143 | Take profit: 2025.4127482142858 +2025-03-10 13:18:24,519 - INFO - CLOSED short at 2059.8 | PnL: -0.17% | $-0.49 +2025-03-10 13:18:24,648 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.621867857143 | Take profit: 2030.357448214286 +2025-03-10 13:18:24,677 - INFO - CLOSED short at 2062.69 | PnL: -0.07% | $-0.30 +2025-03-10 13:18:24,747 - INFO - OPENED LONG at 2066.01 | Stop loss: 2055.6645821428574 | Take profit: 2097.0232017857147 +2025-03-10 13:18:24,786 - INFO - CLOSED long at 2064.49 | PnL: -0.07% | $-0.31 +2025-03-10 13:18:24,805 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6770178571423 | Take profit: 2035.3119982142855 +2025-03-10 13:18:24,967 - INFO - CLOSED short at 2072.0 | PnL: -0.27% | $-0.66 +2025-03-10 13:18:24,968 - INFO - OPENED LONG at 2072.0 | Stop loss: 2061.624632142857 | Take profit: 2103.1030517857143 +2025-03-10 13:18:25,099 - INFO - CLOSED long at 2072.6 | PnL: 0.03% | $-0.12 +2025-03-10 13:18:25,099 - INFO - OPENED SHORT at 2072.6 | Stop loss: 2082.9783678571425 | Take profit: 2041.4879482142858 +2025-03-10 13:18:25,127 - INFO - CLOSED short at 2071.04 | PnL: 0.08% | $-0.04 +2025-03-10 13:18:25,127 - INFO - OPENED LONG at 2071.04 | Stop loss: 2060.669432142857 | Take profit: 2102.1286517857143 +2025-03-10 13:18:25,256 - INFO - CLOSED long at 2068.39 | PnL: -0.13% | $-0.40 +2025-03-10 13:18:25,286 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.3261821428573 | Take profit: 2100.7584017857143 +2025-03-10 13:18:25,321 - INFO - CLOSED long at 2069.03 | PnL: -0.03% | $-0.23 +2025-03-10 13:18:25,368 - INFO - OPENED LONG at 2067.44 | Stop loss: 2057.0874321428573 | Take profit: 2098.4746517857143 +2025-03-10 13:18:25,558 - INFO - CLOSED long at 2069.87 | PnL: 0.12% | $0.03 +2025-03-10 13:18:25,558 - INFO - OPENED SHORT at 2069.87 | Stop loss: 2080.234717857143 | Take profit: 2038.7988982142856 +2025-03-10 13:18:25,657 - INFO - CLOSED short at 2065.7 | PnL: 0.20% | $0.18 +2025-03-10 13:18:25,658 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.356132142857 | Take profit: 2096.708551785714 +2025-03-10 13:18:25,708 - INFO - CLOSED long at 2063.95 | PnL: -0.08% | $-0.32 +2025-03-10 13:18:25,708 - INFO - OPENED SHORT at 2063.95 | Stop loss: 2074.2851178571427 | Take profit: 2032.9676982142855 +2025-03-10 13:18:25,744 - INFO - CLOSED short at 2063.97 | PnL: -0.00% | $-0.18 +2025-03-10 13:18:25,744 - INFO - OPENED LONG at 2063.97 | Stop loss: 2053.6347821428567 | Take profit: 2094.9526017857143 +2025-03-10 13:18:25,781 - INFO - CLOSED long at 2064.5 | PnL: 0.03% | $-0.13 +2025-03-10 13:18:25,781 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.8378678571426 | Take profit: 2033.5094482142858 +2025-03-10 13:18:25,828 - INFO - CLOSED short at 2065.3 | PnL: -0.04% | $-0.24 +2025-03-10 13:18:25,828 - INFO - OPENED LONG at 2065.3 | Stop loss: 2054.9581321428573 | Take profit: 2096.3025517857145 +2025-03-10 13:18:25,931 - INFO - CLOSED long at 2064.31 | PnL: -0.05% | $-0.26 +2025-03-10 13:18:25,998 - INFO - OPENED LONG at 2065.29 | Stop loss: 2054.948182142857 | Take profit: 2096.2924017857144 +2025-03-10 13:18:26,085 - INFO - CLOSED long at 2068.59 | PnL: 0.16% | $0.10 +2025-03-10 13:18:26,085 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.948317857143 | Take profit: 2037.5380982142858 +2025-03-10 13:18:26,159 - INFO - CLOSED short at 2071.35 | PnL: -0.13% | $-0.40 +2025-03-10 13:18:26,235 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.331132142857 | Take profit: 2101.7835517857143 +2025-03-10 13:18:26,345 - INFO - CLOSED long at 2071.99 | PnL: 0.06% | $-0.06 +2025-03-10 13:18:26,346 - INFO - OPENED SHORT at 2071.99 | Stop loss: 2082.3653178571426 | Take profit: 2040.8870982142855 +2025-03-10 13:18:26,369 - INFO - CLOSED short at 2068.19 | PnL: 0.18% | $0.14 +2025-03-10 13:18:26,369 - INFO - OPENED LONG at 2068.19 | Stop loss: 2057.8336821428575 | Take profit: 2099.2359017857148 +2025-03-10 13:18:26,413 - INFO - CLOSED long at 2070.67 | PnL: 0.12% | $0.03 +2025-03-10 13:18:26,413 - INFO - OPENED SHORT at 2070.67 | Stop loss: 2081.0387178571427 | Take profit: 2039.5868982142858 +2025-03-10 13:18:26,498 - INFO - CLOSED short at 2075.07 | PnL: -0.21% | $-0.54 +2025-03-10 13:18:26,500 - INFO - OPENED LONG at 2075.07 | Stop loss: 2064.679282142857 | Take profit: 2106.2191017857144 +2025-03-10 13:18:26,519 - INFO - CLOSED long at 2074.35 | PnL: -0.03% | $-0.23 +2025-03-10 13:18:26,519 - INFO - OPENED SHORT at 2074.35 | Stop loss: 2084.7371178571425 | Take profit: 2043.2116982142857 +2025-03-10 13:18:26,604 - INFO - CLOSED short at 2075.32 | PnL: -0.05% | $-0.25 +2025-03-10 13:18:26,730 - INFO - OPENED SHORT at 2074.0 | Stop loss: 2084.3853678571427 | Take profit: 2042.8669482142857 +2025-03-10 13:18:26,771 - INFO - CLOSED short at 2069.97 | PnL: 0.19% | $0.16 +2025-03-10 13:18:26,771 - INFO - OPENED LONG at 2069.97 | Stop loss: 2059.604782142857 | Take profit: 2101.042601785714 +2025-03-10 13:18:26,789 - INFO - CLOSED long at 2067.7 | PnL: -0.11% | $-0.36 +2025-03-10 13:18:26,790 - INFO - OPENED SHORT at 2067.7 | Stop loss: 2078.0538678571424 | Take profit: 2036.6614482142857 +2025-03-10 13:18:26,850 - INFO - CLOSED short at 2066.4 | PnL: 0.06% | $-0.06 +2025-03-10 13:18:26,851 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.0526321428574 | Take profit: 2097.4190517857146 +2025-03-10 13:18:26,930 - INFO - CLOSED long at 2068.1 | PnL: 0.08% | $-0.03 +2025-03-10 13:18:26,980 - INFO - OPENED SHORT at 2070.19 | Stop loss: 2080.556317857143 | Take profit: 2039.1140982142858 +2025-03-10 13:18:27,104 - INFO - CLOSED short at 2065.7 | PnL: 0.22% | $0.20 +2025-03-10 13:18:27,112 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.356132142857 | Take profit: 2096.708551785714 +2025-03-10 13:18:27,168 - INFO - CLOSED long at 2066.09 | PnL: 0.02% | $-0.14 +2025-03-10 13:18:27,208 - INFO - OPENED LONG at 2062.34 | Stop loss: 2052.012932142857 | Take profit: 2093.2981517857143 +2025-03-10 13:18:27,246 - INFO - CLOSED long at 2066.1 | PnL: 0.18% | $0.14 +2025-03-10 13:18:27,246 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.4458678571427 | Take profit: 2035.0854482142856 +2025-03-10 13:18:27,283 - INFO - CLOSED short at 2064.11 | PnL: 0.10% | $-0.01 +2025-03-10 13:18:27,350 - INFO - OPENED LONG at 2063.01 | Stop loss: 2052.6795821428573 | Take profit: 2093.9782017857146 +2025-03-10 13:18:27,404 - INFO - CLOSED long at 2060.2 | PnL: -0.14% | $-0.40 +2025-03-10 13:18:27,404 - INFO - OPENED SHORT at 2060.2 | Stop loss: 2070.5163678571425 | Take profit: 2029.2739482142856 +2025-03-10 13:18:27,436 - INFO - CLOSED short at 2059.2 | PnL: 0.05% | $-0.09 +2025-03-10 13:18:27,591 - INFO - OPENED SHORT at 2049.5 | Stop loss: 2059.762867857143 | Take profit: 2018.7344482142857 +2025-03-10 13:18:27,638 - INFO - CLOSED short at 2058.3 | PnL: -0.43% | $-0.89 +2025-03-10 13:18:27,639 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9931321428573 | Take profit: 2089.197551785714 +2025-03-10 13:18:27,659 - INFO - CLOSED long at 2056.85 | PnL: -0.07% | $-0.28 +2025-03-10 13:18:27,659 - INFO - OPENED SHORT at 2056.85 | Stop loss: 2067.149617857143 | Take profit: 2025.9741982142855 +2025-03-10 13:18:27,728 - INFO - CLOSED short at 2062.83 | PnL: -0.29% | $-0.65 +2025-03-10 13:18:27,815 - INFO - OPENED SHORT at 2065.1 | Stop loss: 2075.4408678571426 | Take profit: 2034.1004482142857 +2025-03-10 13:18:27,946 - INFO - CLOSED short at 2065.12 | PnL: -0.00% | $-0.17 +2025-03-10 13:18:27,946 - INFO - OPENED LONG at 2065.12 | Stop loss: 2054.779032142857 | Take profit: 2096.119851785714 +2025-03-10 13:18:27,972 - INFO - CLOSED long at 2068.33 | PnL: 0.16% | $0.09 +2025-03-10 13:18:27,973 - INFO - OPENED SHORT at 2068.33 | Stop loss: 2078.6870178571426 | Take profit: 2037.2819982142855 +2025-03-10 13:18:28,027 - INFO - CLOSED short at 2066.59 | PnL: 0.08% | $-0.03 +2025-03-10 13:18:28,027 - INFO - OPENED LONG at 2066.59 | Stop loss: 2056.2416821428574 | Take profit: 2097.611901785714 +2025-03-10 13:18:28,082 - INFO - CLOSED long at 2061.21 | PnL: -0.26% | $-0.59 +2025-03-10 13:18:28,082 - INFO - OPENED SHORT at 2061.21 | Stop loss: 2071.5314178571425 | Take profit: 2030.2687982142857 +2025-03-10 13:18:28,244 - INFO - CLOSED short at 2061.84 | PnL: -0.03% | $-0.21 +2025-03-10 13:18:28,245 - INFO - OPENED LONG at 2061.84 | Stop loss: 2051.515432142857 | Take profit: 2092.790651785714 +2025-03-10 13:18:28,323 - INFO - CLOSED long at 2065.72 | PnL: 0.19% | $0.14 +2025-03-10 13:18:28,368 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.6065678571426 | Take profit: 2039.1633482142856 +2025-03-10 13:18:28,387 - INFO - CLOSED short at 2069.34 | PnL: 0.04% | $-0.09 +2025-03-10 13:18:28,389 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.9779321428573 | Take profit: 2100.4031517857143 +2025-03-10 13:18:28,408 - INFO - CLOSED long at 2069.81 | PnL: 0.02% | $-0.13 +2025-03-10 13:18:28,408 - INFO - OPENED SHORT at 2069.81 | Stop loss: 2080.174417857143 | Take profit: 2038.7397982142857 +2025-03-10 13:18:28,471 - INFO - CLOSED short at 2074.05 | PnL: -0.20% | $-0.50 +2025-03-10 13:18:28,472 - INFO - OPENED LONG at 2074.05 | Stop loss: 2063.6643821428574 | Take profit: 2105.183801785715 +2025-03-10 13:18:28,558 - INFO - CLOSED long at 2071.8 | PnL: -0.11% | $-0.34 +2025-03-10 13:18:28,559 - INFO - OPENED SHORT at 2071.8 | Stop loss: 2082.174367857143 | Take profit: 2040.699948214286 +2025-03-10 13:18:28,711 - INFO - STOP LOSS hit for short at 2082.174367857143 | PnL: -0.50% | $-0.97 +2025-03-10 13:18:28,732 - INFO - OPENED LONG at 2090.49 | Stop loss: 2080.022182142857 | Take profit: 2121.870401785714 +2025-03-10 13:18:28,768 - INFO - TAKE PROFIT hit for long at 2121.870401785714 | PnL: 1.50% | $2.23 +2025-03-10 13:18:28,795 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.253067857143 | Take profit: 2107.4238482142855 +2025-03-10 13:18:28,835 - INFO - CLOSED short at 2133.95 | PnL: 0.26% | $0.26 +2025-03-10 13:18:28,836 - INFO - OPENED LONG at 2133.95 | Stop loss: 2123.264882142857 | Take profit: 2165.982301785714 +2025-03-10 13:18:28,952 - INFO - CLOSED long at 2140.01 | PnL: 0.28% | $0.30 +2025-03-10 13:18:28,952 - INFO - OPENED SHORT at 2140.01 | Stop loss: 2150.725417857143 | Take profit: 2107.886798214286 +2025-03-10 13:18:29,035 - INFO - CLOSED short at 2126.99 | PnL: 0.61% | $0.84 +2025-03-10 13:18:29,035 - INFO - OPENED LONG at 2126.99 | Stop loss: 2116.339682142857 | Take profit: 2158.917901785714 +2025-03-10 13:18:29,119 - INFO - CLOSED long at 2128.69 | PnL: 0.08% | $-0.03 +2025-03-10 13:18:29,119 - INFO - OPENED SHORT at 2128.69 | Stop loss: 2139.348817857143 | Take profit: 2096.7365982142856 +2025-03-10 13:18:29,165 - INFO - CLOSED short at 2120.15 | PnL: 0.40% | $0.50 +2025-03-10 13:18:29,165 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.5338821428572 | Take profit: 2151.9753017857147 +2025-03-10 13:18:29,202 - INFO - CLOSED long at 2119.93 | PnL: -0.01% | $-0.19 +2025-03-10 13:18:29,241 - INFO - OPENED SHORT at 2118.52 | Stop loss: 2129.1279678571427 | Take profit: 2086.7191482142857 +2025-03-10 13:18:29,436 - INFO - CLOSED short at 2112.09 | PnL: 0.30% | $0.34 +2025-03-10 13:18:29,436 - INFO - OPENED LONG at 2112.09 | Stop loss: 2101.5141821428574 | Take profit: 2143.7944017857144 +2025-03-10 13:18:29,527 - INFO - CLOSED long at 2113.24 | PnL: 0.05% | $-0.08 +2025-03-10 13:18:29,711 - INFO - OPENED SHORT at 2103.33 | Stop loss: 2113.8620178571427 | Take profit: 2071.7569982142854 +2025-03-10 13:18:29,752 - INFO - CLOSED short at 2090.0 | PnL: 0.63% | $0.90 +2025-03-10 13:18:29,752 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.534632142857 | Take profit: 2121.3730517857143 +2025-03-10 13:18:29,822 - INFO - CLOSED long at 2098.1 | PnL: 0.39% | $0.49 +2025-03-10 13:18:29,889 - INFO - OPENED LONG at 2102.29 | Stop loss: 2091.763182142857 | Take profit: 2133.8474017857143 +2025-03-10 13:18:29,920 - INFO - CLOSED long at 2099.25 | PnL: -0.14% | $-0.42 +2025-03-10 13:18:30,130 - INFO - OPENED LONG at 2100.02 | Stop loss: 2089.504532142857 | Take profit: 2131.543351785714 +2025-03-10 13:18:30,303 - INFO - CLOSED long at 2092.46 | PnL: -0.36% | $-0.78 +2025-03-10 13:18:30,303 - INFO - OPENED SHORT at 2092.46 | Stop loss: 2102.937667857143 | Take profit: 2061.0500482142857 +2025-03-10 13:18:30,417 - INFO - CLOSED short at 2083.28 | PnL: 0.44% | $0.57 +2025-03-10 13:18:30,424 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.8482321428573 | Take profit: 2114.552251785715 +2025-03-10 13:18:30,539 - INFO - CLOSED long at 2081.49 | PnL: -0.09% | $-0.31 +2025-03-10 13:18:30,540 - INFO - OPENED SHORT at 2081.49 | Stop loss: 2091.9128178571427 | Take profit: 2050.2445982142854 +2025-03-10 13:18:30,719 - INFO - CLOSED short at 2083.41 | PnL: -0.09% | $-0.32 +2025-03-10 13:18:30,747 - INFO - OPENED SHORT at 2085.09 | Stop loss: 2095.5308178571427 | Take profit: 2053.790598214286 +2025-03-10 13:18:30,816 - INFO - CLOSED short at 2085.8 | PnL: -0.03% | $-0.23 +2025-03-10 13:18:30,816 - INFO - OPENED LONG at 2085.8 | Stop loss: 2075.3556321428573 | Take profit: 2117.1100517857144 +2025-03-10 13:18:30,970 - INFO - CLOSED long at 2089.96 | PnL: 0.20% | $0.17 +2025-03-10 13:18:31,174 - INFO - OPENED SHORT at 2085.67 | Stop loss: 2096.113717857143 | Take profit: 2054.3618982142857 +2025-03-10 13:18:31,264 - INFO - CLOSED short at 2091.95 | PnL: -0.30% | $-0.67 +2025-03-10 13:18:31,352 - INFO - OPENED LONG at 2099.99 | Stop loss: 2089.474682142857 | Take profit: 2131.512901785714 +2025-03-10 13:18:31,423 - INFO - CLOSED long at 2097.11 | PnL: -0.14% | $-0.40 +2025-03-10 13:18:31,459 - INFO - OPENED SHORT at 2098.49 | Stop loss: 2108.9978178571428 | Take profit: 2066.9895982142857 +2025-03-10 13:18:31,529 - INFO - CLOSED short at 2100.89 | PnL: -0.11% | $-0.36 +2025-03-10 13:18:31,546 - INFO - OPENED SHORT at 2099.73 | Stop loss: 2110.244017857143 | Take profit: 2068.2109982142856 +2025-03-10 13:18:31,612 - INFO - CLOSED short at 2104.93 | PnL: -0.25% | $-0.57 +2025-03-10 13:18:31,612 - INFO - OPENED LONG at 2104.93 | Stop loss: 2094.3899821428568 | Take profit: 2136.527001785714 +2025-03-10 13:18:31,814 - INFO - CLOSED long at 2103.52 | PnL: -0.07% | $-0.27 +2025-03-10 13:18:31,939 - INFO - OPENED LONG at 2100.0 | Stop loss: 2089.484632142857 | Take profit: 2131.523051785714 +2025-03-10 13:18:31,957 - INFO - CLOSED long at 2102.7 | PnL: 0.13% | $0.05 +2025-03-10 13:18:31,975 - INFO - OPENED SHORT at 2102.0 | Stop loss: 2112.525367857143 | Take profit: 2070.446948214286 +2025-03-10 13:18:32,013 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.31, Avg Loss=$-0.32 +2025-03-10 13:18:32,013 - INFO - Episode 5: Reward=-76.82, Balance=$82.36, Win Rate=25.2%, Trades=111, Episode PnL=$-11.12, Total PnL=$-119.17, Max Drawdown=19.7%, Pred Accuracy=99.4% +2025-03-10 13:18:32,013 - ERROR - Error in episode 5: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:18:32,013 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1831, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:18:32,039 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:18:32,345 - INFO - OPENED LONG at 2048.13 | Stop loss: 2037.8739821428571 | Take profit: 2078.8750017857146 +2025-03-10 13:18:32,404 - INFO - CLOSED long at 2050.0 | PnL: 0.09% | $-0.02 +2025-03-10 13:18:32,404 - INFO - OPENED SHORT at 2050.0 | Stop loss: 2060.265367857143 | Take profit: 2019.2269482142858 +2025-03-10 13:18:32,440 - INFO - CLOSED short at 2049.89 | PnL: 0.01% | $-0.19 +2025-03-10 13:18:32,440 - INFO - OPENED LONG at 2049.89 | Stop loss: 2039.625182142857 | Take profit: 2080.661401785714 +2025-03-10 13:18:32,538 - INFO - CLOSED long at 2052.3 | PnL: 0.12% | $0.03 +2025-03-10 13:18:32,538 - INFO - OPENED SHORT at 2052.3 | Stop loss: 2062.576867857143 | Take profit: 2021.492448214286 +2025-03-10 13:18:32,690 - INFO - CLOSED short at 2060.13 | PnL: -0.38% | $-0.95 +2025-03-10 13:18:32,690 - INFO - OPENED LONG at 2060.13 | Stop loss: 2049.813982142857 | Take profit: 2091.0550017857145 +2025-03-10 13:18:32,718 - INFO - CLOSED long at 2059.7 | PnL: -0.02% | $-0.24 +2025-03-10 13:18:32,719 - INFO - OPENED SHORT at 2059.7 | Stop loss: 2070.0138678571425 | Take profit: 2028.7814482142855 +2025-03-10 13:18:32,761 - INFO - CLOSED short at 2063.29 | PnL: -0.17% | $-0.54 +2025-03-10 13:18:32,762 - INFO - OPENED LONG at 2063.29 | Stop loss: 2052.9581821428574 | Take profit: 2094.2624017857142 +2025-03-10 13:18:32,782 - INFO - CLOSED long at 2064.61 | PnL: 0.06% | $-0.07 +2025-03-10 13:18:32,823 - INFO - OPENED LONG at 2061.61 | Stop loss: 2051.2865821428572 | Take profit: 2092.5572017857144 +2025-03-10 13:18:32,909 - INFO - CLOSED long at 2058.3 | PnL: -0.16% | $-0.51 +2025-03-10 13:18:32,909 - INFO - OPENED SHORT at 2058.3 | Stop loss: 2068.6068678571432 | Take profit: 2027.4024482142859 +2025-03-10 13:18:32,943 - INFO - CLOSED short at 2060.0 | PnL: -0.08% | $-0.35 +2025-03-10 13:18:33,009 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560182142857 | Take profit: 2093.8564017857143 +2025-03-10 13:18:33,078 - INFO - CLOSED long at 2059.49 | PnL: -0.16% | $-0.51 +2025-03-10 13:18:33,183 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.8040821428572 | Take profit: 2089.0047017857146 +2025-03-10 13:18:33,202 - INFO - CLOSED long at 2061.79 | PnL: 0.18% | $0.15 +2025-03-10 13:18:33,286 - INFO - OPENED LONG at 2070.58 | Stop loss: 2060.2117321428573 | Take profit: 2101.6617517857144 +2025-03-10 13:18:33,335 - INFO - CLOSED long at 2068.29 | PnL: -0.11% | $-0.40 +2025-03-10 13:18:33,335 - INFO - OPENED SHORT at 2068.29 | Stop loss: 2078.6468178571427 | Take profit: 2037.2425982142856 +2025-03-10 13:18:33,477 - INFO - CLOSED short at 2069.6 | PnL: -0.06% | $-0.31 +2025-03-10 13:18:33,477 - INFO - OPENED LONG at 2069.6 | Stop loss: 2059.236632142857 | Take profit: 2100.667051785714 +2025-03-10 13:18:33,594 - INFO - CLOSED long at 2070.26 | PnL: 0.03% | $-0.13 +2025-03-10 13:18:33,651 - INFO - OPENED LONG at 2075.1 | Stop loss: 2064.709132142857 | Take profit: 2106.249551785714 +2025-03-10 13:18:33,762 - INFO - CLOSED long at 2071.41 | PnL: -0.18% | $-0.53 +2025-03-10 13:18:33,831 - INFO - OPENED SHORT at 2070.9 | Stop loss: 2081.269867857143 | Take profit: 2039.8134482142857 +2025-03-10 13:18:33,942 - INFO - CLOSED short at 2068.02 | PnL: 0.14% | $0.07 +2025-03-10 13:18:33,942 - INFO - OPENED LONG at 2068.02 | Stop loss: 2057.6645321428573 | Take profit: 2099.0633517857145 +2025-03-10 13:18:33,976 - INFO - CLOSED long at 2070.36 | PnL: 0.11% | $0.02 +2025-03-10 13:18:33,998 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.259867857143 | Take profit: 2037.843448214286 +2025-03-10 13:18:34,038 - INFO - CLOSED short at 2069.34 | PnL: -0.02% | $-0.23 +2025-03-10 13:18:34,038 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.9779321428573 | Take profit: 2100.4031517857143 +2025-03-10 13:18:34,117 - INFO - CLOSED long at 2067.51 | PnL: -0.09% | $-0.36 +2025-03-10 13:18:34,151 - INFO - OPENED LONG at 2069.01 | Stop loss: 2058.6495821428575 | Take profit: 2100.0682017857143 +2025-03-10 13:18:34,359 - INFO - CLOSED long at 2068.9 | PnL: -0.01% | $-0.20 +2025-03-10 13:18:34,359 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.259867857143 | Take profit: 2037.843448214286 +2025-03-10 13:18:34,479 - INFO - CLOSED short at 2071.4 | PnL: -0.12% | $-0.42 +2025-03-10 13:18:34,617 - INFO - OPENED LONG at 2072.7 | Stop loss: 2062.321132142857 | Take profit: 2103.813551785714 +2025-03-10 13:18:34,771 - INFO - CLOSED long at 2071.11 | PnL: -0.08% | $-0.33 +2025-03-10 13:18:34,838 - INFO - OPENED SHORT at 2068.32 | Stop loss: 2078.676967857143 | Take profit: 2037.2721482142858 +2025-03-10 13:18:34,946 - INFO - CLOSED short at 2066.8 | PnL: 0.07% | $-0.05 +2025-03-10 13:18:34,946 - INFO - OPENED LONG at 2066.8 | Stop loss: 2056.450632142857 | Take profit: 2097.8250517857145 +2025-03-10 13:18:35,173 - INFO - CLOSED long at 2067.86 | PnL: 0.05% | $-0.09 +2025-03-10 13:18:35,199 - INFO - OPENED LONG at 2067.59 | Stop loss: 2057.2366821428573 | Take profit: 2098.6269017857144 +2025-03-10 13:18:35,381 - INFO - CLOSED long at 2068.5 | PnL: 0.04% | $-0.10 +2025-03-10 13:18:35,382 - INFO - OPENED SHORT at 2068.5 | Stop loss: 2078.857867857143 | Take profit: 2037.449448214286 +2025-03-10 13:18:35,665 - INFO - CLOSED short at 2070.04 | PnL: -0.07% | $-0.32 +2025-03-10 13:18:35,684 - INFO - OPENED LONG at 2067.8 | Stop loss: 2057.4456321428574 | Take profit: 2098.840051785715 +2025-03-10 13:18:35,795 - INFO - CLOSED long at 2064.99 | PnL: -0.14% | $-0.44 +2025-03-10 13:18:35,869 - INFO - OPENED SHORT at 2066.15 | Stop loss: 2076.496117857143 | Take profit: 2035.134698214286 +2025-03-10 13:18:35,908 - INFO - CLOSED short at 2065.26 | PnL: 0.04% | $-0.11 +2025-03-10 13:18:35,932 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560182142857 | Take profit: 2093.8564017857143 +2025-03-10 13:18:36,004 - INFO - CLOSED long at 2061.3 | PnL: -0.08% | $-0.33 +2025-03-10 13:18:36,004 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.621867857143 | Take profit: 2030.357448214286 +2025-03-10 13:18:36,092 - INFO - CLOSED short at 2067.1 | PnL: -0.28% | $-0.70 +2025-03-10 13:18:36,116 - INFO - OPENED SHORT at 2065.54 | Stop loss: 2075.8830678571426 | Take profit: 2034.5338482142859 +2025-03-10 13:18:36,233 - INFO - CLOSED short at 2062.71 | PnL: 0.14% | $0.07 +2025-03-10 13:18:36,233 - INFO - OPENED LONG at 2062.71 | Stop loss: 2052.3810821428574 | Take profit: 2093.673701785714 +2025-03-10 13:18:36,369 - INFO - CLOSED long at 2060.9 | PnL: -0.09% | $-0.34 +2025-03-10 13:18:36,413 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.580182142857 | Take profit: 2089.7964017857144 +2025-03-10 13:18:36,471 - INFO - CLOSED long at 2061.8 | PnL: 0.14% | $0.08 +2025-03-10 13:18:36,701 - INFO - OPENED LONG at 2065.36 | Stop loss: 2055.0178321428575 | Take profit: 2096.3634517857145 +2025-03-10 13:18:36,750 - INFO - CLOSED long at 2063.39 | PnL: -0.10% | $-0.36 +2025-03-10 13:18:36,772 - INFO - OPENED LONG at 2064.79 | Stop loss: 2054.450682142857 | Take profit: 2095.7849017857143 +2025-03-10 13:18:36,817 - INFO - CLOSED long at 2063.53 | PnL: -0.06% | $-0.29 +2025-03-10 13:18:36,817 - INFO - OPENED SHORT at 2063.53 | Stop loss: 2073.863017857143 | Take profit: 2032.553998214286 +2025-03-10 13:18:36,836 - INFO - CLOSED short at 2063.0 | PnL: 0.03% | $-0.13 +2025-03-10 13:18:36,836 - INFO - OPENED LONG at 2063.0 | Stop loss: 2052.669632142857 | Take profit: 2093.968051785714 +2025-03-10 13:18:37,142 - INFO - CLOSED long at 2059.46 | PnL: -0.17% | $-0.49 +2025-03-10 13:18:37,262 - INFO - OPENED LONG at 2054.83 | Stop loss: 2044.5404821428572 | Take profit: 2085.6755017857145 +2025-03-10 13:18:37,544 - INFO - CLOSED long at 2066.36 | PnL: 0.56% | $0.83 +2025-03-10 13:18:37,544 - INFO - OPENED SHORT at 2066.36 | Stop loss: 2076.707167857143 | Take profit: 2035.341548214286 +2025-03-10 13:18:37,584 - INFO - CLOSED short at 2063.9 | PnL: 0.12% | $0.03 +2025-03-10 13:18:37,669 - INFO - OPENED SHORT at 2066.79 | Stop loss: 2077.1393178571425 | Take profit: 2035.7650982142857 +2025-03-10 13:18:37,794 - INFO - CLOSED short at 2069.79 | PnL: -0.15% | $-0.44 +2025-03-10 13:18:37,794 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.425682142857 | Take profit: 2100.859901785714 +2025-03-10 13:18:37,829 - INFO - CLOSED long at 2072.0 | PnL: 0.11% | $0.01 +2025-03-10 13:18:37,901 - INFO - OPENED LONG at 2078.01 | Stop loss: 2067.6045821428575 | Take profit: 2109.2032017857146 +2025-03-10 13:18:37,942 - INFO - CLOSED long at 2072.6 | PnL: -0.26% | $-0.65 +2025-03-10 13:18:37,959 - INFO - OPENED LONG at 2071.04 | Stop loss: 2060.669432142857 | Take profit: 2102.1286517857143 +2025-03-10 13:18:38,000 - INFO - CLOSED long at 2071.6 | PnL: 0.03% | $-0.13 +2025-03-10 13:18:38,100 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.3261821428573 | Take profit: 2100.7584017857143 +2025-03-10 13:18:38,129 - INFO - CLOSED long at 2069.03 | PnL: -0.03% | $-0.24 +2025-03-10 13:18:38,130 - INFO - OPENED SHORT at 2069.03 | Stop loss: 2079.390517857143 | Take profit: 2037.9714982142857 +2025-03-10 13:18:38,259 - INFO - CLOSED short at 2071.49 | PnL: -0.12% | $-0.39 +2025-03-10 13:18:38,367 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.0438678571427 | Take profit: 2034.6914482142856 +2025-03-10 13:18:38,384 - INFO - CLOSED short at 2065.66 | PnL: 0.00% | $-0.17 +2025-03-10 13:18:38,384 - INFO - OPENED LONG at 2065.66 | Stop loss: 2055.316332142857 | Take profit: 2096.6679517857137 +2025-03-10 13:18:38,537 - INFO - CLOSED long at 2065.5 | PnL: -0.01% | $-0.19 +2025-03-10 13:18:38,537 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.8428678571427 | Take profit: 2034.4944482142857 +2025-03-10 13:18:38,600 - INFO - CLOSED short at 2065.29 | PnL: 0.01% | $-0.16 +2025-03-10 13:18:38,600 - INFO - OPENED LONG at 2065.29 | Stop loss: 2054.948182142857 | Take profit: 2096.2924017857144 +2025-03-10 13:18:38,641 - INFO - CLOSED long at 2065.31 | PnL: 0.00% | $-0.17 +2025-03-10 13:18:38,641 - INFO - OPENED SHORT at 2065.31 | Stop loss: 2075.6519178571425 | Take profit: 2034.3072982142855 +2025-03-10 13:18:38,677 - INFO - CLOSED short at 2066.8 | PnL: -0.07% | $-0.30 +2025-03-10 13:18:38,711 - INFO - OPENED LONG at 2066.5 | Stop loss: 2056.152132142857 | Take profit: 2097.520551785714 +2025-03-10 13:18:38,809 - INFO - CLOSED long at 2071.35 | PnL: 0.23% | $0.24 +2025-03-10 13:18:39,166 - INFO - OPENED SHORT at 2071.61 | Stop loss: 2081.983417857143 | Take profit: 2040.5127982142858 +2025-03-10 13:18:39,194 - INFO - CLOSED short at 2074.37 | PnL: -0.13% | $-0.41 +2025-03-10 13:18:39,194 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.982782142857 | Take profit: 2105.508601785714 +2025-03-10 13:18:39,223 - INFO - CLOSED long at 2075.07 | PnL: 0.03% | $-0.12 +2025-03-10 13:18:39,223 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.460717857143 | Take profit: 2043.920898214286 +2025-03-10 13:18:39,294 - INFO - CLOSED short at 2073.99 | PnL: 0.05% | $-0.08 +2025-03-10 13:18:39,294 - INFO - OPENED LONG at 2073.99 | Stop loss: 2063.6046821428567 | Take profit: 2105.122901785714 +2025-03-10 13:18:39,457 - INFO - CLOSED long at 2074.0 | PnL: 0.00% | $-0.17 +2025-03-10 13:18:39,457 - INFO - OPENED SHORT at 2074.0 | Stop loss: 2084.3853678571427 | Take profit: 2042.8669482142857 +2025-03-10 13:18:39,571 - INFO - CLOSED short at 2067.0 | PnL: 0.34% | $0.41 +2025-03-10 13:18:39,571 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.649632142857 | Take profit: 2098.0280517857145 +2025-03-10 13:18:39,648 - INFO - CLOSED long at 2066.89 | PnL: -0.01% | $-0.18 +2025-03-10 13:18:39,649 - INFO - OPENED SHORT at 2066.89 | Stop loss: 2077.239817857143 | Take profit: 2035.8635982142857 +2025-03-10 13:18:39,690 - INFO - CLOSED short at 2065.45 | PnL: 0.07% | $-0.05 +2025-03-10 13:18:39,690 - INFO - OPENED LONG at 2065.45 | Stop loss: 2055.1073821428567 | Take profit: 2096.454801785714 +2025-03-10 13:18:39,714 - INFO - CLOSED long at 2068.1 | PnL: 0.13% | $0.05 +2025-03-10 13:18:39,715 - INFO - OPENED SHORT at 2068.1 | Stop loss: 2078.455867857143 | Take profit: 2037.0554482142857 +2025-03-10 13:18:39,819 - INFO - CLOSED short at 2070.1 | PnL: -0.10% | $-0.34 +2025-03-10 13:18:39,954 - INFO - OPENED SHORT at 2065.8 | Stop loss: 2076.144367857143 | Take profit: 2034.789948214286 +2025-03-10 13:18:40,032 - INFO - CLOSED short at 2063.39 | PnL: 0.12% | $0.03 +2025-03-10 13:18:40,088 - INFO - OPENED SHORT at 2063.98 | Stop loss: 2074.3152678571428 | Take profit: 2032.9972482142857 +2025-03-10 13:18:40,118 - INFO - CLOSED short at 2066.1 | PnL: -0.10% | $-0.35 +2025-03-10 13:18:40,499 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.7295821428572 | Take profit: 2083.8282017857146 +2025-03-10 13:18:40,772 - INFO - CLOSED long at 2062.83 | PnL: 0.48% | $0.66 +2025-03-10 13:18:40,772 - INFO - OPENED SHORT at 2062.83 | Stop loss: 2073.159517857143 | Take profit: 2031.8644982142857 +2025-03-10 13:18:40,795 - INFO - CLOSED short at 2063.9 | PnL: -0.05% | $-0.27 +2025-03-10 13:18:40,839 - INFO - OPENED SHORT at 2062.43 | Stop loss: 2072.7575178571424 | Take profit: 2031.4704982142855 +2025-03-10 13:18:40,934 - INFO - CLOSED short at 2067.49 | PnL: -0.25% | $-0.60 +2025-03-10 13:18:40,934 - INFO - OPENED LONG at 2067.49 | Stop loss: 2057.137182142857 | Take profit: 2098.525401785714 +2025-03-10 13:18:40,962 - INFO - CLOSED long at 2066.59 | PnL: -0.04% | $-0.25 +2025-03-10 13:18:41,120 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.381132142857 | Take profit: 2091.6335517857137 +2025-03-10 13:18:41,187 - INFO - CLOSED long at 2065.72 | PnL: 0.24% | $0.25 +2025-03-10 13:18:41,243 - INFO - OPENED LONG at 2070.24 | Stop loss: 2059.873432142857 | Take profit: 2101.316651785714 +2025-03-10 13:18:41,265 - INFO - CLOSED long at 2069.34 | PnL: -0.04% | $-0.25 +2025-03-10 13:18:41,265 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.702067857143 | Take profit: 2038.2768482142858 +2025-03-10 13:18:41,337 - INFO - CLOSED short at 2073.49 | PnL: -0.20% | $-0.52 +2025-03-10 13:18:41,520 - INFO - OPENED LONG at 2074.9 | Stop loss: 2064.510132142857 | Take profit: 2106.046551785714 +2025-03-10 13:18:41,543 - INFO - CLOSED long at 2076.08 | PnL: 0.06% | $-0.07 +2025-03-10 13:18:41,584 - INFO - OPENED LONG at 2085.56 | Stop loss: 2075.116832142857 | Take profit: 2116.866451785714 +2025-03-10 13:18:41,638 - INFO - CLOSED long at 2130.7 | PnL: 2.16% | $3.54 +2025-03-10 13:18:41,668 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.826932142857 | Take profit: 2171.6561517857144 +2025-03-10 13:18:41,764 - INFO - CLOSED long at 2141.41 | PnL: 0.09% | $-0.02 +2025-03-10 13:18:41,788 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.021867857143 | Take profit: 2109.157448214286 +2025-03-10 13:18:41,852 - INFO - CLOSED short at 2134.78 | PnL: 0.30% | $0.36 +2025-03-10 13:18:41,852 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.090732142857 | Take profit: 2166.824751785715 +2025-03-10 13:18:41,873 - INFO - CLOSED long at 2126.99 | PnL: -0.36% | $-0.83 +2025-03-10 13:18:41,894 - INFO - OPENED SHORT at 2127.3 | Stop loss: 2137.951867857143 | Take profit: 2095.367448214286 +2025-03-10 13:18:41,917 - INFO - CLOSED short at 2128.69 | PnL: -0.07% | $-0.29 +2025-03-10 13:18:41,961 - INFO - OPENED SHORT at 2120.15 | Stop loss: 2130.766117857143 | Take profit: 2088.324698214286 +2025-03-10 13:18:42,085 - INFO - CLOSED short at 2119.07 | PnL: 0.05% | $-0.09 +2025-03-10 13:18:42,133 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.877482142857 | Take profit: 2139.064501785714 +2025-03-10 13:18:42,153 - INFO - CLOSED long at 2110.6 | PnL: 0.15% | $0.09 +2025-03-10 13:18:42,248 - INFO - OPENED LONG at 2112.46 | Stop loss: 2101.882332142857 | Take profit: 2144.169951785714 +2025-03-10 13:18:42,272 - INFO - CLOSED long at 2113.24 | PnL: 0.04% | $-0.11 +2025-03-10 13:18:42,272 - INFO - OPENED SHORT at 2113.24 | Stop loss: 2123.8215678571423 | Take profit: 2081.5183482142857 +2025-03-10 13:18:42,293 - INFO - CLOSED short at 2112.99 | PnL: 0.01% | $-0.16 +2025-03-10 13:18:42,476 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.504332142857 | Take profit: 2139.703951785714 +2025-03-10 13:18:42,551 - INFO - STOP LOSS hit for long at 2097.504332142857 | PnL: -0.50% | $-1.06 +2025-03-10 13:18:42,659 - INFO - OPENED SHORT at 2102.29 | Stop loss: 2112.8168178571427 | Take profit: 2070.7325982142856 +2025-03-10 13:18:42,687 - INFO - CLOSED short at 2099.25 | PnL: 0.14% | $0.08 +2025-03-10 13:18:42,687 - INFO - OPENED LONG at 2099.25 | Stop loss: 2088.738382142857 | Take profit: 2130.7618017857144 +2025-03-10 13:18:42,715 - INFO - CLOSED long at 2098.9 | PnL: -0.02% | $-0.20 +2025-03-10 13:18:42,739 - INFO - OPENED LONG at 2100.69 | Stop loss: 2090.171182142857 | Take profit: 2132.2234017857145 +2025-03-10 13:18:42,796 - INFO - CLOSED long at 2106.39 | PnL: 0.27% | $0.30 +2025-03-10 13:18:42,842 - INFO - OPENED SHORT at 2103.86 | Stop loss: 2114.394667857143 | Take profit: 2072.279048214286 +2025-03-10 13:18:42,870 - INFO - CLOSED short at 2104.68 | PnL: -0.04% | $-0.24 +2025-03-10 13:18:43,029 - INFO - OPENED SHORT at 2093.46 | Stop loss: 2103.9426678571426 | Take profit: 2062.035048214286 +2025-03-10 13:18:43,114 - INFO - CLOSED short at 2091.1 | PnL: 0.11% | $0.02 +2025-03-10 13:18:43,114 - INFO - OPENED LONG at 2091.1 | Stop loss: 2080.629132142857 | Take profit: 2122.489551785714 +2025-03-10 13:18:43,141 - INFO - CLOSED long at 2094.72 | PnL: 0.17% | $0.13 +2025-03-10 13:18:43,390 - INFO - OPENED LONG at 2080.38 | Stop loss: 2069.962732142857 | Take profit: 2111.6087517857145 +2025-03-10 13:18:43,452 - INFO - CLOSED long at 2083.41 | PnL: 0.15% | $0.08 +2025-03-10 13:18:43,452 - INFO - OPENED SHORT at 2083.41 | Stop loss: 2093.8424178571427 | Take profit: 2052.1357982142854 +2025-03-10 13:18:43,550 - INFO - CLOSED short at 2085.8 | PnL: -0.11% | $-0.37 +2025-03-10 13:18:43,746 - INFO - OPENED LONG at 2087.47 | Stop loss: 2077.017282142857 | Take profit: 2118.805101785714 +2025-03-10 13:18:43,786 - INFO - CLOSED long at 2086.81 | PnL: -0.03% | $-0.23 +2025-03-10 13:18:43,804 - INFO - OPENED SHORT at 2089.79 | Stop loss: 2100.2543178571427 | Take profit: 2058.4200982142856 +2025-03-10 13:18:43,827 - INFO - CLOSED short at 2085.67 | PnL: 0.20% | $0.17 +2025-03-10 13:18:43,847 - INFO - OPENED SHORT at 2089.2 | Stop loss: 2099.6613678571425 | Take profit: 2057.8389482142857 +2025-03-10 13:18:43,866 - INFO - CLOSED short at 2091.05 | PnL: -0.09% | $-0.33 +2025-03-10 13:18:43,887 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.520617857143 | Take profit: 2059.661198214286 +2025-03-10 13:18:43,904 - INFO - CLOSED short at 2091.95 | PnL: -0.04% | $-0.25 +2025-03-10 13:18:43,985 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.163567857143 | Take profit: 2070.0923482142857 +2025-03-10 13:18:44,129 - INFO - CLOSED short at 2103.48 | PnL: -0.09% | $-0.32 +2025-03-10 13:18:44,170 - INFO - OPENED SHORT at 2103.81 | Stop loss: 2114.344417857143 | Take profit: 2072.229798214286 +2025-03-10 13:18:44,245 - INFO - CLOSED short at 2103.64 | PnL: 0.01% | $-0.16 +2025-03-10 13:18:44,245 - INFO - OPENED LONG at 2103.64 | Stop loss: 2093.106432142857 | Take profit: 2135.217651785714 +2025-03-10 13:18:44,400 - INFO - CLOSED long at 2102.7 | PnL: -0.04% | $-0.25 +2025-03-10 13:18:44,400 - INFO - OPENED SHORT at 2102.7 | Stop loss: 2113.2288678571426 | Take profit: 2071.1364482142853 +2025-03-10 13:18:44,462 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.32, Avg Loss=$-0.30 +2025-03-10 13:18:44,467 - INFO - Episode 6: Reward=-61.68, Balance=$86.22, Win Rate=25.3%, Trades=95, Episode PnL=$-11.66, Total PnL=$-132.96, Max Drawdown=13.6%, Pred Accuracy=99.4% +2025-03-10 13:18:44,467 - ERROR - Error in episode 6: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:18:44,467 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1831, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:18:44,492 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:18:44,733 - INFO - OPENED SHORT at 2050.0 | Stop loss: 2060.265367857143 | Take profit: 2019.2269482142858 +2025-03-10 13:18:45,064 - INFO - STOP LOSS hit for short at 2060.265367857143 | PnL: -0.50% | $-1.19 +2025-03-10 13:18:45,190 - INFO - OPENED SHORT at 2063.59 | Stop loss: 2073.923317857143 | Take profit: 2032.6130982142859 +2025-03-10 13:18:45,270 - INFO - CLOSED short at 2064.69 | PnL: -0.05% | $-0.30 +2025-03-10 13:18:45,311 - INFO - OPENED SHORT at 2063.01 | Stop loss: 2073.340417857143 | Take profit: 2032.041798214286 +2025-03-10 13:18:45,538 - INFO - CLOSED short at 2057.8 | PnL: 0.25% | $0.30 +2025-03-10 13:18:45,538 - INFO - OPENED LONG at 2057.8 | Stop loss: 2047.4956321428572 | Take profit: 2088.6900517857143 +2025-03-10 13:18:45,882 - INFO - CLOSED long at 2068.29 | PnL: 0.51% | $0.80 +2025-03-10 13:18:45,924 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.244817857143 | Take profit: 2036.8485982142856 +2025-03-10 13:18:45,968 - INFO - CLOSED short at 2071.63 | PnL: -0.18% | $-0.56 +2025-03-10 13:18:46,145 - INFO - OPENED SHORT at 2068.99 | Stop loss: 2079.3503178571427 | Take profit: 2037.9320982142856 +2025-03-10 13:18:46,173 - INFO - CLOSED short at 2067.9 | PnL: 0.05% | $-0.09 +2025-03-10 13:18:46,173 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.5451321428573 | Take profit: 2098.9415517857146 +2025-03-10 13:18:46,592 - INFO - CLOSED long at 2069.37 | PnL: 0.07% | $-0.06 +2025-03-10 13:18:46,675 - INFO - OPENED SHORT at 2070.79 | Stop loss: 2081.1593178571425 | Take profit: 2039.7050982142857 +2025-03-10 13:18:46,702 - INFO - CLOSED short at 2070.28 | PnL: 0.02% | $-0.15 +2025-03-10 13:18:47,020 - INFO - OPENED SHORT at 2069.19 | Stop loss: 2079.5513178571427 | Take profit: 2038.1290982142857 +2025-03-10 13:18:47,164 - INFO - CLOSED short at 2069.01 | PnL: 0.01% | $-0.18 +2025-03-10 13:18:47,435 - INFO - OPENED LONG at 2068.76 | Stop loss: 2058.4008321428573 | Take profit: 2099.8144517857145 +2025-03-10 13:18:47,461 - INFO - CLOSED long at 2068.9 | PnL: 0.01% | $-0.18 +2025-03-10 13:18:47,461 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.259867857143 | Take profit: 2037.843448214286 +2025-03-10 13:18:47,763 - INFO - CLOSED short at 2071.39 | PnL: -0.12% | $-0.43 +2025-03-10 13:18:47,830 - INFO - OPENED LONG at 2072.75 | Stop loss: 2062.370882142857 | Take profit: 2103.8643017857144 +2025-03-10 13:18:48,120 - INFO - CLOSED long at 2071.92 | PnL: -0.04% | $-0.27 +2025-03-10 13:18:48,121 - INFO - OPENED SHORT at 2071.92 | Stop loss: 2082.294967857143 | Take profit: 2040.8181482142859 +2025-03-10 13:18:48,229 - INFO - CLOSED short at 2069.35 | PnL: 0.12% | $0.05 +2025-03-10 13:18:48,260 - INFO - OPENED LONG at 2068.32 | Stop loss: 2057.963032142857 | Take profit: 2099.3678517857143 +2025-03-10 13:18:48,494 - INFO - CLOSED long at 2066.8 | PnL: -0.07% | $-0.34 +2025-03-10 13:18:48,494 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.1493678571433 | Take profit: 2035.7749482142858 +2025-03-10 13:18:48,602 - INFO - CLOSED short at 2065.26 | PnL: 0.07% | $-0.05 +2025-03-10 13:18:48,602 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.9183321428573 | Take profit: 2096.2619517857147 +2025-03-10 13:18:48,792 - INFO - CLOSED long at 2067.86 | PnL: 0.13% | $0.05 +2025-03-10 13:18:48,864 - INFO - OPENED SHORT at 2069.2 | Stop loss: 2079.5613678571426 | Take profit: 2038.1389482142854 +2025-03-10 13:18:48,901 - INFO - CLOSED short at 2070.3 | PnL: -0.05% | $-0.30 +2025-03-10 13:18:48,973 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.068867857143 | Take profit: 2039.6164482142856 +2025-03-10 13:18:49,176 - INFO - CLOSED short at 2067.11 | PnL: 0.17% | $0.14 +2025-03-10 13:18:49,376 - INFO - OPENED LONG at 2064.47 | Stop loss: 2054.132282142857 | Take profit: 2095.460101785714 +2025-03-10 13:18:49,587 - INFO - CLOSED long at 2067.88 | PnL: 0.17% | $0.13 +2025-03-10 13:18:49,707 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.601667857143 | Take profit: 2034.258048214286 +2025-03-10 13:18:49,966 - INFO - CLOSED short at 2066.24 | PnL: -0.05% | $-0.29 +2025-03-10 13:18:50,090 - INFO - OPENED SHORT at 2064.45 | Stop loss: 2074.787617857143 | Take profit: 2033.4601982142856 +2025-03-10 13:18:50,398 - INFO - CLOSED short at 2060.31 | PnL: 0.20% | $0.19 +2025-03-10 13:18:50,476 - INFO - OPENED LONG at 2062.61 | Stop loss: 2052.2815821428576 | Take profit: 2093.5722017857147 +2025-03-10 13:18:51,062 - INFO - CLOSED long at 2058.89 | PnL: -0.18% | $-0.54 +2025-03-10 13:18:51,065 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.199817857143 | Take profit: 2027.9835982142856 +2025-03-10 13:18:51,085 - INFO - CLOSED short at 2059.96 | PnL: -0.05% | $-0.29 +2025-03-10 13:18:51,232 - INFO - OPENED LONG at 2054.83 | Stop loss: 2044.5404821428572 | Take profit: 2085.6755017857145 +2025-03-10 13:18:51,286 - INFO - CLOSED long at 2058.15 | PnL: 0.16% | $0.12 +2025-03-10 13:18:51,287 - INFO - OPENED SHORT at 2058.15 | Stop loss: 2068.456117857143 | Take profit: 2027.2546982142858 +2025-03-10 13:18:51,336 - INFO - CLOSED short at 2061.66 | PnL: -0.17% | $-0.52 +2025-03-10 13:18:51,402 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.621867857143 | Take profit: 2030.357448214286 +2025-03-10 13:18:51,423 - INFO - CLOSED short at 2062.69 | PnL: -0.07% | $-0.32 +2025-03-10 13:18:51,448 - INFO - OPENED LONG at 2063.4 | Stop loss: 2053.0676321428573 | Take profit: 2094.374051785714 +2025-03-10 13:18:51,598 - INFO - CLOSED long at 2066.34 | PnL: 0.14% | $0.08 +2025-03-10 13:18:51,598 - INFO - OPENED SHORT at 2066.34 | Stop loss: 2076.687067857143 | Take profit: 2035.3218482142859 +2025-03-10 13:18:51,787 - INFO - STOP LOSS hit for short at 2076.687067857143 | PnL: -0.50% | $-1.14 +2025-03-10 13:18:51,912 - INFO - OPENED SHORT at 2071.6 | Stop loss: 2081.973367857143 | Take profit: 2040.5029482142857 +2025-03-10 13:18:51,928 - INFO - CLOSED short at 2073.23 | PnL: -0.08% | $-0.34 +2025-03-10 13:18:51,928 - INFO - OPENED LONG at 2073.23 | Stop loss: 2062.8484821428574 | Take profit: 2104.3515017857144 +2025-03-10 13:18:51,956 - INFO - CLOSED long at 2070.0 | PnL: -0.16% | $-0.48 +2025-03-10 13:18:52,091 - INFO - OPENED SHORT at 2068.79 | Stop loss: 2079.149317857143 | Take profit: 2037.7350982142857 +2025-03-10 13:18:52,245 - INFO - CLOSED short at 2065.7 | PnL: 0.15% | $0.09 +2025-03-10 13:18:52,334 - INFO - OPENED LONG at 2063.97 | Stop loss: 2053.6347821428567 | Take profit: 2094.9526017857143 +2025-03-10 13:18:52,415 - INFO - CLOSED long at 2064.4 | PnL: 0.02% | $-0.15 +2025-03-10 13:18:52,539 - INFO - OPENED SHORT at 2065.31 | Stop loss: 2075.6519178571425 | Take profit: 2034.3072982142855 +2025-03-10 13:18:52,611 - INFO - CLOSED short at 2068.59 | PnL: -0.16% | $-0.48 +2025-03-10 13:18:52,611 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.231682142857 | Take profit: 2099.6419017857143 +2025-03-10 13:18:52,800 - INFO - CLOSED long at 2070.61 | PnL: 0.10% | $-0.00 +2025-03-10 13:18:52,858 - INFO - OPENED SHORT at 2068.67 | Stop loss: 2079.028717857143 | Take profit: 2037.6168982142858 +2025-03-10 13:18:53,167 - INFO - CLOSED short at 2074.0 | PnL: -0.26% | $-0.66 +2025-03-10 13:18:53,167 - INFO - OPENED LONG at 2074.0 | Stop loss: 2063.614632142857 | Take profit: 2105.133051785714 +2025-03-10 13:18:53,203 - INFO - CLOSED long at 2072.09 | PnL: -0.09% | $-0.35 +2025-03-10 13:18:53,325 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.5451321428573 | Take profit: 2098.9415517857146 +2025-03-10 13:18:53,348 - INFO - CLOSED long at 2066.4 | PnL: -0.07% | $-0.32 +2025-03-10 13:18:53,369 - INFO - OPENED LONG at 2066.89 | Stop loss: 2056.540182142857 | Take profit: 2097.9164017857142 +2025-03-10 13:18:53,475 - INFO - CLOSED long at 2070.19 | PnL: 0.16% | $0.11 +2025-03-10 13:18:53,475 - INFO - OPENED SHORT at 2070.19 | Stop loss: 2080.556317857143 | Take profit: 2039.1140982142858 +2025-03-10 13:18:53,501 - INFO - CLOSED short at 2070.1 | PnL: 0.00% | $-0.17 +2025-03-10 13:18:53,540 - INFO - OPENED LONG at 2067.19 | Stop loss: 2056.838682142857 | Take profit: 2098.220901785714 +2025-03-10 13:18:53,588 - INFO - CLOSED long at 2065.5 | PnL: -0.08% | $-0.33 +2025-03-10 13:18:53,588 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.8428678571427 | Take profit: 2034.4944482142857 +2025-03-10 13:18:53,751 - INFO - CLOSED short at 2063.39 | PnL: 0.10% | $0.00 +2025-03-10 13:18:53,751 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.057682142857 | Take profit: 2094.363901785714 +2025-03-10 13:18:53,934 - INFO - CLOSED long at 2066.33 | PnL: 0.14% | $0.08 +2025-03-10 13:18:54,112 - INFO - OPENED LONG at 2060.2 | Stop loss: 2049.883632142857 | Take profit: 2091.126051785714 +2025-03-10 13:18:54,259 - INFO - CLOSED long at 2049.21 | PnL: -0.53% | $-1.15 +2025-03-10 13:18:54,260 - INFO - OPENED SHORT at 2049.21 | Stop loss: 2059.471417857143 | Take profit: 2018.4487982142857 +2025-03-10 13:18:54,515 - INFO - STOP LOSS hit for short at 2059.471417857143 | PnL: -0.50% | $-1.08 +2025-03-10 13:18:54,552 - INFO - OPENED LONG at 2065.1 | Stop loss: 2054.759132142857 | Take profit: 2096.099551785714 +2025-03-10 13:18:54,569 - INFO - CLOSED long at 2062.43 | PnL: -0.13% | $-0.41 +2025-03-10 13:18:54,590 - INFO - OPENED SHORT at 2062.55 | Stop loss: 2072.878117857143 | Take profit: 2031.5886982142858 +2025-03-10 13:18:54,609 - INFO - CLOSED short at 2065.12 | PnL: -0.12% | $-0.40 +2025-03-10 13:18:54,738 - INFO - OPENED LONG at 2061.21 | Stop loss: 2050.888582142857 | Take profit: 2092.151201785714 +2025-03-10 13:18:54,804 - INFO - CLOSED long at 2060.7 | PnL: -0.02% | $-0.22 +2025-03-10 13:18:54,804 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0188678571426 | Take profit: 2029.7664482142854 +2025-03-10 13:18:54,839 - INFO - CLOSED short at 2061.84 | PnL: -0.06% | $-0.27 +2025-03-10 13:18:54,839 - INFO - OPENED LONG at 2061.84 | Stop loss: 2051.515432142857 | Take profit: 2092.790651785714 +2025-03-10 13:18:54,981 - INFO - CLOSED long at 2069.34 | PnL: 0.36% | $0.46 +2025-03-10 13:18:54,983 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.702067857143 | Take profit: 2038.2768482142858 +2025-03-10 13:18:55,338 - INFO - CLOSED short at 2085.56 | PnL: -0.78% | $-1.55 +2025-03-10 13:18:55,338 - INFO - OPENED LONG at 2085.56 | Stop loss: 2075.116832142857 | Take profit: 2116.866451785714 +2025-03-10 13:18:55,429 - INFO - TAKE PROFIT hit for long at 2116.866451785714 | PnL: 1.50% | $2.42 +2025-03-10 13:18:55,507 - INFO - OPENED SHORT at 2133.95 | Stop loss: 2144.6351178571426 | Take profit: 2101.9176982142853 +2025-03-10 13:18:55,729 - INFO - CLOSED short at 2142.68 | PnL: -0.41% | $-0.90 +2025-03-10 13:18:55,776 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.090732142857 | Take profit: 2166.824751785715 +2025-03-10 13:18:55,868 - INFO - STOP LOSS hit for long at 2124.090732142857 | PnL: -0.50% | $-1.06 +2025-03-10 13:18:55,993 - INFO - OPENED LONG at 2121.4 | Stop loss: 2110.7776321428573 | Take profit: 2153.2440517857144 +2025-03-10 13:18:56,116 - INFO - CLOSED long at 2119.07 | PnL: -0.11% | $-0.36 +2025-03-10 13:18:56,217 - INFO - OPENED LONG at 2112.09 | Stop loss: 2101.5141821428574 | Take profit: 2143.7944017857144 +2025-03-10 13:18:56,273 - INFO - CLOSED long at 2113.24 | PnL: 0.05% | $-0.08 +2025-03-10 13:18:56,299 - INFO - OPENED SHORT at 2112.99 | Stop loss: 2123.570317857143 | Take profit: 2081.2720982142855 +2025-03-10 13:18:56,330 - INFO - CLOSED short at 2120.81 | PnL: -0.37% | $-0.81 +2025-03-10 13:18:56,331 - INFO - OPENED LONG at 2120.81 | Stop loss: 2110.190582142857 | Take profit: 2152.645201785714 +2025-03-10 13:18:56,404 - INFO - CLOSED long at 2114.8 | PnL: -0.28% | $-0.66 +2025-03-10 13:18:56,404 - INFO - OPENED SHORT at 2114.8 | Stop loss: 2125.389367857143 | Take profit: 2083.054948214286 +2025-03-10 13:18:56,477 - INFO - CLOSED short at 2108.71 | PnL: 0.29% | $0.32 +2025-03-10 13:18:56,477 - INFO - OPENED LONG at 2108.71 | Stop loss: 2098.1510821428574 | Take profit: 2140.3637017857145 +2025-03-10 13:18:56,596 - INFO - STOP LOSS hit for long at 2098.1510821428574 | PnL: -0.50% | $-1.02 +2025-03-10 13:18:56,915 - INFO - OPENED LONG at 2104.68 | Stop loss: 2094.141232142857 | Take profit: 2136.2732517857144 +2025-03-10 13:18:56,956 - INFO - CLOSED long at 2099.59 | PnL: -0.24% | $-0.58 +2025-03-10 13:18:56,994 - INFO - OPENED SHORT at 2098.39 | Stop loss: 2108.8973178571428 | Take profit: 2066.8910982142856 +2025-03-10 13:18:57,089 - INFO - CLOSED short at 2091.1 | PnL: 0.35% | $0.41 +2025-03-10 13:18:57,089 - INFO - OPENED LONG at 2091.1 | Stop loss: 2080.629132142857 | Take profit: 2122.489551785714 +2025-03-10 13:18:57,256 - INFO - CLOSED long at 2088.44 | PnL: -0.13% | $-0.38 +2025-03-10 13:18:57,288 - INFO - OPENED LONG at 2083.97 | Stop loss: 2073.534782142857 | Take profit: 2115.252601785714 +2025-03-10 13:18:57,417 - INFO - CLOSED long at 2083.41 | PnL: -0.03% | $-0.21 +2025-03-10 13:18:57,417 - INFO - OPENED SHORT at 2083.41 | Stop loss: 2093.8424178571427 | Take profit: 2052.1357982142854 +2025-03-10 13:18:57,435 - INFO - CLOSED short at 2085.09 | PnL: -0.08% | $-0.30 +2025-03-10 13:18:57,452 - INFO - OPENED SHORT at 2083.59 | Stop loss: 2094.023317857143 | Take profit: 2052.3130982142857 +2025-03-10 13:18:57,728 - INFO - CLOSED short at 2087.0 | PnL: -0.16% | $-0.44 +2025-03-10 13:18:57,728 - INFO - OPENED LONG at 2087.0 | Stop loss: 2076.5496321428573 | Take profit: 2118.3280517857143 +2025-03-10 13:18:57,767 - INFO - CLOSED long at 2087.78 | PnL: 0.04% | $-0.10 +2025-03-10 13:18:57,839 - INFO - OPENED SHORT at 2089.2 | Stop loss: 2099.6613678571425 | Take profit: 2057.8389482142857 +2025-03-10 13:18:57,879 - INFO - CLOSED short at 2091.05 | PnL: -0.09% | $-0.31 +2025-03-10 13:18:57,880 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.5793821428574 | Take profit: 2122.4388017857145 +2025-03-10 13:18:57,897 - INFO - CLOSED long at 2091.95 | PnL: 0.04% | $-0.09 +2025-03-10 13:18:57,898 - INFO - OPENED SHORT at 2091.95 | Stop loss: 2102.4251178571426 | Take profit: 2060.5476982142854 +2025-03-10 13:18:57,943 - INFO - CLOSED short at 2097.8 | PnL: -0.28% | $-0.62 +2025-03-10 13:18:58,214 - INFO - OPENED SHORT at 2104.93 | Stop loss: 2115.4700178571425 | Take profit: 2073.3329982142855 +2025-03-10 13:18:58,254 - INFO - CLOSED short at 2103.07 | PnL: 0.09% | $-0.02 +2025-03-10 13:18:58,254 - INFO - OPENED LONG at 2103.07 | Stop loss: 2092.5392821428572 | Take profit: 2134.6391017857145 +2025-03-10 13:18:58,272 - INFO - CLOSED long at 2101.5 | PnL: -0.07% | $-0.29 +2025-03-10 13:18:58,272 - INFO - OPENED SHORT at 2101.5 | Stop loss: 2112.0228678571425 | Take profit: 2069.9544482142855 +2025-03-10 13:18:58,411 - INFO - CLOSED short at 2104.4 | PnL: -0.14% | $-0.39 +2025-03-10 13:18:58,411 - INFO - OPENED LONG at 2104.4 | Stop loss: 2093.8626321428574 | Take profit: 2135.9890517857148 +2025-03-10 13:18:58,567 - INFO - CLOSED long at 2103.41 | PnL: -0.05% | $-0.24 +2025-03-10 13:18:58,567 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.942417857143 | Take profit: 2071.8357982142857 +2025-03-10 13:18:58,592 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.34, Avg Loss=$-0.44 +2025-03-10 13:18:58,593 - INFO - Episode 7: Reward=41.20, Balance=$81.32, Win Rate=23.3%, Trades=73, Episode PnL=$-14.92, Total PnL=$-151.63, Max Drawdown=17.7%, Pred Accuracy=99.6% +2025-03-10 13:18:58,593 - ERROR - Error in episode 7: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:18:58,594 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1831, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:18:58,613 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:18:58,930 - INFO - OPENED SHORT at 2048.13 | Stop loss: 2058.3860178571426 | Take profit: 2017.3849982142858 +2025-03-10 13:18:58,954 - INFO - CLOSED short at 2047.59 | PnL: 0.03% | $-0.15 +2025-03-10 13:18:58,954 - INFO - OPENED LONG at 2047.59 | Stop loss: 2037.336682142857 | Take profit: 2078.326901785714 +2025-03-10 13:18:59,036 - INFO - CLOSED long at 2049.89 | PnL: 0.11% | $0.02 +2025-03-10 13:18:59,101 - INFO - OPENED SHORT at 2051.89 | Stop loss: 2062.1648178571427 | Take profit: 2021.0885982142856 +2025-03-10 13:18:59,135 - INFO - CLOSED short at 2052.3 | PnL: -0.02% | $-0.24 +2025-03-10 13:18:59,135 - INFO - OPENED LONG at 2052.3 | Stop loss: 2042.0231321428573 | Take profit: 2083.1075517857143 +2025-03-10 13:18:59,326 - INFO - CLOSED long at 2059.7 | PnL: 0.36% | $0.52 +2025-03-10 13:18:59,538 - INFO - OPENED SHORT at 2060.0 | Stop loss: 2070.315367857143 | Take profit: 2029.0769482142857 +2025-03-10 13:18:59,638 - INFO - CLOSED short at 2060.31 | PnL: -0.02% | $-0.23 +2025-03-10 13:18:59,755 - INFO - OPENED LONG at 2057.94 | Stop loss: 2047.634932142857 | Take profit: 2088.8321517857144 +2025-03-10 13:18:59,774 - INFO - CLOSED long at 2058.11 | PnL: 0.01% | $-0.18 +2025-03-10 13:18:59,775 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.415917857143 | Take profit: 2027.215298214286 +2025-03-10 13:18:59,872 - INFO - STOP LOSS hit for short at 2068.415917857143 | PnL: -0.50% | $-1.19 +2025-03-10 13:18:59,898 - INFO - OPENED SHORT at 2068.11 | Stop loss: 2078.465917857143 | Take profit: 2037.0652982142858 +2025-03-10 13:18:59,988 - INFO - CLOSED short at 2071.63 | PnL: -0.17% | $-0.53 +2025-03-10 13:19:00,172 - INFO - OPENED SHORT at 2073.73 | Stop loss: 2084.1140178571427 | Take profit: 2042.600998214286 +2025-03-10 13:19:00,191 - INFO - CLOSED short at 2075.1 | PnL: -0.07% | $-0.32 +2025-03-10 13:19:00,214 - INFO - OPENED SHORT at 2072.91 | Stop loss: 2083.289917857143 | Take profit: 2041.7932982142856 +2025-03-10 13:19:00,255 - INFO - CLOSED short at 2071.38 | PnL: 0.07% | $-0.05 +2025-03-10 13:19:00,255 - INFO - OPENED LONG at 2071.38 | Stop loss: 2061.0077321428575 | Take profit: 2102.4737517857143 +2025-03-10 13:19:00,359 - INFO - CLOSED long at 2072.8 | PnL: 0.07% | $-0.06 +2025-03-10 13:19:00,438 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.3754678571427 | Take profit: 2036.9766482142857 +2025-03-10 13:19:00,796 - INFO - CLOSED short at 2066.18 | PnL: 0.09% | $-0.02 +2025-03-10 13:19:00,917 - INFO - OPENED SHORT at 2069.7 | Stop loss: 2080.0638678571427 | Take profit: 2038.6314482142857 +2025-03-10 13:19:00,939 - INFO - CLOSED short at 2070.4 | PnL: -0.03% | $-0.26 +2025-03-10 13:19:00,983 - INFO - OPENED SHORT at 2071.4 | Stop loss: 2081.7723678571433 | Take profit: 2040.305948214286 +2025-03-10 13:19:01,058 - INFO - CLOSED short at 2072.75 | PnL: -0.07% | $-0.32 +2025-03-10 13:19:01,058 - INFO - OPENED LONG at 2072.75 | Stop loss: 2062.370882142857 | Take profit: 2103.8643017857144 +2025-03-10 13:19:01,085 - INFO - CLOSED long at 2073.11 | PnL: 0.02% | $-0.16 +2025-03-10 13:19:01,085 - INFO - OPENED SHORT at 2073.11 | Stop loss: 2083.490917857143 | Take profit: 2041.9902982142858 +2025-03-10 13:19:01,207 - INFO - CLOSED short at 2071.92 | PnL: 0.06% | $-0.08 +2025-03-10 13:19:01,207 - INFO - OPENED LONG at 2071.92 | Stop loss: 2061.545032142857 | Take profit: 2103.0218517857147 +2025-03-10 13:19:01,342 - INFO - CLOSED long at 2068.32 | PnL: -0.17% | $-0.53 +2025-03-10 13:19:01,415 - INFO - OPENED LONG at 2067.46 | Stop loss: 2057.107332142857 | Take profit: 2098.4949517857144 +2025-03-10 13:19:01,440 - INFO - CLOSED long at 2066.8 | PnL: -0.03% | $-0.25 +2025-03-10 13:19:01,440 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.1493678571433 | Take profit: 2035.7749482142858 +2025-03-10 13:19:01,467 - INFO - CLOSED short at 2065.49 | PnL: 0.06% | $-0.07 +2025-03-10 13:19:01,725 - INFO - OPENED LONG at 2070.3 | Stop loss: 2059.933132142857 | Take profit: 2101.3775517857143 +2025-03-10 13:19:01,941 - INFO - CLOSED long at 2067.86 | PnL: -0.12% | $-0.41 +2025-03-10 13:19:01,941 - INFO - OPENED SHORT at 2067.86 | Stop loss: 2078.214667857143 | Take profit: 2036.8190482142859 +2025-03-10 13:19:01,986 - INFO - CLOSED short at 2066.1 | PnL: 0.09% | $-0.03 +2025-03-10 13:19:01,986 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.754132142857 | Take profit: 2097.1145517857144 +2025-03-10 13:19:02,014 - INFO - CLOSED long at 2065.28 | PnL: -0.04% | $-0.26 +2025-03-10 13:19:02,015 - INFO - OPENED SHORT at 2065.28 | Stop loss: 2075.6217678571434 | Take profit: 2034.277748214286 +2025-03-10 13:19:02,036 - INFO - CLOSED short at 2066.39 | PnL: -0.05% | $-0.29 +2025-03-10 13:19:02,145 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.033817857143 | Take profit: 2034.6815982142857 +2025-03-10 13:19:02,197 - INFO - CLOSED short at 2064.99 | PnL: 0.03% | $-0.12 +2025-03-10 13:19:02,197 - INFO - OPENED LONG at 2064.99 | Stop loss: 2054.649682142857 | Take profit: 2095.9879017857143 +2025-03-10 13:19:02,251 - INFO - CLOSED long at 2066.15 | PnL: 0.06% | $-0.08 +2025-03-10 13:19:02,350 - INFO - OPENED SHORT at 2061.78 | Stop loss: 2072.1042678571434 | Take profit: 2030.830248214286 +2025-03-10 13:19:02,430 - INFO - CLOSED short at 2063.59 | PnL: -0.09% | $-0.35 +2025-03-10 13:19:02,573 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.7441821428574 | Take profit: 2097.1044017857143 +2025-03-10 13:19:02,629 - INFO - CLOSED long at 2064.08 | PnL: -0.10% | $-0.37 +2025-03-10 13:19:02,748 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.276632142857 | Take profit: 2092.5470517857143 +2025-03-10 13:19:02,885 - INFO - CLOSED long at 2061.8 | PnL: 0.01% | $-0.17 +2025-03-10 13:19:02,886 - INFO - OPENED SHORT at 2061.8 | Stop loss: 2072.1243678571427 | Take profit: 2030.8499482142859 +2025-03-10 13:19:02,907 - INFO - CLOSED short at 2064.7 | PnL: -0.14% | $-0.45 +2025-03-10 13:19:03,137 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.057682142857 | Take profit: 2094.363901785714 +2025-03-10 13:19:03,386 - INFO - CLOSED long at 2060.7 | PnL: -0.13% | $-0.43 +2025-03-10 13:19:03,409 - INFO - OPENED SHORT at 2061.09 | Stop loss: 2071.410817857143 | Take profit: 2030.1505982142858 +2025-03-10 13:19:03,480 - INFO - CLOSED short at 2059.02 | PnL: 0.10% | $0.00 +2025-03-10 13:19:03,480 - INFO - OPENED LONG at 2059.02 | Stop loss: 2048.7095321428574 | Take profit: 2089.9283517857143 +2025-03-10 13:19:03,537 - INFO - CLOSED long at 2059.96 | PnL: 0.05% | $-0.10 +2025-03-10 13:19:03,876 - INFO - OPENED SHORT at 2061.5 | Stop loss: 2071.8228678571427 | Take profit: 2030.5544482142857 +2025-03-10 13:19:03,939 - INFO - CLOSED short at 2062.69 | PnL: -0.06% | $-0.29 +2025-03-10 13:19:04,103 - INFO - OPENED SHORT at 2064.49 | Stop loss: 2074.8278178571427 | Take profit: 2033.4995982142855 +2025-03-10 13:19:04,375 - INFO - CLOSED short at 2078.01 | PnL: -0.65% | $-1.39 +2025-03-10 13:19:04,416 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.4004178571427 | Take profit: 2043.861798214286 +2025-03-10 13:19:04,505 - INFO - CLOSED short at 2071.04 | PnL: 0.19% | $0.17 +2025-03-10 13:19:04,564 - INFO - OPENED LONG at 2071.6 | Stop loss: 2061.226632142857 | Take profit: 2102.697051785714 +2025-03-10 13:19:04,597 - INFO - CLOSED long at 2073.23 | PnL: 0.08% | $-0.04 +2025-03-10 13:19:04,627 - INFO - OPENED LONG at 2070.0 | Stop loss: 2059.634632142857 | Take profit: 2101.0730517857146 +2025-03-10 13:19:04,917 - INFO - CLOSED long at 2067.33 | PnL: -0.13% | $-0.41 +2025-03-10 13:19:04,918 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.682017857143 | Take profit: 2036.2969982142856 +2025-03-10 13:19:05,036 - INFO - CLOSED short at 2065.66 | PnL: 0.08% | $-0.03 +2025-03-10 13:19:05,036 - INFO - OPENED LONG at 2065.66 | Stop loss: 2055.316332142857 | Take profit: 2096.6679517857137 +2025-03-10 13:19:05,162 - INFO - CLOSED long at 2065.3 | PnL: -0.02% | $-0.21 +2025-03-10 13:19:05,204 - INFO - OPENED LONG at 2064.31 | Stop loss: 2053.973082142857 | Take profit: 2095.2977017857143 +2025-03-10 13:19:05,228 - INFO - CLOSED long at 2065.5 | PnL: 0.06% | $-0.08 +2025-03-10 13:19:05,228 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.8428678571427 | Take profit: 2034.4944482142857 +2025-03-10 13:19:05,253 - INFO - CLOSED short at 2067.53 | PnL: -0.10% | $-0.36 +2025-03-10 13:19:05,254 - INFO - OPENED LONG at 2067.53 | Stop loss: 2057.1769821428575 | Take profit: 2098.566001785715 +2025-03-10 13:19:05,516 - INFO - CLOSED long at 2071.59 | PnL: 0.20% | $0.17 +2025-03-10 13:19:05,564 - INFO - OPENED SHORT at 2071.35 | Stop loss: 2081.7221178571426 | Take profit: 2040.2566982142855 +2025-03-10 13:19:05,586 - INFO - CLOSED short at 2070.9 | PnL: 0.02% | $-0.14 +2025-03-10 13:19:05,652 - INFO - OPENED LONG at 2070.8 | Stop loss: 2060.430632142857 | Take profit: 2101.8850517857145 +2025-03-10 13:19:05,736 - INFO - CLOSED long at 2071.99 | PnL: 0.06% | $-0.08 +2025-03-10 13:19:05,954 - INFO - OPENED SHORT at 2071.61 | Stop loss: 2081.983417857143 | Take profit: 2040.5127982142858 +2025-03-10 13:19:05,983 - INFO - CLOSED short at 2074.37 | PnL: -0.13% | $-0.42 +2025-03-10 13:19:05,983 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.982782142857 | Take profit: 2105.508601785714 +2025-03-10 13:19:06,005 - INFO - CLOSED long at 2075.07 | PnL: 0.03% | $-0.12 +2025-03-10 13:19:06,005 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.460717857143 | Take profit: 2043.920898214286 +2025-03-10 13:19:06,202 - INFO - CLOSED short at 2075.61 | PnL: -0.03% | $-0.22 +2025-03-10 13:19:06,202 - INFO - OPENED LONG at 2075.61 | Stop loss: 2065.216582142857 | Take profit: 2106.7672017857144 +2025-03-10 13:19:06,275 - INFO - CLOSED long at 2072.09 | PnL: -0.17% | $-0.48 +2025-03-10 13:19:06,275 - INFO - OPENED SHORT at 2072.09 | Stop loss: 2082.465817857143 | Take profit: 2040.985598214286 +2025-03-10 13:19:06,340 - INFO - CLOSED short at 2067.7 | PnL: 0.21% | $0.20 +2025-03-10 13:19:06,340 - INFO - OPENED LONG at 2067.7 | Stop loss: 2057.3461321428567 | Take profit: 2098.738551785714 +2025-03-10 13:19:06,367 - INFO - CLOSED long at 2067.0 | PnL: -0.03% | $-0.24 +2025-03-10 13:19:06,367 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.350367857143 | Take profit: 2035.9719482142857 +2025-03-10 13:19:06,427 - INFO - CLOSED short at 2066.4 | PnL: 0.03% | $-0.13 +2025-03-10 13:19:06,428 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.0526321428574 | Take profit: 2097.4190517857146 +2025-03-10 13:19:06,503 - INFO - CLOSED long at 2065.45 | PnL: -0.05% | $-0.26 +2025-03-10 13:19:06,503 - INFO - OPENED SHORT at 2065.45 | Stop loss: 2075.792617857143 | Take profit: 2034.4451982142855 +2025-03-10 13:19:06,526 - INFO - CLOSED short at 2068.1 | PnL: -0.13% | $-0.40 +2025-03-10 13:19:06,528 - INFO - OPENED LONG at 2068.1 | Stop loss: 2057.744132142857 | Take profit: 2099.1445517857146 +2025-03-10 13:19:06,582 - INFO - CLOSED long at 2069.0 | PnL: 0.04% | $-0.10 +2025-03-10 13:19:06,700 - INFO - OPENED SHORT at 2067.19 | Stop loss: 2077.541317857143 | Take profit: 2036.1590982142857 +2025-03-10 13:19:06,744 - INFO - CLOSED short at 2065.7 | PnL: 0.07% | $-0.05 +2025-03-10 13:19:06,744 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.356132142857 | Take profit: 2096.708551785714 +2025-03-10 13:19:06,868 - INFO - CLOSED long at 2063.98 | PnL: -0.08% | $-0.32 +2025-03-10 13:19:06,868 - INFO - OPENED SHORT at 2063.98 | Stop loss: 2074.3152678571428 | Take profit: 2032.9972482142857 +2025-03-10 13:19:07,000 - INFO - CLOSED short at 2066.33 | PnL: -0.11% | $-0.37 +2025-03-10 13:19:07,000 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.982982142857 | Take profit: 2097.348001785714 +2025-03-10 13:19:07,215 - INFO - STOP LOSS hit for long at 2055.982982142857 | PnL: -0.50% | $-1.04 +2025-03-10 13:19:07,251 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.2371321428573 | Take profit: 2080.2655517857143 +2025-03-10 13:19:07,300 - INFO - CLOSED long at 2058.3 | PnL: 0.43% | $0.56 +2025-03-10 13:19:07,361 - INFO - OPENED SHORT at 2057.11 | Stop loss: 2067.410917857143 | Take profit: 2026.2302982142858 +2025-03-10 13:19:07,459 - INFO - CLOSED short at 2063.9 | PnL: -0.33% | $-0.74 +2025-03-10 13:19:07,529 - INFO - OPENED SHORT at 2062.55 | Stop loss: 2072.878117857143 | Take profit: 2031.5886982142858 +2025-03-10 13:19:07,550 - INFO - CLOSED short at 2065.12 | PnL: -0.12% | $-0.38 +2025-03-10 13:19:07,550 - INFO - OPENED LONG at 2065.12 | Stop loss: 2054.779032142857 | Take profit: 2096.119851785714 +2025-03-10 13:19:07,608 - INFO - CLOSED long at 2066.59 | PnL: 0.07% | $-0.05 +2025-03-10 13:19:07,713 - INFO - OPENED LONG at 2061.84 | Stop loss: 2051.515432142857 | Take profit: 2092.790651785714 +2025-03-10 13:19:07,779 - INFO - CLOSED long at 2065.72 | PnL: 0.19% | $0.15 +2025-03-10 13:19:07,811 - INFO - OPENED LONG at 2070.31 | Stop loss: 2059.943082142857 | Take profit: 2101.3877017857144 +2025-03-10 13:19:07,955 - INFO - CLOSED long at 2074.05 | PnL: 0.18% | $0.14 +2025-03-10 13:19:07,998 - INFO - OPENED SHORT at 2071.89 | Stop loss: 2082.264817857143 | Take profit: 2040.7885982142855 +2025-03-10 13:19:08,095 - INFO - STOP LOSS hit for short at 2082.264817857143 | PnL: -0.50% | $-1.02 +2025-03-10 13:19:08,148 - INFO - OPENED LONG at 2103.02 | Stop loss: 2092.489532142857 | Take profit: 2134.588351785714 +2025-03-10 13:19:08,208 - INFO - TAKE PROFIT hit for long at 2134.588351785714 | PnL: 1.50% | $2.36 +2025-03-10 13:19:08,293 - INFO - OPENED SHORT at 2137.59 | Stop loss: 2148.293317857143 | Take profit: 2105.5030982142857 +2025-03-10 13:19:08,413 - INFO - CLOSED short at 2134.78 | PnL: 0.13% | $0.05 +2025-03-10 13:19:08,454 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.6481321428573 | Take profit: 2159.2325517857143 +2025-03-10 13:19:08,511 - INFO - CLOSED long at 2120.15 | PnL: -0.34% | $-0.76 +2025-03-10 13:19:08,511 - INFO - OPENED SHORT at 2120.15 | Stop loss: 2130.766117857143 | Take profit: 2088.324698214286 +2025-03-10 13:19:08,761 - INFO - CLOSED short at 2110.6 | PnL: 0.45% | $0.60 +2025-03-10 13:19:09,204 - INFO - OPENED LONG at 2102.29 | Stop loss: 2091.763182142857 | Take profit: 2133.8474017857143 +2025-03-10 13:19:09,244 - INFO - CLOSED long at 2098.9 | PnL: -0.16% | $-0.45 +2025-03-10 13:19:09,244 - INFO - OPENED SHORT at 2098.9 | Stop loss: 2109.409867857143 | Take profit: 2067.393448214286 +2025-03-10 13:19:09,286 - INFO - CLOSED short at 2104.83 | PnL: -0.28% | $-0.66 +2025-03-10 13:19:09,325 - INFO - OPENED LONG at 2100.74 | Stop loss: 2090.2209321428572 | Take profit: 2132.2741517857144 +2025-03-10 13:19:09,349 - INFO - CLOSED long at 2103.86 | PnL: 0.15% | $0.08 +2025-03-10 13:19:09,428 - INFO - OPENED SHORT at 2101.51 | Stop loss: 2112.0329178571433 | Take profit: 2069.964298214286 +2025-03-10 13:19:09,513 - INFO - CLOSED short at 2098.39 | PnL: 0.15% | $0.08 +2025-03-10 13:19:09,513 - INFO - OPENED LONG at 2098.39 | Stop loss: 2087.882682142857 | Take profit: 2129.8889017857146 +2025-03-10 13:19:09,561 - INFO - CLOSED long at 2093.46 | PnL: -0.23% | $-0.57 +2025-03-10 13:19:09,584 - INFO - OPENED LONG at 2093.33 | Stop loss: 2082.8479821428573 | Take profit: 2124.7530017857143 +2025-03-10 13:19:09,601 - INFO - CLOSED long at 2092.46 | PnL: -0.04% | $-0.24 +2025-03-10 13:19:09,624 - INFO - OPENED LONG at 2091.1 | Stop loss: 2080.629132142857 | Take profit: 2122.489551785714 +2025-03-10 13:19:09,884 - INFO - CLOSED long at 2081.49 | PnL: -0.46% | $-0.95 +2025-03-10 13:19:09,974 - INFO - OPENED SHORT at 2085.09 | Stop loss: 2095.5308178571427 | Take profit: 2053.790598214286 +2025-03-10 13:19:09,993 - INFO - CLOSED short at 2083.59 | PnL: 0.07% | $-0.05 +2025-03-10 13:19:10,092 - INFO - OPENED SHORT at 2085.85 | Stop loss: 2096.294617857143 | Take profit: 2054.5391982142855 +2025-03-10 13:19:10,236 - INFO - CLOSED short at 2087.0 | PnL: -0.06% | $-0.26 +2025-03-10 13:19:10,236 - INFO - OPENED LONG at 2087.0 | Stop loss: 2076.5496321428573 | Take profit: 2118.3280517857143 +2025-03-10 13:19:10,269 - INFO - CLOSED long at 2087.47 | PnL: 0.02% | $-0.13 +2025-03-10 13:19:10,350 - INFO - OPENED SHORT at 2089.79 | Stop loss: 2100.2543178571427 | Take profit: 2058.4200982142856 +2025-03-10 13:19:10,369 - INFO - CLOSED short at 2085.67 | PnL: 0.20% | $0.16 +2025-03-10 13:19:10,369 - INFO - OPENED LONG at 2085.67 | Stop loss: 2075.226282142857 | Take profit: 2116.9781017857144 +2025-03-10 13:19:10,418 - INFO - CLOSED long at 2091.05 | PnL: 0.26% | $0.26 +2025-03-10 13:19:10,419 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.520617857143 | Take profit: 2059.661198214286 +2025-03-10 13:19:10,461 - INFO - CLOSED short at 2091.95 | PnL: -0.04% | $-0.24 +2025-03-10 13:19:10,461 - INFO - OPENED LONG at 2091.95 | Stop loss: 2081.474882142857 | Take profit: 2123.352301785714 +2025-03-10 13:19:10,537 - INFO - CLOSED long at 2099.99 | PnL: 0.38% | $0.48 +2025-03-10 13:19:10,537 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.505317857143 | Take profit: 2068.4670982142857 +2025-03-10 13:19:10,763 - INFO - CLOSED short at 2103.48 | PnL: -0.17% | $-0.45 +2025-03-10 13:19:10,763 - INFO - OPENED LONG at 2103.48 | Stop loss: 2092.947232142857 | Take profit: 2135.055251785714 +2025-03-10 13:19:10,932 - INFO - CLOSED long at 2103.52 | PnL: 0.00% | $-0.16 +2025-03-10 13:19:10,932 - INFO - OPENED SHORT at 2103.52 | Stop loss: 2114.052967857143 | Take profit: 2071.9441482142856 +2025-03-10 13:19:10,966 - INFO - CLOSED short at 2104.4 | PnL: -0.04% | $-0.24 +2025-03-10 13:19:11,002 - INFO - OPENED SHORT at 2105.21 | Stop loss: 2115.7514178571428 | Take profit: 2073.608798214286 +2025-03-10 13:19:11,146 - INFO - CLOSED short at 2103.41 | PnL: 0.09% | $-0.02 +2025-03-10 13:19:11,146 - INFO - OPENED LONG at 2103.41 | Stop loss: 2092.877582142857 | Take profit: 2134.984201785714 +2025-03-10 13:19:11,169 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.35, Avg Loss=$-0.32 +2025-03-10 13:19:11,170 - INFO - Episode 8: Reward=25.60, Balance=$83.76, Win Rate=19.5%, Trades=87, Episode PnL=$-12.26, Total PnL=$-167.87, Max Drawdown=16.3%, Pred Accuracy=99.6% +2025-03-10 13:19:11,170 - ERROR - Error in episode 8: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:19:11,171 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1831, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:19:11,194 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:19:11,564 - INFO - OPENED SHORT at 2049.89 | Stop loss: 2060.1548178571425 | Take profit: 2019.1185982142856 +2025-03-10 13:19:11,657 - INFO - CLOSED short at 2055.69 | PnL: -0.28% | $-0.76 +2025-03-10 13:19:11,724 - INFO - OPENED LONG at 2058.39 | Stop loss: 2048.0826821428573 | Take profit: 2089.288901785714 +2025-03-10 13:19:11,855 - INFO - CLOSED long at 2063.29 | PnL: 0.24% | $0.27 +2025-03-10 13:19:11,855 - INFO - OPENED SHORT at 2063.29 | Stop loss: 2073.621817857143 | Take profit: 2032.3175982142857 +2025-03-10 13:19:11,895 - INFO - CLOSED short at 2064.61 | PnL: -0.06% | $-0.32 +2025-03-10 13:19:11,938 - INFO - OPENED LONG at 2061.61 | Stop loss: 2051.2865821428572 | Take profit: 2092.5572017857144 +2025-03-10 13:19:12,007 - INFO - CLOSED long at 2060.99 | PnL: -0.03% | $-0.26 +2025-03-10 13:19:12,049 - INFO - OPENED LONG at 2060.0 | Stop loss: 2049.684632142857 | Take profit: 2090.923051785714 +2025-03-10 13:19:12,334 - INFO - CLOSED long at 2061.18 | PnL: 0.06% | $-0.08 +2025-03-10 13:19:12,540 - INFO - OPENED SHORT at 2068.65 | Stop loss: 2079.008617857143 | Take profit: 2037.5971982142858 +2025-03-10 13:19:12,606 - INFO - CLOSED short at 2067.9 | PnL: 0.04% | $-0.13 +2025-03-10 13:19:12,606 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.5451321428573 | Take profit: 2098.9415517857146 +2025-03-10 13:19:12,727 - INFO - CLOSED long at 2073.73 | PnL: 0.28% | $0.36 +2025-03-10 13:19:12,727 - INFO - OPENED SHORT at 2073.73 | Stop loss: 2084.1140178571427 | Take profit: 2042.600998214286 +2025-03-10 13:19:12,790 - INFO - CLOSED short at 2072.33 | PnL: 0.07% | $-0.06 +2025-03-10 13:19:12,875 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.5301321428574 | Take profit: 2101.9865517857143 +2025-03-10 13:19:12,965 - INFO - CLOSED long at 2068.02 | PnL: -0.14% | $-0.47 +2025-03-10 13:19:12,965 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.3754678571427 | Take profit: 2036.9766482142857 +2025-03-10 13:19:13,219 - INFO - CLOSED short at 2069.01 | PnL: -0.05% | $-0.29 +2025-03-10 13:19:13,219 - INFO - OPENED LONG at 2069.01 | Stop loss: 2058.6495821428575 | Take profit: 2100.0682017857143 +2025-03-10 13:19:13,356 - INFO - CLOSED long at 2066.18 | PnL: -0.14% | $-0.46 +2025-03-10 13:19:13,356 - INFO - OPENED SHORT at 2066.18 | Stop loss: 2076.5262678571426 | Take profit: 2035.1642482142856 +2025-03-10 13:19:13,464 - INFO - CLOSED short at 2068.51 | PnL: -0.11% | $-0.41 +2025-03-10 13:19:13,464 - INFO - OPENED LONG at 2068.51 | Stop loss: 2058.152082142857 | Take profit: 2099.5607017857146 +2025-03-10 13:19:13,611 - INFO - CLOSED long at 2071.39 | PnL: 0.14% | $0.08 +2025-03-10 13:19:13,611 - INFO - OPENED SHORT at 2071.39 | Stop loss: 2081.7623178571425 | Take profit: 2040.2960982142856 +2025-03-10 13:19:13,654 - INFO - CLOSED short at 2072.75 | PnL: -0.07% | $-0.32 +2025-03-10 13:19:13,719 - INFO - OPENED SHORT at 2072.15 | Stop loss: 2082.5261178571427 | Take profit: 2041.0446982142857 +2025-03-10 13:19:13,816 - INFO - CLOSED short at 2071.92 | PnL: 0.01% | $-0.17 +2025-03-10 13:19:13,816 - INFO - OPENED LONG at 2071.92 | Stop loss: 2061.545032142857 | Take profit: 2103.0218517857147 +2025-03-10 13:19:13,976 - INFO - CLOSED long at 2067.0 | PnL: -0.24% | $-0.65 +2025-03-10 13:19:13,976 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.350367857143 | Take profit: 2035.9719482142857 +2025-03-10 13:19:14,166 - INFO - CLOSED short at 2068.8 | PnL: -0.09% | $-0.36 +2025-03-10 13:19:14,205 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.702067857143 | Take profit: 2038.2768482142858 +2025-03-10 13:19:14,359 - INFO - CLOSED short at 2070.7 | PnL: -0.07% | $-0.32 +2025-03-10 13:19:14,381 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.032632142857 | Take profit: 2101.4790517857145 +2025-03-10 13:19:14,468 - INFO - CLOSED long at 2067.84 | PnL: -0.12% | $-0.42 +2025-03-10 13:19:14,758 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.3461821428573 | Take profit: 2096.6984017857144 +2025-03-10 13:19:14,816 - INFO - CLOSED long at 2065.83 | PnL: 0.01% | $-0.18 +2025-03-10 13:19:14,886 - INFO - OPENED SHORT at 2062.65 | Stop loss: 2072.978617857143 | Take profit: 2031.6871982142857 +2025-03-10 13:19:14,911 - INFO - CLOSED short at 2061.78 | PnL: 0.04% | $-0.11 +2025-03-10 13:19:15,001 - INFO - OPENED SHORT at 2063.59 | Stop loss: 2073.923317857143 | Take profit: 2032.6130982142859 +2025-03-10 13:19:15,253 - INFO - CLOSED short at 2063.5 | PnL: 0.00% | $-0.18 +2025-03-10 13:19:15,253 - INFO - OPENED LONG at 2063.5 | Stop loss: 2053.167132142857 | Take profit: 2094.4755517857143 +2025-03-10 13:19:15,491 - INFO - CLOSED long at 2062.61 | PnL: -0.04% | $-0.27 +2025-03-10 13:19:15,491 - INFO - OPENED SHORT at 2062.61 | Stop loss: 2072.9384178571427 | Take profit: 2031.6477982142858 +2025-03-10 13:19:15,537 - INFO - CLOSED short at 2060.3 | PnL: 0.11% | $0.02 +2025-03-10 13:19:15,593 - INFO - OPENED SHORT at 2064.1 | Stop loss: 2074.4358678571425 | Take profit: 2033.1154482142856 +2025-03-10 13:19:15,616 - INFO - CLOSED short at 2065.36 | PnL: -0.06% | $-0.30 +2025-03-10 13:19:15,616 - INFO - OPENED LONG at 2065.36 | Stop loss: 2055.0178321428575 | Take profit: 2096.3634517857145 +2025-03-10 13:19:15,636 - INFO - CLOSED long at 2064.33 | PnL: -0.05% | $-0.28 +2025-03-10 13:19:15,636 - INFO - OPENED SHORT at 2064.33 | Stop loss: 2074.6670178571426 | Take profit: 2033.3419982142857 +2025-03-10 13:19:15,718 - INFO - CLOSED short at 2063.53 | PnL: 0.04% | $-0.11 +2025-03-10 13:19:15,753 - INFO - OPENED LONG at 2063.0 | Stop loss: 2052.669632142857 | Take profit: 2093.968051785714 +2025-03-10 13:19:15,784 - INFO - CLOSED long at 2062.6 | PnL: -0.02% | $-0.22 +2025-03-10 13:19:15,784 - INFO - OPENED SHORT at 2062.6 | Stop loss: 2072.928367857143 | Take profit: 2031.6379482142856 +2025-03-10 13:19:16,008 - INFO - CLOSED short at 2059.96 | PnL: 0.13% | $0.05 +2025-03-10 13:19:16,084 - INFO - OPENED LONG at 2056.28 | Stop loss: 2045.9832321428573 | Take profit: 2087.1472517857146 +2025-03-10 13:19:16,157 - INFO - CLOSED long at 2054.83 | PnL: -0.07% | $-0.32 +2025-03-10 13:19:16,244 - INFO - OPENED LONG at 2059.8 | Stop loss: 2049.4856321428574 | Take profit: 2090.7200517857145 +2025-03-10 13:19:16,300 - INFO - CLOSED long at 2061.5 | PnL: 0.08% | $-0.03 +2025-03-10 13:19:16,300 - INFO - OPENED SHORT at 2061.5 | Stop loss: 2071.8228678571427 | Take profit: 2030.5544482142857 +2025-03-10 13:19:16,325 - INFO - CLOSED short at 2061.6 | PnL: -0.00% | $-0.19 +2025-03-10 13:19:16,325 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.276632142857 | Take profit: 2092.5470517857143 +2025-03-10 13:19:16,391 - INFO - CLOSED long at 2063.4 | PnL: 0.09% | $-0.02 +2025-03-10 13:19:16,415 - INFO - OPENED SHORT at 2066.36 | Stop loss: 2076.707167857143 | Take profit: 2035.341548214286 +2025-03-10 13:19:16,476 - INFO - CLOSED short at 2064.49 | PnL: 0.09% | $-0.02 +2025-03-10 13:19:16,476 - INFO - OPENED LONG at 2064.49 | Stop loss: 2054.152182142857 | Take profit: 2095.480401785714 +2025-03-10 13:19:16,683 - INFO - CLOSED long at 2069.79 | PnL: 0.26% | $0.29 +2025-03-10 13:19:16,691 - INFO - OPENED SHORT at 2069.79 | Stop loss: 2080.154317857143 | Take profit: 2038.7200982142858 +2025-03-10 13:19:16,711 - INFO - CLOSED short at 2072.0 | PnL: -0.11% | $-0.38 +2025-03-10 13:19:16,711 - INFO - OPENED LONG at 2072.0 | Stop loss: 2061.624632142857 | Take profit: 2103.1030517857143 +2025-03-10 13:19:16,791 - INFO - CLOSED long at 2072.6 | PnL: 0.03% | $-0.13 +2025-03-10 13:19:16,884 - INFO - OPENED LONG at 2070.0 | Stop loss: 2059.634632142857 | Take profit: 2101.0730517857146 +2025-03-10 13:19:16,905 - INFO - CLOSED long at 2068.15 | PnL: -0.09% | $-0.35 +2025-03-10 13:19:16,906 - INFO - OPENED SHORT at 2068.15 | Stop loss: 2078.5061178571427 | Take profit: 2037.1046982142857 +2025-03-10 13:19:16,925 - INFO - CLOSED short at 2068.39 | PnL: -0.01% | $-0.20 +2025-03-10 13:19:17,546 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.231682142857 | Take profit: 2099.6419017857143 +2025-03-10 13:19:17,647 - INFO - CLOSED long at 2069.69 | PnL: 0.05% | $-0.09 +2025-03-10 13:19:17,689 - INFO - OPENED SHORT at 2070.8 | Stop loss: 2081.1693678571432 | Take profit: 2039.714948214286 +2025-03-10 13:19:17,731 - INFO - CLOSED short at 2070.61 | PnL: 0.01% | $-0.17 +2025-03-10 13:19:17,801 - INFO - OPENED LONG at 2068.19 | Stop loss: 2057.8336821428575 | Take profit: 2099.2359017857148 +2025-03-10 13:19:17,942 - INFO - CLOSED long at 2074.37 | PnL: 0.30% | $0.36 +2025-03-10 13:19:18,121 - INFO - OPENED SHORT at 2075.61 | Stop loss: 2086.0034178571427 | Take profit: 2044.4527982142858 +2025-03-10 13:19:18,453 - INFO - CLOSED short at 2065.45 | PnL: 0.49% | $0.71 +2025-03-10 13:19:18,505 - INFO - OPENED SHORT at 2069.0 | Stop loss: 2079.360367857143 | Take profit: 2037.9419482142857 +2025-03-10 13:19:18,595 - INFO - CLOSED short at 2067.19 | PnL: 0.09% | $-0.02 +2025-03-10 13:19:18,596 - INFO - OPENED LONG at 2067.19 | Stop loss: 2056.838682142857 | Take profit: 2098.220901785714 +2025-03-10 13:19:18,835 - INFO - CLOSED long at 2064.11 | PnL: -0.15% | $-0.46 +2025-03-10 13:19:19,001 - INFO - OPENED SHORT at 2058.65 | Stop loss: 2068.958617857143 | Take profit: 2027.7471982142856 +2025-03-10 13:19:19,028 - INFO - CLOSED short at 2056.77 | PnL: 0.09% | $-0.02 +2025-03-10 13:19:19,046 - INFO - OPENED SHORT at 2053.01 | Stop loss: 2063.290417857143 | Take profit: 2022.191798214286 +2025-03-10 13:19:19,207 - INFO - CLOSED short at 2062.83 | PnL: -0.48% | $-1.06 +2025-03-10 13:19:19,283 - INFO - OPENED SHORT at 2062.55 | Stop loss: 2072.878117857143 | Take profit: 2031.5886982142858 +2025-03-10 13:19:19,307 - INFO - CLOSED short at 2065.12 | PnL: -0.12% | $-0.41 +2025-03-10 13:19:19,638 - INFO - OPENED LONG at 2070.41 | Stop loss: 2060.042582142857 | Take profit: 2101.489201785714 +2025-03-10 13:19:19,679 - INFO - CLOSED long at 2074.05 | PnL: 0.18% | $0.14 +2025-03-10 13:19:19,680 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4356178571434 | Take profit: 2042.916198214286 +2025-03-10 13:19:19,834 - INFO - STOP LOSS hit for short at 2084.4356178571434 | PnL: -0.50% | $-1.09 +2025-03-10 13:19:19,891 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.031132142857 | Take profit: 2162.683551785714 +2025-03-10 13:19:19,970 - INFO - CLOSED long at 2137.59 | PnL: 0.32% | $0.40 +2025-03-10 13:19:20,012 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.021867857143 | Take profit: 2109.157448214286 +2025-03-10 13:19:20,163 - INFO - CLOSED short at 2120.15 | PnL: 0.99% | $1.60 +2025-03-10 13:19:20,164 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.5338821428572 | Take profit: 2151.9753017857147 +2025-03-10 13:19:20,243 - INFO - CLOSED long at 2118.52 | PnL: -0.08% | $-0.32 +2025-03-10 13:19:20,243 - INFO - OPENED SHORT at 2118.52 | Stop loss: 2129.1279678571427 | Take profit: 2086.7191482142857 +2025-03-10 13:19:20,551 - INFO - CLOSED short at 2120.81 | PnL: -0.11% | $-0.38 +2025-03-10 13:19:20,553 - INFO - OPENED LONG at 2120.81 | Stop loss: 2110.190582142857 | Take profit: 2152.645201785714 +2025-03-10 13:19:20,575 - INFO - CLOSED long at 2116.48 | PnL: -0.20% | $-0.55 +2025-03-10 13:19:20,575 - INFO - OPENED SHORT at 2116.48 | Stop loss: 2127.077767857143 | Take profit: 2084.709748214286 +2025-03-10 13:19:20,593 - INFO - CLOSED short at 2114.8 | PnL: 0.08% | $-0.04 +2025-03-10 13:19:20,593 - INFO - OPENED LONG at 2114.8 | Stop loss: 2104.2106321428573 | Take profit: 2146.545051785715 +2025-03-10 13:19:20,693 - INFO - CLOSED long at 2108.06 | PnL: -0.32% | $-0.76 +2025-03-10 13:19:20,693 - INFO - OPENED SHORT at 2108.06 | Stop loss: 2118.615667857143 | Take profit: 2076.4160482142856 +2025-03-10 13:19:20,717 - INFO - CLOSED short at 2103.33 | PnL: 0.22% | $0.22 +2025-03-10 13:19:20,762 - INFO - OPENED SHORT at 2090.0 | Stop loss: 2100.465367857143 | Take profit: 2058.6269482142857 +2025-03-10 13:19:20,838 - INFO - STOP LOSS hit for short at 2100.465367857143 | PnL: -0.50% | $-1.08 +2025-03-10 13:19:20,863 - INFO - OPENED LONG at 2102.29 | Stop loss: 2091.763182142857 | Take profit: 2133.8474017857143 +2025-03-10 13:19:20,985 - INFO - CLOSED long at 2100.74 | PnL: -0.07% | $-0.31 +2025-03-10 13:19:20,985 - INFO - OPENED SHORT at 2100.74 | Stop loss: 2111.259067857143 | Take profit: 2069.205848214285 +2025-03-10 13:19:21,028 - INFO - CLOSED short at 2104.68 | PnL: -0.19% | $-0.51 +2025-03-10 13:19:21,028 - INFO - OPENED LONG at 2104.68 | Stop loss: 2094.141232142857 | Take profit: 2136.2732517857144 +2025-03-10 13:19:21,070 - INFO - CLOSED long at 2099.59 | PnL: -0.24% | $-0.60 +2025-03-10 13:19:21,070 - INFO - OPENED SHORT at 2099.59 | Stop loss: 2110.1033178571433 | Take profit: 2068.073098214286 +2025-03-10 13:19:21,322 - INFO - CLOSED short at 2088.35 | PnL: 0.54% | $0.76 +2025-03-10 13:19:21,341 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.8482321428573 | Take profit: 2114.552251785715 +2025-03-10 13:19:21,367 - INFO - CLOSED long at 2088.44 | PnL: 0.25% | $0.26 +2025-03-10 13:19:21,367 - INFO - OPENED SHORT at 2088.44 | Stop loss: 2098.8975678571433 | Take profit: 2057.0903482142858 +2025-03-10 13:19:21,436 - INFO - CLOSED short at 2082.44 | PnL: 0.29% | $0.33 +2025-03-10 13:19:21,436 - INFO - OPENED LONG at 2082.44 | Stop loss: 2072.012432142857 | Take profit: 2113.6996517857147 +2025-03-10 13:19:21,755 - INFO - CLOSED long at 2088.1 | PnL: 0.27% | $0.30 +2025-03-10 13:19:21,755 - INFO - OPENED SHORT at 2088.1 | Stop loss: 2098.555867857143 | Take profit: 2056.7554482142855 +2025-03-10 13:19:21,838 - INFO - CLOSED short at 2087.47 | PnL: 0.03% | $-0.12 +2025-03-10 13:19:21,838 - INFO - OPENED LONG at 2087.47 | Stop loss: 2077.017282142857 | Take profit: 2118.805101785714 +2025-03-10 13:19:21,883 - INFO - CLOSED long at 2086.81 | PnL: -0.03% | $-0.23 +2025-03-10 13:19:22,185 - INFO - OPENED SHORT at 2098.49 | Stop loss: 2108.9978178571428 | Take profit: 2066.9895982142857 +2025-03-10 13:19:22,217 - INFO - CLOSED short at 2099.89 | PnL: -0.07% | $-0.30 +2025-03-10 13:19:22,217 - INFO - OPENED LONG at 2099.89 | Stop loss: 2089.375182142857 | Take profit: 2131.411401785714 +2025-03-10 13:19:22,272 - INFO - CLOSED long at 2099.73 | PnL: -0.01% | $-0.19 +2025-03-10 13:19:22,490 - INFO - OPENED LONG at 2103.52 | Stop loss: 2092.987032142857 | Take profit: 2135.0958517857143 +2025-03-10 13:19:22,511 - INFO - CLOSED long at 2104.4 | PnL: 0.04% | $-0.10 +2025-03-10 13:19:22,570 - INFO - OPENED LONG at 2103.9 | Stop loss: 2093.365132142857 | Take profit: 2135.4815517857146 +2025-03-10 13:19:22,609 - INFO - CLOSED long at 2100.0 | PnL: -0.19% | $-0.50 +2025-03-10 13:19:22,609 - INFO - OPENED SHORT at 2100.0 | Stop loss: 2110.5153678571432 | Take profit: 2068.4769482142856 +2025-03-10 13:19:22,719 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.38, Avg Loss=$-0.32 +2025-03-10 13:19:22,727 - INFO - Episode 9: Reward=42.62, Balance=$88.06, Win Rate=22.2%, Trades=72, Episode PnL=$-7.86, Total PnL=$-179.81, Max Drawdown=11.4%, Pred Accuracy=99.8% +2025-03-10 13:19:22,727 - ERROR - Error in episode 9: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:19:22,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1831, in train_agent + if episode_reward > best_reward: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:19:22,747 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:19:23,314 - INFO - OPENED SHORT at 2061.49 | Stop loss: 2071.812817857143 | Take profit: 2030.5445982142855 +2025-03-10 13:19:23,333 - INFO - CLOSED short at 2063.29 | PnL: -0.09% | $-0.37 +2025-03-10 13:19:23,334 - INFO - OPENED LONG at 2063.29 | Stop loss: 2052.9581821428574 | Take profit: 2094.2624017857142 +2025-03-10 13:19:23,370 - INFO - CLOSED long at 2063.59 | PnL: 0.01% | $-0.17 +2025-03-10 13:19:23,452 - INFO - OPENED SHORT at 2060.99 | Stop loss: 2071.3103178571428 | Take profit: 2030.0520982142855 +2025-03-10 13:19:23,527 - INFO - CLOSED short at 2062.89 | PnL: -0.09% | $-0.38 +2025-03-10 13:19:23,527 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560182142857 | Take profit: 2093.8564017857143 +2025-03-10 13:19:23,637 - INFO - CLOSED long at 2057.89 | PnL: -0.24% | $-0.67 +2025-03-10 13:19:23,699 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.8040821428572 | Take profit: 2089.0047017857146 +2025-03-10 13:19:23,734 - INFO - CLOSED long at 2061.18 | PnL: 0.15% | $0.10 +2025-03-10 13:19:23,734 - INFO - OPENED SHORT at 2061.18 | Stop loss: 2071.501267857143 | Take profit: 2030.2392482142857 +2025-03-10 13:19:23,811 - INFO - CLOSED short at 2068.11 | PnL: -0.34% | $-0.85 +2025-03-10 13:19:23,884 - INFO - OPENED LONG at 2070.99 | Stop loss: 2060.619682142857 | Take profit: 2102.077901785714 +2025-03-10 13:19:24,059 - INFO - CLOSED long at 2070.26 | PnL: -0.04% | $-0.26 +2025-03-10 13:19:24,246 - INFO - OPENED SHORT at 2069.37 | Stop loss: 2079.7322178571426 | Take profit: 2038.3063982142858 +2025-03-10 13:19:24,532 - INFO - CLOSED short at 2068.9 | PnL: 0.02% | $-0.15 +2025-03-10 13:19:24,532 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.540132142857 | Take profit: 2099.9565517857145 +2025-03-10 13:19:24,752 - INFO - CLOSED long at 2065.99 | PnL: -0.14% | $-0.46 +2025-03-10 13:19:24,928 - INFO - OPENED SHORT at 2068.76 | Stop loss: 2079.119167857143 | Take profit: 2037.705548214286 +2025-03-10 13:19:24,983 - INFO - CLOSED short at 2068.9 | PnL: -0.01% | $-0.21 +2025-03-10 13:19:24,983 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.540132142857 | Take profit: 2099.9565517857145 +2025-03-10 13:19:25,272 - INFO - CLOSED long at 2072.7 | PnL: 0.18% | $0.16 +2025-03-10 13:19:25,272 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.0788678571425 | Take profit: 2041.5864482142856 +2025-03-10 13:19:25,521 - INFO - CLOSED short at 2068.32 | PnL: 0.21% | $0.21 +2025-03-10 13:19:25,674 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.244817857143 | Take profit: 2036.8485982142856 +2025-03-10 13:19:25,693 - INFO - CLOSED short at 2068.58 | PnL: -0.03% | $-0.26 +2025-03-10 13:19:25,736 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.9779321428573 | Take profit: 2100.4031517857143 +2025-03-10 13:19:25,968 - INFO - CLOSED long at 2068.5 | PnL: -0.04% | $-0.27 +2025-03-10 13:19:26,020 - INFO - OPENED LONG at 2067.11 | Stop loss: 2056.7590821428576 | Take profit: 2098.1397017857144 +2025-03-10 13:19:26,232 - INFO - CLOSED long at 2067.8 | PnL: 0.03% | $-0.13 +2025-03-10 13:19:26,306 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.3461821428573 | Take profit: 2096.6984017857144 +2025-03-10 13:19:26,356 - INFO - CLOSED long at 2064.99 | PnL: -0.03% | $-0.26 +2025-03-10 13:19:26,356 - INFO - OPENED SHORT at 2064.99 | Stop loss: 2075.3303178571427 | Take profit: 2033.9920982142855 +2025-03-10 13:19:26,401 - INFO - CLOSED short at 2066.15 | PnL: -0.06% | $-0.30 +2025-03-10 13:19:26,425 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.601667857143 | Take profit: 2034.258048214286 +2025-03-10 13:19:26,585 - INFO - CLOSED short at 2063.59 | PnL: 0.08% | $-0.04 +2025-03-10 13:19:26,585 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.2566821428572 | Take profit: 2094.5669017857144 +2025-03-10 13:19:26,953 - INFO - CLOSED long at 2059.3 | PnL: -0.21% | $-0.58 +2025-03-10 13:19:26,953 - INFO - OPENED SHORT at 2059.3 | Stop loss: 2069.611867857143 | Take profit: 2028.3874482142858 +2025-03-10 13:19:27,089 - INFO - CLOSED short at 2060.91 | PnL: -0.08% | $-0.34 +2025-03-10 13:19:27,167 - INFO - OPENED SHORT at 2064.1 | Stop loss: 2074.4358678571425 | Take profit: 2033.1154482142856 +2025-03-10 13:19:27,405 - INFO - CLOSED short at 2060.7 | PnL: 0.16% | $0.12 +2025-03-10 13:19:27,405 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.381132142857 | Take profit: 2091.6335517857137 +2025-03-10 13:19:27,629 - INFO - CLOSED long at 2056.28 | PnL: -0.21% | $-0.59 +2025-03-10 13:19:27,652 - INFO - OPENED LONG at 2055.6 | Stop loss: 2045.306632142857 | Take profit: 2086.457051785714 +2025-03-10 13:19:27,913 - INFO - CLOSED long at 2062.69 | PnL: 0.34% | $0.46 +2025-03-10 13:19:27,913 - INFO - OPENED SHORT at 2062.69 | Stop loss: 2073.018817857143 | Take profit: 2031.7265982142858 +2025-03-10 13:19:28,091 - INFO - CLOSED short at 2067.33 | PnL: -0.22% | $-0.61 +2025-03-10 13:19:28,113 - INFO - OPENED LONG at 2067.01 | Stop loss: 2056.6595821428573 | Take profit: 2098.0382017857146 +2025-03-10 13:19:28,151 - INFO - CLOSED long at 2065.69 | PnL: -0.06% | $-0.31 +2025-03-10 13:19:28,152 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.033817857143 | Take profit: 2034.6815982142857 +2025-03-10 13:19:28,300 - INFO - STOP LOSS hit for short at 2076.033817857143 | PnL: -0.50% | $-1.12 +2025-03-10 13:19:28,460 - INFO - OPENED SHORT at 2070.0 | Stop loss: 2080.3653678571427 | Take profit: 2038.9269482142859 +2025-03-10 13:19:28,504 - INFO - CLOSED short at 2068.39 | PnL: 0.08% | $-0.04 +2025-03-10 13:19:28,504 - INFO - OPENED LONG at 2068.39 | Stop loss: 2058.032682142857 | Take profit: 2099.4389017857143 +2025-03-10 13:19:29,170 - INFO - CLOSED long at 2070.2 | PnL: 0.09% | $-0.02 +2025-03-10 13:19:29,329 - INFO - OPENED LONG at 2071.99 | Stop loss: 2061.614682142857 | Take profit: 2103.0929017857143 +2025-03-10 13:19:29,355 - INFO - CLOSED long at 2068.19 | PnL: -0.18% | $-0.52 +2025-03-10 13:19:29,655 - INFO - OPENED SHORT at 2075.29 | Stop loss: 2085.6818178571425 | Take profit: 2044.1375982142856 +2025-03-10 13:19:30,228 - INFO - CLOSED short at 2070.19 | PnL: 0.25% | $0.27 +2025-03-10 13:19:30,309 - INFO - OPENED LONG at 2067.19 | Stop loss: 2056.838682142857 | Take profit: 2098.220901785714 +2025-03-10 13:19:30,553 - INFO - CLOSED long at 2065.06 | PnL: -0.10% | $-0.37 +2025-03-10 13:19:30,553 - INFO - OPENED SHORT at 2065.06 | Stop loss: 2075.400667857143 | Take profit: 2034.0610482142858 +2025-03-10 13:19:30,758 - INFO - CLOSED short at 2060.2 | PnL: 0.24% | $0.25 +2025-03-10 13:19:30,758 - INFO - OPENED LONG at 2060.2 | Stop loss: 2049.883632142857 | Take profit: 2091.126051785714 +2025-03-10 13:19:30,889 - INFO - STOP LOSS hit for long at 2049.883632142857 | PnL: -0.50% | $-1.10 +2025-03-10 13:19:30,950 - INFO - OPENED LONG at 2051.99 | Stop loss: 2041.714682142857 | Take profit: 2082.792901785714 +2025-03-10 13:19:30,984 - INFO - CLOSED long at 2058.3 | PnL: 0.31% | $0.38 +2025-03-10 13:19:30,984 - INFO - OPENED SHORT at 2058.3 | Stop loss: 2068.6068678571432 | Take profit: 2027.4024482142859 +2025-03-10 13:19:31,028 - INFO - CLOSED short at 2056.85 | PnL: 0.07% | $-0.05 +2025-03-10 13:19:31,067 - INFO - OPENED LONG at 2057.11 | Stop loss: 2046.8090821428573 | Take profit: 2087.9897017857147 +2025-03-10 13:19:31,174 - INFO - CLOSED long at 2065.1 | PnL: 0.39% | $0.52 +2025-03-10 13:19:31,174 - INFO - OPENED SHORT at 2065.1 | Stop loss: 2075.4408678571426 | Take profit: 2034.1004482142857 +2025-03-10 13:19:31,217 - INFO - CLOSED short at 2062.55 | PnL: 0.12% | $0.04 +2025-03-10 13:19:31,600 - INFO - OPENED SHORT at 2069.81 | Stop loss: 2080.174417857143 | Take profit: 2038.7397982142857 +2025-03-10 13:19:31,708 - INFO - CLOSED short at 2071.89 | PnL: -0.10% | $-0.37 +2025-03-10 13:19:31,795 - INFO - OPENED LONG at 2076.08 | Stop loss: 2065.684232142857 | Take profit: 2107.2442517857144 +2025-03-10 13:19:31,825 - INFO - CLOSED long at 2077.61 | PnL: 0.07% | $-0.05 +2025-03-10 13:19:31,945 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.253067857143 | Take profit: 2107.4238482142855 +2025-03-10 13:19:32,079 - INFO - CLOSED short at 2140.01 | PnL: -0.02% | $-0.22 +2025-03-10 13:19:32,098 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.090732142857 | Take profit: 2166.824751785715 +2025-03-10 13:19:32,226 - INFO - STOP LOSS hit for long at 2124.090732142857 | PnL: -0.50% | $-1.09 +2025-03-10 13:19:32,261 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.5338821428572 | Take profit: 2151.9753017857147 +2025-03-10 13:19:32,405 - INFO - CLOSED long at 2119.07 | PnL: -0.05% | $-0.27 +2025-03-10 13:19:32,405 - INFO - OPENED SHORT at 2119.07 | Stop loss: 2129.680717857143 | Take profit: 2087.260898214286 +2025-03-10 13:19:32,827 - INFO - CLOSED short at 2108.06 | PnL: 0.52% | $0.75 +2025-03-10 13:19:32,827 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.504332142857 | Take profit: 2139.703951785714 +2025-03-10 13:19:32,895 - INFO - STOP LOSS hit for long at 2097.504332142857 | PnL: -0.50% | $-1.08 +2025-03-10 13:19:32,925 - INFO - OPENED SHORT at 2099.53 | Stop loss: 2110.043017857143 | Take profit: 2068.013998214286 +2025-03-10 13:19:33,107 - INFO - CLOSED short at 2100.69 | PnL: -0.06% | $-0.28 +2025-03-10 13:19:33,159 - INFO - OPENED SHORT at 2100.74 | Stop loss: 2111.259067857143 | Take profit: 2069.205848214285 +2025-03-10 13:19:33,219 - INFO - CLOSED short at 2101.51 | PnL: -0.04% | $-0.24 +2025-03-10 13:19:33,219 - INFO - OPENED LONG at 2101.51 | Stop loss: 2090.987082142857 | Take profit: 2133.0557017857145 +2025-03-10 13:19:33,347 - INFO - CLOSED long at 2093.33 | PnL: -0.39% | $-0.87 +2025-03-10 13:19:33,347 - INFO - OPENED SHORT at 2093.33 | Stop loss: 2103.8120178571426 | Take profit: 2061.9069982142855 +2025-03-10 13:19:33,376 - INFO - CLOSED short at 2092.46 | PnL: 0.04% | $-0.10 +2025-03-10 13:19:33,376 - INFO - OPENED LONG at 2092.46 | Stop loss: 2081.982332142857 | Take profit: 2123.8699517857144 +2025-03-10 13:19:33,493 - INFO - CLOSED long at 2088.35 | PnL: -0.20% | $-0.52 +2025-03-10 13:19:33,493 - INFO - OPENED SHORT at 2088.35 | Stop loss: 2098.8071178571427 | Take profit: 2057.0016982142856 +2025-03-10 13:19:33,693 - INFO - CLOSED short at 2083.41 | PnL: 0.24% | $0.24 +2025-03-10 13:19:33,754 - INFO - OPENED SHORT at 2083.59 | Stop loss: 2094.023317857143 | Take profit: 2052.3130982142857 +2025-03-10 13:19:33,882 - INFO - CLOSED short at 2085.83 | PnL: -0.11% | $-0.36 +2025-03-10 13:19:33,884 - INFO - OPENED LONG at 2085.83 | Stop loss: 2075.385482142857 | Take profit: 2117.1405017857146 +2025-03-10 13:19:34,065 - INFO - CLOSED long at 2086.81 | PnL: 0.05% | $-0.09 +2025-03-10 13:19:34,268 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.520617857143 | Take profit: 2059.661198214286 +2025-03-10 13:19:34,377 - INFO - STOP LOSS hit for short at 2101.520617857143 | PnL: -0.50% | $-1.04 +2025-03-10 13:19:34,425 - INFO - OPENED LONG at 2098.49 | Stop loss: 2087.982182142857 | Take profit: 2129.9904017857143 +2025-03-10 13:19:34,490 - INFO - CLOSED long at 2099.73 | PnL: 0.06% | $-0.07 +2025-03-10 13:19:34,749 - INFO - OPENED LONG at 2105.83 | Stop loss: 2095.285482142857 | Take profit: 2137.4405017857143 +2025-03-10 13:19:34,893 - INFO - CLOSED long at 2100.0 | PnL: -0.28% | $-0.65 +2025-03-10 13:19:34,968 - INFO - OPENED SHORT at 2102.0 | Stop loss: 2112.525367857143 | Take profit: 2070.446948214286 +2025-03-10 13:19:35,037 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.29, Avg Loss=$-0.41 +2025-03-10 13:19:35,037 - INFO - Episode 10: Reward=56.48, Balance=$85.76, Win Rate=21.8%, Trades=55, Episode PnL=$-12.68, Total PnL=$-194.05, Max Drawdown=14.2%, Pred Accuracy=99.8% +2025-03-10 13:19:35,046 - ERROR - Error in episode 10: cannot access local variable 'best_reward' where it is not associated with a value +2025-03-10 13:19:35,046 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1831, in train_agent +UnboundLocalError: cannot access local variable 'best_reward' where it is not associated with a value + +2025-03-10 13:19:35,069 - INFO - Identified 26 optimal buy points and 29 optimal sell points +2025-03-10 13:19:35,416 - INFO - OPENED SHORT at 2049.89 | Stop loss: 2060.1548178571425 | Take profit: 2019.1185982142856 +2025-03-10 13:19:35,574 - INFO - CLOSED short at 2057.01 | PnL: -0.35% | $-0.89 +2025-03-10 13:20:23,522 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 13:20:23,543 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 13:20:23,544 - INFO - Fetching initial data for ETH/USDT +2025-03-10 13:20:27,261 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 13:20:27,281 - INFO - Initialized environment with 500 candles +2025-03-10 13:20:30,231 - INFO - Starting training for 1000 episodes... +2025-03-10 13:20:30,231 - INFO - Starting training on device: cuda +2025-03-10 13:20:30,232 - INFO - Loading best model from models/trading_agent_best_pnl.pt to resume training +2025-03-10 13:20:30,232 - INFO - Loading model from models/trading_agent_best_pnl.pt +2025-03-10 13:20:30,485 - INFO - Model loaded successfully with weights_only=True +2025-03-10 13:20:30,485 - INFO - Resumed with best metrics - Reward: 202.74, PnL: $-10.07, Win Rate: 30.9% +2025-03-10 13:20:30,492 - ERROR - Error in episode 0: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,497 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,498 - ERROR - Error in episode 1: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,501 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,502 - ERROR - Error in episode 2: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,503 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,503 - ERROR - Error in episode 3: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,506 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,506 - ERROR - Error in episode 4: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,507 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,507 - ERROR - Error in episode 5: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,511 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,512 - ERROR - Error in episode 6: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,513 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,513 - ERROR - Error in episode 7: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,513 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,513 - ERROR - Error in episode 8: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,519 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,520 - ERROR - Error in episode 9: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,522 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,522 - ERROR - Error in episode 10: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,524 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,525 - ERROR - Error in episode 11: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,527 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,527 - ERROR - Error in episode 12: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,530 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,530 - ERROR - Error in episode 13: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,532 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,533 - ERROR - Error in episode 14: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,535 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,535 - ERROR - Error in episode 15: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,537 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,537 - ERROR - Error in episode 16: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,539 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,540 - ERROR - Error in episode 17: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,542 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,543 - ERROR - Error in episode 18: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,544 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,544 - ERROR - Error in episode 19: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,547 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,547 - ERROR - Error in episode 20: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,549 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,550 - ERROR - Error in episode 21: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,552 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,552 - ERROR - Error in episode 22: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,552 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,552 - ERROR - Error in episode 23: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,552 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,552 - ERROR - Error in episode 24: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,559 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,559 - ERROR - Error in episode 25: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,561 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,562 - ERROR - Error in episode 26: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,563 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,564 - ERROR - Error in episode 27: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,565 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,566 - ERROR - Error in episode 28: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,568 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,569 - ERROR - Error in episode 29: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,571 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,571 - ERROR - Error in episode 30: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,573 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,573 - ERROR - Error in episode 31: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,575 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,575 - ERROR - Error in episode 32: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,578 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,578 - ERROR - Error in episode 33: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,581 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,582 - ERROR - Error in episode 34: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,583 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,584 - ERROR - Error in episode 35: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,585 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,585 - ERROR - Error in episode 36: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,588 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,589 - ERROR - Error in episode 37: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,591 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,591 - ERROR - Error in episode 38: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,593 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,593 - ERROR - Error in episode 39: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,594 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,594 - ERROR - Error in episode 40: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,598 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,598 - ERROR - Error in episode 41: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,600 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,600 - ERROR - Error in episode 42: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,602 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,602 - ERROR - Error in episode 43: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,604 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,605 - ERROR - Error in episode 44: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,607 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,607 - ERROR - Error in episode 45: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,608 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,610 - ERROR - Error in episode 46: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,610 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,610 - ERROR - Error in episode 47: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,614 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,614 - ERROR - Error in episode 48: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,616 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,617 - ERROR - Error in episode 49: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,619 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,619 - ERROR - Error in episode 50: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,621 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,621 - ERROR - Error in episode 51: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,624 - ERROR - Error in episode 52: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,625 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,626 - ERROR - Error in episode 53: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,629 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,629 - ERROR - Error in episode 54: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,631 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,631 - ERROR - Error in episode 55: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,633 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,633 - ERROR - Error in episode 56: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,635 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,635 - ERROR - Error in episode 57: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,638 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,638 - ERROR - Error in episode 58: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,640 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,641 - ERROR - Error in episode 59: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,642 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,642 - ERROR - Error in episode 60: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,644 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,646 - ERROR - Error in episode 61: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,648 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,648 - ERROR - Error in episode 62: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,650 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,651 - ERROR - Error in episode 63: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,652 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,652 - ERROR - Error in episode 64: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,654 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,655 - ERROR - Error in episode 65: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,656 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,657 - ERROR - Error in episode 66: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,658 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,659 - ERROR - Error in episode 67: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,660 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,662 - ERROR - Error in episode 68: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,663 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,663 - ERROR - Error in episode 69: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,666 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,666 - ERROR - Error in episode 70: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,666 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,668 - ERROR - Error in episode 71: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,669 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,669 - ERROR - Error in episode 72: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,672 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,672 - ERROR - Error in episode 73: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,674 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,675 - ERROR - Error in episode 74: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,677 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,677 - ERROR - Error in episode 75: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,680 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,680 - ERROR - Error in episode 76: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,682 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,682 - ERROR - Error in episode 77: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,684 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,684 - ERROR - Error in episode 78: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,685 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,685 - ERROR - Error in episode 79: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,688 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,689 - ERROR - Error in episode 80: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,690 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,691 - ERROR - Error in episode 81: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,693 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,693 - ERROR - Error in episode 82: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,695 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,696 - ERROR - Error in episode 83: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,697 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,698 - ERROR - Error in episode 84: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,700 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,700 - ERROR - Error in episode 85: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,702 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,702 - ERROR - Error in episode 86: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,705 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,705 - ERROR - Error in episode 87: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,705 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,705 - ERROR - Error in episode 88: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,705 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,705 - ERROR - Error in episode 89: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,710 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,710 - ERROR - Error in episode 90: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,713 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,713 - ERROR - Error in episode 91: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,715 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,715 - ERROR - Error in episode 92: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,717 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,717 - ERROR - Error in episode 93: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,720 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,720 - ERROR - Error in episode 94: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,721 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,721 - ERROR - Error in episode 95: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,723 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,723 - ERROR - Error in episode 96: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,726 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,727 - ERROR - Error in episode 97: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,728 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,729 - ERROR - Error in episode 98: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,731 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,731 - ERROR - Error in episode 99: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,733 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,733 - INFO - Moving to curriculum stage 2: risk_factor=0.75, exploration=0.2 +2025-03-10 13:20:30,733 - ERROR - Error in episode 100: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,736 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,736 - ERROR - Error in episode 101: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,738 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,739 - ERROR - Error in episode 102: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,741 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,741 - ERROR - Error in episode 103: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,742 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,742 - ERROR - Error in episode 104: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,744 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,745 - ERROR - Error in episode 105: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,745 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,745 - ERROR - Error in episode 106: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,749 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,750 - ERROR - Error in episode 107: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,752 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,752 - ERROR - Error in episode 108: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,753 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,755 - ERROR - Error in episode 109: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,756 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,756 - ERROR - Error in episode 110: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,758 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,758 - ERROR - Error in episode 111: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,760 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,762 - ERROR - Error in episode 112: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,763 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,763 - ERROR - Error in episode 113: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,765 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,765 - ERROR - Error in episode 114: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,765 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,768 - ERROR - Error in episode 115: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,769 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,769 - ERROR - Error in episode 116: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,772 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,772 - ERROR - Error in episode 117: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,775 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,775 - ERROR - Error in episode 118: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,777 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,778 - ERROR - Error in episode 119: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,779 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,780 - ERROR - Error in episode 120: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,782 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,782 - ERROR - Error in episode 121: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,783 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,784 - ERROR - Error in episode 122: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,786 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,787 - ERROR - Error in episode 123: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,789 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,789 - ERROR - Error in episode 124: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,791 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,791 - ERROR - Error in episode 125: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,793 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,794 - ERROR - Error in episode 126: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,795 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,796 - ERROR - Error in episode 127: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,797 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,798 - ERROR - Error in episode 128: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,799 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,800 - ERROR - Error in episode 129: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,802 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,802 - ERROR - Error in episode 130: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,804 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,804 - ERROR - Error in episode 131: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,806 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,806 - ERROR - Error in episode 132: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,806 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,806 - ERROR - Error in episode 133: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,810 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,810 - ERROR - Error in episode 134: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,813 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,813 - ERROR - Error in episode 135: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,815 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,816 - ERROR - Error in episode 136: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,817 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,817 - ERROR - Error in episode 137: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,819 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,819 - ERROR - Error in episode 138: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,819 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,819 - ERROR - Error in episode 139: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,824 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,825 - ERROR - Error in episode 140: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,827 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,827 - ERROR - Error in episode 141: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,830 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,830 - ERROR - Error in episode 142: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,832 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,832 - ERROR - Error in episode 143: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,834 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,835 - ERROR - Error in episode 144: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,837 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,837 - ERROR - Error in episode 145: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,839 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,839 - ERROR - Error in episode 146: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,841 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,841 - ERROR - Error in episode 147: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,843 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,844 - ERROR - Error in episode 148: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,844 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,844 - ERROR - Error in episode 149: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,848 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,849 - ERROR - Error in episode 150: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,851 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,851 - ERROR - Error in episode 151: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,852 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,852 - ERROR - Error in episode 152: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,852 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,852 - ERROR - Error in episode 153: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,858 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,858 - ERROR - Error in episode 154: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,860 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,861 - ERROR - Error in episode 155: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,863 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,863 - ERROR - Error in episode 156: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,864 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,865 - ERROR - Error in episode 157: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,867 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,868 - ERROR - Error in episode 158: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,869 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,869 - ERROR - Error in episode 159: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,871 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,872 - ERROR - Error in episode 160: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,875 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,875 - ERROR - Error in episode 161: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,877 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,878 - ERROR - Error in episode 162: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,879 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,880 - ERROR - Error in episode 163: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,881 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,881 - ERROR - Error in episode 164: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,881 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,881 - ERROR - Error in episode 165: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,885 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,885 - ERROR - Error in episode 166: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,889 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,889 - ERROR - Error in episode 167: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,891 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,892 - ERROR - Error in episode 168: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,894 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,894 - ERROR - Error in episode 169: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,896 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,897 - ERROR - Error in episode 170: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,898 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,898 - ERROR - Error in episode 171: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,901 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,901 - ERROR - Error in episode 172: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,903 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,903 - ERROR - Error in episode 173: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,905 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,905 - ERROR - Error in episode 174: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,907 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,908 - ERROR - Error in episode 175: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,909 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,909 - ERROR - Error in episode 176: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,912 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,912 - ERROR - Error in episode 177: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,914 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,915 - ERROR - Error in episode 178: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,915 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,915 - ERROR - Error in episode 179: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,918 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,918 - ERROR - Error in episode 180: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,921 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,921 - ERROR - Error in episode 181: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,923 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,925 - ERROR - Error in episode 182: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,926 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,926 - ERROR - Error in episode 183: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,929 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,930 - ERROR - Error in episode 184: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,932 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,932 - ERROR - Error in episode 185: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,934 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,934 - ERROR - Error in episode 186: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,936 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,936 - ERROR - Error in episode 187: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,938 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,939 - ERROR - Error in episode 188: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,940 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,940 - ERROR - Error in episode 189: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,943 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,943 - ERROR - Error in episode 190: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,946 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,947 - ERROR - Error in episode 191: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,948 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,949 - ERROR - Error in episode 192: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,949 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,949 - ERROR - Error in episode 193: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,953 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,953 - ERROR - Error in episode 194: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,956 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,956 - ERROR - Error in episode 195: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,957 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,958 - ERROR - Error in episode 196: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,960 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,960 - ERROR - Error in episode 197: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,963 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,963 - ERROR - Error in episode 198: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,965 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,965 - ERROR - Error in episode 199: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,967 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,967 - INFO - Moving to curriculum stage 3: risk_factor=1.0, exploration=0.1 +2025-03-10 13:20:30,967 - ERROR - Error in episode 200: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,971 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,971 - ERROR - Error in episode 201: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,973 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,973 - ERROR - Error in episode 202: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,975 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,975 - ERROR - Error in episode 203: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,977 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,977 - ERROR - Error in episode 204: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,980 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,981 - ERROR - Error in episode 205: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,982 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,983 - ERROR - Error in episode 206: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,984 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,984 - ERROR - Error in episode 207: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,987 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,988 - ERROR - Error in episode 208: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,990 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,990 - ERROR - Error in episode 209: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,993 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,993 - ERROR - Error in episode 210: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,993 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,993 - ERROR - Error in episode 211: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,997 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:30,998 - ERROR - Error in episode 212: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:30,999 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,000 - ERROR - Error in episode 213: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,002 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,002 - ERROR - Error in episode 214: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,004 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,005 - ERROR - Error in episode 215: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,007 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,008 - ERROR - Error in episode 216: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,009 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,011 - ERROR - Error in episode 217: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,011 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,011 - ERROR - Error in episode 218: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,015 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,016 - ERROR - Error in episode 219: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,017 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,017 - ERROR - Error in episode 220: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,019 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,019 - ERROR - Error in episode 221: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,019 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,023 - ERROR - Error in episode 222: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,025 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,025 - ERROR - Error in episode 223: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,025 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,025 - ERROR - Error in episode 224: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,029 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,031 - ERROR - Error in episode 225: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,033 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,034 - ERROR - Error in episode 226: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,035 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,035 - ERROR - Error in episode 227: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,038 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,038 - ERROR - Error in episode 228: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,040 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,040 - ERROR - Error in episode 229: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,040 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,040 - ERROR - Error in episode 230: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,044 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,046 - ERROR - Error in episode 231: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,047 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,048 - ERROR - Error in episode 232: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,050 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,050 - ERROR - Error in episode 233: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,052 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,052 - ERROR - Error in episode 234: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,055 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,056 - ERROR - Error in episode 235: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,058 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,058 - ERROR - Error in episode 236: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,060 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,060 - ERROR - Error in episode 237: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,063 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,063 - ERROR - Error in episode 238: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,065 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,067 - ERROR - Error in episode 239: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,068 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,068 - ERROR - Error in episode 240: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,071 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,071 - ERROR - Error in episode 241: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,073 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,073 - ERROR - Error in episode 242: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,075 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,075 - ERROR - Error in episode 243: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,075 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,075 - ERROR - Error in episode 244: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,082 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,082 - ERROR - Error in episode 245: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,084 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,085 - ERROR - Error in episode 246: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,087 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,087 - ERROR - Error in episode 247: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,088 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,088 - ERROR - Error in episode 248: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,090 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,090 - ERROR - Error in episode 249: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,095 - ERROR - Error in episode 250: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,097 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,097 - ERROR - Error in episode 251: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,098 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,098 - ERROR - Error in episode 252: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,101 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,101 - ERROR - Error in episode 253: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,104 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,104 - ERROR - Error in episode 254: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,107 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,107 - ERROR - Error in episode 255: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,109 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,110 - ERROR - Error in episode 256: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,111 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,111 - ERROR - Error in episode 257: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,115 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,115 - ERROR - Error in episode 258: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,117 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,118 - ERROR - Error in episode 259: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,119 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,120 - ERROR - Error in episode 260: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,121 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,122 - ERROR - Error in episode 261: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,124 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,124 - ERROR - Error in episode 262: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,126 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,126 - ERROR - Error in episode 263: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,128 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,129 - ERROR - Error in episode 264: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,131 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,132 - ERROR - Error in episode 265: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,133 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,134 - ERROR - Error in episode 266: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,134 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,137 - ERROR - Error in episode 267: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,139 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,139 - ERROR - Error in episode 268: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,142 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,142 - ERROR - Error in episode 269: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,142 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,142 - ERROR - Error in episode 270: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,146 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,147 - ERROR - Error in episode 271: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,148 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,149 - ERROR - Error in episode 272: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,150 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,150 - ERROR - Error in episode 273: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,153 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,154 - ERROR - Error in episode 274: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,156 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,156 - ERROR - Error in episode 275: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,158 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,159 - ERROR - Error in episode 276: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,161 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,162 - ERROR - Error in episode 277: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,163 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,163 - ERROR - Error in episode 278: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,165 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,165 - ERROR - Error in episode 279: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,168 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,168 - ERROR - Error in episode 280: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,170 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,170 - ERROR - Error in episode 281: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,172 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,173 - ERROR - Error in episode 282: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,175 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,175 - ERROR - Error in episode 283: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,178 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,178 - ERROR - Error in episode 284: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,179 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,179 - ERROR - Error in episode 285: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,183 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,183 - ERROR - Error in episode 286: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,184 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,186 - ERROR - Error in episode 287: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,186 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,188 - ERROR - Error in episode 288: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,189 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,189 - ERROR - Error in episode 289: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,192 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,192 - ERROR - Error in episode 290: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,193 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,195 - ERROR - Error in episode 291: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,196 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,196 - ERROR - Error in episode 292: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,199 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,199 - ERROR - Error in episode 293: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,201 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,201 - ERROR - Error in episode 294: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,203 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,204 - ERROR - Error in episode 295: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,207 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,207 - ERROR - Error in episode 296: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,209 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,209 - ERROR - Error in episode 297: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,211 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,211 - ERROR - Error in episode 298: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,213 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,213 - ERROR - Error in episode 299: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,213 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,213 - INFO - Moving to curriculum stage 4: risk_factor=1.25, exploration=0.05 +2025-03-10 13:20:31,213 - ERROR - Error in episode 300: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,219 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,219 - ERROR - Error in episode 301: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,221 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,221 - ERROR - Error in episode 302: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,223 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,223 - ERROR - Error in episode 303: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,225 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,225 - ERROR - Error in episode 304: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,228 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,228 - ERROR - Error in episode 305: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,228 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,231 - ERROR - Error in episode 306: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,233 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,233 - ERROR - Error in episode 307: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,234 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,236 - ERROR - Error in episode 308: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,237 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,239 - ERROR - Error in episode 309: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,240 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,240 - ERROR - Error in episode 310: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,244 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,244 - ERROR - Error in episode 311: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,246 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,246 - ERROR - Error in episode 312: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,249 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,249 - ERROR - Error in episode 313: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,251 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,251 - ERROR - Error in episode 314: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,253 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,253 - ERROR - Error in episode 315: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,256 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,257 - ERROR - Error in episode 316: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,258 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,259 - ERROR - Error in episode 317: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,261 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,261 - ERROR - Error in episode 318: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,263 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,264 - ERROR - Error in episode 319: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,266 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,267 - ERROR - Error in episode 320: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,268 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,269 - ERROR - Error in episode 321: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,270 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,270 - ERROR - Error in episode 322: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,273 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,273 - ERROR - Error in episode 323: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,275 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,275 - ERROR - Error in episode 324: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,277 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,278 - ERROR - Error in episode 325: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,280 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,281 - ERROR - Error in episode 326: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,283 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,283 - ERROR - Error in episode 327: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,285 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,286 - ERROR - Error in episode 328: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,288 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,288 - ERROR - Error in episode 329: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,290 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,290 - ERROR - Error in episode 330: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,292 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,292 - ERROR - Error in episode 331: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,295 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,295 - ERROR - Error in episode 332: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,297 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,298 - ERROR - Error in episode 333: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,300 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,300 - ERROR - Error in episode 334: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,302 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,303 - ERROR - Error in episode 335: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,304 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,304 - ERROR - Error in episode 336: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,308 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,308 - ERROR - Error in episode 337: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,310 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,311 - ERROR - Error in episode 338: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,311 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,313 - ERROR - Error in episode 339: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,314 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,314 - ERROR - Error in episode 340: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,317 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,317 - ERROR - Error in episode 341: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,319 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,320 - ERROR - Error in episode 342: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,322 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,322 - ERROR - Error in episode 343: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,324 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,325 - ERROR - Error in episode 344: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,326 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,326 - ERROR - Error in episode 345: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,328 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,329 - ERROR - Error in episode 346: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,330 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,330 - ERROR - Error in episode 347: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,332 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,332 - ERROR - Error in episode 348: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,335 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,336 - ERROR - Error in episode 349: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,338 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,338 - ERROR - Error in episode 350: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,340 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,340 - ERROR - Error in episode 351: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,342 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,342 - ERROR - Error in episode 352: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,343 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,345 - ERROR - Error in episode 353: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,347 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,347 - ERROR - Error in episode 354: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,349 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,350 - ERROR - Error in episode 355: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,352 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,352 - ERROR - Error in episode 356: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,354 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,355 - ERROR - Error in episode 357: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,357 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,357 - ERROR - Error in episode 358: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,360 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,360 - ERROR - Error in episode 359: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,362 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,362 - ERROR - Error in episode 360: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,364 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,364 - ERROR - Error in episode 361: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,366 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,366 - ERROR - Error in episode 362: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,368 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,369 - ERROR - Error in episode 363: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,371 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,371 - ERROR - Error in episode 364: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,373 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,373 - ERROR - Error in episode 365: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,375 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,375 - ERROR - Error in episode 366: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,378 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,378 - ERROR - Error in episode 367: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,378 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,378 - ERROR - Error in episode 368: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,382 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,383 - ERROR - Error in episode 369: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,384 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,385 - ERROR - Error in episode 370: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,387 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,387 - ERROR - Error in episode 371: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,390 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,390 - ERROR - Error in episode 372: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,392 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,392 - ERROR - Error in episode 373: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,394 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,394 - ERROR - Error in episode 374: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,396 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,396 - ERROR - Error in episode 375: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,397 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,399 - ERROR - Error in episode 376: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,400 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,400 - ERROR - Error in episode 377: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,403 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,403 - ERROR - Error in episode 378: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,406 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,406 - ERROR - Error in episode 379: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,408 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,409 - ERROR - Error in episode 380: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,410 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,411 - ERROR - Error in episode 381: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,412 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,412 - ERROR - Error in episode 382: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,414 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,414 - ERROR - Error in episode 383: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,417 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,418 - ERROR - Error in episode 384: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,420 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,420 - ERROR - Error in episode 385: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,423 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,423 - ERROR - Error in episode 386: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,425 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,425 - ERROR - Error in episode 387: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,427 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,427 - ERROR - Error in episode 388: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,429 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,429 - ERROR - Error in episode 389: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,431 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,432 - ERROR - Error in episode 390: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,433 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,434 - ERROR - Error in episode 391: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,436 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,437 - ERROR - Error in episode 392: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,438 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,439 - ERROR - Error in episode 393: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,440 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,440 - ERROR - Error in episode 394: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,443 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,443 - ERROR - Error in episode 395: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,444 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,446 - ERROR - Error in episode 396: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,446 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,447 - ERROR - Error in episode 397: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,449 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,450 - ERROR - Error in episode 398: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,451 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,451 - ERROR - Error in episode 399: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,453 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,453 - ERROR - Error in episode 400: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,455 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,456 - ERROR - Error in episode 401: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,457 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,458 - ERROR - Error in episode 402: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,459 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,459 - ERROR - Error in episode 403: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,461 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,463 - ERROR - Error in episode 404: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,465 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,465 - ERROR - Error in episode 405: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,467 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,467 - ERROR - Error in episode 406: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,469 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,470 - ERROR - Error in episode 407: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,472 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,472 - ERROR - Error in episode 408: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,474 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,474 - ERROR - Error in episode 409: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,476 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,477 - ERROR - Error in episode 410: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,478 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,479 - ERROR - Error in episode 411: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,480 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,480 - ERROR - Error in episode 412: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,480 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,480 - ERROR - Error in episode 413: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,484 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,484 - ERROR - Error in episode 414: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,488 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,488 - ERROR - Error in episode 415: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,490 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,490 - ERROR - Error in episode 416: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,492 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,492 - ERROR - Error in episode 417: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,494 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,495 - ERROR - Error in episode 418: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,496 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,497 - ERROR - Error in episode 419: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,499 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,499 - ERROR - Error in episode 420: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,501 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,502 - ERROR - Error in episode 421: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,503 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,503 - ERROR - Error in episode 422: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,505 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,507 - ERROR - Error in episode 423: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,509 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,509 - ERROR - Error in episode 424: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,511 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,511 - ERROR - Error in episode 425: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,513 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,513 - ERROR - Error in episode 426: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,515 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,515 - ERROR - Error in episode 427: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,517 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,519 - ERROR - Error in episode 428: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,521 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,521 - ERROR - Error in episode 429: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,523 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,524 - ERROR - Error in episode 430: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,525 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,525 - ERROR - Error in episode 431: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,528 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,528 - ERROR - Error in episode 432: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,530 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,531 - ERROR - Error in episode 433: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,532 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,532 - ERROR - Error in episode 434: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,535 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,535 - ERROR - Error in episode 435: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,537 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,537 - ERROR - Error in episode 436: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,539 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,539 - ERROR - Error in episode 437: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,541 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,542 - ERROR - Error in episode 438: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,543 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,543 - ERROR - Error in episode 439: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,543 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,543 - ERROR - Error in episode 440: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,543 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,543 - ERROR - Error in episode 441: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,550 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,550 - ERROR - Error in episode 442: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,552 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,553 - ERROR - Error in episode 443: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,555 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,555 - ERROR - Error in episode 444: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,557 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,558 - ERROR - Error in episode 445: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,559 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,559 - ERROR - Error in episode 446: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,561 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,562 - ERROR - Error in episode 447: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,564 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,564 - ERROR - Error in episode 448: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,566 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,567 - ERROR - Error in episode 449: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,568 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,569 - ERROR - Error in episode 450: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,569 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,569 - ERROR - Error in episode 451: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,573 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,574 - ERROR - Error in episode 452: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,575 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,576 - ERROR - Error in episode 453: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,578 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,578 - ERROR - Error in episode 454: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,580 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,580 - ERROR - Error in episode 455: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,582 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,583 - ERROR - Error in episode 456: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,584 - ERROR - Error in episode 457: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,586 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,587 - ERROR - Error in episode 458: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,589 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,590 - ERROR - Error in episode 459: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,592 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,592 - ERROR - Error in episode 460: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,594 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,595 - ERROR - Error in episode 461: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,596 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,597 - ERROR - Error in episode 462: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,599 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,599 - ERROR - Error in episode 463: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,601 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,601 - ERROR - Error in episode 464: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,604 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,604 - ERROR - Error in episode 465: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,605 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,606 - ERROR - Error in episode 466: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,609 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,609 - ERROR - Error in episode 467: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,611 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,611 - ERROR - Error in episode 468: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,613 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,614 - ERROR - Error in episode 469: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,616 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,616 - ERROR - Error in episode 470: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,618 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,618 - ERROR - Error in episode 471: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,618 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,618 - ERROR - Error in episode 472: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,622 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,624 - ERROR - Error in episode 473: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,624 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,626 - ERROR - Error in episode 474: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,628 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,628 - ERROR - Error in episode 475: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,631 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,631 - ERROR - Error in episode 476: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,632 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,632 - ERROR - Error in episode 477: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,634 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,634 - ERROR - Error in episode 478: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,636 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,636 - ERROR - Error in episode 479: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,639 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,641 - ERROR - Error in episode 480: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,641 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,643 - ERROR - Error in episode 481: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,645 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,645 - ERROR - Error in episode 482: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,647 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,647 - ERROR - Error in episode 483: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,649 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,649 - ERROR - Error in episode 484: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,651 - ERROR - Error in episode 485: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,653 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,655 - ERROR - Error in episode 486: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,657 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,657 - ERROR - Error in episode 487: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,659 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,659 - ERROR - Error in episode 488: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,661 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,661 - ERROR - Error in episode 489: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,664 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,665 - ERROR - Error in episode 490: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,666 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,666 - ERROR - Error in episode 491: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,668 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,670 - ERROR - Error in episode 492: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,671 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,673 - ERROR - Error in episode 493: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,674 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,674 - ERROR - Error in episode 494: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,676 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,676 - ERROR - Error in episode 495: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,678 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,678 - ERROR - Error in episode 496: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,681 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,682 - ERROR - Error in episode 497: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,682 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,682 - ERROR - Error in episode 498: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,684 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,687 - ERROR - Error in episode 499: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,688 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,689 - ERROR - Error in episode 500: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,691 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,691 - ERROR - Error in episode 501: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,693 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,693 - ERROR - Error in episode 502: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,695 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,695 - ERROR - Error in episode 503: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,698 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,698 - ERROR - Error in episode 504: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,700 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,700 - ERROR - Error in episode 505: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,702 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,703 - ERROR - Error in episode 506: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,705 - ERROR - Error in episode 507: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,707 - ERROR - Error in episode 508: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,710 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,710 - ERROR - Error in episode 509: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,712 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,713 - ERROR - Error in episode 510: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,714 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,715 - ERROR - Error in episode 511: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,716 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,716 - ERROR - Error in episode 512: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,719 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,719 - ERROR - Error in episode 513: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,721 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,722 - ERROR - Error in episode 514: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,724 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,724 - ERROR - Error in episode 515: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,726 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,726 - ERROR - Error in episode 516: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,728 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,729 - ERROR - Error in episode 517: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,732 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,732 - ERROR - Error in episode 518: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,734 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,734 - ERROR - Error in episode 519: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,736 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,737 - ERROR - Error in episode 520: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,740 - ERROR - Error in episode 521: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,741 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,741 - ERROR - Error in episode 522: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,743 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,744 - ERROR - Error in episode 523: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,745 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,746 - ERROR - Error in episode 524: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,748 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,749 - ERROR - Error in episode 525: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,750 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,750 - ERROR - Error in episode 526: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,750 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,750 - ERROR - Error in episode 527: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,754 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,756 - ERROR - Error in episode 528: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,757 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,757 - ERROR - Error in episode 529: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,760 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,760 - ERROR - Error in episode 530: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,762 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,763 - ERROR - Error in episode 531: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,765 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,765 - ERROR - Error in episode 532: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,767 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,767 - ERROR - Error in episode 533: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,769 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,770 - ERROR - Error in episode 534: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,772 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,772 - ERROR - Error in episode 535: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,774 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,775 - ERROR - Error in episode 536: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,776 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,777 - ERROR - Error in episode 537: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,778 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,778 - ERROR - Error in episode 538: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,781 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,781 - ERROR - Error in episode 539: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,782 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,782 - ERROR - Error in episode 540: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,786 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,787 - ERROR - Error in episode 541: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,788 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,789 - ERROR - Error in episode 542: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,791 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,792 - ERROR - Error in episode 543: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,793 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,794 - ERROR - Error in episode 544: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,796 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,796 - ERROR - Error in episode 545: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,796 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,796 - ERROR - Error in episode 546: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,800 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,800 - ERROR - Error in episode 547: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,804 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,805 - ERROR - Error in episode 548: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,806 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,807 - ERROR - Error in episode 549: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,809 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,810 - ERROR - Error in episode 550: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,812 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,812 - ERROR - Error in episode 551: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,814 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,815 - ERROR - Error in episode 552: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,816 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,817 - ERROR - Error in episode 553: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,818 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,819 - ERROR - Error in episode 554: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,820 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,822 - ERROR - Error in episode 555: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,823 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,824 - ERROR - Error in episode 556: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,826 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,827 - ERROR - Error in episode 557: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,829 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,829 - ERROR - Error in episode 558: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,831 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,831 - ERROR - Error in episode 559: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,833 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,834 - ERROR - Error in episode 560: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,836 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,836 - ERROR - Error in episode 561: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,837 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,837 - ERROR - Error in episode 562: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,840 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,840 - ERROR - Error in episode 563: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,842 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,843 - ERROR - Error in episode 564: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,845 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,845 - ERROR - Error in episode 565: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,847 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,848 - ERROR - Error in episode 566: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,850 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,850 - ERROR - Error in episode 567: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,850 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,850 - ERROR - Error in episode 568: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,853 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,853 - ERROR - Error in episode 569: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,857 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,857 - ERROR - Error in episode 570: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,859 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,859 - ERROR - Error in episode 571: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,861 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,862 - ERROR - Error in episode 572: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,862 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,865 - ERROR - Error in episode 573: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,866 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,866 - ERROR - Error in episode 574: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,868 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,869 - ERROR - Error in episode 575: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,870 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,870 - ERROR - Error in episode 576: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,873 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,874 - ERROR - Error in episode 577: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,876 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,876 - ERROR - Error in episode 578: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,878 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,878 - ERROR - Error in episode 579: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,881 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,882 - ERROR - Error in episode 580: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,883 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,884 - ERROR - Error in episode 581: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,886 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,886 - ERROR - Error in episode 582: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,888 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,888 - ERROR - Error in episode 583: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,890 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,890 - ERROR - Error in episode 584: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,892 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,893 - ERROR - Error in episode 585: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,895 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,895 - ERROR - Error in episode 586: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,898 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,898 - ERROR - Error in episode 587: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,900 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,901 - ERROR - Error in episode 588: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,902 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,902 - ERROR - Error in episode 589: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,904 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,905 - ERROR - Error in episode 590: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,907 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,907 - ERROR - Error in episode 591: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,909 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,909 - ERROR - Error in episode 592: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,911 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,912 - ERROR - Error in episode 593: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,914 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,914 - ERROR - Error in episode 594: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,916 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,916 - ERROR - Error in episode 595: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,918 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,919 - ERROR - Error in episode 596: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,920 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,920 - ERROR - Error in episode 597: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,923 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,923 - ERROR - Error in episode 598: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,925 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,925 - ERROR - Error in episode 599: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,927 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,928 - ERROR - Error in episode 600: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,928 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,928 - ERROR - Error in episode 601: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,932 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,932 - ERROR - Error in episode 602: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,934 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,936 - ERROR - Error in episode 603: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,937 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,937 - ERROR - Error in episode 604: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,939 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,939 - ERROR - Error in episode 605: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,941 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,941 - ERROR - Error in episode 606: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,941 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,941 - ERROR - Error in episode 607: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,946 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,946 - ERROR - Error in episode 608: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,948 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,948 - ERROR - Error in episode 609: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,950 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,952 - ERROR - Error in episode 610: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,953 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,954 - ERROR - Error in episode 611: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,954 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,956 - ERROR - Error in episode 612: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,956 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,958 - ERROR - Error in episode 613: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,960 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,960 - ERROR - Error in episode 614: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,961 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,961 - ERROR - Error in episode 615: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,963 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,965 - ERROR - Error in episode 616: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,967 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,967 - ERROR - Error in episode 617: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,969 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,970 - ERROR - Error in episode 618: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,971 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,971 - ERROR - Error in episode 619: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,974 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,975 - ERROR - Error in episode 620: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,976 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,976 - ERROR - Error in episode 621: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,978 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,978 - ERROR - Error in episode 622: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,978 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,978 - ERROR - Error in episode 623: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,983 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,984 - ERROR - Error in episode 624: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,986 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,986 - ERROR - Error in episode 625: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,988 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,988 - ERROR - Error in episode 626: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,990 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,991 - ERROR - Error in episode 627: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,992 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,993 - ERROR - Error in episode 628: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,995 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,995 - ERROR - Error in episode 629: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,997 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,997 - ERROR - Error in episode 630: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:31,999 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:31,999 - ERROR - Error in episode 631: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,001 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,002 - ERROR - Error in episode 632: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,003 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,003 - ERROR - Error in episode 633: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,005 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,007 - ERROR - Error in episode 634: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,008 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,008 - ERROR - Error in episode 635: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,010 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,010 - ERROR - Error in episode 636: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,013 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,014 - ERROR - Error in episode 637: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,015 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,016 - ERROR - Error in episode 638: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,018 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,018 - ERROR - Error in episode 639: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,020 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,020 - ERROR - Error in episode 640: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,022 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,023 - ERROR - Error in episode 641: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,025 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,025 - ERROR - Error in episode 642: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,027 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,027 - ERROR - Error in episode 643: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,028 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,030 - ERROR - Error in episode 644: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,031 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,032 - ERROR - Error in episode 645: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,033 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,034 - ERROR - Error in episode 646: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,035 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,036 - ERROR - Error in episode 647: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,037 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,037 - ERROR - Error in episode 648: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,037 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,037 - ERROR - Error in episode 649: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,037 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,037 - ERROR - Error in episode 650: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,044 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,045 - ERROR - Error in episode 651: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,045 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,047 - ERROR - Error in episode 652: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,048 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,048 - ERROR - Error in episode 653: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,050 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,050 - ERROR - Error in episode 654: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,052 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,053 - ERROR - Error in episode 655: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,055 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,056 - ERROR - Error in episode 656: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,058 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,058 - ERROR - Error in episode 657: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,060 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,060 - ERROR - Error in episode 658: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,060 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,060 - ERROR - Error in episode 659: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,063 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,063 - ERROR - Error in episode 660: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,066 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,066 - ERROR - Error in episode 661: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,068 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,068 - ERROR - Error in episode 662: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,071 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,072 - ERROR - Error in episode 663: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,073 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,074 - ERROR - Error in episode 664: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,075 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,075 - ERROR - Error in episode 665: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,077 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,077 - ERROR - Error in episode 666: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,081 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,081 - ERROR - Error in episode 667: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,083 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,083 - ERROR - Error in episode 668: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,085 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,086 - ERROR - Error in episode 669: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,087 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,087 - ERROR - Error in episode 670: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,090 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,090 - ERROR - Error in episode 671: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,092 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,093 - ERROR - Error in episode 672: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,095 - ERROR - Error in episode 673: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,097 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,097 - ERROR - Error in episode 674: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,099 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,099 - ERROR - Error in episode 675: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,101 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,102 - ERROR - Error in episode 676: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,103 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,104 - ERROR - Error in episode 677: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,106 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,107 - ERROR - Error in episode 678: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,109 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,109 - ERROR - Error in episode 679: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,111 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,112 - ERROR - Error in episode 680: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,112 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,112 - ERROR - Error in episode 681: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,112 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,112 - ERROR - Error in episode 682: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,118 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,118 - ERROR - Error in episode 683: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,120 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,121 - ERROR - Error in episode 684: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,124 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,124 - ERROR - Error in episode 685: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,127 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,127 - ERROR - Error in episode 686: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,129 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,129 - ERROR - Error in episode 687: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,131 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,131 - ERROR - Error in episode 688: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,131 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,134 - ERROR - Error in episode 689: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,135 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,136 - ERROR - Error in episode 690: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,138 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,139 - ERROR - Error in episode 691: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,141 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,142 - ERROR - Error in episode 692: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,143 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,145 - ERROR - Error in episode 693: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,145 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,145 - ERROR - Error in episode 694: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,148 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,148 - ERROR - Error in episode 695: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,151 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,152 - ERROR - Error in episode 696: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,154 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,154 - ERROR - Error in episode 697: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,155 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,157 - ERROR - Error in episode 698: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,159 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,159 - ERROR - Error in episode 699: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,161 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,161 - ERROR - Error in episode 700: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,163 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,164 - ERROR - Error in episode 701: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,167 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,167 - ERROR - Error in episode 702: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,169 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,169 - ERROR - Error in episode 703: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,171 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,171 - ERROR - Error in episode 704: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,174 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,174 - ERROR - Error in episode 705: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,176 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,176 - ERROR - Error in episode 706: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,179 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,180 - ERROR - Error in episode 707: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,182 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,182 - ERROR - Error in episode 708: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,184 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,185 - ERROR - Error in episode 709: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,187 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,187 - ERROR - Error in episode 710: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,189 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,190 - ERROR - Error in episode 711: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,192 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,192 - ERROR - Error in episode 712: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,194 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,195 - ERROR - Error in episode 713: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,196 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,197 - ERROR - Error in episode 714: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,200 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,200 - ERROR - Error in episode 715: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,202 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,202 - ERROR - Error in episode 716: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,204 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,204 - ERROR - Error in episode 717: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,206 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,207 - ERROR - Error in episode 718: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,210 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,210 - ERROR - Error in episode 719: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,212 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,212 - ERROR - Error in episode 720: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,214 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,215 - ERROR - Error in episode 721: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,217 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,217 - ERROR - Error in episode 722: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,219 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,220 - ERROR - Error in episode 723: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,222 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,222 - ERROR - Error in episode 724: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,224 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,225 - ERROR - Error in episode 725: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,227 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,227 - ERROR - Error in episode 726: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,229 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,229 - ERROR - Error in episode 727: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,231 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,232 - ERROR - Error in episode 728: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,234 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,234 - ERROR - Error in episode 729: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,236 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,237 - ERROR - Error in episode 730: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,239 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,240 - ERROR - Error in episode 731: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,242 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,242 - ERROR - Error in episode 732: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,244 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,244 - ERROR - Error in episode 733: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,245 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,246 - ERROR - Error in episode 734: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,248 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,248 - ERROR - Error in episode 735: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,251 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,251 - ERROR - Error in episode 736: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,254 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,254 - ERROR - Error in episode 737: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,255 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,256 - ERROR - Error in episode 738: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,259 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,259 - ERROR - Error in episode 739: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,261 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,262 - ERROR - Error in episode 740: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,263 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,264 - ERROR - Error in episode 741: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,266 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,266 - ERROR - Error in episode 742: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,268 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,268 - ERROR - Error in episode 743: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,270 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,272 - ERROR - Error in episode 744: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,273 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,273 - ERROR - Error in episode 745: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,276 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,276 - ERROR - Error in episode 746: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,278 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,279 - ERROR - Error in episode 747: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,280 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,280 - ERROR - Error in episode 748: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,282 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,282 - ERROR - Error in episode 749: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,284 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,284 - ERROR - Error in episode 750: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,287 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,287 - ERROR - Error in episode 751: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,290 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,291 - ERROR - Error in episode 752: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,292 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,292 - ERROR - Error in episode 753: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,294 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,295 - ERROR - Error in episode 754: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,297 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,297 - ERROR - Error in episode 755: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,298 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,298 - ERROR - Error in episode 756: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,301 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,301 - ERROR - Error in episode 757: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,303 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,304 - ERROR - Error in episode 758: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,305 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,306 - ERROR - Error in episode 759: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,307 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,308 - ERROR - Error in episode 760: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,310 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,310 - ERROR - Error in episode 761: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,312 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,312 - ERROR - Error in episode 762: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,315 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,315 - ERROR - Error in episode 763: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,317 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,317 - ERROR - Error in episode 764: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,320 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,320 - ERROR - Error in episode 765: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,322 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,323 - ERROR - Error in episode 766: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,324 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,324 - ERROR - Error in episode 767: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,326 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,326 - ERROR - Error in episode 768: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,329 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,330 - ERROR - Error in episode 769: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,331 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,332 - ERROR - Error in episode 770: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,334 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,334 - ERROR - Error in episode 771: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,336 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,337 - ERROR - Error in episode 772: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,339 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,340 - ERROR - Error in episode 773: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,341 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,342 - ERROR - Error in episode 774: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,343 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,344 - ERROR - Error in episode 775: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,346 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,346 - ERROR - Error in episode 776: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,349 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,350 - ERROR - Error in episode 777: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,351 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,352 - ERROR - Error in episode 778: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,354 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,354 - ERROR - Error in episode 779: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,356 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,356 - ERROR - Error in episode 780: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,359 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,359 - ERROR - Error in episode 781: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,361 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,361 - ERROR - Error in episode 782: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,364 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,364 - ERROR - Error in episode 783: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,365 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,366 - ERROR - Error in episode 784: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,367 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,368 - ERROR - Error in episode 785: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,370 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,370 - ERROR - Error in episode 786: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,373 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,373 - ERROR - Error in episode 787: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,375 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,376 - ERROR - Error in episode 788: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,377 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,377 - ERROR - Error in episode 789: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,379 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,379 - ERROR - Error in episode 790: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,382 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,382 - ERROR - Error in episode 791: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,383 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,385 - ERROR - Error in episode 792: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,386 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,387 - ERROR - Error in episode 793: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,387 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,387 - ERROR - Error in episode 794: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,390 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,390 - ERROR - Error in episode 795: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,393 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,394 - ERROR - Error in episode 796: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,396 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,396 - ERROR - Error in episode 797: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,397 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,398 - ERROR - Error in episode 798: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,400 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,401 - ERROR - Error in episode 799: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,403 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,403 - ERROR - Error in episode 800: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,405 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,405 - ERROR - Error in episode 801: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,407 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,408 - ERROR - Error in episode 802: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,409 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,409 - ERROR - Error in episode 803: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,409 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,409 - ERROR - Error in episode 804: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,414 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,416 - ERROR - Error in episode 805: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,418 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,418 - ERROR - Error in episode 806: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,419 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,419 - ERROR - Error in episode 807: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,422 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,422 - ERROR - Error in episode 808: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,425 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,425 - ERROR - Error in episode 809: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,426 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,426 - ERROR - Error in episode 810: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,426 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,426 - ERROR - Error in episode 811: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,426 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,431 - ERROR - Error in episode 812: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,433 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,433 - ERROR - Error in episode 813: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,434 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,434 - ERROR - Error in episode 814: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,434 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,438 - ERROR - Error in episode 815: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,439 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,441 - ERROR - Error in episode 816: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,442 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,443 - ERROR - Error in episode 817: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,444 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,444 - ERROR - Error in episode 818: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,447 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,447 - ERROR - Error in episode 819: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,449 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,450 - ERROR - Error in episode 820: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,451 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,451 - ERROR - Error in episode 821: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,453 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,455 - ERROR - Error in episode 822: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,456 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,457 - ERROR - Error in episode 823: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,458 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,458 - ERROR - Error in episode 824: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,460 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,460 - ERROR - Error in episode 825: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,460 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,460 - ERROR - Error in episode 826: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,464 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,466 - ERROR - Error in episode 827: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,468 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,468 - ERROR - Error in episode 828: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,470 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,470 - ERROR - Error in episode 829: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,472 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,472 - ERROR - Error in episode 830: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,475 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,475 - ERROR - Error in episode 831: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,476 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,476 - ERROR - Error in episode 832: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,479 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,479 - ERROR - Error in episode 833: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,481 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,482 - ERROR - Error in episode 834: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,483 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,483 - ERROR - Error in episode 835: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,486 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,486 - ERROR - Error in episode 836: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,488 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,489 - ERROR - Error in episode 837: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,490 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,492 - ERROR - Error in episode 838: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,493 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,494 - ERROR - Error in episode 839: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,496 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,497 - ERROR - Error in episode 840: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,498 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,499 - ERROR - Error in episode 841: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,500 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,500 - ERROR - Error in episode 842: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,502 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,503 - ERROR - Error in episode 843: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,505 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,505 - ERROR - Error in episode 844: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,507 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,508 - ERROR - Error in episode 845: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,508 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,508 - ERROR - Error in episode 846: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,508 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,508 - ERROR - Error in episode 847: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,514 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,515 - ERROR - Error in episode 848: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,517 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,517 - ERROR - Error in episode 849: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,517 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,517 - ERROR - Error in episode 850: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,521 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,521 - ERROR - Error in episode 851: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,523 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,524 - ERROR - Error in episode 852: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,526 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,527 - ERROR - Error in episode 853: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,529 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,529 - ERROR - Error in episode 854: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,529 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,529 - ERROR - Error in episode 855: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,534 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,534 - ERROR - Error in episode 856: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,536 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,536 - ERROR - Error in episode 857: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,538 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,538 - ERROR - Error in episode 858: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,541 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,541 - ERROR - Error in episode 859: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,543 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,543 - ERROR - Error in episode 860: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,545 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,545 - ERROR - Error in episode 861: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,547 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,547 - ERROR - Error in episode 862: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,549 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,550 - ERROR - Error in episode 863: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,551 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,551 - ERROR - Error in episode 864: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,554 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,555 - ERROR - Error in episode 865: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,556 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,557 - ERROR - Error in episode 866: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,558 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,558 - ERROR - Error in episode 867: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,560 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,560 - ERROR - Error in episode 868: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,562 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,562 - ERROR - Error in episode 869: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,565 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,565 - ERROR - Error in episode 870: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,567 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,567 - ERROR - Error in episode 871: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,568 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,570 - ERROR - Error in episode 872: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,571 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,572 - ERROR - Error in episode 873: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,574 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,574 - ERROR - Error in episode 874: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,577 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,577 - ERROR - Error in episode 875: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,578 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,579 - ERROR - Error in episode 876: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,580 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,581 - ERROR - Error in episode 877: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,583 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,583 - ERROR - Error in episode 878: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,585 - ERROR - Error in episode 879: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,587 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,587 - ERROR - Error in episode 880: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,589 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,589 - ERROR - Error in episode 881: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,592 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,592 - ERROR - Error in episode 882: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,594 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,594 - ERROR - Error in episode 883: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,596 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,597 - ERROR - Error in episode 884: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,598 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,599 - ERROR - Error in episode 885: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,600 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,600 - ERROR - Error in episode 886: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,603 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,604 - ERROR - Error in episode 887: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,606 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,606 - ERROR - Error in episode 888: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,607 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,607 - ERROR - Error in episode 889: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,610 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,610 - ERROR - Error in episode 890: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,611 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,611 - ERROR - Error in episode 891: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,614 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,614 - ERROR - Error in episode 892: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,616 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,617 - ERROR - Error in episode 893: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,618 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,619 - ERROR - Error in episode 894: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,620 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,621 - ERROR - Error in episode 895: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,622 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,622 - ERROR - Error in episode 896: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,625 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,626 - ERROR - Error in episode 897: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,627 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,627 - ERROR - Error in episode 898: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,630 - ERROR - Error in episode 899: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,632 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,632 - ERROR - Error in episode 900: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,634 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,634 - ERROR - Error in episode 901: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,636 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,636 - ERROR - Error in episode 902: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,638 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,639 - ERROR - Error in episode 903: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,640 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,641 - ERROR - Error in episode 904: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,642 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,642 - ERROR - Error in episode 905: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,645 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,645 - ERROR - Error in episode 906: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,647 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,647 - ERROR - Error in episode 907: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,650 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,650 - ERROR - Error in episode 908: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,652 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,652 - ERROR - Error in episode 909: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,654 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,655 - ERROR - Error in episode 910: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,656 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,656 - ERROR - Error in episode 911: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,658 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,659 - ERROR - Error in episode 912: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,660 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,661 - ERROR - Error in episode 913: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,663 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,663 - ERROR - Error in episode 914: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,666 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,666 - ERROR - Error in episode 915: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,667 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,668 - ERROR - Error in episode 916: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,669 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,670 - ERROR - Error in episode 917: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,672 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,672 - ERROR - Error in episode 918: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,674 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,675 - ERROR - Error in episode 919: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,676 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,676 - ERROR - Error in episode 920: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,676 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,676 - ERROR - Error in episode 921: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,676 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,676 - ERROR - Error in episode 922: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,683 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,684 - ERROR - Error in episode 923: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,685 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,686 - ERROR - Error in episode 924: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,687 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,688 - ERROR - Error in episode 925: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,689 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,690 - ERROR - Error in episode 926: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,691 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,692 - ERROR - Error in episode 927: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,694 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,694 - ERROR - Error in episode 928: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,696 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,697 - ERROR - Error in episode 929: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,698 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,699 - ERROR - Error in episode 930: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,700 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,700 - ERROR - Error in episode 931: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,702 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,702 - ERROR - Error in episode 932: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,704 - ERROR - Error in episode 933: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,707 - ERROR - Error in episode 934: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,710 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,710 - ERROR - Error in episode 935: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,711 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,711 - ERROR - Error in episode 936: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,714 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,714 - ERROR - Error in episode 937: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,716 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,717 - ERROR - Error in episode 938: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,718 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,719 - ERROR - Error in episode 939: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,720 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,721 - ERROR - Error in episode 940: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,723 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,723 - ERROR - Error in episode 941: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,725 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,725 - ERROR - Error in episode 942: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,727 - ERROR - Error in episode 943: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,727 - ERROR - Error in episode 944: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,727 - ERROR - Error in episode 945: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,734 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,734 - ERROR - Error in episode 946: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,737 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,737 - ERROR - Error in episode 947: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,739 - ERROR - Error in episode 948: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,741 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,742 - ERROR - Error in episode 949: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,743 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,744 - ERROR - Error in episode 950: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,746 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,747 - ERROR - Error in episode 951: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,748 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,748 - ERROR - Error in episode 952: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,751 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,752 - ERROR - Error in episode 953: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,754 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,754 - ERROR - Error in episode 954: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,755 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,756 - ERROR - Error in episode 955: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,758 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,759 - ERROR - Error in episode 956: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,760 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,761 - ERROR - Error in episode 957: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,762 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,763 - ERROR - Error in episode 958: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,765 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,765 - ERROR - Error in episode 959: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,767 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,767 - ERROR - Error in episode 960: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,769 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,769 - ERROR - Error in episode 961: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,771 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,772 - ERROR - Error in episode 962: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,773 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,774 - ERROR - Error in episode 963: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,775 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,775 - ERROR - Error in episode 964: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,777 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,777 - ERROR - Error in episode 965: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,781 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,781 - ERROR - Error in episode 966: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,782 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,783 - ERROR - Error in episode 967: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,783 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,783 - ERROR - Error in episode 968: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,788 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,788 - ERROR - Error in episode 969: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,790 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,790 - ERROR - Error in episode 970: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,792 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,792 - ERROR - Error in episode 971: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,794 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,794 - ERROR - Error in episode 972: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,796 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,797 - ERROR - Error in episode 973: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,799 - ERROR - Error in episode 974: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,801 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,802 - ERROR - Error in episode 975: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,803 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,804 - ERROR - Error in episode 976: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,806 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,806 - ERROR - Error in episode 977: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,808 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,808 - ERROR - Error in episode 978: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,810 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,811 - ERROR - Error in episode 979: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,812 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,813 - ERROR - Error in episode 980: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,814 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,814 - ERROR - Error in episode 981: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,816 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,818 - ERROR - Error in episode 982: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,819 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,819 - ERROR - Error in episode 983: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,821 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,821 - ERROR - Error in episode 984: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,822 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,822 - ERROR - Error in episode 985: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,825 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,825 - ERROR - Error in episode 986: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,828 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,828 - ERROR - Error in episode 987: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,830 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,830 - ERROR - Error in episode 988: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,830 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,830 - ERROR - Error in episode 989: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,834 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,836 - ERROR - Error in episode 990: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,836 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,837 - ERROR - Error in episode 991: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,839 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,839 - ERROR - Error in episode 992: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,841 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,841 - ERROR - Error in episode 993: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,843 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,844 - ERROR - Error in episode 994: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,846 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,846 - ERROR - Error in episode 995: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,846 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,846 - ERROR - Error in episode 996: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,846 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,851 - ERROR - Error in episode 997: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,853 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,853 - ERROR - Error in episode 998: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,856 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,856 - ERROR - Error in episode 999: 'NoneType' object has no attribute 'train_on_new_data' +2025-03-10 13:20:32,857 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1790, in train_agent + prediction_loss = env.train_price_predictor() + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "main.py", line 1247, in train_price_predictor + loss = self.price_predictor.train_on_new_data( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'train_on_new_data' + +2025-03-10 13:20:32,988 - INFO - Model saved to models/trading_agent_final.pt +2025-03-10 13:20:33,198 - ERROR - Training failed: 'episode_pnls' +2025-03-10 13:20:33,198 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1928, in train_agent + plot_training_results(stats) + File "main.py", line 1970, in plot_training_results + plt.plot(stats['episode_pnls']) + ~~~~~^^^^^^^^^^^^^^^^ +KeyError: 'episode_pnls' + +2025-03-10 13:20:33,323 - INFO - Model saved to models/trading_agent_emergency.pt +2025-03-10 13:20:33,323 - INFO - Emergency model saved due to training failure +2025-03-10 13:20:33,323 - INFO - Exchange connection closed +2025-03-10 13:21:59,698 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 13:21:59,719 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 13:21:59,720 - INFO - Fetching initial data for ETH/USDT +2025-03-10 13:22:03,540 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 13:22:03,563 - INFO - Initialized environment with 500 candles +2025-03-10 13:22:06,180 - INFO - Starting training for 1000 episodes... +2025-03-10 13:22:06,180 - INFO - Starting training on device: cuda +2025-03-10 13:22:06,181 - INFO - Loading best model from models/trading_agent_best_pnl.pt to resume training +2025-03-10 13:22:06,181 - INFO - Loading model from models/trading_agent_best_pnl.pt +2025-03-10 13:22:06,347 - INFO - Model loaded successfully with weights_only=True +2025-03-10 13:22:06,347 - INFO - Resumed with best metrics - Reward: 202.74, PnL: $-10.07, Win Rate: 30.9% +2025-03-10 13:22:06,634 - INFO - OPENED SHORT at 2049.89 | Stop loss: 2060.153732142857 | Take profit: 2019.120226785714 +2025-03-10 13:22:06,664 - INFO - STOP LOSS hit for short at 2060.153732142857 | PnL: -0.50% | $-1.19 +2025-03-10 13:22:06,672 - INFO - OPENED SHORT at 2063.29 | Stop loss: 2073.620732142857 | Take profit: 2032.3192267857144 +2025-03-10 13:22:06,673 - INFO - CLOSED short at 2064.61 | PnL: -0.06% | $-0.32 +2025-03-10 13:22:06,673 - INFO - OPENED SHORT at 2063.59 | Stop loss: 2073.9222321428574 | Take profit: 2032.6147267857143 +2025-03-10 13:22:06,704 - INFO - CLOSED short at 2057.8 | PnL: 0.28% | $0.35 +2025-03-10 13:22:06,704 - INFO - OPENED LONG at 2057.8 | Stop loss: 2047.496717857143 | Take profit: 2088.688423214286 +2025-03-10 13:22:06,708 - INFO - CLOSED long at 2057.89 | PnL: 0.00% | $-0.19 +2025-03-10 13:22:06,708 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.1937321428572 | Take profit: 2027.0002267857142 +2025-03-10 13:22:06,725 - INFO - STOP LOSS hit for short at 2068.1937321428572 | PnL: -0.50% | $-1.18 +2025-03-10 13:22:06,728 - INFO - OPENED SHORT at 2068.11 | Stop loss: 2078.464832142857 | Take profit: 2037.0669267857145 +2025-03-10 13:22:06,739 - INFO - CLOSED short at 2069.6 | PnL: -0.07% | $-0.33 +2025-03-10 13:22:06,739 - INFO - OPENED SHORT at 2068.65 | Stop loss: 2079.007532142857 | Take profit: 2037.5988267857144 +2025-03-10 13:22:06,756 - INFO - CLOSED short at 2073.73 | PnL: -0.25% | $-0.67 +2025-03-10 13:22:06,763 - INFO - OPENED SHORT at 2075.1 | Stop loss: 2085.489782142857 | Take profit: 2043.952076785714 +2025-03-10 13:22:06,800 - INFO - CLOSED short at 2070.7 | PnL: 0.21% | $0.21 +2025-03-10 13:22:06,800 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3322178571425 | Take profit: 2101.7819232142856 +2025-03-10 13:22:06,804 - INFO - CLOSED long at 2069.34 | PnL: -0.07% | $-0.32 +2025-03-10 13:22:06,804 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.7009821428574 | Take profit: 2038.2784767857145 +2025-03-10 13:22:07,013 - INFO - CLOSED short at 2065.99 | PnL: 0.16% | $0.12 +2025-03-10 13:22:07,038 - INFO - OPENED LONG at 2066.19 | Stop loss: 2055.844767857143 | Take profit: 2097.204273214286 +2025-03-10 13:22:07,157 - INFO - CLOSED long at 2068.51 | PnL: 0.11% | $0.02 +2025-03-10 13:22:07,157 - INFO - OPENED SHORT at 2068.51 | Stop loss: 2078.8668321428577 | Take profit: 2037.4609267857145 +2025-03-10 13:22:07,589 - INFO - CLOSED short at 2067.0 | PnL: 0.07% | $-0.05 +2025-03-10 13:22:07,589 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.650717857143 | Take profit: 2098.026423214286 +2025-03-10 13:22:07,643 - INFO - CLOSED long at 2067.46 | PnL: 0.02% | $-0.15 +2025-03-10 13:22:07,643 - INFO - OPENED SHORT at 2067.46 | Stop loss: 2077.8115821428573 | Take profit: 2036.4266767857143 +2025-03-10 13:22:07,668 - INFO - CLOSED short at 2066.8 | PnL: 0.03% | $-0.13 +2025-03-10 13:22:07,668 - INFO - OPENED LONG at 2066.8 | Stop loss: 2056.451717857143 | Take profit: 2097.823423214286 +2025-03-10 13:22:07,907 - INFO - CLOSED long at 2070.3 | PnL: 0.17% | $0.13 +2025-03-10 13:22:07,937 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.217767857143 | Take profit: 2102.6852732142856 +2025-03-10 13:22:08,448 - INFO - CLOSED long at 2066.15 | PnL: -0.26% | $-0.69 +2025-03-10 13:22:08,474 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.919417857143 | Take profit: 2096.2603232142856 +2025-03-10 13:22:08,706 - INFO - CLOSED long at 2065.54 | PnL: 0.01% | $-0.16 +2025-03-10 13:22:08,737 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.745267857143 | Take profit: 2097.102773214286 +2025-03-10 13:22:08,758 - INFO - CLOSED long at 2064.45 | PnL: -0.08% | $-0.34 +2025-03-10 13:22:08,779 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.7453178571427 | Take profit: 2095.0626232142854 +2025-03-10 13:22:08,802 - INFO - CLOSED long at 2062.71 | PnL: -0.07% | $-0.31 +2025-03-10 13:22:08,825 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.561267857143 | Take profit: 2093.8547732142856 +2025-03-10 13:22:08,913 - INFO - CLOSED long at 2060.9 | PnL: -0.10% | $-0.37 +2025-03-10 13:22:08,913 - INFO - OPENED SHORT at 2060.9 | Stop loss: 2071.218782142857 | Take profit: 2029.9650767857142 +2025-03-10 13:22:08,960 - INFO - CLOSED short at 2058.89 | PnL: 0.10% | $-0.00 +2025-03-10 13:22:08,961 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.581267857143 | Take profit: 2089.7947732142857 +2025-03-10 13:22:09,173 - INFO - CLOSED long at 2064.1 | PnL: 0.25% | $0.29 +2025-03-10 13:22:09,173 - INFO - OPENED SHORT at 2064.1 | Stop loss: 2074.4347821428573 | Take profit: 2033.117076785714 +2025-03-10 13:22:09,205 - INFO - CLOSED short at 2065.36 | PnL: -0.06% | $-0.30 +2025-03-10 13:22:09,206 - INFO - OPENED LONG at 2065.36 | Stop loss: 2055.018917857143 | Take profit: 2096.361823214286 +2025-03-10 13:22:09,231 - INFO - CLOSED long at 2064.33 | PnL: -0.05% | $-0.28 +2025-03-10 13:22:09,256 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.058767857143 | Take profit: 2094.3622732142853 +2025-03-10 13:22:09,300 - INFO - CLOSED long at 2065.89 | PnL: 0.12% | $0.04 +2025-03-10 13:22:09,325 - INFO - OPENED LONG at 2063.53 | Stop loss: 2053.198067857143 | Take profit: 2094.504373214286 +2025-03-10 13:22:09,446 - INFO - CLOSED long at 2060.7 | PnL: -0.14% | $-0.44 +2025-03-10 13:22:09,488 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.297667857143 | Take profit: 2090.5255732142855 +2025-03-10 13:22:09,573 - INFO - CLOSED long at 2059.96 | PnL: 0.02% | $-0.15 +2025-03-10 13:22:09,573 - INFO - OPENED SHORT at 2059.96 | Stop loss: 2070.2740821428574 | Take profit: 2029.0391767857143 +2025-03-10 13:22:09,603 - INFO - CLOSED short at 2059.46 | PnL: 0.02% | $-0.14 +2025-03-10 13:22:09,603 - INFO - OPENED LONG at 2059.46 | Stop loss: 2049.1484178571427 | Take profit: 2090.3733232142854 +2025-03-10 13:22:09,917 - INFO - CLOSED long at 2063.4 | PnL: 0.19% | $0.17 +2025-03-10 13:22:09,938 - INFO - OPENED LONG at 2066.36 | Stop loss: 2056.013917857143 | Take profit: 2097.3768232142857 +2025-03-10 13:22:10,104 - INFO - CLOSED long at 2067.01 | PnL: 0.03% | $-0.13 +2025-03-10 13:22:10,134 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.347267857143 | Take profit: 2096.6967732142857 +2025-03-10 13:22:10,197 - INFO - CLOSED long at 2072.0 | PnL: 0.31% | $0.38 +2025-03-10 13:22:10,238 - INFO - OPENED LONG at 2074.3 | Stop loss: 2063.9142178571433 | Take profit: 2105.435923214286 +2025-03-10 13:22:10,518 - INFO - CLOSED long at 2070.0 | PnL: -0.21% | $-0.57 +2025-03-10 13:22:10,518 - INFO - OPENED SHORT at 2070.0 | Stop loss: 2080.364282142857 | Take profit: 2038.9285767857143 +2025-03-10 13:22:10,542 - INFO - CLOSED short at 2068.15 | PnL: 0.09% | $-0.02 +2025-03-10 13:22:10,542 - INFO - OPENED LONG at 2068.15 | Stop loss: 2057.794967857143 | Take profit: 2099.193673214286 +2025-03-10 13:22:11,256 - INFO - CLOSED long at 2071.59 | PnL: 0.17% | $0.12 +2025-03-10 13:22:11,286 - INFO - OPENED LONG at 2070.2 | Stop loss: 2059.834717857143 | Take profit: 2101.274423214286 +2025-03-10 13:22:11,503 - INFO - CLOSED long at 2068.19 | PnL: -0.10% | $-0.37 +2025-03-10 13:22:11,546 - INFO - OPENED LONG at 2068.67 | Stop loss: 2058.312367857143 | Take profit: 2099.7214732142857 +2025-03-10 13:22:11,655 - INFO - CLOSED long at 2071.61 | PnL: 0.14% | $0.08 +2025-03-10 13:22:11,656 - INFO - OPENED SHORT at 2071.61 | Stop loss: 2081.9823321428576 | Take profit: 2040.5144267857145 +2025-03-10 13:22:11,680 - INFO - CLOSED short at 2074.37 | PnL: -0.13% | $-0.43 +2025-03-10 13:22:11,680 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.9838678571427 | Take profit: 2105.5069732142856 +2025-03-10 13:22:11,848 - INFO - CLOSED long at 2075.61 | PnL: 0.06% | $-0.07 +2025-03-10 13:22:11,889 - INFO - OPENED LONG at 2074.0 | Stop loss: 2063.615717857143 | Take profit: 2105.131423214286 +2025-03-10 13:22:12,232 - INFO - CLOSED long at 2067.19 | PnL: -0.33% | $-0.79 +2025-03-10 13:22:12,232 - INFO - OPENED SHORT at 2067.19 | Stop loss: 2077.5402321428573 | Take profit: 2036.1607267857144 +2025-03-10 13:22:12,258 - INFO - CLOSED short at 2065.5 | PnL: 0.08% | $-0.03 +2025-03-10 13:22:12,259 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.158217857143 | Take profit: 2096.503923214286 +2025-03-10 13:22:12,512 - INFO - CLOSED long at 2065.06 | PnL: -0.02% | $-0.22 +2025-03-10 13:22:12,533 - INFO - OPENED SHORT at 2064.11 | Stop loss: 2074.444832142857 | Take profit: 2033.1269267857144 +2025-03-10 13:22:12,558 - INFO - CLOSED short at 2064.5 | PnL: -0.02% | $-0.22 +2025-03-10 13:22:12,558 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.163217857143 | Take profit: 2095.488923214286 +2025-03-10 13:22:12,639 - INFO - CLOSED long at 2060.2 | PnL: -0.21% | $-0.56 +2025-03-10 13:22:12,680 - INFO - OPENED LONG at 2059.2 | Stop loss: 2048.889717857143 | Take profit: 2090.1094232142855 +2025-03-10 13:22:13,631 - INFO - CLOSED long at 2070.41 | PnL: 0.54% | $0.80 +2025-03-10 13:22:13,657 - INFO - OPENED LONG at 2073.49 | Stop loss: 2063.1082678571424 | Take profit: 2104.6137732142856 +2025-03-10 13:22:14,058 - INFO - TAKE PROFIT hit for long at 2104.6137732142856 | PnL: 1.50% | $2.55 +2025-03-10 13:22:14,080 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.8280178571426 | Take profit: 2171.6545232142857 +2025-03-10 13:22:14,304 - INFO - STOP LOSS hit for long at 2128.8280178571426 | PnL: -0.50% | $-1.12 +2025-03-10 13:22:14,355 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.649217857143 | Take profit: 2159.230923214286 +2025-03-10 13:22:14,444 - INFO - CLOSED long at 2121.09 | PnL: -0.29% | $-0.72 +2025-03-10 13:22:14,445 - INFO - OPENED SHORT at 2121.09 | Stop loss: 2131.7097321428573 | Take profit: 2089.2522267857144 +2025-03-10 13:22:14,464 - INFO - CLOSED short at 2120.15 | PnL: 0.04% | $-0.10 +2025-03-10 13:22:14,464 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.534967857143 | Take profit: 2151.9736732142856 +2025-03-10 13:22:14,572 - INFO - CLOSED long at 2119.14 | PnL: -0.05% | $-0.27 +2025-03-10 13:22:14,599 - INFO - OPENED LONG at 2119.07 | Stop loss: 2108.460367857143 | Take profit: 2150.8774732142856 +2025-03-10 13:22:14,657 - INFO - STOP LOSS hit for long at 2108.460367857143 | PnL: -0.50% | $-1.10 +2025-03-10 13:22:14,712 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032717857143 | Take profit: 2142.2804232142853 +2025-03-10 13:22:14,834 - INFO - CLOSED long at 2112.95 | PnL: 0.11% | $0.02 +2025-03-10 13:22:14,863 - INFO - OPENED LONG at 2112.46 | Stop loss: 2101.883417857143 | Take profit: 2144.168323214286 +2025-03-10 13:22:15,182 - INFO - STOP LOSS hit for long at 2101.883417857143 | PnL: -0.50% | $-1.08 +2025-03-10 13:22:15,252 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0180678571433 | Take profit: 2131.044373214286 +2025-03-10 13:22:15,806 - INFO - CLOSED long at 2094.08 | PnL: -0.26% | $-0.64 +2025-03-10 13:22:15,806 - INFO - OPENED SHORT at 2094.08 | Stop loss: 2104.5646821428572 | Take profit: 2062.647376785714 +2025-03-10 13:22:15,834 - INFO - CLOSED short at 2088.35 | PnL: 0.27% | $0.31 +2025-03-10 13:22:15,834 - INFO - OPENED LONG at 2088.35 | Stop loss: 2077.893967857143 | Take profit: 2119.6966732142855 +2025-03-10 13:22:16,259 - INFO - CLOSED long at 2084.72 | PnL: -0.17% | $-0.49 +2025-03-10 13:22:16,259 - INFO - OPENED SHORT at 2084.72 | Stop loss: 2095.1578821428566 | Take profit: 2053.427776785714 +2025-03-10 13:22:16,283 - INFO - CLOSED short at 2085.83 | PnL: -0.05% | $-0.27 +2025-03-10 13:22:16,283 - INFO - OPENED LONG at 2085.83 | Stop loss: 2075.386567857143 | Take profit: 2117.138873214286 +2025-03-10 13:22:16,745 - INFO - CLOSED long at 2097.11 | PnL: 0.54% | $0.78 +2025-03-10 13:22:16,772 - INFO - OPENED LONG at 2098.49 | Stop loss: 2087.9832678571424 | Take profit: 2129.9887732142856 +2025-03-10 13:22:16,838 - INFO - CLOSED long at 2099.73 | PnL: 0.06% | $-0.07 +2025-03-10 13:22:16,838 - INFO - OPENED SHORT at 2099.73 | Stop loss: 2110.2429321428567 | Take profit: 2068.2126267857143 +2025-03-10 13:22:16,864 - INFO - CLOSED short at 2106.15 | PnL: -0.31% | $-0.72 +2025-03-10 13:22:16,864 - INFO - OPENED LONG at 2106.15 | Stop loss: 2095.604967857143 | Take profit: 2137.763673214286 +2025-03-10 13:22:17,079 - INFO - CLOSED long at 2104.4 | PnL: -0.08% | $-0.32 +2025-03-10 13:22:17,105 - INFO - OPENED LONG at 2105.21 | Stop loss: 2094.669667857143 | Take profit: 2136.8095732142856 +2025-03-10 13:22:17,295 - INFO - CLOSED long at 2108.0 | PnL: 0.13% | $0.06 +2025-03-10 13:22:17,316 - INFO - OPENED LONG at 2112.28 | Stop loss: 2101.704317857143 | Take profit: 2143.985623214286 +2025-03-10 13:22:17,344 - INFO - Trade Analysis: Win Rate=19.0% in uptrends, 0.0% in downtrends | Avg Win=$0.38, Avg Loss=$-0.41 +2025-03-10 13:22:17,345 - INFO - Episode 0: Reward=-85.99, Balance=$88.37, Win Rate=27.9%, Trades=61, Episode PnL=$-7.55, Total PnL=$-11.63, Max Drawdown=11.7%, Pred Accuracy=97.1% +2025-03-10 13:22:17,495 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 13:22:17,495 - INFO - New best PnL model saved: $-7.55 +2025-03-10 13:22:17,644 - INFO - Model saved to checkpoints/trading_agent_episode_0.pt +2025-03-10 13:22:17,646 - INFO - Checkpoint saved at episode 0 +2025-03-10 13:22:17,794 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 13:22:17,803 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2402, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 13:22:18,012 - INFO - OPENED LONG at 2051.11 | Stop loss: 2040.840167857143 | Take profit: 2081.898073214286 +2025-03-10 13:22:18,225 - INFO - CLOSED long at 2059.7 | PnL: 0.42% | $0.63 +2025-03-10 13:22:18,235 - INFO - OPENED SHORT at 2059.7 | Stop loss: 2070.012782142857 | Take profit: 2028.7830767857142 +2025-03-10 13:22:18,259 - INFO - CLOSED short at 2061.49 | PnL: -0.09% | $-0.37 +2025-03-10 13:22:18,259 - INFO - OPENED LONG at 2061.49 | Stop loss: 2051.168267857143 | Take profit: 2092.4337732142853 +2025-03-10 13:22:18,354 - INFO - CLOSED long at 2061.61 | PnL: 0.01% | $-0.19 +2025-03-10 13:22:18,354 - INFO - OPENED SHORT at 2061.61 | Stop loss: 2071.932332142857 | Take profit: 2030.6644267857146 +2025-03-10 13:22:18,382 - INFO - CLOSED short at 2064.69 | PnL: -0.15% | $-0.50 +2025-03-10 13:22:18,383 - INFO - OPENED LONG at 2064.69 | Stop loss: 2054.352267857143 | Take profit: 2095.681773214286 +2025-03-10 13:22:18,721 - INFO - CLOSED long at 2061.79 | PnL: -0.14% | $-0.48 +2025-03-10 13:22:18,722 - INFO - OPENED SHORT at 2061.79 | Stop loss: 2072.113232142857 | Take profit: 2030.8417267857142 +2025-03-10 13:22:18,744 - INFO - CLOSED short at 2061.18 | PnL: 0.03% | $-0.14 +2025-03-10 13:22:18,744 - INFO - OPENED LONG at 2061.18 | Stop loss: 2050.859817857143 | Take profit: 2092.1191232142855 +2025-03-10 13:22:18,967 - INFO - CLOSED long at 2069.6 | PnL: 0.41% | $0.61 +2025-03-10 13:22:18,967 - INFO - OPENED SHORT at 2069.6 | Stop loss: 2079.962282142857 | Take profit: 2038.534576785714 +2025-03-10 13:22:19,017 - INFO - CLOSED short at 2068.99 | PnL: 0.03% | $-0.14 +2025-03-10 13:22:19,017 - INFO - OPENED LONG at 2068.99 | Stop loss: 2058.630767857143 | Take profit: 2100.0462732142855 +2025-03-10 13:22:19,044 - INFO - CLOSED long at 2067.9 | PnL: -0.05% | $-0.30 +2025-03-10 13:22:19,044 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.2537821428573 | Take profit: 2036.8600767857145 +2025-03-10 13:22:19,072 - INFO - CLOSED short at 2067.69 | PnL: 0.01% | $-0.18 +2025-03-10 13:22:19,072 - INFO - OPENED LONG at 2067.69 | Stop loss: 2057.337267857143 | Take profit: 2098.726773214286 +2025-03-10 13:22:19,098 - INFO - CLOSED long at 2070.26 | PnL: 0.12% | $0.05 +2025-03-10 13:22:19,098 - INFO - OPENED SHORT at 2070.26 | Stop loss: 2080.625582142857 | Take profit: 2039.1846767857144 +2025-03-10 13:22:19,129 - INFO - CLOSED short at 2071.44 | PnL: -0.06% | $-0.31 +2025-03-10 13:22:19,129 - INFO - OPENED LONG at 2071.44 | Stop loss: 2061.068517857143 | Take profit: 2102.533023214286 +2025-03-10 13:22:19,383 - INFO - CLOSED long at 2071.38 | PnL: -0.00% | $-0.20 +2025-03-10 13:22:19,383 - INFO - OPENED SHORT at 2071.38 | Stop loss: 2081.7511821428575 | Take profit: 2040.2878767857144 +2025-03-10 13:22:19,432 - INFO - CLOSED short at 2071.41 | PnL: -0.00% | $-0.20 +2025-03-10 13:22:19,432 - INFO - OPENED LONG at 2071.41 | Stop loss: 2061.0386678571426 | Take profit: 2102.502573214286 +2025-03-10 13:22:19,944 - INFO - CLOSED long at 2065.08 | PnL: -0.31% | $-0.79 +2025-03-10 13:22:19,944 - INFO - OPENED SHORT at 2065.08 | Stop loss: 2075.4196821428573 | Take profit: 2034.0823767857144 +2025-03-10 13:22:19,966 - INFO - CLOSED short at 2066.18 | PnL: -0.05% | $-0.30 +2025-03-10 13:22:19,966 - INFO - OPENED LONG at 2066.18 | Stop loss: 2055.8348178571428 | Take profit: 2097.194123214286 +2025-03-10 13:22:20,407 - INFO - CLOSED long at 2073.9 | PnL: 0.37% | $0.53 +2025-03-10 13:22:20,431 - INFO - OPENED LONG at 2071.92 | Stop loss: 2061.5461178571427 | Take profit: 2103.0202232142856 +2025-03-10 13:22:20,668 - INFO - CLOSED long at 2067.79 | PnL: -0.20% | $-0.58 +2025-03-10 13:22:20,695 - INFO - OPENED LONG at 2067.46 | Stop loss: 2057.1084178571427 | Take profit: 2098.4933232142857 +2025-03-10 13:22:20,810 - INFO - CLOSED long at 2067.89 | PnL: 0.02% | $-0.15 +2025-03-10 13:22:20,811 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.243732142857 | Take profit: 2036.8502267857143 +2025-03-10 13:22:20,844 - INFO - CLOSED short at 2068.58 | PnL: -0.03% | $-0.26 +2025-03-10 13:22:20,844 - INFO - OPENED LONG at 2068.58 | Stop loss: 2058.2228178571427 | Take profit: 2099.6301232142855 +2025-03-10 13:22:21,059 - INFO - CLOSED long at 2070.3 | PnL: 0.08% | $-0.03 +2025-03-10 13:22:21,083 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.217767857143 | Take profit: 2102.6852732142856 +2025-03-10 13:22:21,379 - INFO - CLOSED long at 2066.39 | PnL: -0.25% | $-0.67 +2025-03-10 13:22:21,420 - INFO - OPENED LONG at 2064.47 | Stop loss: 2054.1333678571427 | Take profit: 2095.4584732142857 +2025-03-10 13:22:21,616 - INFO - CLOSED long at 2065.26 | PnL: 0.04% | $-0.12 +2025-03-10 13:22:21,616 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.6005821428575 | Take profit: 2034.2596767857144 +2025-03-10 13:22:21,643 - INFO - CLOSED short at 2062.89 | PnL: 0.11% | $0.03 +2025-03-10 13:22:21,643 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.561267857143 | Take profit: 2093.8547732142856 +2025-03-10 13:22:22,274 - INFO - CLOSED long at 2061.8 | PnL: -0.05% | $-0.29 +2025-03-10 13:22:22,274 - INFO - OPENED SHORT at 2061.8 | Stop loss: 2072.123282142857 | Take profit: 2030.8515767857143 +2025-03-10 13:22:22,298 - INFO - CLOSED short at 2064.7 | PnL: -0.14% | $-0.46 +2025-03-10 13:22:22,298 - INFO - OPENED LONG at 2064.7 | Stop loss: 2054.3622178571427 | Take profit: 2095.6919232142855 +2025-03-10 13:22:22,583 - INFO - CLOSED long at 2063.0 | PnL: -0.08% | $-0.34 +2025-03-10 13:22:22,611 - INFO - OPENED LONG at 2062.6 | Stop loss: 2052.2727178571427 | Take profit: 2093.5604232142855 +2025-03-10 13:22:22,951 - INFO - CLOSED long at 2054.83 | PnL: -0.38% | $-0.90 +2025-03-10 13:22:22,952 - INFO - OPENED SHORT at 2054.83 | Stop loss: 2065.118432142857 | Take profit: 2023.9861267857143 +2025-03-10 13:22:22,973 - INFO - CLOSED short at 2056.71 | PnL: -0.09% | $-0.36 +2025-03-10 13:22:22,973 - INFO - OPENED LONG at 2056.71 | Stop loss: 2046.412167857143 | Take profit: 2087.5820732142856 +2025-03-10 13:22:22,997 - INFO - CLOSED long at 2058.15 | PnL: 0.07% | $-0.06 +2025-03-10 13:22:23,021 - INFO - OPENED LONG at 2059.8 | Stop loss: 2049.486717857143 | Take profit: 2090.718423214286 +2025-03-10 13:22:23,168 - INFO - CLOSED long at 2066.36 | PnL: 0.32% | $0.41 +2025-03-10 13:22:23,168 - INFO - OPENED SHORT at 2066.36 | Stop loss: 2076.706082142857 | Take profit: 2035.3431767857144 +2025-03-10 13:22:23,196 - INFO - CLOSED short at 2066.01 | PnL: 0.02% | $-0.15 +2025-03-10 13:22:23,196 - INFO - OPENED LONG at 2066.01 | Stop loss: 2055.665667857143 | Take profit: 2097.021573214286 +2025-03-10 13:22:23,688 - INFO - CLOSED long at 2067.44 | PnL: 0.07% | $-0.06 +2025-03-10 13:22:23,718 - INFO - OPENED LONG at 2068.79 | Stop loss: 2058.431767857143 | Take profit: 2099.843273214286 +2025-03-10 13:22:23,758 - INFO - CLOSED long at 2071.49 | PnL: 0.13% | $0.06 +2025-03-10 13:22:23,759 - INFO - OPENED SHORT at 2071.49 | Stop loss: 2081.861732142857 | Take profit: 2040.3962267857141 +2025-03-10 13:22:23,775 - INFO - CLOSED short at 2069.87 | PnL: 0.08% | $-0.04 +2025-03-10 13:22:23,775 - INFO - OPENED LONG at 2069.87 | Stop loss: 2059.506367857143 | Take profit: 2100.9394732142855 +2025-03-10 13:22:24,017 - INFO - CLOSED long at 2067.53 | PnL: -0.11% | $-0.40 +2025-03-10 13:22:24,036 - INFO - OPENED LONG at 2065.29 | Stop loss: 2054.949267857143 | Take profit: 2096.2907732142858 +2025-03-10 13:22:24,349 - INFO - CLOSED long at 2070.61 | PnL: 0.26% | $0.29 +2025-03-10 13:22:24,349 - INFO - OPENED SHORT at 2070.61 | Stop loss: 2080.9773321428574 | Take profit: 2039.5294267857146 +2025-03-10 13:22:24,374 - INFO - CLOSED short at 2071.99 | PnL: -0.07% | $-0.31 +2025-03-10 13:22:24,375 - INFO - OPENED LONG at 2071.99 | Stop loss: 2061.6157678571426 | Take profit: 2103.0912732142856 +2025-03-10 13:22:24,482 - INFO - CLOSED long at 2071.61 | PnL: -0.02% | $-0.22 +2025-03-10 13:22:24,482 - INFO - OPENED SHORT at 2071.61 | Stop loss: 2081.9823321428576 | Take profit: 2040.5144267857145 +2025-03-10 13:22:24,507 - INFO - CLOSED short at 2074.37 | PnL: -0.13% | $-0.43 +2025-03-10 13:22:24,508 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.9838678571427 | Take profit: 2105.5069732142856 +2025-03-10 13:22:24,777 - INFO - CLOSED long at 2067.0 | PnL: -0.36% | $-0.84 +2025-03-10 13:22:24,777 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.349282142857 | Take profit: 2035.9735767857142 +2025-03-10 13:22:24,802 - INFO - CLOSED short at 2067.9 | PnL: -0.04% | $-0.26 +2025-03-10 13:22:24,802 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.546217857143 | Take profit: 2098.939923214286 +2025-03-10 13:22:24,843 - INFO - CLOSED long at 2066.89 | PnL: -0.05% | $-0.27 +2025-03-10 13:22:24,843 - INFO - OPENED SHORT at 2066.89 | Stop loss: 2077.238732142857 | Take profit: 2035.8652267857142 +2025-03-10 13:22:24,867 - INFO - CLOSED short at 2067.88 | PnL: -0.05% | $-0.27 +2025-03-10 13:22:24,867 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.526317857143 | Take profit: 2098.919623214286 +2025-03-10 13:22:25,315 - INFO - CLOSED long at 2065.06 | PnL: -0.14% | $-0.43 +2025-03-10 13:22:25,315 - INFO - OPENED SHORT at 2065.06 | Stop loss: 2075.399582142857 | Take profit: 2034.062676785714 +2025-03-10 13:22:25,454 - INFO - CLOSED short at 2066.33 | PnL: -0.06% | $-0.29 +2025-03-10 13:22:25,455 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.9840678571427 | Take profit: 2097.3463732142854 +2025-03-10 13:22:25,542 - INFO - CLOSED long at 2059.2 | PnL: -0.35% | $-0.80 +2025-03-10 13:22:25,543 - INFO - OPENED SHORT at 2059.2 | Stop loss: 2069.5102821428572 | Take profit: 2028.290576785714 +2025-03-10 13:22:25,605 - INFO - CLOSED short at 2056.77 | PnL: 0.12% | $0.03 +2025-03-10 13:22:25,664 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.949667857143 | Take profit: 2079.969573214286 +2025-03-10 13:22:25,701 - INFO - CLOSED long at 2049.5 | PnL: 0.01% | $-0.15 +2025-03-10 13:22:25,701 - INFO - OPENED SHORT at 2049.5 | Stop loss: 2059.761782142857 | Take profit: 2018.7360767857142 +2025-03-10 13:22:25,754 - INFO - CLOSED short at 2051.99 | PnL: -0.12% | $-0.39 +2025-03-10 13:22:25,754 - INFO - OPENED LONG at 2051.99 | Stop loss: 2041.7157678571427 | Take profit: 2082.791273214286 +2025-03-10 13:22:25,936 - INFO - CLOSED long at 2063.9 | PnL: 0.58% | $0.85 +2025-03-10 13:22:25,937 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.233782142857 | Take profit: 2032.9200767857144 +2025-03-10 13:22:25,962 - INFO - CLOSED short at 2065.1 | PnL: -0.06% | $-0.28 +2025-03-10 13:22:25,963 - INFO - OPENED LONG at 2065.1 | Stop loss: 2054.760217857143 | Take profit: 2096.0979232142854 +2025-03-10 13:22:25,983 - INFO - CLOSED long at 2062.43 | PnL: -0.13% | $-0.41 +2025-03-10 13:22:25,983 - INFO - OPENED SHORT at 2062.43 | Stop loss: 2072.7564321428567 | Take profit: 2031.472126785714 +2025-03-10 13:22:26,026 - INFO - CLOSED short at 2065.12 | PnL: -0.13% | $-0.41 +2025-03-10 13:22:26,026 - INFO - OPENED LONG at 2065.12 | Stop loss: 2054.780117857143 | Take profit: 2096.1182232142855 +2025-03-10 13:22:26,047 - INFO - CLOSED long at 2068.33 | PnL: 0.16% | $0.10 +2025-03-10 13:22:26,047 - INFO - OPENED SHORT at 2068.33 | Stop loss: 2078.685932142857 | Take profit: 2037.2836267857142 +2025-03-10 13:22:26,098 - INFO - CLOSED short at 2067.49 | PnL: 0.04% | $-0.10 +2025-03-10 13:22:26,099 - INFO - OPENED LONG at 2067.49 | Stop loss: 2057.1382678571426 | Take profit: 2098.5237732142855 +2025-03-10 13:22:26,240 - INFO - CLOSED long at 2059.9 | PnL: -0.37% | $-0.82 +2025-03-10 13:22:26,273 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3822178571427 | Take profit: 2091.6319232142855 +2025-03-10 13:22:26,758 - INFO - TAKE PROFIT hit for long at 2091.6319232142855 | PnL: 1.50% | $2.45 +2025-03-10 13:22:26,816 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.106817857143 | Take profit: 2163.7781232142856 +2025-03-10 13:22:27,097 - INFO - CLOSED long at 2126.99 | PnL: -0.22% | $-0.58 +2025-03-10 13:22:27,140 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.032267857143 | Take profit: 2160.6417732142854 +2025-03-10 13:22:27,208 - INFO - STOP LOSS hit for long at 2118.032267857143 | PnL: -0.50% | $-1.07 +2025-03-10 13:22:27,230 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3160678571426 | Take profit: 2151.750373214286 +2025-03-10 13:22:27,435 - INFO - STOP LOSS hit for long at 2109.3160678571426 | PnL: -0.50% | $-1.06 +2025-03-10 13:22:27,463 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032717857143 | Take profit: 2142.2804232142853 +2025-03-10 13:22:27,528 - INFO - CLOSED long at 2112.95 | PnL: 0.11% | $0.02 +2025-03-10 13:22:27,552 - INFO - OPENED LONG at 2112.46 | Stop loss: 2101.883417857143 | Take profit: 2144.168323214286 +2025-03-10 13:22:27,673 - INFO - CLOSED long at 2114.8 | PnL: 0.11% | $0.02 +2025-03-10 13:22:27,673 - INFO - OPENED SHORT at 2114.8 | Stop loss: 2125.3882821428574 | Take profit: 2083.0565767857142 +2025-03-10 13:22:27,707 - INFO - CLOSED short at 2110.9 | PnL: 0.18% | $0.15 +2025-03-10 13:22:27,753 - INFO - OPENED LONG at 2108.71 | Stop loss: 2098.152167857143 | Take profit: 2140.362073214286 +2025-03-10 13:22:27,896 - INFO - STOP LOSS hit for long at 2098.152167857143 | PnL: -0.50% | $-1.05 +2025-03-10 13:22:27,921 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0180678571433 | Take profit: 2131.044373214286 +2025-03-10 13:22:28,183 - INFO - CLOSED long at 2103.86 | PnL: 0.21% | $0.18 +2025-03-10 13:22:28,214 - INFO - OPENED LONG at 2104.68 | Stop loss: 2094.1423178571426 | Take profit: 2136.2716232142857 +2025-03-10 13:22:28,353 - INFO - STOP LOSS hit for long at 2094.1423178571426 | PnL: -0.50% | $-1.04 +2025-03-10 13:22:28,382 - INFO - OPENED LONG at 2093.33 | Stop loss: 2082.849067857143 | Take profit: 2124.7513732142856 +2025-03-10 13:22:28,656 - INFO - STOP LOSS hit for long at 2082.849067857143 | PnL: -0.50% | $-1.03 +2025-03-10 13:22:28,685 - INFO - OPENED LONG at 2081.49 | Stop loss: 2071.068267857143 | Take profit: 2112.7337732142855 +2025-03-10 13:22:28,740 - INFO - CLOSED long at 2083.41 | PnL: 0.09% | $-0.01 +2025-03-10 13:22:28,740 - INFO - OPENED SHORT at 2083.41 | Stop loss: 2093.841332142857 | Take profit: 2052.137426785714 +2025-03-10 13:22:28,766 - INFO - CLOSED short at 2085.09 | PnL: -0.08% | $-0.30 +2025-03-10 13:22:28,766 - INFO - OPENED LONG at 2085.09 | Stop loss: 2074.650267857143 | Take profit: 2116.387773214286 +2025-03-10 13:22:28,809 - INFO - CLOSED long at 2086.57 | PnL: 0.07% | $-0.05 +2025-03-10 13:22:28,810 - INFO - OPENED SHORT at 2086.57 | Stop loss: 2097.017132142857 | Take profit: 2055.2500267857145 +2025-03-10 13:22:28,823 - INFO - CLOSED short at 2085.8 | PnL: 0.04% | $-0.11 +2025-03-10 13:22:28,823 - INFO - OPENED LONG at 2085.8 | Stop loss: 2075.356717857143 | Take profit: 2117.1084232142857 +2025-03-10 13:22:29,120 - INFO - CLOSED long at 2087.78 | PnL: 0.09% | $-0.01 +2025-03-10 13:22:29,120 - INFO - OPENED SHORT at 2087.78 | Stop loss: 2098.2331821428575 | Take profit: 2056.4418767857146 +2025-03-10 13:22:29,144 - INFO - CLOSED short at 2086.81 | PnL: 0.05% | $-0.09 +2025-03-10 13:22:29,144 - INFO - OPENED LONG at 2086.81 | Stop loss: 2076.361667857143 | Take profit: 2118.1335732142857 +2025-03-10 13:22:29,344 - INFO - CLOSED long at 2097.8 | PnL: 0.53% | $0.71 +2025-03-10 13:22:29,382 - INFO - OPENED LONG at 2099.99 | Stop loss: 2089.4757678571427 | Take profit: 2131.5112732142857 +2025-03-10 13:22:29,620 - INFO - CLOSED long at 2103.81 | PnL: 0.18% | $0.14 +2025-03-10 13:22:29,643 - INFO - OPENED LONG at 2103.07 | Stop loss: 2092.540367857143 | Take profit: 2134.637473214286 +2025-03-10 13:22:29,711 - INFO - CLOSED long at 2105.83 | PnL: 0.13% | $0.05 +2025-03-10 13:22:29,749 - INFO - OPENED LONG at 2103.64 | Stop loss: 2093.1075178571427 | Take profit: 2135.2160232142855 +2025-03-10 13:22:29,892 - INFO - CLOSED long at 2103.9 | PnL: 0.01% | $-0.15 +2025-03-10 13:22:29,892 - INFO - OPENED SHORT at 2103.9 | Stop loss: 2114.4337821428576 | Take profit: 2072.3200767857143 +2025-03-10 13:22:29,917 - INFO - CLOSED short at 2100.0 | PnL: 0.19% | $0.14 +2025-03-10 13:22:29,918 - INFO - OPENED LONG at 2100.0 | Stop loss: 2089.485717857143 | Take profit: 2131.5214232142857 +2025-03-10 13:22:30,182 - INFO - Trade Analysis: Win Rate=9.1% in uptrends, 0.0% in downtrends | Avg Win=$0.37, Avg Loss=$-0.38 +2025-03-10 13:22:30,182 - INFO - Episode 1: Reward=-70.52, Balance=$85.25, Win Rate=25.3%, Trades=79, Episode PnL=$-11.00, Total PnL=$-26.37, Max Drawdown=15.1%, Pred Accuracy=97.1% +2025-03-10 13:22:30,432 - INFO - OPENED LONG at 2049.89 | Stop loss: 2039.6262678571427 | Take profit: 2080.659773214286 +2025-03-10 13:22:30,654 - INFO - CLOSED long at 2059.7 | PnL: 0.48% | $0.75 +2025-03-10 13:22:30,699 - INFO - OPENED LONG at 2061.49 | Stop loss: 2051.168267857143 | Take profit: 2092.4337732142853 +2025-03-10 13:22:31,094 - INFO - CLOSED long at 2057.94 | PnL: -0.17% | $-0.54 +2025-03-10 13:22:31,134 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.805167857143 | Take profit: 2089.003073214286 +2025-03-10 13:22:32,188 - INFO - CLOSED long at 2067.6 | PnL: 0.46% | $0.72 +2025-03-10 13:22:32,211 - INFO - OPENED LONG at 2067.51 | Stop loss: 2057.1581678571433 | Take profit: 2098.544073214286 +2025-03-10 13:22:32,821 - INFO - CLOSED long at 2073.11 | PnL: 0.27% | $0.34 +2025-03-10 13:22:32,855 - INFO - OPENED LONG at 2072.7 | Stop loss: 2062.3222178571427 | Take profit: 2103.8119232142853 +2025-03-10 13:22:32,873 - INFO - CLOSED long at 2072.15 | PnL: -0.03% | $-0.25 +2025-03-10 13:22:32,873 - INFO - OPENED SHORT at 2072.15 | Stop loss: 2082.5250321428575 | Take profit: 2041.0463267857142 +2025-03-10 13:22:32,900 - INFO - CLOSED short at 2074.29 | PnL: -0.10% | $-0.41 +2025-03-10 13:22:32,901 - INFO - OPENED LONG at 2074.29 | Stop loss: 2063.9042678571427 | Take profit: 2105.425773214286 +2025-03-10 13:22:33,036 - INFO - CLOSED long at 2069.35 | PnL: -0.24% | $-0.68 +2025-03-10 13:22:33,036 - INFO - OPENED SHORT at 2069.35 | Stop loss: 2079.7110321428568 | Take profit: 2038.2883267857142 +2025-03-10 13:22:33,070 - INFO - CLOSED short at 2068.32 | PnL: 0.05% | $-0.10 +2025-03-10 13:22:33,070 - INFO - OPENED LONG at 2068.32 | Stop loss: 2057.9641178571433 | Take profit: 2099.3662232142856 +2025-03-10 13:22:33,110 - INFO - CLOSED long at 2067.0 | PnL: -0.06% | $-0.32 +2025-03-10 13:22:33,179 - INFO - OPENED LONG at 2067.46 | Stop loss: 2057.1084178571427 | Take profit: 2098.4933232142857 +2025-03-10 13:22:33,785 - INFO - CLOSED long at 2066.1 | PnL: -0.07% | $-0.33 +2025-03-10 13:22:33,811 - INFO - OPENED LONG at 2065.28 | Stop loss: 2054.939317857143 | Take profit: 2096.2806232142857 +2025-03-10 13:22:33,888 - INFO - CLOSED long at 2070.04 | PnL: 0.23% | $0.26 +2025-03-10 13:22:33,933 - INFO - OPENED LONG at 2067.8 | Stop loss: 2057.446717857143 | Take profit: 2098.8384232142857 +2025-03-10 13:22:34,283 - INFO - CLOSED long at 2064.96 | PnL: -0.14% | $-0.47 +2025-03-10 13:22:34,363 - INFO - OPENED LONG at 2067.1 | Stop loss: 2056.7502178571426 | Take profit: 2098.1279232142856 +2025-03-10 13:22:34,487 - INFO - CLOSED long at 2064.08 | PnL: -0.15% | $-0.48 +2025-03-10 13:22:34,513 - INFO - OPENED LONG at 2062.71 | Stop loss: 2052.382167857143 | Take profit: 2093.672073214286 +2025-03-10 13:22:35,225 - INFO - CLOSED long at 2061.89 | PnL: -0.04% | $-0.27 +2025-03-10 13:22:35,225 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.213732142857 | Take profit: 2030.9402267857142 +2025-03-10 13:22:35,250 - INFO - CLOSED short at 2061.7 | PnL: 0.01% | $-0.18 +2025-03-10 13:22:35,251 - INFO - OPENED LONG at 2061.7 | Stop loss: 2051.3772178571426 | Take profit: 2092.6469232142854 +2025-03-10 13:22:35,297 - INFO - CLOSED long at 2061.09 | PnL: -0.03% | $-0.25 +2025-03-10 13:22:35,323 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.297667857143 | Take profit: 2090.5255732142855 +2025-03-10 13:22:35,364 - INFO - CLOSED long at 2059.02 | PnL: -0.03% | $-0.25 +2025-03-10 13:22:35,387 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.581267857143 | Take profit: 2089.7947732142857 +2025-03-10 13:22:35,533 - INFO - CLOSED long at 2056.28 | PnL: -0.13% | $-0.44 +2025-03-10 13:22:35,533 - INFO - OPENED SHORT at 2056.28 | Stop loss: 2066.575682142857 | Take profit: 2025.4143767857145 +2025-03-10 13:22:35,577 - INFO - CLOSED short at 2055.6 | PnL: 0.03% | $-0.13 +2025-03-10 13:22:35,577 - INFO - OPENED LONG at 2055.6 | Stop loss: 2045.3077178571427 | Take profit: 2086.4554232142855 +2025-03-10 13:22:35,722 - INFO - CLOSED long at 2059.8 | PnL: 0.20% | $0.20 +2025-03-10 13:22:35,722 - INFO - OPENED SHORT at 2059.8 | Stop loss: 2070.1132821428573 | Take profit: 2028.8815767857145 +2025-03-10 13:22:35,739 - INFO - CLOSED short at 2061.66 | PnL: -0.09% | $-0.37 +2025-03-10 13:22:35,766 - INFO - OPENED LONG at 2061.5 | Stop loss: 2051.178217857143 | Take profit: 2092.4439232142854 +2025-03-10 13:22:36,271 - INFO - CLOSED long at 2074.3 | PnL: 0.62% | $1.00 +2025-03-10 13:22:36,327 - INFO - OPENED LONG at 2078.01 | Stop loss: 2067.605667857143 | Take profit: 2109.201573214286 +2025-03-10 13:22:36,419 - INFO - CLOSED long at 2072.6 | PnL: -0.26% | $-0.70 +2025-03-10 13:22:36,419 - INFO - OPENED SHORT at 2072.6 | Stop loss: 2082.9772821428573 | Take profit: 2041.4895767857142 +2025-03-10 13:22:36,454 - INFO - CLOSED short at 2071.04 | PnL: 0.08% | $-0.05 +2025-03-10 13:22:36,455 - INFO - OPENED LONG at 2071.04 | Stop loss: 2060.670517857143 | Take profit: 2102.127023214286 +2025-03-10 13:22:36,474 - INFO - CLOSED long at 2070.01 | PnL: -0.05% | $-0.29 +2025-03-10 13:22:36,474 - INFO - OPENED SHORT at 2070.01 | Stop loss: 2080.3743321428574 | Take profit: 2038.9384267857145 +2025-03-10 13:22:36,519 - INFO - CLOSED short at 2073.23 | PnL: -0.16% | $-0.49 +2025-03-10 13:22:36,520 - INFO - OPENED LONG at 2073.23 | Stop loss: 2062.849567857143 | Take profit: 2104.3498732142857 +2025-03-10 13:22:36,874 - INFO - CLOSED long at 2065.7 | PnL: -0.36% | $-0.89 +2025-03-10 13:22:36,902 - INFO - OPENED LONG at 2065.66 | Stop loss: 2055.3174178571426 | Take profit: 2096.6663232142855 +2025-03-10 13:22:37,416 - INFO - CLOSED long at 2070.8 | PnL: 0.25% | $0.28 +2025-03-10 13:22:37,439 - INFO - OPENED LONG at 2070.35 | Stop loss: 2059.983967857143 | Take profit: 2101.4266732142855 +2025-03-10 13:22:37,991 - INFO - CLOSED long at 2074.0 | PnL: 0.18% | $0.14 +2025-03-10 13:22:37,991 - INFO - OPENED SHORT at 2074.0 | Stop loss: 2084.384282142857 | Take profit: 2042.8685767857144 +2025-03-10 13:22:38,044 - INFO - CLOSED short at 2072.09 | PnL: 0.09% | $-0.02 +2025-03-10 13:22:38,044 - INFO - OPENED LONG at 2072.09 | Stop loss: 2061.715267857143 | Take profit: 2103.1927732142863 +2025-03-10 13:22:38,477 - INFO - CLOSED long at 2065.8 | PnL: -0.30% | $-0.77 +2025-03-10 13:22:38,477 - INFO - OPENED SHORT at 2065.8 | Stop loss: 2076.1432821428575 | Take profit: 2034.7915767857146 +2025-03-10 13:22:38,501 - INFO - CLOSED short at 2065.07 | PnL: 0.04% | $-0.12 +2025-03-10 13:22:38,501 - INFO - OPENED LONG at 2065.07 | Stop loss: 2054.730367857143 | Take profit: 2096.067473214286 +2025-03-10 13:22:38,972 - INFO - STOP LOSS hit for long at 2054.730367857143 | PnL: -0.50% | $-1.13 +2025-03-10 13:22:38,996 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.949667857143 | Take profit: 2079.969573214286 +2025-03-10 13:22:39,516 - INFO - CLOSED long at 2059.9 | PnL: 0.52% | $0.79 +2025-03-10 13:22:39,555 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3822178571427 | Take profit: 2091.6319232142855 +2025-03-10 13:22:39,651 - INFO - CLOSED long at 2065.72 | PnL: 0.24% | $0.27 +2025-03-10 13:22:39,651 - INFO - OPENED SHORT at 2065.72 | Stop loss: 2076.062882142857 | Take profit: 2034.7127767857141 +2025-03-10 13:22:39,679 - INFO - CLOSED short at 2070.31 | PnL: -0.22% | $-0.61 +2025-03-10 13:22:39,679 - INFO - OPENED LONG at 2070.31 | Stop loss: 2059.944167857143 | Take profit: 2101.3860732142857 +2025-03-10 13:22:39,777 - INFO - CLOSED long at 2073.49 | PnL: 0.15% | $0.10 +2025-03-10 13:22:39,797 - INFO - OPENED LONG at 2074.05 | Stop loss: 2063.665467857143 | Take profit: 2105.1821732142857 +2025-03-10 13:22:39,823 - INFO - CLOSED long at 2072.99 | PnL: -0.05% | $-0.28 +2025-03-10 13:22:39,823 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.369232142857 | Take profit: 2041.873726785714 +2025-03-10 13:22:39,848 - INFO - CLOSED short at 2071.89 | PnL: 0.05% | $-0.09 +2025-03-10 13:22:39,889 - INFO - OPENED LONG at 2071.8 | Stop loss: 2061.426717857143 | Take profit: 2102.8984232142857 +2025-03-10 13:22:40,089 - INFO - TAKE PROFIT hit for long at 2102.8984232142857 | PnL: 1.50% | $2.61 +2025-03-10 13:22:40,112 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.0322178571428 | Take profit: 2162.6819232142857 +2025-03-10 13:22:40,156 - INFO - CLOSED long at 2131.78 | PnL: 0.05% | $-0.09 +2025-03-10 13:22:40,156 - INFO - OPENED SHORT at 2131.78 | Stop loss: 2142.4531821428573 | Take profit: 2099.7818767857143 +2025-03-10 13:22:40,184 - INFO - CLOSED short at 2133.95 | PnL: -0.10% | $-0.39 +2025-03-10 13:22:40,184 - INFO - OPENED LONG at 2133.95 | Stop loss: 2123.2659678571426 | Take profit: 2165.9806732142856 +2025-03-10 13:22:40,497 - INFO - STOP LOSS hit for long at 2123.2659678571426 | PnL: -0.50% | $-1.15 +2025-03-10 13:22:40,523 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.534967857143 | Take profit: 2151.9736732142856 +2025-03-10 13:22:40,741 - INFO - STOP LOSS hit for long at 2109.534967857143 | PnL: -0.50% | $-1.13 +2025-03-10 13:22:40,782 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032717857143 | Take profit: 2142.2804232142853 +2025-03-10 13:22:41,172 - INFO - CLOSED long at 2103.33 | PnL: -0.34% | $-0.83 +2025-03-10 13:22:41,208 - INFO - OPENED LONG at 2100.5 | Stop loss: 2089.983217857143 | Take profit: 2132.028923214286 +2025-03-10 13:22:41,351 - INFO - CLOSED long at 2099.25 | PnL: -0.06% | $-0.29 +2025-03-10 13:22:41,376 - INFO - OPENED LONG at 2098.9 | Stop loss: 2088.3912178571427 | Take profit: 2130.4049232142856 +2025-03-10 13:22:41,649 - INFO - CLOSED long at 2100.02 | PnL: 0.05% | $-0.09 +2025-03-10 13:22:41,672 - INFO - OPENED LONG at 2098.39 | Stop loss: 2087.8837678571426 | Take profit: 2129.887273214286 +2025-03-10 13:22:41,880 - INFO - STOP LOSS hit for long at 2087.8837678571426 | PnL: -0.50% | $-1.10 +2025-03-10 13:22:41,920 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.983517857143 | Take profit: 2119.7880232142857 +2025-03-10 13:22:42,803 - INFO - CLOSED long at 2101.64 | PnL: 0.63% | $0.97 +2025-03-10 13:22:42,803 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1624821428572 | Take profit: 2070.0939767857144 +2025-03-10 13:22:42,840 - INFO - CLOSED short at 2097.11 | PnL: 0.22% | $0.21 +2025-03-10 13:22:42,841 - INFO - OPENED LONG at 2097.11 | Stop loss: 2086.610167857143 | Take profit: 2128.588073214286 +2025-03-10 13:22:42,881 - INFO - CLOSED long at 2099.89 | PnL: 0.13% | $0.06 +2025-03-10 13:22:42,926 - INFO - OPENED LONG at 2099.73 | Stop loss: 2089.217067857143 | Take profit: 2131.2473732142857 +2025-03-10 13:22:42,993 - INFO - CLOSED long at 2104.93 | PnL: 0.25% | $0.27 +2025-03-10 13:22:42,994 - INFO - OPENED SHORT at 2104.93 | Stop loss: 2115.468932142857 | Take profit: 2073.334626785714 +2025-03-10 13:22:43,021 - INFO - CLOSED short at 2103.81 | PnL: 0.05% | $-0.09 +2025-03-10 13:22:43,021 - INFO - OPENED LONG at 2103.81 | Stop loss: 2093.276667857143 | Take profit: 2135.3885732142858 +2025-03-10 13:22:43,345 - INFO - CLOSED long at 2100.0 | PnL: -0.18% | $-0.52 +2025-03-10 13:22:43,345 - INFO - OPENED SHORT at 2100.0 | Stop loss: 2110.514282142857 | Take profit: 2068.4785767857143 +2025-03-10 13:22:43,369 - INFO - CLOSED short at 2102.7 | PnL: -0.13% | $-0.42 +2025-03-10 13:22:43,369 - INFO - OPENED LONG at 2102.7 | Stop loss: 2092.1722178571426 | Take profit: 2134.261923214285 +2025-03-10 13:22:43,624 - INFO - Trade Analysis: Win Rate=11.1% in uptrends, 0.0% in downtrends | Avg Win=$0.56, Avg Loss=$-0.44 +2025-03-10 13:22:43,625 - INFO - Episode 2: Reward=-41.83, Balance=$91.98, Win Rate=29.1%, Trades=55, Episode PnL=$-5.58, Total PnL=$-34.40, Max Drawdown=9.7%, Pred Accuracy=97.2% +2025-03-10 13:22:43,776 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 13:22:43,776 - INFO - New best PnL model saved: $-5.58 +2025-03-10 13:22:43,957 - INFO - OPENED LONG at 2049.89 | Stop loss: 2039.6262678571427 | Take profit: 2080.659773214286 +2025-03-10 13:22:44,049 - INFO - CLOSED long at 2052.3 | PnL: 0.12% | $0.03 +2025-03-10 13:22:44,137 - INFO - OPENED LONG at 2058.39 | Stop loss: 2048.0837678571424 | Take profit: 2089.2872732142855 +2025-03-10 13:22:44,494 - INFO - CLOSED long at 2061.89 | PnL: 0.17% | $0.14 +2025-03-10 13:22:44,513 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.561267857143 | Take profit: 2093.8547732142856 +2025-03-10 13:22:44,821 - INFO - CLOSED long at 2065.86 | PnL: 0.14% | $0.09 +2025-03-10 13:22:44,855 - INFO - OPENED LONG at 2070.58 | Stop loss: 2060.212817857143 | Take profit: 2101.6601232142857 +2025-03-10 13:22:44,897 - INFO - CLOSED long at 2068.29 | PnL: -0.11% | $-0.42 +2025-03-10 13:22:44,897 - INFO - OPENED SHORT at 2068.29 | Stop loss: 2078.645732142857 | Take profit: 2037.2442267857143 +2025-03-10 13:22:44,921 - INFO - CLOSED short at 2067.89 | PnL: 0.02% | $-0.16 +2025-03-10 13:22:44,922 - INFO - OPENED LONG at 2067.89 | Stop loss: 2057.536267857143 | Take profit: 2098.9297732142854 +2025-03-10 13:22:45,349 - INFO - CLOSED long at 2069.37 | PnL: 0.07% | $-0.06 +2025-03-10 13:22:45,373 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.531217857143 | Take profit: 2101.984923214286 +2025-03-10 13:22:46,107 - INFO - CLOSED long at 2069.7 | PnL: -0.06% | $-0.31 +2025-03-10 13:22:46,131 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.033717857143 | Take profit: 2101.477423214286 +2025-03-10 13:22:46,439 - INFO - CLOSED long at 2073.9 | PnL: 0.17% | $0.14 +2025-03-10 13:22:46,439 - INFO - OPENED SHORT at 2073.9 | Stop loss: 2084.2837821428575 | Take profit: 2042.7700767857145 +2025-03-10 13:22:46,465 - INFO - CLOSED short at 2071.92 | PnL: 0.10% | $-0.01 +2025-03-10 13:22:46,465 - INFO - OPENED LONG at 2071.92 | Stop loss: 2061.5461178571427 | Take profit: 2103.0202232142856 +2025-03-10 13:22:46,553 - INFO - CLOSED long at 2069.35 | PnL: -0.12% | $-0.44 +2025-03-10 13:22:46,553 - INFO - OPENED SHORT at 2069.35 | Stop loss: 2079.7110321428568 | Take profit: 2038.2883267857142 +2025-03-10 13:22:46,575 - INFO - CLOSED short at 2068.32 | PnL: 0.05% | $-0.10 +2025-03-10 13:22:46,575 - INFO - OPENED LONG at 2068.32 | Stop loss: 2057.9641178571433 | Take profit: 2099.3662232142856 +2025-03-10 13:22:46,615 - INFO - CLOSED long at 2067.79 | PnL: -0.03% | $-0.25 +2025-03-10 13:22:46,638 - INFO - OPENED LONG at 2067.46 | Stop loss: 2057.1084178571427 | Take profit: 2098.4933232142857 +2025-03-10 13:22:46,852 - INFO - CLOSED long at 2068.8 | PnL: 0.06% | $-0.07 +2025-03-10 13:22:46,852 - INFO - OPENED SHORT at 2068.8 | Stop loss: 2079.1582821428574 | Take profit: 2037.7465767857143 +2025-03-10 13:22:46,879 - INFO - CLOSED short at 2069.34 | PnL: -0.03% | $-0.25 +2025-03-10 13:22:46,880 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.979017857143 | Take profit: 2100.401523214286 +2025-03-10 13:22:47,215 - INFO - CLOSED long at 2067.86 | PnL: -0.07% | $-0.34 +2025-03-10 13:22:47,215 - INFO - OPENED SHORT at 2067.86 | Stop loss: 2078.2135821428574 | Take profit: 2036.8206767857146 +2025-03-10 13:22:47,251 - INFO - CLOSED short at 2066.4 | PnL: 0.07% | $-0.06 +2025-03-10 13:22:47,251 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.053717857143 | Take profit: 2097.417423214286 +2025-03-10 13:22:48,417 - INFO - CLOSED long at 2061.9 | PnL: -0.22% | $-0.62 +2025-03-10 13:22:48,417 - INFO - OPENED SHORT at 2061.9 | Stop loss: 2072.223782142857 | Take profit: 2030.9500767857144 +2025-03-10 13:22:48,498 - INFO - CLOSED short at 2064.33 | PnL: -0.12% | $-0.42 +2025-03-10 13:22:48,498 - INFO - OPENED LONG at 2064.33 | Stop loss: 2053.994067857143 | Take profit: 2095.3163732142857 +2025-03-10 13:22:48,925 - INFO - CLOSED long at 2058.89 | PnL: -0.26% | $-0.70 +2025-03-10 13:22:48,925 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.198732142857 | Take profit: 2027.985226785714 +2025-03-10 13:22:48,950 - INFO - CLOSED short at 2059.96 | PnL: -0.05% | $-0.29 +2025-03-10 13:22:48,950 - INFO - OPENED LONG at 2059.96 | Stop loss: 2049.6459178571426 | Take profit: 2090.8808232142856 +2025-03-10 13:22:49,030 - INFO - CLOSED long at 2058.28 | PnL: -0.08% | $-0.35 +2025-03-10 13:22:49,030 - INFO - OPENED SHORT at 2058.28 | Stop loss: 2068.5856821428574 | Take profit: 2027.3843767857145 +2025-03-10 13:22:49,073 - INFO - CLOSED short at 2056.28 | PnL: 0.10% | $-0.01 +2025-03-10 13:22:49,073 - INFO - OPENED LONG at 2056.28 | Stop loss: 2045.9843178571432 | Take profit: 2087.145623214286 +2025-03-10 13:22:49,531 - INFO - CLOSED long at 2066.33 | PnL: 0.49% | $0.74 +2025-03-10 13:22:49,576 - INFO - OPENED LONG at 2066.34 | Stop loss: 2055.994017857143 | Take profit: 2097.3565232142855 +2025-03-10 13:22:50,666 - INFO - CLOSED long at 2068.59 | PnL: 0.11% | $0.02 +2025-03-10 13:22:50,666 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.9472321428575 | Take profit: 2037.5397267857143 +2025-03-10 13:22:50,713 - INFO - CLOSED short at 2071.59 | PnL: -0.15% | $-0.47 +2025-03-10 13:22:50,713 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.217767857143 | Take profit: 2102.6852732142856 +2025-03-10 13:22:50,751 - INFO - CLOSED long at 2070.2 | PnL: -0.07% | $-0.32 +2025-03-10 13:22:50,827 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.531217857143 | Take profit: 2101.984923214286 +2025-03-10 13:22:50,900 - INFO - CLOSED long at 2070.8 | PnL: -0.00% | $-0.20 +2025-03-10 13:22:50,901 - INFO - OPENED SHORT at 2070.8 | Stop loss: 2081.1682821428576 | Take profit: 2039.7165767857143 +2025-03-10 13:22:50,921 - INFO - CLOSED short at 2070.35 | PnL: 0.02% | $-0.15 +2025-03-10 13:22:50,922 - INFO - OPENED LONG at 2070.35 | Stop loss: 2059.983967857143 | Take profit: 2101.4266732142855 +2025-03-10 13:22:51,004 - INFO - CLOSED long at 2068.67 | PnL: -0.08% | $-0.34 +2025-03-10 13:22:51,004 - INFO - OPENED SHORT at 2068.67 | Stop loss: 2079.0276321428573 | Take profit: 2037.6185267857143 +2025-03-10 13:22:51,059 - INFO - CLOSED short at 2069.78 | PnL: -0.05% | $-0.29 +2025-03-10 13:22:51,059 - INFO - OPENED LONG at 2069.78 | Stop loss: 2059.416817857143 | Take profit: 2100.8481232142863 +2025-03-10 13:22:51,239 - INFO - CLOSED long at 2073.27 | PnL: 0.17% | $0.13 +2025-03-10 13:22:51,263 - INFO - OPENED LONG at 2073.99 | Stop loss: 2063.605767857143 | Take profit: 2105.121273214286 +2025-03-10 13:22:51,977 - INFO - CLOSED long at 2065.07 | PnL: -0.43% | $-1.00 +2025-03-10 13:22:51,977 - INFO - OPENED SHORT at 2065.07 | Stop loss: 2075.4096321428574 | Take profit: 2034.0725267857144 +2025-03-10 13:22:52,039 - INFO - CLOSED short at 2066.09 | PnL: -0.05% | $-0.28 +2025-03-10 13:22:52,039 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.745267857143 | Take profit: 2097.102773214286 +2025-03-10 13:22:52,471 - INFO - STOP LOSS hit for long at 2055.745267857143 | PnL: -0.50% | $-1.11 +2025-03-10 13:22:52,498 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.949667857143 | Take profit: 2079.969573214286 +2025-03-10 13:22:52,580 - INFO - CLOSED long at 2056.85 | PnL: 0.37% | $0.50 +2025-03-10 13:22:52,580 - INFO - OPENED SHORT at 2056.85 | Stop loss: 2067.1485321428568 | Take profit: 2025.9758267857142 +2025-03-10 13:22:52,606 - INFO - CLOSED short at 2057.11 | PnL: -0.01% | $-0.21 +2025-03-10 13:22:52,608 - INFO - OPENED LONG at 2057.11 | Stop loss: 2046.8101678571431 | Take profit: 2087.9880732142856 +2025-03-10 13:22:52,963 - INFO - CLOSED long at 2059.9 | PnL: 0.14% | $0.07 +2025-03-10 13:22:52,982 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3822178571427 | Take profit: 2091.6319232142855 +2025-03-10 13:22:53,007 - INFO - CLOSED long at 2061.84 | PnL: 0.06% | $-0.08 +2025-03-10 13:22:53,023 - INFO - OPENED LONG at 2062.54 | Stop loss: 2052.213017857143 | Take profit: 2093.499523214286 +2025-03-10 13:22:53,500 - INFO - TAKE PROFIT hit for long at 2093.499523214286 | PnL: 1.50% | $2.58 +2025-03-10 13:22:53,541 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.0322178571428 | Take profit: 2162.6819232142857 +2025-03-10 13:26:48,974 - INFO - STOP LOSS hit for long at 2120.0322178571428 | PnL: -0.50% | $-1.14 +2025-03-10 13:26:49,000 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3160678571426 | Take profit: 2151.750373214286 +2025-03-10 13:26:49,175 - INFO - STOP LOSS hit for long at 2109.3160678571426 | PnL: -0.50% | $-1.12 +2025-03-10 13:26:49,207 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032717857143 | Take profit: 2142.2804232142853 +2025-03-10 13:26:49,380 - INFO - CLOSED long at 2112.99 | PnL: 0.11% | $0.02 +2025-03-10 13:26:49,381 - INFO - OPENED SHORT at 2112.99 | Stop loss: 2123.569232142857 | Take profit: 2081.273726785714 +2025-03-10 13:26:49,407 - INFO - CLOSED short at 2120.81 | PnL: -0.37% | $-0.87 +2025-03-10 13:26:49,408 - INFO - OPENED LONG at 2120.81 | Stop loss: 2110.191667857143 | Take profit: 2152.6435732142854 +2025-03-10 13:26:49,518 - INFO - STOP LOSS hit for long at 2110.191667857143 | PnL: -0.50% | $-1.10 +2025-03-10 13:26:49,558 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.9432678571425 | Take profit: 2138.1087732142855 +2025-03-10 13:26:49,864 - INFO - STOP LOSS hit for long at 2095.9432678571425 | PnL: -0.50% | $-1.09 +2025-03-10 13:26:49,891 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0180678571433 | Take profit: 2131.044373214286 +2025-03-10 13:26:50,352 - INFO - CLOSED long at 2101.51 | PnL: 0.09% | $-0.01 +2025-03-10 13:26:50,352 - INFO - OPENED SHORT at 2101.51 | Stop loss: 2112.031832142857 | Take profit: 2069.9659267857146 +2025-03-10 13:26:50,384 - INFO - CLOSED short at 2099.59 | PnL: 0.09% | $-0.02 +2025-03-10 13:26:50,385 - INFO - OPENED LONG at 2099.59 | Stop loss: 2089.077767857143 | Take profit: 2131.105273214286 +2025-03-10 13:26:50,502 - INFO - CLOSED long at 2095.29 | PnL: -0.20% | $-0.54 +2025-03-10 13:26:50,503 - INFO - OPENED SHORT at 2095.29 | Stop loss: 2105.7807321428572 | Take profit: 2063.8392267857143 +2025-03-10 13:26:50,566 - INFO - CLOSED short at 2093.46 | PnL: 0.09% | $-0.02 +2025-03-10 13:26:50,567 - INFO - OPENED LONG at 2093.46 | Stop loss: 2082.9784178571426 | Take profit: 2124.883323214286 +2025-03-10 13:26:50,689 - INFO - CLOSED long at 2091.1 | PnL: -0.11% | $-0.38 +2025-03-10 13:26:50,721 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.2321178571424 | Take profit: 2126.1622232142854 +2025-03-10 13:26:50,750 - INFO - CLOSED long at 2094.08 | PnL: -0.03% | $-0.23 +2025-03-10 13:26:50,750 - INFO - OPENED SHORT at 2094.08 | Stop loss: 2104.5646821428572 | Take profit: 2062.647376785714 +2025-03-10 13:26:50,782 - INFO - CLOSED short at 2088.35 | PnL: 0.27% | $0.31 +2025-03-10 13:26:50,782 - INFO - OPENED LONG at 2088.35 | Stop loss: 2077.893967857143 | Take profit: 2119.6966732142855 +2025-03-10 13:26:51,095 - INFO - CLOSED long at 2081.25 | PnL: -0.34% | $-0.78 +2025-03-10 13:26:51,096 - INFO - OPENED SHORT at 2081.25 | Stop loss: 2091.670532142857 | Take profit: 2050.0098267857143 +2025-03-10 13:26:51,130 - INFO - CLOSED short at 2083.41 | PnL: -0.10% | $-0.36 +2025-03-10 13:26:51,131 - INFO - OPENED LONG at 2083.41 | Stop loss: 2072.9786678571427 | Take profit: 2114.6825732142856 +2025-03-10 13:26:51,636 - INFO - CLOSED long at 2086.81 | PnL: 0.16% | $0.11 +2025-03-10 13:26:51,671 - INFO - OPENED LONG at 2089.79 | Stop loss: 2079.326767857143 | Take profit: 2121.1582732142856 +2025-03-10 13:26:51,943 - INFO - CLOSED long at 2101.64 | PnL: 0.57% | $0.82 +2025-03-10 13:26:51,944 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1624821428572 | Take profit: 2070.0939767857144 +2025-03-10 13:26:51,969 - INFO - CLOSED short at 2097.11 | PnL: 0.22% | $0.20 +2025-03-10 13:26:51,969 - INFO - OPENED LONG at 2097.11 | Stop loss: 2086.610167857143 | Take profit: 2128.588073214286 +2025-03-10 13:26:52,114 - INFO - CLOSED long at 2103.48 | PnL: 0.30% | $0.36 +2025-03-10 13:26:52,142 - INFO - OPENED LONG at 2104.93 | Stop loss: 2094.391067857143 | Take profit: 2136.5253732142855 +2025-03-10 13:26:52,324 - INFO - CLOSED long at 2104.4 | PnL: -0.03% | $-0.22 +2025-03-10 13:26:52,352 - INFO - OPENED LONG at 2105.21 | Stop loss: 2094.669667857143 | Take profit: 2136.8095732142856 +2025-03-10 13:26:52,615 - INFO - CLOSED long at 2112.28 | PnL: 0.34% | $0.42 +2025-03-10 13:26:52,615 - INFO - OPENED SHORT at 2112.28 | Stop loss: 2122.855682142857 | Take profit: 2080.5743767857143 +2025-03-10 13:26:52,641 - INFO - Trade Analysis: Win Rate=12.0% in uptrends, 0.0% in downtrends | Avg Win=$0.39, Avg Loss=$-0.40 +2025-03-10 13:26:52,641 - INFO - Episode 3: Reward=-47.00, Balance=$89.52, Win Rate=28.3%, Trades=60, Episode PnL=$-6.36, Total PnL=$-44.88, Max Drawdown=12.3%, Pred Accuracy=97.2% +2025-03-10 13:26:52,893 - INFO - OPENED LONG at 2049.89 | Stop loss: 2039.6262678571427 | Take profit: 2080.659773214286 +2025-03-10 13:26:53,040 - INFO - CLOSED long at 2057.01 | PnL: 0.35% | $0.49 +2025-03-10 13:26:53,066 - INFO - OPENED LONG at 2056.89 | Stop loss: 2046.5912678571426 | Take profit: 2087.764773214286 +2025-03-10 13:26:53,282 - INFO - CLOSED long at 2063.01 | PnL: 0.30% | $0.39 +2025-03-10 13:26:53,283 - INFO - OPENED SHORT at 2063.01 | Stop loss: 2073.3393321428575 | Take profit: 2032.0434267857145 +2025-03-10 13:26:53,326 - INFO - CLOSED short at 2058.3 | PnL: 0.23% | $0.26 +2025-03-10 13:26:53,327 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.994217857143 | Take profit: 2089.195923214286 +2025-03-10 13:26:53,349 - INFO - CLOSED long at 2060.0 | PnL: 0.08% | $-0.03 +2025-03-10 13:26:53,375 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.566267857143 | Take profit: 2092.8397732142857 +2025-03-10 13:26:53,448 - INFO - CLOSED long at 2059.49 | PnL: -0.12% | $-0.43 +2025-03-10 13:26:53,448 - INFO - OPENED SHORT at 2059.49 | Stop loss: 2069.801732142857 | Take profit: 2028.5762267857142 +2025-03-10 13:26:53,474 - INFO - CLOSED short at 2057.8 | PnL: 0.08% | $-0.04 +2025-03-10 13:26:53,474 - INFO - OPENED LONG at 2057.8 | Stop loss: 2047.496717857143 | Take profit: 2088.688423214286 +2025-03-10 13:26:54,053 - INFO - CLOSED long at 2072.33 | PnL: 0.71% | $1.21 +2025-03-10 13:26:54,078 - INFO - OPENED LONG at 2071.38 | Stop loss: 2061.008817857143 | Take profit: 2102.472123214286 +2025-03-10 13:26:54,174 - INFO - CLOSED long at 2072.8 | PnL: 0.07% | $-0.06 +2025-03-10 13:26:54,226 - INFO - OPENED LONG at 2070.28 | Stop loss: 2059.914317857143 | Take profit: 2101.3556232142855 +2025-03-10 13:26:54,347 - INFO - CLOSED long at 2070.7 | PnL: 0.02% | $-0.16 +2025-03-10 13:26:54,398 - INFO - OPENED LONG at 2069.19 | Stop loss: 2058.829767857143 | Take profit: 2100.2492732142855 +2025-03-10 13:26:55,012 - INFO - CLOSED long at 2071.4 | PnL: 0.11% | $0.01 +2025-03-10 13:26:55,050 - INFO - OPENED SHORT at 2071.39 | Stop loss: 2081.761232142857 | Take profit: 2040.297726785714 +2025-03-10 13:26:55,127 - INFO - CLOSED short at 2071.36 | PnL: 0.00% | $-0.20 +2025-03-10 13:26:55,127 - INFO - OPENED LONG at 2071.36 | Stop loss: 2060.988917857143 | Take profit: 2102.451823214286 +2025-03-10 13:26:55,185 - INFO - CLOSED long at 2072.75 | PnL: 0.07% | $-0.07 +2025-03-10 13:26:55,266 - INFO - OPENED LONG at 2072.7 | Stop loss: 2062.3222178571427 | Take profit: 2103.8119232142853 +2025-03-10 13:26:55,425 - INFO - CLOSED long at 2069.46 | PnL: -0.16% | $-0.52 +2025-03-10 13:26:55,425 - INFO - OPENED SHORT at 2069.46 | Stop loss: 2079.821582142857 | Take profit: 2038.3966767857144 +2025-03-10 13:26:55,483 - INFO - CLOSED short at 2069.35 | PnL: 0.01% | $-0.19 +2025-03-10 13:26:55,483 - INFO - OPENED LONG at 2069.35 | Stop loss: 2058.988967857143 | Take profit: 2100.4116732142857 +2025-03-10 13:26:55,642 - INFO - CLOSED long at 2067.46 | PnL: -0.09% | $-0.38 +2025-03-10 13:26:55,642 - INFO - OPENED SHORT at 2067.46 | Stop loss: 2077.8115821428573 | Take profit: 2036.4266767857143 +2025-03-10 13:26:55,696 - INFO - CLOSED short at 2065.49 | PnL: 0.10% | $-0.01 +2025-03-10 13:26:55,697 - INFO - OPENED LONG at 2065.49 | Stop loss: 2055.1482678571424 | Take profit: 2096.4937732142857 +2025-03-10 13:26:55,962 - INFO - CLOSED long at 2067.59 | PnL: 0.10% | $0.00 +2025-03-10 13:26:56,020 - INFO - OPENED LONG at 2069.2 | Stop loss: 2058.8397178571427 | Take profit: 2100.2594232142856 +2025-03-10 13:26:56,096 - INFO - CLOSED long at 2070.7 | PnL: 0.07% | $-0.05 +2025-03-10 13:26:56,124 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.033717857143 | Take profit: 2101.477423214286 +2025-03-10 13:26:56,880 - INFO - STOP LOSS hit for long at 2060.033717857143 | PnL: -0.50% | $-1.20 +2025-03-10 13:26:56,909 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.979217857143 | Take profit: 2092.240923214286 +2025-03-10 13:26:57,045 - INFO - CLOSED long at 2066.09 | PnL: 0.23% | $0.26 +2025-03-10 13:26:57,116 - INFO - OPENED LONG at 2064.45 | Stop loss: 2054.1134678571425 | Take profit: 2095.4381732142856 +2025-03-10 13:26:57,338 - INFO - CLOSED long at 2061.6 | PnL: -0.14% | $-0.47 +2025-03-10 13:26:57,363 - INFO - OPENED LONG at 2060.9 | Stop loss: 2050.5812178571427 | Take profit: 2091.834923214286 +2025-03-10 13:26:58,206 - INFO - CLOSED long at 2059.61 | PnL: -0.06% | $-0.32 +2025-03-10 13:26:58,336 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.581267857143 | Take profit: 2089.7947732142857 +2025-03-10 13:26:58,842 - INFO - CLOSED long at 2061.3 | PnL: 0.12% | $0.03 +2025-03-10 13:26:58,843 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.6207821428575 | Take profit: 2030.3590767857145 +2025-03-10 13:26:58,877 - INFO - CLOSED short at 2062.69 | PnL: -0.07% | $-0.33 +2025-03-10 13:26:58,877 - INFO - OPENED LONG at 2062.69 | Stop loss: 2052.362267857143 | Take profit: 2093.6517732142856 +2025-03-10 13:26:59,015 - INFO - CLOSED long at 2066.33 | PnL: 0.18% | $0.15 +2025-03-10 13:26:59,015 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6759321428567 | Take profit: 2035.3136267857144 +2025-03-10 13:26:59,052 - INFO - CLOSED short at 2066.34 | PnL: -0.00% | $-0.20 +2025-03-10 13:26:59,052 - INFO - OPENED LONG at 2066.34 | Stop loss: 2055.994017857143 | Take profit: 2097.3565232142855 +2025-03-10 13:26:59,499 - INFO - CLOSED long at 2070.0 | PnL: 0.18% | $0.15 +2025-03-10 13:26:59,499 - INFO - OPENED SHORT at 2070.0 | Stop loss: 2080.364282142857 | Take profit: 2038.9285767857143 +2025-03-10 13:26:59,526 - INFO - CLOSED short at 2068.15 | PnL: 0.09% | $-0.02 +2025-03-10 13:26:59,527 - INFO - OPENED LONG at 2068.15 | Stop loss: 2057.794967857143 | Take profit: 2099.193673214286 +2025-03-10 13:26:59,689 - INFO - CLOSED long at 2071.49 | PnL: 0.16% | $0.12 +2025-03-10 13:26:59,689 - INFO - OPENED SHORT at 2071.49 | Stop loss: 2081.861732142857 | Take profit: 2040.3962267857141 +2025-03-10 13:26:59,734 - INFO - CLOSED short at 2067.33 | PnL: 0.20% | $0.20 +2025-03-10 13:26:59,734 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.9790678571426 | Take profit: 2098.3613732142853 +2025-03-10 13:26:59,801 - INFO - CLOSED long at 2065.66 | PnL: -0.08% | $-0.35 +2025-03-10 13:26:59,802 - INFO - OPENED SHORT at 2065.66 | Stop loss: 2076.0025821428567 | Take profit: 2034.6536767857142 +2025-03-10 13:26:59,825 - INFO - CLOSED short at 2063.95 | PnL: 0.08% | $-0.03 +2025-03-10 13:26:59,826 - INFO - OPENED LONG at 2063.95 | Stop loss: 2053.6159678571426 | Take profit: 2094.930673214286 +2025-03-10 13:26:59,944 - INFO - CLOSED long at 2064.31 | PnL: 0.02% | $-0.16 +2025-03-10 13:26:59,944 - INFO - OPENED SHORT at 2064.31 | Stop loss: 2074.645832142857 | Take profit: 2033.323926785714 +2025-03-10 13:27:00,077 - INFO - CLOSED short at 2066.8 | PnL: -0.12% | $-0.43 +2025-03-10 13:27:00,078 - INFO - OPENED LONG at 2066.8 | Stop loss: 2056.451717857143 | Take profit: 2097.823423214286 +2025-03-10 13:27:00,320 - INFO - CLOSED long at 2070.35 | PnL: 0.17% | $0.14 +2025-03-10 13:27:00,430 - INFO - OPENED LONG at 2070.67 | Stop loss: 2060.302367857143 | Take profit: 2101.751473214286 +2025-03-10 13:27:00,457 - INFO - CLOSED long at 2069.78 | PnL: -0.04% | $-0.28 +2025-03-10 13:27:00,457 - INFO - OPENED SHORT at 2069.78 | Stop loss: 2080.1431821428573 | Take profit: 2038.7118767857146 +2025-03-10 13:27:00,489 - INFO - CLOSED short at 2071.61 | PnL: -0.09% | $-0.36 +2025-03-10 13:27:00,490 - INFO - OPENED LONG at 2071.61 | Stop loss: 2061.2376678571427 | Take profit: 2102.705573214286 +2025-03-10 13:27:00,675 - INFO - CLOSED long at 2076.9 | PnL: 0.26% | $0.30 +2025-03-10 13:27:00,675 - INFO - OPENED SHORT at 2076.9 | Stop loss: 2087.2987821428574 | Take profit: 2045.7250767857142 +2025-03-10 13:27:00,701 - INFO - CLOSED short at 2075.61 | PnL: 0.06% | $-0.07 +2025-03-10 13:27:00,701 - INFO - OPENED LONG at 2075.61 | Stop loss: 2065.2176678571427 | Take profit: 2106.7655732142857 +2025-03-10 13:27:00,884 - INFO - CLOSED long at 2066.4 | PnL: -0.44% | $-1.05 +2025-03-10 13:27:00,911 - INFO - OPENED LONG at 2066.89 | Stop loss: 2056.541267857143 | Take profit: 2097.9147732142856 +2025-03-10 13:27:01,368 - INFO - CLOSED long at 2066.33 | PnL: -0.03% | $-0.24 +2025-03-10 13:27:01,394 - INFO - OPENED LONG at 2063.01 | Stop loss: 2052.680667857143 | Take profit: 2093.976573214286 +2025-03-10 13:27:01,583 - INFO - STOP LOSS hit for long at 2052.680667857143 | PnL: -0.50% | $-1.15 +2025-03-10 13:27:01,610 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.2382178571427 | Take profit: 2080.2639232142856 +2025-03-10 13:27:01,807 - INFO - CLOSED long at 2065.1 | PnL: 0.76% | $1.25 +2025-03-10 13:27:01,807 - INFO - OPENED SHORT at 2065.1 | Stop loss: 2075.439782142857 | Take profit: 2034.1020767857144 +2025-03-10 13:27:01,834 - INFO - CLOSED short at 2062.43 | PnL: 0.13% | $0.06 +2025-03-10 13:27:01,834 - INFO - OPENED LONG at 2062.43 | Stop loss: 2052.103567857143 | Take profit: 2093.3878732142853 +2025-03-10 13:27:02,491 - INFO - TAKE PROFIT hit for long at 2093.3878732142853 | PnL: 1.50% | $2.68 +2025-03-10 13:27:02,517 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.0322178571428 | Take profit: 2162.6819232142857 +2025-03-10 13:27:02,715 - INFO - CLOSED long at 2141.41 | PnL: 0.50% | $0.79 +2025-03-10 13:27:02,715 - INFO - OPENED SHORT at 2141.41 | Stop loss: 2152.131332142857 | Take profit: 2109.267426785714 +2025-03-10 13:27:02,784 - INFO - CLOSED short at 2141.3 | PnL: 0.01% | $-0.19 +2025-03-10 13:27:02,784 - INFO - OPENED LONG at 2141.3 | Stop loss: 2130.579217857143 | Take profit: 2173.4409232142857 +2025-03-10 13:27:02,918 - INFO - CLOSED long at 2126.99 | PnL: -0.67% | $-1.52 +2025-03-10 13:27:02,948 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.649217857143 | Take profit: 2159.230923214286 +2025-03-10 13:27:02,968 - INFO - CLOSED long at 2128.69 | PnL: 0.07% | $-0.07 +2025-03-10 13:27:02,994 - INFO - OPENED LONG at 2121.09 | Stop loss: 2110.470267857143 | Take profit: 2152.927773214286 +2025-03-10 13:27:03,015 - INFO - CLOSED long at 2120.15 | PnL: -0.04% | $-0.28 +2025-03-10 13:27:03,015 - INFO - OPENED SHORT at 2120.15 | Stop loss: 2130.7650321428573 | Take profit: 2088.326326785714 +2025-03-10 13:27:03,075 - INFO - CLOSED short at 2117.24 | PnL: 0.14% | $0.07 +2025-03-10 13:27:03,075 - INFO - OPENED LONG at 2117.24 | Stop loss: 2106.6395178571424 | Take profit: 2149.0200232142856 +2025-03-10 13:27:03,133 - INFO - CLOSED long at 2119.93 | PnL: 0.13% | $0.05 +2025-03-10 13:27:03,133 - INFO - OPENED SHORT at 2119.93 | Stop loss: 2130.5439321428566 | Take profit: 2088.109626785714 +2025-03-10 13:27:03,165 - INFO - CLOSED short at 2121.4 | PnL: -0.07% | $-0.33 +2025-03-10 13:27:03,165 - INFO - OPENED LONG at 2121.4 | Stop loss: 2110.778717857143 | Take profit: 2153.2424232142857 +2025-03-10 13:27:03,214 - INFO - CLOSED long at 2119.14 | PnL: -0.11% | $-0.40 +2025-03-10 13:27:03,240 - INFO - OPENED LONG at 2119.07 | Stop loss: 2108.460367857143 | Take profit: 2150.8774732142856 +2025-03-10 13:27:03,291 - INFO - CLOSED long at 2107.43 | PnL: -0.55% | $-1.25 +2025-03-10 13:27:03,317 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032717857143 | Take profit: 2142.2804232142853 +2025-03-10 13:27:03,690 - INFO - STOP LOSS hit for long at 2100.032717857143 | PnL: -0.50% | $-1.14 +2025-03-10 13:27:03,718 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0180678571433 | Take profit: 2131.044373214286 +2025-03-10 13:27:03,770 - INFO - CLOSED long at 2102.19 | PnL: 0.13% | $0.05 +2025-03-10 13:27:03,795 - INFO - OPENED LONG at 2102.29 | Stop loss: 2091.764267857143 | Take profit: 2133.8457732142856 +2025-03-10 13:27:03,887 - INFO - CLOSED long at 2104.83 | PnL: 0.12% | $0.04 +2025-03-10 13:27:03,910 - INFO - OPENED LONG at 2106.39 | Stop loss: 2095.8437678571427 | Take profit: 2138.0072732142858 +2025-03-10 13:27:04,100 - INFO - CLOSED long at 2095.29 | PnL: -0.53% | $-1.18 +2025-03-10 13:27:04,101 - INFO - OPENED SHORT at 2095.29 | Stop loss: 2105.7807321428572 | Take profit: 2063.8392267857143 +2025-03-10 13:27:04,127 - INFO - CLOSED short at 2093.46 | PnL: 0.09% | $-0.02 +2025-03-10 13:27:04,128 - INFO - OPENED LONG at 2093.46 | Stop loss: 2082.9784178571426 | Take profit: 2124.883323214286 +2025-03-10 13:27:04,151 - INFO - CLOSED long at 2093.33 | PnL: -0.01% | $-0.20 +2025-03-10 13:27:04,151 - INFO - OPENED SHORT at 2093.33 | Stop loss: 2103.8109321428574 | Take profit: 2061.908626785714 +2025-03-10 13:27:04,199 - INFO - CLOSED short at 2091.1 | PnL: 0.11% | $0.01 +2025-03-10 13:27:04,200 - INFO - OPENED LONG at 2091.1 | Stop loss: 2080.6302178571427 | Take profit: 2122.4879232142857 +2025-03-10 13:27:04,323 - INFO - CLOSED long at 2088.44 | PnL: -0.13% | $-0.42 +2025-03-10 13:27:04,324 - INFO - OPENED SHORT at 2088.44 | Stop loss: 2098.896482142857 | Take profit: 2057.0919767857145 +2025-03-10 13:27:04,348 - INFO - CLOSED short at 2083.97 | PnL: 0.21% | $0.21 +2025-03-10 13:27:04,349 - INFO - OPENED LONG at 2083.97 | Stop loss: 2073.535867857143 | Take profit: 2115.2509732142858 +2025-03-10 13:27:04,445 - INFO - CLOSED long at 2080.38 | PnL: -0.17% | $-0.50 +2025-03-10 13:27:04,447 - INFO - OPENED SHORT at 2080.38 | Stop loss: 2090.7961821428576 | Take profit: 2049.1528767857144 +2025-03-10 13:27:04,468 - INFO - CLOSED short at 2081.25 | PnL: -0.04% | $-0.26 +2025-03-10 13:27:04,468 - INFO - OPENED LONG at 2081.25 | Stop loss: 2070.829467857143 | Take profit: 2112.4901732142857 +2025-03-10 13:27:04,514 - INFO - CLOSED long at 2085.09 | PnL: 0.18% | $0.16 +2025-03-10 13:27:04,540 - INFO - OPENED LONG at 2083.59 | Stop loss: 2073.157767857143 | Take profit: 2114.865273214286 +2025-03-10 13:27:04,562 - INFO - CLOSED long at 2086.57 | PnL: 0.14% | $0.08 +2025-03-10 13:27:04,589 - INFO - OPENED LONG at 2085.8 | Stop loss: 2075.356717857143 | Take profit: 2117.1084232142857 +2025-03-10 13:27:04,742 - INFO - CLOSED long at 2088.1 | PnL: 0.11% | $0.02 +2025-03-10 13:27:04,743 - INFO - OPENED SHORT at 2088.1 | Stop loss: 2098.554782142857 | Take profit: 2056.757076785714 +2025-03-10 13:27:04,771 - INFO - CLOSED short at 2089.96 | PnL: -0.09% | $-0.35 +2025-03-10 13:27:04,772 - INFO - OPENED LONG at 2089.96 | Stop loss: 2079.495917857143 | Take profit: 2121.330823214286 +2025-03-10 13:27:04,842 - INFO - CLOSED long at 2087.78 | PnL: -0.10% | $-0.37 +2025-03-10 13:27:04,842 - INFO - OPENED SHORT at 2087.78 | Stop loss: 2098.2331821428575 | Take profit: 2056.4418767857146 +2025-03-10 13:27:04,864 - INFO - CLOSED short at 2086.81 | PnL: 0.05% | $-0.10 +2025-03-10 13:27:04,913 - INFO - OPENED LONG at 2085.67 | Stop loss: 2075.227367857143 | Take profit: 2116.9764732142858 +2025-03-10 13:27:04,986 - INFO - CLOSED long at 2091.05 | PnL: 0.26% | $0.29 +2025-03-10 13:27:04,987 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.5195321428573 | Take profit: 2059.6628267857145 +2025-03-10 13:27:05,011 - INFO - CLOSED short at 2091.95 | PnL: -0.04% | $-0.26 +2025-03-10 13:27:05,012 - INFO - OPENED LONG at 2091.95 | Stop loss: 2081.4759678571427 | Take profit: 2123.3506732142855 +2025-03-10 13:27:05,603 - INFO - CLOSED long at 2102.7 | PnL: 0.51% | $0.75 +2025-03-10 13:27:05,603 - INFO - OPENED SHORT at 2102.7 | Stop loss: 2113.2277821428565 | Take profit: 2071.138076785714 +2025-03-10 13:27:05,626 - INFO - CLOSED short at 2102.0 | PnL: 0.03% | $-0.12 +2025-03-10 13:27:05,627 - INFO - OPENED LONG at 2102.0 | Stop loss: 2091.4757178571426 | Take profit: 2133.5514232142855 +2025-03-10 13:27:05,798 - INFO - Trade Analysis: Win Rate=25.0% in uptrends, 0.0% in downtrends | Avg Win=$0.35, Avg Loss=$-0.38 +2025-03-10 13:27:05,799 - INFO - Episode 4: Reward=-48.61, Balance=$92.44, Win Rate=38.2%, Trades=76, Episode PnL=$-6.77, Total PnL=$-52.44, Max Drawdown=9.9%, Pred Accuracy=97.3% +2025-03-10 13:27:05,944 - INFO - Model saved to models/trading_agent_best_winrate.pt +2025-03-10 13:27:05,945 - INFO - New best win rate model saved: 38.2% +2025-03-10 13:27:06,160 - INFO - OPENED LONG at 2049.89 | Stop loss: 2039.6262678571427 | Take profit: 2080.659773214286 +2025-03-10 13:27:06,672 - INFO - CLOSED long at 2061.89 | PnL: 0.59% | $0.96 +2025-03-10 13:27:06,698 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.561267857143 | Take profit: 2093.8547732142856 +2025-03-10 13:27:07,163 - INFO - CLOSED long at 2067.9 | PnL: 0.24% | $0.29 +2025-03-10 13:27:07,210 - INFO - OPENED LONG at 2070.26 | Stop loss: 2059.8944178571433 | Take profit: 2101.335323214286 +2025-03-10 13:27:07,612 - INFO - CLOSED long at 2069.34 | PnL: -0.04% | $-0.29 +2025-03-10 13:27:07,639 - INFO - OPENED LONG at 2069.19 | Stop loss: 2058.829767857143 | Take profit: 2100.2492732142855 +2025-03-10 13:27:07,662 - INFO - CLOSED long at 2068.8 | PnL: -0.02% | $-0.24 +2025-03-10 13:27:07,710 - INFO - OPENED LONG at 2067.51 | Stop loss: 2057.1581678571433 | Take profit: 2098.544073214286 +2025-03-10 13:27:07,869 - INFO - CLOSED long at 2066.18 | PnL: -0.06% | $-0.33 +2025-03-10 13:27:07,895 - INFO - OPENED LONG at 2068.76 | Stop loss: 2058.401917857143 | Take profit: 2099.812823214286 +2025-03-10 13:27:07,991 - INFO - CLOSED long at 2069.7 | PnL: 0.05% | $-0.11 +2025-03-10 13:27:07,992 - INFO - OPENED SHORT at 2069.7 | Stop loss: 2080.062782142857 | Take profit: 2038.6330767857141 +2025-03-10 13:27:08,015 - INFO - CLOSED short at 2070.4 | PnL: -0.03% | $-0.27 +2025-03-10 13:27:08,015 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.033717857143 | Take profit: 2101.477423214286 +2025-03-10 13:27:08,204 - INFO - CLOSED long at 2072.15 | PnL: 0.08% | $-0.03 +2025-03-10 13:27:08,229 - INFO - OPENED LONG at 2074.29 | Stop loss: 2063.9042678571427 | Take profit: 2105.425773214286 +2025-03-10 13:27:08,541 - INFO - STOP LOSS hit for long at 2063.9042678571427 | PnL: -0.50% | $-1.19 +2025-03-10 13:27:08,591 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.919417857143 | Take profit: 2096.2603232142856 +2025-03-10 13:27:09,006 - INFO - CLOSED long at 2070.4 | PnL: 0.25% | $0.29 +2025-03-10 13:27:09,085 - INFO - OPENED LONG at 2068.5 | Stop loss: 2058.1432178571426 | Take profit: 2099.5489232142854 +2025-03-10 13:27:09,260 - INFO - CLOSED long at 2067.11 | PnL: -0.07% | $-0.33 +2025-03-10 13:27:09,260 - INFO - OPENED SHORT at 2067.11 | Stop loss: 2077.4598321428575 | Take profit: 2036.0819267857144 +2025-03-10 13:27:09,293 - INFO - CLOSED short at 2067.86 | PnL: -0.04% | $-0.27 +2025-03-10 13:27:09,293 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.506417857143 | Take profit: 2098.899323214286 +2025-03-10 13:27:09,771 - INFO - CLOSED long at 2065.26 | PnL: -0.13% | $-0.44 +2025-03-10 13:27:09,771 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.6005821428575 | Take profit: 2034.2596767857144 +2025-03-10 13:27:09,805 - INFO - CLOSED short at 2062.89 | PnL: 0.11% | $0.03 +2025-03-10 13:27:09,805 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.561267857143 | Take profit: 2093.8547732142856 +2025-03-10 13:27:11,715 - INFO - CLOSED long at 2054.89 | PnL: -0.39% | $-0.95 +2025-03-10 13:27:11,715 - INFO - OPENED SHORT at 2054.89 | Stop loss: 2065.178732142857 | Take profit: 2024.045226785714 +2025-03-10 13:27:11,774 - INFO - CLOSED short at 2056.71 | PnL: -0.09% | $-0.36 +2025-03-10 13:27:11,774 - INFO - OPENED LONG at 2056.71 | Stop loss: 2046.412167857143 | Take profit: 2087.5820732142856 +2025-03-10 13:27:11,951 - INFO - CLOSED long at 2062.69 | PnL: 0.29% | $0.37 +2025-03-10 13:27:11,951 - INFO - OPENED SHORT at 2062.69 | Stop loss: 2073.0177321428573 | Take profit: 2031.7282267857142 +2025-03-10 13:27:11,976 - INFO - CLOSED short at 2063.4 | PnL: -0.03% | $-0.26 +2025-03-10 13:27:11,977 - INFO - OPENED LONG at 2063.4 | Stop loss: 2053.068717857143 | Take profit: 2094.372423214286 +2025-03-10 13:27:12,614 - INFO - CLOSED long at 2067.44 | PnL: 0.20% | $0.18 +2025-03-10 13:27:12,661 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6107678571425 | Take profit: 2104.1062732142855 +2025-03-10 13:27:12,950 - INFO - CLOSED long at 2064.4 | PnL: -0.41% | $-0.99 +2025-03-10 13:27:12,950 - INFO - OPENED SHORT at 2064.4 | Stop loss: 2074.736282142857 | Take profit: 2033.4125767857145 +2025-03-10 13:27:12,983 - INFO - CLOSED short at 2064.31 | PnL: 0.00% | $-0.18 +2025-03-10 13:27:12,983 - INFO - OPENED LONG at 2064.31 | Stop loss: 2053.9741678571427 | Take profit: 2095.2960732142856 +2025-03-10 13:27:13,409 - INFO - CLOSED long at 2071.99 | PnL: 0.37% | $0.52 +2025-03-10 13:27:13,443 - INFO - OPENED LONG at 2068.19 | Stop loss: 2057.834767857143 | Take profit: 2099.2342732142856 +2025-03-10 13:27:13,680 - INFO - CLOSED long at 2073.99 | PnL: 0.28% | $0.35 +2025-03-10 13:27:13,680 - INFO - OPENED SHORT at 2073.99 | Stop loss: 2084.374232142857 | Take profit: 2042.858726785714 +2025-03-10 13:27:13,710 - INFO - CLOSED short at 2075.32 | PnL: -0.06% | $-0.32 +2025-03-10 13:27:13,710 - INFO - OPENED LONG at 2075.32 | Stop loss: 2064.929117857143 | Take profit: 2106.471223214286 +2025-03-10 13:27:13,767 - INFO - CLOSED long at 2076.9 | PnL: 0.08% | $-0.05 +2025-03-10 13:27:13,768 - INFO - OPENED SHORT at 2076.9 | Stop loss: 2087.2987821428574 | Take profit: 2045.7250767857142 +2025-03-10 13:27:13,823 - INFO - CLOSED short at 2074.0 | PnL: 0.14% | $0.08 +2025-03-10 13:27:13,824 - INFO - OPENED LONG at 2074.0 | Stop loss: 2063.615717857143 | Take profit: 2105.131423214286 +2025-03-10 13:27:14,076 - INFO - CLOSED long at 2065.45 | PnL: -0.41% | $-0.98 +2025-03-10 13:27:14,077 - INFO - OPENED SHORT at 2065.45 | Stop loss: 2075.791532142857 | Take profit: 2034.4468267857142 +2025-03-10 13:27:14,104 - INFO - CLOSED short at 2068.1 | PnL: -0.13% | $-0.43 +2025-03-10 13:27:14,105 - INFO - OPENED LONG at 2068.1 | Stop loss: 2057.745217857143 | Take profit: 2099.1429232142855 +2025-03-10 13:27:14,301 - INFO - CLOSED long at 2065.07 | PnL: -0.15% | $-0.47 +2025-03-10 13:27:14,327 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.745267857143 | Take profit: 2097.102773214286 +2025-03-10 13:27:14,350 - INFO - CLOSED long at 2063.39 | PnL: -0.13% | $-0.43 +2025-03-10 13:27:14,351 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.721232142857 | Take profit: 2032.4177267857142 +2025-03-10 13:27:14,382 - INFO - CLOSED short at 2062.34 | PnL: 0.05% | $-0.09 +2025-03-10 13:27:14,383 - INFO - OPENED LONG at 2062.34 | Stop loss: 2052.014017857143 | Take profit: 2093.296523214286 +2025-03-10 13:27:14,730 - INFO - CLOSED long at 2056.77 | PnL: -0.27% | $-0.69 +2025-03-10 13:27:14,730 - INFO - OPENED SHORT at 2056.77 | Stop loss: 2067.068132142857 | Take profit: 2025.8970267857144 +2025-03-10 13:27:14,756 - INFO - CLOSED short at 2053.01 | PnL: 0.18% | $0.15 +2025-03-10 13:27:14,782 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.949667857143 | Take profit: 2079.969573214286 +2025-03-10 13:27:15,233 - INFO - CLOSED long at 2061.21 | PnL: 0.59% | $0.90 +2025-03-10 13:27:15,233 - INFO - OPENED SHORT at 2061.21 | Stop loss: 2071.530332142857 | Take profit: 2030.2704267857143 +2025-03-10 13:27:15,262 - INFO - CLOSED short at 2059.9 | PnL: 0.06% | $-0.07 +2025-03-10 13:27:15,262 - INFO - OPENED LONG at 2059.9 | Stop loss: 2049.586217857143 | Take profit: 2090.819923214286 +2025-03-10 13:27:15,917 - INFO - TAKE PROFIT hit for long at 2090.819923214286 | PnL: 1.50% | $2.63 +2025-03-10 13:27:15,941 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.0322178571428 | Take profit: 2162.6819232142857 +2025-03-10 13:27:16,467 - INFO - CLOSED long at 2117.24 | PnL: -0.63% | $-1.41 +2025-03-10 13:27:16,467 - INFO - OPENED SHORT at 2117.24 | Stop loss: 2127.8404821428567 | Take profit: 2085.459976785714 +2025-03-10 13:27:16,534 - INFO - CLOSED short at 2119.93 | PnL: -0.13% | $-0.43 +2025-03-10 13:27:16,534 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3160678571426 | Take profit: 2151.750373214286 +2025-03-10 13:27:16,746 - INFO - STOP LOSS hit for long at 2109.3160678571426 | PnL: -0.50% | $-1.14 +2025-03-10 13:27:16,775 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032717857143 | Take profit: 2142.2804232142853 +2025-03-10 13:27:17,039 - INFO - CLOSED long at 2110.9 | PnL: 0.01% | $-0.16 +2025-03-10 13:27:17,040 - INFO - OPENED SHORT at 2110.9 | Stop loss: 2121.4687821428574 | Take profit: 2079.2150767857142 +2025-03-10 13:27:17,075 - INFO - CLOSED short at 2108.71 | PnL: 0.10% | $0.01 +2025-03-10 13:27:17,076 - INFO - OPENED LONG at 2108.71 | Stop loss: 2098.152167857143 | Take profit: 2140.362073214286 +2025-03-10 13:27:17,236 - INFO - STOP LOSS hit for long at 2098.152167857143 | PnL: -0.50% | $-1.12 +2025-03-10 13:27:17,289 - INFO - OPENED LONG at 2098.1 | Stop loss: 2087.595217857143 | Take profit: 2129.5929232142857 +2025-03-10 13:27:17,648 - INFO - CLOSED long at 2100.02 | PnL: 0.09% | $-0.02 +2025-03-10 13:27:17,677 - INFO - OPENED LONG at 2098.39 | Stop loss: 2087.8837678571426 | Take profit: 2129.887273214286 +2025-03-10 13:27:17,947 - INFO - STOP LOSS hit for long at 2087.8837678571426 | PnL: -0.50% | $-1.11 +2025-03-10 13:27:17,973 - INFO - OPENED SHORT at 2088.44 | Stop loss: 2098.896482142857 | Take profit: 2057.0919767857145 +2025-03-10 13:27:18,030 - INFO - CLOSED short at 2085.3 | PnL: 0.15% | $0.09 +2025-03-10 13:27:18,031 - INFO - OPENED LONG at 2085.3 | Stop loss: 2074.859217857143 | Take profit: 2116.600923214286 +2025-03-10 13:27:18,542 - INFO - CLOSED long at 2087.47 | PnL: 0.10% | $0.01 +2025-03-10 13:27:18,570 - INFO - OPENED LONG at 2087.78 | Stop loss: 2077.326817857143 | Take profit: 2119.118123214286 +2025-03-10 13:27:19,065 - INFO - CLOSED long at 2103.48 | PnL: 0.75% | $1.19 +2025-03-10 13:27:19,066 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.0116821428574 | Take profit: 2071.906376785714 +2025-03-10 13:27:19,094 - INFO - CLOSED short at 2104.93 | PnL: -0.07% | $-0.31 +2025-03-10 13:27:19,095 - INFO - OPENED LONG at 2104.93 | Stop loss: 2094.391067857143 | Take profit: 2136.5253732142855 +2025-03-10 13:27:19,265 - INFO - CLOSED long at 2105.2 | PnL: 0.01% | $-0.16 +2025-03-10 13:27:19,265 - INFO - OPENED SHORT at 2105.2 | Stop loss: 2115.740282142857 | Take profit: 2073.600576785714 +2025-03-10 13:27:19,294 - INFO - CLOSED short at 2103.52 | PnL: 0.08% | $-0.04 +2025-03-10 13:27:19,295 - INFO - OPENED LONG at 2103.52 | Stop loss: 2092.9881178571427 | Take profit: 2135.094223214286 +2025-03-10 13:27:19,641 - INFO - Trade Analysis: Win Rate=23.8% in uptrends, 0.0% in downtrends | Avg Win=$0.50, Avg Loss=$-0.46 +2025-03-10 13:27:19,641 - INFO - Episode 5: Reward=-36.69, Balance=$92.38, Win Rate=32.0%, Trades=50, Episode PnL=$-3.72, Total PnL=$-60.06, Max Drawdown=9.5%, Pred Accuracy=97.4% +2025-03-10 13:27:19,793 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 13:27:19,794 - INFO - New best PnL model saved: $-3.72 +2025-03-10 13:27:20,026 - INFO - OPENED LONG at 2049.89 | Stop loss: 2039.6262678571427 | Take profit: 2080.659773214286 +2025-03-10 13:27:20,108 - INFO - CLOSED long at 2051.89 | PnL: 0.10% | $-0.00 +2025-03-10 13:27:20,108 - INFO - OPENED SHORT at 2051.89 | Stop loss: 2062.163732142857 | Take profit: 2021.090226785714 +2025-03-10 13:27:20,135 - INFO - CLOSED short at 2052.3 | PnL: -0.02% | $-0.24 +2025-03-10 13:27:20,136 - INFO - OPENED LONG at 2052.3 | Stop loss: 2042.024217857143 | Take profit: 2083.105923214286 +2025-03-10 13:27:20,876 - INFO - CLOSED long at 2059.49 | PnL: 0.35% | $0.50 +2025-03-10 13:27:20,876 - INFO - OPENED SHORT at 2059.49 | Stop loss: 2069.801732142857 | Take profit: 2028.5762267857142 +2025-03-10 13:27:20,907 - INFO - CLOSED short at 2057.8 | PnL: 0.08% | $-0.04 +2025-03-10 13:27:20,907 - INFO - OPENED LONG at 2057.8 | Stop loss: 2047.496717857143 | Take profit: 2088.688423214286 +2025-03-10 13:27:20,973 - INFO - CLOSED long at 2057.94 | PnL: 0.01% | $-0.19 +2025-03-10 13:27:20,973 - INFO - OPENED SHORT at 2057.94 | Stop loss: 2068.2439821428575 | Take profit: 2027.0494767857144 +2025-03-10 13:27:21,007 - INFO - CLOSED short at 2058.11 | PnL: -0.01% | $-0.22 +2025-03-10 13:27:21,008 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.805167857143 | Take profit: 2089.003073214286 +2025-03-10 13:27:21,288 - INFO - CLOSED long at 2068.11 | PnL: 0.49% | $0.77 +2025-03-10 13:27:21,288 - INFO - OPENED SHORT at 2068.11 | Stop loss: 2078.464832142857 | Take profit: 2037.0669267857145 +2025-03-10 13:27:21,315 - INFO - CLOSED short at 2068.29 | PnL: -0.01% | $-0.22 +2025-03-10 13:27:21,315 - INFO - OPENED LONG at 2068.29 | Stop loss: 2057.934267857143 | Take profit: 2099.3357732142854 +2025-03-10 13:27:22,966 - INFO - CLOSED long at 2068.59 | PnL: 0.01% | $-0.17 +2025-03-10 13:27:22,967 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.9472321428575 | Take profit: 2037.5397267857143 +2025-03-10 13:27:22,999 - INFO - CLOSED short at 2069.7 | PnL: -0.05% | $-0.31 +2025-03-10 13:27:23,000 - INFO - OPENED LONG at 2069.7 | Stop loss: 2059.3372178571426 | Take profit: 2100.7669232142857 +2025-03-10 13:27:24,296 - INFO - CLOSED long at 2070.7 | PnL: 0.05% | $-0.10 +2025-03-10 13:27:24,297 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.0677821428567 | Take profit: 2039.618076785714 +2025-03-10 13:27:24,404 - INFO - CLOSED short at 2068.69 | PnL: 0.10% | $-0.01 +2025-03-10 13:27:24,405 - INFO - OPENED LONG at 2068.69 | Stop loss: 2058.332267857143 | Take profit: 2099.741773214286 +2025-03-10 13:27:25,562 - INFO - CLOSED long at 2060.3 | PnL: -0.41% | $-1.00 +2025-03-10 13:27:25,562 - INFO - OPENED SHORT at 2060.3 | Stop loss: 2070.615782142857 | Take profit: 2029.3740767857144 +2025-03-10 13:27:25,595 - INFO - CLOSED short at 2061.13 | PnL: -0.04% | $-0.28 +2025-03-10 13:27:25,596 - INFO - OPENED LONG at 2061.13 | Stop loss: 2050.8100678571427 | Take profit: 2092.0683732142857 +2025-03-10 13:27:25,737 - INFO - CLOSED long at 2063.39 | PnL: 0.11% | $0.02 +2025-03-10 13:27:25,770 - INFO - OPENED LONG at 2064.79 | Stop loss: 2054.451767857143 | Take profit: 2095.783273214286 +2025-03-10 13:27:26,162 - INFO - CLOSED long at 2057.4 | PnL: -0.36% | $-0.90 +2025-03-10 13:27:26,163 - INFO - OPENED SHORT at 2057.4 | Stop loss: 2067.7012821428575 | Take profit: 2026.5175767857145 +2025-03-10 13:27:26,221 - INFO - CLOSED short at 2056.28 | PnL: 0.05% | $-0.09 +2025-03-10 13:27:26,221 - INFO - OPENED LONG at 2056.28 | Stop loss: 2045.9843178571432 | Take profit: 2087.145623214286 +2025-03-10 13:27:26,632 - INFO - CLOSED long at 2063.9 | PnL: 0.37% | $0.52 +2025-03-10 13:27:26,632 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.233782142857 | Take profit: 2032.9200767857144 +2025-03-10 13:27:26,679 - INFO - CLOSED short at 2066.33 | PnL: -0.12% | $-0.42 +2025-03-10 13:27:26,679 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.9840678571427 | Take profit: 2097.3463732142854 +2025-03-10 13:27:27,569 - INFO - CLOSED long at 2063.97 | PnL: -0.11% | $-0.42 +2025-03-10 13:27:27,569 - INFO - OPENED SHORT at 2063.97 | Stop loss: 2074.304132142857 | Take profit: 2032.9890267857143 +2025-03-10 13:27:27,636 - INFO - CLOSED short at 2064.5 | PnL: -0.03% | $-0.24 +2025-03-10 13:27:27,637 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.163217857143 | Take profit: 2095.488923214286 +2025-03-10 13:27:28,276 - INFO - CLOSED long at 2069.69 | PnL: 0.25% | $0.29 +2025-03-10 13:27:28,305 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3322178571425 | Take profit: 2101.7819232142856 +2025-03-10 13:27:29,072 - INFO - CLOSED long at 2074.0 | PnL: 0.16% | $0.11 +2025-03-10 13:27:29,073 - INFO - OPENED SHORT at 2074.0 | Stop loss: 2084.384282142857 | Take profit: 2042.8685767857144 +2025-03-10 13:27:29,103 - INFO - CLOSED short at 2072.09 | PnL: 0.09% | $-0.02 +2025-03-10 13:27:29,104 - INFO - OPENED LONG at 2072.09 | Stop loss: 2061.715267857143 | Take profit: 2103.1927732142863 +2025-03-10 13:27:29,731 - INFO - CLOSED long at 2066.1 | PnL: -0.29% | $-0.75 +2025-03-10 13:27:29,732 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.444782142857 | Take profit: 2035.0870767857143 +2025-03-10 13:27:29,756 - INFO - CLOSED short at 2065.06 | PnL: 0.05% | $-0.10 +2025-03-10 13:27:29,756 - INFO - OPENED LONG at 2065.06 | Stop loss: 2054.720417857143 | Take profit: 2096.0573232142856 +2025-03-10 13:27:30,016 - INFO - STOP LOSS hit for long at 2054.720417857143 | PnL: -0.50% | $-1.15 +2025-03-10 13:27:30,044 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.949667857143 | Take profit: 2079.969573214286 +2025-03-10 13:27:30,880 - INFO - TAKE PROFIT hit for long at 2079.969573214286 | PnL: 1.50% | $2.65 +2025-03-10 13:27:30,978 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.8280178571426 | Take profit: 2171.6545232142857 +2025-03-10 13:27:31,000 - INFO - CLOSED long at 2131.78 | PnL: -0.36% | $-0.90 +2025-03-10 13:27:31,028 - INFO - OPENED LONG at 2133.95 | Stop loss: 2123.2659678571426 | Take profit: 2165.9806732142856 +2025-03-10 13:27:31,277 - INFO - STOP LOSS hit for long at 2123.2659678571426 | PnL: -0.50% | $-1.16 +2025-03-10 13:27:31,349 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3160678571426 | Take profit: 2151.750373214286 +2025-03-10 13:27:31,373 - INFO - CLOSED long at 2121.4 | PnL: 0.07% | $-0.06 +2025-03-10 13:27:31,448 - INFO - OPENED LONG at 2119.07 | Stop loss: 2108.460367857143 | Take profit: 2150.8774732142856 +2025-03-10 13:27:31,493 - INFO - STOP LOSS hit for long at 2108.460367857143 | PnL: -0.50% | $-1.14 +2025-03-10 13:27:31,516 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032717857143 | Take profit: 2142.2804232142853 +2025-03-10 13:27:31,738 - INFO - CLOSED long at 2110.9 | PnL: 0.01% | $-0.16 +2025-03-10 13:27:31,739 - INFO - OPENED SHORT at 2110.9 | Stop loss: 2121.4687821428574 | Take profit: 2079.2150767857142 +2025-03-10 13:27:31,765 - INFO - CLOSED short at 2108.71 | PnL: 0.10% | $0.01 +2025-03-10 13:27:31,766 - INFO - OPENED LONG at 2108.71 | Stop loss: 2098.152167857143 | Take profit: 2140.362073214286 +2025-03-10 13:27:31,893 - INFO - STOP LOSS hit for long at 2098.152167857143 | PnL: -0.50% | $-1.13 +2025-03-10 13:27:32,033 - INFO - OPENED LONG at 2098.9 | Stop loss: 2088.3912178571427 | Take profit: 2130.4049232142856 +2025-03-10 13:27:32,459 - INFO - CLOSED long at 2088.35 | PnL: -0.50% | $-1.12 +2025-03-10 13:27:32,459 - INFO - OPENED SHORT at 2088.35 | Stop loss: 2098.806032142857 | Take profit: 2057.0033267857143 +2025-03-10 13:27:32,485 - INFO - CLOSED short at 2083.28 | PnL: 0.24% | $0.26 +2025-03-10 13:27:32,485 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.849317857143 | Take profit: 2114.5506232142857 +2025-03-10 13:27:33,291 - INFO - CLOSED long at 2086.81 | PnL: 0.17% | $0.13 +2025-03-10 13:27:33,291 - INFO - OPENED SHORT at 2086.81 | Stop loss: 2097.2583321428574 | Take profit: 2055.4864267857142 +2025-03-10 13:27:33,310 - INFO - CLOSED short at 2089.79 | PnL: -0.14% | $-0.45 +2025-03-10 13:27:33,310 - INFO - OPENED LONG at 2089.79 | Stop loss: 2079.326767857143 | Take profit: 2121.1582732142856 +2025-03-10 13:27:33,676 - INFO - CLOSED long at 2097.11 | PnL: 0.35% | $0.46 +2025-03-10 13:27:33,676 - INFO - OPENED SHORT at 2097.11 | Stop loss: 2107.609832142857 | Take profit: 2065.6319267857143 +2025-03-10 13:27:33,699 - INFO - CLOSED short at 2098.49 | PnL: -0.07% | $-0.31 +2025-03-10 13:27:33,700 - INFO - OPENED LONG at 2098.49 | Stop loss: 2087.9832678571424 | Take profit: 2129.9887732142856 +2025-03-10 13:27:33,796 - INFO - CLOSED long at 2106.15 | PnL: 0.37% | $0.49 +2025-03-10 13:27:33,973 - INFO - OPENED LONG at 2103.07 | Stop loss: 2092.540367857143 | Take profit: 2134.637473214286 +2025-03-10 13:27:34,288 - INFO - CLOSED long at 2100.0 | PnL: -0.15% | $-0.45 +2025-03-10 13:27:34,351 - INFO - OPENED LONG at 2102.7 | Stop loss: 2092.1722178571426 | Take profit: 2134.261923214285 +2025-03-10 13:27:34,489 - INFO - CLOSED long at 2107.25 | PnL: 0.22% | $0.21 +2025-03-10 13:27:34,489 - INFO - OPENED SHORT at 2107.25 | Stop loss: 2117.8005321428573 | Take profit: 2075.6198267857144 +2025-03-10 13:27:34,588 - INFO - Trade Analysis: Win Rate=14.3% in uptrends, 0.0% in downtrends | Avg Win=$0.49, Avg Loss=$-0.44 +2025-03-10 13:27:34,589 - INFO - Episode 6: Reward=-38.95, Balance=$92.70, Win Rate=29.5%, Trades=44, Episode PnL=$-5.19, Total PnL=$-67.35, Max Drawdown=7.5%, Pred Accuracy=97.4% +2025-03-10 13:27:34,967 - INFO - OPENED LONG at 2051.11 | Stop loss: 2040.840167857143 | Take profit: 2081.898073214286 +2025-03-10 13:27:35,587 - INFO - CLOSED long at 2062.89 | PnL: 0.57% | $0.94 +2025-03-10 13:27:35,587 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.2187321428573 | Take profit: 2031.9252267857141 +2025-03-10 13:27:35,689 - INFO - CLOSED short at 2057.8 | PnL: 0.25% | $0.29 +2025-03-10 13:27:35,690 - INFO - OPENED LONG at 2057.8 | Stop loss: 2047.496717857143 | Take profit: 2088.688423214286 +2025-03-10 13:27:36,083 - INFO - CLOSED long at 2070.99 | PnL: 0.64% | $1.09 +2025-03-10 13:27:36,138 - INFO - OPENED LONG at 2069.6 | Stop loss: 2059.237717857143 | Take profit: 2100.6654232142855 +2025-03-10 13:27:36,756 - INFO - CLOSED long at 2070.7 | PnL: 0.05% | $-0.10 +2025-03-10 13:27:36,878 - INFO - OPENED LONG at 2067.51 | Stop loss: 2057.1581678571433 | Take profit: 2098.544073214286 +2025-03-10 13:27:36,969 - INFO - CLOSED long at 2066.19 | PnL: -0.06% | $-0.33 +2025-03-10 13:27:36,995 - INFO - OPENED LONG at 2066.29 | Stop loss: 2055.944267857143 | Take profit: 2097.3057732142856 +2025-03-10 13:27:37,111 - INFO - CLOSED long at 2068.51 | PnL: 0.11% | $0.02 +2025-03-10 13:27:37,111 - INFO - OPENED SHORT at 2068.51 | Stop loss: 2078.8668321428577 | Take profit: 2037.4609267857145 +2025-03-10 13:27:37,188 - INFO - CLOSED short at 2070.4 | PnL: -0.09% | $-0.39 +2025-03-10 13:27:37,188 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.033717857143 | Take profit: 2101.477423214286 +2025-03-10 13:27:37,259 - INFO - CLOSED long at 2071.39 | PnL: 0.05% | $-0.11 +2025-03-10 13:27:37,259 - INFO - OPENED SHORT at 2071.39 | Stop loss: 2081.761232142857 | Take profit: 2040.297726785714 +2025-03-10 13:27:37,347 - INFO - CLOSED short at 2073.11 | PnL: -0.08% | $-0.37 +2025-03-10 13:27:37,347 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.730167857143 | Take profit: 2104.228073214286 +2025-03-10 13:27:37,845 - INFO - CLOSED long at 2067.59 | PnL: -0.27% | $-0.74 +2025-03-10 13:27:37,846 - INFO - OPENED SHORT at 2067.59 | Stop loss: 2077.9422321428574 | Take profit: 2036.5547267857144 +2025-03-10 13:27:37,891 - INFO - CLOSED short at 2070.3 | PnL: -0.13% | $-0.46 +2025-03-10 13:27:37,892 - INFO - OPENED LONG at 2070.3 | Stop loss: 2059.934217857143 | Take profit: 2101.375923214286 +2025-03-10 13:27:37,935 - INFO - CLOSED long at 2070.7 | PnL: 0.02% | $-0.16 +2025-03-10 13:27:37,964 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.033717857143 | Take profit: 2101.477423214286 +2025-03-10 13:27:38,038 - INFO - CLOSED long at 2068.69 | PnL: -0.08% | $-0.36 +2025-03-10 13:27:38,063 - INFO - OPENED LONG at 2067.84 | Stop loss: 2057.486517857143 | Take profit: 2098.879023214286 +2025-03-10 13:27:39,364 - INFO - CLOSED long at 2064.79 | PnL: -0.15% | $-0.49 +2025-03-10 13:27:39,365 - INFO - OPENED SHORT at 2064.79 | Stop loss: 2075.128232142857 | Take profit: 2033.7967267857143 +2025-03-10 13:27:39,389 - INFO - CLOSED short at 2065.89 | PnL: -0.05% | $-0.30 +2025-03-10 13:27:39,390 - INFO - OPENED LONG at 2065.89 | Stop loss: 2055.5462678571425 | Take profit: 2096.8997732142852 +2025-03-10 13:27:39,721 - INFO - CLOSED long at 2059.46 | PnL: -0.31% | $-0.80 +2025-03-10 13:27:39,721 - INFO - OPENED SHORT at 2059.46 | Stop loss: 2069.771582142857 | Take profit: 2028.5466767857142 +2025-03-10 13:27:39,749 - INFO - CLOSED short at 2057.4 | PnL: 0.10% | $0.00 +2025-03-10 13:27:39,750 - INFO - OPENED LONG at 2057.4 | Stop loss: 2047.098717857143 | Take profit: 2088.282423214286 +2025-03-10 13:27:39,774 - INFO - CLOSED long at 2058.28 | PnL: 0.04% | $-0.11 +2025-03-10 13:27:39,775 - INFO - OPENED SHORT at 2058.28 | Stop loss: 2068.5856821428574 | Take profit: 2027.3843767857145 +2025-03-10 13:27:39,800 - INFO - CLOSED short at 2056.28 | PnL: 0.10% | $-0.01 +2025-03-10 13:27:39,857 - INFO - OPENED LONG at 2054.89 | Stop loss: 2044.6012678571428 | Take profit: 2085.7347732142857 +2025-03-10 13:27:39,971 - INFO - CLOSED long at 2059.8 | PnL: 0.24% | $0.27 +2025-03-10 13:27:39,971 - INFO - OPENED SHORT at 2059.8 | Stop loss: 2070.1132821428573 | Take profit: 2028.8815767857145 +2025-03-10 13:27:40,004 - INFO - CLOSED short at 2061.66 | PnL: -0.09% | $-0.37 +2025-03-10 13:27:40,004 - INFO - OPENED LONG at 2061.66 | Stop loss: 2051.3374178571426 | Take profit: 2092.6063232142856 +2025-03-10 13:27:40,140 - INFO - CLOSED long at 2063.4 | PnL: 0.08% | $-0.03 +2025-03-10 13:27:40,165 - INFO - OPENED LONG at 2066.36 | Stop loss: 2056.013917857143 | Take profit: 2097.3768232142857 +2025-03-10 13:27:40,387 - INFO - CLOSED long at 2065.69 | PnL: -0.03% | $-0.26 +2025-03-10 13:27:40,387 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.032732142857 | Take profit: 2034.6832267857144 +2025-03-10 13:27:40,412 - INFO - CLOSED short at 2069.79 | PnL: -0.20% | $-0.58 +2025-03-10 13:27:40,412 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.4267678571427 | Take profit: 2100.8582732142854 +2025-03-10 13:27:40,527 - INFO - CLOSED long at 2075.01 | PnL: 0.25% | $0.29 +2025-03-10 13:27:40,527 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.399332142857 | Take profit: 2043.8634267857146 +2025-03-10 13:27:40,572 - INFO - CLOSED short at 2072.6 | PnL: 0.12% | $0.03 +2025-03-10 13:27:40,573 - INFO - OPENED LONG at 2072.6 | Stop loss: 2062.222717857143 | Take profit: 2103.710423214286 +2025-03-10 13:27:41,278 - INFO - CLOSED long at 2065.66 | PnL: -0.33% | $-0.84 +2025-03-10 13:27:41,279 - INFO - OPENED SHORT at 2065.66 | Stop loss: 2076.0025821428567 | Take profit: 2034.6536767857142 +2025-03-10 13:27:41,302 - INFO - CLOSED short at 2063.95 | PnL: 0.08% | $-0.03 +2025-03-10 13:27:41,302 - INFO - OPENED LONG at 2063.95 | Stop loss: 2053.6159678571426 | Take profit: 2094.930673214286 +2025-03-10 13:27:41,611 - INFO - CLOSED long at 2065.31 | PnL: 0.07% | $-0.07 +2025-03-10 13:27:41,612 - INFO - OPENED SHORT at 2065.31 | Stop loss: 2075.6508321428573 | Take profit: 2034.3089267857142 +2025-03-10 13:27:41,705 - INFO - CLOSED short at 2071.59 | PnL: -0.30% | $-0.77 +2025-03-10 13:27:41,705 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.217767857143 | Take profit: 2102.6852732142856 +2025-03-10 13:27:42,239 - INFO - CLOSED long at 2073.27 | PnL: 0.08% | $-0.04 +2025-03-10 13:27:42,285 - INFO - OPENED LONG at 2073.99 | Stop loss: 2063.605767857143 | Take profit: 2105.121273214286 +2025-03-10 13:27:42,669 - INFO - CLOSED long at 2067.88 | PnL: -0.29% | $-0.75 +2025-03-10 13:27:42,716 - INFO - OPENED LONG at 2065.45 | Stop loss: 2055.108467857143 | Take profit: 2096.453173214286 +2025-03-10 13:27:43,597 - INFO - STOP LOSS hit for long at 2055.108467857143 | PnL: -0.50% | $-1.13 +2025-03-10 13:27:43,631 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.949667857143 | Take profit: 2079.969573214286 +2025-03-10 13:27:44,708 - INFO - CLOSED long at 2074.9 | PnL: 1.25% | $2.14 +2025-03-10 13:27:44,758 - INFO - OPENED LONG at 2076.08 | Stop loss: 2065.6853178571428 | Take profit: 2107.2426232142857 +2025-03-10 13:27:44,871 - INFO - CLOSED long at 2103.02 | PnL: 1.30% | $2.27 +2025-03-10 13:27:44,895 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.0322178571428 | Take profit: 2162.6819232142857 +2025-03-10 13:27:45,150 - INFO - CLOSED long at 2140.01 | PnL: 0.44% | $0.65 +2025-03-10 13:27:45,230 - INFO - OPENED LONG at 2126.99 | Stop loss: 2116.3407678571425 | Take profit: 2158.916273214286 +2025-03-10 13:27:45,255 - INFO - CLOSED long at 2127.3 | PnL: 0.01% | $-0.17 +2025-03-10 13:27:45,255 - INFO - OPENED SHORT at 2127.3 | Stop loss: 2137.9507821428574 | Take profit: 2095.3690767857147 +2025-03-10 13:27:45,305 - INFO - CLOSED short at 2121.09 | PnL: 0.29% | $0.37 +2025-03-10 13:27:45,305 - INFO - OPENED LONG at 2121.09 | Stop loss: 2110.470267857143 | Take profit: 2152.927773214286 +2025-03-10 13:27:45,632 - INFO - STOP LOSS hit for long at 2110.470267857143 | PnL: -0.50% | $-1.18 +2025-03-10 13:27:45,686 - INFO - OPENED LONG at 2109.05 | Stop loss: 2098.4904678571434 | Take profit: 2140.7071732142863 +2025-03-10 13:27:46,121 - INFO - CLOSED long at 2106.49 | PnL: -0.12% | $-0.43 +2025-03-10 13:27:46,146 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.5054178571427 | Take profit: 2139.7023232142856 +2025-03-10 13:27:46,227 - INFO - STOP LOSS hit for long at 2097.5054178571427 | PnL: -0.50% | $-1.16 +2025-03-10 13:27:46,298 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0180678571433 | Take profit: 2131.044373214286 +2025-03-10 13:27:46,893 - INFO - STOP LOSS hit for long at 2089.0180678571433 | PnL: -0.50% | $-1.14 +2025-03-10 13:27:46,918 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.849317857143 | Take profit: 2114.5506232142857 +2025-03-10 13:27:47,350 - INFO - CLOSED long at 2088.66 | PnL: 0.26% | $0.30 +2025-03-10 13:27:47,378 - INFO - OPENED LONG at 2088.32 | Stop loss: 2077.864117857143 | Take profit: 2119.6662232142858 +2025-03-10 13:27:47,858 - INFO - CLOSED long at 2097.11 | PnL: 0.42% | $0.61 +2025-03-10 13:27:47,887 - INFO - OPENED LONG at 2098.49 | Stop loss: 2087.9832678571424 | Take profit: 2129.9887732142856 +2025-03-10 13:27:48,360 - INFO - CLOSED long at 2102.7 | PnL: 0.20% | $0.19 +2025-03-10 13:27:48,417 - INFO - OPENED LONG at 2103.41 | Stop loss: 2092.878667857143 | Take profit: 2134.9825732142854 +2025-03-10 13:27:48,581 - INFO - Trade Analysis: Win Rate=25.0% in uptrends, 0.0% in downtrends | Avg Win=$0.63, Avg Loss=$-0.45 +2025-03-10 13:27:48,582 - INFO - Episode 7: Reward=-31.86, Balance=$95.83, Win Rate=33.3%, Trades=45, Episode PnL=$-2.12, Total PnL=$-71.53, Max Drawdown=8.8%, Pred Accuracy=97.5% +2025-03-10 13:27:48,738 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 13:27:48,738 - INFO - New best PnL model saved: $-2.12 +2025-03-10 13:27:49,070 - INFO - OPENED LONG at 2052.3 | Stop loss: 2042.024217857143 | Take profit: 2083.105923214286 +2025-03-10 13:27:49,541 - INFO - CLOSED long at 2062.89 | PnL: 0.52% | $0.83 +2025-03-10 13:27:49,541 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.2187321428573 | Take profit: 2031.9252267857141 +2025-03-10 13:27:49,635 - INFO - CLOSED short at 2059.49 | PnL: 0.16% | $0.13 +2025-03-10 13:27:49,635 - INFO - OPENED LONG at 2059.49 | Stop loss: 2049.1782678571426 | Take profit: 2090.4037732142856 +2025-03-10 13:27:49,683 - INFO - CLOSED long at 2057.8 | PnL: -0.08% | $-0.37 +2025-03-10 13:27:49,684 - INFO - OPENED SHORT at 2057.8 | Stop loss: 2068.1032821428576 | Take profit: 2026.9115767857145 +2025-03-10 13:27:49,735 - INFO - CLOSED short at 2057.89 | PnL: -0.00% | $-0.21 +2025-03-10 13:27:49,735 - INFO - OPENED LONG at 2057.89 | Stop loss: 2047.5862678571427 | Take profit: 2088.779773214286 +2025-03-10 13:27:51,138 - INFO - CLOSED long at 2066.39 | PnL: 0.41% | $0.62 +2025-03-10 13:27:51,138 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.7362321428573 | Take profit: 2035.3727267857141 +2025-03-10 13:27:51,165 - INFO - CLOSED short at 2065.99 | PnL: 0.02% | $-0.16 +2025-03-10 13:27:51,166 - INFO - OPENED LONG at 2065.99 | Stop loss: 2055.645767857143 | Take profit: 2097.0012732142854 +2025-03-10 13:27:52,438 - INFO - CLOSED long at 2070.73 | PnL: 0.23% | $0.26 +2025-03-10 13:27:52,463 - INFO - OPENED LONG at 2068.5 | Stop loss: 2058.1432178571426 | Take profit: 2099.5489232142854 +2025-03-10 13:27:52,721 - INFO - CLOSED long at 2067.8 | PnL: -0.03% | $-0.27 +2025-03-10 13:27:52,751 - INFO - OPENED LONG at 2068.18 | Stop loss: 2057.824817857143 | Take profit: 2099.2241232142856 +2025-03-10 13:27:53,590 - INFO - CLOSED long at 2061.13 | PnL: -0.34% | $-0.88 +2025-03-10 13:27:53,590 - INFO - OPENED SHORT at 2061.13 | Stop loss: 2071.449932142857 | Take profit: 2030.1916267857143 +2025-03-10 13:27:53,641 - INFO - CLOSED short at 2064.1 | PnL: -0.14% | $-0.48 +2025-03-10 13:27:53,641 - INFO - OPENED LONG at 2064.1 | Stop loss: 2053.765217857143 | Take profit: 2095.0829232142855 +2025-03-10 13:27:54,779 - INFO - CLOSED long at 2078.01 | PnL: 0.67% | $1.13 +2025-03-10 13:27:54,779 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.4143321428573 | Take profit: 2046.8184267857146 +2025-03-10 13:27:54,809 - INFO - CLOSED short at 2075.01 | PnL: 0.14% | $0.09 +2025-03-10 13:27:54,810 - INFO - OPENED LONG at 2075.01 | Stop loss: 2064.620667857143 | Take profit: 2106.156573214286 +2025-03-10 13:27:55,004 - INFO - CLOSED long at 2068.39 | PnL: -0.32% | $-0.84 +2025-03-10 13:27:55,004 - INFO - OPENED SHORT at 2068.39 | Stop loss: 2078.746232142857 | Take profit: 2037.3427267857141 +2025-03-10 13:27:55,053 - INFO - CLOSED short at 2069.03 | PnL: -0.03% | $-0.26 +2025-03-10 13:27:55,054 - INFO - OPENED LONG at 2069.03 | Stop loss: 2058.670567857143 | Take profit: 2100.086873214286 +2025-03-10 13:27:55,102 - INFO - CLOSED long at 2068.79 | PnL: -0.01% | $-0.22 +2025-03-10 13:27:55,102 - INFO - OPENED SHORT at 2068.79 | Stop loss: 2079.148232142857 | Take profit: 2037.7367267857144 +2025-03-10 13:27:55,151 - INFO - CLOSED short at 2071.49 | PnL: -0.13% | $-0.45 +2025-03-10 13:27:55,151 - INFO - OPENED LONG at 2071.49 | Stop loss: 2061.1182678571427 | Take profit: 2102.5837732142854 +2025-03-10 13:27:56,713 - INFO - CLOSED long at 2066.4 | PnL: -0.25% | $-0.68 +2025-03-10 13:27:56,741 - INFO - OPENED LONG at 2066.89 | Stop loss: 2056.541267857143 | Take profit: 2097.9147732142856 +2025-03-10 13:27:56,952 - INFO - CLOSED long at 2070.1 | PnL: 0.16% | $0.11 +2025-03-10 13:27:56,953 - INFO - OPENED SHORT at 2070.1 | Stop loss: 2080.4647821428566 | Take profit: 2039.0270767857141 +2025-03-10 13:27:57,009 - INFO - CLOSED short at 2067.19 | PnL: 0.14% | $0.08 +2025-03-10 13:27:57,009 - INFO - OPENED LONG at 2067.19 | Stop loss: 2056.8397678571428 | Take profit: 2098.2192732142857 +2025-03-10 13:27:57,611 - INFO - STOP LOSS hit for long at 2056.8397678571428 | PnL: -0.50% | $-1.17 +2025-03-10 13:27:57,663 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.730667857143 | Take profit: 2083.826573214286 +2025-03-10 13:27:58,959 - INFO - TAKE PROFIT hit for long at 2083.826573214286 | PnL: 1.50% | $2.71 +2025-03-10 13:27:59,098 - INFO - OPENED LONG at 2133.95 | Stop loss: 2123.2659678571426 | Take profit: 2165.9806732142856 +2025-03-10 13:27:59,212 - INFO - CLOSED long at 2140.01 | PnL: 0.28% | $0.37 +2025-03-10 13:27:59,212 - INFO - OPENED SHORT at 2140.01 | Stop loss: 2150.7243321428573 | Take profit: 2107.8884267857147 +2025-03-10 13:27:59,239 - INFO - CLOSED short at 2134.78 | PnL: 0.24% | $0.29 +2025-03-10 13:27:59,240 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.0918178571433 | Take profit: 2166.8231232142857 +2025-03-10 13:27:59,333 - INFO - STOP LOSS hit for long at 2124.0918178571433 | PnL: -0.50% | $-1.20 +2025-03-10 13:27:59,358 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.534967857143 | Take profit: 2151.9736732142856 +2025-03-10 13:27:59,477 - INFO - CLOSED long at 2119.14 | PnL: -0.05% | $-0.29 +2025-03-10 13:27:59,478 - INFO - OPENED SHORT at 2119.14 | Stop loss: 2129.749982142857 | Take profit: 2087.331476785714 +2025-03-10 13:27:59,507 - INFO - CLOSED short at 2119.07 | PnL: 0.00% | $-0.19 +2025-03-10 13:27:59,538 - INFO - OPENED LONG at 2115.28 | Stop loss: 2104.689317857143 | Take profit: 2147.0306232142857 +2025-03-10 13:27:59,763 - INFO - CLOSED long at 2120.81 | PnL: 0.26% | $0.32 +2025-03-10 13:27:59,764 - INFO - OPENED SHORT at 2120.81 | Stop loss: 2131.428332142857 | Take profit: 2088.976426785714 +2025-03-10 13:27:59,789 - INFO - CLOSED short at 2116.48 | PnL: 0.20% | $0.21 +2025-03-10 13:27:59,862 - INFO - OPENED LONG at 2108.71 | Stop loss: 2098.152167857143 | Take profit: 2140.362073214286 +2025-03-10 13:27:59,983 - INFO - STOP LOSS hit for long at 2098.152167857143 | PnL: -0.50% | $-1.19 +2025-03-10 13:28:00,007 - INFO - OPENED SHORT at 2099.53 | Stop loss: 2110.041932142857 | Take profit: 2068.0156267857146 +2025-03-10 13:28:00,036 - INFO - CLOSED short at 2098.1 | PnL: 0.07% | $-0.06 +2025-03-10 13:28:00,037 - INFO - OPENED LONG at 2098.1 | Stop loss: 2087.595217857143 | Take profit: 2129.5929232142857 +2025-03-10 13:28:00,411 - INFO - CLOSED long at 2095.29 | PnL: -0.13% | $-0.46 +2025-03-10 13:28:00,439 - INFO - OPENED LONG at 2093.46 | Stop loss: 2082.9784178571426 | Take profit: 2124.883323214286 +2025-03-10 13:28:00,460 - INFO - CLOSED long at 2093.33 | PnL: -0.01% | $-0.21 +2025-03-10 13:28:00,460 - INFO - OPENED SHORT at 2093.33 | Stop loss: 2103.8109321428574 | Take profit: 2061.908626785714 +2025-03-10 13:28:00,480 - INFO - CLOSED short at 2092.46 | PnL: 0.04% | $-0.11 +2025-03-10 13:28:00,507 - INFO - OPENED LONG at 2091.1 | Stop loss: 2080.6302178571427 | Take profit: 2122.4879232142857 +2025-03-10 13:28:00,641 - INFO - CLOSED long at 2083.97 | PnL: -0.34% | $-0.85 +2025-03-10 13:28:00,641 - INFO - OPENED SHORT at 2083.97 | Stop loss: 2094.4041321428567 | Take profit: 2052.689026785714 +2025-03-10 13:28:00,725 - INFO - CLOSED short at 2081.49 | PnL: 0.12% | $0.04 +2025-03-10 13:28:00,726 - INFO - OPENED LONG at 2081.49 | Stop loss: 2071.068267857143 | Take profit: 2112.7337732142855 +2025-03-10 13:28:00,999 - INFO - CLOSED long at 2088.66 | PnL: 0.34% | $0.47 +2025-03-10 13:28:01,000 - INFO - OPENED SHORT at 2088.66 | Stop loss: 2099.117582142857 | Take profit: 2057.308676785714 +2025-03-10 13:28:01,028 - INFO - CLOSED short at 2088.32 | PnL: 0.02% | $-0.16 +2025-03-10 13:28:01,028 - INFO - OPENED LONG at 2088.32 | Stop loss: 2077.864117857143 | Take profit: 2119.6662232142858 +2025-03-10 13:28:01,129 - INFO - CLOSED long at 2087.47 | PnL: -0.04% | $-0.27 +2025-03-10 13:28:01,129 - INFO - OPENED SHORT at 2087.47 | Stop loss: 2097.9216321428567 | Take profit: 2056.136526785714 +2025-03-10 13:28:01,157 - INFO - CLOSED short at 2087.78 | PnL: -0.01% | $-0.22 +2025-03-10 13:28:01,158 - INFO - OPENED LONG at 2087.78 | Stop loss: 2077.326817857143 | Take profit: 2119.118123214286 +2025-03-10 13:28:02,119 - INFO - Trade Analysis: Win Rate=35.3% in uptrends, 0.0% in downtrends | Avg Win=$0.51, Avg Loss=$-0.47 +2025-03-10 13:28:02,120 - INFO - Episode 8: Reward=-26.61, Balance=$96.42, Win Rate=38.5%, Trades=39, Episode PnL=$-3.49, Total PnL=$-75.10, Max Drawdown=3.8%, Pred Accuracy=97.6% +2025-03-10 13:28:02,294 - INFO - Model saved to models/trading_agent_best_winrate.pt +2025-03-10 13:28:02,294 - INFO - New best win rate model saved: 38.5% +2025-03-10 13:28:02,494 - INFO - OPENED LONG at 2049.89 | Stop loss: 2039.6262678571427 | Take profit: 2080.659773214286 +2025-03-10 13:28:02,652 - INFO - CLOSED long at 2055.69 | PnL: 0.28% | $0.36 +2025-03-10 13:28:02,652 - INFO - OPENED SHORT at 2055.69 | Stop loss: 2065.982732142857 | Take profit: 2024.8332267857143 +2025-03-10 13:28:02,700 - INFO - CLOSED short at 2056.89 | PnL: -0.06% | $-0.32 +2025-03-10 13:28:02,700 - INFO - OPENED LONG at 2056.89 | Stop loss: 2046.5912678571426 | Take profit: 2087.764773214286 +2025-03-10 13:28:04,282 - INFO - CLOSED long at 2072.91 | PnL: 0.78% | $1.35 +2025-03-10 13:28:04,283 - INFO - OPENED SHORT at 2072.91 | Stop loss: 2083.288832142857 | Take profit: 2041.794926785714 +2025-03-10 13:28:04,307 - INFO - CLOSED short at 2072.33 | PnL: 0.03% | $-0.15 +2025-03-10 13:28:04,307 - INFO - OPENED LONG at 2072.33 | Stop loss: 2061.954067857143 | Take profit: 2103.4363732142856 +2025-03-10 13:28:04,788 - INFO - CLOSED long at 2068.8 | PnL: -0.17% | $-0.54 +2025-03-10 13:28:04,812 - INFO - OPENED LONG at 2067.6 | Stop loss: 2057.247717857143 | Take profit: 2098.6354232142858 +2025-03-10 13:28:05,706 - INFO - CLOSED long at 2071.11 | PnL: 0.17% | $0.14 +2025-03-10 13:28:05,786 - INFO - OPENED LONG at 2069.46 | Stop loss: 2059.098417857143 | Take profit: 2100.523323214286 +2025-03-10 13:28:05,955 - INFO - CLOSED long at 2066.8 | PnL: -0.13% | $-0.46 +2025-03-10 13:28:05,982 - INFO - OPENED LONG at 2065.49 | Stop loss: 2055.1482678571424 | Take profit: 2096.4937732142857 +2025-03-10 13:28:06,691 - INFO - CLOSED long at 2066.4 | PnL: 0.04% | $-0.11 +2025-03-10 13:28:06,691 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.746282142857 | Take profit: 2035.3825767857145 +2025-03-10 13:28:06,724 - INFO - CLOSED short at 2066.1 | PnL: 0.01% | $-0.17 +2025-03-10 13:28:06,725 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.7552178571427 | Take profit: 2097.1129232142857 +2025-03-10 13:28:07,062 - INFO - CLOSED long at 2064.99 | PnL: -0.05% | $-0.31 +2025-03-10 13:28:07,199 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.456817857143 | Take profit: 2092.728123214286 +2025-03-10 13:28:07,443 - INFO - CLOSED long at 2067.1 | PnL: 0.26% | $0.31 +2025-03-10 13:28:07,443 - INFO - OPENED SHORT at 2067.1 | Stop loss: 2077.4497821428567 | Take profit: 2036.0720767857142 +2025-03-10 13:28:07,470 - INFO - CLOSED short at 2065.54 | PnL: 0.08% | $-0.05 +2025-03-10 13:28:07,471 - INFO - OPENED LONG at 2065.54 | Stop loss: 2055.198017857143 | Take profit: 2096.5445232142856 +2025-03-10 13:28:08,154 - INFO - CLOSED long at 2064.1 | PnL: -0.07% | $-0.34 +2025-03-10 13:28:08,237 - INFO - OPENED LONG at 2064.33 | Stop loss: 2053.994067857143 | Take profit: 2095.3163732142857 +2025-03-10 13:28:08,305 - INFO - CLOSED long at 2065.89 | PnL: 0.08% | $-0.05 +2025-03-10 13:28:08,306 - INFO - OPENED SHORT at 2065.89 | Stop loss: 2076.233732142857 | Take profit: 2034.880226785714 +2025-03-10 13:28:08,329 - INFO - CLOSED short at 2063.53 | PnL: 0.11% | $0.03 +2025-03-10 13:28:08,330 - INFO - OPENED LONG at 2063.53 | Stop loss: 2053.198067857143 | Take profit: 2094.504373214286 +2025-03-10 13:28:09,952 - INFO - CLOSED long at 2065.3 | PnL: 0.09% | $-0.03 +2025-03-10 13:28:09,975 - INFO - OPENED LONG at 2064.4 | Stop loss: 2054.0637178571433 | Take profit: 2095.3874232142857 +2025-03-10 13:28:10,312 - INFO - CLOSED long at 2070.7 | PnL: 0.31% | $0.41 +2025-03-10 13:28:10,312 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.0677821428567 | Take profit: 2039.618076785714 +2025-03-10 13:28:10,538 - INFO - CLOSED short at 2071.61 | PnL: -0.04% | $-0.29 +2025-03-10 13:28:10,539 - INFO - OPENED LONG at 2071.61 | Stop loss: 2061.2376678571427 | Take profit: 2102.705573214286 +2025-03-10 13:28:11,192 - INFO - CLOSED long at 2065.8 | PnL: -0.28% | $-0.75 +2025-03-10 13:28:11,192 - INFO - OPENED SHORT at 2065.8 | Stop loss: 2076.1432821428575 | Take profit: 2034.7915767857146 +2025-03-10 13:28:11,222 - INFO - CLOSED short at 2065.07 | PnL: 0.04% | $-0.13 +2025-03-10 13:28:11,222 - INFO - OPENED LONG at 2065.07 | Stop loss: 2054.730367857143 | Take profit: 2096.067473214286 +2025-03-10 13:28:11,294 - INFO - CLOSED long at 2062.34 | PnL: -0.13% | $-0.46 +2025-03-10 13:28:11,294 - INFO - OPENED SHORT at 2062.34 | Stop loss: 2072.6659821428575 | Take profit: 2031.3834767857145 +2025-03-10 13:28:11,321 - INFO - CLOSED short at 2063.98 | PnL: -0.08% | $-0.35 +2025-03-10 13:28:11,321 - INFO - OPENED LONG at 2063.98 | Stop loss: 2053.645817857143 | Take profit: 2094.9611232142856 +2025-03-10 13:28:11,414 - INFO - CLOSED long at 2064.5 | PnL: 0.03% | $-0.15 +2025-03-10 13:28:11,440 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.9840678571427 | Take profit: 2097.3463732142854 +2025-03-10 13:28:11,641 - INFO - STOP LOSS hit for long at 2055.9840678571427 | PnL: -0.50% | $-1.17 +2025-03-10 13:28:11,665 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.949667857143 | Take profit: 2079.969573214286 +2025-03-10 13:28:12,502 - INFO - TAKE PROFIT hit for long at 2079.969573214286 | PnL: 1.50% | $2.69 +2025-03-10 13:28:12,527 - INFO - OPENED LONG at 2090.49 | Stop loss: 2080.023267857143 | Take profit: 2121.8687732142853 +2025-03-10 13:28:12,583 - INFO - TAKE PROFIT hit for long at 2121.8687732142853 | PnL: 1.50% | $2.77 +2025-03-10 13:28:12,625 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.8280178571426 | Take profit: 2171.6545232142857 +2025-03-10 13:28:12,929 - INFO - STOP LOSS hit for long at 2128.8280178571426 | PnL: -0.50% | $-1.22 +2025-03-10 13:28:12,949 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.649217857143 | Take profit: 2159.230923214286 +2025-03-10 13:28:13,295 - INFO - STOP LOSS hit for long at 2116.649217857143 | PnL: -0.50% | $-1.21 +2025-03-10 13:28:13,346 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032717857143 | Take profit: 2142.2804232142853 +2025-03-10 13:28:13,792 - INFO - CLOSED long at 2108.06 | PnL: -0.12% | $-0.44 +2025-03-10 13:28:13,824 - INFO - OPENED LONG at 2103.33 | Stop loss: 2092.7990678571427 | Take profit: 2134.9013732142853 +2025-03-10 13:28:13,879 - INFO - STOP LOSS hit for long at 2092.7990678571427 | PnL: -0.50% | $-1.19 +2025-03-10 13:28:13,905 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0180678571433 | Take profit: 2131.044373214286 +2025-03-10 13:28:14,427 - INFO - STOP LOSS hit for long at 2089.0180678571433 | PnL: -0.50% | $-1.17 +2025-03-10 13:28:14,454 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.849317857143 | Take profit: 2114.5506232142857 +2025-03-10 13:28:14,660 - INFO - CLOSED long at 2085.09 | PnL: 0.09% | $-0.03 +2025-03-10 13:28:14,660 - INFO - OPENED SHORT at 2085.09 | Stop loss: 2095.5297321428575 | Take profit: 2053.7922267857143 +2025-03-10 13:28:14,862 - INFO - CLOSED short at 2088.1 | PnL: -0.14% | $-0.47 +2025-03-10 13:28:14,862 - INFO - OPENED LONG at 2088.1 | Stop loss: 2077.6452178571426 | Take profit: 2119.4429232142857 +2025-03-10 13:28:14,883 - INFO - CLOSED long at 2089.96 | PnL: 0.09% | $-0.02 +2025-03-10 13:28:14,903 - INFO - OPENED SHORT at 2087.0 | Stop loss: 2097.449282142857 | Take profit: 2055.673576785714 +2025-03-10 13:28:14,949 - INFO - CLOSED short at 2087.78 | PnL: -0.04% | $-0.26 +2025-03-10 13:28:14,949 - INFO - OPENED LONG at 2087.78 | Stop loss: 2077.326817857143 | Take profit: 2119.118123214286 +2025-03-10 13:28:15,080 - INFO - CLOSED long at 2091.05 | PnL: 0.16% | $0.11 +2025-03-10 13:28:15,080 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.5195321428573 | Take profit: 2059.6628267857145 +2025-03-10 13:28:15,153 - INFO - CLOSED short at 2097.8 | PnL: -0.32% | $-0.81 +2025-03-10 13:28:15,154 - INFO - OPENED LONG at 2097.8 | Stop loss: 2087.296717857143 | Take profit: 2129.288423214286 +2025-03-10 13:28:15,444 - INFO - CLOSED long at 2103.07 | PnL: 0.25% | $0.29 +2025-03-10 13:28:15,444 - INFO - OPENED SHORT at 2103.07 | Stop loss: 2113.5996321428574 | Take profit: 2071.5025267857145 +2025-03-10 13:28:15,488 - INFO - CLOSED short at 2105.83 | PnL: -0.13% | $-0.44 +2025-03-10 13:28:15,489 - INFO - OPENED LONG at 2105.83 | Stop loss: 2095.286567857143 | Take profit: 2137.4388732142856 +2025-03-10 13:28:15,557 - INFO - CLOSED long at 2103.52 | PnL: -0.11% | $-0.40 +2025-03-10 13:28:15,557 - INFO - OPENED SHORT at 2103.52 | Stop loss: 2114.0518821428573 | Take profit: 2071.9457767857143 +2025-03-10 13:28:15,602 - INFO - CLOSED short at 2105.21 | PnL: -0.08% | $-0.34 +2025-03-10 13:28:15,603 - INFO - OPENED LONG at 2105.21 | Stop loss: 2094.669667857143 | Take profit: 2136.8095732142856 +2025-03-10 13:28:15,860 - INFO - Trade Analysis: Win Rate=15.0% in uptrends, 0.0% in downtrends | Avg Win=$0.85, Avg Loss=$-0.44 +2025-03-10 13:28:15,861 - INFO - Episode 9: Reward=-46.05, Balance=$94.67, Win Rate=24.4%, Trades=41, Episode PnL=$-6.37, Total PnL=$-80.44, Max Drawdown=5.6%, Pred Accuracy=97.8% +2025-03-10 13:28:16,089 - INFO - OPENED LONG at 2051.11 | Stop loss: 2040.840167857143 | Take profit: 2081.898073214286 +2025-03-10 13:28:16,276 - INFO - CLOSED long at 2060.13 | PnL: 0.44% | $0.67 +2025-03-10 13:28:16,304 - INFO - OPENED LONG at 2059.7 | Stop loss: 2049.387217857143 | Take profit: 2090.6169232142856 +2025-03-10 13:28:16,534 - INFO - CLOSED long at 2058.3 | PnL: -0.07% | $-0.34 +2025-03-10 13:28:16,534 - INFO - OPENED SHORT at 2058.3 | Stop loss: 2068.605782142857 | Take profit: 2027.4040767857146 +2025-03-10 13:28:16,587 - INFO - CLOSED short at 2061.89 | PnL: -0.17% | $-0.55 +2025-03-10 13:28:16,588 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.566267857143 | Take profit: 2092.8397732142857 +2025-03-10 13:28:16,712 - INFO - CLOSED long at 2057.89 | PnL: -0.19% | $-0.58 +2025-03-10 13:28:16,713 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.1937321428572 | Take profit: 2027.0002267857142 +2025-03-10 13:28:16,743 - INFO - CLOSED short at 2057.94 | PnL: -0.00% | $-0.20 +2025-03-10 13:28:16,743 - INFO - OPENED LONG at 2057.94 | Stop loss: 2047.6360178571429 | Take profit: 2088.8305232142857 +2025-03-10 13:28:17,008 - INFO - CLOSED long at 2070.99 | PnL: 0.63% | $1.05 +2025-03-10 13:28:17,084 - INFO - OPENED LONG at 2068.99 | Stop loss: 2058.630767857143 | Take profit: 2100.0462732142855 +2025-03-10 13:28:17,176 - INFO - CLOSED long at 2071.44 | PnL: 0.12% | $0.04 +2025-03-10 13:28:17,177 - INFO - OPENED SHORT at 2071.44 | Stop loss: 2081.8114821428576 | Take profit: 2040.3469767857143 +2025-03-10 13:28:17,229 - INFO - CLOSED short at 2075.1 | PnL: -0.18% | $-0.55 +2025-03-10 13:28:17,230 - INFO - OPENED LONG at 2075.1 | Stop loss: 2064.7102178571427 | Take profit: 2106.2479232142855 +2025-03-10 13:28:17,252 - INFO - CLOSED long at 2072.91 | PnL: -0.11% | $-0.41 +2025-03-10 13:28:17,279 - INFO - OPENED LONG at 2072.33 | Stop loss: 2061.954067857143 | Take profit: 2103.4363732142856 +2025-03-10 13:28:17,305 - INFO - CLOSED long at 2071.38 | PnL: -0.05% | $-0.29 +2025-03-10 13:28:17,305 - INFO - OPENED SHORT at 2071.38 | Stop loss: 2081.7511821428575 | Take profit: 2040.2878767857144 +2025-03-10 13:28:17,444 - INFO - CLOSED short at 2070.28 | PnL: 0.05% | $-0.09 +2025-03-10 13:28:17,444 - INFO - OPENED LONG at 2070.28 | Stop loss: 2059.914317857143 | Take profit: 2101.3556232142855 +2025-03-10 13:28:18,176 - INFO - CLOSED long at 2070.4 | PnL: 0.01% | $-0.18 +2025-03-10 13:28:18,177 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7662821428576 | Take profit: 2039.3225767857145 +2025-03-10 13:28:18,227 - INFO - CLOSED short at 2069.96 | PnL: 0.02% | $-0.15 +2025-03-10 13:28:18,228 - INFO - OPENED LONG at 2069.96 | Stop loss: 2059.595917857143 | Take profit: 2101.0308232142856 +2025-03-10 13:28:18,346 - INFO - CLOSED long at 2073.11 | PnL: 0.15% | $0.10 +2025-03-10 13:28:18,369 - INFO - OPENED LONG at 2072.7 | Stop loss: 2062.3222178571427 | Take profit: 2103.8119232142853 +2025-03-10 13:28:19,020 - INFO - CLOSED long at 2069.2 | PnL: -0.17% | $-0.53 +2025-03-10 13:28:19,020 - INFO - OPENED SHORT at 2069.2 | Stop loss: 2079.560282142857 | Take profit: 2038.140576785714 +2025-03-10 13:28:19,047 - INFO - CLOSED short at 2070.3 | PnL: -0.05% | $-0.30 +2025-03-10 13:28:19,047 - INFO - OPENED LONG at 2070.3 | Stop loss: 2059.934217857143 | Take profit: 2101.375923214286 +2025-03-10 13:28:19,496 - INFO - CLOSED long at 2064.99 | PnL: -0.26% | $-0.69 +2025-03-10 13:28:19,496 - INFO - OPENED SHORT at 2064.99 | Stop loss: 2075.329232142857 | Take profit: 2033.993726785714 +2025-03-10 13:28:19,516 - INFO - CLOSED short at 2065.83 | PnL: -0.04% | $-0.27 +2025-03-10 13:28:19,516 - INFO - OPENED LONG at 2065.83 | Stop loss: 2055.4865678571427 | Take profit: 2096.8388732142853 +2025-03-10 13:28:19,926 - INFO - CLOSED long at 2064.5 | PnL: -0.06% | $-0.32 +2025-03-10 13:28:19,976 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.2777178571428 | Take profit: 2092.5454232142856 +2025-03-10 13:28:20,077 - INFO - CLOSED long at 2059.3 | PnL: -0.11% | $-0.41 +2025-03-10 13:28:20,133 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.9941678571427 | Take profit: 2091.2360732142856 +2025-03-10 13:28:21,073 - INFO - CLOSED long at 2061.3 | PnL: 0.05% | $-0.10 +2025-03-10 13:28:21,074 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.6207821428575 | Take profit: 2030.3590767857145 +2025-03-10 13:28:21,096 - INFO - CLOSED short at 2062.69 | PnL: -0.07% | $-0.32 +2025-03-10 13:28:21,096 - INFO - OPENED LONG at 2062.69 | Stop loss: 2052.362267857143 | Take profit: 2093.6517732142856 +2025-03-10 13:28:23,299 - INFO - CLOSED long at 2068.1 | PnL: 0.26% | $0.31 +2025-03-10 13:28:23,300 - INFO - OPENED SHORT at 2068.1 | Stop loss: 2078.4547821428573 | Take profit: 2037.0570767857141 +2025-03-10 13:28:23,594 - INFO - CLOSED short at 2065.8 | PnL: 0.11% | $0.02 +2025-03-10 13:28:23,594 - INFO - OPENED LONG at 2065.8 | Stop loss: 2055.456717857143 | Take profit: 2096.808423214286 +2025-03-10 13:28:23,671 - INFO - CLOSED long at 2063.39 | PnL: -0.12% | $-0.41 +2025-03-10 13:28:23,700 - INFO - OPENED LONG at 2062.34 | Stop loss: 2052.014017857143 | Take profit: 2093.296523214286 +2025-03-10 13:28:24,136 - INFO - STOP LOSS hit for long at 2052.014017857143 | PnL: -0.50% | $-1.14 +2025-03-10 13:28:24,162 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.2382178571427 | Take profit: 2080.2639232142856 +2025-03-10 13:28:24,877 - INFO - CLOSED long at 2069.34 | PnL: 0.97% | $1.63 +2025-03-10 13:28:24,903 - INFO - OPENED LONG at 2069.81 | Stop loss: 2059.446667857143 | Take profit: 2100.8785732142856 +2025-03-10 13:28:25,191 - INFO - TAKE PROFIT hit for long at 2100.8785732142856 | PnL: 1.50% | $2.67 +2025-03-10 13:28:25,244 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.8280178571426 | Take profit: 2171.6545232142857 +2025-03-10 13:28:25,339 - INFO - CLOSED long at 2141.41 | PnL: 0.09% | $-0.02 +2025-03-10 13:28:25,526 - INFO - OPENED LONG at 2121.09 | Stop loss: 2110.470267857143 | Take profit: 2152.927773214286 +2025-03-10 13:28:25,642 - INFO - CLOSED long at 2118.52 | PnL: -0.12% | $-0.43 +2025-03-10 13:28:25,643 - INFO - OPENED SHORT at 2118.52 | Stop loss: 2129.126882142857 | Take profit: 2086.7207767857144 +2025-03-10 13:28:25,666 - INFO - CLOSED short at 2119.14 | PnL: -0.03% | $-0.25 +2025-03-10 13:28:25,666 - INFO - OPENED LONG at 2119.14 | Stop loss: 2108.530017857143 | Take profit: 2150.9485232142856 +2025-03-10 13:28:25,737 - INFO - STOP LOSS hit for long at 2108.530017857143 | PnL: -0.50% | $-1.17 +2025-03-10 13:28:25,761 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032717857143 | Take profit: 2142.2804232142853 +2025-03-10 13:28:25,949 - INFO - CLOSED long at 2116.48 | PnL: 0.28% | $0.34 +2025-03-10 13:28:25,997 - INFO - OPENED LONG at 2110.9 | Stop loss: 2100.331217857143 | Take profit: 2142.584923214286 +2025-03-10 13:28:26,145 - INFO - STOP LOSS hit for long at 2100.331217857143 | PnL: -0.50% | $-1.16 +2025-03-10 13:28:26,169 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0180678571433 | Take profit: 2131.044373214286 +2025-03-10 13:28:26,530 - INFO - CLOSED long at 2098.39 | PnL: -0.05% | $-0.29 +2025-03-10 13:28:26,601 - INFO - OPENED LONG at 2093.33 | Stop loss: 2082.849067857143 | Take profit: 2124.7513732142856 +2025-03-10 13:28:26,838 - INFO - STOP LOSS hit for long at 2082.849067857143 | PnL: -0.50% | $-1.14 +2025-03-10 13:28:26,866 - INFO - OPENED LONG at 2081.49 | Stop loss: 2071.068267857143 | Take profit: 2112.7337732142855 +2025-03-10 13:28:26,889 - INFO - CLOSED long at 2080.38 | PnL: -0.05% | $-0.29 +2025-03-10 13:28:26,916 - INFO - OPENED LONG at 2081.25 | Stop loss: 2070.829467857143 | Take profit: 2112.4901732142857 +2025-03-10 13:28:28,185 - INFO - Trade Analysis: Win Rate=13.3% in uptrends, 0.0% in downtrends | Avg Win=$0.76, Avg Loss=$-0.45 +2025-03-10 13:28:28,186 - INFO - Episode 10: Reward=-39.34, Balance=$94.25, Win Rate=24.3%, Trades=37, Episode PnL=$-2.95, Total PnL=$-86.19, Max Drawdown=6.4%, Pred Accuracy=98.0% +2025-03-10 13:28:28,322 - INFO - Model saved to checkpoints/trading_agent_episode_10.pt +2025-03-10 13:28:28,323 - INFO - Checkpoint saved at episode 10 +2025-03-10 13:28:28,423 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 13:28:28,424 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2402, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 13:28:28,720 - INFO - OPENED LONG at 2051.11 | Stop loss: 2040.840167857143 | Take profit: 2081.898073214286 +2025-03-10 13:28:29,375 - INFO - CLOSED long at 2057.8 | PnL: 0.33% | $0.45 +2025-03-10 13:28:29,403 - INFO - OPENED LONG at 2057.89 | Stop loss: 2047.5862678571427 | Take profit: 2088.779773214286 +2025-03-10 13:28:30,012 - INFO - CLOSED long at 2067.9 | PnL: 0.49% | $0.77 +2025-03-10 13:28:30,013 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.2537821428573 | Take profit: 2036.8600767857145 +2025-03-10 13:28:30,153 - INFO - CLOSED short at 2072.91 | PnL: -0.24% | $-0.69 +2025-03-10 13:28:30,153 - INFO - OPENED LONG at 2072.91 | Stop loss: 2062.531167857143 | Take profit: 2104.0250732142854 +2025-03-10 13:28:31,127 - INFO - CLOSED long at 2071.39 | PnL: -0.07% | $-0.35 +2025-03-10 13:28:31,174 - INFO - OPENED LONG at 2072.75 | Stop loss: 2062.371967857143 | Take profit: 2103.8626732142857 +2025-03-10 13:28:31,294 - INFO - CLOSED long at 2073.9 | PnL: 0.06% | $-0.09 +2025-03-10 13:28:31,350 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7662821428576 | Take profit: 2039.3225767857145 +2025-03-10 13:28:31,378 - INFO - CLOSED short at 2071.11 | PnL: -0.03% | $-0.27 +2025-03-10 13:28:31,378 - INFO - OPENED LONG at 2071.11 | Stop loss: 2060.740167857143 | Take profit: 2102.1980732142856 +2025-03-10 13:28:31,689 - INFO - CLOSED long at 2069.34 | PnL: -0.09% | $-0.37 +2025-03-10 13:28:31,689 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.7009821428574 | Take profit: 2038.2784767857145 +2025-03-10 13:28:31,711 - INFO - CLOSED short at 2067.86 | PnL: 0.07% | $-0.06 +2025-03-10 13:28:31,711 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.506417857143 | Take profit: 2098.899323214286 +2025-03-10 13:28:32,042 - INFO - CLOSED long at 2066.1 | PnL: -0.09% | $-0.37 +2025-03-10 13:28:32,043 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.444782142857 | Take profit: 2035.0870767857143 +2025-03-10 13:28:32,070 - INFO - CLOSED short at 2065.28 | PnL: 0.04% | $-0.12 +2025-03-10 13:28:32,070 - INFO - OPENED LONG at 2065.28 | Stop loss: 2054.939317857143 | Take profit: 2096.2806232142857 +2025-03-10 13:28:33,156 - INFO - CLOSED long at 2064.79 | PnL: -0.02% | $-0.24 +2025-03-10 13:28:33,178 - INFO - OPENED LONG at 2065.89 | Stop loss: 2055.5462678571425 | Take profit: 2096.8997732142852 +2025-03-10 13:28:33,477 - INFO - CLOSED long at 2059.46 | PnL: -0.31% | $-0.81 +2025-03-10 13:28:33,477 - INFO - OPENED SHORT at 2059.46 | Stop loss: 2069.771582142857 | Take profit: 2028.5466767857142 +2025-03-10 13:28:33,499 - INFO - CLOSED short at 2057.4 | PnL: 0.10% | $0.00 +2025-03-10 13:28:33,500 - INFO - OPENED LONG at 2057.4 | Stop loss: 2047.098717857143 | Take profit: 2088.282423214286 +2025-03-10 13:28:33,632 - INFO - CLOSED long at 2056.71 | PnL: -0.03% | $-0.26 +2025-03-10 13:28:33,632 - INFO - OPENED SHORT at 2056.71 | Stop loss: 2067.0078321428573 | Take profit: 2025.8379267857144 +2025-03-10 13:28:33,656 - INFO - CLOSED short at 2058.15 | PnL: -0.07% | $-0.33 +2025-03-10 13:28:33,657 - INFO - OPENED LONG at 2058.15 | Stop loss: 2047.844967857143 | Take profit: 2089.0436732142857 +2025-03-10 13:28:33,864 - INFO - CLOSED long at 2066.01 | PnL: 0.38% | $0.54 +2025-03-10 13:28:33,886 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.566217857143 | Take profit: 2094.8799232142856 +2025-03-10 13:28:34,029 - INFO - CLOSED long at 2067.01 | PnL: 0.15% | $0.10 +2025-03-10 13:28:34,053 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.347267857143 | Take profit: 2096.6967732142857 +2025-03-10 13:28:34,647 - INFO - CLOSED long at 2069.87 | PnL: 0.20% | $0.20 +2025-03-10 13:28:34,647 - INFO - OPENED SHORT at 2069.87 | Stop loss: 2080.233632142857 | Take profit: 2038.800526785714 +2025-03-10 13:28:34,705 - INFO - CLOSED short at 2067.33 | PnL: 0.12% | $0.04 +2025-03-10 13:28:34,705 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.9790678571426 | Take profit: 2098.3613732142853 +2025-03-10 13:28:35,390 - INFO - CLOSED long at 2070.7 | PnL: 0.16% | $0.12 +2025-03-10 13:28:35,390 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.0677821428567 | Take profit: 2039.618076785714 +2025-03-10 13:28:35,481 - INFO - CLOSED short at 2070.35 | PnL: 0.02% | $-0.16 +2025-03-10 13:28:35,481 - INFO - OPENED LONG at 2070.35 | Stop loss: 2059.983967857143 | Take profit: 2101.4266732142855 +2025-03-10 13:28:35,975 - INFO - CLOSED long at 2074.0 | PnL: 0.18% | $0.15 +2025-03-10 13:28:36,000 - INFO - OPENED LONG at 2072.09 | Stop loss: 2061.715267857143 | Take profit: 2103.1927732142863 +2025-03-10 13:28:36,121 - INFO - CLOSED long at 2066.4 | PnL: -0.27% | $-0.73 +2025-03-10 13:28:36,145 - INFO - OPENED LONG at 2066.89 | Stop loss: 2056.541267857143 | Take profit: 2097.9147732142856 +2025-03-10 13:28:36,373 - INFO - CLOSED long at 2065.8 | PnL: -0.05% | $-0.30 +2025-03-10 13:28:36,398 - INFO - OPENED LONG at 2065.07 | Stop loss: 2054.730367857143 | Take profit: 2096.067473214286 +2025-03-10 13:28:36,469 - INFO - CLOSED long at 2062.34 | PnL: -0.13% | $-0.45 +2025-03-10 13:28:36,470 - INFO - OPENED SHORT at 2062.34 | Stop loss: 2072.6659821428575 | Take profit: 2031.3834767857145 +2025-03-10 13:28:36,499 - INFO - CLOSED short at 2063.98 | PnL: -0.08% | $-0.35 +2025-03-10 13:28:36,500 - INFO - OPENED LONG at 2063.98 | Stop loss: 2053.645817857143 | Take profit: 2094.9611232142856 +2025-03-10 13:28:36,522 - INFO - CLOSED long at 2066.1 | PnL: 0.10% | $0.01 +2025-03-10 13:28:36,522 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.444782142857 | Take profit: 2035.0870767857143 +2025-03-10 13:28:36,546 - INFO - CLOSED short at 2065.06 | PnL: 0.05% | $-0.10 +2025-03-10 13:28:36,547 - INFO - OPENED LONG at 2065.06 | Stop loss: 2054.720417857143 | Take profit: 2096.0573232142856 +2025-03-10 13:28:36,707 - INFO - CLOSED long at 2059.2 | PnL: -0.28% | $-0.73 +2025-03-10 13:28:36,709 - INFO - OPENED SHORT at 2059.2 | Stop loss: 2069.5102821428572 | Take profit: 2028.290576785714 +2025-03-10 13:28:36,735 - INFO - CLOSED short at 2058.09 | PnL: 0.05% | $-0.09 +2025-03-10 13:28:36,736 - INFO - OPENED LONG at 2058.09 | Stop loss: 2047.785267857143 | Take profit: 2088.9827732142858 +2025-03-10 13:28:36,805 - INFO - CLOSED long at 2053.01 | PnL: -0.25% | $-0.66 +2025-03-10 13:28:36,805 - INFO - OPENED SHORT at 2053.01 | Stop loss: 2063.2893321428573 | Take profit: 2022.1934267857146 +2025-03-10 13:28:36,836 - INFO - CLOSED short at 2049.21 | PnL: 0.19% | $0.16 +2025-03-10 13:28:36,836 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.949667857143 | Take profit: 2079.969573214286 +2025-03-10 13:28:37,708 - INFO - TAKE PROFIT hit for long at 2079.969573214286 | PnL: 1.50% | $2.64 +2025-03-10 13:28:37,733 - INFO - OPENED LONG at 2090.49 | Stop loss: 2080.023267857143 | Take profit: 2121.8687732142853 +2025-03-10 13:28:37,784 - INFO - CLOSED long at 2130.7 | PnL: 1.92% | $3.54 +2025-03-10 13:28:37,877 - INFO - OPENED LONG at 2137.59 | Stop loss: 2126.887767857143 | Take profit: 2169.675273214286 +2025-03-10 13:28:38,058 - INFO - CLOSED long at 2128.69 | PnL: -0.42% | $-1.04 +2025-03-10 13:28:38,102 - INFO - OPENED SHORT at 2120.15 | Stop loss: 2130.7650321428573 | Take profit: 2088.326326785714 +2025-03-10 13:28:38,128 - INFO - CLOSED short at 2117.24 | PnL: 0.14% | $0.07 +2025-03-10 13:28:38,128 - INFO - OPENED LONG at 2117.24 | Stop loss: 2106.6395178571424 | Take profit: 2149.0200232142856 +2025-03-10 13:28:38,179 - INFO - CLOSED long at 2121.4 | PnL: 0.20% | $0.19 +2025-03-10 13:28:38,228 - INFO - OPENED LONG at 2119.14 | Stop loss: 2108.530017857143 | Take profit: 2150.9485232142856 +2025-03-10 13:28:38,299 - INFO - STOP LOSS hit for long at 2108.530017857143 | PnL: -0.50% | $-1.20 +2025-03-10 13:28:38,327 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032717857143 | Take profit: 2142.2804232142853 +2025-03-10 13:28:38,724 - INFO - STOP LOSS hit for long at 2100.032717857143 | PnL: -0.50% | $-1.18 +2025-03-10 13:28:38,815 - INFO - OPENED LONG at 2102.19 | Stop loss: 2091.664767857143 | Take profit: 2133.744273214286 +2025-03-10 13:28:39,096 - INFO - CLOSED long at 2099.59 | PnL: -0.12% | $-0.44 +2025-03-10 13:28:39,131 - INFO - OPENED LONG at 2100.02 | Stop loss: 2089.505617857143 | Take profit: 2131.5417232142854 +2025-03-10 13:28:39,294 - INFO - CLOSED long at 2091.1 | PnL: -0.42% | $-1.02 +2025-03-10 13:28:39,295 - INFO - OPENED SHORT at 2091.1 | Stop loss: 2101.569782142857 | Take profit: 2059.712076785714 +2025-03-10 13:28:39,326 - INFO - CLOSED short at 2094.72 | PnL: -0.17% | $-0.52 +2025-03-10 13:28:39,326 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.2321178571424 | Take profit: 2126.1622232142854 +2025-03-10 13:28:39,403 - INFO - STOP LOSS hit for long at 2084.2321178571424 | PnL: -0.50% | $-1.15 +2025-03-10 13:28:39,429 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.983517857143 | Take profit: 2119.7880232142857 +2025-03-10 13:28:39,627 - INFO - CLOSED long at 2081.25 | PnL: -0.34% | $-0.84 +2025-03-10 13:28:39,627 - INFO - OPENED SHORT at 2081.25 | Stop loss: 2091.670532142857 | Take profit: 2050.0098267857143 +2025-03-10 13:28:39,692 - INFO - CLOSED short at 2083.41 | PnL: -0.10% | $-0.38 +2025-03-10 13:28:39,693 - INFO - OPENED LONG at 2083.41 | Stop loss: 2072.9786678571427 | Take profit: 2114.6825732142856 +2025-03-10 13:28:39,804 - INFO - CLOSED long at 2083.59 | PnL: 0.01% | $-0.17 +2025-03-10 13:28:39,838 - INFO - OPENED LONG at 2086.57 | Stop loss: 2076.1228678571433 | Take profit: 2117.889973214286 +2025-03-10 13:28:40,695 - INFO - CLOSED long at 2097.11 | PnL: 0.51% | $0.75 +2025-03-10 13:28:40,724 - INFO - OPENED LONG at 2098.49 | Stop loss: 2087.9832678571424 | Take profit: 2129.9887732142856 +2025-03-10 13:28:41,695 - INFO - Trade Analysis: Win Rate=26.3% in uptrends, 0.0% in downtrends | Avg Win=$0.61, Avg Loss=$-0.50 +2025-03-10 13:28:41,696 - INFO - Episode 11: Reward=56.91, Balance=$94.32, Win Rate=34.0%, Trades=47, Episode PnL=$-1.29, Total PnL=$-91.87, Max Drawdown=7.6%, Pred Accuracy=98.3% +2025-03-10 13:28:41,870 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 13:28:41,871 - INFO - New best PnL model saved: $-1.29 +2025-03-10 13:28:42,424 - INFO - OPENED LONG at 2049.89 | Stop loss: 2039.6262678571427 | Take profit: 2080.659773214286 +2025-03-10 13:28:42,605 - INFO - CLOSED long at 2057.01 | PnL: 0.35% | $0.49 +2025-03-10 13:28:42,605 - INFO - OPENED SHORT at 2057.01 | Stop loss: 2067.3093321428573 | Take profit: 2026.1334267857144 +2025-03-10 13:28:42,651 - INFO - CLOSED short at 2056.89 | PnL: 0.01% | $-0.19 +2025-03-10 13:28:42,651 - INFO - OPENED LONG at 2056.89 | Stop loss: 2046.5912678571426 | Take profit: 2087.764773214286 +2025-03-10 13:28:43,233 - INFO - CLOSED long at 2060.31 | PnL: 0.17% | $0.13 +2025-03-10 13:28:43,233 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.625832142857 | Take profit: 2029.3839267857143 +2025-03-10 13:28:43,262 - INFO - CLOSED short at 2059.49 | PnL: 0.04% | $-0.12 +2025-03-10 13:28:43,262 - INFO - OPENED LONG at 2059.49 | Stop loss: 2049.1782678571426 | Take profit: 2090.4037732142856 +2025-03-10 13:28:43,891 - INFO - CLOSED long at 2067.9 | PnL: 0.41% | $0.61 +2025-03-10 13:28:43,891 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.2537821428573 | Take profit: 2036.8600767857145 +2025-03-10 13:28:43,917 - INFO - CLOSED short at 2067.69 | PnL: 0.01% | $-0.18 +2025-03-10 13:28:43,917 - INFO - OPENED LONG at 2067.69 | Stop loss: 2057.337267857143 | Take profit: 2098.726773214286 +2025-03-10 13:28:44,998 - INFO - CLOSED long at 2072.75 | PnL: 0.24% | $0.29 +2025-03-10 13:28:44,999 - INFO - OPENED SHORT at 2072.75 | Stop loss: 2083.128032142857 | Take profit: 2041.6373267857143 +2025-03-10 13:28:45,031 - INFO - CLOSED short at 2073.11 | PnL: -0.02% | $-0.24 +2025-03-10 13:28:45,031 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.730167857143 | Take profit: 2104.228073214286 +2025-03-10 13:28:45,160 - INFO - CLOSED long at 2071.92 | PnL: -0.06% | $-0.32 +2025-03-10 13:28:45,160 - INFO - OPENED SHORT at 2071.92 | Stop loss: 2082.2938821428575 | Take profit: 2040.8197767857143 +2025-03-10 13:28:45,247 - INFO - CLOSED short at 2069.46 | PnL: 0.12% | $0.04 +2025-03-10 13:28:45,247 - INFO - OPENED LONG at 2069.46 | Stop loss: 2059.098417857143 | Take profit: 2100.523323214286 +2025-03-10 13:28:45,627 - INFO - CLOSED long at 2069.34 | PnL: -0.01% | $-0.21 +2025-03-10 13:28:45,768 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.217767857143 | Take profit: 2102.6852732142856 +2025-03-10 13:28:46,111 - INFO - CLOSED long at 2064.47 | PnL: -0.34% | $-0.88 +2025-03-10 13:28:46,112 - INFO - OPENED SHORT at 2064.47 | Stop loss: 2074.806632142857 | Take profit: 2033.481526785714 +2025-03-10 13:28:46,139 - INFO - CLOSED short at 2070.04 | PnL: -0.27% | $-0.73 +2025-03-10 13:28:46,140 - INFO - OPENED LONG at 2070.04 | Stop loss: 2059.675517857143 | Take profit: 2101.1120232142853 +2025-03-10 13:28:46,451 - INFO - STOP LOSS hit for long at 2059.675517857143 | PnL: -0.50% | $-1.18 +2025-03-10 13:28:46,492 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.979217857143 | Take profit: 2092.240923214286 +2025-03-10 13:28:46,807 - INFO - CLOSED long at 2063.5 | PnL: 0.11% | $0.01 +2025-03-10 13:28:46,862 - INFO - OPENED LONG at 2060.9 | Stop loss: 2050.5812178571427 | Take profit: 2091.834923214286 +2025-03-10 13:28:47,994 - INFO - CLOSED long at 2054.83 | PnL: -0.29% | $-0.76 +2025-03-10 13:28:48,057 - INFO - OPENED LONG at 2056.71 | Stop loss: 2046.412167857143 | Take profit: 2087.5820732142856 +2025-03-10 13:28:48,366 - INFO - CLOSED long at 2066.36 | PnL: 0.47% | $0.71 +2025-03-10 13:28:48,400 - INFO - OPENED LONG at 2066.01 | Stop loss: 2055.665667857143 | Take profit: 2097.021573214286 +2025-03-10 13:28:48,956 - INFO - CLOSED long at 2075.01 | PnL: 0.44% | $0.65 +2025-03-10 13:28:48,957 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.399332142857 | Take profit: 2043.8634267857146 +2025-03-10 13:28:49,012 - INFO - CLOSED short at 2072.6 | PnL: 0.12% | $0.03 +2025-03-10 13:28:49,012 - INFO - OPENED LONG at 2072.6 | Stop loss: 2062.222717857143 | Take profit: 2103.710423214286 +2025-03-10 13:28:50,263 - INFO - CLOSED long at 2069.78 | PnL: -0.14% | $-0.46 +2025-03-10 13:28:50,293 - INFO - OPENED LONG at 2071.61 | Stop loss: 2061.2376678571427 | Take profit: 2102.705573214286 +2025-03-10 13:28:50,376 - INFO - CLOSED long at 2074.35 | PnL: 0.13% | $0.06 +2025-03-10 13:28:50,377 - INFO - OPENED SHORT at 2074.35 | Stop loss: 2084.736032142857 | Take profit: 2043.2133267857143 +2025-03-10 13:28:50,439 - INFO - CLOSED short at 2073.99 | PnL: 0.02% | $-0.16 +2025-03-10 13:28:50,440 - INFO - OPENED LONG at 2073.99 | Stop loss: 2063.605767857143 | Take profit: 2105.121273214286 +2025-03-10 13:28:50,824 - INFO - CLOSED long at 2067.88 | PnL: -0.29% | $-0.77 +2025-03-10 13:28:50,883 - INFO - OPENED LONG at 2068.1 | Stop loss: 2057.745217857143 | Take profit: 2099.1429232142855 +2025-03-10 13:28:51,169 - INFO - CLOSED long at 2063.39 | PnL: -0.23% | $-0.63 +2025-03-10 13:28:51,240 - INFO - OPENED LONG at 2063.98 | Stop loss: 2053.645817857143 | Take profit: 2094.9611232142856 +2025-03-10 13:28:51,268 - INFO - CLOSED long at 2066.1 | PnL: 0.10% | $0.01 +2025-03-10 13:28:51,297 - INFO - OPENED LONG at 2065.06 | Stop loss: 2054.720417857143 | Take profit: 2096.0573232142856 +2025-03-10 13:28:51,466 - INFO - CLOSED long at 2060.2 | PnL: -0.24% | $-0.64 +2025-03-10 13:28:51,564 - INFO - OPENED SHORT at 2056.77 | Stop loss: 2067.068132142857 | Take profit: 2025.8970267857144 +2025-03-10 13:28:51,593 - INFO - CLOSED short at 2053.01 | PnL: 0.18% | $0.16 +2025-03-10 13:28:51,620 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.949667857143 | Take profit: 2079.969573214286 +2025-03-10 13:28:51,715 - INFO - CLOSED long at 2056.85 | PnL: 0.37% | $0.52 +2025-03-10 13:28:51,739 - INFO - OPENED LONG at 2057.11 | Stop loss: 2046.8101678571431 | Take profit: 2087.9880732142856 +2025-03-10 13:28:51,768 - INFO - CLOSED long at 2057.89 | PnL: 0.04% | $-0.12 +2025-03-10 13:28:51,846 - INFO - OPENED LONG at 2065.1 | Stop loss: 2054.760217857143 | Take profit: 2096.0979232142854 +2025-03-10 13:28:51,872 - INFO - CLOSED long at 2062.43 | PnL: -0.13% | $-0.44 +2025-03-10 13:28:51,958 - INFO - OPENED LONG at 2068.33 | Stop loss: 2057.974067857143 | Take profit: 2099.3763732142856 +2025-03-10 13:28:52,017 - INFO - CLOSED long at 2066.59 | PnL: -0.08% | $-0.35 +2025-03-10 13:28:52,048 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.7453178571427 | Take profit: 2095.0626232142854 +2025-03-10 13:28:52,293 - INFO - CLOSED long at 2069.34 | PnL: 0.25% | $0.29 +2025-03-10 13:28:52,321 - INFO - OPENED LONG at 2069.81 | Stop loss: 2059.446667857143 | Take profit: 2100.8785732142856 +2025-03-10 13:28:52,685 - INFO - TAKE PROFIT hit for long at 2100.8785732142856 | PnL: 1.50% | $2.66 +2025-03-10 13:28:52,826 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.106817857143 | Take profit: 2163.7781232142856 +2025-03-10 13:28:52,964 - INFO - CLOSED long at 2142.68 | PnL: 0.51% | $0.80 +2025-03-10 13:28:52,965 - INFO - OPENED SHORT at 2142.68 | Stop loss: 2153.4076821428566 | Take profit: 2110.5183767857143 +2025-03-10 13:28:53,076 - INFO - CLOSED short at 2134.78 | PnL: 0.37% | $0.53 +2025-03-10 13:28:53,076 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.0918178571433 | Take profit: 2166.8231232142857 +2025-03-10 13:28:53,268 - INFO - CLOSED long at 2121.09 | PnL: -0.64% | $-1.47 +2025-03-10 13:28:53,295 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.534967857143 | Take profit: 2151.9736732142856 +2025-03-10 13:28:53,614 - INFO - STOP LOSS hit for long at 2109.534967857143 | PnL: -0.50% | $-1.17 +2025-03-10 13:28:53,642 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032717857143 | Take profit: 2142.2804232142853 +2025-03-10 13:28:54,188 - INFO - STOP LOSS hit for long at 2100.032717857143 | PnL: -0.50% | $-1.16 +2025-03-10 13:28:54,353 - INFO - OPENED LONG at 2102.19 | Stop loss: 2091.664767857143 | Take profit: 2133.744273214286 +2025-03-10 13:28:54,555 - INFO - CLOSED long at 2100.74 | PnL: -0.07% | $-0.32 +2025-03-10 13:28:54,555 - INFO - OPENED SHORT at 2100.74 | Stop loss: 2111.2579821428567 | Take profit: 2069.207476785714 +2025-03-10 13:28:54,645 - INFO - CLOSED short at 2104.68 | PnL: -0.19% | $-0.55 +2025-03-10 13:28:54,646 - INFO - OPENED LONG at 2104.68 | Stop loss: 2094.1423178571426 | Take profit: 2136.2716232142857 +2025-03-10 13:28:54,831 - INFO - STOP LOSS hit for long at 2094.1423178571426 | PnL: -0.50% | $-1.13 +2025-03-10 13:28:54,886 - INFO - OPENED LONG at 2092.46 | Stop loss: 2081.9834178571427 | Take profit: 2123.8683232142857 +2025-03-10 13:28:55,065 - INFO - CLOSED long at 2083.97 | PnL: -0.41% | $-0.94 +2025-03-10 13:28:55,065 - INFO - OPENED SHORT at 2083.97 | Stop loss: 2094.4041321428567 | Take profit: 2052.689026785714 +2025-03-10 13:28:55,100 - INFO - CLOSED short at 2085.3 | PnL: -0.06% | $-0.30 +2025-03-10 13:28:55,100 - INFO - OPENED LONG at 2085.3 | Stop loss: 2074.859217857143 | Take profit: 2116.600923214286 +2025-03-10 13:28:56,449 - INFO - CLOSED long at 2100.0 | PnL: 0.70% | $1.11 +2025-03-10 13:28:56,450 - INFO - OPENED SHORT at 2100.0 | Stop loss: 2110.514282142857 | Take profit: 2068.4785767857143 +2025-03-10 13:28:56,477 - INFO - CLOSED short at 2102.7 | PnL: -0.13% | $-0.43 +2025-03-10 13:28:56,477 - INFO - OPENED LONG at 2102.7 | Stop loss: 2092.1722178571426 | Take profit: 2134.261923214285 +2025-03-10 13:28:56,531 - INFO - CLOSED long at 2103.41 | PnL: 0.03% | $-0.12 +2025-03-10 13:28:56,532 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9413321428574 | Take profit: 2071.8374267857143 +2025-03-10 13:28:56,567 - INFO - CLOSED short at 2104.73 | PnL: -0.06% | $-0.30 +2025-03-10 13:28:56,568 - INFO - OPENED LONG at 2104.73 | Stop loss: 2094.192067857143 | Take profit: 2136.322373214286 +2025-03-10 13:28:56,714 - INFO - Trade Analysis: Win Rate=22.2% in uptrends, 0.0% in downtrends | Avg Win=$0.51, Avg Loss=$-0.56 +2025-03-10 13:28:56,715 - INFO - Episode 12: Reward=60.54, Balance=$92.85, Win Rate=38.3%, Trades=47, Episode PnL=$-8.72, Total PnL=$-99.02, Max Drawdown=6.5%, Pred Accuracy=98.7% +2025-03-10 13:28:56,936 - INFO - OPENED LONG at 2049.89 | Stop loss: 2039.6262678571427 | Take profit: 2080.659773214286 +2025-03-10 13:28:57,407 - INFO - CLOSED long at 2063.01 | PnL: 0.64% | $1.07 +2025-03-10 13:28:57,431 - INFO - OPENED LONG at 2060.99 | Stop loss: 2050.6707678571424 | Take profit: 2091.9262732142856 +2025-03-10 13:28:57,849 - INFO - CLOSED long at 2068.11 | PnL: 0.35% | $0.49 +2025-03-10 13:28:57,850 - INFO - OPENED SHORT at 2068.11 | Stop loss: 2078.464832142857 | Take profit: 2037.0669267857145 +2025-03-10 13:28:57,900 - INFO - CLOSED short at 2067.89 | PnL: 0.01% | $-0.18 +2025-03-10 13:28:57,901 - INFO - OPENED LONG at 2067.89 | Stop loss: 2057.536267857143 | Take profit: 2098.9297732142854 +2025-03-10 13:29:00,480 - INFO - CLOSED long at 2069.2 | PnL: 0.06% | $-0.07 +2025-03-10 13:29:00,541 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.217767857143 | Take profit: 2102.6852732142856 +2025-03-10 13:29:01,193 - INFO - CLOSED long at 2062.65 | PnL: -0.43% | $-1.07 +2025-03-10 13:29:01,229 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.456817857143 | Take profit: 2092.728123214286 +2025-03-10 13:29:03,486 - INFO - CLOSED long at 2070.0 | PnL: 0.40% | $0.59 +2025-03-10 13:29:03,525 - INFO - OPENED LONG at 2068.15 | Stop loss: 2057.794967857143 | Take profit: 2099.193673214286 +2025-03-10 13:29:03,839 - INFO - CLOSED long at 2072.99 | PnL: 0.23% | $0.27 +2025-03-10 13:29:03,839 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.369232142857 | Take profit: 2041.873726785714 +2025-03-10 13:29:03,868 - INFO - CLOSED short at 2071.49 | PnL: 0.07% | $-0.06 +2025-03-10 13:29:03,869 - INFO - OPENED LONG at 2071.49 | Stop loss: 2061.1182678571427 | Take profit: 2102.5837732142854 +2025-03-10 13:29:04,145 - INFO - CLOSED long at 2063.95 | PnL: -0.36% | $-0.93 +2025-03-10 13:29:04,146 - INFO - OPENED SHORT at 2063.95 | Stop loss: 2074.284032142857 | Take profit: 2032.9693267857142 +2025-03-10 13:29:04,201 - INFO - CLOSED short at 2063.97 | PnL: -0.00% | $-0.20 +2025-03-10 13:29:04,201 - INFO - OPENED LONG at 2063.97 | Stop loss: 2053.635867857143 | Take profit: 2094.9509732142856 +2025-03-10 13:29:04,931 - INFO - CLOSED long at 2070.35 | PnL: 0.31% | $0.42 +2025-03-10 13:29:05,034 - INFO - OPENED LONG at 2068.19 | Stop loss: 2057.834767857143 | Take profit: 2099.2342732142856 +2025-03-10 13:29:05,139 - INFO - CLOSED long at 2071.61 | PnL: 0.17% | $0.13 +2025-03-10 13:29:05,254 - INFO - OPENED LONG at 2074.35 | Stop loss: 2063.9639678571425 | Take profit: 2105.4866732142855 +2025-03-10 13:29:05,849 - INFO - CLOSED long at 2067.88 | PnL: -0.31% | $-0.82 +2025-03-10 13:29:05,953 - INFO - OPENED LONG at 2070.19 | Stop loss: 2059.824767857143 | Take profit: 2101.264273214286 +2025-03-10 13:29:06,359 - INFO - CLOSED long at 2063.98 | PnL: -0.30% | $-0.79 +2025-03-10 13:29:06,386 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.7552178571427 | Take profit: 2097.1129232142857 +2025-03-10 13:29:06,875 - INFO - CLOSED long at 2053.01 | PnL: -0.63% | $-1.44 +2025-03-10 13:29:06,973 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.949667857143 | Take profit: 2079.969573214286 +2025-03-10 13:29:08,268 - INFO - TAKE PROFIT hit for long at 2079.969573214286 | PnL: 1.50% | $2.71 +2025-03-10 13:29:08,294 - INFO - OPENED LONG at 2090.49 | Stop loss: 2080.023267857143 | Take profit: 2121.8687732142853 +2025-03-10 13:29:08,348 - INFO - TAKE PROFIT hit for long at 2121.8687732142853 | PnL: 1.50% | $2.79 +2025-03-10 13:29:08,373 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.8280178571426 | Take profit: 2171.6545232142857 +2025-03-10 13:29:08,733 - INFO - STOP LOSS hit for long at 2128.8280178571426 | PnL: -0.50% | $-1.23 +2025-03-10 13:29:08,788 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.032267857143 | Take profit: 2160.6417732142854 +2025-03-10 13:29:08,992 - INFO - STOP LOSS hit for long at 2118.032267857143 | PnL: -0.50% | $-1.21 +2025-03-10 13:29:09,019 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3160678571426 | Take profit: 2151.750373214286 +2025-03-10 13:29:09,219 - INFO - STOP LOSS hit for long at 2109.3160678571426 | PnL: -0.50% | $-1.20 +2025-03-10 13:29:09,330 - INFO - OPENED LONG at 2112.95 | Stop loss: 2102.3709678571427 | Take profit: 2144.6656732142856 +2025-03-10 13:29:09,628 - INFO - CLOSED long at 2108.06 | PnL: -0.23% | $-0.65 +2025-03-10 13:29:09,629 - INFO - OPENED SHORT at 2108.06 | Stop loss: 2118.6145821428568 | Take profit: 2076.4176767857143 +2025-03-10 13:29:09,656 - INFO - CLOSED short at 2103.33 | PnL: 0.22% | $0.24 +2025-03-10 13:29:09,656 - INFO - OPENED LONG at 2103.33 | Stop loss: 2092.7990678571427 | Take profit: 2134.9013732142853 +2025-03-10 13:29:09,707 - INFO - CLOSED long at 2090.0 | PnL: -0.63% | $-1.44 +2025-03-10 13:29:09,794 - INFO - OPENED LONG at 2102.19 | Stop loss: 2091.664767857143 | Take profit: 2133.744273214286 +2025-03-10 13:29:10,329 - INFO - STOP LOSS hit for long at 2091.664767857143 | PnL: -0.50% | $-1.16 +2025-03-10 13:29:10,383 - INFO - OPENED LONG at 2094.08 | Stop loss: 2083.5953178571426 | Take profit: 2125.5126232142857 +2025-03-10 13:29:10,432 - INFO - STOP LOSS hit for long at 2083.5953178571426 | PnL: -0.50% | $-1.15 +2025-03-10 13:29:10,465 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.983517857143 | Take profit: 2119.7880232142857 +2025-03-10 13:29:10,595 - INFO - CLOSED long at 2080.38 | PnL: -0.39% | $-0.92 +2025-03-10 13:29:10,626 - INFO - OPENED LONG at 2081.25 | Stop loss: 2070.829467857143 | Take profit: 2112.4901732142857 +2025-03-10 13:29:11,849 - INFO - CLOSED long at 2103.9 | PnL: 1.09% | $1.85 +2025-03-10 13:29:11,849 - INFO - OPENED SHORT at 2103.9 | Stop loss: 2114.4337821428576 | Take profit: 2072.3200767857143 +2025-03-10 13:29:12,124 - INFO - Trade Analysis: Win Rate=27.3% in uptrends, 0.0% in downtrends | Avg Win=$1.06, Avg Loss=$-0.85 +2025-03-10 13:29:12,125 - INFO - Episode 13: Reward=70.40, Balance=$96.03, Win Rate=37.0%, Trades=27, Episode PnL=$-4.99, Total PnL=$-102.98, Max Drawdown=8.5%, Pred Accuracy=98.8% +2025-03-10 13:29:12,342 - INFO - OPENED LONG at 2049.89 | Stop loss: 2039.6262678571427 | Take profit: 2080.659773214286 +2025-03-10 13:29:12,842 - INFO - CLOSED long at 2063.59 | PnL: 0.67% | $1.13 +2025-03-10 13:29:12,842 - INFO - OPENED SHORT at 2063.59 | Stop loss: 2073.9222321428574 | Take profit: 2032.6147267857143 +2025-03-10 13:29:13,185 - INFO - CLOSED short at 2062.89 | PnL: 0.03% | $-0.13 +2025-03-10 13:29:13,186 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.561267857143 | Take profit: 2093.8547732142856 +2025-03-10 13:29:14,523 - INFO - CLOSED long at 2067.51 | PnL: 0.22% | $0.25 +2025-03-10 13:29:14,552 - INFO - OPENED LONG at 2069.01 | Stop loss: 2058.650667857143 | Take profit: 2100.0665732142857 +2025-03-10 13:29:14,932 - INFO - CLOSED long at 2071.4 | PnL: 0.12% | $0.03 +2025-03-10 13:29:14,933 - INFO - OPENED SHORT at 2071.4 | Stop loss: 2081.771282142857 | Take profit: 2040.3075767857144 +2025-03-10 13:29:14,960 - INFO - CLOSED short at 2071.39 | PnL: 0.00% | $-0.20 +2025-03-10 13:29:14,960 - INFO - OPENED LONG at 2071.39 | Stop loss: 2061.018767857143 | Take profit: 2102.482273214285 +2025-03-10 13:29:15,532 - INFO - CLOSED long at 2068.58 | PnL: -0.14% | $-0.47 +2025-03-10 13:29:15,532 - INFO - OPENED SHORT at 2068.58 | Stop loss: 2078.937182142857 | Take profit: 2037.5298767857141 +2025-03-10 13:29:15,563 - INFO - CLOSED short at 2068.8 | PnL: -0.01% | $-0.22 +2025-03-10 13:29:15,563 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.441717857143 | Take profit: 2099.853423214286 +2025-03-10 13:29:16,006 - INFO - CLOSED long at 2065.28 | PnL: -0.17% | $-0.54 +2025-03-10 13:29:16,180 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.347267857143 | Take profit: 2096.6967732142857 +2025-03-10 13:29:16,785 - INFO - CLOSED long at 2061.6 | PnL: -0.20% | $-0.59 +2025-03-10 13:29:16,818 - INFO - OPENED LONG at 2060.9 | Stop loss: 2050.5812178571427 | Take profit: 2091.834923214286 +2025-03-10 13:29:17,075 - INFO - CLOSED long at 2061.13 | PnL: 0.01% | $-0.18 +2025-03-10 13:29:17,075 - INFO - OPENED SHORT at 2061.13 | Stop loss: 2071.449932142857 | Take profit: 2030.1916267857143 +2025-03-10 13:29:17,102 - INFO - CLOSED short at 2061.9 | PnL: -0.04% | $-0.27 +2025-03-10 13:29:17,103 - INFO - OPENED LONG at 2061.9 | Stop loss: 2051.576217857143 | Take profit: 2092.849923214286 +2025-03-10 13:29:18,189 - INFO - CLOSED long at 2062.69 | PnL: 0.04% | $-0.12 +2025-03-10 13:29:18,189 - INFO - OPENED SHORT at 2062.69 | Stop loss: 2073.0177321428573 | Take profit: 2031.7282267857142 +2025-03-10 13:29:18,255 - INFO - CLOSED short at 2066.36 | PnL: -0.18% | $-0.54 +2025-03-10 13:29:18,255 - INFO - OPENED LONG at 2066.36 | Stop loss: 2056.013917857143 | Take profit: 2097.3768232142857 +2025-03-10 13:29:19,123 - INFO - CLOSED long at 2069.03 | PnL: 0.13% | $0.06 +2025-03-10 13:29:19,123 - INFO - OPENED SHORT at 2069.03 | Stop loss: 2079.3894321428575 | Take profit: 2037.9731267857144 +2025-03-10 13:29:19,190 - INFO - CLOSED short at 2068.79 | PnL: 0.01% | $-0.17 +2025-03-10 13:29:19,190 - INFO - OPENED LONG at 2068.79 | Stop loss: 2058.431767857143 | Take profit: 2099.843273214286 +2025-03-10 13:29:19,394 - INFO - CLOSED long at 2065.66 | PnL: -0.15% | $-0.49 +2025-03-10 13:29:19,395 - INFO - OPENED SHORT at 2065.66 | Stop loss: 2076.0025821428567 | Take profit: 2034.6536767857142 +2025-03-10 13:29:19,425 - INFO - CLOSED short at 2063.95 | PnL: 0.08% | $-0.03 +2025-03-10 13:29:19,425 - INFO - OPENED LONG at 2063.95 | Stop loss: 2053.6159678571426 | Take profit: 2094.930673214286 +2025-03-10 13:29:19,659 - INFO - CLOSED long at 2065.31 | PnL: 0.07% | $-0.07 +2025-03-10 13:29:19,659 - INFO - OPENED SHORT at 2065.31 | Stop loss: 2075.6508321428573 | Take profit: 2034.3089267857142 +2025-03-10 13:29:19,684 - INFO - CLOSED short at 2066.8 | PnL: -0.07% | $-0.33 +2025-03-10 13:29:19,684 - INFO - OPENED LONG at 2066.8 | Stop loss: 2056.451717857143 | Take profit: 2097.823423214286 +2025-03-10 13:29:19,763 - INFO - CLOSED long at 2071.59 | PnL: 0.23% | $0.25 +2025-03-10 13:29:19,763 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.9622321428574 | Take profit: 2040.4947267857144 +2025-03-10 13:29:19,790 - INFO - CLOSED short at 2070.2 | PnL: 0.07% | $-0.06 +2025-03-10 13:29:19,791 - INFO - OPENED LONG at 2070.2 | Stop loss: 2059.834717857143 | Take profit: 2101.274423214286 +2025-03-10 13:29:20,774 - INFO - CLOSED long at 2070.19 | PnL: -0.00% | $-0.19 +2025-03-10 13:29:20,797 - INFO - OPENED LONG at 2070.1 | Stop loss: 2059.7352178571427 | Take profit: 2101.1729232142857 +2025-03-10 13:29:21,163 - INFO - CLOSED long at 2066.33 | PnL: -0.18% | $-0.54 +2025-03-10 13:29:21,163 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6759321428567 | Take profit: 2035.3136267857144 +2025-03-10 13:29:21,196 - INFO - CLOSED short at 2063.01 | PnL: 0.16% | $0.12 +2025-03-10 13:29:21,196 - INFO - OPENED LONG at 2063.01 | Stop loss: 2052.680667857143 | Take profit: 2093.976573214286 +2025-03-10 13:29:21,378 - INFO - CLOSED long at 2053.01 | PnL: -0.48% | $-1.12 +2025-03-10 13:29:21,379 - INFO - OPENED SHORT at 2053.01 | Stop loss: 2063.2893321428573 | Take profit: 2022.1934267857146 +2025-03-10 13:29:21,411 - INFO - CLOSED short at 2049.21 | PnL: 0.19% | $0.16 +2025-03-10 13:29:21,412 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.949667857143 | Take profit: 2079.969573214286 +2025-03-10 13:29:22,248 - INFO - CLOSED long at 2074.05 | PnL: 1.21% | $2.11 +2025-03-10 13:29:22,248 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4345321428573 | Take profit: 2042.9178267857144 +2025-03-10 13:29:22,366 - INFO - CLOSED short at 2074.9 | PnL: -0.04% | $-0.27 +2025-03-10 13:29:22,366 - INFO - OPENED LONG at 2074.9 | Stop loss: 2064.511217857143 | Take profit: 2106.044923214286 +2025-03-10 13:29:22,543 - INFO - TAKE PROFIT hit for long at 2106.044923214286 | PnL: 1.50% | $2.71 +2025-03-10 13:29:22,686 - INFO - OPENED LONG at 2133.95 | Stop loss: 2123.2659678571426 | Take profit: 2165.9806732142856 +2025-03-10 13:29:23,061 - INFO - STOP LOSS hit for long at 2123.2659678571426 | PnL: -0.50% | $-1.20 +2025-03-10 13:29:23,141 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.534967857143 | Take profit: 2151.9736732142856 +2025-03-10 13:29:23,421 - INFO - STOP LOSS hit for long at 2109.534967857143 | PnL: -0.50% | $-1.18 +2025-03-10 13:29:23,505 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032717857143 | Take profit: 2142.2804232142853 +2025-03-10 13:29:23,725 - INFO - CLOSED long at 2112.99 | PnL: 0.11% | $0.03 +2025-03-10 13:29:23,755 - INFO - OPENED LONG at 2120.81 | Stop loss: 2110.191667857143 | Take profit: 2152.6435732142854 +2025-03-10 13:29:23,968 - INFO - STOP LOSS hit for long at 2110.191667857143 | PnL: -0.50% | $-1.17 +2025-03-10 13:29:24,006 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.9432678571425 | Take profit: 2138.1087732142855 +2025-03-10 13:29:24,080 - INFO - CLOSED long at 2100.5 | PnL: -0.28% | $-0.74 +2025-03-10 13:29:24,080 - INFO - OPENED SHORT at 2100.5 | Stop loss: 2111.016782142857 | Take profit: 2068.9710767857146 +2025-03-10 13:29:24,162 - INFO - CLOSED short at 2098.1 | PnL: 0.11% | $0.03 +2025-03-10 13:29:24,163 - INFO - OPENED LONG at 2098.1 | Stop loss: 2087.595217857143 | Take profit: 2129.5929232142857 +2025-03-10 13:29:24,839 - INFO - CLOSED long at 2093.33 | PnL: -0.23% | $-0.62 +2025-03-10 13:29:24,928 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.2321178571424 | Take profit: 2126.1622232142854 +2025-03-10 13:29:25,035 - INFO - STOP LOSS hit for long at 2084.2321178571424 | PnL: -0.50% | $-1.14 +2025-03-10 13:29:25,211 - INFO - OPENED LONG at 2085.3 | Stop loss: 2074.859217857143 | Take profit: 2116.600923214286 +2025-03-10 13:29:25,310 - INFO - CLOSED long at 2081.25 | PnL: -0.19% | $-0.55 +2025-03-10 13:29:25,399 - INFO - OPENED LONG at 2083.59 | Stop loss: 2073.157767857143 | Take profit: 2114.865273214286 +2025-03-10 13:29:25,460 - INFO - CLOSED long at 2086.57 | PnL: 0.14% | $0.08 +2025-03-10 13:29:25,461 - INFO - OPENED SHORT at 2086.57 | Stop loss: 2097.017132142857 | Take profit: 2055.2500267857145 +2025-03-10 13:29:25,524 - INFO - CLOSED short at 2085.8 | PnL: 0.04% | $-0.12 +2025-03-10 13:29:25,525 - INFO - OPENED LONG at 2085.8 | Stop loss: 2075.356717857143 | Take profit: 2117.1084232142857 +2025-03-10 13:29:26,383 - INFO - CLOSED long at 2100.89 | PnL: 0.72% | $1.16 +2025-03-10 13:29:26,384 - INFO - OPENED SHORT at 2100.89 | Stop loss: 2111.4087321428574 | Take profit: 2069.355226785714 +2025-03-10 13:29:26,440 - INFO - CLOSED short at 2106.15 | PnL: -0.25% | $-0.66 +2025-03-10 13:29:26,440 - INFO - OPENED LONG at 2106.15 | Stop loss: 2095.604967857143 | Take profit: 2137.763673214286 +2025-03-10 13:29:27,068 - INFO - Trade Analysis: Win Rate=20.0% in uptrends, 0.0% in downtrends | Avg Win=$0.62, Avg Loss=$-0.48 +2025-03-10 13:29:27,069 - INFO - Episode 14: Reward=54.10, Balance=$94.18, Win Rate=31.0%, Trades=42, Episode PnL=$-6.91, Total PnL=$-108.80, Max Drawdown=7.4%, Pred Accuracy=98.7% +2025-03-10 13:29:27,285 - INFO - OPENED SHORT at 2049.89 | Stop loss: 2060.153732142857 | Take profit: 2019.120226785714 +2025-03-10 13:29:27,316 - INFO - CLOSED short at 2051.11 | PnL: -0.06% | $-0.32 +2025-03-10 13:29:27,317 - INFO - OPENED LONG at 2051.11 | Stop loss: 2040.840167857143 | Take profit: 2081.898073214286 +2025-03-10 13:29:28,235 - INFO - CLOSED long at 2068.11 | PnL: 0.83% | $1.44 +2025-03-10 13:29:28,236 - INFO - OPENED SHORT at 2068.11 | Stop loss: 2078.464832142857 | Take profit: 2037.0669267857145 +2025-03-10 13:29:28,329 - INFO - CLOSED short at 2071.63 | PnL: -0.17% | $-0.54 +2025-03-10 13:29:28,329 - INFO - OPENED LONG at 2071.63 | Stop loss: 2061.257567857143 | Take profit: 2102.725873214286 +2025-03-10 13:29:28,384 - INFO - CLOSED long at 2069.6 | PnL: -0.10% | $-0.40 +2025-03-10 13:29:28,385 - INFO - OPENED SHORT at 2069.6 | Stop loss: 2079.962282142857 | Take profit: 2038.534576785714 +2025-03-10 13:29:28,493 - INFO - CLOSED short at 2067.69 | PnL: 0.09% | $-0.02 +2025-03-10 13:29:28,494 - INFO - OPENED LONG at 2067.69 | Stop loss: 2057.337267857143 | Take profit: 2098.726773214286 +2025-03-10 13:29:29,211 - INFO - CLOSED long at 2066.29 | PnL: -0.07% | $-0.33 +2025-03-10 13:29:29,238 - INFO - OPENED LONG at 2065.08 | Stop loss: 2054.7403178571426 | Take profit: 2096.0776232142857 +2025-03-10 13:29:30,177 - INFO - CLOSED long at 2067.46 | PnL: 0.12% | $0.03 +2025-03-10 13:29:30,178 - INFO - OPENED SHORT at 2067.46 | Stop loss: 2077.8115821428573 | Take profit: 2036.4266767857143 +2025-03-10 13:29:30,214 - INFO - CLOSED short at 2066.8 | PnL: 0.03% | $-0.14 +2025-03-10 13:29:30,214 - INFO - OPENED LONG at 2066.8 | Stop loss: 2056.451717857143 | Take profit: 2097.823423214286 +2025-03-10 13:29:33,486 - INFO - STOP LOSS hit for long at 2056.451717857143 | PnL: -0.50% | $-1.19 +2025-03-10 13:29:33,856 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.979217857143 | Take profit: 2092.240923214286 +2025-03-10 13:29:34,240 - INFO - CLOSED long at 2066.79 | PnL: 0.27% | $0.33 +2025-03-10 13:29:34,274 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.9790678571426 | Take profit: 2098.3613732142853 +2025-03-10 13:29:34,414 - INFO - CLOSED long at 2074.3 | PnL: 0.34% | $0.47 +2025-03-10 13:29:34,673 - INFO - OPENED LONG at 2071.6 | Stop loss: 2061.2277178571426 | Take profit: 2102.6954232142857 +2025-03-10 13:29:34,991 - INFO - CLOSED long at 2069.03 | PnL: -0.12% | $-0.44 +2025-03-10 13:29:35,027 - INFO - OPENED LONG at 2067.44 | Stop loss: 2057.088517857143 | Take profit: 2098.4730232142856 +2025-03-10 13:29:36,330 - INFO - CLOSED long at 2068.19 | PnL: 0.04% | $-0.13 +2025-03-10 13:29:36,677 - INFO - OPENED LONG at 2073.99 | Stop loss: 2063.605767857143 | Take profit: 2105.121273214286 +2025-03-10 13:29:37,400 - INFO - CLOSED long at 2067.19 | PnL: -0.33% | $-0.84 +2025-03-10 13:29:37,401 - INFO - OPENED SHORT at 2067.19 | Stop loss: 2077.5402321428573 | Take profit: 2036.1607267857144 +2025-03-10 13:29:37,432 - INFO - CLOSED short at 2065.5 | PnL: 0.08% | $-0.04 +2025-03-10 13:29:37,433 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.158217857143 | Take profit: 2096.503923214286 +2025-03-10 13:29:38,191 - INFO - STOP LOSS hit for long at 2055.158217857143 | PnL: -0.50% | $-1.17 +2025-03-10 13:29:38,229 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.949667857143 | Take profit: 2079.969573214286 +2025-03-10 13:29:39,159 - INFO - CLOSED long at 2070.41 | PnL: 1.03% | $1.80 +2025-03-10 13:29:39,241 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6107678571425 | Take profit: 2104.1062732142855 +2025-03-10 13:29:39,509 - INFO - TAKE PROFIT hit for long at 2104.1062732142855 | PnL: 1.50% | $2.74 +2025-03-10 13:29:39,545 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.8280178571426 | Take profit: 2171.6545232142857 +2025-03-10 13:29:39,769 - INFO - STOP LOSS hit for long at 2128.8280178571426 | PnL: -0.50% | $-1.21 +2025-03-10 13:29:39,791 - INFO - OPENED SHORT at 2127.3 | Stop loss: 2137.9507821428574 | Take profit: 2095.3690767857147 +2025-03-10 13:29:39,881 - INFO - CLOSED short at 2120.15 | PnL: 0.34% | $0.47 +2025-03-10 13:29:39,881 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.534967857143 | Take profit: 2151.9736732142856 +2025-03-10 13:29:40,124 - INFO - STOP LOSS hit for long at 2109.534967857143 | PnL: -0.50% | $-1.20 +2025-03-10 13:29:40,159 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032717857143 | Take profit: 2142.2804232142853 +2025-03-10 13:29:40,618 - INFO - STOP LOSS hit for long at 2100.032717857143 | PnL: -0.50% | $-1.19 +2025-03-10 13:29:40,641 - INFO - OPENED SHORT at 2099.53 | Stop loss: 2110.041932142857 | Take profit: 2068.0156267857146 +2025-03-10 13:29:40,667 - INFO - CLOSED short at 2098.1 | PnL: 0.07% | $-0.06 +2025-03-10 13:29:40,667 - INFO - OPENED LONG at 2098.1 | Stop loss: 2087.595217857143 | Take profit: 2129.5929232142857 +2025-03-10 13:29:40,908 - INFO - CLOSED long at 2103.86 | PnL: 0.27% | $0.34 +2025-03-10 13:29:40,933 - INFO - OPENED LONG at 2104.68 | Stop loss: 2094.1423178571426 | Take profit: 2136.2716232142857 +2025-03-10 13:29:41,082 - INFO - CLOSED long at 2093.46 | PnL: -0.53% | $-1.24 +2025-03-10 13:29:41,110 - INFO - OPENED LONG at 2093.33 | Stop loss: 2082.849067857143 | Take profit: 2124.7513732142856 +2025-03-10 13:29:41,318 - INFO - CLOSED long at 2083.97 | PnL: -0.45% | $-1.06 +2025-03-10 13:29:41,372 - INFO - OPENED LONG at 2082.44 | Stop loss: 2072.0135178571427 | Take profit: 2113.698023214286 +2025-03-10 13:29:41,847 - INFO - CLOSED long at 2086.81 | PnL: 0.21% | $0.21 +2025-03-10 13:29:41,874 - INFO - OPENED LONG at 2089.79 | Stop loss: 2079.326767857143 | Take profit: 2121.1582732142856 +2025-03-10 13:29:42,184 - INFO - CLOSED long at 2099.89 | PnL: 0.48% | $0.73 +2025-03-10 13:29:42,293 - INFO - OPENED LONG at 2103.48 | Stop loss: 2092.9483178571427 | Take profit: 2135.053623214286 +2025-03-10 13:29:42,425 - INFO - CLOSED long at 2105.83 | PnL: 0.11% | $0.02 +2025-03-10 13:29:42,453 - INFO - OPENED LONG at 2103.64 | Stop loss: 2093.1075178571427 | Take profit: 2135.2160232142855 +2025-03-10 13:29:42,533 - INFO - CLOSED long at 2104.4 | PnL: 0.04% | $-0.12 +2025-03-10 13:29:42,561 - INFO - OPENED LONG at 2105.21 | Stop loss: 2094.669667857143 | Take profit: 2136.8095732142856 +2025-03-10 13:29:42,933 - INFO - CLOSED long at 2112.28 | PnL: 0.34% | $0.45 +2025-03-10 13:29:42,934 - INFO - OPENED SHORT at 2112.28 | Stop loss: 2122.855682142857 | Take profit: 2080.5743767857143 +2025-03-10 13:29:42,959 - INFO - Trade Analysis: Win Rate=15.4% in uptrends, 0.0% in downtrends | Avg Win=$0.75, Avg Loss=$-0.61 +2025-03-10 13:29:42,960 - INFO - Episode 15: Reward=71.53, Balance=$97.42, Win Rate=38.7%, Trades=31, Episode PnL=$-3.27, Total PnL=$-111.38, Max Drawdown=5.1%, Pred Accuracy=98.5% +2025-03-10 13:29:43,135 - INFO - Model saved to models/trading_agent_best_winrate.pt +2025-03-10 13:29:43,136 - INFO - New best win rate model saved: 38.7% +2025-03-10 13:29:43,577 - INFO - OPENED LONG at 2051.11 | Stop loss: 2040.840167857143 | Take profit: 2081.898073214286 +2025-03-10 13:29:44,423 - INFO - CLOSED long at 2057.8 | PnL: 0.33% | $0.45 +2025-03-10 13:29:44,528 - INFO - OPENED LONG at 2061.79 | Stop loss: 2051.4667678571427 | Take profit: 2092.7382732142855 +2025-03-10 13:29:44,827 - INFO - CLOSED long at 2068.65 | PnL: 0.33% | $0.46 +2025-03-10 13:29:44,828 - INFO - OPENED SHORT at 2068.65 | Stop loss: 2079.007532142857 | Take profit: 2037.5988267857144 +2025-03-10 13:29:44,884 - INFO - CLOSED short at 2067.9 | PnL: 0.04% | $-0.13 +2025-03-10 13:29:44,884 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.546217857143 | Take profit: 2098.939923214286 +2025-03-10 13:29:45,792 - INFO - CLOSED long at 2068.9 | PnL: 0.05% | $-0.10 +2025-03-10 13:29:45,792 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.2587821428574 | Take profit: 2037.8450767857144 +2025-03-10 13:29:45,839 - INFO - CLOSED short at 2068.59 | PnL: 0.01% | $-0.17 +2025-03-10 13:29:45,865 - INFO - OPENED LONG at 2069.7 | Stop loss: 2059.3372178571426 | Take profit: 2100.7669232142857 +2025-03-10 13:29:46,149 - INFO - CLOSED long at 2073.9 | PnL: 0.20% | $0.21 +2025-03-10 13:29:46,149 - INFO - OPENED SHORT at 2073.9 | Stop loss: 2084.2837821428575 | Take profit: 2042.7700767857145 +2025-03-10 13:29:46,174 - INFO - CLOSED short at 2071.92 | PnL: 0.10% | $-0.01 +2025-03-10 13:29:46,175 - INFO - OPENED LONG at 2071.92 | Stop loss: 2061.5461178571427 | Take profit: 2103.0202232142856 +2025-03-10 13:29:46,756 - INFO - CLOSED long at 2070.7 | PnL: -0.06% | $-0.32 +2025-03-10 13:29:46,757 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.0677821428567 | Take profit: 2039.618076785714 +2025-03-10 13:29:46,791 - INFO - CLOSED short at 2070.4 | PnL: 0.01% | $-0.17 +2025-03-10 13:29:46,792 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.033717857143 | Take profit: 2101.477423214286 +2025-03-10 13:29:47,213 - INFO - CLOSED long at 2065.69 | PnL: -0.23% | $-0.65 +2025-03-10 13:29:47,236 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.526317857143 | Take profit: 2098.919623214286 +2025-03-10 13:29:47,883 - INFO - CLOSED long at 2063.5 | PnL: -0.21% | $-0.62 +2025-03-10 13:29:47,918 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.2777178571428 | Take profit: 2092.5454232142856 +2025-03-10 13:29:48,884 - INFO - CLOSED long at 2059.16 | PnL: -0.12% | $-0.43 +2025-03-10 13:29:48,885 - INFO - OPENED SHORT at 2059.16 | Stop loss: 2069.470082142857 | Take profit: 2028.2511767857143 +2025-03-10 13:29:48,975 - INFO - CLOSED short at 2059.02 | PnL: 0.01% | $-0.18 +2025-03-10 13:29:48,976 - INFO - OPENED LONG at 2059.02 | Stop loss: 2048.710617857143 | Take profit: 2089.9267232142856 +2025-03-10 13:29:49,172 - INFO - CLOSED long at 2055.6 | PnL: -0.17% | $-0.52 +2025-03-10 13:29:49,173 - INFO - OPENED SHORT at 2055.6 | Stop loss: 2065.892282142857 | Take profit: 2024.7445767857141 +2025-03-10 13:29:49,403 - INFO - CLOSED short at 2058.15 | PnL: -0.12% | $-0.44 +2025-03-10 13:29:49,404 - INFO - OPENED LONG at 2058.15 | Stop loss: 2047.844967857143 | Take profit: 2089.0436732142857 +2025-03-10 13:29:50,939 - INFO - CLOSED long at 2064.31 | PnL: 0.30% | $0.39 +2025-03-10 13:29:51,006 - INFO - OPENED LONG at 2067.53 | Stop loss: 2057.178067857143 | Take profit: 2098.5643732142858 +2025-03-10 13:29:51,442 - INFO - CLOSED long at 2071.99 | PnL: 0.22% | $0.22 +2025-03-10 13:29:51,443 - INFO - OPENED SHORT at 2071.99 | Stop loss: 2082.364232142857 | Take profit: 2040.888726785714 +2025-03-10 13:29:51,472 - INFO - CLOSED short at 2068.19 | PnL: 0.18% | $0.16 +2025-03-10 13:29:51,473 - INFO - OPENED LONG at 2068.19 | Stop loss: 2057.834767857143 | Take profit: 2099.2342732142856 +2025-03-10 13:29:52,836 - INFO - STOP LOSS hit for long at 2057.834767857143 | PnL: -0.50% | $-1.17 +2025-03-10 13:29:52,891 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.949667857143 | Take profit: 2079.969573214286 +2025-03-10 13:29:53,822 - INFO - CLOSED long at 2074.05 | PnL: 1.21% | $2.14 +2025-03-10 13:29:53,823 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4345321428573 | Take profit: 2042.9178267857144 +2025-03-10 13:29:53,848 - INFO - CLOSED short at 2072.99 | PnL: 0.05% | $-0.10 +2025-03-10 13:29:53,849 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6107678571425 | Take profit: 2104.1062732142855 +2025-03-10 13:29:54,188 - INFO - TAKE PROFIT hit for long at 2104.1062732142855 | PnL: 1.50% | $2.76 +2025-03-10 13:29:54,275 - INFO - OPENED LONG at 2133.95 | Stop loss: 2123.2659678571426 | Take profit: 2165.9806732142856 +2025-03-10 13:29:54,426 - INFO - CLOSED long at 2134.78 | PnL: 0.04% | $-0.12 +2025-03-10 13:29:54,460 - INFO - OPENED LONG at 2126.99 | Stop loss: 2116.3407678571425 | Take profit: 2158.916273214286 +2025-03-10 13:29:54,772 - INFO - STOP LOSS hit for long at 2116.3407678571425 | PnL: -0.50% | $-1.21 +2025-03-10 13:29:54,904 - INFO - OPENED LONG at 2112.95 | Stop loss: 2102.3709678571427 | Take profit: 2144.6656732142856 +2025-03-10 13:29:55,237 - INFO - STOP LOSS hit for long at 2102.3709678571427 | PnL: -0.50% | $-1.20 +2025-03-10 13:29:55,268 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.5357178571426 | Take profit: 2121.3714232142856 +2025-03-10 13:29:55,417 - INFO - CLOSED long at 2099.25 | PnL: 0.44% | $0.68 +2025-03-10 13:29:55,418 - INFO - OPENED SHORT at 2099.25 | Stop loss: 2109.760532142857 | Take profit: 2067.7398267857143 +2025-03-10 13:29:55,556 - INFO - CLOSED short at 2100.74 | PnL: -0.07% | $-0.34 +2025-03-10 13:29:55,556 - INFO - OPENED LONG at 2100.74 | Stop loss: 2090.2220178571424 | Take profit: 2132.2725232142852 +2025-03-10 13:29:55,781 - INFO - CLOSED long at 2093.46 | PnL: -0.35% | $-0.88 +2025-03-10 13:29:55,825 - INFO - OPENED LONG at 2093.33 | Stop loss: 2082.849067857143 | Take profit: 2124.7513732142856 +2025-03-10 13:29:55,967 - INFO - CLOSED long at 2088.35 | PnL: -0.24% | $-0.66 +2025-03-10 13:29:55,967 - INFO - OPENED SHORT at 2088.35 | Stop loss: 2098.806032142857 | Take profit: 2057.0033267857143 +2025-03-10 13:29:55,997 - INFO - CLOSED short at 2083.28 | PnL: 0.24% | $0.28 +2025-03-10 13:29:55,998 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.849317857143 | Take profit: 2114.5506232142857 +2025-03-10 13:29:57,872 - INFO - Trade Analysis: Win Rate=23.1% in uptrends, 0.0% in downtrends | Avg Win=$0.77, Avg Loss=$-0.47 +2025-03-10 13:29:57,873 - INFO - Episode 16: Reward=67.90, Balance=$98.32, Win Rate=33.3%, Trades=30, Episode PnL=$-3.36, Total PnL=$-113.06, Max Drawdown=3.5%, Pred Accuracy=98.4% +2025-03-10 13:29:58,155 - INFO - OPENED LONG at 2053.26 | Stop loss: 2042.979417857143 | Take profit: 2084.080323214286 +2025-03-10 13:29:58,308 - INFO - CLOSED long at 2058.39 | PnL: 0.25% | $0.30 +2025-03-10 13:29:58,308 - INFO - OPENED SHORT at 2058.39 | Stop loss: 2068.696232142857 | Take profit: 2027.4927267857142 +2025-03-10 13:29:58,366 - INFO - CLOSED short at 2059.7 | PnL: -0.06% | $-0.33 +2025-03-10 13:29:58,366 - INFO - OPENED LONG at 2059.7 | Stop loss: 2049.387217857143 | Take profit: 2090.6169232142856 +2025-03-10 13:29:58,741 - INFO - CLOSED long at 2060.0 | PnL: 0.01% | $-0.17 +2025-03-10 13:29:58,742 - INFO - OPENED SHORT at 2060.0 | Stop loss: 2070.3142821428573 | Take profit: 2029.0785767857142 +2025-03-10 13:29:58,768 - INFO - CLOSED short at 2061.89 | PnL: -0.09% | $-0.38 +2025-03-10 13:29:58,769 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.566267857143 | Take profit: 2092.8397732142857 +2025-03-10 13:29:59,928 - INFO - CLOSED long at 2071.41 | PnL: 0.46% | $0.71 +2025-03-10 13:29:59,928 - INFO - OPENED SHORT at 2071.41 | Stop loss: 2081.781332142857 | Take profit: 2040.3174267857141 +2025-03-10 13:29:59,959 - INFO - CLOSED short at 2069.37 | PnL: 0.10% | $-0.00 +2025-03-10 13:29:59,959 - INFO - OPENED LONG at 2069.37 | Stop loss: 2059.008867857143 | Take profit: 2100.431973214286 +2025-03-10 13:30:01,121 - INFO - CLOSED long at 2071.39 | PnL: 0.10% | $-0.00 +2025-03-10 13:30:01,122 - INFO - OPENED SHORT at 2071.39 | Stop loss: 2081.761232142857 | Take profit: 2040.297726785714 +2025-03-10 13:30:01,151 - INFO - CLOSED short at 2071.36 | PnL: 0.00% | $-0.20 +2025-03-10 13:30:01,151 - INFO - OPENED LONG at 2071.36 | Stop loss: 2060.988917857143 | Take profit: 2102.451823214286 +2025-03-10 13:30:01,672 - INFO - CLOSED long at 2066.8 | PnL: -0.22% | $-0.64 +2025-03-10 13:30:01,672 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.1482821428576 | Take profit: 2035.7765767857143 +2025-03-10 13:30:01,700 - INFO - CLOSED short at 2065.49 | PnL: 0.06% | $-0.07 +2025-03-10 13:30:01,700 - INFO - OPENED LONG at 2065.49 | Stop loss: 2055.1482678571424 | Take profit: 2096.4937732142857 +2025-03-10 13:30:01,974 - INFO - CLOSED long at 2070.3 | PnL: 0.23% | $0.26 +2025-03-10 13:30:02,004 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.217767857143 | Take profit: 2102.6852732142856 +2025-03-10 13:30:02,657 - INFO - CLOSED long at 2062.65 | PnL: -0.43% | $-1.05 +2025-03-10 13:30:02,685 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.456817857143 | Take profit: 2092.728123214286 +2025-03-10 13:30:03,454 - INFO - CLOSED long at 2065.36 | PnL: 0.17% | $0.14 +2025-03-10 13:30:03,489 - INFO - OPENED LONG at 2064.33 | Stop loss: 2053.994067857143 | Take profit: 2095.3163732142857 +2025-03-10 13:30:04,196 - INFO - CLOSED long at 2059.8 | PnL: -0.22% | $-0.63 +2025-03-10 13:30:04,196 - INFO - OPENED SHORT at 2059.8 | Stop loss: 2070.1132821428573 | Take profit: 2028.8815767857145 +2025-03-10 13:30:04,230 - INFO - CLOSED short at 2061.66 | PnL: -0.09% | $-0.37 +2025-03-10 13:30:04,231 - INFO - OPENED LONG at 2061.66 | Stop loss: 2051.3374178571426 | Take profit: 2092.6063232142856 +2025-03-10 13:30:05,088 - INFO - CLOSED long at 2073.23 | PnL: 0.56% | $0.89 +2025-03-10 13:30:05,245 - INFO - OPENED LONG at 2068.39 | Stop loss: 2058.0337678571427 | Take profit: 2099.4372732142856 +2025-03-10 13:30:06,556 - INFO - CLOSED long at 2070.35 | PnL: 0.09% | $-0.01 +2025-03-10 13:30:06,556 - INFO - OPENED SHORT at 2070.35 | Stop loss: 2080.7160321428573 | Take profit: 2039.273326785714 +2025-03-10 13:30:06,627 - INFO - CLOSED short at 2070.61 | PnL: -0.01% | $-0.22 +2025-03-10 13:30:06,628 - INFO - OPENED LONG at 2070.61 | Stop loss: 2060.2426678571433 | Take profit: 2101.690573214286 +2025-03-10 13:30:08,023 - INFO - STOP LOSS hit for long at 2060.2426678571433 | PnL: -0.50% | $-1.17 +2025-03-10 13:30:08,145 - INFO - OPENED LONG at 2056.77 | Stop loss: 2046.4718678571428 | Take profit: 2087.6429732142856 +2025-03-10 13:30:08,837 - INFO - CLOSED long at 2065.72 | PnL: 0.44% | $0.65 +2025-03-10 13:30:08,890 - INFO - OPENED LONG at 2070.24 | Stop loss: 2059.8745178571426 | Take profit: 2101.3150232142852 +2025-03-10 13:30:09,076 - INFO - CLOSED long at 2071.89 | PnL: 0.08% | $-0.04 +2025-03-10 13:30:09,129 - INFO - OPENED LONG at 2074.9 | Stop loss: 2064.511217857143 | Take profit: 2106.044923214286 +2025-03-10 13:30:09,154 - INFO - CLOSED long at 2076.08 | PnL: 0.06% | $-0.08 +2025-03-10 13:30:09,212 - INFO - OPENED LONG at 2085.56 | Stop loss: 2075.117917857143 | Take profit: 2116.8648232142855 +2025-03-10 13:30:09,263 - INFO - CLOSED long at 2103.02 | PnL: 0.84% | $1.43 +2025-03-10 13:30:09,263 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.549382142857 | Take profit: 2071.4532767857145 +2025-03-10 13:30:09,291 - INFO - STOP LOSS hit for short at 2113.549382142857 | PnL: -0.50% | $-1.18 +2025-03-10 13:30:09,323 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.8280178571426 | Take profit: 2171.6545232142857 +2025-03-10 13:30:09,497 - INFO - CLOSED long at 2142.68 | PnL: 0.15% | $0.09 +2025-03-10 13:30:09,572 - INFO - OPENED LONG at 2126.99 | Stop loss: 2116.3407678571425 | Take profit: 2158.916273214286 +2025-03-10 13:30:09,871 - INFO - STOP LOSS hit for long at 2116.3407678571425 | PnL: -0.50% | $-1.17 +2025-03-10 13:30:09,901 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.878567857143 | Take profit: 2139.0628732142854 +2025-03-10 13:30:10,110 - INFO - CLOSED long at 2112.99 | PnL: 0.26% | $0.31 +2025-03-10 13:30:10,349 - INFO - OPENED LONG at 2103.33 | Stop loss: 2092.7990678571427 | Take profit: 2134.9013732142853 +2025-03-10 13:30:10,410 - INFO - STOP LOSS hit for long at 2092.7990678571427 | PnL: -0.50% | $-1.16 +2025-03-10 13:30:10,589 - INFO - OPENED LONG at 2098.9 | Stop loss: 2088.3912178571427 | Take profit: 2130.4049232142856 +2025-03-10 13:30:11,294 - INFO - CLOSED long at 2091.1 | PnL: -0.37% | $-0.90 +2025-03-10 13:30:11,294 - INFO - OPENED SHORT at 2091.1 | Stop loss: 2101.569782142857 | Take profit: 2059.712076785714 +2025-03-10 13:30:11,346 - INFO - CLOSED short at 2094.08 | PnL: -0.14% | $-0.46 +2025-03-10 13:30:11,346 - INFO - OPENED LONG at 2094.08 | Stop loss: 2083.5953178571426 | Take profit: 2125.5126232142857 +2025-03-10 13:30:11,471 - INFO - STOP LOSS hit for long at 2083.5953178571426 | PnL: -0.50% | $-1.13 +2025-03-10 13:30:11,584 - INFO - OPENED LONG at 2083.97 | Stop loss: 2073.535867857143 | Take profit: 2115.2509732142858 +2025-03-10 13:30:13,686 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.53, Avg Loss=$-0.52 +2025-03-10 13:30:13,687 - INFO - Episode 17: Reward=68.20, Balance=$93.44, Win Rate=29.0%, Trades=31, Episode PnL=$-6.66, Total PnL=$-119.62, Max Drawdown=6.6%, Pred Accuracy=98.6% +2025-03-10 13:30:13,935 - INFO - OPENED LONG at 2049.89 | Stop loss: 2039.6262678571427 | Take profit: 2080.659773214286 +2025-03-10 13:30:14,971 - INFO - CLOSED long at 2070.99 | PnL: 1.03% | $1.85 +2025-03-10 13:30:14,972 - INFO - OPENED SHORT at 2070.99 | Stop loss: 2081.359232142857 | Take profit: 2039.903726785714 +2025-03-10 13:30:15,027 - INFO - CLOSED short at 2068.65 | PnL: 0.11% | $0.03 +2025-03-10 13:30:15,027 - INFO - OPENED LONG at 2068.65 | Stop loss: 2058.292467857143 | Take profit: 2099.7011732142855 +2025-03-10 13:30:16,033 - INFO - CLOSED long at 2068.51 | PnL: -0.01% | $-0.22 +2025-03-10 13:30:16,065 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.232767857143 | Take profit: 2099.6402732142856 +2025-03-10 13:30:16,874 - INFO - CLOSED long at 2067.86 | PnL: -0.04% | $-0.27 +2025-03-10 13:30:16,899 - INFO - OPENED LONG at 2067.59 | Stop loss: 2057.237767857143 | Take profit: 2098.625273214286 +2025-03-10 13:30:19,461 - INFO - STOP LOSS hit for long at 2057.237767857143 | PnL: -0.50% | $-1.21 +2025-03-10 13:30:19,541 - INFO - OPENED LONG at 2054.83 | Stop loss: 2044.5415678571426 | Take profit: 2085.673873214286 +2025-03-10 13:30:20,505 - INFO - CLOSED long at 2069.69 | PnL: 0.72% | $1.24 +2025-03-10 13:30:20,506 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.052732142857 | Take profit: 2038.6232267857142 +2025-03-10 13:30:20,534 - INFO - CLOSED short at 2069.03 | PnL: 0.03% | $-0.14 +2025-03-10 13:30:20,535 - INFO - OPENED LONG at 2069.03 | Stop loss: 2058.670567857143 | Take profit: 2100.086873214286 +2025-03-10 13:30:22,303 - INFO - CLOSED long at 2065.07 | PnL: -0.19% | $-0.59 +2025-03-10 13:30:22,303 - INFO - OPENED SHORT at 2065.07 | Stop loss: 2075.4096321428574 | Take profit: 2034.0725267857144 +2025-03-10 13:30:22,338 - INFO - CLOSED short at 2066.09 | PnL: -0.05% | $-0.30 +2025-03-10 13:30:22,338 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.745267857143 | Take profit: 2097.102773214286 +2025-03-10 13:30:22,905 - INFO - CLOSED long at 2053.01 | PnL: -0.63% | $-1.46 +2025-03-10 13:30:22,905 - INFO - OPENED SHORT at 2053.01 | Stop loss: 2063.2893321428573 | Take profit: 2022.1934267857146 +2025-03-10 13:30:23,235 - INFO - CLOSED short at 2057.89 | PnL: -0.24% | $-0.66 +2025-03-10 13:30:23,235 - INFO - OPENED LONG at 2057.89 | Stop loss: 2047.5862678571427 | Take profit: 2088.779773214286 +2025-03-10 13:30:23,660 - INFO - CLOSED long at 2061.21 | PnL: 0.16% | $0.12 +2025-03-10 13:30:23,752 - INFO - OPENED LONG at 2061.84 | Stop loss: 2051.5165178571433 | Take profit: 2092.789023214286 +2025-03-10 13:30:23,804 - INFO - CLOSED long at 2062.54 | PnL: 0.03% | $-0.13 +2025-03-10 13:30:23,805 - INFO - OPENED SHORT at 2062.54 | Stop loss: 2072.866982142857 | Take profit: 2031.5804767857142 +2025-03-10 13:30:24,119 - INFO - STOP LOSS hit for short at 2072.866982142857 | PnL: -0.50% | $-1.17 +2025-03-10 13:30:24,188 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.369232142857 | Take profit: 2041.873726785714 +2025-03-10 13:30:24,437 - INFO - CLOSED short at 2077.61 | PnL: -0.22% | $-0.62 +2025-03-10 13:30:24,438 - INFO - OPENED LONG at 2077.61 | Stop loss: 2067.207667857143 | Take profit: 2108.7955732142855 +2025-03-10 13:30:24,563 - INFO - TAKE PROFIT hit for long at 2108.7955732142855 | PnL: 1.50% | $2.68 +2025-03-10 13:30:24,658 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.8280178571426 | Take profit: 2171.6545232142857 +2025-03-10 13:30:25,151 - INFO - STOP LOSS hit for long at 2128.8280178571426 | PnL: -0.50% | $-1.18 +2025-03-10 13:30:25,185 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.649217857143 | Take profit: 2159.230923214286 +2025-03-10 13:30:25,650 - INFO - STOP LOSS hit for long at 2116.649217857143 | PnL: -0.50% | $-1.17 +2025-03-10 13:30:25,677 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.878567857143 | Take profit: 2139.0628732142854 +2025-03-10 13:30:26,449 - INFO - STOP LOSS hit for long at 2096.878567857143 | PnL: -0.50% | $-1.16 +2025-03-10 13:30:26,476 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0180678571433 | Take profit: 2131.044373214286 +2025-03-10 13:30:26,536 - INFO - CLOSED long at 2102.19 | PnL: 0.13% | $0.05 +2025-03-10 13:30:26,538 - INFO - OPENED SHORT at 2102.19 | Stop loss: 2112.715232142857 | Take profit: 2070.6357267857143 +2025-03-10 13:30:26,657 - INFO - CLOSED short at 2099.25 | PnL: 0.14% | $0.08 +2025-03-10 13:30:26,658 - INFO - OPENED LONG at 2099.25 | Stop loss: 2088.739467857143 | Take profit: 2130.7601732142857 +2025-03-10 13:30:27,568 - INFO - STOP LOSS hit for long at 2088.739467857143 | PnL: -0.50% | $-1.14 +2025-03-10 13:30:27,598 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.849317857143 | Take profit: 2114.5506232142857 +2025-03-10 13:30:28,554 - INFO - CLOSED long at 2085.67 | PnL: 0.11% | $0.03 +2025-03-10 13:30:28,656 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.580467857143 | Take profit: 2122.437173214286 +2025-03-10 13:30:28,866 - INFO - CLOSED long at 2101.64 | PnL: 0.51% | $0.76 +2025-03-10 13:30:28,893 - INFO - OPENED LONG at 2097.11 | Stop loss: 2086.610167857143 | Take profit: 2128.588073214286 +2025-03-10 13:30:29,635 - INFO - CLOSED long at 2102.7 | PnL: 0.27% | $0.32 +2025-03-10 13:30:29,665 - INFO - OPENED SHORT at 2102.0 | Stop loss: 2112.5242821428574 | Take profit: 2070.448576785714 +2025-03-10 13:30:29,751 - INFO - CLOSED short at 2107.25 | PnL: -0.25% | $-0.67 +2025-03-10 13:30:29,752 - INFO - OPENED LONG at 2107.25 | Stop loss: 2096.6994678571427 | Take profit: 2138.8801732142856 +2025-03-10 13:30:29,930 - INFO - Trade Analysis: Win Rate=21.4% in uptrends, 0.0% in downtrends | Avg Win=$0.72, Avg Loss=$-0.76 +2025-03-10 13:30:29,931 - INFO - Episode 18: Reward=71.36, Balance=$95.06, Win Rate=38.5%, Trades=26, Episode PnL=$-5.89, Total PnL=$-124.56, Max Drawdown=6.9%, Pred Accuracy=98.7% +2025-03-10 13:30:30,225 - INFO - OPENED LONG at 2053.26 | Stop loss: 2042.979417857143 | Take profit: 2084.080323214286 +2025-03-10 13:30:32,494 - INFO - CLOSED long at 2066.19 | PnL: 0.63% | $1.05 +2025-03-10 13:30:32,554 - INFO - OPENED LONG at 2065.08 | Stop loss: 2054.7403178571426 | Take profit: 2096.0776232142857 +2025-03-10 13:30:32,835 - INFO - CLOSED long at 2071.39 | PnL: 0.31% | $0.41 +2025-03-10 13:30:32,865 - INFO - OPENED LONG at 2071.36 | Stop loss: 2060.988917857143 | Take profit: 2102.451823214286 +2025-03-10 13:30:34,635 - INFO - CLOSED long at 2065.69 | PnL: -0.27% | $-0.75 +2025-03-10 13:30:34,636 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.032732142857 | Take profit: 2034.6832267857144 +2025-03-10 13:30:34,692 - INFO - CLOSED short at 2064.99 | PnL: 0.03% | $-0.13 +2025-03-10 13:30:34,693 - INFO - OPENED LONG at 2064.99 | Stop loss: 2054.6507678571425 | Take profit: 2095.9862732142856 +2025-03-10 13:30:35,369 - INFO - CLOSED long at 2064.08 | PnL: -0.04% | $-0.29 +2025-03-10 13:30:35,369 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.4146821428567 | Take profit: 2033.097376785714 +2025-03-10 13:30:35,395 - INFO - CLOSED short at 2062.71 | PnL: 0.07% | $-0.07 +2025-03-10 13:30:35,395 - INFO - OPENED LONG at 2062.71 | Stop loss: 2052.382167857143 | Take profit: 2093.672073214286 +2025-03-10 13:30:35,678 - INFO - CLOSED long at 2059.3 | PnL: -0.17% | $-0.53 +2025-03-10 13:30:35,782 - INFO - OPENED LONG at 2061.8 | Stop loss: 2051.476717857143 | Take profit: 2092.748423214286 +2025-03-10 13:30:36,357 - INFO - CLOSED long at 2062.6 | PnL: 0.04% | $-0.12 +2025-03-10 13:30:36,607 - INFO - OPENED LONG at 2061.09 | Stop loss: 2050.770267857143 | Take profit: 2092.0277732142863 +2025-03-10 13:30:37,490 - INFO - CLOSED long at 2066.33 | PnL: 0.25% | $0.31 +2025-03-10 13:30:37,521 - INFO - OPENED LONG at 2066.34 | Stop loss: 2055.994017857143 | Take profit: 2097.3565232142855 +2025-03-10 13:30:37,813 - INFO - CLOSED long at 2071.04 | PnL: 0.23% | $0.25 +2025-03-10 13:30:38,126 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6107678571425 | Take profit: 2104.1062732142855 +2025-03-10 13:30:38,931 - INFO - CLOSED long at 2070.35 | PnL: -0.13% | $-0.45 +2025-03-10 13:30:39,176 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.9838678571427 | Take profit: 2105.5069732142856 +2025-03-10 13:30:39,238 - INFO - CLOSED long at 2074.35 | PnL: -0.00% | $-0.20 +2025-03-10 13:30:39,330 - INFO - OPENED LONG at 2075.32 | Stop loss: 2064.929117857143 | Take profit: 2106.471223214286 +2025-03-10 13:30:39,698 - INFO - CLOSED long at 2065.45 | PnL: -0.48% | $-1.14 +2025-03-10 13:30:39,726 - INFO - OPENED LONG at 2068.1 | Stop loss: 2057.745217857143 | Take profit: 2099.1429232142855 +2025-03-10 13:30:39,823 - INFO - CLOSED long at 2070.1 | PnL: 0.10% | $-0.01 +2025-03-10 13:30:39,879 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.158217857143 | Take profit: 2096.503923214286 +2025-03-10 13:30:40,203 - INFO - CLOSED long at 2064.5 | PnL: -0.05% | $-0.29 +2025-03-10 13:30:40,227 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.9840678571427 | Take profit: 2097.3463732142854 +2025-03-10 13:30:40,462 - INFO - STOP LOSS hit for long at 2055.9840678571427 | PnL: -0.50% | $-1.17 +2025-03-10 13:30:40,490 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.949667857143 | Take profit: 2079.969573214286 +2025-03-10 13:30:41,722 - INFO - CLOSED long at 2074.05 | PnL: 1.21% | $2.14 +2025-03-10 13:30:42,074 - INFO - OPENED LONG at 2085.56 | Stop loss: 2075.117917857143 | Take profit: 2116.8648232142855 +2025-03-10 13:30:42,180 - INFO - TAKE PROFIT hit for long at 2116.8648232142855 | PnL: 1.50% | $2.76 +2025-03-10 13:30:42,260 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.8280178571426 | Take profit: 2171.6545232142857 +2025-03-10 13:30:42,640 - INFO - STOP LOSS hit for long at 2128.8280178571426 | PnL: -0.50% | $-1.21 +2025-03-10 13:30:42,809 - INFO - OPENED LONG at 2121.09 | Stop loss: 2110.470267857143 | Take profit: 2152.927773214286 +2025-03-10 13:30:43,224 - INFO - STOP LOSS hit for long at 2110.470267857143 | PnL: -0.50% | $-1.20 +2025-03-10 13:30:43,280 - INFO - OPENED SHORT at 2109.05 | Stop loss: 2119.609532142857 | Take profit: 2077.3928267857145 +2025-03-10 13:30:43,339 - INFO - CLOSED short at 2112.95 | PnL: -0.18% | $-0.56 +2025-03-10 13:30:43,431 - INFO - OPENED LONG at 2113.24 | Stop loss: 2102.6595178571424 | Take profit: 2144.9600232142852 +2025-03-10 13:30:43,899 - INFO - CLOSED long at 2100.5 | PnL: -0.60% | $-1.38 +2025-03-10 13:30:44,098 - INFO - OPENED LONG at 2102.29 | Stop loss: 2091.764267857143 | Take profit: 2133.8457732142856 +2025-03-10 13:30:44,896 - INFO - STOP LOSS hit for long at 2091.764267857143 | PnL: -0.50% | $-1.16 +2025-03-10 13:30:44,932 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.2321178571424 | Take profit: 2126.1622232142854 +2025-03-10 13:30:45,125 - INFO - STOP LOSS hit for long at 2084.2321178571424 | PnL: -0.50% | $-1.15 +2025-03-10 13:30:45,177 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.983517857143 | Take profit: 2119.7880232142857 +2025-03-10 13:30:45,913 - INFO - CLOSED long at 2087.0 | PnL: -0.07% | $-0.32 +2025-03-10 13:30:45,943 - INFO - OPENED LONG at 2087.47 | Stop loss: 2077.0183678571425 | Take profit: 2118.8034732142855 +2025-03-10 13:30:45,978 - INFO - CLOSED long at 2087.78 | PnL: 0.01% | $-0.16 +2025-03-10 13:30:46,040 - INFO - OPENED LONG at 2089.79 | Stop loss: 2079.326767857143 | Take profit: 2121.1582732142856 +2025-03-10 13:30:46,193 - INFO - CLOSED long at 2091.95 | PnL: 0.10% | $0.01 +2025-03-10 13:30:46,319 - INFO - OPENED LONG at 2101.64 | Stop loss: 2091.117517857143 | Take profit: 2133.186023214286 +2025-03-10 13:30:46,597 - INFO - CLOSED long at 2103.07 | PnL: 0.07% | $-0.06 +2025-03-10 13:30:46,597 - INFO - OPENED SHORT at 2103.07 | Stop loss: 2113.5996321428574 | Take profit: 2071.5025267857145 +2025-03-10 13:30:46,625 - INFO - CLOSED short at 2101.5 | PnL: 0.07% | $-0.05 +2025-03-10 13:30:46,626 - INFO - OPENED LONG at 2101.5 | Stop loss: 2090.9782178571427 | Take profit: 2133.0439232142858 +2025-03-10 13:30:46,690 - INFO - CLOSED long at 2103.64 | PnL: 0.10% | $0.00 +2025-03-10 13:30:47,114 - INFO - Trade Analysis: Win Rate=11.1% in uptrends, 0.0% in downtrends | Avg Win=$0.87, Avg Loss=$-0.56 +2025-03-10 13:30:47,115 - INFO - Episode 19: Reward=59.58, Balance=$94.53, Win Rate=26.7%, Trades=30, Episode PnL=$-4.37, Total PnL=$-130.03, Max Drawdown=7.1%, Pred Accuracy=98.9% +2025-03-10 13:30:47,508 - INFO - OPENED LONG at 2057.01 | Stop loss: 2046.710667857143 | Take profit: 2087.886573214286 +2025-03-10 13:30:47,721 - INFO - CLOSED long at 2064.61 | PnL: 0.37% | $0.54 +2025-03-10 13:30:47,722 - INFO - OPENED SHORT at 2064.61 | Stop loss: 2074.9473321428572 | Take profit: 2033.6194267857145 +2025-03-10 13:30:47,875 - INFO - CLOSED short at 2060.99 | PnL: 0.18% | $0.15 +2025-03-10 13:30:47,876 - INFO - OPENED LONG at 2060.99 | Stop loss: 2050.6707678571424 | Take profit: 2091.9262732142856 +2025-03-10 13:30:48,246 - INFO - CLOSED long at 2061.18 | PnL: 0.01% | $-0.18 +2025-03-10 13:30:48,297 - INFO - OPENED LONG at 2065.86 | Stop loss: 2055.516417857143 | Take profit: 2096.869323214286 +2025-03-10 13:30:48,355 - INFO - CLOSED long at 2068.11 | PnL: 0.11% | $0.02 +2025-03-10 13:30:48,411 - INFO - OPENED LONG at 2067.89 | Stop loss: 2057.536267857143 | Take profit: 2098.9297732142854 +2025-03-10 13:30:48,769 - INFO - CLOSED long at 2072.91 | PnL: 0.24% | $0.29 +2025-03-10 13:30:48,770 - INFO - OPENED SHORT at 2072.91 | Stop loss: 2083.288832142857 | Take profit: 2041.794926785714 +2025-03-10 13:30:48,797 - INFO - CLOSED short at 2072.33 | PnL: 0.03% | $-0.14 +2025-03-10 13:30:48,797 - INFO - OPENED LONG at 2072.33 | Stop loss: 2061.954067857143 | Take profit: 2103.4363732142856 +2025-03-10 13:30:48,945 - INFO - CLOSED long at 2072.8 | PnL: 0.02% | $-0.15 +2025-03-10 13:30:48,974 - INFO - OPENED LONG at 2070.79 | Stop loss: 2060.4217678571426 | Take profit: 2101.8732732142857 +2025-03-10 13:30:49,460 - INFO - CLOSED long at 2066.18 | PnL: -0.22% | $-0.64 +2025-03-10 13:30:49,483 - INFO - OPENED LONG at 2068.76 | Stop loss: 2058.401917857143 | Take profit: 2099.812823214286 +2025-03-10 13:30:49,597 - INFO - CLOSED long at 2069.7 | PnL: 0.05% | $-0.11 +2025-03-10 13:30:49,693 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.033717857143 | Take profit: 2101.477423214286 +2025-03-10 13:30:50,321 - INFO - CLOSED long at 2069.46 | PnL: -0.05% | $-0.29 +2025-03-10 13:30:50,637 - INFO - OPENED LONG at 2066.8 | Stop loss: 2056.451717857143 | Take profit: 2097.823423214286 +2025-03-10 13:30:51,368 - INFO - CLOSED long at 2067.84 | PnL: 0.05% | $-0.10 +2025-03-10 13:30:51,369 - INFO - OPENED SHORT at 2067.84 | Stop loss: 2078.193482142857 | Take profit: 2036.8009767857145 +2025-03-10 13:30:51,427 - INFO - CLOSED short at 2067.86 | PnL: -0.00% | $-0.20 +2025-03-10 13:30:51,428 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.506417857143 | Take profit: 2098.899323214286 +2025-03-10 13:30:51,706 - INFO - CLOSED long at 2067.8 | PnL: -0.00% | $-0.20 +2025-03-10 13:30:51,707 - INFO - OPENED SHORT at 2067.8 | Stop loss: 2078.1532821428573 | Take profit: 2036.7615767857144 +2025-03-10 13:30:51,898 - INFO - CLOSED short at 2066.15 | PnL: 0.08% | $-0.04 +2025-03-10 13:30:51,899 - INFO - OPENED LONG at 2066.15 | Stop loss: 2055.804967857143 | Take profit: 2097.163673214286 +2025-03-10 13:30:52,319 - INFO - CLOSED long at 2066.09 | PnL: -0.00% | $-0.20 +2025-03-10 13:30:52,319 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.4347321428577 | Take profit: 2035.0772267857144 +2025-03-10 13:30:52,392 - INFO - CLOSED short at 2064.08 | PnL: 0.10% | $-0.01 +2025-03-10 13:30:52,393 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.7453178571427 | Take profit: 2095.0626232142854 +2025-03-10 13:30:52,918 - INFO - CLOSED long at 2062.61 | PnL: -0.07% | $-0.34 +2025-03-10 13:30:52,918 - INFO - OPENED SHORT at 2062.61 | Stop loss: 2072.9373321428575 | Take profit: 2031.6494267857145 +2025-03-10 13:30:53,001 - INFO - CLOSED short at 2060.3 | PnL: 0.11% | $0.02 +2025-03-10 13:30:53,002 - INFO - OPENED LONG at 2060.3 | Stop loss: 2049.984217857143 | Take profit: 2091.2259232142856 +2025-03-10 13:30:54,508 - INFO - CLOSED long at 2066.34 | PnL: 0.29% | $0.38 +2025-03-10 13:30:54,539 - INFO - OPENED LONG at 2066.79 | Stop loss: 2056.441767857143 | Take profit: 2097.813273214286 +2025-03-10 13:30:55,037 - INFO - CLOSED long at 2067.44 | PnL: 0.03% | $-0.13 +2025-03-10 13:30:55,037 - INFO - OPENED SHORT at 2067.44 | Stop loss: 2077.791482142857 | Take profit: 2036.4069767857143 +2025-03-10 13:30:55,070 - INFO - CLOSED short at 2068.79 | PnL: -0.07% | $-0.32 +2025-03-10 13:30:55,071 - INFO - OPENED LONG at 2068.79 | Stop loss: 2058.431767857143 | Take profit: 2099.843273214286 +2025-03-10 13:30:55,218 - INFO - CLOSED long at 2065.7 | PnL: -0.15% | $-0.49 +2025-03-10 13:30:55,278 - INFO - OPENED LONG at 2063.95 | Stop loss: 2053.6159678571426 | Take profit: 2094.930673214286 +2025-03-10 13:30:56,060 - INFO - CLOSED long at 2071.61 | PnL: 0.37% | $0.53 +2025-03-10 13:30:56,439 - INFO - OPENED LONG at 2069.97 | Stop loss: 2059.6058678571426 | Take profit: 2101.0409732142853 +2025-03-10 13:30:57,552 - INFO - STOP LOSS hit for long at 2059.6058678571426 | PnL: -0.50% | $-1.17 +2025-03-10 13:30:57,599 - INFO - OPENED LONG at 2058.09 | Stop loss: 2047.785267857143 | Take profit: 2088.9827732142858 +2025-03-10 13:30:58,712 - INFO - CLOSED long at 2070.41 | PnL: 0.60% | $0.96 +2025-03-10 13:30:58,745 - INFO - OPENED LONG at 2073.49 | Stop loss: 2063.1082678571424 | Take profit: 2104.6137732142856 +2025-03-10 13:30:58,776 - INFO - CLOSED long at 2074.05 | PnL: 0.03% | $-0.14 +2025-03-10 13:30:58,870 - INFO - OPENED LONG at 2071.8 | Stop loss: 2061.426717857143 | Take profit: 2102.8984232142857 +2025-03-10 13:30:58,927 - INFO - CLOSED long at 2076.08 | PnL: 0.21% | $0.21 +2025-03-10 13:30:58,950 - INFO - OPENED LONG at 2077.61 | Stop loss: 2067.207667857143 | Take profit: 2108.7955732142855 +2025-03-10 13:30:59,061 - INFO - TAKE PROFIT hit for long at 2108.7955732142855 | PnL: 1.50% | $2.73 +2025-03-10 13:30:59,088 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.8280178571426 | Take profit: 2171.6545232142857 +2025-03-10 13:30:59,167 - INFO - CLOSED long at 2137.59 | PnL: -0.09% | $-0.38 +2025-03-10 13:30:59,167 - INFO - OPENED SHORT at 2137.59 | Stop loss: 2148.292232142857 | Take profit: 2105.5047267857144 +2025-03-10 13:30:59,257 - INFO - CLOSED short at 2142.68 | PnL: -0.24% | $-0.68 +2025-03-10 13:30:59,369 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.649217857143 | Take profit: 2159.230923214286 +2025-03-10 13:30:59,452 - INFO - CLOSED long at 2120.15 | PnL: -0.34% | $-0.87 +2025-03-10 13:30:59,556 - INFO - OPENED LONG at 2118.52 | Stop loss: 2107.913117857143 | Take profit: 2150.3192232142856 +2025-03-10 13:30:59,619 - INFO - CLOSED long at 2119.07 | PnL: 0.03% | $-0.15 +2025-03-10 13:30:59,648 - INFO - OPENED LONG at 2115.28 | Stop loss: 2104.689317857143 | Take profit: 2147.0306232142857 +2025-03-10 13:30:59,674 - INFO - CLOSED long at 2107.43 | PnL: -0.37% | $-0.93 +2025-03-10 13:30:59,820 - INFO - OPENED LONG at 2112.46 | Stop loss: 2101.883417857143 | Take profit: 2144.168323214286 +2025-03-10 13:30:59,907 - INFO - CLOSED long at 2120.81 | PnL: 0.40% | $0.57 +2025-03-10 13:30:59,932 - INFO - OPENED LONG at 2116.48 | Stop loss: 2105.883317857143 | Take profit: 2148.2486232142855 +2025-03-10 13:31:00,118 - INFO - STOP LOSS hit for long at 2105.883317857143 | PnL: -0.50% | $-1.18 +2025-03-10 13:31:00,175 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.5357178571426 | Take profit: 2121.3714232142856 +2025-03-10 13:31:00,233 - INFO - CLOSED long at 2098.1 | PnL: 0.39% | $0.56 +2025-03-10 13:31:00,233 - INFO - OPENED SHORT at 2098.1 | Stop loss: 2108.604782142857 | Take profit: 2066.607076785714 +2025-03-10 13:31:00,295 - INFO - CLOSED short at 2102.29 | PnL: -0.20% | $-0.58 +2025-03-10 13:31:00,381 - INFO - OPENED LONG at 2100.69 | Stop loss: 2090.1722678571427 | Take profit: 2132.221773214286 +2025-03-10 13:31:00,418 - INFO - CLOSED long at 2104.83 | PnL: 0.20% | $0.19 +2025-03-10 13:31:00,475 - INFO - OPENED LONG at 2100.74 | Stop loss: 2090.2220178571424 | Take profit: 2132.2725232142852 +2025-03-10 13:31:00,509 - INFO - CLOSED long at 2103.86 | PnL: 0.15% | $0.09 +2025-03-10 13:31:00,658 - INFO - OPENED LONG at 2098.39 | Stop loss: 2087.8837678571426 | Take profit: 2129.887273214286 +2025-03-10 13:31:00,927 - INFO - STOP LOSS hit for long at 2087.8837678571426 | PnL: -0.50% | $-1.16 +2025-03-10 13:31:00,967 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.983517857143 | Take profit: 2119.7880232142857 +2025-03-10 13:31:01,113 - INFO - CLOSED long at 2080.38 | PnL: -0.39% | $-0.93 +2025-03-10 13:31:01,162 - INFO - OPENED LONG at 2083.41 | Stop loss: 2072.9786678571427 | Take profit: 2114.6825732142856 +2025-03-10 13:31:01,317 - INFO - CLOSED long at 2084.72 | PnL: 0.06% | $-0.07 +2025-03-10 13:31:01,347 - INFO - OPENED LONG at 2085.83 | Stop loss: 2075.386567857143 | Take profit: 2117.138873214286 +2025-03-10 13:31:01,705 - INFO - CLOSED long at 2089.2 | PnL: 0.16% | $0.12 +2025-03-10 13:31:01,739 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.580467857143 | Take profit: 2122.437173214286 +2025-03-10 13:31:01,997 - INFO - CLOSED long at 2098.49 | PnL: 0.36% | $0.49 +2025-03-10 13:31:02,028 - INFO - OPENED LONG at 2099.89 | Stop loss: 2089.376267857143 | Take profit: 2131.4097732142855 +2025-03-10 13:31:02,252 - INFO - CLOSED long at 2103.07 | PnL: 0.15% | $0.10 +2025-03-10 13:31:02,405 - INFO - OPENED LONG at 2103.52 | Stop loss: 2092.9881178571427 | Take profit: 2135.094223214286 +2025-03-10 13:31:02,611 - INFO - CLOSED long at 2103.41 | PnL: -0.01% | $-0.20 +2025-03-10 13:31:02,612 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9413321428574 | Take profit: 2071.8374267857143 +2025-03-10 13:31:02,640 - INFO - CLOSED short at 2104.73 | PnL: -0.06% | $-0.31 +2025-03-10 13:31:02,641 - INFO - OPENED LONG at 2104.73 | Stop loss: 2094.192067857143 | Take profit: 2136.322373214286 +2025-03-10 13:31:02,781 - INFO - Trade Analysis: Win Rate=25.0% in uptrends, 0.0% in downtrends | Avg Win=$0.47, Avg Loss=$-0.41 +2025-03-10 13:31:02,782 - INFO - Episode 20: Reward=48.27, Balance=$95.64, Win Rate=36.2%, Trades=47, Episode PnL=$-4.18, Total PnL=$-134.39, Max Drawdown=5.5%, Pred Accuracy=98.9% +2025-03-10 13:31:02,938 - INFO - Model saved to checkpoints/trading_agent_episode_20.pt +2025-03-10 13:31:02,939 - INFO - Checkpoint saved at episode 20 +2025-03-10 13:31:02,940 - INFO - Reducing learning rate to 0.000090 +2025-03-10 13:31:03,044 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 13:31:03,045 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2402, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 13:31:03,488 - INFO - OPENED LONG at 2051.89 | Stop loss: 2041.6162678571427 | Take profit: 2082.6897732142857 +2025-03-10 13:31:04,728 - INFO - CLOSED long at 2073.73 | PnL: 1.06% | $1.92 +2025-03-10 13:31:04,872 - INFO - OPENED LONG at 2071.41 | Stop loss: 2061.0386678571426 | Take profit: 2102.502573214286 +2025-03-10 13:31:05,121 - INFO - CLOSED long at 2070.36 | PnL: -0.05% | $-0.31 +2025-03-10 13:31:05,153 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.5412178571432 | Take profit: 2099.954923214286 +2025-03-10 13:31:05,590 - INFO - CLOSED long at 2068.76 | PnL: -0.01% | $-0.22 +2025-03-10 13:31:05,728 - INFO - OPENED SHORT at 2068.51 | Stop loss: 2078.8668321428577 | Take profit: 2037.4609267857145 +2025-03-10 13:31:05,920 - INFO - CLOSED short at 2071.39 | PnL: -0.14% | $-0.48 +2025-03-10 13:31:05,920 - INFO - OPENED LONG at 2071.39 | Stop loss: 2061.018767857143 | Take profit: 2102.482273214285 +2025-03-10 13:31:07,106 - INFO - CLOSED long at 2070.7 | PnL: -0.03% | $-0.27 +2025-03-10 13:31:07,170 - INFO - OPENED LONG at 2070.73 | Stop loss: 2060.362067857143 | Take profit: 2101.812373214286 +2025-03-10 13:31:07,636 - INFO - CLOSED long at 2064.99 | PnL: -0.28% | $-0.75 +2025-03-10 13:31:07,636 - INFO - OPENED SHORT at 2064.99 | Stop loss: 2075.329232142857 | Take profit: 2033.993726785714 +2025-03-10 13:31:07,760 - INFO - CLOSED short at 2062.89 | PnL: 0.10% | $0.00 +2025-03-10 13:31:07,761 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.561267857143 | Take profit: 2093.8547732142856 +2025-03-10 13:31:08,116 - INFO - CLOSED long at 2066.09 | PnL: 0.16% | $0.11 +2025-03-10 13:31:08,117 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.4347321428577 | Take profit: 2035.0772267857144 +2025-03-10 13:31:08,224 - INFO - CLOSED short at 2062.71 | PnL: 0.16% | $0.13 +2025-03-10 13:31:08,224 - INFO - OPENED LONG at 2062.71 | Stop loss: 2052.382167857143 | Take profit: 2093.672073214286 +2025-03-10 13:31:08,382 - INFO - CLOSED long at 2060.9 | PnL: -0.09% | $-0.37 +2025-03-10 13:31:08,549 - INFO - OPENED LONG at 2064.7 | Stop loss: 2054.3622178571427 | Take profit: 2095.6919232142855 +2025-03-10 13:31:08,869 - INFO - CLOSED long at 2065.89 | PnL: 0.06% | $-0.08 +2025-03-10 13:31:08,951 - INFO - OPENED LONG at 2062.6 | Stop loss: 2052.2727178571427 | Take profit: 2093.5604232142855 +2025-03-10 13:31:09,896 - INFO - CLOSED long at 2067.33 | PnL: 0.23% | $0.26 +2025-03-10 13:31:10,009 - INFO - OPENED LONG at 2072.0 | Stop loss: 2061.6257178571427 | Take profit: 2103.1014232142857 +2025-03-10 13:31:10,579 - INFO - CLOSED long at 2067.33 | PnL: -0.23% | $-0.65 +2025-03-10 13:31:10,858 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.163217857143 | Take profit: 2095.488923214286 +2025-03-10 13:31:12,257 - INFO - CLOSED long at 2075.61 | PnL: 0.54% | $0.86 +2025-03-10 13:31:12,257 - INFO - OPENED SHORT at 2075.61 | Stop loss: 2086.002332142857 | Take profit: 2044.4544267857145 +2025-03-10 13:31:12,291 - INFO - CLOSED short at 2074.0 | PnL: 0.08% | $-0.04 +2025-03-10 13:31:12,291 - INFO - OPENED LONG at 2074.0 | Stop loss: 2063.615717857143 | Take profit: 2105.131423214286 +2025-03-10 13:31:12,351 - INFO - CLOSED long at 2069.97 | PnL: -0.19% | $-0.59 +2025-03-10 13:31:12,381 - INFO - OPENED LONG at 2067.7 | Stop loss: 2057.347217857143 | Take profit: 2098.7369232142855 +2025-03-10 13:31:12,903 - INFO - CLOSED long at 2063.98 | PnL: -0.18% | $-0.55 +2025-03-10 13:31:12,903 - INFO - OPENED SHORT at 2063.98 | Stop loss: 2074.314182142857 | Take profit: 2032.9988767857144 +2025-03-10 13:31:13,020 - INFO - CLOSED short at 2064.5 | PnL: -0.03% | $-0.25 +2025-03-10 13:31:13,020 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.163217857143 | Take profit: 2095.488923214286 +2025-03-10 13:31:13,108 - INFO - CLOSED long at 2060.7 | PnL: -0.18% | $-0.56 +2025-03-10 13:31:13,161 - INFO - OPENED LONG at 2059.2 | Stop loss: 2048.889717857143 | Take profit: 2090.1094232142855 +2025-03-10 13:31:13,320 - INFO - CLOSED long at 2049.5 | PnL: -0.47% | $-1.11 +2025-03-10 13:31:13,320 - INFO - OPENED SHORT at 2049.5 | Stop loss: 2059.761782142857 | Take profit: 2018.7360767857142 +2025-03-10 13:31:13,345 - INFO - CLOSED short at 2051.99 | PnL: -0.12% | $-0.43 +2025-03-10 13:31:13,346 - INFO - OPENED LONG at 2051.99 | Stop loss: 2041.7157678571427 | Take profit: 2082.791273214286 +2025-03-10 13:31:13,508 - INFO - CLOSED long at 2063.9 | PnL: 0.58% | $0.92 +2025-03-10 13:31:13,508 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.233782142857 | Take profit: 2032.9200767857144 +2025-03-10 13:31:13,565 - INFO - CLOSED short at 2062.43 | PnL: 0.07% | $-0.06 +2025-03-10 13:31:13,565 - INFO - OPENED LONG at 2062.43 | Stop loss: 2052.103567857143 | Take profit: 2093.3878732142853 +2025-03-10 13:31:14,342 - INFO - TAKE PROFIT hit for long at 2093.3878732142853 | PnL: 1.50% | $2.71 +2025-03-10 13:31:14,402 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.8280178571426 | Take profit: 2171.6545232142857 +2025-03-10 13:31:14,449 - INFO - CLOSED long at 2133.95 | PnL: -0.26% | $-0.72 +2025-03-10 13:31:14,744 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.534967857143 | Take profit: 2151.9736732142856 +2025-03-10 13:31:14,987 - INFO - STOP LOSS hit for long at 2109.534967857143 | PnL: -0.50% | $-1.19 +2025-03-10 13:31:15,104 - INFO - OPENED LONG at 2112.95 | Stop loss: 2102.3709678571427 | Take profit: 2144.6656732142856 +2025-03-10 13:31:15,443 - INFO - STOP LOSS hit for long at 2102.3709678571427 | PnL: -0.50% | $-1.17 +2025-03-10 13:31:15,475 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.5357178571426 | Take profit: 2121.3714232142856 +2025-03-10 13:31:15,731 - INFO - CLOSED long at 2100.69 | PnL: 0.51% | $0.79 +2025-03-10 13:31:15,845 - INFO - OPENED LONG at 2103.86 | Stop loss: 2093.326417857143 | Take profit: 2135.439323214286 +2025-03-10 13:31:16,209 - INFO - CLOSED long at 2092.46 | PnL: -0.54% | $-1.25 +2025-03-10 13:31:16,273 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.2321178571424 | Take profit: 2126.1622232142854 +2025-03-10 13:31:16,306 - INFO - CLOSED long at 2094.08 | PnL: -0.03% | $-0.25 +2025-03-10 13:31:16,306 - INFO - OPENED SHORT at 2094.08 | Stop loss: 2104.5646821428572 | Take profit: 2062.647376785714 +2025-03-10 13:31:16,336 - INFO - CLOSED short at 2088.35 | PnL: 0.27% | $0.33 +2025-03-10 13:31:16,337 - INFO - OPENED LONG at 2088.35 | Stop loss: 2077.893967857143 | Take profit: 2119.6966732142855 +2025-03-10 13:31:18,443 - INFO - CLOSED long at 2103.52 | PnL: 0.73% | $1.20 +2025-03-10 13:31:18,443 - INFO - OPENED SHORT at 2103.52 | Stop loss: 2114.0518821428573 | Take profit: 2071.9457767857143 +2025-03-10 13:31:18,513 - INFO - CLOSED short at 2105.21 | PnL: -0.08% | $-0.35 +2025-03-10 13:31:18,513 - INFO - OPENED LONG at 2105.21 | Stop loss: 2094.669667857143 | Take profit: 2136.8095732142856 +2025-03-10 13:31:18,851 - INFO - Trade Analysis: Win Rate=33.3% in uptrends, 0.0% in downtrends | Avg Win=$0.84, Avg Loss=$-0.53 +2025-03-10 13:31:18,853 - INFO - Episode 21: Reward=52.90, Balance=$97.60, Win Rate=33.3%, Trades=33, Episode PnL=$-2.83, Total PnL=$-136.79, Max Drawdown=5.2%, Pred Accuracy=98.8% +2025-03-10 13:31:18,853 - INFO - Reducing learning rate to 0.000081 +2025-03-10 13:31:19,119 - INFO - OPENED LONG at 2049.89 | Stop loss: 2039.6262678571427 | Take profit: 2080.659773214286 +2025-03-10 13:31:19,217 - INFO - CLOSED long at 2051.89 | PnL: 0.10% | $-0.00 +2025-03-10 13:31:19,218 - INFO - OPENED SHORT at 2051.89 | Stop loss: 2062.163732142857 | Take profit: 2021.090226785714 +2025-03-10 13:31:19,248 - INFO - CLOSED short at 2052.3 | PnL: -0.02% | $-0.24 +2025-03-10 13:31:19,249 - INFO - OPENED LONG at 2052.3 | Stop loss: 2042.024217857143 | Take profit: 2083.105923214286 +2025-03-10 13:31:19,440 - INFO - CLOSED long at 2059.7 | PnL: 0.36% | $0.52 +2025-03-10 13:31:19,473 - INFO - OPENED LONG at 2061.49 | Stop loss: 2051.168267857143 | Take profit: 2092.4337732142853 +2025-03-10 13:31:19,613 - INFO - CLOSED long at 2064.69 | PnL: 0.16% | $0.11 +2025-03-10 13:31:19,645 - INFO - OPENED LONG at 2063.01 | Stop loss: 2052.680667857143 | Take profit: 2093.976573214286 +2025-03-10 13:31:19,732 - INFO - CLOSED long at 2060.0 | PnL: -0.15% | $-0.49 +2025-03-10 13:31:19,786 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.561267857143 | Take profit: 2093.8547732142856 +2025-03-10 13:31:19,879 - INFO - CLOSED long at 2057.8 | PnL: -0.25% | $-0.69 +2025-03-10 13:31:19,880 - INFO - OPENED SHORT at 2057.8 | Stop loss: 2068.1032821428576 | Take profit: 2026.9115767857145 +2025-03-10 13:31:19,967 - INFO - CLOSED short at 2058.11 | PnL: -0.02% | $-0.23 +2025-03-10 13:31:19,968 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.805167857143 | Take profit: 2089.003073214286 +2025-03-10 13:31:20,233 - INFO - CLOSED long at 2071.63 | PnL: 0.66% | $1.09 +2025-03-10 13:31:20,233 - INFO - OPENED SHORT at 2071.63 | Stop loss: 2082.0024321428573 | Take profit: 2040.5341267857145 +2025-03-10 13:31:20,313 - INFO - CLOSED short at 2068.65 | PnL: 0.14% | $0.09 +2025-03-10 13:31:20,313 - INFO - OPENED LONG at 2068.65 | Stop loss: 2058.292467857143 | Take profit: 2099.7011732142855 +2025-03-10 13:31:21,375 - INFO - CLOSED long at 2068.51 | PnL: -0.01% | $-0.21 +2025-03-10 13:31:21,376 - INFO - OPENED SHORT at 2068.51 | Stop loss: 2078.8668321428577 | Take profit: 2037.4609267857145 +2025-03-10 13:31:21,530 - INFO - CLOSED short at 2071.4 | PnL: -0.14% | $-0.48 +2025-03-10 13:31:21,530 - INFO - OPENED LONG at 2071.4 | Stop loss: 2061.028717857143 | Take profit: 2102.4924232142857 +2025-03-10 13:31:23,757 - INFO - CLOSED long at 2064.99 | PnL: -0.31% | $-0.81 +2025-03-10 13:31:23,757 - INFO - OPENED SHORT at 2064.99 | Stop loss: 2075.329232142857 | Take profit: 2033.993726785714 +2025-03-10 13:31:23,790 - INFO - CLOSED short at 2065.83 | PnL: -0.04% | $-0.28 +2025-03-10 13:31:23,790 - INFO - OPENED LONG at 2065.83 | Stop loss: 2055.4865678571427 | Take profit: 2096.8388732142853 +2025-03-10 13:31:25,948 - INFO - STOP LOSS hit for long at 2055.4865678571427 | PnL: -0.50% | $-1.17 +2025-03-10 13:31:26,070 - INFO - OPENED LONG at 2056.71 | Stop loss: 2046.412167857143 | Take profit: 2087.5820732142856 +2025-03-10 13:31:31,849 - INFO - CLOSED long at 2071.89 | PnL: 0.74% | $1.23 +2025-03-10 13:31:32,103 - INFO - OPENED LONG at 2103.02 | Stop loss: 2092.4906178571428 | Take profit: 2134.586723214286 +2025-03-10 13:31:32,186 - INFO - TAKE PROFIT hit for long at 2134.586723214286 | PnL: 1.50% | $2.74 +2025-03-10 13:31:32,214 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.106817857143 | Take profit: 2163.7781232142856 +2025-03-10 13:31:32,238 - INFO - CLOSED long at 2133.95 | PnL: 0.10% | $0.00 +2025-03-10 13:31:32,350 - INFO - OPENED LONG at 2142.68 | Stop loss: 2131.9523178571426 | Take profit: 2174.841623214286 +2025-03-10 13:31:32,542 - INFO - STOP LOSS hit for long at 2131.9523178571426 | PnL: -0.50% | $-1.21 +2025-03-10 13:31:32,609 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.032267857143 | Take profit: 2160.6417732142854 +2025-03-10 13:31:32,695 - INFO - STOP LOSS hit for long at 2118.032267857143 | PnL: -0.50% | $-1.19 +2025-03-10 13:31:32,725 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3160678571426 | Take profit: 2151.750373214286 +2025-03-10 13:31:32,985 - INFO - CLOSED long at 2115.28 | PnL: -0.22% | $-0.63 +2025-03-10 13:31:32,985 - INFO - OPENED SHORT at 2115.28 | Stop loss: 2125.8706821428573 | Take profit: 2083.5293767857147 +2025-03-10 13:31:33,019 - INFO - CLOSED short at 2107.43 | PnL: 0.37% | $0.53 +2025-03-10 13:31:33,019 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.878567857143 | Take profit: 2139.0628732142854 +2025-03-10 13:31:33,642 - INFO - STOP LOSS hit for long at 2096.878567857143 | PnL: -0.50% | $-1.18 +2025-03-10 13:31:33,838 - INFO - OPENED LONG at 2099.25 | Stop loss: 2088.739467857143 | Take profit: 2130.7601732142857 +2025-03-10 13:31:34,084 - INFO - CLOSED long at 2101.51 | PnL: 0.11% | $0.01 +2025-03-10 13:31:34,372 - INFO - OPENED LONG at 2088.35 | Stop loss: 2077.893967857143 | Take profit: 2119.6966732142855 +2025-03-10 13:31:34,701 - INFO - CLOSED long at 2086.57 | PnL: -0.09% | $-0.36 +2025-03-10 13:31:34,754 - INFO - OPENED LONG at 2084.72 | Stop loss: 2074.2821178571426 | Take profit: 2116.0122232142853 +2025-03-10 13:31:34,933 - INFO - CLOSED long at 2087.0 | PnL: 0.11% | $0.02 +2025-03-10 13:31:35,113 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.580467857143 | Take profit: 2122.437173214286 +2025-03-10 13:31:36,040 - INFO - Trade Analysis: Win Rate=27.3% in uptrends, 0.0% in downtrends | Avg Win=$0.63, Avg Loss=$-0.61 +2025-03-10 13:31:36,041 - INFO - Episode 22: Reward=72.43, Balance=$97.19, Win Rate=40.0%, Trades=25, Episode PnL=$-1.57, Total PnL=$-139.60, Max Drawdown=4.0%, Pred Accuracy=98.9% +2025-03-10 13:31:36,206 - INFO - Model saved to models/trading_agent_best_winrate.pt +2025-03-10 13:31:36,207 - INFO - New best win rate model saved: 40.0% +2025-03-10 13:31:36,207 - INFO - Reducing learning rate to 0.000073 +2025-03-10 13:31:36,560 - INFO - OPENED LONG at 2052.3 | Stop loss: 2042.024217857143 | Take profit: 2083.105923214286 +2025-03-10 13:31:37,071 - INFO - CLOSED long at 2060.0 | PnL: 0.38% | $0.55 +2025-03-10 13:31:37,073 - INFO - OPENED SHORT at 2060.0 | Stop loss: 2070.3142821428573 | Take profit: 2029.0785767857142 +2025-03-10 13:31:37,108 - INFO - CLOSED short at 2061.89 | PnL: -0.09% | $-0.38 +2025-03-10 13:31:37,109 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.566267857143 | Take profit: 2092.8397732142857 +2025-03-10 13:31:37,890 - INFO - CLOSED long at 2070.26 | PnL: 0.41% | $0.61 +2025-03-10 13:31:37,920 - INFO - OPENED LONG at 2071.44 | Stop loss: 2061.068517857143 | Take profit: 2102.533023214286 +2025-03-10 13:31:39,290 - INFO - CLOSED long at 2069.96 | PnL: -0.07% | $-0.34 +2025-03-10 13:31:39,291 - INFO - OPENED SHORT at 2069.96 | Stop loss: 2080.324082142857 | Take profit: 2038.8891767857144 +2025-03-10 13:31:39,423 - INFO - CLOSED short at 2072.75 | PnL: -0.13% | $-0.47 +2025-03-10 13:31:39,425 - INFO - OPENED LONG at 2072.75 | Stop loss: 2062.371967857143 | Take profit: 2103.8626732142857 +2025-03-10 13:31:40,038 - INFO - CLOSED long at 2067.89 | PnL: -0.23% | $-0.66 +2025-03-10 13:31:40,069 - INFO - OPENED LONG at 2068.58 | Stop loss: 2058.2228178571427 | Take profit: 2099.6301232142855 +2025-03-10 13:31:41,969 - INFO - CLOSED long at 2062.6 | PnL: -0.29% | $-0.77 +2025-03-10 13:31:42,135 - INFO - OPENED LONG at 2059.16 | Stop loss: 2048.849917857143 | Take profit: 2090.0688232142857 +2025-03-10 13:31:43,000 - INFO - CLOSED long at 2069.79 | PnL: 0.52% | $0.81 +2025-03-10 13:31:43,124 - INFO - OPENED LONG at 2075.01 | Stop loss: 2064.620667857143 | Take profit: 2106.156573214286 +2025-03-10 13:31:43,287 - INFO - CLOSED long at 2073.23 | PnL: -0.09% | $-0.37 +2025-03-10 13:31:43,398 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.327267857143 | Take profit: 2100.7567732142857 +2025-03-10 13:31:43,450 - INFO - CLOSED long at 2067.44 | PnL: -0.11% | $-0.41 +2025-03-10 13:31:43,450 - INFO - OPENED SHORT at 2067.44 | Stop loss: 2077.791482142857 | Take profit: 2036.4069767857143 +2025-03-10 13:31:43,567 - INFO - CLOSED short at 2069.87 | PnL: -0.12% | $-0.43 +2025-03-10 13:31:43,568 - INFO - OPENED LONG at 2069.87 | Stop loss: 2059.506367857143 | Take profit: 2100.9394732142855 +2025-03-10 13:31:43,823 - INFO - CLOSED long at 2063.97 | PnL: -0.29% | $-0.75 +2025-03-10 13:31:43,878 - INFO - OPENED LONG at 2065.3 | Stop loss: 2054.959217857143 | Take profit: 2096.300923214286 +2025-03-10 13:31:45,227 - INFO - CLOSED long at 2067.0 | PnL: 0.08% | $-0.03 +2025-03-10 13:31:45,390 - INFO - OPENED LONG at 2068.1 | Stop loss: 2057.745217857143 | Take profit: 2099.1429232142855 +2025-03-10 13:31:45,417 - INFO - CLOSED long at 2069.0 | PnL: 0.04% | $-0.11 +2025-03-10 13:31:45,418 - INFO - OPENED SHORT at 2069.0 | Stop loss: 2079.3592821428574 | Take profit: 2037.9435767857144 +2025-03-10 13:31:45,461 - INFO - CLOSED short at 2070.19 | PnL: -0.06% | $-0.30 +2025-03-10 13:31:45,461 - INFO - OPENED LONG at 2070.19 | Stop loss: 2059.824767857143 | Take profit: 2101.264273214286 +2025-03-10 13:31:45,595 - INFO - CLOSED long at 2065.8 | PnL: -0.21% | $-0.60 +2025-03-10 13:31:45,596 - INFO - OPENED SHORT at 2065.8 | Stop loss: 2076.1432821428575 | Take profit: 2034.7915767857146 +2025-03-10 13:31:45,628 - INFO - CLOSED short at 2065.07 | PnL: 0.04% | $-0.12 +2025-03-10 13:31:45,628 - INFO - OPENED LONG at 2065.07 | Stop loss: 2054.730367857143 | Take profit: 2096.067473214286 +2025-03-10 13:31:45,680 - INFO - CLOSED long at 2063.39 | PnL: -0.08% | $-0.35 +2025-03-10 13:31:45,680 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.721232142857 | Take profit: 2032.4177267857142 +2025-03-10 13:31:45,737 - INFO - CLOSED short at 2063.98 | PnL: -0.03% | $-0.24 +2025-03-10 13:31:45,738 - INFO - OPENED LONG at 2063.98 | Stop loss: 2053.645817857143 | Take profit: 2094.9611232142856 +2025-03-10 13:31:46,094 - INFO - STOP LOSS hit for long at 2053.645817857143 | PnL: -0.50% | $-1.14 +2025-03-10 13:31:46,133 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.949667857143 | Take profit: 2079.969573214286 +2025-03-10 13:31:47,737 - INFO - TAKE PROFIT hit for long at 2079.969573214286 | PnL: 1.50% | $2.63 +2025-03-10 13:31:47,765 - INFO - OPENED LONG at 2090.49 | Stop loss: 2080.023267857143 | Take profit: 2121.8687732142853 +2025-03-10 13:31:47,822 - INFO - TAKE PROFIT hit for long at 2121.8687732142853 | PnL: 1.50% | $2.70 +2025-03-10 13:31:47,851 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.8280178571426 | Take profit: 2171.6545232142857 +2025-03-10 13:31:47,997 - INFO - CLOSED long at 2141.3 | PnL: 0.08% | $-0.04 +2025-03-10 13:31:48,096 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.0918178571433 | Take profit: 2166.8231232142857 +2025-03-10 13:31:48,232 - INFO - STOP LOSS hit for long at 2124.0918178571433 | PnL: -0.50% | $-1.19 +2025-03-10 13:31:48,376 - INFO - OPENED LONG at 2121.4 | Stop loss: 2110.778717857143 | Take profit: 2153.2424232142857 +2025-03-10 13:31:48,533 - INFO - STOP LOSS hit for long at 2110.778717857143 | PnL: -0.50% | $-1.18 +2025-03-10 13:31:48,749 - INFO - OPENED LONG at 2112.46 | Stop loss: 2101.883417857143 | Take profit: 2144.168323214286 +2025-03-10 13:31:49,059 - INFO - CLOSED long at 2106.49 | PnL: -0.28% | $-0.74 +2025-03-10 13:31:49,059 - INFO - OPENED SHORT at 2106.49 | Stop loss: 2117.036732142857 | Take profit: 2074.871226785714 +2025-03-10 13:31:49,169 - INFO - CLOSED short at 2103.33 | PnL: 0.15% | $0.10 +2025-03-10 13:31:49,169 - INFO - OPENED LONG at 2103.33 | Stop loss: 2092.7990678571427 | Take profit: 2134.9013732142853 +2025-03-10 13:31:49,237 - INFO - STOP LOSS hit for long at 2092.7990678571427 | PnL: -0.50% | $-1.15 +2025-03-10 13:31:49,270 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0180678571433 | Take profit: 2131.044373214286 +2025-03-10 13:44:50,633 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 13:44:50,664 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 13:44:50,665 - INFO - Fetching initial data for ETH/USDT +2025-03-10 13:44:54,388 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 13:44:54,409 - INFO - Initialized environment with 500 candles +2025-03-10 13:44:57,591 - INFO - Starting training for 1000 episodes... +2025-03-10 13:44:57,592 - INFO - Starting training on device: cuda +2025-03-10 13:44:57,593 - INFO - Loading best model from models/trading_agent_best_pnl.pt to resume training +2025-03-10 13:44:57,593 - INFO - Loading model from models/trading_agent_best_pnl.pt +2025-03-10 13:44:57,793 - INFO - Model loaded successfully with weights_only=True +2025-03-10 13:44:57,793 - INFO - Resumed with best metrics - Reward: 202.74, PnL: $-1.29, Win Rate: 38.7% +2025-03-10 13:44:58,133 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:44:58,151 - INFO - CLOSED long at 2058.11 | PnL: -0.23% | $-0.66 +2025-03-10 13:44:58,156 - INFO - OPENED LONG at 2061.18 | Stop loss: 2050.859157142857 | Take profit: 2092.120114285714 +2025-03-10 13:44:58,231 - INFO - CLOSED long at 2072.33 | PnL: 0.54% | $0.87 +2025-03-10 13:44:58,231 - INFO - OPENED SHORT at 2072.33 | Stop loss: 2082.706592857143 | Take profit: 2041.2226357142856 +2025-03-10 13:44:58,237 - INFO - CLOSED short at 2071.38 | PnL: 0.05% | $-0.11 +2025-03-10 13:44:58,237 - INFO - OPENED LONG at 2071.38 | Stop loss: 2061.0081571428573 | Take profit: 2102.4731142857145 +2025-03-10 13:44:58,283 - INFO - CLOSED long at 2067.6 | PnL: -0.18% | $-0.56 +2025-03-10 13:44:58,286 - INFO - OPENED LONG at 2067.51 | Stop loss: 2057.1575071428574 | Take profit: 2098.5450642857145 +2025-03-10 13:44:58,330 - INFO - CLOSED long at 2070.4 | PnL: 0.14% | $0.08 +2025-03-10 13:44:58,334 - INFO - OPENED LONG at 2071.4 | Stop loss: 2061.0280571428575 | Take profit: 2102.4934142857146 +2025-03-10 13:44:58,882 - INFO - CLOSED long at 2065.26 | PnL: -0.30% | $-0.78 +2025-03-10 13:44:59,670 - INFO - OPENED SHORT at 2070.04 | Stop loss: 2080.405142857143 | Take profit: 2038.9669857142858 +2025-03-10 13:44:59,698 - INFO - CLOSED short at 2067.8 | PnL: 0.11% | $0.02 +2025-03-10 13:44:59,876 - INFO - OPENED SHORT at 2065.83 | Stop loss: 2076.1740928571426 | Take profit: 2034.8201357142857 +2025-03-10 13:45:00,374 - INFO - CLOSED short at 2062.71 | PnL: 0.15% | $0.10 +2025-03-10 13:45:00,375 - INFO - OPENED LONG at 2062.71 | Stop loss: 2052.381507142857 | Take profit: 2093.673064285714 +2025-03-10 13:45:00,403 - INFO - CLOSED long at 2062.89 | PnL: 0.01% | $-0.18 +2025-03-10 13:45:00,403 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.219392857143 | Take profit: 2031.9242357142857 +2025-03-10 13:45:00,432 - INFO - CLOSED short at 2064.5 | PnL: -0.08% | $-0.35 +2025-03-10 13:45:00,433 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.162557142857 | Take profit: 2095.4899142857143 +2025-03-10 13:45:00,497 - INFO - CLOSED long at 2061.6 | PnL: -0.14% | $-0.47 +2025-03-10 13:45:00,497 - INFO - OPENED SHORT at 2061.6 | Stop loss: 2071.922942857143 | Take profit: 2030.6535857142858 +2025-03-10 13:45:00,593 - INFO - CLOSED short at 2058.89 | PnL: 0.13% | $0.06 +2025-03-10 13:45:00,593 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.580607142857 | Take profit: 2089.795764285714 +2025-03-10 13:45:00,635 - INFO - CLOSED long at 2059.3 | PnL: 0.02% | $-0.16 +2025-03-10 13:45:00,635 - INFO - OPENED SHORT at 2059.3 | Stop loss: 2069.6114428571427 | Take profit: 2028.3880857142858 +2025-03-10 13:45:00,666 - INFO - CLOSED short at 2060.31 | PnL: -0.05% | $-0.29 +2025-03-10 13:45:00,705 - INFO - OPENED LONG at 2061.8 | Stop loss: 2051.4760571428574 | Take profit: 2092.7494142857145 +2025-03-10 13:45:00,828 - INFO - CLOSED long at 2060.91 | PnL: -0.04% | $-0.28 +2025-03-10 13:45:00,829 - INFO - OPENED SHORT at 2060.91 | Stop loss: 2071.2294928571428 | Take profit: 2029.9739357142855 +2025-03-10 13:45:00,924 - INFO - CLOSED short at 2061.13 | PnL: -0.01% | $-0.21 +2025-03-10 13:45:00,924 - INFO - OPENED LONG at 2061.13 | Stop loss: 2050.8094071428573 | Take profit: 2092.0693642857145 +2025-03-10 13:45:01,026 - INFO - CLOSED long at 2064.1 | PnL: 0.14% | $0.08 +2025-03-10 13:45:01,028 - INFO - OPENED SHORT at 2064.1 | Stop loss: 2074.435442857143 | Take profit: 2033.1160857142856 +2025-03-10 13:45:01,076 - INFO - CLOSED short at 2065.36 | PnL: -0.06% | $-0.31 +2025-03-10 13:45:01,077 - INFO - OPENED LONG at 2065.36 | Stop loss: 2055.0182571428572 | Take profit: 2096.362814285714 +2025-03-10 13:45:01,292 - INFO - CLOSED long at 2062.6 | PnL: -0.13% | $-0.45 +2025-03-10 13:45:01,292 - INFO - OPENED SHORT at 2062.6 | Stop loss: 2072.927942857143 | Take profit: 2031.6385857142857 +2025-03-10 13:45:01,342 - INFO - CLOSED short at 2061.7 | PnL: 0.04% | $-0.11 +2025-03-10 13:45:01,343 - INFO - OPENED LONG at 2061.7 | Stop loss: 2051.3765571428567 | Take profit: 2092.647914285714 +2025-03-10 13:45:02,800 - INFO - CLOSED long at 2068.15 | PnL: 0.31% | $0.41 +2025-03-10 13:45:03,648 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.947892857143 | Take profit: 2037.5387357142858 +2025-03-10 13:45:03,679 - INFO - CLOSED short at 2071.59 | PnL: -0.15% | $-0.47 +2025-03-10 13:45:04,408 - INFO - OPENED SHORT at 2073.99 | Stop loss: 2084.3748928571426 | Take profit: 2042.8577357142854 +2025-03-10 13:45:05,153 - INFO - CLOSED short at 2065.8 | PnL: 0.39% | $0.56 +2025-03-10 13:45:05,153 - INFO - OPENED LONG at 2065.8 | Stop loss: 2055.4560571428574 | Take profit: 2096.8094142857144 +2025-03-10 13:45:05,861 - INFO - STOP LOSS hit for long at 2055.4560571428574 | PnL: -0.50% | $-1.15 +2025-03-10 13:45:06,005 - INFO - OPENED LONG at 2057.11 | Stop loss: 2046.8095071428575 | Take profit: 2087.9890642857144 +2025-03-10 13:45:06,298 - INFO - CLOSED long at 2066.59 | PnL: 0.46% | $0.69 +2025-03-10 13:45:06,622 - INFO - OPENED LONG at 2069.81 | Stop loss: 2059.446007142857 | Take profit: 2100.8795642857144 +2025-03-10 13:45:06,676 - INFO - CLOSED long at 2070.41 | PnL: 0.03% | $-0.14 +2025-03-10 13:45:06,847 - INFO - OPENED LONG at 2074.9 | Stop loss: 2064.510557142857 | Take profit: 2106.0459142857144 +2025-03-10 13:45:07,096 - INFO - TAKE PROFIT hit for long at 2106.0459142857144 | PnL: 1.50% | $2.68 +2025-03-10 13:45:07,124 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.827357142857 | Take profit: 2171.655514285714 +2025-03-10 13:45:07,445 - INFO - STOP LOSS hit for long at 2128.827357142857 | PnL: -0.50% | $-1.18 +2025-03-10 13:45:07,690 - INFO - OPENED SHORT at 2121.4 | Stop loss: 2132.021942857143 | Take profit: 2089.556585714286 +2025-03-10 13:45:07,716 - INFO - CLOSED short at 2118.52 | PnL: 0.14% | $0.07 +2025-03-10 13:45:07,792 - INFO - OPENED LONG at 2115.28 | Stop loss: 2104.688657142857 | Take profit: 2147.0316142857146 +2025-03-10 13:45:07,855 - INFO - CLOSED long at 2110.6 | PnL: -0.22% | $-0.62 +2025-03-10 13:45:08,543 - INFO - OPENED SHORT at 2102.29 | Stop loss: 2112.816392857143 | Take profit: 2070.733235714286 +2025-03-10 13:45:08,640 - INFO - CLOSED short at 2104.83 | PnL: -0.12% | $-0.43 +2025-03-10 13:45:08,665 - INFO - OPENED SHORT at 2106.39 | Stop loss: 2116.936892857143 | Take profit: 2074.7717357142856 +2025-03-10 13:45:09,051 - INFO - CLOSED short at 2092.46 | PnL: 0.66% | $1.08 +2025-03-10 13:45:09,078 - INFO - OPENED LONG at 2091.1 | Stop loss: 2080.6295571428573 | Take profit: 2122.488914285714 +2025-03-10 13:45:09,321 - INFO - CLOSED long at 2085.3 | PnL: -0.28% | $-0.73 +2025-03-10 13:45:09,345 - INFO - OPENED LONG at 2082.44 | Stop loss: 2072.0128571428572 | Take profit: 2113.6990142857144 +2025-03-10 13:45:09,806 - INFO - CLOSED long at 2089.96 | PnL: 0.36% | $0.50 +2025-03-10 13:45:09,807 - INFO - OPENED SHORT at 2089.96 | Stop loss: 2100.424742857143 | Take profit: 2058.588185714286 +2025-03-10 13:45:10,071 - INFO - CLOSED short at 2091.05 | PnL: -0.05% | $-0.29 +2025-03-10 13:45:10,071 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.579807142857 | Take profit: 2122.4381642857143 +2025-03-10 13:45:10,101 - INFO - CLOSED long at 2091.05 | PnL: 0.00% | $-0.19 +2025-03-10 13:45:10,101 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.5201928571432 | Take profit: 2059.6618357142856 +2025-03-10 13:45:10,123 - INFO - CLOSED short at 2091.95 | PnL: -0.04% | $-0.28 +2025-03-10 13:45:10,155 - INFO - OPENED SHORT at 2094.7 | Stop loss: 2105.1884428571425 | Take profit: 2063.2570857142855 +2025-03-10 13:45:10,470 - INFO - STOP LOSS hit for short at 2105.1884428571425 | PnL: -0.50% | $-1.15 +2025-03-10 13:45:10,497 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.012342857143 | Take profit: 2071.905385714286 +2025-03-10 13:45:10,998 - INFO - CLOSED short at 2102.7 | PnL: 0.04% | $-0.12 +2025-03-10 13:45:10,999 - INFO - OPENED LONG at 2102.7 | Stop loss: 2092.171557142857 | Take profit: 2134.262914285714 +2025-03-10 13:45:11,614 - INFO - CLOSED long at 2110.99 | PnL: 0.39% | $0.56 +2025-03-10 13:45:11,615 - INFO - OPENED SHORT at 2110.99 | Stop loss: 2121.559892857143 | Take profit: 2079.3027357142855 +2025-03-10 13:45:11,670 - INFO - CLOSED short at 2111.19 | PnL: -0.01% | $-0.21 +2025-03-10 13:45:11,672 - INFO - OPENED LONG at 2111.19 | Stop loss: 2100.619107142857 | Take profit: 2142.8802642857145 +2025-03-10 13:45:11,698 - INFO - CLOSED long at 2112.61 | PnL: 0.07% | $-0.06 +2025-03-10 13:45:11,699 - INFO - OPENED SHORT at 2112.61 | Stop loss: 2123.187992857143 | Take profit: 2080.898435714286 +2025-03-10 13:45:11,935 - INFO - CLOSED short at 2114.71 | PnL: -0.10% | $-0.38 +2025-03-10 13:45:11,935 - INFO - OPENED LONG at 2114.71 | Stop loss: 2104.121507142857 | Take profit: 2146.4530642857144 +2025-03-10 13:45:11,984 - INFO - CLOSED long at 2117.6 | PnL: 0.14% | $0.07 +2025-03-10 13:45:11,984 - INFO - OPENED SHORT at 2117.6 | Stop loss: 2128.2029428571427 | Take profit: 2085.8135857142856 +2025-03-10 13:45:12,005 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.52, Avg Loss=$-0.43 +2025-03-10 13:45:12,006 - INFO - Episode 0: Reward=-111.74, Balance=$95.49, Win Rate=34.1%, Trades=44, Episode PnL=$-4.80, Total PnL=$-4.51, Max Drawdown=4.4%, Pred Accuracy=96.6% +2025-03-10 13:45:12,155 - INFO - Model saved to checkpoints/trading_agent_episode_0.pt +2025-03-10 13:45:12,157 - INFO - Checkpoint saved at episode 0 +2025-03-10 13:45:12,357 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 13:45:12,359 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2405, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 13:45:12,986 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:45:13,018 - INFO - CLOSED long at 2060.31 | PnL: -0.13% | $-0.45 +2025-03-10 13:45:13,018 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.6264928571427 | Take profit: 2029.3829357142856 +2025-03-10 13:45:13,053 - INFO - CLOSED short at 2059.49 | PnL: 0.04% | $-0.12 +2025-03-10 13:45:13,054 - INFO - OPENED LONG at 2059.49 | Stop loss: 2049.177607142857 | Take profit: 2090.404764285714 +2025-03-10 13:45:13,232 - INFO - CLOSED long at 2064.32 | PnL: 0.23% | $0.27 +2025-03-10 13:45:13,280 - INFO - OPENED SHORT at 2070.58 | Stop loss: 2080.9478428571424 | Take profit: 2039.4988857142857 +2025-03-10 13:45:13,563 - INFO - CLOSED short at 2067.9 | PnL: 0.13% | $0.06 +2025-03-10 13:45:13,587 - INFO - OPENED SHORT at 2067.69 | Stop loss: 2078.0433928571433 | Take profit: 2036.6522357142858 +2025-03-10 13:45:13,675 - INFO - CLOSED short at 2075.1 | PnL: -0.36% | $-0.91 +2025-03-10 13:45:13,675 - INFO - OPENED LONG at 2075.1 | Stop loss: 2064.709557142857 | Take profit: 2106.248914285714 +2025-03-10 13:45:13,700 - INFO - CLOSED long at 2072.91 | PnL: -0.11% | $-0.40 +2025-03-10 13:45:13,700 - INFO - OPENED SHORT at 2072.91 | Stop loss: 2083.2894928571427 | Take profit: 2041.7939357142857 +2025-03-10 13:45:14,142 - INFO - CLOSED short at 2068.9 | PnL: 0.19% | $0.18 +2025-03-10 13:45:14,713 - INFO - OPENED SHORT at 2069.7 | Stop loss: 2080.0634428571425 | Take profit: 2038.6320857142855 +2025-03-10 13:45:14,741 - INFO - CLOSED short at 2070.4 | PnL: -0.03% | $-0.26 +2025-03-10 13:45:14,766 - INFO - OPENED LONG at 2069.96 | Stop loss: 2059.595257142857 | Take profit: 2101.0318142857145 +2025-03-10 13:45:15,166 - INFO - CLOSED long at 2069.46 | PnL: -0.02% | $-0.24 +2025-03-10 13:45:15,896 - INFO - OPENED SHORT at 2068.69 | Stop loss: 2079.048392857143 | Take profit: 2037.6372357142857 +2025-03-10 13:45:15,950 - INFO - CLOSED short at 2067.11 | PnL: 0.08% | $-0.05 +2025-03-10 13:45:16,008 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.746942857143 | Take profit: 2035.3815857142858 +2025-03-10 13:45:16,065 - INFO - CLOSED short at 2065.28 | PnL: 0.05% | $-0.09 +2025-03-10 13:45:16,093 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.7368928571427 | Take profit: 2035.3717357142855 +2025-03-10 13:45:16,444 - INFO - CLOSED short at 2065.26 | PnL: 0.05% | $-0.09 +2025-03-10 13:45:16,467 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.219392857143 | Take profit: 2031.9242357142857 +2025-03-10 13:45:16,500 - INFO - CLOSED short at 2062.65 | PnL: 0.01% | $-0.17 +2025-03-10 13:45:16,719 - INFO - OPENED SHORT at 2066.24 | Stop loss: 2076.586142857143 | Take profit: 2035.2239857142854 +2025-03-10 13:45:17,102 - INFO - CLOSED short at 2059.3 | PnL: 0.34% | $0.46 +2025-03-10 13:45:17,168 - INFO - OPENED SHORT at 2064.7 | Stop loss: 2075.038442857143 | Take profit: 2033.7070857142853 +2025-03-10 13:45:17,774 - INFO - CLOSED short at 2059.61 | PnL: 0.25% | $0.29 +2025-03-10 13:45:17,867 - INFO - OPENED SHORT at 2059.02 | Stop loss: 2069.330042857143 | Take profit: 2028.1122857142857 +2025-03-10 13:45:18,394 - INFO - CLOSED short at 2066.36 | PnL: -0.36% | $-0.89 +2025-03-10 13:45:18,394 - INFO - OPENED LONG at 2066.36 | Stop loss: 2056.013257142857 | Take profit: 2097.3778142857145 +2025-03-10 13:45:18,886 - INFO - CLOSED long at 2071.6 | PnL: 0.25% | $0.30 +2025-03-10 13:45:19,665 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.1489428571426 | Take profit: 2035.7755857142859 +2025-03-10 13:45:19,736 - INFO - CLOSED short at 2068.59 | PnL: -0.09% | $-0.36 +2025-03-10 13:45:19,848 - INFO - OPENED SHORT at 2070.2 | Stop loss: 2080.5659428571425 | Take profit: 2039.1245857142856 +2025-03-10 13:45:19,945 - INFO - CLOSED short at 2069.69 | PnL: 0.02% | $-0.15 +2025-03-10 13:45:19,946 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.326607142857 | Take profit: 2100.7577642857145 +2025-03-10 13:45:20,134 - INFO - CLOSED long at 2068.67 | PnL: -0.05% | $-0.29 +2025-03-10 13:45:20,135 - INFO - OPENED SHORT at 2068.67 | Stop loss: 2079.0282928571432 | Take profit: 2037.6175357142856 +2025-03-10 13:45:20,182 - INFO - CLOSED short at 2070.67 | PnL: -0.10% | $-0.38 +2025-03-10 13:45:20,182 - INFO - OPENED LONG at 2070.67 | Stop loss: 2060.301707142857 | Take profit: 2101.7524642857143 +2025-03-10 13:45:20,221 - INFO - CLOSED long at 2069.78 | PnL: -0.04% | $-0.27 +2025-03-10 13:45:20,221 - INFO - OPENED SHORT at 2069.78 | Stop loss: 2080.143842857143 | Take profit: 2038.710885714286 +2025-03-10 13:45:20,407 - INFO - CLOSED short at 2075.32 | PnL: -0.27% | $-0.70 +2025-03-10 13:45:20,434 - INFO - OPENED SHORT at 2075.29 | Stop loss: 2085.681392857143 | Take profit: 2044.1382357142857 +2025-03-10 13:45:20,455 - INFO - CLOSED short at 2076.9 | PnL: -0.08% | $-0.34 +2025-03-10 13:45:20,750 - INFO - OPENED LONG at 2066.89 | Stop loss: 2056.540607142857 | Take profit: 2097.915764285714 +2025-03-10 13:45:20,775 - INFO - CLOSED long at 2067.88 | PnL: 0.05% | $-0.10 +2025-03-10 13:45:20,820 - INFO - OPENED LONG at 2068.1 | Stop loss: 2057.744557142857 | Take profit: 2099.1439142857143 +2025-03-10 13:45:20,845 - INFO - CLOSED long at 2069.0 | PnL: 0.04% | $-0.11 +2025-03-10 13:45:21,052 - INFO - OPENED LONG at 2065.8 | Stop loss: 2055.4560571428574 | Take profit: 2096.8094142857144 +2025-03-10 13:45:21,096 - INFO - CLOSED long at 2065.07 | PnL: -0.04% | $-0.26 +2025-03-10 13:45:21,539 - INFO - OPENED SHORT at 2058.09 | Stop loss: 2068.395392857143 | Take profit: 2027.1962357142859 +2025-03-10 13:45:21,918 - INFO - CLOSED short at 2063.9 | PnL: -0.28% | $-0.72 +2025-03-10 13:45:21,919 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.5655571428574 | Take profit: 2094.8809142857144 +2025-03-10 13:45:21,943 - INFO - CLOSED long at 2065.1 | PnL: 0.06% | $-0.08 +2025-03-10 13:45:21,944 - INFO - OPENED SHORT at 2065.1 | Stop loss: 2075.4404428571424 | Take profit: 2034.1010857142855 +2025-03-10 13:45:22,386 - INFO - CLOSED short at 2069.81 | PnL: -0.23% | $-0.61 +2025-03-10 13:45:22,590 - INFO - OPENED LONG at 2074.9 | Stop loss: 2064.510557142857 | Take profit: 2106.0459142857144 +2025-03-10 13:45:22,634 - INFO - CLOSED long at 2076.08 | PnL: 0.06% | $-0.08 +2025-03-10 13:45:22,739 - INFO - OPENED LONG at 2103.02 | Stop loss: 2092.4899571428573 | Take profit: 2134.587714285714 +2025-03-10 13:45:22,784 - INFO - TAKE PROFIT hit for long at 2134.587714285714 | PnL: 1.50% | $2.60 +2025-03-10 13:45:23,040 - INFO - OPENED SHORT at 2126.99 | Stop loss: 2137.6398928571425 | Take profit: 2095.0627357142857 +2025-03-10 13:45:23,077 - INFO - CLOSED short at 2127.3 | PnL: -0.01% | $-0.22 +2025-03-10 13:45:23,106 - INFO - OPENED SHORT at 2128.69 | Stop loss: 2139.3483928571427 | Take profit: 2096.737235714286 +2025-03-10 13:45:23,580 - INFO - CLOSED short at 2120.81 | PnL: 0.37% | $0.51 +2025-03-10 13:45:23,581 - INFO - OPENED LONG at 2120.81 | Stop loss: 2110.191007142857 | Take profit: 2152.6445642857143 +2025-03-10 13:45:23,668 - INFO - STOP LOSS hit for long at 2110.191007142857 | PnL: -0.50% | $-1.15 +2025-03-10 13:45:23,700 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.942607142857 | Take profit: 2138.1097642857144 +2025-03-10 13:45:23,878 - INFO - STOP LOSS hit for long at 2095.942607142857 | PnL: -0.50% | $-1.14 +2025-03-10 13:45:23,927 - INFO - OPENED LONG at 2098.1 | Stop loss: 2087.594557142857 | Take profit: 2129.593914285714 +2025-03-10 13:45:24,012 - INFO - CLOSED long at 2098.9 | PnL: 0.04% | $-0.12 +2025-03-10 13:45:24,311 - INFO - OPENED LONG at 2098.39 | Stop loss: 2087.883107142857 | Take profit: 2129.8882642857143 +2025-03-10 13:45:24,355 - INFO - CLOSED long at 2093.46 | PnL: -0.23% | $-0.62 +2025-03-10 13:45:24,762 - INFO - OPENED SHORT at 2081.25 | Stop loss: 2091.6711928571426 | Take profit: 2050.008835714286 +2025-03-10 13:45:25,393 - INFO - STOP LOSS hit for short at 2091.6711928571426 | PnL: -0.50% | $-1.11 +2025-03-10 13:45:25,440 - INFO - OPENED SHORT at 2094.7 | Stop loss: 2105.1884428571425 | Take profit: 2063.2570857142855 +2025-03-10 13:45:25,670 - INFO - STOP LOSS hit for short at 2105.1884428571425 | PnL: -0.50% | $-1.10 +2025-03-10 13:45:25,712 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.012342857143 | Take profit: 2071.905385714286 +2025-03-10 13:45:25,843 - INFO - CLOSED short at 2103.07 | PnL: 0.02% | $-0.15 +2025-03-10 13:45:25,843 - INFO - OPENED LONG at 2103.07 | Stop loss: 2092.5397071428574 | Take profit: 2134.6384642857147 +2025-03-10 13:45:25,883 - INFO - CLOSED long at 2101.5 | PnL: -0.07% | $-0.32 +2025-03-10 13:45:25,883 - INFO - OPENED SHORT at 2101.5 | Stop loss: 2112.0224428571432 | Take profit: 2069.955085714286 +2025-03-10 13:45:25,930 - INFO - CLOSED short at 2103.64 | PnL: -0.10% | $-0.36 +2025-03-10 13:45:25,955 - INFO - OPENED SHORT at 2105.2 | Stop loss: 2115.7409428571427 | Take profit: 2073.5995857142857 +2025-03-10 13:45:26,773 - INFO - CLOSED short at 2108.99 | PnL: -0.18% | $-0.50 +2025-03-10 13:45:26,774 - INFO - OPENED LONG at 2108.99 | Stop loss: 2098.4301071428567 | Take profit: 2140.647264285714 +2025-03-10 13:45:27,037 - INFO - CLOSED long at 2116.81 | PnL: 0.37% | $0.48 +2025-03-10 13:45:27,038 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.4089928571425 | Take profit: 2085.035435714286 +2025-03-10 13:45:27,085 - INFO - CLOSED short at 2114.71 | PnL: 0.10% | $-0.00 +2025-03-10 13:45:27,085 - INFO - OPENED LONG at 2114.71 | Stop loss: 2104.121507142857 | Take profit: 2146.4530642857144 +2025-03-10 13:45:27,164 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.57, Avg Loss=$-0.40 +2025-03-10 13:45:27,164 - INFO - Episode 1: Reward=-127.83, Balance=$90.24, Win Rate=19.6%, Trades=46, Episode PnL=$-8.43, Total PnL=$-14.26, Max Drawdown=9.7%, Pred Accuracy=96.7% +2025-03-10 13:45:27,638 - INFO - OPENED SHORT at 2064.32 | Stop loss: 2074.6565428571434 | Take profit: 2033.3327857142858 +2025-03-10 13:45:27,659 - INFO - CLOSED short at 2065.86 | PnL: -0.07% | $-0.35 +2025-03-10 13:45:27,659 - INFO - OPENED LONG at 2065.86 | Stop loss: 2055.515757142857 | Take profit: 2096.8703142857144 +2025-03-10 13:45:27,741 - INFO - CLOSED long at 2068.11 | PnL: 0.11% | $0.02 +2025-03-10 13:45:27,741 - INFO - OPENED SHORT at 2068.11 | Stop loss: 2078.465492857143 | Take profit: 2037.0659357142858 +2025-03-10 13:45:27,869 - INFO - CLOSED short at 2071.63 | PnL: -0.17% | $-0.53 +2025-03-10 13:45:27,869 - INFO - OPENED LONG at 2071.63 | Stop loss: 2061.256907142857 | Take profit: 2102.7268642857143 +2025-03-10 13:45:27,918 - INFO - CLOSED long at 2069.6 | PnL: -0.10% | $-0.39 +2025-03-10 13:45:27,918 - INFO - OPENED SHORT at 2069.6 | Stop loss: 2079.962942857143 | Take profit: 2038.5335857142857 +2025-03-10 13:45:27,989 - INFO - CLOSED short at 2067.9 | PnL: 0.08% | $-0.04 +2025-03-10 13:45:27,989 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.5455571428574 | Take profit: 2098.9409142857144 +2025-03-10 13:45:28,012 - INFO - CLOSED long at 2067.69 | PnL: -0.01% | $-0.22 +2025-03-10 13:45:28,012 - INFO - OPENED SHORT at 2067.69 | Stop loss: 2078.0433928571433 | Take profit: 2036.6522357142858 +2025-03-10 13:45:28,056 - INFO - CLOSED short at 2071.44 | PnL: -0.18% | $-0.55 +2025-03-10 13:45:28,056 - INFO - OPENED LONG at 2071.44 | Stop loss: 2061.067857142857 | Take profit: 2102.534014285714 +2025-03-10 13:45:28,221 - INFO - CLOSED long at 2071.38 | PnL: -0.00% | $-0.20 +2025-03-10 13:45:28,222 - INFO - OPENED SHORT at 2071.38 | Stop loss: 2081.751842857143 | Take profit: 2040.2868857142857 +2025-03-10 13:45:28,259 - INFO - CLOSED short at 2071.41 | PnL: -0.00% | $-0.20 +2025-03-10 13:45:28,260 - INFO - OPENED LONG at 2071.41 | Stop loss: 2061.0380071428567 | Take profit: 2102.5035642857138 +2025-03-10 13:45:28,290 - INFO - CLOSED long at 2069.37 | PnL: -0.10% | $-0.38 +2025-03-10 13:45:28,291 - INFO - OPENED SHORT at 2069.37 | Stop loss: 2079.731792857143 | Take profit: 2038.3070357142856 +2025-03-10 13:45:28,315 - INFO - CLOSED short at 2070.9 | PnL: -0.07% | $-0.34 +2025-03-10 13:45:28,316 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.530557142857 | Take profit: 2101.9859142857144 +2025-03-10 13:45:28,338 - INFO - CLOSED long at 2072.8 | PnL: 0.09% | $-0.02 +2025-03-10 13:45:28,339 - INFO - OPENED SHORT at 2072.8 | Stop loss: 2083.178942857143 | Take profit: 2041.685585714286 +2025-03-10 13:45:28,386 - INFO - CLOSED short at 2070.28 | PnL: 0.12% | $0.04 +2025-03-10 13:45:28,386 - INFO - OPENED LONG at 2070.28 | Stop loss: 2059.913657142857 | Take profit: 2101.3566142857144 +2025-03-10 13:45:28,413 - INFO - CLOSED long at 2068.02 | PnL: -0.11% | $-0.40 +2025-03-10 13:45:28,413 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.375042857143 | Take profit: 2036.9772857142857 +2025-03-10 13:45:28,659 - INFO - CLOSED short at 2068.8 | PnL: -0.04% | $-0.26 +2025-03-10 13:45:28,980 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.2594428571433 | Take profit: 2037.8440857142857 +2025-03-10 13:45:29,150 - INFO - CLOSED short at 2069.96 | PnL: -0.05% | $-0.29 +2025-03-10 13:45:29,681 - INFO - OPENED LONG at 2063.61 | Stop loss: 2053.277007142857 | Take profit: 2094.5865642857143 +2025-03-10 13:45:29,934 - INFO - CLOSED long at 2067.59 | PnL: 0.19% | $0.18 +2025-03-10 13:45:29,935 - INFO - OPENED SHORT at 2067.59 | Stop loss: 2077.942892857143 | Take profit: 2036.553735714286 +2025-03-10 13:45:29,999 - INFO - CLOSED short at 2071.59 | PnL: -0.19% | $-0.56 +2025-03-10 13:45:29,999 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.2171071428575 | Take profit: 2102.6862642857145 +2025-03-10 13:45:30,024 - INFO - CLOSED long at 2070.7 | PnL: -0.04% | $-0.27 +2025-03-10 13:45:30,025 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.0684428571426 | Take profit: 2039.6170857142854 +2025-03-10 13:45:30,726 - INFO - CLOSED short at 2059.59 | PnL: 0.54% | $0.83 +2025-03-10 13:45:31,343 - INFO - OPENED LONG at 2062.61 | Stop loss: 2052.2820071428573 | Take profit: 2093.5715642857144 +2025-03-10 13:45:31,482 - INFO - CLOSED long at 2061.13 | PnL: -0.07% | $-0.33 +2025-03-10 13:45:31,483 - INFO - OPENED SHORT at 2061.13 | Stop loss: 2071.450592857143 | Take profit: 2030.190635714286 +2025-03-10 13:45:32,323 - INFO - CLOSED short at 2058.15 | PnL: 0.14% | $0.08 +2025-03-10 13:45:32,449 - INFO - OPENED SHORT at 2062.69 | Stop loss: 2073.0183928571428 | Take profit: 2031.7272357142858 +2025-03-10 13:45:32,476 - INFO - CLOSED short at 2063.4 | PnL: -0.03% | $-0.26 +2025-03-10 13:45:32,791 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.3466071428575 | Take profit: 2096.697764285714 +2025-03-10 13:45:32,819 - INFO - CLOSED long at 2069.79 | PnL: 0.20% | $0.19 +2025-03-10 13:45:32,844 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3749428571427 | Take profit: 2040.8975857142857 +2025-03-10 13:45:33,180 - INFO - CLOSED short at 2068.39 | PnL: 0.17% | $0.14 +2025-03-10 13:45:33,181 - INFO - OPENED LONG at 2068.39 | Stop loss: 2058.033107142857 | Take profit: 2099.438264285714 +2025-03-10 13:45:33,204 - INFO - CLOSED long at 2069.69 | PnL: 0.06% | $-0.07 +2025-03-10 13:45:33,205 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.053392857143 | Take profit: 2038.6222357142858 +2025-03-10 13:45:33,253 - INFO - CLOSED short at 2067.44 | PnL: 0.11% | $0.02 +2025-03-10 13:45:33,277 - INFO - OPENED SHORT at 2068.79 | Stop loss: 2079.148892857143 | Take profit: 2037.7357357142857 +2025-03-10 13:45:33,519 - INFO - CLOSED short at 2063.95 | PnL: 0.23% | $0.25 +2025-03-10 13:45:33,542 - INFO - OPENED SHORT at 2063.97 | Stop loss: 2074.3047928571423 | Take profit: 2032.9880357142854 +2025-03-10 13:45:34,266 - INFO - STOP LOSS hit for short at 2074.3047928571423 | PnL: -0.50% | $-1.15 +2025-03-10 13:45:34,397 - INFO - OPENED SHORT at 2075.29 | Stop loss: 2085.681392857143 | Take profit: 2044.1382357142857 +2025-03-10 13:45:34,673 - INFO - CLOSED short at 2067.9 | PnL: 0.36% | $0.48 +2025-03-10 13:45:35,264 - INFO - OPENED LONG at 2063.01 | Stop loss: 2052.6800071428574 | Take profit: 2093.977564285715 +2025-03-10 13:45:35,348 - INFO - CLOSED long at 2060.2 | PnL: -0.14% | $-0.45 +2025-03-10 13:45:35,348 - INFO - OPENED SHORT at 2060.2 | Stop loss: 2070.515942857143 | Take profit: 2029.2745857142854 +2025-03-10 13:45:35,662 - INFO - CLOSED short at 2057.11 | PnL: 0.15% | $0.09 +2025-03-10 13:45:35,662 - INFO - OPENED LONG at 2057.11 | Stop loss: 2046.8095071428575 | Take profit: 2087.9890642857144 +2025-03-10 13:45:36,238 - INFO - CLOSED long at 2070.24 | PnL: 0.64% | $1.02 +2025-03-10 13:45:36,238 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.606142857143 | Take profit: 2039.1639857142854 +2025-03-10 13:45:36,270 - INFO - CLOSED short at 2069.34 | PnL: 0.04% | $-0.11 +2025-03-10 13:45:36,270 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.978357142857 | Take profit: 2100.4025142857145 +2025-03-10 13:45:36,295 - INFO - CLOSED long at 2069.81 | PnL: 0.02% | $-0.15 +2025-03-10 13:45:36,322 - INFO - OPENED SHORT at 2070.41 | Stop loss: 2080.776992857143 | Take profit: 2039.3314357142856 +2025-03-10 13:45:36,411 - INFO - CLOSED short at 2071.89 | PnL: -0.07% | $-0.33 +2025-03-10 13:45:36,619 - INFO - OPENED LONG at 2103.02 | Stop loss: 2092.4899571428573 | Take profit: 2134.587714285714 +2025-03-10 13:45:36,660 - INFO - CLOSED long at 2130.7 | PnL: 1.32% | $2.31 +2025-03-10 13:45:36,737 - INFO - OPENED LONG at 2133.95 | Stop loss: 2123.265307142857 | Take profit: 2165.9816642857145 +2025-03-10 13:45:36,761 - INFO - CLOSED long at 2137.59 | PnL: 0.17% | $0.14 +2025-03-10 13:45:37,669 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.504757142857 | Take profit: 2139.7033142857144 +2025-03-10 13:45:37,752 - INFO - CLOSED long at 2100.5 | PnL: -0.36% | $-0.89 +2025-03-10 13:45:37,752 - INFO - OPENED SHORT at 2100.5 | Stop loss: 2111.017442857143 | Take profit: 2068.9700857142857 +2025-03-10 13:45:37,836 - INFO - CLOSED short at 2099.53 | PnL: 0.05% | $-0.10 +2025-03-10 13:45:37,876 - INFO - OPENED SHORT at 2098.1 | Stop loss: 2108.605442857143 | Take profit: 2066.6060857142857 +2025-03-10 13:45:38,014 - INFO - CLOSED short at 2100.69 | PnL: -0.12% | $-0.43 +2025-03-10 13:45:38,014 - INFO - OPENED LONG at 2100.69 | Stop loss: 2090.1716071428573 | Take profit: 2132.222764285714 +2025-03-10 13:45:38,043 - INFO - CLOSED long at 2104.83 | PnL: 0.20% | $0.19 +2025-03-10 13:45:38,044 - INFO - OPENED SHORT at 2104.83 | Stop loss: 2115.3690928571427 | Take profit: 2073.2351357142857 +2025-03-10 13:45:38,342 - INFO - CLOSED short at 2098.39 | PnL: 0.31% | $0.40 +2025-03-10 13:45:38,377 - INFO - OPENED SHORT at 2095.29 | Stop loss: 2105.781392857143 | Take profit: 2063.8382357142855 +2025-03-10 13:45:38,706 - INFO - CLOSED short at 2083.28 | PnL: 0.57% | $0.91 +2025-03-10 13:45:38,707 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848657142857 | Take profit: 2114.551614285714 +2025-03-10 13:45:38,730 - INFO - CLOSED long at 2088.44 | PnL: 0.25% | $0.29 +2025-03-10 13:45:38,730 - INFO - OPENED SHORT at 2088.44 | Stop loss: 2098.897142857143 | Take profit: 2057.090985714286 +2025-03-10 13:45:39,074 - INFO - CLOSED short at 2085.8 | PnL: 0.13% | $0.05 +2025-03-10 13:45:39,074 - INFO - OPENED LONG at 2085.8 | Stop loss: 2075.3560571428575 | Take profit: 2117.1094142857146 +2025-03-10 13:45:39,127 - INFO - CLOSED long at 2085.83 | PnL: 0.00% | $-0.19 +2025-03-10 13:45:39,128 - INFO - OPENED SHORT at 2085.83 | Stop loss: 2096.2740928571425 | Take profit: 2054.5201357142855 +2025-03-10 13:45:39,383 - INFO - CLOSED short at 2086.81 | PnL: -0.05% | $-0.29 +2025-03-10 13:45:40,266 - INFO - OPENED LONG at 2100.0 | Stop loss: 2089.485057142857 | Take profit: 2131.522414285714 +2025-03-10 13:45:40,365 - INFO - CLOSED long at 2104.73 | PnL: 0.23% | $0.24 +2025-03-10 13:45:40,836 - INFO - OPENED SHORT at 2112.61 | Stop loss: 2123.187992857143 | Take profit: 2080.898435714286 +2025-03-10 13:45:41,126 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.39, Avg Loss=$-0.34 +2025-03-10 13:45:41,127 - INFO - Episode 2: Reward=-106.58, Balance=$98.13, Win Rate=40.8%, Trades=49, Episode PnL=$0.26, Total PnL=$-16.13, Max Drawdown=5.0%, Pred Accuracy=96.7% +2025-03-10 13:45:41,276 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 13:45:41,277 - INFO - New best PnL model saved: $0.26 +2025-03-10 13:45:41,429 - INFO - Model saved to models/trading_agent_best_winrate.pt +2025-03-10 13:45:41,430 - INFO - New best win rate model saved: 40.8% +2025-03-10 13:45:41,785 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.415492857143 | Take profit: 2027.215935714286 +2025-03-10 13:45:41,932 - INFO - STOP LOSS hit for short at 2068.415492857143 | PnL: -0.50% | $-1.19 +2025-03-10 13:45:41,985 - INFO - OPENED SHORT at 2068.11 | Stop loss: 2078.465492857143 | Take profit: 2037.0659357142858 +2025-03-10 13:45:43,566 - INFO - CLOSED short at 2072.75 | PnL: -0.22% | $-0.64 +2025-03-10 13:45:43,676 - INFO - OPENED LONG at 2072.7 | Stop loss: 2062.321557142857 | Take profit: 2103.812914285714 +2025-03-10 13:45:43,703 - INFO - CLOSED long at 2072.15 | PnL: -0.03% | $-0.25 +2025-03-10 13:45:43,703 - INFO - OPENED SHORT at 2072.15 | Stop loss: 2082.525692857143 | Take profit: 2041.045335714286 +2025-03-10 13:45:44,053 - INFO - CLOSED short at 2067.79 | PnL: 0.21% | $0.21 +2025-03-10 13:45:44,795 - INFO - OPENED SHORT at 2065.28 | Stop loss: 2075.6213428571427 | Take profit: 2034.2783857142858 +2025-03-10 13:45:44,968 - INFO - CLOSED short at 2065.69 | PnL: -0.02% | $-0.23 +2025-03-10 13:45:45,031 - INFO - OPENED SHORT at 2065.83 | Stop loss: 2076.1740928571426 | Take profit: 2034.8201357142857 +2025-03-10 13:45:45,053 - INFO - CLOSED short at 2066.15 | PnL: -0.02% | $-0.22 +2025-03-10 13:45:45,084 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.601242857143 | Take profit: 2034.2586857142858 +2025-03-10 13:45:45,273 - INFO - CLOSED short at 2061.3 | PnL: 0.19% | $0.18 +2025-03-10 13:45:45,297 - INFO - OPENED SHORT at 2063.59 | Stop loss: 2073.922892857143 | Take profit: 2032.613735714286 +2025-03-10 13:45:45,321 - INFO - CLOSED short at 2064.96 | PnL: -0.07% | $-0.32 +2025-03-10 13:45:45,390 - INFO - OPENED SHORT at 2065.54 | Stop loss: 2075.882642857143 | Take profit: 2034.5344857142857 +2025-03-10 13:45:45,415 - INFO - CLOSED short at 2066.09 | PnL: -0.03% | $-0.25 +2025-03-10 13:45:45,624 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.837442857143 | Take profit: 2033.5100857142857 +2025-03-10 13:45:45,998 - INFO - CLOSED short at 2060.3 | PnL: 0.20% | $0.20 +2025-03-10 13:45:45,998 - INFO - OPENED LONG at 2060.3 | Stop loss: 2049.9835571428575 | Take profit: 2091.2269142857144 +2025-03-10 13:45:46,039 - INFO - CLOSED long at 2061.13 | PnL: 0.04% | $-0.12 +2025-03-10 13:45:46,315 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.214392857143 | Take profit: 2030.9392357142856 +2025-03-10 13:45:46,646 - INFO - CLOSED short at 2058.28 | PnL: 0.18% | $0.15 +2025-03-10 13:45:46,647 - INFO - OPENED LONG at 2058.28 | Stop loss: 2047.9736571428573 | Take profit: 2089.1766142857145 +2025-03-10 13:45:46,782 - INFO - CLOSED long at 2054.83 | PnL: -0.17% | $-0.52 +2025-03-10 13:45:46,783 - INFO - OPENED SHORT at 2054.83 | Stop loss: 2065.1190928571427 | Take profit: 2023.9851357142857 +2025-03-10 13:45:46,831 - INFO - CLOSED short at 2056.71 | PnL: -0.09% | $-0.37 +2025-03-10 13:45:46,832 - INFO - OPENED LONG at 2056.71 | Stop loss: 2046.4115071428573 | Take profit: 2087.583064285714 +2025-03-10 13:45:47,024 - INFO - CLOSED long at 2062.69 | PnL: 0.29% | $0.37 +2025-03-10 13:45:47,025 - INFO - OPENED SHORT at 2062.69 | Stop loss: 2073.0183928571428 | Take profit: 2031.7272357142858 +2025-03-10 13:45:47,050 - INFO - CLOSED short at 2063.4 | PnL: -0.03% | $-0.26 +2025-03-10 13:45:47,050 - INFO - OPENED LONG at 2063.4 | Stop loss: 2053.068057142857 | Take profit: 2094.3734142857143 +2025-03-10 13:45:47,076 - INFO - CLOSED long at 2066.36 | PnL: 0.14% | $0.08 +2025-03-10 13:45:47,077 - INFO - OPENED SHORT at 2066.36 | Stop loss: 2076.706742857143 | Take profit: 2035.3421857142857 +2025-03-10 13:45:47,459 - INFO - STOP LOSS hit for short at 2076.706742857143 | PnL: -0.50% | $-1.15 +2025-03-10 13:45:47,505 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.399992857143 | Take profit: 2043.862435714286 +2025-03-10 13:45:48,284 - INFO - CLOSED short at 2065.31 | PnL: 0.47% | $0.70 +2025-03-10 13:45:48,808 - INFO - OPENED SHORT at 2069.78 | Stop loss: 2080.143842857143 | Take profit: 2038.710885714286 +2025-03-10 13:45:48,878 - INFO - CLOSED short at 2074.37 | PnL: -0.22% | $-0.62 +2025-03-10 13:45:48,901 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.460292857143 | Take profit: 2043.9215357142857 +2025-03-10 13:45:48,926 - INFO - CLOSED short at 2074.35 | PnL: 0.03% | $-0.12 +2025-03-10 13:45:48,973 - INFO - OPENED SHORT at 2073.99 | Stop loss: 2084.3748928571426 | Take profit: 2042.8577357142854 +2025-03-10 13:45:48,992 - INFO - CLOSED short at 2075.32 | PnL: -0.06% | $-0.31 +2025-03-10 13:45:48,992 - INFO - OPENED LONG at 2075.32 | Stop loss: 2064.9284571428575 | Take profit: 2106.4722142857145 +2025-03-10 13:45:49,015 - INFO - CLOSED long at 2075.29 | PnL: -0.00% | $-0.19 +2025-03-10 13:45:50,649 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.415342857143 | Take profit: 2033.0963857142856 +2025-03-10 13:45:50,826 - INFO - CLOSED short at 2062.54 | PnL: 0.07% | $-0.05 +2025-03-10 13:45:50,826 - INFO - OPENED LONG at 2062.54 | Stop loss: 2052.212357142857 | Take profit: 2093.500514285714 +2025-03-10 13:45:50,869 - INFO - CLOSED long at 2065.72 | PnL: 0.15% | $0.10 +2025-03-10 13:45:50,870 - INFO - OPENED SHORT at 2065.72 | Stop loss: 2076.0635428571427 | Take profit: 2034.7117857142855 +2025-03-10 13:45:50,941 - INFO - CLOSED short at 2069.34 | PnL: -0.18% | $-0.52 +2025-03-10 13:45:50,941 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.978357142857 | Take profit: 2100.4025142857145 +2025-03-10 13:45:51,009 - INFO - CLOSED long at 2073.49 | PnL: 0.20% | $0.19 +2025-03-10 13:45:51,010 - INFO - OPENED SHORT at 2073.49 | Stop loss: 2083.8723928571426 | Take profit: 2042.3652357142855 +2025-03-10 13:45:51,269 - INFO - STOP LOSS hit for short at 2083.8723928571426 | PnL: -0.50% | $-1.13 +2025-03-10 13:45:51,291 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.9573928571426 | Take profit: 2059.1102357142854 +2025-03-10 13:45:51,319 - INFO - STOP LOSS hit for short at 2100.9573928571426 | PnL: -0.50% | $-1.12 +2025-03-10 13:45:51,342 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.368442857143 | Take profit: 2098.7170857142855 +2025-03-10 13:45:51,455 - INFO - STOP LOSS hit for short at 2141.368442857143 | PnL: -0.50% | $-1.10 +2025-03-10 13:45:51,504 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.021442857143 | Take profit: 2109.158085714286 +2025-03-10 13:45:51,725 - INFO - CLOSED short at 2128.69 | PnL: 0.59% | $0.89 +2025-03-10 13:45:51,750 - INFO - OPENED SHORT at 2121.09 | Stop loss: 2131.710392857143 | Take profit: 2089.251235714286 +2025-03-10 13:45:52,617 - INFO - CLOSED short at 2102.29 | PnL: 0.89% | $1.44 +2025-03-10 13:45:52,642 - INFO - OPENED SHORT at 2099.25 | Stop loss: 2109.761192857143 | Take profit: 2067.738835714286 +2025-03-10 13:45:52,820 - INFO - CLOSED short at 2100.74 | PnL: -0.07% | $-0.32 +2025-03-10 13:45:53,111 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.231457142857 | Take profit: 2126.1632142857143 +2025-03-10 13:45:53,150 - INFO - CLOSED long at 2094.08 | PnL: -0.03% | $-0.24 +2025-03-10 13:45:53,151 - INFO - OPENED SHORT at 2094.08 | Stop loss: 2104.5653428571427 | Take profit: 2062.6463857142858 +2025-03-10 13:45:53,809 - INFO - CLOSED short at 2089.79 | PnL: 0.20% | $0.19 +2025-03-10 13:45:53,810 - INFO - OPENED LONG at 2089.79 | Stop loss: 2079.326107142857 | Take profit: 2121.1592642857145 +2025-03-10 13:45:53,832 - INFO - CLOSED long at 2085.67 | PnL: -0.20% | $-0.55 +2025-03-10 13:45:53,832 - INFO - OPENED SHORT at 2085.67 | Stop loss: 2096.113292857143 | Take profit: 2054.362535714286 +2025-03-10 13:45:53,981 - INFO - CLOSED short at 2094.7 | PnL: -0.43% | $-0.98 +2025-03-10 13:45:53,981 - INFO - OPENED LONG at 2094.7 | Stop loss: 2084.211557142857 | Take profit: 2126.1429142857137 +2025-03-10 13:45:54,386 - INFO - CLOSED long at 2105.83 | PnL: 0.53% | $0.79 +2025-03-10 13:45:54,527 - INFO - OPENED LONG at 2105.21 | Stop loss: 2094.6690071428575 | Take profit: 2136.810564285714 +2025-03-10 13:45:54,553 - INFO - CLOSED long at 2103.9 | PnL: -0.06% | $-0.30 +2025-03-10 13:45:54,668 - INFO - OPENED SHORT at 2104.73 | Stop loss: 2115.268592857143 | Take profit: 2073.1366357142856 +2025-03-10 13:45:54,885 - INFO - CLOSED short at 2110.4 | PnL: -0.27% | $-0.68 +2025-03-10 13:45:55,479 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.42, Avg Loss=$-0.51 +2025-03-10 13:45:55,480 - INFO - Episode 3: Reward=-107.95, Balance=$91.73, Win Rate=32.5%, Trades=40, Episode PnL=$-7.45, Total PnL=$-24.39, Max Drawdown=8.5%, Pred Accuracy=96.8% +2025-03-10 13:45:55,889 - INFO - OPENED SHORT at 2057.8 | Stop loss: 2068.103942857143 | Take profit: 2026.9105857142858 +2025-03-10 13:45:56,071 - INFO - STOP LOSS hit for short at 2068.103942857143 | PnL: -0.50% | $-1.19 +2025-03-10 13:45:56,104 - INFO - OPENED SHORT at 2068.11 | Stop loss: 2078.465492857143 | Take profit: 2037.0659357142858 +2025-03-10 13:45:56,240 - INFO - CLOSED short at 2070.99 | PnL: -0.14% | $-0.47 +2025-03-10 13:45:56,275 - INFO - OPENED SHORT at 2069.6 | Stop loss: 2079.962942857143 | Take profit: 2038.5335857142857 +2025-03-10 13:45:57,128 - INFO - CLOSED short at 2065.99 | PnL: 0.17% | $0.15 +2025-03-10 13:45:57,463 - INFO - OPENED SHORT at 2069.96 | Stop loss: 2080.3247428571426 | Take profit: 2038.8881857142858 +2025-03-10 13:45:57,569 - INFO - CLOSED short at 2072.75 | PnL: -0.13% | $-0.46 +2025-03-10 13:45:57,622 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.078442857143 | Take profit: 2041.5870857142854 +2025-03-10 13:45:57,869 - INFO - CLOSED short at 2071.11 | PnL: 0.08% | $-0.05 +2025-03-10 13:45:57,944 - INFO - OPENED SHORT at 2068.32 | Stop loss: 2078.676542857143 | Take profit: 2037.2727857142859 +2025-03-10 13:45:58,070 - INFO - CLOSED short at 2065.49 | PnL: 0.14% | $0.07 +2025-03-10 13:45:58,070 - INFO - OPENED LONG at 2065.49 | Stop loss: 2055.147607142857 | Take profit: 2096.494764285714 +2025-03-10 13:45:58,965 - INFO - CLOSED long at 2065.69 | PnL: 0.01% | $-0.18 +2025-03-10 13:45:58,965 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.033392857143 | Take profit: 2034.6822357142858 +2025-03-10 13:46:00,465 - INFO - CLOSED short at 2059.61 | PnL: 0.29% | $0.38 +2025-03-10 13:46:00,516 - INFO - OPENED LONG at 2059.16 | Stop loss: 2048.849257142857 | Take profit: 2090.069814285714 +2025-03-10 13:46:01,011 - INFO - CLOSED long at 2062.69 | PnL: 0.17% | $0.14 +2025-03-10 13:46:01,388 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.399992857143 | Take profit: 2043.862435714286 +2025-03-10 13:46:01,889 - INFO - CLOSED short at 2063.97 | PnL: 0.53% | $0.84 +2025-03-10 13:46:02,799 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.2544428571427 | Take profit: 2036.8590857142858 +2025-03-10 13:46:02,855 - INFO - CLOSED short at 2066.89 | PnL: 0.05% | $-0.10 +2025-03-10 13:46:02,911 - INFO - OPENED SHORT at 2065.45 | Stop loss: 2075.7921928571427 | Take profit: 2034.4458357142857 +2025-03-10 13:46:02,962 - INFO - CLOSED short at 2069.0 | PnL: -0.17% | $-0.54 +2025-03-10 13:46:03,010 - INFO - OPENED SHORT at 2070.1 | Stop loss: 2080.4654428571425 | Take profit: 2039.0260857142857 +2025-03-10 13:46:03,040 - INFO - CLOSED short at 2067.19 | PnL: 0.14% | $0.08 +2025-03-10 13:46:03,068 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.842442857143 | Take profit: 2034.4950857142856 +2025-03-10 13:46:03,227 - INFO - CLOSED short at 2063.98 | PnL: 0.07% | $-0.05 +2025-03-10 13:46:03,275 - INFO - OPENED SHORT at 2065.06 | Stop loss: 2075.400242857143 | Take profit: 2034.0616857142857 +2025-03-10 13:46:03,450 - INFO - CLOSED short at 2058.09 | PnL: 0.34% | $0.47 +2025-03-10 13:46:03,451 - INFO - OPENED LONG at 2058.09 | Stop loss: 2047.784607142857 | Take profit: 2088.9837642857146 +2025-03-10 13:46:04,647 - INFO - TAKE PROFIT hit for long at 2088.9837642857146 | PnL: 1.50% | $2.76 +2025-03-10 13:46:04,995 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.0911571428574 | Take profit: 2166.8241142857146 +2025-03-10 13:46:05,023 - INFO - CLOSED long at 2126.99 | PnL: -0.36% | $-0.94 +2025-03-10 13:46:05,051 - INFO - OPENED SHORT at 2127.3 | Stop loss: 2137.951442857143 | Take profit: 2095.368085714286 +2025-03-10 13:46:05,079 - INFO - CLOSED short at 2128.69 | PnL: -0.07% | $-0.33 +2025-03-10 13:46:05,220 - INFO - OPENED SHORT at 2117.24 | Stop loss: 2127.8411428571426 | Take profit: 2085.4589857142855 +2025-03-10 13:46:05,310 - INFO - CLOSED short at 2118.52 | PnL: -0.06% | $-0.32 +2025-03-10 13:46:05,338 - INFO - OPENED SHORT at 2119.14 | Stop loss: 2129.750642857143 | Take profit: 2087.3304857142857 +2025-03-10 13:46:05,447 - INFO - CLOSED short at 2109.05 | PnL: 0.48% | $0.75 +2025-03-10 13:46:05,474 - INFO - OPENED SHORT at 2112.09 | Stop loss: 2122.665392857143 | Take profit: 2080.386235714286 +2025-03-10 13:46:05,720 - INFO - CLOSED short at 2114.8 | PnL: -0.13% | $-0.46 +2025-03-10 13:46:05,770 - INFO - OPENED LONG at 2108.71 | Stop loss: 2098.151507142857 | Take profit: 2140.3630642857142 +2025-03-10 13:46:05,839 - INFO - CLOSED long at 2103.33 | PnL: -0.26% | $-0.71 +2025-03-10 13:46:05,957 - INFO - OPENED LONG at 2098.1 | Stop loss: 2087.594557142857 | Take profit: 2129.593914285714 +2025-03-10 13:46:05,993 - INFO - CLOSED long at 2102.19 | PnL: 0.19% | $0.19 +2025-03-10 13:46:05,993 - INFO - OPENED SHORT at 2102.19 | Stop loss: 2112.7158928571425 | Take profit: 2070.634735714286 +2025-03-10 13:46:06,629 - INFO - CLOSED short at 2088.44 | PnL: 0.65% | $1.10 +2025-03-10 13:46:06,630 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.982857142857 | Take profit: 2119.789014285714 +2025-03-10 13:46:06,739 - INFO - CLOSED long at 2082.44 | PnL: -0.29% | $-0.78 +2025-03-10 13:46:06,739 - INFO - OPENED SHORT at 2082.44 | Stop loss: 2092.867142857143 | Take profit: 2051.1809857142857 +2025-03-10 13:46:07,404 - INFO - CLOSED short at 2091.05 | PnL: -0.41% | $-1.02 +2025-03-10 13:46:07,404 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.579807142857 | Take profit: 2122.4381642857143 +2025-03-10 13:46:07,565 - INFO - CLOSED long at 2099.99 | PnL: 0.43% | $0.65 +2025-03-10 13:46:07,565 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.5048928571427 | Take profit: 2068.4677357142855 +2025-03-10 13:46:07,708 - INFO - CLOSED short at 2099.89 | PnL: 0.00% | $-0.19 +2025-03-10 13:46:07,708 - INFO - OPENED LONG at 2099.89 | Stop loss: 2089.375607142857 | Take profit: 2131.410764285714 +2025-03-10 13:46:07,808 - INFO - CLOSED long at 2103.48 | PnL: 0.17% | $0.14 +2025-03-10 13:46:07,809 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.012342857143 | Take profit: 2071.905385714286 +2025-03-10 13:46:07,835 - INFO - CLOSED short at 2104.93 | PnL: -0.07% | $-0.34 +2025-03-10 13:46:07,835 - INFO - OPENED LONG at 2104.93 | Stop loss: 2094.390407142857 | Take profit: 2136.526364285714 +2025-03-10 13:46:07,861 - INFO - CLOSED long at 2103.81 | PnL: -0.05% | $-0.30 +2025-03-10 13:46:07,862 - INFO - OPENED SHORT at 2103.81 | Stop loss: 2114.343992857143 | Take profit: 2072.2304357142857 +2025-03-10 13:46:07,929 - INFO - CLOSED short at 2103.07 | PnL: 0.04% | $-0.13 +2025-03-10 13:46:07,930 - INFO - OPENED LONG at 2103.07 | Stop loss: 2092.5397071428574 | Take profit: 2134.6384642857147 +2025-03-10 13:46:08,438 - INFO - CLOSED long at 2108.0 | PnL: 0.23% | $0.26 +2025-03-10 13:46:08,481 - INFO - OPENED LONG at 2112.28 | Stop loss: 2101.7036571428575 | Take profit: 2143.9866142857145 +2025-03-10 13:46:08,505 - INFO - CLOSED long at 2110.87 | PnL: -0.07% | $-0.33 +2025-03-10 13:46:08,506 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.439292857143 | Take profit: 2079.1845357142856 +2025-03-10 13:46:08,524 - INFO - CLOSED short at 2110.4 | PnL: 0.02% | $-0.15 +2025-03-10 13:46:08,550 - INFO - OPENED SHORT at 2113.7 | Stop loss: 2124.2834428571427 | Take profit: 2081.9720857142856 +2025-03-10 13:46:08,655 - INFO - CLOSED short at 2112.28 | PnL: 0.07% | $-0.06 +2025-03-10 13:46:08,701 - INFO - OPENED SHORT at 2112.11 | Stop loss: 2122.685492857143 | Take profit: 2080.405935714286 +2025-03-10 13:46:09,047 - INFO - CLOSED short at 2117.6 | PnL: -0.26% | $-0.71 +2025-03-10 13:46:09,112 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.57, Avg Loss=$-0.43 +2025-03-10 13:46:09,113 - INFO - Episode 4: Reward=-108.28, Balance=$98.17, Win Rate=37.8%, Trades=37, Episode PnL=$-1.22, Total PnL=$-26.22, Max Drawdown=3.6%, Pred Accuracy=96.8% +2025-03-10 13:46:09,654 - INFO - OPENED SHORT at 2064.32 | Stop loss: 2074.6565428571434 | Take profit: 2033.3327857142858 +2025-03-10 13:46:10,117 - INFO - STOP LOSS hit for short at 2074.6565428571434 | PnL: -0.50% | $-1.19 +2025-03-10 13:46:10,156 - INFO - OPENED SHORT at 2072.91 | Stop loss: 2083.2894928571427 | Take profit: 2041.7939357142857 +2025-03-10 13:46:10,374 - INFO - CLOSED short at 2070.28 | PnL: 0.13% | $0.05 +2025-03-10 13:46:10,374 - INFO - OPENED LONG at 2070.28 | Stop loss: 2059.913657142857 | Take profit: 2101.3566142857144 +2025-03-10 13:46:10,830 - INFO - CLOSED long at 2065.08 | PnL: -0.25% | $-0.69 +2025-03-10 13:46:10,830 - INFO - OPENED SHORT at 2065.08 | Stop loss: 2075.420342857143 | Take profit: 2034.0813857142857 +2025-03-10 13:46:11,203 - INFO - CLOSED short at 2072.75 | PnL: -0.37% | $-0.92 +2025-03-10 13:46:11,203 - INFO - OPENED LONG at 2072.75 | Stop loss: 2062.371307142857 | Take profit: 2103.863664285714 +2025-03-10 13:46:11,230 - INFO - CLOSED long at 2073.11 | PnL: 0.02% | $-0.16 +2025-03-10 13:46:11,230 - INFO - OPENED SHORT at 2073.11 | Stop loss: 2083.490492857143 | Take profit: 2041.990935714286 +2025-03-10 13:46:11,419 - INFO - CLOSED short at 2070.4 | PnL: 0.13% | $0.06 +2025-03-10 13:46:11,563 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.6500571428573 | Take profit: 2098.0274142857143 +2025-03-10 13:46:11,771 - INFO - CLOSED long at 2067.89 | PnL: 0.04% | $-0.11 +2025-03-10 13:46:11,890 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.978357142857 | Take profit: 2100.4025142857145 +2025-03-10 13:46:11,917 - INFO - CLOSED long at 2067.86 | PnL: -0.07% | $-0.33 +2025-03-10 13:46:11,944 - INFO - OPENED LONG at 2067.59 | Stop loss: 2057.237107142857 | Take profit: 2098.6262642857146 +2025-03-10 13:46:12,246 - INFO - CLOSED long at 2068.69 | PnL: 0.05% | $-0.09 +2025-03-10 13:46:12,489 - INFO - OPENED LONG at 2067.8 | Stop loss: 2057.446057142857 | Take profit: 2098.8394142857146 +2025-03-10 13:46:12,528 - INFO - CLOSED long at 2068.18 | PnL: 0.02% | $-0.16 +2025-03-10 13:46:12,529 - INFO - OPENED SHORT at 2068.18 | Stop loss: 2078.5358428571426 | Take profit: 2037.1348857142855 +2025-03-10 13:46:12,602 - INFO - CLOSED short at 2067.88 | PnL: 0.01% | $-0.16 +2025-03-10 13:46:12,602 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.525657142857 | Take profit: 2098.9206142857142 +2025-03-10 13:46:12,647 - INFO - CLOSED long at 2064.99 | PnL: -0.14% | $-0.46 +2025-03-10 13:46:12,647 - INFO - OPENED SHORT at 2064.99 | Stop loss: 2075.3298928571426 | Take profit: 2033.9927357142856 +2025-03-10 13:46:12,677 - INFO - CLOSED short at 2065.83 | PnL: -0.04% | $-0.27 +2025-03-10 13:46:12,724 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.601242857143 | Take profit: 2034.2586857142858 +2025-03-10 13:46:12,796 - INFO - CLOSED short at 2061.78 | PnL: 0.17% | $0.13 +2025-03-10 13:46:13,377 - INFO - OPENED SHORT at 2059.3 | Stop loss: 2069.6114428571427 | Take profit: 2028.3880857142858 +2025-03-10 13:46:14,688 - INFO - CLOSED short at 2064.49 | PnL: -0.25% | $-0.67 +2025-03-10 13:46:14,714 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6765928571426 | Take profit: 2035.3126357142855 +2025-03-10 13:46:14,766 - INFO - CLOSED short at 2066.79 | PnL: -0.02% | $-0.23 +2025-03-10 13:46:14,817 - INFO - OPENED LONG at 2067.01 | Stop loss: 2056.6600071428575 | Take profit: 2098.037564285715 +2025-03-10 13:46:15,571 - INFO - CLOSED long at 2063.95 | PnL: -0.15% | $-0.47 +2025-03-10 13:46:15,593 - INFO - OPENED SHORT at 2063.97 | Stop loss: 2074.3047928571423 | Take profit: 2032.9880357142854 +2025-03-10 13:46:16,403 - INFO - CLOSED short at 2071.61 | PnL: -0.37% | $-0.88 +2025-03-10 13:46:16,431 - INFO - OPENED SHORT at 2074.37 | Stop loss: 2084.7567928571425 | Take profit: 2043.2320357142855 +2025-03-10 13:46:17,439 - INFO - CLOSED short at 2064.11 | PnL: 0.49% | $0.73 +2025-03-10 13:46:17,439 - INFO - OPENED LONG at 2064.11 | Stop loss: 2053.774507142857 | Take profit: 2095.0940642857145 +2025-03-10 13:46:17,493 - INFO - CLOSED long at 2066.33 | PnL: 0.11% | $0.01 +2025-03-10 13:46:17,494 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6765928571426 | Take profit: 2035.3126357142855 +2025-03-10 13:46:17,920 - INFO - CLOSED short at 2063.9 | PnL: 0.12% | $0.03 +2025-03-10 13:46:17,921 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.5655571428574 | Take profit: 2094.8809142857144 +2025-03-10 13:46:18,099 - INFO - CLOSED long at 2064.08 | PnL: 0.01% | $-0.17 +2025-03-10 13:46:18,307 - INFO - OPENED LONG at 2070.31 | Stop loss: 2059.943507142857 | Take profit: 2101.387064285714 +2025-03-10 13:46:18,327 - INFO - CLOSED long at 2070.24 | PnL: -0.00% | $-0.19 +2025-03-10 13:46:18,606 - INFO - OPENED LONG at 2077.61 | Stop loss: 2067.2070071428575 | Take profit: 2108.796564285715 +2025-03-10 13:46:18,714 - INFO - TAKE PROFIT hit for long at 2108.796564285715 | PnL: 1.50% | $2.61 +2025-03-10 13:46:19,406 - INFO - OPENED LONG at 2112.46 | Stop loss: 2101.882757142857 | Take profit: 2144.1693142857143 +2025-03-10 13:46:19,659 - INFO - STOP LOSS hit for long at 2101.882757142857 | PnL: -0.50% | $-1.15 +2025-03-10 13:46:20,180 - INFO - OPENED SHORT at 2099.59 | Stop loss: 2110.102892857143 | Take profit: 2068.0737357142857 +2025-03-10 13:46:20,233 - INFO - CLOSED short at 2100.02 | PnL: -0.02% | $-0.23 +2025-03-10 13:46:20,233 - INFO - OPENED LONG at 2100.02 | Stop loss: 2089.504957142857 | Take profit: 2131.5427142857143 +2025-03-10 13:46:20,273 - INFO - CLOSED long at 2098.39 | PnL: -0.08% | $-0.34 +2025-03-10 13:46:20,274 - INFO - OPENED SHORT at 2098.39 | Stop loss: 2108.8968928571426 | Take profit: 2066.8917357142855 +2025-03-10 13:46:20,326 - INFO - CLOSED short at 2093.46 | PnL: 0.23% | $0.25 +2025-03-10 13:46:20,326 - INFO - OPENED LONG at 2093.46 | Stop loss: 2082.977757142857 | Take profit: 2124.8843142857145 +2025-03-10 13:46:20,348 - INFO - CLOSED long at 2093.33 | PnL: -0.01% | $-0.20 +2025-03-10 13:46:20,349 - INFO - OPENED SHORT at 2093.33 | Stop loss: 2103.8115928571424 | Take profit: 2061.907635714286 +2025-03-10 13:46:21,103 - INFO - CLOSED short at 2089.96 | PnL: 0.16% | $0.11 +2025-03-10 13:46:21,129 - INFO - OPENED LONG at 2087.0 | Stop loss: 2076.550057142857 | Take profit: 2118.327414285714 +2025-03-10 13:46:21,150 - INFO - CLOSED long at 2087.47 | PnL: 0.02% | $-0.15 +2025-03-10 13:46:21,176 - INFO - OPENED LONG at 2087.78 | Stop loss: 2077.3261571428575 | Take profit: 2119.119114285714 +2025-03-10 13:46:21,201 - INFO - CLOSED long at 2086.81 | PnL: -0.05% | $-0.28 +2025-03-10 13:46:21,243 - INFO - OPENED LONG at 2085.67 | Stop loss: 2075.2267071428573 | Take profit: 2116.9774642857146 +2025-03-10 13:46:21,275 - INFO - CLOSED long at 2089.2 | PnL: 0.17% | $0.13 +2025-03-10 13:46:21,390 - INFO - OPENED SHORT at 2091.95 | Stop loss: 2102.424692857143 | Take profit: 2060.5483357142853 +2025-03-10 13:46:21,636 - INFO - STOP LOSS hit for short at 2102.424692857143 | PnL: -0.50% | $-1.13 +2025-03-10 13:46:22,189 - INFO - OPENED SHORT at 2104.73 | Stop loss: 2115.268592857143 | Take profit: 2073.1366357142856 +2025-03-10 13:46:22,770 - INFO - STOP LOSS hit for short at 2115.268592857143 | PnL: -0.50% | $-1.12 +2025-03-10 13:46:22,797 - INFO - OPENED SHORT at 2117.39 | Stop loss: 2127.991892857143 | Take profit: 2085.6067357142856 +2025-03-10 13:46:23,014 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.41, Avg Loss=$-0.47 +2025-03-10 13:46:23,015 - INFO - Episode 5: Reward=-113.22, Balance=$92.40, Win Rate=28.6%, Trades=35, Episode PnL=$-5.61, Total PnL=$-33.82, Max Drawdown=7.6%, Pred Accuracy=96.9% +2025-03-10 13:46:23,246 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.219392857143 | Take profit: 2031.9242357142857 +2025-03-10 13:46:23,747 - INFO - CLOSED short at 2067.69 | PnL: -0.23% | $-0.66 +2025-03-10 13:46:23,747 - INFO - OPENED LONG at 2067.69 | Stop loss: 2057.3366071428572 | Take profit: 2098.727764285715 +2025-03-10 13:46:23,772 - INFO - CLOSED long at 2070.26 | PnL: 0.12% | $0.05 +2025-03-10 13:46:23,772 - INFO - OPENED SHORT at 2070.26 | Stop loss: 2080.626242857143 | Take profit: 2039.183685714286 +2025-03-10 13:46:24,910 - INFO - CLOSED short at 2071.39 | PnL: -0.05% | $-0.31 +2025-03-10 13:46:24,911 - INFO - OPENED LONG at 2071.39 | Stop loss: 2061.018107142857 | Take profit: 2102.483264285714 +2025-03-10 13:46:25,251 - INFO - CLOSED long at 2069.35 | PnL: -0.10% | $-0.39 +2025-03-10 13:46:25,603 - INFO - OPENED LONG at 2069.2 | Stop loss: 2058.8390571428567 | Take profit: 2100.260414285714 +2025-03-10 13:46:25,913 - INFO - CLOSED long at 2065.28 | PnL: -0.19% | $-0.57 +2025-03-10 13:46:25,914 - INFO - OPENED SHORT at 2065.28 | Stop loss: 2075.6213428571427 | Take profit: 2034.2783857142858 +2025-03-10 13:46:26,026 - INFO - CLOSED short at 2068.18 | PnL: -0.14% | $-0.47 +2025-03-10 13:46:26,027 - INFO - OPENED LONG at 2068.18 | Stop loss: 2057.824157142857 | Take profit: 2099.225114285714 +2025-03-10 13:46:26,053 - INFO - CLOSED long at 2065.69 | PnL: -0.12% | $-0.43 +2025-03-10 13:46:26,053 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.033392857143 | Take profit: 2034.6822357142858 +2025-03-10 13:46:26,144 - INFO - CLOSED short at 2066.15 | PnL: -0.02% | $-0.24 +2025-03-10 13:46:26,145 - INFO - OPENED LONG at 2066.15 | Stop loss: 2055.8043071428574 | Take profit: 2097.164664285714 +2025-03-10 13:46:26,166 - INFO - CLOSED long at 2065.26 | PnL: -0.04% | $-0.28 +2025-03-10 13:46:26,167 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.601242857143 | Take profit: 2034.2586857142858 +2025-03-10 13:46:26,192 - INFO - CLOSED short at 2062.89 | PnL: 0.11% | $0.03 +2025-03-10 13:46:26,193 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:46:26,814 - INFO - CLOSED long at 2060.3 | PnL: -0.13% | $-0.43 +2025-03-10 13:46:26,814 - INFO - OPENED SHORT at 2060.3 | Stop loss: 2070.616442857143 | Take profit: 2029.373085714286 +2025-03-10 13:46:27,020 - INFO - CLOSED short at 2063.0 | PnL: -0.13% | $-0.44 +2025-03-10 13:46:27,080 - INFO - OPENED LONG at 2061.7 | Stop loss: 2051.3765571428567 | Take profit: 2092.647914285714 +2025-03-10 13:46:27,291 - INFO - CLOSED long at 2058.28 | PnL: -0.17% | $-0.51 +2025-03-10 13:46:27,292 - INFO - OPENED SHORT at 2058.28 | Stop loss: 2068.586342857143 | Take profit: 2027.3833857142859 +2025-03-10 13:46:27,804 - INFO - STOP LOSS hit for short at 2068.586342857143 | PnL: -0.50% | $-1.14 +2025-03-10 13:46:27,828 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3749428571427 | Take profit: 2040.8975857142857 +2025-03-10 13:46:29,155 - INFO - CLOSED short at 2073.99 | PnL: -0.10% | $-0.37 +2025-03-10 13:46:29,156 - INFO - OPENED LONG at 2073.99 | Stop loss: 2063.605107142857 | Take profit: 2105.1222642857138 +2025-03-10 13:46:29,311 - INFO - CLOSED long at 2072.09 | PnL: -0.09% | $-0.36 +2025-03-10 13:46:29,311 - INFO - OPENED SHORT at 2072.09 | Stop loss: 2082.4653928571433 | Take profit: 2040.9862357142858 +2025-03-10 13:46:29,392 - INFO - CLOSED short at 2067.7 | PnL: 0.21% | $0.21 +2025-03-10 13:46:29,393 - INFO - OPENED LONG at 2067.7 | Stop loss: 2057.346557142857 | Take profit: 2098.737914285714 +2025-03-10 13:46:29,653 - INFO - CLOSED long at 2070.1 | PnL: 0.12% | $0.03 +2025-03-10 13:46:29,654 - INFO - OPENED SHORT at 2070.1 | Stop loss: 2080.4654428571425 | Take profit: 2039.0260857142857 +2025-03-10 13:46:30,050 - INFO - CLOSED short at 2066.33 | PnL: 0.18% | $0.15 +2025-03-10 13:46:30,051 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.9834071428572 | Take profit: 2097.3473642857143 +2025-03-10 13:46:30,096 - INFO - CLOSED long at 2063.01 | PnL: -0.16% | $-0.49 +2025-03-10 13:46:30,097 - INFO - OPENED SHORT at 2063.01 | Stop loss: 2073.339992857143 | Take profit: 2032.042435714286 +2025-03-10 13:46:31,238 - INFO - STOP LOSS hit for short at 2073.339992857143 | PnL: -0.50% | $-1.11 +2025-03-10 13:46:31,316 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.369892857143 | Take profit: 2041.8727357142855 +2025-03-10 13:46:31,498 - INFO - CLOSED short at 2077.61 | PnL: -0.22% | $-0.59 +2025-03-10 13:46:31,527 - INFO - OPENED SHORT at 2085.56 | Stop loss: 2096.002742857143 | Take profit: 2054.2541857142855 +2025-03-10 13:46:31,572 - INFO - STOP LOSS hit for short at 2096.002742857143 | PnL: -0.50% | $-1.09 +2025-03-10 13:46:31,598 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.368442857143 | Take profit: 2098.7170857142855 +2025-03-10 13:46:31,740 - INFO - STOP LOSS hit for short at 2141.368442857143 | PnL: -0.50% | $-1.08 +2025-03-10 13:46:31,872 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.0911571428574 | Take profit: 2166.8241142857146 +2025-03-10 13:46:31,955 - INFO - STOP LOSS hit for long at 2124.0911571428574 | PnL: -0.50% | $-1.07 +2025-03-10 13:46:32,220 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.167942857143 | Take profit: 2078.9185857142857 +2025-03-10 13:46:32,308 - INFO - CLOSED short at 2112.95 | PnL: -0.11% | $-0.37 +2025-03-10 13:46:32,309 - INFO - OPENED LONG at 2112.95 | Stop loss: 2102.370307142857 | Take profit: 2144.666664285714 +2025-03-10 13:46:32,333 - INFO - CLOSED long at 2112.46 | PnL: -0.02% | $-0.22 +2025-03-10 13:46:32,333 - INFO - OPENED SHORT at 2112.46 | Stop loss: 2123.0372428571427 | Take profit: 2080.7506857142857 +2025-03-10 13:46:32,781 - INFO - CLOSED short at 2102.29 | PnL: 0.48% | $0.67 +2025-03-10 13:46:32,782 - INFO - OPENED LONG at 2102.29 | Stop loss: 2091.7636071428574 | Take profit: 2133.8467642857145 +2025-03-10 13:46:32,808 - INFO - CLOSED long at 2099.25 | PnL: -0.14% | $-0.43 +2025-03-10 13:46:32,809 - INFO - OPENED SHORT at 2099.25 | Stop loss: 2109.761192857143 | Take profit: 2067.738835714286 +2025-03-10 13:46:33,243 - INFO - CLOSED short at 2092.46 | PnL: 0.32% | $0.39 +2025-03-10 13:46:33,574 - INFO - OPENED LONG at 2081.49 | Stop loss: 2071.067607142857 | Take profit: 2112.734764285714 +2025-03-10 13:46:34,602 - INFO - CLOSED long at 2098.49 | PnL: 0.82% | $1.26 +2025-03-10 13:46:34,602 - INFO - OPENED SHORT at 2098.49 | Stop loss: 2108.9973928571426 | Take profit: 2066.9902357142855 +2025-03-10 13:46:34,834 - INFO - CLOSED short at 2103.81 | PnL: -0.25% | $-0.63 +2025-03-10 13:46:34,869 - INFO - OPENED SHORT at 2103.07 | Stop loss: 2113.6002928571434 | Take profit: 2071.501535714286 +2025-03-10 13:46:35,311 - INFO - CLOSED short at 2104.73 | PnL: -0.08% | $-0.32 +2025-03-10 13:46:35,311 - INFO - OPENED LONG at 2104.73 | Stop loss: 2094.1914071428573 | Take profit: 2136.3233642857144 +2025-03-10 13:46:35,341 - INFO - CLOSED long at 2107.25 | PnL: 0.12% | $0.03 +2025-03-10 13:46:35,341 - INFO - OPENED SHORT at 2107.25 | Stop loss: 2117.801192857143 | Take profit: 2075.6188357142855 +2025-03-10 13:46:35,900 - INFO - STOP LOSS hit for short at 2117.801192857143 | PnL: -0.50% | $-1.06 +2025-03-10 13:46:36,017 - INFO - OPENED LONG at 2116.81 | Stop loss: 2106.211007142857 | Take profit: 2148.5845642857144 +2025-03-10 13:46:36,145 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.31, Avg Loss=$-0.58 +2025-03-10 13:46:36,146 - INFO - Episode 6: Reward=-112.59, Balance=$87.79, Win Rate=25.7%, Trades=35, Episode PnL=$-9.89, Total PnL=$-46.04, Max Drawdown=12.2%, Pred Accuracy=97.0% +2025-03-10 13:46:36,344 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:46:37,010 - INFO - CLOSED long at 2071.44 | PnL: 0.41% | $0.62 +2025-03-10 13:46:37,040 - INFO - OPENED SHORT at 2073.73 | Stop loss: 2084.113592857143 | Take profit: 2042.6016357142857 +2025-03-10 13:46:37,226 - INFO - CLOSED short at 2069.37 | PnL: 0.21% | $0.22 +2025-03-10 13:46:37,226 - INFO - OPENED LONG at 2069.37 | Stop loss: 2059.008207142857 | Take profit: 2100.432964285714 +2025-03-10 13:46:37,256 - INFO - CLOSED long at 2070.9 | PnL: 0.07% | $-0.05 +2025-03-10 13:46:37,256 - INFO - OPENED SHORT at 2070.9 | Stop loss: 2081.269442857143 | Take profit: 2039.8140857142857 +2025-03-10 13:46:37,518 - INFO - CLOSED short at 2069.19 | PnL: 0.08% | $-0.03 +2025-03-10 13:46:37,519 - INFO - OPENED LONG at 2069.19 | Stop loss: 2058.829107142857 | Take profit: 2100.2502642857144 +2025-03-10 13:46:37,655 - INFO - CLOSED long at 2066.39 | PnL: -0.14% | $-0.47 +2025-03-10 13:46:37,683 - INFO - OPENED LONG at 2065.99 | Stop loss: 2055.645107142857 | Take profit: 2097.002264285714 +2025-03-10 13:46:38,192 - INFO - CLOSED long at 2072.7 | PnL: 0.32% | $0.45 +2025-03-10 13:46:38,193 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.078442857143 | Take profit: 2041.5870857142854 +2025-03-10 13:46:38,266 - INFO - CLOSED short at 2074.29 | PnL: -0.08% | $-0.35 +2025-03-10 13:46:38,266 - INFO - OPENED LONG at 2074.29 | Stop loss: 2063.9036071428573 | Take profit: 2105.4267642857144 +2025-03-10 13:46:38,338 - INFO - CLOSED long at 2071.92 | PnL: -0.11% | $-0.43 +2025-03-10 13:46:38,338 - INFO - OPENED SHORT at 2071.92 | Stop loss: 2082.294542857143 | Take profit: 2040.8187857142857 +2025-03-10 13:46:38,370 - INFO - CLOSED short at 2070.4 | PnL: 0.07% | $-0.05 +2025-03-10 13:46:38,370 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.033057142857 | Take profit: 2101.4784142857143 +2025-03-10 13:46:38,406 - INFO - CLOSED long at 2071.11 | PnL: 0.03% | $-0.13 +2025-03-10 13:46:38,441 - INFO - OPENED LONG at 2069.46 | Stop loss: 2059.097757142857 | Take profit: 2100.5243142857144 +2025-03-10 13:46:38,745 - INFO - CLOSED long at 2068.58 | PnL: -0.04% | $-0.28 +2025-03-10 13:46:38,746 - INFO - OPENED SHORT at 2068.58 | Stop loss: 2078.937842857143 | Take profit: 2037.5288857142857 +2025-03-10 13:46:38,773 - INFO - CLOSED short at 2068.8 | PnL: -0.01% | $-0.22 +2025-03-10 13:46:38,773 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.4410571428575 | Take profit: 2099.8544142857145 +2025-03-10 13:46:38,926 - INFO - CLOSED long at 2069.2 | PnL: 0.02% | $-0.16 +2025-03-10 13:46:38,927 - INFO - OPENED SHORT at 2069.2 | Stop loss: 2079.5609428571424 | Take profit: 2038.1395857142854 +2025-03-10 13:46:38,965 - INFO - CLOSED short at 2070.3 | PnL: -0.05% | $-0.30 +2025-03-10 13:46:38,965 - INFO - OPENED LONG at 2070.3 | Stop loss: 2059.9335571428574 | Take profit: 2101.3769142857145 +2025-03-10 13:46:39,099 - INFO - CLOSED long at 2070.73 | PnL: 0.02% | $-0.16 +2025-03-10 13:46:39,126 - INFO - OPENED LONG at 2068.5 | Stop loss: 2058.142557142857 | Take profit: 2099.5499142857143 +2025-03-10 13:46:39,155 - INFO - CLOSED long at 2068.69 | PnL: 0.01% | $-0.18 +2025-03-10 13:46:39,155 - INFO - OPENED SHORT at 2068.69 | Stop loss: 2079.048392857143 | Take profit: 2037.6372357142857 +2025-03-10 13:46:39,183 - INFO - CLOSED short at 2067.84 | PnL: 0.04% | $-0.12 +2025-03-10 13:46:39,192 - INFO - OPENED LONG at 2067.84 | Stop loss: 2057.485857142857 | Take profit: 2098.8800142857144 +2025-03-10 13:46:39,988 - INFO - CLOSED long at 2063.59 | PnL: -0.21% | $-0.60 +2025-03-10 13:46:39,989 - INFO - OPENED SHORT at 2063.59 | Stop loss: 2073.922892857143 | Take profit: 2032.613735714286 +2025-03-10 13:46:40,014 - INFO - CLOSED short at 2064.96 | PnL: -0.07% | $-0.32 +2025-03-10 13:46:40,014 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.620257142857 | Take profit: 2095.9568142857142 +2025-03-10 13:46:40,037 - INFO - CLOSED long at 2066.24 | PnL: 0.06% | $-0.07 +2025-03-10 13:46:40,037 - INFO - OPENED SHORT at 2066.24 | Stop loss: 2076.586142857143 | Take profit: 2035.2239857142854 +2025-03-10 13:46:40,893 - INFO - CLOSED short at 2063.39 | PnL: 0.14% | $0.07 +2025-03-10 13:46:40,894 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.058107142857 | Take profit: 2094.363264285714 +2025-03-10 13:46:40,935 - INFO - CLOSED long at 2064.79 | PnL: 0.07% | $-0.06 +2025-03-10 13:46:40,935 - INFO - OPENED SHORT at 2064.79 | Stop loss: 2075.128892857143 | Take profit: 2033.7957357142857 +2025-03-10 13:46:41,781 - INFO - CLOSED short at 2061.6 | PnL: 0.15% | $0.11 +2025-03-10 13:46:41,782 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.277057142857 | Take profit: 2092.546414285714 +2025-03-10 13:46:41,827 - INFO - CLOSED long at 2061.3 | PnL: -0.01% | $-0.22 +2025-03-10 13:46:41,827 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.621442857143 | Take profit: 2030.358085714286 +2025-03-10 13:46:41,869 - INFO - CLOSED short at 2062.69 | PnL: -0.07% | $-0.32 +2025-03-10 13:46:41,869 - INFO - OPENED LONG at 2062.69 | Stop loss: 2052.3616071428573 | Take profit: 2093.6527642857145 +2025-03-10 13:46:41,898 - INFO - CLOSED long at 2063.4 | PnL: 0.03% | $-0.13 +2025-03-10 13:46:41,899 - INFO - OPENED SHORT at 2063.4 | Stop loss: 2073.7319428571427 | Take profit: 2032.4265857142857 +2025-03-10 13:46:41,926 - INFO - CLOSED short at 2066.36 | PnL: -0.14% | $-0.47 +2025-03-10 13:46:41,926 - INFO - OPENED LONG at 2066.36 | Stop loss: 2056.013257142857 | Take profit: 2097.3778142857145 +2025-03-10 13:46:42,038 - INFO - CLOSED long at 2066.33 | PnL: -0.00% | $-0.19 +2025-03-10 13:46:42,038 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6765928571426 | Take profit: 2035.3126357142855 +2025-03-10 13:46:42,116 - INFO - CLOSED short at 2066.79 | PnL: -0.02% | $-0.23 +2025-03-10 13:46:42,117 - INFO - OPENED LONG at 2066.79 | Stop loss: 2056.441107142857 | Take profit: 2097.814264285714 +2025-03-10 13:46:42,173 - INFO - CLOSED long at 2067.33 | PnL: 0.03% | $-0.14 +2025-03-10 13:46:42,174 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.6815928571427 | Take profit: 2036.2976357142854 +2025-03-10 13:46:42,371 - INFO - STOP LOSS hit for short at 2077.6815928571427 | PnL: -0.50% | $-1.14 +2025-03-10 13:46:42,399 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.399992857143 | Take profit: 2043.862435714286 +2025-03-10 13:46:42,990 - INFO - CLOSED short at 2063.97 | PnL: 0.53% | $0.81 +2025-03-10 13:46:42,991 - INFO - OPENED LONG at 2063.97 | Stop loss: 2053.635207142857 | Take profit: 2094.951964285714 +2025-03-10 13:46:43,329 - INFO - CLOSED long at 2070.2 | PnL: 0.30% | $0.38 +2025-03-10 13:46:43,330 - INFO - OPENED SHORT at 2070.2 | Stop loss: 2080.5659428571425 | Take profit: 2039.1245857142856 +2025-03-10 13:46:43,756 - INFO - CLOSED short at 2070.61 | PnL: -0.02% | $-0.23 +2025-03-10 13:46:43,979 - INFO - OPENED SHORT at 2074.35 | Stop loss: 2084.7366928571428 | Take profit: 2043.2123357142855 +2025-03-10 13:46:44,419 - INFO - CLOSED short at 2065.45 | PnL: 0.43% | $0.62 +2025-03-10 13:46:44,442 - INFO - OPENED SHORT at 2068.1 | Stop loss: 2078.4554428571428 | Take profit: 2037.0560857142857 +2025-03-10 13:46:45,487 - INFO - CLOSED short at 2065.12 | PnL: 0.14% | $0.08 +2025-03-10 13:46:45,488 - INFO - OPENED LONG at 2065.12 | Stop loss: 2054.779457142857 | Take profit: 2096.1192142857144 +2025-03-10 13:46:45,512 - INFO - CLOSED long at 2068.33 | PnL: 0.16% | $0.11 +2025-03-10 13:46:45,513 - INFO - OPENED SHORT at 2068.33 | Stop loss: 2078.686592857143 | Take profit: 2037.2826357142858 +2025-03-10 13:46:45,831 - INFO - CLOSED short at 2069.34 | PnL: -0.05% | $-0.28 +2025-03-10 13:46:45,831 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.978357142857 | Take profit: 2100.4025142857145 +2025-03-10 13:46:45,864 - INFO - CLOSED long at 2069.81 | PnL: 0.02% | $-0.15 +2025-03-10 13:46:45,864 - INFO - OPENED SHORT at 2069.81 | Stop loss: 2080.173992857143 | Take profit: 2038.7404357142857 +2025-03-10 13:46:46,085 - INFO - STOP LOSS hit for short at 2080.173992857143 | PnL: -0.50% | $-1.14 +2025-03-10 13:46:46,465 - INFO - OPENED LONG at 2126.99 | Stop loss: 2116.340107142857 | Take profit: 2158.9172642857143 +2025-03-10 13:46:46,820 - INFO - STOP LOSS hit for long at 2116.340107142857 | PnL: -0.50% | $-1.13 +2025-03-10 13:46:46,921 - INFO - OPENED LONG at 2109.05 | Stop loss: 2098.4898071428574 | Take profit: 2140.7081642857147 +2025-03-10 13:46:47,057 - INFO - CLOSED long at 2112.46 | PnL: 0.16% | $0.11 +2025-03-10 13:46:47,058 - INFO - OPENED SHORT at 2112.46 | Stop loss: 2123.0372428571427 | Take profit: 2080.7506857142857 +2025-03-10 13:46:48,032 - INFO - CLOSED short at 2083.97 | PnL: 1.35% | $2.33 +2025-03-10 13:46:48,033 - INFO - OPENED LONG at 2083.97 | Stop loss: 2073.535207142857 | Take profit: 2115.251964285714 +2025-03-10 13:46:48,916 - INFO - CLOSED long at 2097.11 | PnL: 0.63% | $1.01 +2025-03-10 13:46:48,917 - INFO - OPENED SHORT at 2097.11 | Stop loss: 2107.6104928571426 | Take profit: 2065.630935714286 +2025-03-10 13:46:49,598 - INFO - STOP LOSS hit for short at 2107.6104928571426 | PnL: -0.50% | $-1.16 +2025-03-10 13:46:49,621 - INFO - OPENED SHORT at 2112.28 | Stop loss: 2122.856342857143 | Take profit: 2080.573385714286 +2025-03-10 13:46:50,039 - INFO - CLOSED short at 2108.99 | PnL: 0.16% | $0.11 +2025-03-10 13:46:50,040 - INFO - OPENED LONG at 2108.99 | Stop loss: 2098.4301071428567 | Take profit: 2140.647264285714 +2025-03-10 13:46:50,081 - INFO - CLOSED long at 2111.19 | PnL: 0.10% | $0.01 +2025-03-10 13:46:50,081 - INFO - OPENED SHORT at 2111.19 | Stop loss: 2121.760892857143 | Take profit: 2079.4997357142856 +2025-03-10 13:46:50,209 - INFO - CLOSED short at 2117.39 | PnL: -0.29% | $-0.75 +2025-03-10 13:46:50,210 - INFO - OPENED LONG at 2117.39 | Stop loss: 2106.788107142857 | Take profit: 2149.173264285714 +2025-03-10 13:46:50,253 - INFO - CLOSED long at 2115.3 | PnL: -0.10% | $-0.38 +2025-03-10 13:46:50,254 - INFO - OPENED SHORT at 2115.3 | Stop loss: 2125.891442857143 | Take profit: 2083.5480857142857 +2025-03-10 13:46:50,403 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.47, Avg Loss=$-0.35 +2025-03-10 13:46:50,404 - INFO - Episode 7: Reward=-112.36, Balance=$94.99, Win Rate=30.6%, Trades=49, Episode PnL=$-4.05, Total PnL=$-51.05, Max Drawdown=6.9%, Pred Accuracy=97.1% +2025-03-10 13:46:50,928 - INFO - OPENED SHORT at 2061.79 | Stop loss: 2072.1138928571427 | Take profit: 2030.8407357142858 +2025-03-10 13:46:51,387 - INFO - STOP LOSS hit for short at 2072.1138928571427 | PnL: -0.50% | $-1.19 +2025-03-10 13:46:51,433 - INFO - OPENED SHORT at 2072.91 | Stop loss: 2083.2894928571427 | Take profit: 2041.7939357142857 +2025-03-10 13:46:51,692 - INFO - CLOSED short at 2070.79 | PnL: 0.10% | $0.00 +2025-03-10 13:46:51,692 - INFO - OPENED LONG at 2070.79 | Stop loss: 2060.421107142857 | Take profit: 2101.874264285714 +2025-03-10 13:46:51,717 - INFO - CLOSED long at 2070.28 | PnL: -0.02% | $-0.24 +2025-03-10 13:46:51,718 - INFO - OPENED SHORT at 2070.28 | Stop loss: 2080.6463428571433 | Take profit: 2039.203385714286 +2025-03-10 13:46:51,838 - INFO - CLOSED short at 2070.7 | PnL: -0.02% | $-0.24 +2025-03-10 13:46:51,838 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.331557142857 | Take profit: 2101.782914285714 +2025-03-10 13:46:52,112 - INFO - CLOSED long at 2065.99 | PnL: -0.23% | $-0.64 +2025-03-10 13:46:52,112 - INFO - OPENED SHORT at 2065.99 | Stop loss: 2076.3348928571427 | Take profit: 2034.9777357142855 +2025-03-10 13:46:52,525 - INFO - CLOSED short at 2073.11 | PnL: -0.34% | $-0.86 +2025-03-10 13:46:52,526 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.729507142857 | Take profit: 2104.2290642857142 +2025-03-10 13:46:52,553 - INFO - CLOSED long at 2072.7 | PnL: -0.02% | $-0.23 +2025-03-10 13:46:52,553 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.078442857143 | Take profit: 2041.5870857142854 +2025-03-10 13:46:52,668 - INFO - CLOSED short at 2070.4 | PnL: 0.11% | $0.02 +2025-03-10 13:46:52,669 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.033057142857 | Take profit: 2101.4784142857143 +2025-03-10 13:46:52,712 - INFO - CLOSED long at 2071.11 | PnL: 0.03% | $-0.13 +2025-03-10 13:46:52,712 - INFO - OPENED SHORT at 2071.11 | Stop loss: 2081.4804928571434 | Take profit: 2040.0209357142858 +2025-03-10 13:46:52,791 - INFO - CLOSED short at 2069.35 | PnL: 0.08% | $-0.03 +2025-03-10 13:46:52,791 - INFO - OPENED LONG at 2069.35 | Stop loss: 2058.988307142857 | Take profit: 2100.412664285714 +2025-03-10 13:46:52,836 - INFO - CLOSED long at 2068.32 | PnL: -0.05% | $-0.29 +2025-03-10 13:46:52,836 - INFO - OPENED SHORT at 2068.32 | Stop loss: 2078.676542857143 | Take profit: 2037.2727857142859 +2025-03-10 13:46:54,025 - INFO - CLOSED short at 2067.88 | PnL: 0.02% | $-0.15 +2025-03-10 13:46:54,025 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.525657142857 | Take profit: 2098.9206142857142 +2025-03-10 13:46:54,096 - INFO - CLOSED long at 2066.15 | PnL: -0.08% | $-0.35 +2025-03-10 13:46:54,096 - INFO - OPENED SHORT at 2066.15 | Stop loss: 2076.4956928571432 | Take profit: 2035.1353357142857 +2025-03-10 13:46:54,303 - INFO - CLOSED short at 2066.24 | PnL: -0.00% | $-0.20 +2025-03-10 13:46:54,303 - INFO - OPENED LONG at 2066.24 | Stop loss: 2055.8938571428566 | Take profit: 2097.256014285714 +2025-03-10 13:46:54,831 - INFO - CLOSED long at 2064.1 | PnL: -0.10% | $-0.39 +2025-03-10 13:46:54,832 - INFO - OPENED SHORT at 2064.1 | Stop loss: 2074.435442857143 | Take profit: 2033.1160857142856 +2025-03-10 13:46:55,089 - INFO - CLOSED short at 2061.09 | PnL: 0.15% | $0.09 +2025-03-10 13:46:55,090 - INFO - OPENED LONG at 2061.09 | Stop loss: 2050.7696071428572 | Take profit: 2092.0287642857143 +2025-03-10 13:46:55,109 - INFO - CLOSED long at 2059.61 | PnL: -0.07% | $-0.32 +2025-03-10 13:46:55,109 - INFO - OPENED SHORT at 2059.61 | Stop loss: 2069.922992857143 | Take profit: 2028.693435714286 +2025-03-10 13:46:55,929 - INFO - STOP LOSS hit for short at 2069.922992857143 | PnL: -0.50% | $-1.13 +2025-03-10 13:46:56,002 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.4149928571433 | Take profit: 2046.817435714286 +2025-03-10 13:46:56,723 - INFO - CLOSED short at 2064.31 | PnL: 0.66% | $1.04 +2025-03-10 13:46:56,724 - INFO - OPENED LONG at 2064.31 | Stop loss: 2053.973507142857 | Take profit: 2095.2970642857144 +2025-03-10 13:46:56,775 - INFO - CLOSED long at 2065.5 | PnL: 0.06% | $-0.08 +2025-03-10 13:46:56,776 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.842442857143 | Take profit: 2034.4950857142856 +2025-03-10 13:46:57,283 - INFO - CLOSED short at 2070.61 | PnL: -0.25% | $-0.65 +2025-03-10 13:46:57,284 - INFO - OPENED LONG at 2070.61 | Stop loss: 2060.2420071428573 | Take profit: 2101.6915642857143 +2025-03-10 13:46:57,309 - INFO - CLOSED long at 2071.99 | PnL: 0.07% | $-0.06 +2025-03-10 13:46:57,310 - INFO - OPENED SHORT at 2071.99 | Stop loss: 2082.3648928571424 | Take profit: 2040.8877357142856 +2025-03-10 13:46:57,338 - INFO - CLOSED short at 2068.19 | PnL: 0.18% | $0.16 +2025-03-10 13:46:57,338 - INFO - OPENED LONG at 2068.19 | Stop loss: 2057.834107142857 | Take profit: 2099.2352642857145 +2025-03-10 13:46:57,362 - INFO - CLOSED long at 2068.67 | PnL: 0.02% | $-0.14 +2025-03-10 13:46:57,362 - INFO - OPENED SHORT at 2068.67 | Stop loss: 2079.0282928571432 | Take profit: 2037.6175357142856 +2025-03-10 13:46:58,526 - INFO - CLOSED short at 2059.2 | PnL: 0.46% | $0.67 +2025-03-10 13:46:58,895 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.234442857143 | Take profit: 2032.9190857142858 +2025-03-10 13:46:59,065 - INFO - CLOSED short at 2064.08 | PnL: -0.01% | $-0.20 +2025-03-10 13:46:59,065 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.744657142857 | Take profit: 2095.0636142857143 +2025-03-10 13:46:59,112 - INFO - CLOSED long at 2061.21 | PnL: -0.14% | $-0.45 +2025-03-10 13:46:59,112 - INFO - OPENED SHORT at 2061.21 | Stop loss: 2071.5309928571432 | Take profit: 2030.269435714286 +2025-03-10 13:46:59,409 - INFO - STOP LOSS hit for short at 2071.5309928571432 | PnL: -0.50% | $-1.12 +2025-03-10 13:46:59,806 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2526428571427 | Take profit: 2107.4244857142858 +2025-03-10 13:47:00,512 - INFO - CLOSED short at 2119.07 | PnL: 0.96% | $1.58 +2025-03-10 13:47:00,512 - INFO - OPENED LONG at 2119.07 | Stop loss: 2108.4597071428575 | Take profit: 2150.8784642857145 +2025-03-10 13:47:00,562 - INFO - STOP LOSS hit for long at 2108.4597071428575 | PnL: -0.50% | $-1.13 +2025-03-10 13:47:00,687 - INFO - OPENED SHORT at 2112.95 | Stop loss: 2123.5296928571424 | Take profit: 2081.2333357142857 +2025-03-10 13:47:01,710 - INFO - CLOSED short at 2100.02 | PnL: 0.61% | $0.95 +2025-03-10 13:47:01,710 - INFO - OPENED LONG at 2100.02 | Stop loss: 2089.504957142857 | Take profit: 2131.5427142857143 +2025-03-10 13:47:02,019 - INFO - STOP LOSS hit for long at 2089.504957142857 | PnL: -0.50% | $-1.12 +2025-03-10 13:47:02,061 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848657142857 | Take profit: 2114.551614285714 +2025-03-10 13:47:02,164 - INFO - CLOSED long at 2082.44 | PnL: -0.04% | $-0.26 +2025-03-10 13:47:02,165 - INFO - OPENED SHORT at 2082.44 | Stop loss: 2092.867142857143 | Take profit: 2051.1809857142857 +2025-03-10 13:47:02,196 - INFO - CLOSED short at 2081.49 | PnL: 0.05% | $-0.10 +2025-03-10 13:47:02,196 - INFO - OPENED LONG at 2081.49 | Stop loss: 2071.067607142857 | Take profit: 2112.734764285714 +2025-03-10 13:47:02,463 - INFO - CLOSED long at 2085.8 | PnL: 0.21% | $0.20 +2025-03-10 13:47:02,489 - INFO - OPENED LONG at 2084.72 | Stop loss: 2074.281457142857 | Take profit: 2116.013214285714 +2025-03-10 13:47:02,539 - INFO - CLOSED long at 2085.85 | PnL: 0.05% | $-0.08 +2025-03-10 13:47:02,539 - INFO - OPENED SHORT at 2085.85 | Stop loss: 2096.2941928571427 | Take profit: 2054.539835714286 +2025-03-10 13:47:02,564 - INFO - CLOSED short at 2088.66 | PnL: -0.13% | $-0.43 +2025-03-10 13:47:02,565 - INFO - OPENED LONG at 2088.66 | Stop loss: 2078.201757142857 | Take profit: 2120.012314285714 +2025-03-10 13:47:02,635 - INFO - CLOSED long at 2089.96 | PnL: 0.06% | $-0.07 +2025-03-10 13:47:02,635 - INFO - OPENED SHORT at 2089.96 | Stop loss: 2100.424742857143 | Take profit: 2058.588185714286 +2025-03-10 13:47:02,842 - INFO - CLOSED short at 2089.79 | PnL: 0.01% | $-0.17 +2025-03-10 13:47:02,869 - INFO - OPENED SHORT at 2085.67 | Stop loss: 2096.113292857143 | Take profit: 2054.362535714286 +2025-03-10 13:47:03,012 - INFO - CLOSED short at 2097.8 | PnL: -0.58% | $-1.25 +2025-03-10 13:47:03,037 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.5048928571427 | Take profit: 2068.4677357142855 +2025-03-10 13:47:03,743 - INFO - CLOSED short at 2102.0 | PnL: -0.10% | $-0.35 +2025-03-10 13:47:03,766 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.941992857143 | Take profit: 2071.8364357142855 +2025-03-10 13:47:04,106 - INFO - STOP LOSS hit for short at 2113.941992857143 | PnL: -0.50% | $-1.08 +2025-03-10 13:47:04,178 - INFO - OPENED SHORT at 2112.28 | Stop loss: 2122.856342857143 | Take profit: 2080.573385714286 +2025-03-10 13:47:04,609 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.52, Avg Loss=$-0.46 +2025-03-10 13:47:04,610 - INFO - Episode 8: Reward=-118.55, Balance=$89.55, Win Rate=21.4%, Trades=42, Episode PnL=$-6.71, Total PnL=$-61.50, Max Drawdown=10.4%, Pred Accuracy=97.2% +2025-03-10 13:47:04,934 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.219392857143 | Take profit: 2031.9242357142857 +2025-03-10 13:47:05,347 - INFO - CLOSED short at 2071.63 | PnL: -0.42% | $-1.04 +2025-03-10 13:47:05,347 - INFO - OPENED LONG at 2071.63 | Stop loss: 2061.256907142857 | Take profit: 2102.7268642857143 +2025-03-10 13:47:05,376 - INFO - CLOSED long at 2070.99 | PnL: -0.03% | $-0.26 +2025-03-10 13:47:05,376 - INFO - OPENED SHORT at 2070.99 | Stop loss: 2081.3598928571428 | Take profit: 2039.9027357142854 +2025-03-10 13:47:05,541 - INFO - CLOSED short at 2067.69 | PnL: 0.16% | $0.12 +2025-03-10 13:47:05,541 - INFO - OPENED LONG at 2067.69 | Stop loss: 2057.3366071428572 | Take profit: 2098.727764285715 +2025-03-10 13:47:05,582 - INFO - CLOSED long at 2070.26 | PnL: 0.12% | $0.05 +2025-03-10 13:47:05,583 - INFO - OPENED SHORT at 2070.26 | Stop loss: 2080.626242857143 | Take profit: 2039.183685714286 +2025-03-10 13:47:05,625 - INFO - CLOSED short at 2071.44 | PnL: -0.06% | $-0.31 +2025-03-10 13:47:05,625 - INFO - OPENED LONG at 2071.44 | Stop loss: 2061.067857142857 | Take profit: 2102.534014285714 +2025-03-10 13:47:05,701 - INFO - CLOSED long at 2072.91 | PnL: 0.07% | $-0.06 +2025-03-10 13:47:05,702 - INFO - OPENED SHORT at 2072.91 | Stop loss: 2083.2894928571427 | Take profit: 2041.7939357142857 +2025-03-10 13:47:05,727 - INFO - CLOSED short at 2072.33 | PnL: 0.03% | $-0.14 +2025-03-10 13:47:05,727 - INFO - OPENED LONG at 2072.33 | Stop loss: 2061.953407142857 | Take profit: 2103.437364285714 +2025-03-10 13:47:06,628 - INFO - CLOSED long at 2069.96 | PnL: -0.11% | $-0.42 +2025-03-10 13:47:06,628 - INFO - OPENED SHORT at 2069.96 | Stop loss: 2080.3247428571426 | Take profit: 2038.8881857142858 +2025-03-10 13:47:06,704 - INFO - CLOSED short at 2071.39 | PnL: -0.07% | $-0.33 +2025-03-10 13:47:06,822 - INFO - OPENED SHORT at 2073.11 | Stop loss: 2083.490492857143 | Take profit: 2041.990935714286 +2025-03-10 13:47:09,248 - INFO - CLOSED short at 2061.9 | PnL: 0.54% | $0.85 +2025-03-10 13:47:10,206 - INFO - OPENED SHORT at 2062.69 | Stop loss: 2073.0183928571428 | Take profit: 2031.7272357142858 +2025-03-10 13:47:10,460 - INFO - CLOSED short at 2066.34 | PnL: -0.18% | $-0.54 +2025-03-10 13:47:10,460 - INFO - OPENED LONG at 2066.34 | Stop loss: 2055.9933571428573 | Take profit: 2097.3575142857144 +2025-03-10 13:47:10,488 - INFO - CLOSED long at 2066.79 | PnL: 0.02% | $-0.15 +2025-03-10 13:47:10,488 - INFO - OPENED SHORT at 2066.79 | Stop loss: 2077.1388928571428 | Take profit: 2035.7657357142857 +2025-03-10 13:47:10,682 - INFO - STOP LOSS hit for short at 2077.1388928571428 | PnL: -0.50% | $-1.17 +2025-03-10 13:47:10,723 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.399992857143 | Take profit: 2043.862435714286 +2025-03-10 13:47:11,414 - INFO - CLOSED short at 2064.4 | PnL: 0.51% | $0.79 +2025-03-10 13:47:11,414 - INFO - OPENED LONG at 2064.4 | Stop loss: 2054.0630571428574 | Take profit: 2095.388414285714 +2025-03-10 13:47:11,762 - INFO - CLOSED long at 2070.2 | PnL: 0.28% | $0.35 +2025-03-10 13:47:11,763 - INFO - OPENED SHORT at 2070.2 | Stop loss: 2080.5659428571425 | Take profit: 2039.1245857142856 +2025-03-10 13:47:12,210 - INFO - CLOSED short at 2074.35 | PnL: -0.20% | $-0.58 +2025-03-10 13:47:12,211 - INFO - OPENED LONG at 2074.35 | Stop loss: 2063.963307142857 | Take profit: 2105.487664285714 +2025-03-10 13:47:12,732 - INFO - CLOSED long at 2065.45 | PnL: -0.43% | $-1.02 +2025-03-10 13:47:12,824 - INFO - OPENED SHORT at 2069.0 | Stop loss: 2079.359942857143 | Take profit: 2037.9425857142858 +2025-03-10 13:47:13,243 - INFO - CLOSED short at 2064.11 | PnL: 0.24% | $0.26 +2025-03-10 13:47:13,243 - INFO - OPENED LONG at 2064.11 | Stop loss: 2053.774507142857 | Take profit: 2095.0940642857145 +2025-03-10 13:47:13,267 - INFO - CLOSED long at 2064.5 | PnL: 0.02% | $-0.16 +2025-03-10 13:47:13,267 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.837442857143 | Take profit: 2033.5100857142857 +2025-03-10 13:47:13,320 - INFO - CLOSED short at 2063.01 | PnL: 0.07% | $-0.05 +2025-03-10 13:47:13,320 - INFO - OPENED LONG at 2063.01 | Stop loss: 2052.6800071428574 | Take profit: 2093.977564285715 +2025-03-10 13:47:13,564 - INFO - CLOSED long at 2049.21 | PnL: -0.67% | $-1.47 +2025-03-10 13:47:13,565 - INFO - OPENED SHORT at 2049.21 | Stop loss: 2059.470992857143 | Take profit: 2018.4494357142858 +2025-03-10 13:47:13,614 - INFO - CLOSED short at 2049.5 | PnL: -0.01% | $-0.21 +2025-03-10 13:47:13,615 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.237557142857 | Take profit: 2080.264914285714 +2025-03-10 13:47:14,025 - INFO - CLOSED long at 2067.49 | PnL: 0.88% | $1.46 +2025-03-10 13:47:14,061 - INFO - OPENED SHORT at 2066.59 | Stop loss: 2076.937892857143 | Take profit: 2035.5687357142858 +2025-03-10 13:47:14,112 - INFO - CLOSED short at 2061.21 | PnL: 0.26% | $0.31 +2025-03-10 13:47:14,283 - INFO - OPENED SHORT at 2070.31 | Stop loss: 2080.676492857143 | Take profit: 2039.2329357142855 +2025-03-10 13:47:14,410 - INFO - CLOSED short at 2069.81 | PnL: 0.02% | $-0.15 +2025-03-10 13:47:14,473 - INFO - OPENED SHORT at 2073.49 | Stop loss: 2083.8723928571426 | Take profit: 2042.3652357142855 +2025-03-10 13:47:14,590 - INFO - CLOSED short at 2074.9 | PnL: -0.07% | $-0.32 +2025-03-10 13:47:14,618 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.4753428571426 | Take profit: 2044.9163857142858 +2025-03-10 13:47:14,641 - INFO - CLOSED short at 2077.61 | PnL: -0.07% | $-0.33 +2025-03-10 13:47:14,678 - INFO - OPENED SHORT at 2085.56 | Stop loss: 2096.002742857143 | Take profit: 2054.2541857142855 +2025-03-10 13:47:14,789 - INFO - STOP LOSS hit for short at 2096.002742857143 | PnL: -0.50% | $-1.14 +2025-03-10 13:47:14,841 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.368442857143 | Take profit: 2098.7170857142855 +2025-03-10 13:47:14,891 - INFO - CLOSED short at 2131.78 | PnL: -0.05% | $-0.28 +2025-03-10 13:47:15,091 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.0911571428574 | Take profit: 2166.8241142857146 +2025-03-10 13:47:15,256 - INFO - STOP LOSS hit for long at 2124.0911571428574 | PnL: -0.50% | $-1.12 +2025-03-10 13:47:15,955 - INFO - OPENED SHORT at 2103.33 | Stop loss: 2113.861592857143 | Take profit: 2071.7576357142857 +2025-03-10 13:47:16,088 - INFO - CLOSED short at 2098.1 | PnL: 0.25% | $0.27 +2025-03-10 13:47:16,270 - INFO - OPENED SHORT at 2106.39 | Stop loss: 2116.936892857143 | Take profit: 2074.7717357142856 +2025-03-10 13:47:16,311 - INFO - CLOSED short at 2100.74 | PnL: 0.27% | $0.31 +2025-03-10 13:47:16,356 - INFO - OPENED SHORT at 2103.86 | Stop loss: 2114.3942428571427 | Take profit: 2072.2796857142857 +2025-03-10 13:47:16,952 - INFO - CLOSED short at 2083.41 | PnL: 0.97% | $1.62 +2025-03-10 13:47:16,952 - INFO - OPENED LONG at 2083.41 | Stop loss: 2072.9780071428568 | Take profit: 2114.6835642857145 +2025-03-10 13:47:16,980 - INFO - CLOSED long at 2085.09 | PnL: 0.08% | $-0.04 +2025-03-10 13:47:16,981 - INFO - OPENED SHORT at 2085.09 | Stop loss: 2095.530392857143 | Take profit: 2053.791235714286 +2025-03-10 13:47:17,184 - INFO - CLOSED short at 2085.85 | PnL: -0.04% | $-0.26 +2025-03-10 13:47:17,230 - INFO - OPENED SHORT at 2088.66 | Stop loss: 2099.118242857143 | Take profit: 2057.3076857142855 +2025-03-10 13:47:17,661 - INFO - CLOSED short at 2091.95 | PnL: -0.16% | $-0.49 +2025-03-10 13:47:17,661 - INFO - OPENED LONG at 2091.95 | Stop loss: 2081.4753071428568 | Take profit: 2123.351664285714 +2025-03-10 13:47:18,503 - INFO - CLOSED long at 2102.0 | PnL: 0.48% | $0.71 +2025-03-10 13:47:18,503 - INFO - OPENED SHORT at 2102.0 | Stop loss: 2112.524942857143 | Take profit: 2070.4475857142857 +2025-03-10 13:47:18,682 - INFO - CLOSED short at 2110.87 | PnL: -0.42% | $-0.99 +2025-03-10 13:47:18,682 - INFO - OPENED LONG at 2110.87 | Stop loss: 2100.300707142857 | Take profit: 2142.555464285714 +2025-03-10 13:47:18,860 - INFO - CLOSED long at 2115.26 | PnL: 0.21% | $0.20 +2025-03-10 13:47:18,861 - INFO - OPENED SHORT at 2115.26 | Stop loss: 2125.851242857143 | Take profit: 2083.508685714286 +2025-03-10 13:47:19,375 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.56, Avg Loss=$-0.50 +2025-03-10 13:47:19,377 - INFO - Episode 9: Reward=-109.72, Balance=$94.29, Win Rate=33.3%, Trades=39, Episode PnL=$-4.47, Total PnL=$-67.20, Max Drawdown=7.1%, Pred Accuracy=97.3% +2025-03-10 13:47:19,787 - INFO - OPENED LONG at 2057.89 | Stop loss: 2047.585607142857 | Take profit: 2088.7807642857138 +2025-03-10 13:47:20,139 - INFO - CLOSED long at 2070.99 | PnL: 0.64% | $1.07 +2025-03-10 13:47:20,140 - INFO - OPENED SHORT at 2070.99 | Stop loss: 2081.3598928571428 | Take profit: 2039.9027357142854 +2025-03-10 13:47:22,876 - INFO - CLOSED short at 2066.1 | PnL: 0.24% | $0.27 +2025-03-10 13:47:22,876 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.754557142857 | Take profit: 2097.113914285714 +2025-03-10 13:47:22,901 - INFO - CLOSED long at 2065.28 | PnL: -0.04% | $-0.28 +2025-03-10 13:47:22,901 - INFO - OPENED SHORT at 2065.28 | Stop loss: 2075.6213428571427 | Take profit: 2034.2783857142858 +2025-03-10 13:47:22,926 - INFO - CLOSED short at 2066.39 | PnL: -0.05% | $-0.31 +2025-03-10 13:47:22,928 - INFO - OPENED LONG at 2066.39 | Stop loss: 2056.043107142857 | Take profit: 2097.408264285714 +2025-03-10 13:47:22,955 - INFO - CLOSED long at 2064.47 | PnL: -0.09% | $-0.39 +2025-03-10 13:47:22,956 - INFO - OPENED SHORT at 2064.47 | Stop loss: 2074.8072928571423 | Take profit: 2033.4805357142855 +2025-03-10 13:47:22,981 - INFO - CLOSED short at 2070.04 | PnL: -0.27% | $-0.74 +2025-03-10 13:47:22,982 - INFO - OPENED LONG at 2070.04 | Stop loss: 2059.674857142857 | Take profit: 2101.1130142857146 +2025-03-10 13:47:23,416 - INFO - STOP LOSS hit for long at 2059.674857142857 | PnL: -0.50% | $-1.19 +2025-03-10 13:47:23,533 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.620257142857 | Take profit: 2095.9568142857142 +2025-03-10 13:47:24,014 - INFO - CLOSED long at 2059.3 | PnL: -0.27% | $-0.73 +2025-03-10 13:47:24,015 - INFO - OPENED SHORT at 2059.3 | Stop loss: 2069.6114428571427 | Take profit: 2028.3880857142858 +2025-03-10 13:47:24,048 - INFO - CLOSED short at 2060.31 | PnL: -0.05% | $-0.29 +2025-03-10 13:47:24,048 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.993507142857 | Take profit: 2091.2370642857145 +2025-03-10 13:47:24,074 - INFO - CLOSED long at 2061.8 | PnL: 0.07% | $-0.05 +2025-03-10 13:47:24,468 - INFO - OPENED LONG at 2064.79 | Stop loss: 2054.4511071428574 | Take profit: 2095.784264285714 +2025-03-10 13:47:24,827 - INFO - CLOSED long at 2059.61 | PnL: -0.25% | $-0.68 +2025-03-10 13:47:24,828 - INFO - OPENED SHORT at 2059.61 | Stop loss: 2069.922992857143 | Take profit: 2028.693435714286 +2025-03-10 13:47:24,887 - INFO - CLOSED short at 2059.02 | PnL: 0.03% | $-0.14 +2025-03-10 13:47:24,888 - INFO - OPENED LONG at 2059.02 | Stop loss: 2048.709957142857 | Take profit: 2089.927714285714 +2025-03-10 13:47:24,946 - INFO - CLOSED long at 2059.96 | PnL: 0.05% | $-0.10 +2025-03-10 13:47:24,947 - INFO - OPENED SHORT at 2059.96 | Stop loss: 2070.274742857143 | Take profit: 2029.0381857142856 +2025-03-10 13:47:25,334 - INFO - CLOSED short at 2061.66 | PnL: -0.08% | $-0.35 +2025-03-10 13:47:25,410 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.9785571428574 | Take profit: 2092.2419142857143 +2025-03-10 13:47:25,903 - INFO - CLOSED long at 2072.0 | PnL: 0.52% | $0.80 +2025-03-10 13:47:26,249 - INFO - OPENED LONG at 2068.15 | Stop loss: 2057.794307142857 | Take profit: 2099.194664285714 +2025-03-10 13:47:26,539 - INFO - CLOSED long at 2071.49 | PnL: 0.16% | $0.12 +2025-03-10 13:47:26,566 - INFO - OPENED LONG at 2069.87 | Stop loss: 2059.5057071428573 | Take profit: 2100.940464285714 +2025-03-10 13:47:28,547 - INFO - CLOSED long at 2067.19 | PnL: -0.13% | $-0.44 +2025-03-10 13:47:28,548 - INFO - OPENED SHORT at 2067.19 | Stop loss: 2077.540892857143 | Take profit: 2036.1597357142857 +2025-03-10 13:47:29,455 - INFO - CLOSED short at 2049.5 | PnL: 0.86% | $1.45 +2025-03-10 13:47:29,456 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.237557142857 | Take profit: 2080.264914285714 +2025-03-10 13:47:29,517 - INFO - CLOSED long at 2051.99 | PnL: 0.12% | $0.04 +2025-03-10 13:47:29,517 - INFO - OPENED SHORT at 2051.99 | Stop loss: 2062.2648928571425 | Take profit: 2021.1877357142855 +2025-03-10 13:47:29,578 - INFO - CLOSED short at 2058.3 | PnL: -0.31% | $-0.79 +2025-03-10 13:47:29,578 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9935571428573 | Take profit: 2089.1969142857147 +2025-03-10 13:47:29,635 - INFO - CLOSED long at 2056.85 | PnL: -0.07% | $-0.33 +2025-03-10 13:47:29,636 - INFO - OPENED SHORT at 2056.85 | Stop loss: 2067.1491928571427 | Take profit: 2025.9748357142857 +2025-03-10 13:47:29,715 - INFO - CLOSED short at 2062.83 | PnL: -0.29% | $-0.75 +2025-03-10 13:47:29,716 - INFO - OPENED LONG at 2062.83 | Stop loss: 2052.500907142857 | Take profit: 2093.794864285714 +2025-03-10 13:47:29,743 - INFO - CLOSED long at 2063.9 | PnL: 0.05% | $-0.09 +2025-03-10 13:47:29,743 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.234442857143 | Take profit: 2032.9190857142858 +2025-03-10 13:47:30,711 - INFO - STOP LOSS hit for short at 2074.234442857143 | PnL: -0.50% | $-1.15 +2025-03-10 13:47:30,760 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.4753428571426 | Take profit: 2044.9163857142858 +2025-03-10 13:47:30,878 - INFO - STOP LOSS hit for short at 2086.4753428571426 | PnL: -0.50% | $-1.13 +2025-03-10 13:47:30,907 - INFO - OPENED LONG at 2103.02 | Stop loss: 2092.4899571428573 | Take profit: 2134.587714285714 +2025-03-10 13:47:30,964 - INFO - TAKE PROFIT hit for long at 2134.587714285714 | PnL: 1.50% | $2.61 +2025-03-10 13:47:30,994 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.1061571428572 | Take profit: 2163.7791142857145 +2025-03-10 13:47:31,403 - INFO - STOP LOSS hit for long at 2121.1061571428572 | PnL: -0.50% | $-1.15 +2025-03-10 13:47:31,433 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.534307142857 | Take profit: 2151.9746642857144 +2025-03-10 13:47:31,508 - INFO - CLOSED long at 2117.24 | PnL: -0.14% | $-0.45 +2025-03-10 13:47:31,607 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.315407142857 | Take profit: 2151.751364285714 +2025-03-10 13:47:31,798 - INFO - STOP LOSS hit for long at 2109.315407142857 | PnL: -0.50% | $-1.13 +2025-03-10 13:47:32,090 - INFO - OPENED SHORT at 2113.24 | Stop loss: 2123.8211428571426 | Take profit: 2081.5189857142855 +2025-03-10 13:47:32,276 - INFO - CLOSED short at 2108.71 | PnL: 0.21% | $0.21 +2025-03-10 13:47:32,277 - INFO - OPENED LONG at 2108.71 | Stop loss: 2098.151507142857 | Take profit: 2140.3630642857142 +2025-03-10 13:47:32,477 - INFO - STOP LOSS hit for long at 2098.151507142857 | PnL: -0.50% | $-1.12 +2025-03-10 13:47:32,870 - INFO - OPENED SHORT at 2103.86 | Stop loss: 2114.3942428571427 | Take profit: 2072.2796857142857 +2025-03-10 13:47:33,629 - INFO - CLOSED short at 2086.57 | PnL: 0.82% | $1.33 +2025-03-10 13:47:33,629 - INFO - OPENED LONG at 2086.57 | Stop loss: 2076.1222071428574 | Take profit: 2117.8909642857143 +2025-03-10 13:47:33,662 - INFO - CLOSED long at 2085.8 | PnL: -0.04% | $-0.26 +2025-03-10 13:47:33,662 - INFO - OPENED SHORT at 2085.8 | Stop loss: 2096.243942857143 | Take profit: 2054.4905857142858 +2025-03-10 13:47:33,913 - INFO - CLOSED short at 2087.0 | PnL: -0.06% | $-0.29 +2025-03-10 13:47:33,913 - INFO - OPENED LONG at 2087.0 | Stop loss: 2076.550057142857 | Take profit: 2118.327414285714 +2025-03-10 13:47:35,377 - INFO - CLOSED long at 2110.4 | PnL: 1.12% | $1.90 +2025-03-10 13:47:35,643 - INFO - OPENED LONG at 2113.1 | Stop loss: 2102.519557142857 | Take profit: 2144.818914285714 +2025-03-10 13:47:36,109 - INFO - CLOSED long at 2116.81 | PnL: 0.18% | $0.14 +2025-03-10 13:47:36,109 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.4089928571425 | Take profit: 2085.035435714286 +2025-03-10 13:47:36,224 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.90, Avg Loss=$-0.57 +2025-03-10 13:47:36,224 - INFO - Episode 10: Reward=-107.47, Balance=$95.61, Win Rate=30.6%, Trades=36, Episode PnL=$-2.34, Total PnL=$-71.59, Max Drawdown=7.2%, Pred Accuracy=97.5% +2025-03-10 13:47:36,397 - INFO - Model saved to checkpoints/trading_agent_episode_10.pt +2025-03-10 13:47:36,398 - INFO - Checkpoint saved at episode 10 +2025-03-10 13:47:36,470 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 13:47:36,471 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2405, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 13:47:36,811 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.219392857143 | Take profit: 2031.9242357142857 +2025-03-10 13:47:36,834 - INFO - CLOSED short at 2060.31 | PnL: 0.13% | $0.05 +2025-03-10 13:47:36,834 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.993507142857 | Take profit: 2091.2370642857145 +2025-03-10 13:47:36,884 - INFO - CLOSED long at 2057.8 | PnL: -0.12% | $-0.44 +2025-03-10 13:47:36,884 - INFO - OPENED SHORT at 2057.8 | Stop loss: 2068.103942857143 | Take profit: 2026.9105857142858 +2025-03-10 13:47:37,064 - INFO - STOP LOSS hit for short at 2068.103942857143 | PnL: -0.50% | $-1.19 +2025-03-10 13:47:37,107 - INFO - OPENED SHORT at 2068.11 | Stop loss: 2078.465492857143 | Take profit: 2037.0659357142858 +2025-03-10 13:47:38,114 - INFO - CLOSED short at 2069.01 | PnL: -0.04% | $-0.28 +2025-03-10 13:47:38,210 - INFO - OPENED SHORT at 2066.29 | Stop loss: 2076.6363928571427 | Take profit: 2035.2732357142856 +2025-03-10 13:47:40,821 - INFO - CLOSED short at 2064.7 | PnL: 0.08% | $-0.04 +2025-03-10 13:47:40,854 - INFO - OPENED SHORT at 2062.61 | Stop loss: 2072.937992857143 | Take profit: 2031.648435714286 +2025-03-10 13:47:40,901 - INFO - CLOSED short at 2060.3 | PnL: 0.11% | $0.02 +2025-03-10 13:47:40,901 - INFO - OPENED LONG at 2060.3 | Stop loss: 2049.9835571428575 | Take profit: 2091.2269142857144 +2025-03-10 13:47:40,924 - INFO - CLOSED long at 2061.13 | PnL: 0.04% | $-0.12 +2025-03-10 13:47:40,925 - INFO - OPENED SHORT at 2061.13 | Stop loss: 2071.450592857143 | Take profit: 2030.190635714286 +2025-03-10 13:47:41,028 - INFO - CLOSED short at 2064.33 | PnL: -0.16% | $-0.50 +2025-03-10 13:47:41,058 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.721892857143 | Take profit: 2032.4167357142856 +2025-03-10 13:47:41,272 - INFO - CLOSED short at 2062.6 | PnL: 0.04% | $-0.12 +2025-03-10 13:47:41,272 - INFO - OPENED LONG at 2062.6 | Stop loss: 2052.272057142857 | Take profit: 2093.5614142857144 +2025-03-10 13:47:41,346 - INFO - CLOSED long at 2060.7 | PnL: -0.09% | $-0.37 +2025-03-10 13:47:41,346 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.018442857143 | Take profit: 2029.7670857142855 +2025-03-10 13:47:41,425 - INFO - CLOSED short at 2059.16 | PnL: 0.07% | $-0.05 +2025-03-10 13:47:41,425 - INFO - OPENED LONG at 2059.16 | Stop loss: 2048.849257142857 | Take profit: 2090.069814285714 +2025-03-10 13:47:42,659 - INFO - CLOSED long at 2075.01 | PnL: 0.77% | $1.29 +2025-03-10 13:47:42,863 - INFO - OPENED SHORT at 2073.23 | Stop loss: 2083.611092857143 | Take profit: 2042.109135714286 +2025-03-10 13:47:43,321 - INFO - CLOSED short at 2063.95 | PnL: 0.45% | $0.68 +2025-03-10 13:47:43,322 - INFO - OPENED LONG at 2063.95 | Stop loss: 2053.615307142857 | Take profit: 2094.9316642857143 +2025-03-10 13:47:43,648 - INFO - CLOSED long at 2067.53 | PnL: 0.17% | $0.14 +2025-03-10 13:47:43,648 - INFO - OPENED SHORT at 2067.53 | Stop loss: 2077.882592857143 | Take profit: 2036.494635714286 +2025-03-10 13:47:44,390 - INFO - CLOSED short at 2068.67 | PnL: -0.06% | $-0.31 +2025-03-10 13:47:44,419 - INFO - OPENED SHORT at 2070.67 | Stop loss: 2081.0382928571426 | Take profit: 2039.5875357142857 +2025-03-10 13:47:44,786 - INFO - CLOSED short at 2075.29 | PnL: -0.22% | $-0.63 +2025-03-10 13:47:45,604 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.4353928571427 | Take profit: 2035.0762357142858 +2025-03-10 13:47:45,627 - INFO - CLOSED short at 2063.39 | PnL: 0.13% | $0.06 +2025-03-10 13:47:45,904 - INFO - OPENED SHORT at 2063.01 | Stop loss: 2073.339992857143 | Take profit: 2032.042435714286 +2025-03-10 13:47:45,930 - INFO - CLOSED short at 2060.7 | PnL: 0.11% | $0.02 +2025-03-10 13:47:45,957 - INFO - OPENED SHORT at 2060.2 | Stop loss: 2070.515942857143 | Take profit: 2029.2745857142854 +2025-03-10 13:47:47,035 - INFO - CLOSED short at 2065.72 | PnL: -0.27% | $-0.72 +2025-03-10 13:47:47,035 - INFO - OPENED LONG at 2065.72 | Stop loss: 2055.376457142857 | Take profit: 2096.728214285714 +2025-03-10 13:47:47,088 - INFO - CLOSED long at 2070.24 | PnL: 0.22% | $0.23 +2025-03-10 13:47:47,089 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.606142857143 | Take profit: 2039.1639857142854 +2025-03-10 13:47:47,483 - INFO - STOP LOSS hit for short at 2080.606142857143 | PnL: -0.50% | $-1.17 +2025-03-10 13:47:47,758 - INFO - OPENED LONG at 2141.3 | Stop loss: 2130.5785571428573 | Take profit: 2173.441914285714 +2025-03-10 13:47:47,873 - INFO - STOP LOSS hit for long at 2130.5785571428573 | PnL: -0.50% | $-1.15 +2025-03-10 13:47:48,273 - INFO - OPENED SHORT at 2109.05 | Stop loss: 2119.610192857143 | Take profit: 2077.3918357142857 +2025-03-10 13:47:48,409 - INFO - STOP LOSS hit for short at 2119.610192857143 | PnL: -0.50% | $-1.14 +2025-03-10 13:47:48,472 - INFO - OPENED SHORT at 2114.8 | Stop loss: 2125.388942857143 | Take profit: 2083.055585714286 +2025-03-10 13:47:48,648 - INFO - CLOSED short at 2103.33 | PnL: 0.54% | $0.83 +2025-03-10 13:47:48,674 - INFO - OPENED SHORT at 2100.5 | Stop loss: 2111.017442857143 | Take profit: 2068.9700857142857 +2025-03-10 13:47:48,794 - INFO - CLOSED short at 2102.29 | PnL: -0.09% | $-0.35 +2025-03-10 13:47:48,794 - INFO - OPENED LONG at 2102.29 | Stop loss: 2091.7636071428574 | Take profit: 2133.8467642857145 +2025-03-10 13:47:48,818 - INFO - CLOSED long at 2099.25 | PnL: -0.14% | $-0.46 +2025-03-10 13:47:48,819 - INFO - OPENED SHORT at 2099.25 | Stop loss: 2109.761192857143 | Take profit: 2067.738835714286 +2025-03-10 13:47:48,878 - INFO - CLOSED short at 2100.69 | PnL: -0.07% | $-0.32 +2025-03-10 13:47:48,878 - INFO - OPENED LONG at 2100.69 | Stop loss: 2090.1716071428573 | Take profit: 2132.222764285714 +2025-03-10 13:47:48,918 - INFO - CLOSED long at 2104.83 | PnL: 0.20% | $0.18 +2025-03-10 13:47:48,919 - INFO - OPENED SHORT at 2104.83 | Stop loss: 2115.3690928571427 | Take profit: 2073.2351357142857 +2025-03-10 13:47:49,552 - INFO - CLOSED short at 2081.25 | PnL: 1.12% | $1.91 +2025-03-10 13:47:49,638 - INFO - OPENED SHORT at 2086.57 | Stop loss: 2097.017792857143 | Take profit: 2055.249035714286 +2025-03-10 13:47:50,278 - INFO - STOP LOSS hit for short at 2097.017792857143 | PnL: -0.50% | $-1.15 +2025-03-10 13:47:50,324 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1631428571427 | Take profit: 2070.0929857142855 +2025-03-10 13:47:51,124 - INFO - STOP LOSS hit for short at 2112.1631428571427 | PnL: -0.50% | $-1.13 +2025-03-10 13:47:51,530 - INFO - OPENED LONG at 2118.72 | Stop loss: 2108.111457142857 | Take profit: 2150.523214285714 +2025-03-10 13:47:51,749 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.49, Avg Loss=$-0.58 +2025-03-10 13:47:51,749 - INFO - Episode 11: Reward=-98.70, Balance=$93.79, Win Rate=35.5%, Trades=31, Episode PnL=$-5.37, Total PnL=$-77.80, Max Drawdown=6.2%, Pred Accuracy=97.9% +2025-03-10 13:47:52,011 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.993507142857 | Take profit: 2091.2370642857145 +2025-03-10 13:47:52,157 - INFO - CLOSED long at 2061.18 | PnL: 0.04% | $-0.11 +2025-03-10 13:47:52,183 - INFO - OPENED SHORT at 2064.32 | Stop loss: 2074.6565428571434 | Take profit: 2033.3327857142858 +2025-03-10 13:47:52,434 - INFO - CLOSED short at 2068.65 | PnL: -0.21% | $-0.61 +2025-03-10 13:47:52,434 - INFO - OPENED LONG at 2068.65 | Stop loss: 2058.291807142857 | Take profit: 2099.702164285714 +2025-03-10 13:47:52,452 - INFO - CLOSED long at 2068.99 | PnL: 0.02% | $-0.16 +2025-03-10 13:47:52,475 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.2544428571427 | Take profit: 2036.8590857142858 +2025-03-10 13:47:52,706 - INFO - CLOSED short at 2069.37 | PnL: -0.07% | $-0.34 +2025-03-10 13:47:52,706 - INFO - OPENED LONG at 2069.37 | Stop loss: 2059.008207142857 | Take profit: 2100.432964285714 +2025-03-10 13:47:52,740 - INFO - CLOSED long at 2070.9 | PnL: 0.07% | $-0.05 +2025-03-10 13:47:52,741 - INFO - OPENED SHORT at 2070.9 | Stop loss: 2081.269442857143 | Take profit: 2039.8140857142857 +2025-03-10 13:47:53,022 - INFO - CLOSED short at 2067.6 | PnL: 0.16% | $0.12 +2025-03-10 13:47:53,337 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.947892857143 | Take profit: 2037.5387357142858 +2025-03-10 13:47:53,545 - INFO - CLOSED short at 2073.11 | PnL: -0.22% | $-0.63 +2025-03-10 13:47:53,545 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.729507142857 | Take profit: 2104.2290642857142 +2025-03-10 13:47:53,597 - INFO - CLOSED long at 2072.7 | PnL: -0.02% | $-0.23 +2025-03-10 13:47:53,597 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.078442857143 | Take profit: 2041.5870857142854 +2025-03-10 13:47:54,109 - INFO - CLOSED short at 2069.34 | PnL: 0.16% | $0.12 +2025-03-10 13:47:54,110 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.978357142857 | Take profit: 2100.4025142857145 +2025-03-10 13:47:54,136 - INFO - CLOSED long at 2067.86 | PnL: -0.07% | $-0.33 +2025-03-10 13:47:54,136 - INFO - OPENED SHORT at 2067.86 | Stop loss: 2078.2142428571433 | Take profit: 2036.819685714286 +2025-03-10 13:47:54,780 - INFO - CLOSED short at 2067.88 | PnL: -0.00% | $-0.20 +2025-03-10 13:47:54,780 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.525657142857 | Take profit: 2098.9206142857142 +2025-03-10 13:47:54,826 - INFO - CLOSED long at 2064.99 | PnL: -0.14% | $-0.46 +2025-03-10 13:47:54,826 - INFO - OPENED SHORT at 2064.99 | Stop loss: 2075.3298928571426 | Take profit: 2033.9927357142856 +2025-03-10 13:47:55,498 - INFO - CLOSED short at 2059.3 | PnL: 0.28% | $0.34 +2025-03-10 13:47:56,059 - INFO - OPENED LONG at 2062.6 | Stop loss: 2052.272057142857 | Take profit: 2093.5614142857144 +2025-03-10 13:47:56,172 - INFO - CLOSED long at 2059.61 | PnL: -0.14% | $-0.47 +2025-03-10 13:47:56,223 - INFO - OPENED LONG at 2059.02 | Stop loss: 2048.709957142857 | Take profit: 2089.927714285714 +2025-03-10 13:47:56,376 - INFO - CLOSED long at 2058.28 | PnL: -0.04% | $-0.26 +2025-03-10 13:47:56,376 - INFO - OPENED SHORT at 2058.28 | Stop loss: 2068.586342857143 | Take profit: 2027.3833857142859 +2025-03-10 13:47:57,003 - INFO - STOP LOSS hit for short at 2068.586342857143 | PnL: -0.50% | $-1.15 +2025-03-10 13:47:57,185 - INFO - OPENED SHORT at 2072.6 | Stop loss: 2082.977942857143 | Take profit: 2041.4885857142856 +2025-03-10 13:47:57,343 - INFO - CLOSED short at 2068.39 | PnL: 0.20% | $0.20 +2025-03-10 13:47:57,343 - INFO - OPENED LONG at 2068.39 | Stop loss: 2058.033107142857 | Take profit: 2099.438264285714 +2025-03-10 13:47:58,056 - INFO - CLOSED long at 2070.9 | PnL: 0.12% | $0.04 +2025-03-10 13:47:58,057 - INFO - OPENED SHORT at 2070.9 | Stop loss: 2081.269442857143 | Take profit: 2039.8140857142857 +2025-03-10 13:47:58,440 - INFO - CLOSED short at 2073.27 | PnL: -0.11% | $-0.41 +2025-03-10 13:47:58,440 - INFO - OPENED LONG at 2073.27 | Stop loss: 2062.888707142857 | Take profit: 2104.3914642857144 +2025-03-10 13:47:58,937 - INFO - CLOSED long at 2065.5 | PnL: -0.37% | $-0.90 +2025-03-10 13:47:58,938 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.842442857143 | Take profit: 2034.4950857142856 +2025-03-10 13:47:58,961 - INFO - CLOSED short at 2065.7 | PnL: -0.01% | $-0.21 +2025-03-10 13:47:58,962 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.356557142857 | Take profit: 2096.707914285714 +2025-03-10 13:47:59,125 - INFO - CLOSED long at 2063.98 | PnL: -0.08% | $-0.34 +2025-03-10 13:47:59,126 - INFO - OPENED SHORT at 2063.98 | Stop loss: 2074.314842857143 | Take profit: 2032.9978857142858 +2025-03-10 13:47:59,178 - INFO - CLOSED short at 2066.1 | PnL: -0.10% | $-0.38 +2025-03-10 13:47:59,178 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.754557142857 | Take profit: 2097.113914285714 +2025-03-10 13:47:59,293 - INFO - CLOSED long at 2066.33 | PnL: 0.01% | $-0.17 +2025-03-10 13:47:59,338 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3815571428568 | Take profit: 2091.632914285714 +2025-03-10 13:47:59,384 - INFO - CLOSED long at 2059.2 | PnL: -0.07% | $-0.32 +2025-03-10 13:47:59,687 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.1943928571427 | Take profit: 2026.9992357142855 +2025-03-10 13:47:59,852 - INFO - STOP LOSS hit for short at 2068.1943928571427 | PnL: -0.50% | $-1.11 +2025-03-10 13:47:59,885 - INFO - OPENED LONG at 2067.49 | Stop loss: 2057.1376071428567 | Take profit: 2098.524764285714 +2025-03-10 13:47:59,926 - INFO - CLOSED long at 2066.59 | PnL: -0.04% | $-0.26 +2025-03-10 13:47:59,926 - INFO - OPENED SHORT at 2066.59 | Stop loss: 2076.937892857143 | Take profit: 2035.5687357142858 +2025-03-10 13:48:00,485 - INFO - STOP LOSS hit for short at 2076.937892857143 | PnL: -0.50% | $-1.09 +2025-03-10 13:48:00,840 - INFO - OPENED LONG at 2142.68 | Stop loss: 2131.951657142857 | Take profit: 2174.842614285714 +2025-03-10 13:48:00,869 - INFO - CLOSED long at 2140.01 | PnL: -0.12% | $-0.40 +2025-03-10 13:48:00,869 - INFO - OPENED SHORT at 2140.01 | Stop loss: 2150.7249928571428 | Take profit: 2107.887435714286 +2025-03-10 13:48:00,940 - INFO - CLOSED short at 2127.3 | PnL: 0.59% | $0.88 +2025-03-10 13:48:00,941 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.6485571428575 | Take profit: 2159.2319142857145 +2025-03-10 13:48:01,253 - INFO - STOP LOSS hit for long at 2116.6485571428575 | PnL: -0.50% | $-1.09 +2025-03-10 13:48:01,278 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.877907142857 | Take profit: 2139.063864285714 +2025-03-10 13:48:01,369 - INFO - CLOSED long at 2112.95 | PnL: 0.26% | $0.29 +2025-03-10 13:48:01,390 - INFO - OPENED SHORT at 2112.46 | Stop loss: 2123.0372428571427 | Take profit: 2080.7506857142857 +2025-03-10 13:48:01,415 - INFO - CLOSED short at 2113.24 | PnL: -0.04% | $-0.25 +2025-03-10 13:48:01,416 - INFO - OPENED LONG at 2113.24 | Stop loss: 2102.658857142857 | Take profit: 2144.961014285714 +2025-03-10 13:48:01,724 - INFO - STOP LOSS hit for long at 2102.658857142857 | PnL: -0.50% | $-1.07 +2025-03-10 13:48:01,745 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.535057142857 | Take profit: 2121.3724142857145 +2025-03-10 13:48:02,877 - INFO - CLOSED long at 2088.66 | PnL: -0.06% | $-0.29 +2025-03-10 13:48:02,877 - INFO - OPENED SHORT at 2088.66 | Stop loss: 2099.118242857143 | Take profit: 2057.3076857142855 +2025-03-10 13:48:03,076 - INFO - CLOSED short at 2089.79 | PnL: -0.05% | $-0.27 +2025-03-10 13:48:03,076 - INFO - OPENED LONG at 2089.79 | Stop loss: 2079.326107142857 | Take profit: 2121.1592642857145 +2025-03-10 13:48:03,123 - INFO - CLOSED long at 2085.67 | PnL: -0.20% | $-0.52 +2025-03-10 13:48:03,124 - INFO - OPENED SHORT at 2085.67 | Stop loss: 2096.113292857143 | Take profit: 2054.362535714286 +2025-03-10 13:48:03,315 - INFO - STOP LOSS hit for short at 2096.113292857143 | PnL: -0.50% | $-1.05 +2025-03-10 13:48:03,339 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.5048928571427 | Take profit: 2068.4677357142855 +2025-03-10 13:48:04,081 - INFO - STOP LOSS hit for short at 2110.5048928571427 | PnL: -0.50% | $-1.04 +2025-03-10 13:48:04,185 - INFO - OPENED SHORT at 2115.26 | Stop loss: 2125.851242857143 | Take profit: 2083.508685714286 +2025-03-10 13:48:04,684 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.28, Avg Loss=$-0.51 +2025-03-10 13:48:04,684 - INFO - Episode 12: Reward=-26.63, Balance=$85.80, Win Rate=17.9%, Trades=39, Episode PnL=$-10.18, Total PnL=$-92.00, Max Drawdown=14.2%, Pred Accuracy=98.3% +2025-03-10 13:48:04,974 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.219392857143 | Take profit: 2031.9242357142857 +2025-03-10 13:48:05,503 - INFO - CLOSED short at 2067.69 | PnL: -0.23% | $-0.66 +2025-03-10 13:48:05,503 - INFO - OPENED LONG at 2067.69 | Stop loss: 2057.3366071428572 | Take profit: 2098.727764285715 +2025-03-10 13:48:05,575 - INFO - CLOSED long at 2073.73 | PnL: 0.29% | $0.38 +2025-03-10 13:48:05,627 - INFO - OPENED SHORT at 2072.91 | Stop loss: 2083.2894928571427 | Take profit: 2041.7939357142857 +2025-03-10 13:48:05,675 - INFO - CLOSED short at 2072.33 | PnL: 0.03% | $-0.14 +2025-03-10 13:48:05,840 - INFO - OPENED SHORT at 2070.9 | Stop loss: 2081.269442857143 | Take profit: 2039.8140857142857 +2025-03-10 13:48:05,931 - INFO - CLOSED short at 2070.28 | PnL: 0.03% | $-0.14 +2025-03-10 13:48:05,991 - INFO - OPENED SHORT at 2067.2 | Stop loss: 2077.5509428571427 | Take profit: 2036.1695857142856 +2025-03-10 13:48:06,016 - INFO - CLOSED short at 2070.36 | PnL: -0.15% | $-0.50 +2025-03-10 13:48:06,774 - INFO - OPENED SHORT at 2071.36 | Stop loss: 2081.731742857143 | Take profit: 2040.2671857142857 +2025-03-10 13:48:06,798 - INFO - CLOSED short at 2072.75 | PnL: -0.07% | $-0.33 +2025-03-10 13:48:06,818 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.729507142857 | Take profit: 2104.2290642857142 +2025-03-10 13:48:06,858 - INFO - CLOSED long at 2072.7 | PnL: -0.02% | $-0.23 +2025-03-10 13:48:07,499 - INFO - OPENED LONG at 2069.2 | Stop loss: 2058.8390571428567 | Take profit: 2100.260414285714 +2025-03-10 13:48:07,527 - INFO - CLOSED long at 2070.3 | PnL: 0.05% | $-0.09 +2025-03-10 13:48:07,527 - INFO - OPENED SHORT at 2070.3 | Stop loss: 2080.666442857143 | Take profit: 2039.2230857142858 +2025-03-10 13:48:07,572 - INFO - CLOSED short at 2070.7 | PnL: -0.02% | $-0.23 +2025-03-10 13:48:07,572 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.331557142857 | Take profit: 2101.782914285714 +2025-03-10 13:48:07,918 - INFO - CLOSED long at 2064.47 | PnL: -0.30% | $-0.78 +2025-03-10 13:48:07,918 - INFO - OPENED SHORT at 2064.47 | Stop loss: 2074.8072928571423 | Take profit: 2033.4805357142855 +2025-03-10 13:48:07,942 - INFO - CLOSED short at 2070.04 | PnL: -0.27% | $-0.71 +2025-03-10 13:48:07,942 - INFO - OPENED LONG at 2070.04 | Stop loss: 2059.674857142857 | Take profit: 2101.1130142857146 +2025-03-10 13:48:07,966 - INFO - CLOSED long at 2067.8 | PnL: -0.11% | $-0.40 +2025-03-10 13:48:07,967 - INFO - OPENED SHORT at 2067.8 | Stop loss: 2078.153942857143 | Take profit: 2036.760585714286 +2025-03-10 13:48:07,989 - INFO - CLOSED short at 2068.18 | PnL: -0.02% | $-0.23 +2025-03-10 13:48:07,990 - INFO - OPENED LONG at 2068.18 | Stop loss: 2057.824157142857 | Take profit: 2099.225114285714 +2025-03-10 13:48:08,042 - INFO - CLOSED long at 2067.88 | PnL: -0.01% | $-0.22 +2025-03-10 13:48:08,043 - INFO - OPENED SHORT at 2067.88 | Stop loss: 2078.2343428571426 | Take profit: 2036.8393857142858 +2025-03-10 13:48:08,347 - INFO - CLOSED short at 2064.96 | PnL: 0.14% | $0.08 +2025-03-10 13:48:08,348 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.620257142857 | Take profit: 2095.9568142857142 +2025-03-10 13:48:08,370 - INFO - CLOSED long at 2066.24 | PnL: 0.06% | $-0.07 +2025-03-10 13:48:08,370 - INFO - OPENED SHORT at 2066.24 | Stop loss: 2076.586142857143 | Take profit: 2035.2239857142854 +2025-03-10 13:48:08,754 - INFO - CLOSED short at 2059.3 | PnL: 0.34% | $0.45 +2025-03-10 13:48:08,754 - INFO - OPENED LONG at 2059.3 | Stop loss: 2048.988557142857 | Take profit: 2090.2119142857146 +2025-03-10 13:48:08,975 - INFO - CLOSED long at 2061.9 | PnL: 0.13% | $0.05 +2025-03-10 13:48:09,493 - INFO - OPENED SHORT at 2057.4 | Stop loss: 2067.701942857143 | Take profit: 2026.5165857142858 +2025-03-10 13:48:10,120 - INFO - STOP LOSS hit for short at 2067.701942857143 | PnL: -0.50% | $-1.15 +2025-03-10 13:48:10,290 - INFO - OPENED LONG at 2071.04 | Stop loss: 2060.669857142857 | Take profit: 2102.1280142857145 +2025-03-10 13:48:10,683 - INFO - CLOSED long at 2067.33 | PnL: -0.18% | $-0.53 +2025-03-10 13:48:10,683 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.6815928571427 | Take profit: 2036.2976357142854 +2025-03-10 13:48:10,706 - INFO - CLOSED short at 2066.38 | PnL: 0.05% | $-0.10 +2025-03-10 13:48:10,707 - INFO - OPENED LONG at 2066.38 | Stop loss: 2056.0331571428574 | Take profit: 2097.398114285714 +2025-03-10 13:48:10,801 - INFO - CLOSED long at 2063.97 | PnL: -0.12% | $-0.41 +2025-03-10 13:48:10,802 - INFO - OPENED SHORT at 2063.97 | Stop loss: 2074.3047928571423 | Take profit: 2032.9880357142854 +2025-03-10 13:48:10,859 - INFO - CLOSED short at 2065.3 | PnL: -0.06% | $-0.31 +2025-03-10 13:48:10,859 - INFO - OPENED LONG at 2065.3 | Stop loss: 2054.9585571428574 | Take profit: 2096.3019142857142 +2025-03-10 13:48:10,893 - INFO - CLOSED long at 2064.4 | PnL: -0.04% | $-0.27 +2025-03-10 13:48:10,936 - INFO - OPENED SHORT at 2064.31 | Stop loss: 2074.6464928571427 | Take profit: 2033.3229357142857 +2025-03-10 13:48:11,622 - INFO - CLOSED short at 2074.37 | PnL: -0.49% | $-1.09 +2025-03-10 13:48:11,693 - INFO - OPENED SHORT at 2074.35 | Stop loss: 2084.7366928571428 | Take profit: 2043.2123357142855 +2025-03-10 13:48:11,872 - INFO - CLOSED short at 2075.61 | PnL: -0.06% | $-0.29 +2025-03-10 13:48:11,873 - INFO - OPENED LONG at 2075.61 | Stop loss: 2065.2170071428573 | Take profit: 2106.7665642857146 +2025-03-10 13:48:11,895 - INFO - CLOSED long at 2074.0 | PnL: -0.08% | $-0.32 +2025-03-10 13:48:11,896 - INFO - OPENED SHORT at 2074.0 | Stop loss: 2084.384942857143 | Take profit: 2042.8675857142857 +2025-03-10 13:48:12,642 - INFO - CLOSED short at 2065.06 | PnL: 0.43% | $0.60 +2025-03-10 13:48:13,642 - INFO - OPENED LONG at 2069.81 | Stop loss: 2059.446007142857 | Take profit: 2100.8795642857144 +2025-03-10 13:48:13,893 - INFO - CLOSED long at 2076.08 | PnL: 0.30% | $0.37 +2025-03-10 13:48:13,894 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.4753428571426 | Take profit: 2044.9163857142858 +2025-03-10 13:48:13,917 - INFO - CLOSED short at 2077.61 | PnL: -0.07% | $-0.32 +2025-03-10 13:48:13,939 - INFO - OPENED LONG at 2085.56 | Stop loss: 2075.1172571428574 | Take profit: 2116.865814285714 +2025-03-10 13:48:14,003 - INFO - CLOSED long at 2130.7 | PnL: 2.16% | $3.79 +2025-03-10 13:48:14,154 - INFO - OPENED LONG at 2137.59 | Stop loss: 2126.887107142857 | Take profit: 2169.6762642857143 +2025-03-10 13:48:14,231 - INFO - CLOSED long at 2141.3 | PnL: 0.17% | $0.14 +2025-03-10 13:48:14,231 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.021442857143 | Take profit: 2109.158085714286 +2025-03-10 13:48:14,302 - INFO - CLOSED short at 2134.78 | PnL: 0.30% | $0.39 +2025-03-10 13:48:14,302 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.0911571428574 | Take profit: 2166.8241142857146 +2025-03-10 13:48:14,330 - INFO - CLOSED long at 2126.99 | PnL: -0.36% | $-0.89 +2025-03-10 13:48:14,331 - INFO - OPENED SHORT at 2126.99 | Stop loss: 2137.6398928571425 | Take profit: 2095.0627357142857 +2025-03-10 13:48:15,042 - INFO - CLOSED short at 2103.33 | PnL: 1.11% | $1.93 +2025-03-10 13:48:15,042 - INFO - OPENED LONG at 2103.33 | Stop loss: 2092.798407142857 | Take profit: 2134.902364285714 +2025-03-10 13:48:15,062 - INFO - CLOSED long at 2100.5 | PnL: -0.13% | $-0.46 +2025-03-10 13:48:15,062 - INFO - OPENED SHORT at 2100.5 | Stop loss: 2111.017442857143 | Take profit: 2068.9700857142857 +2025-03-10 13:48:15,426 - INFO - CLOSED short at 2104.68 | PnL: -0.20% | $-0.58 +2025-03-10 13:48:15,596 - INFO - OPENED SHORT at 2092.46 | Stop loss: 2102.937242857143 | Take profit: 2061.0506857142855 +2025-03-10 13:48:16,826 - INFO - STOP LOSS hit for short at 2102.937242857143 | PnL: -0.50% | $-1.15 +2025-03-10 13:48:17,232 - INFO - OPENED SHORT at 2102.0 | Stop loss: 2112.524942857143 | Take profit: 2070.4475857142857 +2025-03-10 13:48:17,505 - INFO - STOP LOSS hit for short at 2112.524942857143 | PnL: -0.50% | $-1.14 +2025-03-10 13:48:17,526 - INFO - OPENED SHORT at 2113.0 | Stop loss: 2123.579942857143 | Take profit: 2081.2825857142857 +2025-03-10 13:48:17,589 - INFO - CLOSED short at 2113.1 | PnL: -0.00% | $-0.20 +2025-03-10 13:48:17,589 - INFO - OPENED LONG at 2113.1 | Stop loss: 2102.519557142857 | Take profit: 2144.818914285714 +2025-03-10 13:48:17,610 - INFO - CLOSED long at 2112.28 | PnL: -0.04% | $-0.26 +2025-03-10 13:48:17,610 - INFO - OPENED SHORT at 2112.28 | Stop loss: 2122.856342857143 | Take profit: 2080.573385714286 +2025-03-10 13:48:17,680 - INFO - CLOSED short at 2112.26 | PnL: 0.00% | $-0.18 +2025-03-10 13:48:17,680 - INFO - OPENED LONG at 2112.26 | Stop loss: 2101.6837571428573 | Take profit: 2143.9663142857144 +2025-03-10 13:48:18,012 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.82, Avg Loss=$-0.45 +2025-03-10 13:48:18,013 - INFO - Episode 13: Reward=-25.56, Balance=$93.79, Win Rate=23.8%, Trades=42, Episode PnL=$-2.29, Total PnL=$-98.21, Max Drawdown=7.6%, Pred Accuracy=98.6% +2025-03-10 13:48:18,343 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:48:18,468 - INFO - CLOSED long at 2058.11 | PnL: -0.23% | $-0.66 +2025-03-10 13:48:18,469 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.415492857143 | Take profit: 2027.215935714286 +2025-03-10 13:48:18,491 - INFO - CLOSED short at 2061.79 | PnL: -0.18% | $-0.55 +2025-03-10 13:48:18,492 - INFO - OPENED LONG at 2061.79 | Stop loss: 2051.4661071428573 | Take profit: 2092.7392642857144 +2025-03-10 13:48:18,551 - INFO - CLOSED long at 2065.86 | PnL: 0.20% | $0.19 +2025-03-10 13:48:18,574 - INFO - OPENED LONG at 2070.58 | Stop loss: 2060.212157142857 | Take profit: 2101.661114285714 +2025-03-10 13:48:18,670 - INFO - CLOSED long at 2071.63 | PnL: 0.05% | $-0.10 +2025-03-10 13:48:18,670 - INFO - OPENED SHORT at 2071.63 | Stop loss: 2082.003092857143 | Take profit: 2040.533135714286 +2025-03-10 13:48:18,710 - INFO - CLOSED short at 2070.99 | PnL: 0.03% | $-0.14 +2025-03-10 13:48:18,710 - INFO - OPENED LONG at 2070.99 | Stop loss: 2060.620107142857 | Take profit: 2102.0772642857137 +2025-03-10 13:48:18,787 - INFO - CLOSED long at 2068.65 | PnL: -0.11% | $-0.42 +2025-03-10 13:48:18,788 - INFO - OPENED SHORT at 2068.65 | Stop loss: 2079.008192857143 | Take profit: 2037.5978357142858 +2025-03-10 13:48:18,850 - INFO - CLOSED short at 2067.9 | PnL: 0.04% | $-0.12 +2025-03-10 13:48:18,851 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.5455571428574 | Take profit: 2098.9409142857144 +2025-03-10 13:48:18,873 - INFO - CLOSED long at 2067.69 | PnL: -0.01% | $-0.21 +2025-03-10 13:48:18,873 - INFO - OPENED SHORT at 2067.69 | Stop loss: 2078.0433928571433 | Take profit: 2036.6522357142858 +2025-03-10 13:48:19,192 - INFO - CLOSED short at 2072.8 | PnL: -0.25% | $-0.68 +2025-03-10 13:48:19,228 - INFO - OPENED SHORT at 2070.79 | Stop loss: 2081.1588928571427 | Take profit: 2039.7057357142855 +2025-03-10 13:48:19,588 - INFO - CLOSED short at 2065.99 | PnL: 0.23% | $0.25 +2025-03-10 13:48:19,589 - INFO - OPENED LONG at 2065.99 | Stop loss: 2055.645107142857 | Take profit: 2097.002264285714 +2025-03-10 13:48:20,406 - INFO - CLOSED long at 2065.49 | PnL: -0.02% | $-0.24 +2025-03-10 13:48:20,406 - INFO - OPENED SHORT at 2065.49 | Stop loss: 2075.8323928571426 | Take profit: 2034.4852357142856 +2025-03-10 13:48:21,338 - INFO - CLOSED short at 2062.65 | PnL: 0.14% | $0.07 +2025-03-10 13:48:21,868 - INFO - OPENED LONG at 2060.65 | Stop loss: 2050.3318071428575 | Take profit: 2091.5821642857145 +2025-03-10 13:48:22,224 - INFO - CLOSED long at 2065.36 | PnL: 0.23% | $0.25 +2025-03-10 13:48:22,225 - INFO - OPENED SHORT at 2065.36 | Stop loss: 2075.701742857143 | Take profit: 2034.3571857142858 +2025-03-10 13:48:22,265 - INFO - CLOSED short at 2064.33 | PnL: 0.05% | $-0.10 +2025-03-10 13:48:22,266 - INFO - OPENED LONG at 2064.33 | Stop loss: 2053.993407142857 | Take profit: 2095.317364285714 +2025-03-10 13:48:22,549 - INFO - CLOSED long at 2061.09 | PnL: -0.16% | $-0.50 +2025-03-10 13:48:22,573 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.297007142857 | Take profit: 2090.5265642857144 +2025-03-10 13:48:22,620 - INFO - CLOSED long at 2059.02 | PnL: -0.03% | $-0.25 +2025-03-10 13:48:22,620 - INFO - OPENED SHORT at 2059.02 | Stop loss: 2069.330042857143 | Take profit: 2028.1122857142857 +2025-03-10 13:48:22,658 - INFO - CLOSED short at 2058.89 | PnL: 0.01% | $-0.18 +2025-03-10 13:48:22,658 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.580607142857 | Take profit: 2089.795764285714 +2025-03-10 13:48:22,751 - INFO - CLOSED long at 2059.46 | PnL: 0.03% | $-0.14 +2025-03-10 13:48:22,751 - INFO - OPENED SHORT at 2059.46 | Stop loss: 2069.772242857143 | Take profit: 2028.5456857142856 +2025-03-10 13:48:22,943 - INFO - CLOSED short at 2056.71 | PnL: 0.13% | $0.06 +2025-03-10 13:48:22,943 - INFO - OPENED LONG at 2056.71 | Stop loss: 2046.4115071428573 | Take profit: 2087.583064285714 +2025-03-10 13:48:22,966 - INFO - CLOSED long at 2058.15 | PnL: 0.07% | $-0.06 +2025-03-10 13:48:22,989 - INFO - OPENED LONG at 2059.8 | Stop loss: 2049.4860571428576 | Take profit: 2090.7194142857143 +2025-03-10 13:48:23,362 - INFO - CLOSED long at 2067.33 | PnL: 0.37% | $0.51 +2025-03-10 13:48:23,362 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.6815928571427 | Take profit: 2036.2976357142854 +2025-03-10 13:48:23,464 - INFO - CLOSED short at 2072.0 | PnL: -0.23% | $-0.63 +2025-03-10 13:48:23,465 - INFO - OPENED LONG at 2072.0 | Stop loss: 2061.6250571428573 | Take profit: 2103.1024142857145 +2025-03-10 13:48:23,672 - INFO - CLOSED long at 2071.6 | PnL: -0.02% | $-0.23 +2025-03-10 13:48:23,731 - INFO - OPENED LONG at 2068.15 | Stop loss: 2057.794307142857 | Take profit: 2099.194664285714 +2025-03-10 13:48:23,932 - INFO - CLOSED long at 2069.87 | PnL: 0.08% | $-0.03 +2025-03-10 13:48:23,933 - INFO - OPENED SHORT at 2069.87 | Stop loss: 2080.234292857143 | Take profit: 2038.7995357142856 +2025-03-10 13:48:24,689 - INFO - CLOSED short at 2068.67 | PnL: 0.06% | $-0.08 +2025-03-10 13:48:24,689 - INFO - OPENED LONG at 2068.67 | Stop loss: 2058.311707142857 | Take profit: 2099.7224642857145 +2025-03-10 13:48:24,756 - INFO - CLOSED long at 2069.78 | PnL: 0.05% | $-0.09 +2025-03-10 13:48:24,757 - INFO - OPENED SHORT at 2069.78 | Stop loss: 2080.143842857143 | Take profit: 2038.710885714286 +2025-03-10 13:48:25,041 - INFO - CLOSED short at 2074.0 | PnL: -0.20% | $-0.58 +2025-03-10 13:48:25,082 - INFO - OPENED SHORT at 2072.09 | Stop loss: 2082.4653928571433 | Take profit: 2040.9862357142858 +2025-03-10 13:48:25,125 - INFO - CLOSED short at 2069.97 | PnL: 0.10% | $0.00 +2025-03-10 13:48:26,154 - INFO - OPENED SHORT at 2056.85 | Stop loss: 2067.1491928571427 | Take profit: 2025.9748357142857 +2025-03-10 13:48:26,223 - INFO - CLOSED short at 2062.83 | PnL: -0.29% | $-0.74 +2025-03-10 13:48:26,223 - INFO - OPENED LONG at 2062.83 | Stop loss: 2052.500907142857 | Take profit: 2093.794864285714 +2025-03-10 13:48:26,372 - INFO - CLOSED long at 2062.55 | PnL: -0.01% | $-0.21 +2025-03-10 13:48:26,372 - INFO - OPENED SHORT at 2062.55 | Stop loss: 2072.877692857143 | Take profit: 2031.5893357142859 +2025-03-10 13:48:26,459 - INFO - CLOSED short at 2067.49 | PnL: -0.24% | $-0.64 +2025-03-10 13:48:26,459 - INFO - OPENED LONG at 2067.49 | Stop loss: 2057.1376071428567 | Take profit: 2098.524764285714 +2025-03-10 13:48:26,523 - INFO - CLOSED long at 2061.21 | PnL: -0.30% | $-0.75 +2025-03-10 13:48:26,524 - INFO - OPENED SHORT at 2061.21 | Stop loss: 2071.5309928571432 | Take profit: 2030.269435714286 +2025-03-10 13:48:26,590 - INFO - CLOSED short at 2061.84 | PnL: -0.03% | $-0.24 +2025-03-10 13:48:26,590 - INFO - OPENED LONG at 2061.84 | Stop loss: 2051.5158571428574 | Take profit: 2092.7900142857143 +2025-03-10 13:48:26,610 - INFO - CLOSED long at 2062.54 | PnL: 0.03% | $-0.12 +2025-03-10 13:48:26,610 - INFO - OPENED SHORT at 2062.54 | Stop loss: 2072.867642857143 | Take profit: 2031.5794857142857 +2025-03-10 13:48:26,681 - INFO - CLOSED short at 2070.31 | PnL: -0.38% | $-0.88 +2025-03-10 13:48:26,681 - INFO - OPENED LONG at 2070.31 | Stop loss: 2059.943507142857 | Take profit: 2101.387064285714 +2025-03-10 13:48:27,181 - INFO - CLOSED long at 2103.02 | PnL: 1.58% | $2.70 +2025-03-10 13:48:27,181 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.5500428571427 | Take profit: 2071.4522857142856 +2025-03-10 13:48:27,231 - INFO - STOP LOSS hit for short at 2113.5500428571427 | PnL: -0.50% | $-1.13 +2025-03-10 13:48:27,256 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2526428571427 | Take profit: 2107.4244857142858 +2025-03-10 13:48:27,683 - INFO - CLOSED short at 2118.52 | PnL: 0.98% | $1.64 +2025-03-10 13:48:27,683 - INFO - OPENED LONG at 2118.52 | Stop loss: 2107.912457142857 | Take profit: 2150.320214285714 +2025-03-10 13:48:27,767 - INFO - STOP LOSS hit for long at 2107.912457142857 | PnL: -0.50% | $-1.13 +2025-03-10 13:48:27,812 - INFO - OPENED LONG at 2109.05 | Stop loss: 2098.4898071428574 | Take profit: 2140.7081642857147 +2025-03-10 13:48:28,208 - INFO - STOP LOSS hit for long at 2098.4898071428574 | PnL: -0.50% | $-1.12 +2025-03-10 13:48:28,251 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0174071428573 | Take profit: 2131.0453642857146 +2025-03-10 13:48:28,299 - INFO - CLOSED long at 2098.1 | PnL: -0.07% | $-0.31 +2025-03-10 13:48:28,299 - INFO - OPENED SHORT at 2098.1 | Stop loss: 2108.605442857143 | Take profit: 2066.6060857142857 +2025-03-10 13:48:28,348 - INFO - CLOSED short at 2102.19 | PnL: -0.19% | $-0.54 +2025-03-10 13:48:28,348 - INFO - OPENED LONG at 2102.19 | Stop loss: 2091.664107142857 | Take profit: 2133.7452642857143 +2025-03-10 13:48:28,425 - INFO - CLOSED long at 2099.25 | PnL: -0.14% | $-0.44 +2025-03-10 13:48:28,425 - INFO - OPENED SHORT at 2099.25 | Stop loss: 2109.761192857143 | Take profit: 2067.738835714286 +2025-03-10 13:48:28,448 - INFO - CLOSED short at 2098.9 | PnL: 0.02% | $-0.15 +2025-03-10 13:48:28,448 - INFO - OPENED LONG at 2098.9 | Stop loss: 2088.3905571428572 | Take profit: 2130.4059142857145 +2025-03-10 13:48:28,671 - INFO - CLOSED long at 2100.02 | PnL: 0.05% | $-0.08 +2025-03-10 13:48:29,015 - INFO - OPENED SHORT at 2082.44 | Stop loss: 2092.867142857143 | Take profit: 2051.1809857142857 +2025-03-10 13:48:29,148 - INFO - CLOSED short at 2083.41 | PnL: -0.05% | $-0.27 +2025-03-10 13:48:29,148 - INFO - OPENED LONG at 2083.41 | Stop loss: 2072.9780071428568 | Take profit: 2114.6835642857145 +2025-03-10 13:48:29,301 - INFO - CLOSED long at 2085.83 | PnL: 0.12% | $0.03 +2025-03-10 13:48:29,302 - INFO - OPENED SHORT at 2085.83 | Stop loss: 2096.2740928571425 | Take profit: 2054.5201357142855 +2025-03-10 13:48:29,324 - INFO - CLOSED short at 2085.85 | PnL: -0.00% | $-0.18 +2025-03-10 13:48:29,324 - INFO - OPENED LONG at 2085.85 | Stop loss: 2075.405807142857 | Take profit: 2117.1601642857145 +2025-03-10 13:48:29,715 - INFO - CLOSED long at 2091.95 | PnL: 0.29% | $0.35 +2025-03-10 13:48:29,715 - INFO - OPENED SHORT at 2091.95 | Stop loss: 2102.424692857143 | Take profit: 2060.5483357142853 +2025-03-10 13:48:29,761 - INFO - CLOSED short at 2097.8 | PnL: -0.28% | $-0.69 +2025-03-10 13:48:29,762 - INFO - OPENED LONG at 2097.8 | Stop loss: 2087.2960571428575 | Take profit: 2129.289414285715 +2025-03-10 13:48:29,815 - INFO - CLOSED long at 2101.64 | PnL: 0.18% | $0.15 +2025-03-10 13:48:29,815 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1631428571427 | Take profit: 2070.0929857142855 +2025-03-10 13:48:29,853 - INFO - CLOSED short at 2097.11 | PnL: 0.22% | $0.21 +2025-03-10 13:48:29,854 - INFO - OPENED LONG at 2097.11 | Stop loss: 2086.609507142857 | Take profit: 2128.5890642857144 +2025-03-10 13:48:29,934 - INFO - CLOSED long at 2099.89 | PnL: 0.13% | $0.06 +2025-03-10 13:48:29,935 - INFO - OPENED SHORT at 2099.89 | Stop loss: 2110.4043928571427 | Take profit: 2068.3692357142854 +2025-03-10 13:48:29,985 - INFO - CLOSED short at 2100.89 | PnL: -0.05% | $-0.27 +2025-03-10 13:48:29,985 - INFO - OPENED LONG at 2100.89 | Stop loss: 2090.370607142857 | Take profit: 2132.425764285714 +2025-03-10 13:48:30,483 - INFO - CLOSED long at 2102.0 | PnL: 0.05% | $-0.08 +2025-03-10 13:48:30,484 - INFO - OPENED SHORT at 2102.0 | Stop loss: 2112.524942857143 | Take profit: 2070.4475857142857 +2025-03-10 13:48:30,505 - INFO - CLOSED short at 2103.41 | PnL: -0.07% | $-0.30 +2025-03-10 13:48:30,505 - INFO - OPENED LONG at 2103.41 | Stop loss: 2092.878007142857 | Take profit: 2134.9835642857142 +2025-03-10 13:48:31,272 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.46, Avg Loss=$-0.39 +2025-03-10 13:48:31,273 - INFO - Episode 14: Reward=-35.98, Balance=$90.23, Win Rate=25.0%, Trades=56, Episode PnL=$-9.76, Total PnL=$-107.98, Max Drawdown=8.8%, Pred Accuracy=98.5% +2025-03-10 13:48:31,620 - INFO - OPENED LONG at 2061.79 | Stop loss: 2051.4661071428573 | Take profit: 2092.7392642857144 +2025-03-10 13:48:31,661 - INFO - CLOSED long at 2061.18 | PnL: -0.03% | $-0.26 +2025-03-10 13:48:31,661 - INFO - OPENED SHORT at 2061.18 | Stop loss: 2071.5008428571427 | Take profit: 2030.2398857142855 +2025-03-10 13:48:31,871 - INFO - STOP LOSS hit for short at 2071.5008428571427 | PnL: -0.50% | $-1.19 +2025-03-10 13:48:31,894 - INFO - OPENED SHORT at 2070.99 | Stop loss: 2081.3598928571428 | Take profit: 2039.9027357142854 +2025-03-10 13:48:31,965 - INFO - CLOSED short at 2068.99 | PnL: 0.10% | $-0.01 +2025-03-10 13:48:31,966 - INFO - OPENED LONG at 2068.99 | Stop loss: 2058.630107142857 | Take profit: 2100.047264285714 +2025-03-10 13:48:32,300 - INFO - CLOSED long at 2071.41 | PnL: 0.12% | $0.03 +2025-03-10 13:48:32,326 - INFO - OPENED LONG at 2069.37 | Stop loss: 2059.008207142857 | Take profit: 2100.432964285714 +2025-03-10 13:48:32,620 - INFO - CLOSED long at 2070.7 | PnL: 0.06% | $-0.07 +2025-03-10 13:48:32,652 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.978357142857 | Take profit: 2100.4025142857145 +2025-03-10 13:48:33,128 - INFO - CLOSED long at 2070.4 | PnL: 0.05% | $-0.10 +2025-03-10 13:48:33,369 - INFO - OPENED SHORT at 2072.15 | Stop loss: 2082.525692857143 | Take profit: 2041.045335714286 +2025-03-10 13:48:33,602 - INFO - CLOSED short at 2067.79 | PnL: 0.21% | $0.22 +2025-03-10 13:48:33,602 - INFO - OPENED LONG at 2067.79 | Stop loss: 2057.436107142857 | Take profit: 2098.8292642857145 +2025-03-10 13:48:33,641 - INFO - CLOSED long at 2067.46 | PnL: -0.02% | $-0.23 +2025-03-10 13:48:33,642 - INFO - OPENED SHORT at 2067.46 | Stop loss: 2077.812242857143 | Take profit: 2036.425685714286 +2025-03-10 13:48:33,975 - INFO - CLOSED short at 2070.3 | PnL: -0.14% | $-0.46 +2025-03-10 13:48:34,227 - INFO - OPENED SHORT at 2067.11 | Stop loss: 2077.460492857143 | Take profit: 2036.0809357142857 +2025-03-10 13:48:34,564 - INFO - CLOSED short at 2065.83 | PnL: 0.06% | $-0.07 +2025-03-10 13:48:34,565 - INFO - OPENED LONG at 2065.83 | Stop loss: 2055.485907142857 | Take profit: 2096.839864285714 +2025-03-10 13:48:34,820 - INFO - CLOSED long at 2067.1 | PnL: 0.06% | $-0.07 +2025-03-10 13:48:34,820 - INFO - OPENED SHORT at 2067.1 | Stop loss: 2077.450442857143 | Take profit: 2036.0710857142858 +2025-03-10 13:48:35,272 - INFO - CLOSED short at 2064.7 | PnL: 0.12% | $0.03 +2025-03-10 13:48:35,272 - INFO - OPENED LONG at 2064.7 | Stop loss: 2054.361557142857 | Take profit: 2095.6929142857143 +2025-03-10 13:48:35,927 - INFO - CLOSED long at 2058.89 | PnL: -0.28% | $-0.74 +2025-03-10 13:48:35,928 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.1993928571424 | Take profit: 2027.9842357142857 +2025-03-10 13:48:36,012 - INFO - CLOSED short at 2058.28 | PnL: 0.03% | $-0.14 +2025-03-10 13:48:36,012 - INFO - OPENED LONG at 2058.28 | Stop loss: 2047.9736571428573 | Take profit: 2089.1766142857145 +2025-03-10 13:48:36,055 - INFO - CLOSED long at 2056.28 | PnL: -0.10% | $-0.38 +2025-03-10 13:48:36,055 - INFO - OPENED SHORT at 2056.28 | Stop loss: 2066.576342857143 | Take profit: 2025.4133857142858 +2025-03-10 13:48:36,165 - INFO - CLOSED short at 2054.83 | PnL: 0.07% | $-0.06 +2025-03-10 13:48:36,204 - INFO - OPENED SHORT at 2056.71 | Stop loss: 2067.0084928571428 | Take profit: 2025.8369357142856 +2025-03-10 13:48:36,335 - INFO - CLOSED short at 2061.3 | PnL: -0.22% | $-0.62 +2025-03-10 13:48:36,335 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.9785571428574 | Take profit: 2092.2419142857143 +2025-03-10 13:48:36,424 - INFO - CLOSED long at 2066.01 | PnL: 0.23% | $0.24 +2025-03-10 13:48:36,424 - INFO - OPENED SHORT at 2066.01 | Stop loss: 2076.354992857143 | Take profit: 2034.9974357142858 +2025-03-10 13:48:36,549 - INFO - CLOSED short at 2066.33 | PnL: -0.02% | $-0.22 +2025-03-10 13:48:36,549 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.9834071428572 | Take profit: 2097.3473642857143 +2025-03-10 13:48:36,598 - INFO - CLOSED long at 2066.34 | PnL: 0.00% | $-0.19 +2025-03-10 13:48:36,598 - INFO - OPENED SHORT at 2066.34 | Stop loss: 2076.686642857143 | Take profit: 2035.3224857142857 +2025-03-10 13:48:36,653 - INFO - CLOSED short at 2067.33 | PnL: -0.05% | $-0.28 +2025-03-10 13:48:36,654 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.978407142857 | Take profit: 2098.362364285714 +2025-03-10 13:48:36,675 - INFO - CLOSED long at 2067.01 | PnL: -0.02% | $-0.22 +2025-03-10 13:48:36,675 - INFO - OPENED SHORT at 2067.01 | Stop loss: 2077.359992857143 | Take profit: 2035.9824357142859 +2025-03-10 13:48:36,719 - INFO - CLOSED short at 2069.79 | PnL: -0.13% | $-0.44 +2025-03-10 13:48:36,720 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.426107142857 | Take profit: 2100.8592642857143 +2025-03-10 13:48:36,743 - INFO - CLOSED long at 2072.0 | PnL: 0.11% | $0.01 +2025-03-10 13:48:36,743 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3749428571427 | Take profit: 2040.8975857142857 +2025-03-10 13:48:36,767 - INFO - CLOSED short at 2074.3 | PnL: -0.11% | $-0.40 +2025-03-10 13:48:36,768 - INFO - OPENED LONG at 2074.3 | Stop loss: 2063.9135571428574 | Take profit: 2105.4369142857145 +2025-03-10 13:48:36,792 - INFO - CLOSED long at 2078.01 | PnL: 0.18% | $0.15 +2025-03-10 13:48:36,793 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.4149928571433 | Take profit: 2046.817435714286 +2025-03-10 13:48:37,302 - INFO - CLOSED short at 2066.38 | PnL: 0.56% | $0.86 +2025-03-10 13:48:37,303 - INFO - OPENED LONG at 2066.38 | Stop loss: 2056.0331571428574 | Take profit: 2097.398114285714 +2025-03-10 13:48:37,779 - INFO - CLOSED long at 2066.5 | PnL: 0.01% | $-0.18 +2025-03-10 13:48:37,780 - INFO - OPENED SHORT at 2066.5 | Stop loss: 2076.8474428571426 | Take profit: 2035.480085714286 +2025-03-10 13:48:37,819 - INFO - CLOSED short at 2068.59 | PnL: -0.10% | $-0.38 +2025-03-10 13:48:37,847 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.962892857143 | Take profit: 2040.4937357142858 +2025-03-10 13:48:38,013 - INFO - CLOSED short at 2070.35 | PnL: 0.06% | $-0.08 +2025-03-10 13:48:38,014 - INFO - OPENED LONG at 2070.35 | Stop loss: 2059.983307142857 | Take profit: 2101.4276642857144 +2025-03-10 13:48:38,066 - INFO - CLOSED long at 2070.61 | PnL: 0.01% | $-0.16 +2025-03-10 13:48:38,066 - INFO - OPENED SHORT at 2070.61 | Stop loss: 2080.977992857143 | Take profit: 2039.5284357142857 +2025-03-10 13:48:38,317 - INFO - CLOSED short at 2075.07 | PnL: -0.22% | $-0.59 +2025-03-10 13:48:38,317 - INFO - OPENED LONG at 2075.07 | Stop loss: 2064.6797071428573 | Take profit: 2106.2184642857146 +2025-03-10 13:48:39,115 - INFO - STOP LOSS hit for long at 2064.6797071428573 | PnL: -0.50% | $-1.12 +2025-03-10 13:48:39,271 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.837442857143 | Take profit: 2033.5100857142857 +2025-03-10 13:48:39,550 - INFO - CLOSED short at 2053.01 | PnL: 0.56% | $0.84 +2025-03-10 13:48:39,690 - INFO - OPENED LONG at 2056.85 | Stop loss: 2046.5508071428571 | Take profit: 2087.7251642857145 +2025-03-10 13:48:39,833 - INFO - CLOSED long at 2063.9 | PnL: 0.34% | $0.45 +2025-03-10 13:48:40,285 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.7016428571433 | Take profit: 2038.2774857142858 +2025-03-10 13:48:40,612 - INFO - STOP LOSS hit for short at 2079.7016428571433 | PnL: -0.50% | $-1.12 +2025-03-10 13:48:40,697 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2526428571427 | Take profit: 2107.4244857142858 +2025-03-10 13:48:41,089 - INFO - CLOSED short at 2120.15 | PnL: 0.91% | $1.49 +2025-03-10 13:48:41,090 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.534307142857 | Take profit: 2151.9746642857144 +2025-03-10 13:48:41,318 - INFO - STOP LOSS hit for long at 2109.534307142857 | PnL: -0.50% | $-1.13 +2025-03-10 13:48:41,962 - INFO - OPENED SHORT at 2098.9 | Stop loss: 2109.4094428571425 | Take profit: 2067.3940857142857 +2025-03-10 13:48:42,216 - INFO - CLOSED short at 2101.51 | PnL: -0.12% | $-0.42 +2025-03-10 13:48:42,239 - INFO - OPENED SHORT at 2099.59 | Stop loss: 2110.102892857143 | Take profit: 2068.0737357142857 +2025-03-10 13:48:42,539 - INFO - CLOSED short at 2083.28 | PnL: 0.78% | $1.25 +2025-03-10 13:48:42,540 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848657142857 | Take profit: 2114.551614285714 +2025-03-10 13:48:42,595 - INFO - CLOSED long at 2088.44 | PnL: 0.25% | $0.28 +2025-03-10 13:48:42,596 - INFO - OPENED SHORT at 2088.44 | Stop loss: 2098.897142857143 | Take profit: 2057.090985714286 +2025-03-10 13:48:43,324 - INFO - CLOSED short at 2091.05 | PnL: -0.12% | $-0.42 +2025-03-10 13:48:43,466 - INFO - OPENED LONG at 2101.64 | Stop loss: 2091.116857142857 | Take profit: 2133.187014285714 +2025-03-10 13:48:43,582 - INFO - CLOSED long at 2099.73 | PnL: -0.09% | $-0.36 +2025-03-10 13:48:43,643 - INFO - OPENED LONG at 2103.48 | Stop loss: 2092.947657142857 | Take profit: 2135.0546142857143 +2025-03-10 13:48:44,390 - INFO - CLOSED long at 2110.4 | PnL: 0.33% | $0.43 +2025-03-10 13:48:44,391 - INFO - OPENED SHORT at 2110.4 | Stop loss: 2120.9669428571433 | Take profit: 2078.721585714286 +2025-03-10 13:48:44,628 - INFO - CLOSED short at 2112.28 | PnL: -0.09% | $-0.35 +2025-03-10 13:48:44,658 - INFO - OPENED SHORT at 2112.11 | Stop loss: 2122.685492857143 | Take profit: 2080.405935714286 +2025-03-10 13:48:44,785 - INFO - CLOSED short at 2112.61 | PnL: -0.02% | $-0.23 +2025-03-10 13:48:44,785 - INFO - OPENED LONG at 2112.61 | Stop loss: 2102.0320071428573 | Take profit: 2144.3215642857144 +2025-03-10 13:48:44,978 - INFO - CLOSED long at 2117.6 | PnL: 0.24% | $0.25 +2025-03-10 13:48:45,004 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.47, Avg Loss=$-0.38 +2025-03-10 13:48:45,004 - INFO - Episode 15: Reward=-20.27, Balance=$93.85, Win Rate=29.8%, Trades=47, Episode PnL=$-4.82, Total PnL=$-114.13, Max Drawdown=7.1%, Pred Accuracy=98.3% +2025-03-10 13:48:45,334 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:48:45,376 - INFO - CLOSED long at 2059.49 | PnL: -0.16% | $-0.53 +2025-03-10 13:48:45,397 - INFO - OPENED LONG at 2057.8 | Stop loss: 2047.4960571428574 | Take profit: 2088.6894142857145 +2025-03-10 13:48:45,438 - INFO - CLOSED long at 2057.94 | PnL: 0.01% | $-0.18 +2025-03-10 13:48:45,460 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.415492857143 | Take profit: 2027.215935714286 +2025-03-10 13:48:45,482 - INFO - CLOSED short at 2061.79 | PnL: -0.18% | $-0.55 +2025-03-10 13:48:45,482 - INFO - OPENED LONG at 2061.79 | Stop loss: 2051.4661071428573 | Take profit: 2092.7392642857144 +2025-03-10 13:48:45,637 - INFO - CLOSED long at 2067.89 | PnL: 0.30% | $0.38 +2025-03-10 13:48:45,638 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.244392857143 | Take profit: 2036.8492357142854 +2025-03-10 13:48:45,680 - INFO - CLOSED short at 2071.63 | PnL: -0.18% | $-0.55 +2025-03-10 13:48:45,681 - INFO - OPENED LONG at 2071.63 | Stop loss: 2061.256907142857 | Take profit: 2102.7268642857143 +2025-03-10 13:48:45,753 - INFO - CLOSED long at 2069.6 | PnL: -0.10% | $-0.39 +2025-03-10 13:48:45,753 - INFO - OPENED SHORT at 2069.6 | Stop loss: 2079.962942857143 | Take profit: 2038.5335857142857 +2025-03-10 13:48:45,827 - INFO - CLOSED short at 2068.99 | PnL: 0.03% | $-0.14 +2025-03-10 13:48:45,827 - INFO - OPENED LONG at 2068.99 | Stop loss: 2058.630107142857 | Take profit: 2100.047264285714 +2025-03-10 13:48:47,012 - INFO - CLOSED long at 2071.39 | PnL: 0.12% | $0.03 +2025-03-10 13:48:47,012 - INFO - OPENED SHORT at 2071.39 | Stop loss: 2081.761892857143 | Take profit: 2040.2967357142857 +2025-03-10 13:48:47,074 - INFO - CLOSED short at 2073.11 | PnL: -0.08% | $-0.36 +2025-03-10 13:48:47,074 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.729507142857 | Take profit: 2104.2290642857142 +2025-03-10 13:48:47,120 - INFO - CLOSED long at 2072.15 | PnL: -0.05% | $-0.28 +2025-03-10 13:48:47,121 - INFO - OPENED SHORT at 2072.15 | Stop loss: 2082.525692857143 | Take profit: 2041.045335714286 +2025-03-10 13:48:47,255 - INFO - CLOSED short at 2071.11 | PnL: 0.05% | $-0.10 +2025-03-10 13:48:47,256 - INFO - OPENED LONG at 2071.11 | Stop loss: 2060.7395071428573 | Take profit: 2102.1990642857145 +2025-03-10 13:48:47,292 - INFO - CLOSED long at 2069.46 | PnL: -0.08% | $-0.35 +2025-03-10 13:48:47,294 - INFO - OPENED SHORT at 2069.46 | Stop loss: 2079.822242857143 | Take profit: 2038.395685714286 +2025-03-10 13:48:47,451 - INFO - CLOSED short at 2067.46 | PnL: 0.10% | $-0.01 +2025-03-10 13:48:47,479 - INFO - OPENED LONG at 2066.8 | Stop loss: 2056.4510571428573 | Take profit: 2097.8244142857143 +2025-03-10 13:48:47,501 - INFO - CLOSED long at 2065.49 | PnL: -0.06% | $-0.31 +2025-03-10 13:48:47,598 - INFO - OPENED LONG at 2068.58 | Stop loss: 2058.222157142857 | Take profit: 2099.6311142857144 +2025-03-10 13:48:48,262 - INFO - CLOSED long at 2064.47 | PnL: -0.20% | $-0.57 +2025-03-10 13:48:48,263 - INFO - OPENED SHORT at 2064.47 | Stop loss: 2074.8072928571423 | Take profit: 2033.4805357142855 +2025-03-10 13:48:48,601 - INFO - CLOSED short at 2059.59 | PnL: 0.24% | $0.26 +2025-03-10 13:48:48,602 - INFO - OPENED LONG at 2059.59 | Stop loss: 2049.2771071428574 | Take profit: 2090.506264285714 +2025-03-10 13:48:48,940 - INFO - CLOSED long at 2061.6 | PnL: 0.10% | $-0.00 +2025-03-10 13:48:48,941 - INFO - OPENED SHORT at 2061.6 | Stop loss: 2071.922942857143 | Take profit: 2030.6535857142858 +2025-03-10 13:48:50,460 - INFO - STOP LOSS hit for short at 2071.922942857143 | PnL: -0.50% | $-1.15 +2025-03-10 13:48:50,528 - INFO - OPENED LONG at 2078.01 | Stop loss: 2067.605007142857 | Take profit: 2109.2025642857147 +2025-03-10 13:48:50,787 - INFO - CLOSED long at 2069.03 | PnL: -0.43% | $-1.01 +2025-03-10 13:48:50,787 - INFO - OPENED SHORT at 2069.03 | Stop loss: 2079.3900928571434 | Take profit: 2037.9721357142857 +2025-03-10 13:48:50,846 - INFO - CLOSED short at 2068.79 | PnL: 0.01% | $-0.17 +2025-03-10 13:48:50,886 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.610107142857 | Take profit: 2104.107264285714 +2025-03-10 13:48:51,023 - INFO - CLOSED long at 2066.38 | PnL: -0.32% | $-0.78 +2025-03-10 13:48:51,046 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.0434428571425 | Take profit: 2034.6920857142857 +2025-03-10 13:48:52,011 - INFO - CLOSED short at 2076.9 | PnL: -0.54% | $-1.19 +2025-03-10 13:48:52,011 - INFO - OPENED LONG at 2076.9 | Stop loss: 2066.5005571428574 | Take profit: 2108.0759142857146 +2025-03-10 13:48:52,269 - INFO - STOP LOSS hit for long at 2066.5005571428574 | PnL: -0.50% | $-1.10 +2025-03-10 13:48:52,352 - INFO - OPENED SHORT at 2068.1 | Stop loss: 2078.4554428571428 | Take profit: 2037.0560857142857 +2025-03-10 13:48:52,579 - INFO - CLOSED short at 2065.07 | PnL: 0.15% | $0.08 +2025-03-10 13:48:52,579 - INFO - OPENED LONG at 2065.07 | Stop loss: 2054.7297071428575 | Take profit: 2096.0684642857145 +2025-03-10 13:48:52,615 - INFO - CLOSED long at 2066.09 | PnL: 0.05% | $-0.09 +2025-03-10 13:48:52,615 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.4353928571427 | Take profit: 2035.0762357142858 +2025-03-10 13:48:53,828 - INFO - CLOSED short at 2069.34 | PnL: -0.16% | $-0.46 +2025-03-10 13:48:53,853 - INFO - OPENED SHORT at 2069.81 | Stop loss: 2080.173992857143 | Take profit: 2038.7404357142857 +2025-03-10 13:48:54,099 - INFO - STOP LOSS hit for short at 2080.173992857143 | PnL: -0.50% | $-1.08 +2025-03-10 13:48:54,164 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.031557142857 | Take profit: 2162.682914285714 +2025-03-10 13:48:54,191 - INFO - CLOSED long at 2139.54 | PnL: 0.41% | $0.56 +2025-03-10 13:48:54,191 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2526428571427 | Take profit: 2107.4244857142858 +2025-03-10 13:48:54,446 - INFO - CLOSED short at 2128.69 | PnL: 0.51% | $0.73 +2025-03-10 13:48:54,447 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.0316071428574 | Take profit: 2160.6427642857143 +2025-03-10 13:48:54,514 - INFO - STOP LOSS hit for long at 2118.0316071428574 | PnL: -0.50% | $-1.08 +2025-03-10 13:48:54,560 - INFO - OPENED LONG at 2121.4 | Stop loss: 2110.778057142857 | Take profit: 2153.243414285714 +2025-03-10 13:48:54,672 - INFO - STOP LOSS hit for long at 2110.778057142857 | PnL: -0.50% | $-1.07 +2025-03-10 13:48:54,698 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032057142857 | Take profit: 2142.281414285714 +2025-03-10 13:48:55,032 - INFO - STOP LOSS hit for long at 2100.032057142857 | PnL: -0.50% | $-1.06 +2025-03-10 13:48:55,053 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0174071428573 | Take profit: 2131.0453642857146 +2025-03-10 13:48:55,480 - INFO - CLOSED long at 2091.1 | PnL: -0.40% | $-0.87 +2025-03-10 13:48:55,481 - INFO - OPENED SHORT at 2091.1 | Stop loss: 2101.5704428571426 | Take profit: 2059.7110857142857 +2025-03-10 13:48:55,505 - INFO - CLOSED short at 2094.72 | PnL: -0.17% | $-0.47 +2025-03-10 13:48:55,506 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.231457142857 | Take profit: 2126.1632142857143 +2025-03-10 13:48:55,577 - INFO - STOP LOSS hit for long at 2084.231457142857 | PnL: -0.50% | $-1.03 +2025-03-10 13:48:55,672 - INFO - OPENED SHORT at 2082.44 | Stop loss: 2092.867142857143 | Take profit: 2051.1809857142857 +2025-03-10 13:48:56,230 - INFO - STOP LOSS hit for short at 2092.867142857143 | PnL: -0.50% | $-1.02 +2025-03-10 13:48:56,256 - INFO - OPENED SHORT at 2097.8 | Stop loss: 2108.303942857143 | Take profit: 2066.310585714286 +2025-03-10 13:48:56,737 - INFO - CLOSED short at 2100.0 | PnL: -0.10% | $-0.34 +2025-03-10 13:48:56,737 - INFO - OPENED LONG at 2100.0 | Stop loss: 2089.485057142857 | Take profit: 2131.522414285714 +2025-03-10 13:48:56,969 - INFO - CLOSED long at 2113.7 | PnL: 0.65% | $0.92 +2025-03-10 13:48:57,038 - INFO - OPENED LONG at 2113.61 | Stop loss: 2103.027007142857 | Take profit: 2145.3365642857143 +2025-03-10 13:48:57,347 - INFO - CLOSED long at 2117.6 | PnL: 0.19% | $0.15 +2025-03-10 13:48:57,347 - INFO - OPENED SHORT at 2117.6 | Stop loss: 2128.2029428571427 | Take profit: 2085.8135857142856 +2025-03-10 13:48:57,391 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.39, Avg Loss=$-0.59 +2025-03-10 13:48:57,391 - INFO - Episode 16: Reward=-24.70, Balance=$84.83, Win Rate=20.5%, Trades=39, Episode PnL=$-12.72, Total PnL=$-129.30, Max Drawdown=15.9%, Pred Accuracy=98.3% +2025-03-10 13:48:57,568 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:48:58,729 - INFO - CLOSED long at 2069.19 | PnL: 0.31% | $0.41 +2025-03-10 13:48:58,961 - INFO - OPENED LONG at 2065.08 | Stop loss: 2054.739657142857 | Take profit: 2096.078614285714 +2025-03-10 13:48:59,264 - INFO - CLOSED long at 2071.36 | PnL: 0.30% | $0.41 +2025-03-10 13:48:59,290 - INFO - OPENED LONG at 2072.75 | Stop loss: 2062.371307142857 | Take profit: 2103.863664285714 +2025-03-10 13:49:00,284 - INFO - CLOSED long at 2066.4 | PnL: -0.31% | $-0.81 +2025-03-10 13:49:00,284 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.746942857143 | Take profit: 2035.3815857142858 +2025-03-10 13:49:01,009 - INFO - CLOSED short at 2062.89 | PnL: 0.17% | $0.14 +2025-03-10 13:49:01,010 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:49:01,479 - INFO - CLOSED long at 2065.36 | PnL: 0.12% | $0.04 +2025-03-10 13:49:01,557 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.058107142857 | Take profit: 2094.363264285714 +2025-03-10 13:49:01,747 - INFO - CLOSED long at 2060.7 | PnL: -0.13% | $-0.46 +2025-03-10 13:49:01,748 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.018442857143 | Take profit: 2029.7670857142855 +2025-03-10 13:49:01,798 - INFO - CLOSED short at 2059.61 | PnL: 0.05% | $-0.09 +2025-03-10 13:49:01,798 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.297007142857 | Take profit: 2090.5265642857144 +2025-03-10 13:49:02,194 - INFO - CLOSED long at 2061.66 | PnL: 0.10% | $-0.00 +2025-03-10 13:49:02,195 - INFO - OPENED SHORT at 2061.66 | Stop loss: 2071.9832428571426 | Take profit: 2030.7126857142855 +2025-03-10 13:49:02,224 - INFO - CLOSED short at 2061.5 | PnL: 0.01% | $-0.18 +2025-03-10 13:49:02,225 - INFO - OPENED LONG at 2061.5 | Stop loss: 2051.177557142857 | Take profit: 2092.4449142857143 +2025-03-10 13:49:03,175 - INFO - CLOSED long at 2072.99 | PnL: 0.56% | $0.90 +2025-03-10 13:49:03,176 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.369892857143 | Take profit: 2041.8727357142855 +2025-03-10 13:49:03,758 - INFO - CLOSED short at 2070.2 | PnL: 0.13% | $0.07 +2025-03-10 13:49:03,758 - INFO - OPENED LONG at 2070.2 | Stop loss: 2059.834057142857 | Take profit: 2101.275414285714 +2025-03-10 13:49:04,286 - INFO - CLOSED long at 2075.32 | PnL: 0.25% | $0.29 +2025-03-10 13:49:04,678 - INFO - OPENED SHORT at 2069.0 | Stop loss: 2079.359942857143 | Take profit: 2037.9425857142858 +2025-03-10 13:49:04,756 - INFO - CLOSED short at 2070.1 | PnL: -0.05% | $-0.31 +2025-03-10 13:49:04,831 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.842442857143 | Take profit: 2034.4950857142856 +2025-03-10 13:49:04,925 - INFO - CLOSED short at 2066.09 | PnL: -0.03% | $-0.26 +2025-03-10 13:49:05,088 - INFO - OPENED SHORT at 2064.11 | Stop loss: 2074.445492857143 | Take profit: 2033.1259357142858 +2025-03-10 13:49:05,127 - INFO - CLOSED short at 2064.5 | PnL: -0.02% | $-0.24 +2025-03-10 13:49:05,165 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6765928571426 | Take profit: 2035.3126357142855 +2025-03-10 13:49:05,247 - INFO - CLOSED short at 2060.2 | PnL: 0.30% | $0.39 +2025-03-10 13:49:05,374 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.9490071428572 | Take profit: 2079.9705642857143 +2025-03-10 13:49:05,414 - INFO - CLOSED long at 2051.99 | PnL: 0.14% | $0.07 +2025-03-10 13:49:05,414 - INFO - OPENED SHORT at 2051.99 | Stop loss: 2062.2648928571425 | Take profit: 2021.1877357142855 +2025-03-10 13:49:05,617 - INFO - CLOSED short at 2062.83 | PnL: -0.53% | $-1.25 +2025-03-10 13:49:05,618 - INFO - OPENED LONG at 2062.83 | Stop loss: 2052.500907142857 | Take profit: 2093.794864285714 +2025-03-10 13:49:06,398 - INFO - TAKE PROFIT hit for long at 2093.794864285714 | PnL: 1.50% | $2.76 +2025-03-10 13:49:06,426 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.031557142857 | Take profit: 2162.682914285714 +2025-03-10 13:49:06,835 - INFO - STOP LOSS hit for long at 2120.031557142857 | PnL: -0.50% | $-1.22 +2025-03-10 13:49:07,347 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.504757142857 | Take profit: 2139.7033142857144 +2025-03-10 13:49:07,414 - INFO - STOP LOSS hit for long at 2097.504757142857 | PnL: -0.50% | $-1.20 +2025-03-10 13:49:07,537 - INFO - OPENED SHORT at 2102.19 | Stop loss: 2112.7158928571425 | Take profit: 2070.634735714286 +2025-03-10 13:49:07,686 - INFO - CLOSED short at 2104.83 | PnL: -0.13% | $-0.45 +2025-03-10 13:49:07,686 - INFO - OPENED LONG at 2104.83 | Stop loss: 2094.290907142857 | Take profit: 2136.424864285714 +2025-03-10 13:49:07,810 - INFO - CLOSED long at 2099.59 | PnL: -0.25% | $-0.69 +2025-03-10 13:49:07,811 - INFO - OPENED SHORT at 2099.59 | Stop loss: 2110.102892857143 | Take profit: 2068.0737357142857 +2025-03-10 13:49:07,903 - INFO - CLOSED short at 2098.39 | PnL: 0.06% | $-0.08 +2025-03-10 13:49:07,903 - INFO - OPENED LONG at 2098.39 | Stop loss: 2087.883107142857 | Take profit: 2129.8882642857143 +2025-03-10 13:49:08,145 - INFO - STOP LOSS hit for long at 2087.883107142857 | PnL: -0.50% | $-1.17 +2025-03-10 13:49:08,244 - INFO - OPENED LONG at 2082.44 | Stop loss: 2072.0128571428572 | Take profit: 2113.6990142857144 +2025-03-10 13:49:08,905 - INFO - CLOSED long at 2091.05 | PnL: 0.41% | $0.60 +2025-03-10 13:49:08,905 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.5201928571432 | Take profit: 2059.6618357142856 +2025-03-10 13:49:08,926 - INFO - CLOSED short at 2091.05 | PnL: 0.00% | $-0.19 +2025-03-10 13:49:08,927 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.579807142857 | Take profit: 2122.4381642857143 +2025-03-10 13:49:09,155 - INFO - CLOSED long at 2097.11 | PnL: 0.29% | $0.37 +2025-03-10 13:49:09,156 - INFO - OPENED SHORT at 2097.11 | Stop loss: 2107.6104928571426 | Take profit: 2065.630935714286 +2025-03-10 13:49:09,324 - INFO - CLOSED short at 2103.48 | PnL: -0.30% | $-0.78 +2025-03-10 13:49:09,324 - INFO - OPENED LONG at 2103.48 | Stop loss: 2092.947657142857 | Take profit: 2135.0546142857143 +2025-03-10 13:49:09,648 - INFO - CLOSED long at 2103.9 | PnL: 0.02% | $-0.15 +2025-03-10 13:49:09,648 - INFO - OPENED SHORT at 2103.9 | Stop loss: 2114.4344428571426 | Take profit: 2072.319085714286 +2025-03-10 13:49:09,671 - INFO - CLOSED short at 2100.0 | PnL: 0.19% | $0.16 +2025-03-10 13:49:09,671 - INFO - OPENED LONG at 2100.0 | Stop loss: 2089.485057142857 | Take profit: 2131.522414285714 +2025-03-10 13:49:09,911 - INFO - CLOSED long at 2110.87 | PnL: 0.52% | $0.81 +2025-03-10 13:49:09,997 - INFO - OPENED LONG at 2113.7 | Stop loss: 2103.116557142857 | Take profit: 2145.4279142857145 +2025-03-10 13:49:10,352 - INFO - CLOSED long at 2115.3 | PnL: 0.08% | $-0.05 +2025-03-10 13:49:10,457 - INFO - OPENED LONG at 2117.6 | Stop loss: 2106.997057142857 | Take profit: 2149.386414285714 +2025-03-10 13:49:10,499 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.53, Avg Loss=$-0.50 +2025-03-10 13:49:10,500 - INFO - Episode 17: Reward=-8.35, Balance=$97.84, Win Rate=42.4%, Trades=33, Episode PnL=$-2.00, Total PnL=$-131.46, Max Drawdown=4.7%, Pred Accuracy=98.3% +2025-03-10 13:49:10,639 - INFO - Model saved to models/trading_agent_best_winrate.pt +2025-03-10 13:49:10,640 - INFO - New best win rate model saved: 42.4% +2025-03-10 13:49:10,819 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:49:10,890 - INFO - CLOSED long at 2057.8 | PnL: -0.25% | $-0.69 +2025-03-10 13:49:10,891 - INFO - OPENED SHORT at 2057.8 | Stop loss: 2068.103942857143 | Take profit: 2026.9105857142858 +2025-03-10 13:49:11,105 - INFO - STOP LOSS hit for short at 2068.103942857143 | PnL: -0.50% | $-1.18 +2025-03-10 13:49:11,239 - INFO - OPENED SHORT at 2071.63 | Stop loss: 2082.003092857143 | Take profit: 2040.533135714286 +2025-03-10 13:49:11,429 - INFO - CLOSED short at 2071.44 | PnL: 0.01% | $-0.18 +2025-03-10 13:49:11,429 - INFO - OPENED LONG at 2071.44 | Stop loss: 2061.067857142857 | Take profit: 2102.534014285714 +2025-03-10 13:49:11,473 - INFO - CLOSED long at 2073.73 | PnL: 0.11% | $0.02 +2025-03-10 13:49:11,474 - INFO - OPENED SHORT at 2073.73 | Stop loss: 2084.113592857143 | Take profit: 2042.6016357142857 +2025-03-10 13:49:11,550 - INFO - CLOSED short at 2072.91 | PnL: 0.04% | $-0.12 +2025-03-10 13:49:11,551 - INFO - OPENED LONG at 2072.91 | Stop loss: 2062.530507142857 | Take profit: 2104.0260642857143 +2025-03-10 13:49:11,589 - INFO - CLOSED long at 2072.33 | PnL: -0.03% | $-0.25 +2025-03-10 13:49:11,590 - INFO - OPENED SHORT at 2072.33 | Stop loss: 2082.706592857143 | Take profit: 2041.2226357142856 +2025-03-10 13:49:11,681 - INFO - CLOSED short at 2070.9 | PnL: 0.07% | $-0.06 +2025-03-10 13:49:11,681 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.530557142857 | Take profit: 2101.9859142857144 +2025-03-10 13:49:11,807 - INFO - CLOSED long at 2070.36 | PnL: -0.03% | $-0.24 +2025-03-10 13:49:12,022 - INFO - OPENED LONG at 2067.51 | Stop loss: 2057.1575071428574 | Take profit: 2098.5450642857145 +2025-03-10 13:49:12,185 - INFO - CLOSED long at 2068.76 | PnL: 0.06% | $-0.08 +2025-03-10 13:49:12,901 - INFO - OPENED SHORT at 2065.49 | Stop loss: 2075.8323928571426 | Take profit: 2034.4852357142856 +2025-03-10 13:49:13,389 - INFO - CLOSED short at 2067.86 | PnL: -0.11% | $-0.41 +2025-03-10 13:49:13,389 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.5057571428574 | Take profit: 2098.9003142857146 +2025-03-10 13:49:13,407 - INFO - CLOSED long at 2066.4 | PnL: -0.07% | $-0.33 +2025-03-10 13:49:13,408 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.746942857143 | Take profit: 2035.3815857142858 +2025-03-10 13:49:13,493 - INFO - CLOSED short at 2065.28 | PnL: 0.05% | $-0.09 +2025-03-10 13:49:13,493 - INFO - OPENED LONG at 2065.28 | Stop loss: 2054.9386571428577 | Take profit: 2096.2816142857146 +2025-03-10 13:49:13,675 - INFO - CLOSED long at 2065.69 | PnL: 0.02% | $-0.15 +2025-03-10 13:49:13,676 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.033392857143 | Take profit: 2034.6822357142858 +2025-03-10 13:49:13,738 - INFO - CLOSED short at 2065.83 | PnL: -0.01% | $-0.20 +2025-03-10 13:49:13,738 - INFO - OPENED LONG at 2065.83 | Stop loss: 2055.485907142857 | Take profit: 2096.839864285714 +2025-03-10 13:49:14,443 - INFO - CLOSED long at 2060.65 | PnL: -0.25% | $-0.67 +2025-03-10 13:49:14,467 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.580607142857 | Take profit: 2089.795764285714 +2025-03-10 13:49:14,531 - INFO - CLOSED long at 2061.8 | PnL: 0.14% | $0.08 +2025-03-10 13:49:14,554 - INFO - OPENED LONG at 2064.7 | Stop loss: 2054.361557142857 | Take profit: 2095.6929142857143 +2025-03-10 13:49:14,854 - INFO - CLOSED long at 2064.79 | PnL: 0.00% | $-0.18 +2025-03-10 13:49:14,855 - INFO - OPENED SHORT at 2064.79 | Stop loss: 2075.128892857143 | Take profit: 2033.7957357142857 +2025-03-10 13:49:14,899 - INFO - CLOSED short at 2063.53 | PnL: 0.06% | $-0.07 +2025-03-10 13:49:14,900 - INFO - OPENED LONG at 2063.53 | Stop loss: 2053.1974071428576 | Take profit: 2094.5053642857147 +2025-03-10 13:49:14,922 - INFO - CLOSED long at 2063.0 | PnL: -0.03% | $-0.24 +2025-03-10 13:49:14,923 - INFO - OPENED SHORT at 2063.0 | Stop loss: 2073.3299428571427 | Take profit: 2032.0325857142857 +2025-03-10 13:49:15,121 - INFO - CLOSED short at 2059.16 | PnL: 0.19% | $0.16 +2025-03-10 13:49:15,122 - INFO - OPENED LONG at 2059.16 | Stop loss: 2048.849257142857 | Take profit: 2090.069814285714 +2025-03-10 13:49:15,291 - INFO - CLOSED long at 2058.28 | PnL: -0.04% | $-0.27 +2025-03-10 13:49:15,291 - INFO - OPENED SHORT at 2058.28 | Stop loss: 2068.586342857143 | Take profit: 2027.3833857142859 +2025-03-10 13:49:15,753 - INFO - CLOSED short at 2066.34 | PnL: -0.39% | $-0.93 +2025-03-10 13:49:15,754 - INFO - OPENED LONG at 2066.34 | Stop loss: 2055.9933571428573 | Take profit: 2097.3575142857144 +2025-03-10 13:49:16,478 - INFO - CLOSED long at 2065.7 | PnL: -0.03% | $-0.24 +2025-03-10 13:49:16,479 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.0434428571425 | Take profit: 2034.6920857142857 +2025-03-10 13:49:16,571 - INFO - CLOSED short at 2064.5 | PnL: 0.06% | $-0.08 +2025-03-10 13:49:16,571 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.162557142857 | Take profit: 2095.4899142857143 +2025-03-10 13:49:16,625 - INFO - CLOSED long at 2064.4 | PnL: -0.00% | $-0.19 +2025-03-10 13:49:16,625 - INFO - OPENED SHORT at 2064.4 | Stop loss: 2074.736942857143 | Take profit: 2033.4115857142858 +2025-03-10 13:49:16,894 - INFO - CLOSED short at 2068.59 | PnL: -0.20% | $-0.56 +2025-03-10 13:49:16,895 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.2321071428573 | Take profit: 2099.6412642857144 +2025-03-10 13:49:16,938 - INFO - CLOSED long at 2070.2 | PnL: 0.08% | $-0.04 +2025-03-10 13:49:16,987 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.530557142857 | Take profit: 2101.9859142857144 +2025-03-10 13:49:17,269 - INFO - CLOSED long at 2070.67 | PnL: -0.01% | $-0.20 +2025-03-10 13:49:17,270 - INFO - OPENED SHORT at 2070.67 | Stop loss: 2081.0382928571426 | Take profit: 2039.5875357142857 +2025-03-10 13:49:17,534 - INFO - CLOSED short at 2076.9 | PnL: -0.30% | $-0.74 +2025-03-10 13:49:17,875 - INFO - OPENED LONG at 2069.0 | Stop loss: 2058.640057142857 | Take profit: 2100.0574142857145 +2025-03-10 13:49:18,473 - INFO - STOP LOSS hit for long at 2058.640057142857 | PnL: -0.50% | $-1.10 +2025-03-10 13:49:18,520 - INFO - OPENED LONG at 2056.77 | Stop loss: 2046.471207142857 | Take profit: 2087.6439642857144 +2025-03-10 13:49:18,826 - INFO - CLOSED long at 2063.9 | PnL: 0.35% | $0.44 +2025-03-10 13:49:18,826 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.234442857143 | Take profit: 2032.9190857142858 +2025-03-10 13:49:18,849 - INFO - CLOSED short at 2065.1 | PnL: -0.06% | $-0.29 +2025-03-10 13:49:18,872 - INFO - OPENED LONG at 2062.43 | Stop loss: 2052.102907142857 | Take profit: 2093.388864285714 +2025-03-10 13:49:18,894 - INFO - CLOSED long at 2062.55 | PnL: 0.01% | $-0.17 +2025-03-10 13:49:18,894 - INFO - OPENED SHORT at 2062.55 | Stop loss: 2072.877692857143 | Take profit: 2031.5893357142859 +2025-03-10 13:49:18,986 - INFO - CLOSED short at 2066.59 | PnL: -0.20% | $-0.53 +2025-03-10 13:49:18,986 - INFO - OPENED LONG at 2066.59 | Stop loss: 2056.242107142857 | Take profit: 2097.6112642857147 +2025-03-10 13:49:19,025 - INFO - CLOSED long at 2064.08 | PnL: -0.12% | $-0.40 +2025-03-10 13:49:19,072 - INFO - OPENED SHORT at 2061.21 | Stop loss: 2071.5309928571432 | Take profit: 2030.269435714286 +2025-03-10 13:49:19,407 - INFO - STOP LOSS hit for short at 2071.5309928571432 | PnL: -0.50% | $-1.07 +2025-03-10 13:49:19,454 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4351928571427 | Take profit: 2042.9168357142858 +2025-03-10 13:49:19,705 - INFO - STOP LOSS hit for short at 2084.4351928571427 | PnL: -0.50% | $-1.06 +2025-03-10 13:49:19,728 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.9573928571426 | Take profit: 2059.1102357142854 +2025-03-10 13:49:19,753 - INFO - STOP LOSS hit for short at 2100.9573928571426 | PnL: -0.50% | $-1.05 +2025-03-10 13:49:19,778 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.368442857143 | Take profit: 2098.7170857142855 +2025-03-10 13:49:19,959 - INFO - STOP LOSS hit for short at 2141.368442857143 | PnL: -0.50% | $-1.03 +2025-03-10 13:49:20,002 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.021442857143 | Take profit: 2109.158085714286 +2025-03-10 13:49:20,071 - INFO - CLOSED short at 2134.78 | PnL: 0.30% | $0.35 +2025-03-10 13:49:20,072 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.0911571428574 | Take profit: 2166.8241142857146 +2025-03-10 13:49:20,090 - INFO - CLOSED long at 2126.99 | PnL: -0.36% | $-0.79 +2025-03-10 13:49:20,092 - INFO - OPENED SHORT at 2126.99 | Stop loss: 2137.6398928571425 | Take profit: 2095.0627357142857 +2025-03-10 13:49:20,331 - INFO - CLOSED short at 2119.14 | PnL: 0.37% | $0.46 +2025-03-10 13:49:20,332 - INFO - OPENED LONG at 2119.14 | Stop loss: 2108.529357142857 | Take profit: 2150.949514285714 +2025-03-10 13:49:20,432 - INFO - STOP LOSS hit for long at 2108.529357142857 | PnL: -0.50% | $-1.02 +2025-03-10 13:49:20,497 - INFO - OPENED LONG at 2112.09 | Stop loss: 2101.5146071428576 | Take profit: 2143.7937642857146 +2025-03-10 13:49:20,732 - INFO - CLOSED long at 2108.71 | PnL: -0.16% | $-0.44 +2025-03-10 13:49:20,732 - INFO - OPENED SHORT at 2108.71 | Stop loss: 2119.268492857143 | Take profit: 2077.056935714286 +2025-03-10 13:49:20,804 - INFO - CLOSED short at 2108.06 | PnL: 0.03% | $-0.12 +2025-03-10 13:49:20,805 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.504757142857 | Take profit: 2139.7033142857144 +2025-03-10 13:49:20,871 - INFO - STOP LOSS hit for long at 2097.504757142857 | PnL: -0.50% | $-1.00 +2025-03-10 13:49:20,895 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0174071428573 | Take profit: 2131.0453642857146 +2025-03-10 13:49:21,355 - INFO - CLOSED long at 2092.46 | PnL: -0.34% | $-0.72 +2025-03-10 13:49:21,376 - INFO - OPENED LONG at 2091.1 | Stop loss: 2080.6295571428573 | Take profit: 2122.488914285714 +2025-03-10 13:49:21,468 - INFO - CLOSED long at 2088.35 | PnL: -0.13% | $-0.38 +2025-03-10 13:49:21,468 - INFO - OPENED SHORT at 2088.35 | Stop loss: 2098.806692857143 | Take profit: 2057.002335714286 +2025-03-10 13:49:21,917 - INFO - CLOSED short at 2088.66 | PnL: -0.01% | $-0.19 +2025-03-10 13:49:21,952 - INFO - OPENED LONG at 2088.32 | Stop loss: 2077.8634571428574 | Take profit: 2119.6672142857146 +2025-03-10 13:49:22,042 - INFO - CLOSED long at 2087.0 | PnL: -0.06% | $-0.26 +2025-03-10 13:49:22,043 - INFO - OPENED SHORT at 2087.0 | Stop loss: 2097.449942857143 | Take profit: 2055.6725857142856 +2025-03-10 13:49:22,152 - INFO - CLOSED short at 2085.67 | PnL: 0.06% | $-0.06 +2025-03-10 13:49:22,152 - INFO - OPENED LONG at 2085.67 | Stop loss: 2075.2267071428573 | Take profit: 2116.9774642857146 +2025-03-10 13:49:23,525 - INFO - TAKE PROFIT hit for long at 2116.9774642857146 | PnL: 1.50% | $2.27 +2025-03-10 13:49:23,645 - INFO - OPENED LONG at 2116.81 | Stop loss: 2106.211007142857 | Take profit: 2148.5845642857144 +2025-03-10 13:49:23,730 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.54, Avg Loss=$-0.45 +2025-03-10 13:49:23,731 - INFO - Episode 18: Reward=-43.96, Balance=$83.70, Win Rate=13.5%, Trades=52, Episode PnL=$-11.97, Total PnL=$-147.76, Max Drawdown=18.2%, Pred Accuracy=98.5% +2025-03-10 13:49:24,183 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.415492857143 | Take profit: 2027.215935714286 +2025-03-10 13:49:24,399 - INFO - STOP LOSS hit for short at 2068.415492857143 | PnL: -0.50% | $-1.19 +2025-03-10 13:49:24,430 - INFO - OPENED SHORT at 2068.11 | Stop loss: 2078.465492857143 | Take profit: 2037.0659357142858 +2025-03-10 13:49:25,074 - INFO - CLOSED short at 2072.8 | PnL: -0.23% | $-0.64 +2025-03-10 13:49:25,075 - INFO - OPENED LONG at 2072.8 | Stop loss: 2062.4210571428575 | Take profit: 2103.9144142857144 +2025-03-10 13:49:25,566 - INFO - CLOSED long at 2065.99 | PnL: -0.33% | $-0.84 +2025-03-10 13:49:25,566 - INFO - OPENED SHORT at 2065.99 | Stop loss: 2076.3348928571427 | Take profit: 2034.9777357142855 +2025-03-10 13:49:25,738 - INFO - CLOSED short at 2068.51 | PnL: -0.12% | $-0.43 +2025-03-10 13:49:25,739 - INFO - OPENED LONG at 2068.51 | Stop loss: 2058.1525071428573 | Take profit: 2099.5600642857144 +2025-03-10 13:49:26,983 - INFO - CLOSED long at 2066.1 | PnL: -0.12% | $-0.42 +2025-03-10 13:49:27,014 - INFO - OPENED LONG at 2065.28 | Stop loss: 2054.9386571428577 | Take profit: 2096.2816142857146 +2025-03-10 13:49:27,101 - INFO - CLOSED long at 2064.47 | PnL: -0.04% | $-0.27 +2025-03-10 13:49:27,102 - INFO - OPENED SHORT at 2064.47 | Stop loss: 2074.8072928571423 | Take profit: 2033.4805357142855 +2025-03-10 13:49:27,326 - INFO - CLOSED short at 2065.26 | PnL: -0.04% | $-0.26 +2025-03-10 13:49:27,326 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.9187571428574 | Take profit: 2096.2613142857144 +2025-03-10 13:49:27,692 - INFO - CLOSED long at 2062.71 | PnL: -0.12% | $-0.43 +2025-03-10 13:49:27,802 - INFO - OPENED LONG at 2060.9 | Stop loss: 2050.5805571428573 | Take profit: 2091.8359142857144 +2025-03-10 13:49:28,051 - INFO - CLOSED long at 2060.91 | PnL: 0.00% | $-0.19 +2025-03-10 13:49:28,052 - INFO - OPENED SHORT at 2060.91 | Stop loss: 2071.2294928571428 | Take profit: 2029.9739357142855 +2025-03-10 13:49:28,145 - INFO - CLOSED short at 2064.1 | PnL: -0.15% | $-0.48 +2025-03-10 13:49:28,190 - INFO - OPENED SHORT at 2064.33 | Stop loss: 2074.666592857143 | Take profit: 2033.3426357142857 +2025-03-10 13:49:28,334 - INFO - CLOSED short at 2063.53 | PnL: 0.04% | $-0.12 +2025-03-10 13:49:28,464 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3815571428568 | Take profit: 2091.632914285714 +2025-03-10 13:49:28,507 - INFO - CLOSED long at 2059.61 | PnL: -0.05% | $-0.29 +2025-03-10 13:49:28,839 - INFO - OPENED LONG at 2054.83 | Stop loss: 2044.540907142857 | Take profit: 2085.674864285714 +2025-03-10 13:49:28,908 - INFO - CLOSED long at 2059.8 | PnL: 0.24% | $0.27 +2025-03-10 13:49:28,928 - INFO - OPENED LONG at 2061.66 | Stop loss: 2051.336757142857 | Take profit: 2092.607314285714 +2025-03-10 13:49:30,586 - INFO - CLOSED long at 2070.35 | PnL: 0.42% | $0.60 +2025-03-10 13:49:30,801 - INFO - OPENED SHORT at 2071.61 | Stop loss: 2081.9829928571426 | Take profit: 2040.5134357142858 +2025-03-10 13:49:30,968 - INFO - CLOSED short at 2076.9 | PnL: -0.26% | $-0.67 +2025-03-10 13:49:30,968 - INFO - OPENED LONG at 2076.9 | Stop loss: 2066.5005571428574 | Take profit: 2108.0759142857146 +2025-03-10 13:49:31,216 - INFO - STOP LOSS hit for long at 2066.5005571428574 | PnL: -0.50% | $-1.13 +2025-03-10 13:49:31,327 - INFO - OPENED LONG at 2069.0 | Stop loss: 2058.640057142857 | Take profit: 2100.0574142857145 +2025-03-10 13:49:31,955 - INFO - STOP LOSS hit for long at 2058.640057142857 | PnL: -0.50% | $-1.12 +2025-03-10 13:49:32,331 - INFO - OPENED LONG at 2062.43 | Stop loss: 2052.102907142857 | Take profit: 2093.388864285714 +2025-03-10 13:49:33,039 - INFO - TAKE PROFIT hit for long at 2093.388864285714 | PnL: 1.50% | $2.57 +2025-03-10 13:49:33,359 - INFO - OPENED SHORT at 2127.3 | Stop loss: 2137.951442857143 | Take profit: 2095.368085714286 +2025-03-10 13:49:33,864 - INFO - CLOSED short at 2120.81 | PnL: 0.31% | $0.39 +2025-03-10 13:49:33,864 - INFO - OPENED LONG at 2120.81 | Stop loss: 2110.191007142857 | Take profit: 2152.6445642857143 +2025-03-10 13:49:33,998 - INFO - STOP LOSS hit for long at 2110.191007142857 | PnL: -0.50% | $-1.14 +2025-03-10 13:49:34,478 - INFO - OPENED SHORT at 2101.51 | Stop loss: 2112.032492857143 | Take profit: 2069.964935714286 +2025-03-10 13:49:35,133 - INFO - CLOSED short at 2085.09 | PnL: 0.78% | $1.27 +2025-03-10 13:49:35,134 - INFO - OPENED LONG at 2085.09 | Stop loss: 2074.6496071428573 | Take profit: 2116.3887642857144 +2025-03-10 13:49:36,813 - INFO - CLOSED long at 2112.26 | PnL: 1.30% | $2.28 +2025-03-10 13:49:36,988 - INFO - OPENED LONG at 2115.89 | Stop loss: 2105.295607142857 | Take profit: 2147.650764285714 +2025-03-10 13:49:37,068 - INFO - CLOSED long at 2114.71 | PnL: -0.06% | $-0.30 +2025-03-10 13:49:37,069 - INFO - OPENED SHORT at 2114.71 | Stop loss: 2125.2984928571427 | Take profit: 2082.9669357142857 +2025-03-10 13:49:37,156 - INFO - CLOSED short at 2117.6 | PnL: -0.14% | $-0.46 +2025-03-10 13:49:37,193 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.23, Avg Loss=$-0.58 +2025-03-10 13:49:37,193 - INFO - Episode 19: Reward=-14.38, Balance=$97.02, Win Rate=25.0%, Trades=24, Episode PnL=$-1.38, Total PnL=$-150.74, Max Drawdown=7.6%, Pred Accuracy=98.6% +2025-03-10 13:49:37,450 - INFO - OPENED SHORT at 2057.8 | Stop loss: 2068.103942857143 | Take profit: 2026.9105857142858 +2025-03-10 13:49:37,626 - INFO - STOP LOSS hit for short at 2068.103942857143 | PnL: -0.50% | $-1.19 +2025-03-10 13:49:38,015 - INFO - OPENED LONG at 2075.1 | Stop loss: 2064.709557142857 | Take profit: 2106.248914285714 +2025-03-10 13:49:38,757 - INFO - CLOSED long at 2068.51 | PnL: -0.32% | $-0.82 +2025-03-10 13:49:38,780 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.2321071428573 | Take profit: 2099.6412642857144 +2025-03-10 13:49:40,626 - INFO - CLOSED long at 2067.1 | PnL: -0.07% | $-0.33 +2025-03-10 13:49:41,591 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.580607142857 | Take profit: 2089.795764285714 +2025-03-10 13:49:43,145 - INFO - CLOSED long at 2067.53 | PnL: 0.42% | $0.62 +2025-03-10 13:49:43,145 - INFO - OPENED SHORT at 2067.53 | Stop loss: 2077.882592857143 | Take profit: 2036.494635714286 +2025-03-10 13:49:43,167 - INFO - CLOSED short at 2065.29 | PnL: 0.11% | $0.02 +2025-03-10 13:49:43,167 - INFO - OPENED LONG at 2065.29 | Stop loss: 2054.948607142857 | Take profit: 2096.2917642857146 +2025-03-10 13:49:43,659 - INFO - CLOSED long at 2074.37 | PnL: 0.44% | $0.66 +2025-03-10 13:49:45,116 - INFO - OPENED SHORT at 2058.3 | Stop loss: 2068.606442857143 | Take profit: 2027.403085714286 +2025-03-10 13:49:45,216 - INFO - CLOSED short at 2062.83 | PnL: -0.22% | $-0.63 +2025-03-10 13:49:45,327 - INFO - OPENED LONG at 2062.55 | Stop loss: 2052.2223071428575 | Take profit: 2093.5106642857145 +2025-03-10 13:49:46,023 - INFO - CLOSED long at 2076.08 | PnL: 0.66% | $1.09 +2025-03-10 13:49:46,023 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.4753428571426 | Take profit: 2044.9163857142858 +2025-03-10 13:49:46,090 - INFO - STOP LOSS hit for short at 2086.4753428571426 | PnL: -0.50% | $-1.19 +2025-03-10 13:49:46,385 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.0911571428574 | Take profit: 2166.8241142857146 +2025-03-10 13:49:46,473 - INFO - STOP LOSS hit for long at 2124.0911571428574 | PnL: -0.50% | $-1.17 +2025-03-10 13:49:46,493 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.534307142857 | Take profit: 2151.9746642857144 +2025-03-10 13:49:46,700 - INFO - STOP LOSS hit for long at 2109.534307142857 | PnL: -0.50% | $-1.16 +2025-03-10 13:49:46,737 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032057142857 | Take profit: 2142.281414285714 +2025-03-10 13:49:46,778 - INFO - CLOSED long at 2109.05 | PnL: -0.07% | $-0.33 +2025-03-10 13:49:46,778 - INFO - OPENED SHORT at 2109.05 | Stop loss: 2119.610192857143 | Take profit: 2077.3918357142857 +2025-03-10 13:49:46,813 - INFO - CLOSED short at 2112.09 | PnL: -0.14% | $-0.46 +2025-03-10 13:49:46,814 - INFO - OPENED LONG at 2112.09 | Stop loss: 2101.5146071428576 | Take profit: 2143.7937642857146 +2025-03-10 13:49:47,197 - INFO - STOP LOSS hit for long at 2101.5146071428576 | PnL: -0.50% | $-1.13 +2025-03-10 13:49:47,244 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0174071428573 | Take profit: 2131.0453642857146 +2025-03-10 13:49:47,366 - INFO - CLOSED long at 2100.69 | PnL: 0.06% | $-0.08 +2025-03-10 13:49:47,389 - INFO - OPENED LONG at 2104.83 | Stop loss: 2094.290907142857 | Take profit: 2136.424864285714 +2025-03-10 13:49:47,674 - INFO - STOP LOSS hit for long at 2094.290907142857 | PnL: -0.50% | $-1.12 +2025-03-10 13:49:47,785 - INFO - OPENED LONG at 2094.08 | Stop loss: 2083.594657142857 | Take profit: 2125.513614285714 +2025-03-10 13:49:47,862 - INFO - STOP LOSS hit for long at 2083.594657142857 | PnL: -0.50% | $-1.11 +2025-03-10 13:49:47,901 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.982857142857 | Take profit: 2119.789014285714 +2025-03-10 13:49:50,041 - INFO - CLOSED long at 2114.71 | PnL: 1.26% | $2.11 +2025-03-10 13:49:50,042 - INFO - OPENED SHORT at 2114.71 | Stop loss: 2125.2984928571427 | Take profit: 2082.9669357142857 +2025-03-10 13:49:50,107 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.90, Avg Loss=$-0.83 +2025-03-10 13:49:50,108 - INFO - Episode 20: Reward=-3.49, Balance=$93.76, Win Rate=27.8%, Trades=18, Episode PnL=$-9.72, Total PnL=$-156.98, Max Drawdown=8.3%, Pred Accuracy=98.6% +2025-03-10 13:49:50,249 - INFO - Model saved to checkpoints/trading_agent_episode_20.pt +2025-03-10 13:49:50,250 - INFO - Checkpoint saved at episode 20 +2025-03-10 13:49:50,251 - INFO - Reducing learning rate to 0.000090 +2025-03-10 13:49:50,316 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 13:49:50,317 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2405, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 13:49:50,545 - INFO - OPENED SHORT at 2059.49 | Stop loss: 2069.802392857143 | Take profit: 2028.5752357142856 +2025-03-10 13:49:50,627 - INFO - CLOSED short at 2057.94 | PnL: 0.08% | $-0.05 +2025-03-10 13:49:50,627 - INFO - OPENED LONG at 2057.94 | Stop loss: 2047.6353571428572 | Take profit: 2088.831514285714 +2025-03-10 13:49:50,679 - INFO - CLOSED long at 2061.79 | PnL: 0.19% | $0.17 +2025-03-10 13:49:50,680 - INFO - OPENED SHORT at 2061.79 | Stop loss: 2072.1138928571427 | Take profit: 2030.8407357142858 +2025-03-10 13:49:50,917 - INFO - CLOSED short at 2071.63 | PnL: -0.48% | $-1.15 +2025-03-10 13:49:50,917 - INFO - OPENED LONG at 2071.63 | Stop loss: 2061.256907142857 | Take profit: 2102.7268642857143 +2025-03-10 13:49:51,834 - INFO - CLOSED long at 2066.19 | PnL: -0.26% | $-0.71 +2025-03-10 13:49:51,857 - INFO - OPENED LONG at 2066.29 | Stop loss: 2055.943607142857 | Take profit: 2097.306764285714 +2025-03-10 13:49:51,876 - INFO - CLOSED long at 2065.08 | PnL: -0.06% | $-0.31 +2025-03-10 13:49:51,876 - INFO - OPENED SHORT at 2065.08 | Stop loss: 2075.420342857143 | Take profit: 2034.0813857142857 +2025-03-10 13:49:51,924 - INFO - CLOSED short at 2068.76 | PnL: -0.18% | $-0.54 +2025-03-10 13:49:51,924 - INFO - OPENED LONG at 2068.76 | Stop loss: 2058.4012571428575 | Take profit: 2099.8138142857147 +2025-03-10 13:49:52,097 - INFO - CLOSED long at 2070.4 | PnL: 0.08% | $-0.04 +2025-03-10 13:49:52,144 - INFO - OPENED LONG at 2069.96 | Stop loss: 2059.595257142857 | Take profit: 2101.0318142857145 +2025-03-10 13:49:52,302 - INFO - CLOSED long at 2072.7 | PnL: 0.13% | $0.06 +2025-03-10 13:49:52,303 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.078442857143 | Take profit: 2041.5870857142854 +2025-03-10 13:49:52,542 - INFO - CLOSED short at 2069.35 | PnL: 0.16% | $0.12 +2025-03-10 13:49:52,543 - INFO - OPENED LONG at 2069.35 | Stop loss: 2058.988307142857 | Take profit: 2100.412664285714 +2025-03-10 13:49:53,174 - INFO - CLOSED long at 2067.11 | PnL: -0.11% | $-0.40 +2025-03-10 13:49:53,174 - INFO - OPENED SHORT at 2067.11 | Stop loss: 2077.460492857143 | Take profit: 2036.0809357142857 +2025-03-10 13:49:53,243 - INFO - CLOSED short at 2066.4 | PnL: 0.03% | $-0.13 +2025-03-10 13:49:53,243 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.053057142857 | Take profit: 2097.4184142857143 +2025-03-10 13:49:54,880 - INFO - CLOSED long at 2062.6 | PnL: -0.18% | $-0.55 +2025-03-10 13:49:54,880 - INFO - OPENED SHORT at 2062.6 | Stop loss: 2072.927942857143 | Take profit: 2031.6385857142857 +2025-03-10 13:49:55,299 - INFO - CLOSED short at 2059.46 | PnL: 0.15% | $0.10 +2025-03-10 13:49:55,299 - INFO - OPENED LONG at 2059.46 | Stop loss: 2049.1477571428572 | Take profit: 2090.3743142857143 +2025-03-10 13:49:55,825 - INFO - CLOSED long at 2066.01 | PnL: 0.32% | $0.42 +2025-03-10 13:49:55,826 - INFO - OPENED SHORT at 2066.01 | Stop loss: 2076.354992857143 | Take profit: 2034.9974357142858 +2025-03-10 13:49:55,854 - INFO - CLOSED short at 2063.9 | PnL: 0.10% | $0.00 +2025-03-10 13:49:55,855 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.5655571428574 | Take profit: 2094.8809142857144 +2025-03-10 13:49:56,515 - INFO - CLOSED long at 2069.03 | PnL: 0.25% | $0.29 +2025-03-10 13:49:56,515 - INFO - OPENED SHORT at 2069.03 | Stop loss: 2079.3900928571434 | Take profit: 2037.9721357142857 +2025-03-10 13:49:56,586 - INFO - CLOSED short at 2068.79 | PnL: 0.01% | $-0.17 +2025-03-10 13:49:56,586 - INFO - OPENED LONG at 2068.79 | Stop loss: 2058.431107142857 | Take profit: 2099.8442642857144 +2025-03-10 13:49:56,652 - INFO - CLOSED long at 2069.87 | PnL: 0.05% | $-0.09 +2025-03-10 13:49:56,652 - INFO - OPENED SHORT at 2069.87 | Stop loss: 2080.234292857143 | Take profit: 2038.7995357142856 +2025-03-10 13:49:57,083 - INFO - CLOSED short at 2068.59 | PnL: 0.06% | $-0.07 +2025-03-10 13:49:57,084 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.2321071428573 | Take profit: 2099.6412642857144 +2025-03-10 13:49:58,264 - INFO - CLOSED long at 2065.8 | PnL: -0.13% | $-0.45 +2025-03-10 13:49:58,309 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.744607142857 | Take profit: 2097.103764285714 +2025-03-10 13:49:58,755 - INFO - STOP LOSS hit for long at 2055.744607142857 | PnL: -0.50% | $-1.15 +2025-03-10 13:49:59,087 - INFO - OPENED LONG at 2062.55 | Stop loss: 2052.2223071428575 | Take profit: 2093.5106642857145 +2025-03-10 13:49:59,714 - INFO - CLOSED long at 2076.08 | PnL: 0.66% | $1.05 +2025-03-10 13:49:59,715 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.4753428571426 | Take profit: 2044.9163857142858 +2025-03-10 13:49:59,768 - INFO - CLOSED short at 2077.61 | PnL: -0.07% | $-0.33 +2025-03-10 13:49:59,768 - INFO - OPENED LONG at 2077.61 | Stop loss: 2067.2070071428575 | Take profit: 2108.796564285715 +2025-03-10 13:49:59,870 - INFO - TAKE PROFIT hit for long at 2108.796564285715 | PnL: 1.50% | $2.67 +2025-03-10 13:49:59,894 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.827357142857 | Take profit: 2171.655514285714 +2025-03-10 13:50:00,185 - INFO - STOP LOSS hit for long at 2128.827357142857 | PnL: -0.50% | $-1.18 +2025-03-10 13:50:00,234 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.0316071428574 | Take profit: 2160.6427642857143 +2025-03-10 13:50:00,301 - INFO - STOP LOSS hit for long at 2118.0316071428574 | PnL: -0.50% | $-1.16 +2025-03-10 13:50:00,323 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.315407142857 | Take profit: 2151.751364285714 +2025-03-10 13:50:00,460 - INFO - CLOSED long at 2115.28 | PnL: -0.22% | $-0.61 +2025-03-10 13:50:00,460 - INFO - OPENED SHORT at 2115.28 | Stop loss: 2125.871342857143 | Take profit: 2083.528385714286 +2025-03-10 13:50:00,643 - INFO - CLOSED short at 2112.46 | PnL: 0.13% | $0.06 +2025-03-10 13:50:00,643 - INFO - OPENED LONG at 2112.46 | Stop loss: 2101.882757142857 | Take profit: 2144.1693142857143 +2025-03-10 13:50:00,990 - INFO - STOP LOSS hit for long at 2101.882757142857 | PnL: -0.50% | $-1.14 +2025-03-10 13:50:01,172 - INFO - OPENED LONG at 2098.9 | Stop loss: 2088.3905571428572 | Take profit: 2130.4059142857145 +2025-03-10 13:50:01,210 - INFO - CLOSED long at 2100.69 | PnL: 0.09% | $-0.03 +2025-03-10 13:50:01,210 - INFO - OPENED SHORT at 2100.69 | Stop loss: 2111.208392857143 | Take profit: 2069.157235714286 +2025-03-10 13:50:01,298 - INFO - CLOSED short at 2106.39 | PnL: -0.27% | $-0.70 +2025-03-10 13:50:01,298 - INFO - OPENED LONG at 2106.39 | Stop loss: 2095.843107142857 | Take profit: 2138.008264285714 +2025-03-10 13:50:01,439 - INFO - CLOSED long at 2101.51 | PnL: -0.23% | $-0.62 +2025-03-10 13:50:01,439 - INFO - OPENED SHORT at 2101.51 | Stop loss: 2112.032492857143 | Take profit: 2069.964935714286 +2025-03-10 13:50:01,525 - INFO - CLOSED short at 2095.29 | PnL: 0.30% | $0.36 +2025-03-10 13:50:01,525 - INFO - OPENED LONG at 2095.29 | Stop loss: 2084.7986071428572 | Take profit: 2126.7417642857145 +2025-03-10 13:50:01,786 - INFO - STOP LOSS hit for long at 2084.7986071428572 | PnL: -0.50% | $-1.12 +2025-03-10 13:50:01,862 - INFO - OPENED LONG at 2085.3 | Stop loss: 2074.8585571428575 | Take profit: 2116.6019142857144 +2025-03-10 13:50:02,957 - INFO - CLOSED long at 2104.93 | PnL: 0.94% | $1.55 +2025-03-10 13:50:02,958 - INFO - OPENED SHORT at 2104.93 | Stop loss: 2115.4695928571427 | Take profit: 2073.3336357142857 +2025-03-10 13:50:03,002 - INFO - CLOSED short at 2103.81 | PnL: 0.05% | $-0.09 +2025-03-10 13:50:03,003 - INFO - OPENED LONG at 2103.81 | Stop loss: 2093.276007142857 | Take profit: 2135.3895642857146 +2025-03-10 13:50:04,086 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.57, Avg Loss=$-0.53 +2025-03-10 13:50:04,087 - INFO - Episode 21: Reward=-15.12, Balance=$94.07, Win Rate=33.3%, Trades=36, Episode PnL=$-6.86, Total PnL=$-162.91, Max Drawdown=7.4%, Pred Accuracy=98.6% +2025-03-10 13:50:04,089 - INFO - Reducing learning rate to 0.000081 +2025-03-10 13:50:04,871 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.5455571428574 | Take profit: 2098.9409142857144 +2025-03-10 13:50:05,216 - INFO - CLOSED long at 2070.79 | PnL: 0.14% | $0.08 +2025-03-10 13:50:05,216 - INFO - OPENED SHORT at 2070.79 | Stop loss: 2081.1588928571427 | Take profit: 2039.7057357142855 +2025-03-10 13:50:05,444 - INFO - CLOSED short at 2067.6 | PnL: 0.15% | $0.11 +2025-03-10 13:50:05,444 - INFO - OPENED LONG at 2067.6 | Stop loss: 2057.247057142857 | Take profit: 2098.636414285714 +2025-03-10 13:50:07,008 - INFO - CLOSED long at 2066.1 | PnL: -0.07% | $-0.34 +2025-03-10 13:50:07,049 - INFO - OPENED LONG at 2065.28 | Stop loss: 2054.9386571428577 | Take profit: 2096.2816142857146 +2025-03-10 13:50:08,293 - INFO - CLOSED long at 2064.33 | PnL: -0.05% | $-0.29 +2025-03-10 13:50:08,294 - INFO - OPENED SHORT at 2064.33 | Stop loss: 2074.666592857143 | Take profit: 2033.3426357142857 +2025-03-10 13:50:08,418 - INFO - CLOSED short at 2063.53 | PnL: 0.04% | $-0.12 +2025-03-10 13:50:08,418 - INFO - OPENED LONG at 2063.53 | Stop loss: 2053.1974071428576 | Take profit: 2094.5053642857147 +2025-03-10 13:50:09,448 - INFO - CLOSED long at 2074.3 | PnL: 0.52% | $0.83 +2025-03-10 13:50:09,448 - INFO - OPENED SHORT at 2074.3 | Stop loss: 2084.686442857143 | Take profit: 2043.163085714286 +2025-03-10 13:50:09,488 - INFO - CLOSED short at 2078.01 | PnL: -0.18% | $-0.56 +2025-03-10 13:50:09,488 - INFO - OPENED LONG at 2078.01 | Stop loss: 2067.605007142857 | Take profit: 2109.2025642857147 +2025-03-10 13:50:09,663 - INFO - CLOSED long at 2073.23 | PnL: -0.23% | $-0.65 +2025-03-10 13:50:09,664 - INFO - OPENED SHORT at 2073.23 | Stop loss: 2083.611092857143 | Take profit: 2042.109135714286 +2025-03-10 13:50:09,686 - INFO - CLOSED short at 2070.0 | PnL: 0.16% | $0.11 +2025-03-10 13:50:09,687 - INFO - OPENED LONG at 2070.0 | Stop loss: 2059.635057142857 | Take profit: 2101.0724142857143 +2025-03-10 13:50:10,252 - INFO - CLOSED long at 2067.53 | PnL: -0.12% | $-0.43 +2025-03-10 13:50:10,253 - INFO - OPENED SHORT at 2067.53 | Stop loss: 2077.882592857143 | Take profit: 2036.494635714286 +2025-03-10 13:50:10,305 - INFO - CLOSED short at 2065.29 | PnL: 0.11% | $0.02 +2025-03-10 13:50:10,306 - INFO - OPENED LONG at 2065.29 | Stop loss: 2054.948607142857 | Take profit: 2096.2917642857146 +2025-03-10 13:50:11,508 - INFO - CLOSED long at 2067.19 | PnL: 0.09% | $-0.02 +2025-03-10 13:50:11,509 - INFO - OPENED SHORT at 2067.19 | Stop loss: 2077.540892857143 | Take profit: 2036.1597357142857 +2025-03-10 13:50:11,573 - INFO - CLOSED short at 2065.5 | PnL: 0.08% | $-0.04 +2025-03-10 13:50:11,573 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.157557142857 | Take profit: 2096.504914285714 +2025-03-10 13:50:12,141 - INFO - STOP LOSS hit for long at 2055.157557142857 | PnL: -0.50% | $-1.18 +2025-03-10 13:50:12,871 - INFO - OPENED LONG at 2070.24 | Stop loss: 2059.873857142857 | Take profit: 2101.3160142857137 +2025-03-10 13:50:13,241 - INFO - TAKE PROFIT hit for long at 2101.3160142857137 | PnL: 1.50% | $2.71 +2025-03-10 13:50:13,263 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.031557142857 | Take profit: 2162.682914285714 +2025-03-10 13:50:13,282 - INFO - CLOSED long at 2139.54 | PnL: 0.41% | $0.63 +2025-03-10 13:50:13,282 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2526428571427 | Take profit: 2107.4244857142858 +2025-03-10 13:50:13,303 - INFO - CLOSED short at 2131.78 | PnL: 0.36% | $0.53 +2025-03-10 13:50:13,304 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.1061571428572 | Take profit: 2163.7791142857145 +2025-03-10 13:50:13,642 - INFO - STOP LOSS hit for long at 2121.1061571428572 | PnL: -0.50% | $-1.21 +2025-03-10 13:50:13,715 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.315407142857 | Take profit: 2151.751364285714 +2025-03-10 13:50:13,902 - INFO - STOP LOSS hit for long at 2109.315407142857 | PnL: -0.50% | $-1.20 +2025-03-10 13:50:14,127 - INFO - OPENED LONG at 2116.48 | Stop loss: 2105.882657142857 | Take profit: 2148.249614285714 +2025-03-10 13:50:14,299 - INFO - STOP LOSS hit for long at 2105.882657142857 | PnL: -0.50% | $-1.18 +2025-03-10 13:50:14,339 - INFO - OPENED LONG at 2100.5 | Stop loss: 2089.982557142857 | Take profit: 2132.029914285714 +2025-03-10 13:50:14,967 - INFO - STOP LOSS hit for long at 2089.982557142857 | PnL: -0.50% | $-1.17 +2025-03-10 13:50:15,085 - INFO - OPENED LONG at 2085.3 | Stop loss: 2074.8585571428575 | Take profit: 2116.6019142857144 +2025-03-10 13:50:15,997 - INFO - CLOSED long at 2099.89 | PnL: 0.70% | $1.15 +2025-03-10 13:50:15,997 - INFO - OPENED SHORT at 2099.89 | Stop loss: 2110.4043928571427 | Take profit: 2068.3692357142854 +2025-03-10 13:50:16,041 - INFO - CLOSED short at 2099.73 | PnL: 0.01% | $-0.18 +2025-03-10 13:50:16,041 - INFO - OPENED LONG at 2099.73 | Stop loss: 2089.216407142857 | Take profit: 2131.2483642857146 +2025-03-10 13:50:17,318 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.68, Avg Loss=$-0.61 +2025-03-10 13:50:17,319 - INFO - Episode 22: Reward=-3.54, Balance=$97.61, Win Rate=39.1%, Trades=23, Episode PnL=$-3.69, Total PnL=$-165.30, Max Drawdown=3.6%, Pred Accuracy=98.7% +2025-03-10 13:50:17,319 - INFO - Reducing learning rate to 0.000073 +2025-03-10 13:50:17,619 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:50:19,698 - INFO - CLOSED long at 2066.8 | PnL: 0.19% | $0.18 +2025-03-10 13:50:19,720 - INFO - OPENED LONG at 2065.49 | Stop loss: 2055.147607142857 | Take profit: 2096.494764285714 +2025-03-10 13:50:20,312 - INFO - CLOSED long at 2065.28 | PnL: -0.01% | $-0.22 +2025-03-10 13:50:20,349 - INFO - OPENED LONG at 2066.39 | Stop loss: 2056.043107142857 | Take profit: 2097.408264285714 +2025-03-10 13:50:20,764 - INFO - CLOSED long at 2061.3 | PnL: -0.25% | $-0.69 +2025-03-10 13:50:20,818 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.620257142857 | Take profit: 2095.9568142857142 +2025-03-10 13:50:21,710 - INFO - CLOSED long at 2060.7 | PnL: -0.21% | $-0.60 +2025-03-10 13:50:21,711 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.018442857143 | Take profit: 2029.7670857142855 +2025-03-10 13:50:21,734 - INFO - CLOSED short at 2061.09 | PnL: -0.02% | $-0.23 +2025-03-10 13:50:21,734 - INFO - OPENED LONG at 2061.09 | Stop loss: 2050.7696071428572 | Take profit: 2092.0287642857143 +2025-03-10 13:50:22,891 - INFO - CLOSED long at 2071.6 | PnL: 0.51% | $0.80 +2025-03-10 13:50:22,892 - INFO - OPENED SHORT at 2071.6 | Stop loss: 2081.972942857143 | Take profit: 2040.5035857142857 +2025-03-10 13:50:22,913 - INFO - CLOSED short at 2073.23 | PnL: -0.08% | $-0.35 +2025-03-10 13:50:22,914 - INFO - OPENED LONG at 2073.23 | Stop loss: 2062.848907142857 | Take profit: 2104.3508642857146 +2025-03-10 13:50:23,747 - INFO - CLOSED long at 2070.9 | PnL: -0.11% | $-0.42 +2025-03-10 13:50:23,748 - INFO - OPENED SHORT at 2070.9 | Stop loss: 2081.269442857143 | Take profit: 2039.8140857142857 +2025-03-10 13:50:23,802 - INFO - CLOSED short at 2070.7 | PnL: 0.01% | $-0.18 +2025-03-10 13:50:23,802 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.331557142857 | Take profit: 2101.782914285714 +2025-03-10 13:50:25,139 - INFO - STOP LOSS hit for long at 2060.331557142857 | PnL: -0.50% | $-1.17 +2025-03-10 13:50:25,263 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.7300071428574 | Take profit: 2083.8275642857143 +2025-03-10 13:50:25,954 - INFO - CLOSED long at 2070.24 | PnL: 0.84% | $1.43 +2025-03-10 13:50:26,008 - INFO - OPENED LONG at 2069.81 | Stop loss: 2059.446007142857 | Take profit: 2100.8795642857144 +2025-03-10 13:50:26,152 - INFO - CLOSED long at 2074.9 | PnL: 0.25% | $0.29 +2025-03-10 13:50:26,152 - INFO - OPENED SHORT at 2074.9 | Stop loss: 2085.2894428571426 | Take profit: 2043.7540857142858 +2025-03-10 13:50:26,172 - INFO - CLOSED short at 2076.08 | PnL: -0.06% | $-0.31 +2025-03-10 13:50:26,172 - INFO - OPENED LONG at 2076.08 | Stop loss: 2065.6846571428573 | Take profit: 2107.2436142857146 +2025-03-10 13:50:26,345 - INFO - TAKE PROFIT hit for long at 2107.2436142857146 | PnL: 1.50% | $2.74 +2025-03-10 13:50:26,488 - INFO - OPENED LONG at 2141.3 | Stop loss: 2130.5785571428573 | Take profit: 2173.441914285714 +2025-03-10 13:50:26,577 - INFO - STOP LOSS hit for long at 2130.5785571428573 | PnL: -0.50% | $-1.21 +2025-03-10 13:50:26,726 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.534307142857 | Take profit: 2151.9746642857144 +2025-03-10 13:50:26,929 - INFO - STOP LOSS hit for long at 2109.534307142857 | PnL: -0.50% | $-1.19 +2025-03-10 13:50:26,978 - INFO - OPENED LONG at 2109.05 | Stop loss: 2098.4898071428574 | Take profit: 2140.7081642857147 +2025-03-10 13:50:27,410 - INFO - STOP LOSS hit for long at 2098.4898071428574 | PnL: -0.50% | $-1.18 +2025-03-10 13:50:27,565 - INFO - OPENED LONG at 2102.19 | Stop loss: 2091.664107142857 | Take profit: 2133.7452642857143 +2025-03-10 13:50:28,029 - INFO - STOP LOSS hit for long at 2091.664107142857 | PnL: -0.50% | $-1.17 +2025-03-10 13:50:28,090 - INFO - OPENED LONG at 2088.35 | Stop loss: 2077.8933071428573 | Take profit: 2119.6976642857144 +2025-03-10 13:50:30,265 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.09, Avg Loss=$-0.69 +2025-03-10 13:50:30,266 - INFO - Episode 23: Reward=-7.15, Balance=$96.52, Win Rate=27.8%, Trades=18, Episode PnL=$-3.55, Total PnL=$-168.79, Max Drawdown=4.7%, Pred Accuracy=98.7% +2025-03-10 13:50:30,266 - INFO - Reducing learning rate to 0.000066 +2025-03-10 13:50:30,629 - INFO - OPENED LONG at 2057.8 | Stop loss: 2047.4960571428574 | Take profit: 2088.6894142857145 +2025-03-10 13:50:31,043 - INFO - CLOSED long at 2068.65 | PnL: 0.53% | $0.85 +2025-03-10 13:50:31,044 - INFO - OPENED SHORT at 2068.65 | Stop loss: 2079.008192857143 | Take profit: 2037.5978357142858 +2025-03-10 13:50:31,066 - INFO - CLOSED short at 2068.99 | PnL: -0.02% | $-0.23 +2025-03-10 13:50:31,067 - INFO - OPENED LONG at 2068.99 | Stop loss: 2058.630107142857 | Take profit: 2100.047264285714 +2025-03-10 13:50:34,854 - INFO - STOP LOSS hit for long at 2058.630107142857 | PnL: -0.50% | $-1.20 +2025-03-10 13:50:34,892 - INFO - OPENED LONG at 2058.28 | Stop loss: 2047.9736571428573 | Take profit: 2089.1766142857145 +2025-03-10 13:50:35,462 - INFO - CLOSED long at 2067.01 | PnL: 0.42% | $0.64 +2025-03-10 13:50:35,462 - INFO - OPENED SHORT at 2067.01 | Stop loss: 2077.359992857143 | Take profit: 2035.9824357142859 +2025-03-10 13:50:35,506 - INFO - CLOSED short at 2069.79 | PnL: -0.13% | $-0.47 +2025-03-10 13:50:35,507 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.426107142857 | Take profit: 2100.8592642857143 +2025-03-10 13:50:36,860 - INFO - CLOSED long at 2069.78 | PnL: -0.00% | $-0.20 +2025-03-10 13:50:36,930 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.9832071428573 | Take profit: 2105.5079642857145 +2025-03-10 13:50:37,129 - INFO - CLOSED long at 2074.0 | PnL: -0.02% | $-0.23 +2025-03-10 13:50:37,130 - INFO - OPENED SHORT at 2074.0 | Stop loss: 2084.384942857143 | Take profit: 2042.8675857142857 +2025-03-10 13:50:37,150 - INFO - CLOSED short at 2072.09 | PnL: 0.09% | $-0.02 +2025-03-10 13:50:37,151 - INFO - OPENED LONG at 2072.09 | Stop loss: 2061.7146071428574 | Take profit: 2103.1937642857147 +2025-03-10 13:50:37,490 - INFO - CLOSED long at 2070.1 | PnL: -0.10% | $-0.39 +2025-03-10 13:50:37,700 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.058107142857 | Take profit: 2094.363264285714 +2025-03-10 13:50:38,226 - INFO - CLOSED long at 2053.01 | PnL: -0.50% | $-1.18 +2025-03-10 13:50:38,252 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.9490071428572 | Take profit: 2079.9705642857143 +2025-03-10 13:50:38,295 - INFO - CLOSED long at 2051.99 | PnL: 0.14% | $0.07 +2025-03-10 13:50:38,321 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9935571428573 | Take profit: 2089.1969142857147 +2025-03-10 13:50:38,668 - INFO - CLOSED long at 2066.59 | PnL: 0.40% | $0.59 +2025-03-10 13:50:38,690 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.744657142857 | Take profit: 2095.0636142857143 +2025-03-10 13:50:38,714 - INFO - CLOSED long at 2061.21 | PnL: -0.14% | $-0.47 +2025-03-10 13:50:38,739 - INFO - OPENED LONG at 2059.9 | Stop loss: 2049.5855571428574 | Take profit: 2090.8209142857145 +2025-03-10 13:50:39,294 - INFO - TAKE PROFIT hit for long at 2090.8209142857145 | PnL: 1.50% | $2.72 +2025-03-10 13:50:39,332 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.031557142857 | Take profit: 2162.682914285714 +2025-03-10 13:50:39,389 - INFO - CLOSED long at 2131.78 | PnL: 0.05% | $-0.10 +2025-03-10 13:50:39,389 - INFO - OPENED SHORT at 2131.78 | Stop loss: 2142.453842857143 | Take profit: 2099.780885714286 +2025-03-10 13:50:39,480 - INFO - CLOSED short at 2141.3 | PnL: -0.45% | $-1.09 +2025-03-10 13:50:39,481 - INFO - OPENED LONG at 2141.3 | Stop loss: 2130.5785571428573 | Take profit: 2173.441914285714 +2025-03-10 13:50:39,567 - INFO - STOP LOSS hit for long at 2130.5785571428573 | PnL: -0.50% | $-1.18 +2025-03-10 13:50:39,679 - INFO - OPENED LONG at 2121.09 | Stop loss: 2110.469607142857 | Take profit: 2152.9287642857144 +2025-03-10 13:50:39,901 - INFO - STOP LOSS hit for long at 2110.469607142857 | PnL: -0.50% | $-1.17 +2025-03-10 13:50:39,945 - INFO - OPENED LONG at 2109.05 | Stop loss: 2098.4898071428574 | Take profit: 2140.7081642857147 +2025-03-10 13:50:40,074 - INFO - CLOSED long at 2113.24 | PnL: 0.20% | $0.19 +2025-03-10 13:50:40,152 - INFO - OPENED LONG at 2120.81 | Stop loss: 2110.191007142857 | Take profit: 2152.6445642857143 +2025-03-10 13:50:40,249 - INFO - STOP LOSS hit for long at 2110.191007142857 | PnL: -0.50% | $-1.16 +2025-03-10 13:50:40,294 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.504757142857 | Take profit: 2139.7033142857144 +2025-03-10 13:50:40,367 - INFO - STOP LOSS hit for long at 2097.504757142857 | PnL: -0.50% | $-1.14 +2025-03-10 13:50:40,413 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0174071428573 | Take profit: 2131.0453642857146 +2025-03-10 13:50:41,087 - INFO - STOP LOSS hit for long at 2089.0174071428573 | PnL: -0.50% | $-1.13 +2025-03-10 13:50:41,175 - INFO - OPENED LONG at 2085.3 | Stop loss: 2074.8585571428575 | Take profit: 2116.6019142857144 +2025-03-10 13:50:43,284 - INFO - TAKE PROFIT hit for long at 2116.6019142857144 | PnL: 1.50% | $2.61 +2025-03-10 13:50:43,456 - INFO - OPENED LONG at 2114.71 | Stop loss: 2104.121507142857 | Take profit: 2146.4530642857144 +2025-03-10 13:50:43,526 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.09, Avg Loss=$-0.71 +2025-03-10 13:50:43,527 - INFO - Episode 24: Reward=-10.14, Balance=$96.30, Win Rate=30.4%, Trades=23, Episode PnL=$-4.86, Total PnL=$-172.48, Max Drawdown=6.8%, Pred Accuracy=98.8% +2025-03-10 13:50:43,528 - INFO - Reducing learning rate to 0.000059 +2025-03-10 13:50:43,868 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.993507142857 | Take profit: 2091.2370642857145 +2025-03-10 13:50:45,539 - INFO - CLOSED long at 2069.96 | PnL: 0.47% | $0.73 +2025-03-10 13:50:45,540 - INFO - OPENED SHORT at 2069.96 | Stop loss: 2080.3247428571426 | Take profit: 2038.8881857142858 +2025-03-10 13:50:45,707 - INFO - CLOSED short at 2072.15 | PnL: -0.11% | $-0.41 +2025-03-10 13:50:45,707 - INFO - OPENED LONG at 2072.15 | Stop loss: 2061.774307142857 | Take profit: 2103.254664285714 +2025-03-10 13:50:46,138 - INFO - CLOSED long at 2068.58 | PnL: -0.17% | $-0.54 +2025-03-10 13:50:46,138 - INFO - OPENED SHORT at 2068.58 | Stop loss: 2078.937842857143 | Take profit: 2037.5288857142857 +2025-03-10 13:50:46,163 - INFO - CLOSED short at 2068.8 | PnL: -0.01% | $-0.22 +2025-03-10 13:50:46,163 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.4410571428575 | Take profit: 2099.8544142857145 +2025-03-10 13:50:46,971 - INFO - CLOSED long at 2062.65 | PnL: -0.30% | $-0.79 +2025-03-10 13:50:47,152 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.620257142857 | Take profit: 2095.9568142857142 +2025-03-10 13:50:48,234 - INFO - CLOSED long at 2058.89 | PnL: -0.29% | $-0.77 +2025-03-10 13:50:48,234 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.1993928571424 | Take profit: 2027.9842357142857 +2025-03-10 13:50:48,291 - INFO - CLOSED short at 2059.96 | PnL: -0.05% | $-0.30 +2025-03-10 13:50:48,291 - INFO - OPENED LONG at 2059.96 | Stop loss: 2049.645257142857 | Take profit: 2090.881814285714 +2025-03-10 13:50:48,888 - INFO - CLOSED long at 2064.49 | PnL: 0.22% | $0.23 +2025-03-10 13:50:48,888 - INFO - OPENED SHORT at 2064.49 | Stop loss: 2074.827392857143 | Take profit: 2033.5002357142855 +2025-03-10 13:50:48,933 - INFO - CLOSED short at 2066.34 | PnL: -0.09% | $-0.37 +2025-03-10 13:50:48,934 - INFO - OPENED LONG at 2066.34 | Stop loss: 2055.9933571428573 | Take profit: 2097.3575142857144 +2025-03-10 13:50:49,726 - INFO - CLOSED long at 2063.95 | PnL: -0.12% | $-0.42 +2025-03-10 13:50:49,726 - INFO - OPENED SHORT at 2063.95 | Stop loss: 2074.2846928571425 | Take profit: 2032.9683357142856 +2025-03-10 13:50:49,749 - INFO - CLOSED short at 2063.97 | PnL: -0.00% | $-0.19 +2025-03-10 13:50:49,750 - INFO - OPENED LONG at 2063.97 | Stop loss: 2053.635207142857 | Take profit: 2094.951964285714 +2025-03-10 13:50:50,174 - INFO - CLOSED long at 2069.69 | PnL: 0.28% | $0.34 +2025-03-10 13:50:50,245 - INFO - OPENED LONG at 2070.8 | Stop loss: 2060.4310571428573 | Take profit: 2101.8844142857147 +2025-03-10 13:50:50,946 - INFO - CLOSED long at 2067.88 | PnL: -0.14% | $-0.47 +2025-03-10 13:50:50,972 - INFO - OPENED LONG at 2065.45 | Stop loss: 2055.107807142857 | Take profit: 2096.4541642857143 +2025-03-10 13:50:51,666 - INFO - STOP LOSS hit for long at 2055.107807142857 | PnL: -0.50% | $-1.16 +2025-03-10 13:50:51,709 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.237557142857 | Take profit: 2080.264914285714 +2025-03-10 13:50:52,081 - INFO - CLOSED long at 2066.59 | PnL: 0.83% | $1.39 +2025-03-10 13:50:52,105 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.744657142857 | Take profit: 2095.0636142857143 +2025-03-10 13:50:52,124 - INFO - CLOSED long at 2061.21 | PnL: -0.14% | $-0.46 +2025-03-10 13:50:52,126 - INFO - OPENED SHORT at 2061.21 | Stop loss: 2071.5309928571432 | Take profit: 2030.269435714286 +2025-03-10 13:50:52,148 - INFO - CLOSED short at 2059.9 | PnL: 0.06% | $-0.07 +2025-03-10 13:50:52,148 - INFO - OPENED LONG at 2059.9 | Stop loss: 2049.5855571428574 | Take profit: 2090.8209142857145 +2025-03-10 13:50:52,435 - INFO - CLOSED long at 2073.49 | PnL: 0.66% | $1.07 +2025-03-10 13:50:52,457 - INFO - OPENED LONG at 2074.05 | Stop loss: 2063.664807142857 | Take profit: 2105.183164285714 +2025-03-10 13:50:52,767 - INFO - TAKE PROFIT hit for long at 2105.183164285714 | PnL: 1.50% | $2.72 +2025-03-10 13:50:52,815 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.1061571428572 | Take profit: 2163.7791142857145 +2025-03-10 13:50:53,101 - INFO - STOP LOSS hit for long at 2121.1061571428572 | PnL: -0.50% | $-1.20 +2025-03-10 13:50:53,257 - INFO - OPENED LONG at 2119.14 | Stop loss: 2108.529357142857 | Take profit: 2150.949514285714 +2025-03-10 13:50:53,326 - INFO - STOP LOSS hit for long at 2108.529357142857 | PnL: -0.50% | $-1.18 +2025-03-10 13:50:53,558 - INFO - OPENED LONG at 2113.24 | Stop loss: 2102.658857142857 | Take profit: 2144.961014285714 +2025-03-10 13:50:53,814 - INFO - STOP LOSS hit for long at 2102.658857142857 | PnL: -0.50% | $-1.17 +2025-03-10 13:50:53,858 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.535057142857 | Take profit: 2121.3724142857145 +2025-03-10 13:50:55,325 - INFO - CLOSED long at 2091.05 | PnL: 0.05% | $-0.10 +2025-03-10 13:50:55,325 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.5201928571432 | Take profit: 2059.6618357142856 +2025-03-10 13:50:55,347 - INFO - CLOSED short at 2091.95 | PnL: -0.04% | $-0.27 +2025-03-10 13:50:55,348 - INFO - OPENED LONG at 2091.95 | Stop loss: 2081.4753071428568 | Take profit: 2123.351664285714 +2025-03-10 13:50:55,672 - INFO - CLOSED long at 2103.48 | PnL: 0.55% | $0.86 +2025-03-10 13:50:55,714 - INFO - OPENED LONG at 2103.81 | Stop loss: 2093.276007142857 | Take profit: 2135.3895642857146 +2025-03-10 13:50:56,797 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.05, Avg Loss=$-0.56 +2025-03-10 13:50:56,797 - INFO - Episode 25: Reward=-12.53, Balance=$97.27, Win Rate=28.0%, Trades=25, Episode PnL=$-1.40, Total PnL=$-175.21, Max Drawdown=4.3%, Pred Accuracy=98.9% +2025-03-10 13:50:56,798 - INFO - Reducing learning rate to 0.000053 +2025-03-10 13:50:56,984 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:50:57,232 - INFO - CLOSED long at 2070.58 | PnL: 0.37% | $0.54 +2025-03-10 13:50:57,274 - INFO - OPENED LONG at 2068.11 | Stop loss: 2057.754507142857 | Take profit: 2099.1540642857144 +2025-03-10 13:50:57,449 - INFO - CLOSED long at 2068.99 | PnL: 0.04% | $-0.11 +2025-03-10 13:50:57,449 - INFO - OPENED SHORT at 2068.99 | Stop loss: 2079.3498928571425 | Take profit: 2037.9327357142854 +2025-03-10 13:50:57,517 - INFO - CLOSED short at 2070.26 | PnL: -0.06% | $-0.32 +2025-03-10 13:50:57,518 - INFO - OPENED LONG at 2070.26 | Stop loss: 2059.8937571428573 | Take profit: 2101.3363142857143 +2025-03-10 13:50:58,304 - INFO - CLOSED long at 2068.9 | PnL: -0.07% | $-0.33 +2025-03-10 13:50:58,406 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.033057142857 | Take profit: 2101.4784142857143 +2025-03-10 13:50:59,421 - INFO - CLOSED long at 2070.4 | PnL: 0.00% | $-0.20 +2025-03-10 13:50:59,421 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.766942857143 | Take profit: 2039.3215857142857 +2025-03-10 13:50:59,468 - INFO - CLOSED short at 2068.5 | PnL: 0.09% | $-0.02 +2025-03-10 13:50:59,469 - INFO - OPENED LONG at 2068.5 | Stop loss: 2058.142557142857 | Take profit: 2099.5499142857143 +2025-03-10 13:51:00,721 - INFO - CLOSED long at 2064.1 | PnL: -0.21% | $-0.62 +2025-03-10 13:51:00,743 - INFO - OPENED LONG at 2065.36 | Stop loss: 2055.0182571428572 | Take profit: 2096.362814285714 +2025-03-10 13:51:01,355 - INFO - STOP LOSS hit for long at 2055.0182571428572 | PnL: -0.50% | $-1.18 +2025-03-10 13:51:01,384 - INFO - OPENED LONG at 2054.83 | Stop loss: 2044.540907142857 | Take profit: 2085.674864285714 +2025-03-10 13:51:05,527 - INFO - TAKE PROFIT hit for long at 2085.674864285714 | PnL: 1.50% | $2.72 +2025-03-10 13:51:05,551 - INFO - OPENED LONG at 2103.02 | Stop loss: 2092.4899571428573 | Take profit: 2134.587714285714 +2025-03-10 13:51:05,613 - INFO - TAKE PROFIT hit for long at 2134.587714285714 | PnL: 1.50% | $2.80 +2025-03-10 13:51:05,658 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.1061571428572 | Take profit: 2163.7791142857145 +2025-03-10 13:51:05,945 - INFO - STOP LOSS hit for long at 2121.1061571428572 | PnL: -0.50% | $-1.23 +2025-03-10 13:51:05,967 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.534307142857 | Take profit: 2151.9746642857144 +2025-03-10 13:51:06,230 - INFO - STOP LOSS hit for long at 2109.534307142857 | PnL: -0.50% | $-1.22 +2025-03-10 13:51:06,362 - INFO - OPENED LONG at 2113.24 | Stop loss: 2102.658857142857 | Take profit: 2144.961014285714 +2025-03-10 13:51:06,668 - INFO - STOP LOSS hit for long at 2102.658857142857 | PnL: -0.50% | $-1.20 +2025-03-10 13:51:06,690 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.535057142857 | Take profit: 2121.3724142857145 +2025-03-10 13:51:08,053 - INFO - CLOSED long at 2094.7 | PnL: 0.22% | $0.25 +2025-03-10 13:51:08,121 - INFO - OPENED LONG at 2099.99 | Stop loss: 2089.475107142857 | Take profit: 2131.512264285714 +2025-03-10 13:51:08,447 - INFO - CLOSED long at 2105.83 | PnL: 0.28% | $0.35 +2025-03-10 13:51:08,447 - INFO - OPENED SHORT at 2105.83 | Stop loss: 2116.374092857143 | Take profit: 2074.220135714286 +2025-03-10 13:51:08,492 - INFO - CLOSED short at 2103.64 | PnL: 0.10% | $0.01 +2025-03-10 13:51:08,493 - INFO - OPENED LONG at 2103.64 | Stop loss: 2093.106857142857 | Take profit: 2135.217014285714 +2025-03-10 13:51:09,539 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.11, Avg Loss=$-0.64 +2025-03-10 13:51:09,540 - INFO - Episode 26: Reward=-4.81, Balance=$100.23, Win Rate=37.5%, Trades=16, Episode PnL=$0.19, Total PnL=$-174.98, Max Drawdown=3.5%, Pred Accuracy=99.0% +2025-03-10 13:51:09,541 - INFO - Reducing learning rate to 0.000048 +2025-03-10 13:51:09,911 - INFO - OPENED LONG at 2059.49 | Stop loss: 2049.177607142857 | Take profit: 2090.404764285714 +2025-03-10 13:51:11,303 - INFO - CLOSED long at 2070.4 | PnL: 0.53% | $0.85 +2025-03-10 13:51:11,392 - INFO - OPENED LONG at 2071.39 | Stop loss: 2061.018107142857 | Take profit: 2102.483264285714 +2025-03-10 13:51:12,872 - INFO - STOP LOSS hit for long at 2061.018107142857 | PnL: -0.50% | $-1.20 +2025-03-10 13:51:12,971 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.620257142857 | Take profit: 2095.9568142857142 +2025-03-10 13:51:14,214 - INFO - CLOSED long at 2055.6 | PnL: -0.45% | $-1.09 +2025-03-10 13:51:14,215 - INFO - OPENED SHORT at 2055.6 | Stop loss: 2065.8929428571428 | Take profit: 2024.7435857142855 +2025-03-10 13:51:14,240 - INFO - CLOSED short at 2054.89 | PnL: 0.03% | $-0.13 +2025-03-10 13:51:14,240 - INFO - OPENED LONG at 2054.89 | Stop loss: 2044.6006071428571 | Take profit: 2085.7357642857146 +2025-03-10 13:51:14,261 - INFO - CLOSED long at 2054.83 | PnL: -0.00% | $-0.20 +2025-03-10 13:51:14,261 - INFO - OPENED SHORT at 2054.83 | Stop loss: 2065.1190928571427 | Take profit: 2023.9851357142857 +2025-03-10 13:51:14,327 - INFO - CLOSED short at 2059.8 | PnL: -0.24% | $-0.67 +2025-03-10 13:51:14,327 - INFO - OPENED LONG at 2059.8 | Stop loss: 2049.4860571428576 | Take profit: 2090.7194142857143 +2025-03-10 13:51:15,376 - INFO - CLOSED long at 2067.44 | PnL: 0.37% | $0.52 +2025-03-10 13:51:15,376 - INFO - OPENED SHORT at 2067.44 | Stop loss: 2077.792142857143 | Take profit: 2036.4059857142859 +2025-03-10 13:51:15,443 - INFO - CLOSED short at 2071.49 | PnL: -0.20% | $-0.58 +2025-03-10 13:51:15,443 - INFO - OPENED LONG at 2071.49 | Stop loss: 2061.1176071428567 | Take profit: 2102.5847642857143 +2025-03-10 13:51:17,021 - INFO - CLOSED long at 2066.09 | PnL: -0.26% | $-0.70 +2025-03-10 13:51:17,022 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.4353928571427 | Take profit: 2035.0762357142858 +2025-03-10 13:51:17,045 - INFO - CLOSED short at 2063.39 | PnL: 0.13% | $0.06 +2025-03-10 13:51:17,046 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.058107142857 | Take profit: 2094.363264285714 +2025-03-10 13:51:17,174 - INFO - CLOSED long at 2064.5 | PnL: 0.05% | $-0.09 +2025-03-10 13:51:17,211 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.9834071428572 | Take profit: 2097.3473642857143 +2025-03-10 13:51:17,445 - INFO - STOP LOSS hit for long at 2055.9834071428572 | PnL: -0.50% | $-1.15 +2025-03-10 13:51:17,466 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.9490071428572 | Take profit: 2079.9705642857143 +2025-03-10 13:51:18,257 - INFO - CLOSED long at 2072.99 | PnL: 1.16% | $2.01 +2025-03-10 13:51:18,258 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.369892857143 | Take profit: 2041.8727357142855 +2025-03-10 13:51:18,280 - INFO - CLOSED short at 2071.89 | PnL: 0.05% | $-0.09 +2025-03-10 13:51:18,281 - INFO - OPENED LONG at 2071.89 | Stop loss: 2061.515607142857 | Take profit: 2102.9907642857142 +2025-03-10 13:51:18,483 - INFO - TAKE PROFIT hit for long at 2102.9907642857142 | PnL: 1.50% | $2.71 +2025-03-10 13:51:18,521 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.031557142857 | Take profit: 2162.682914285714 +2025-03-10 13:51:18,980 - INFO - STOP LOSS hit for long at 2120.031557142857 | PnL: -0.50% | $-1.20 +2025-03-10 13:51:19,004 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.315407142857 | Take profit: 2151.751364285714 +2025-03-10 13:51:19,145 - INFO - STOP LOSS hit for long at 2109.315407142857 | PnL: -0.50% | $-1.18 +2025-03-10 13:51:19,205 - INFO - OPENED LONG at 2109.05 | Stop loss: 2098.4898071428574 | Take profit: 2140.7081642857147 +2025-03-10 13:51:19,641 - INFO - STOP LOSS hit for long at 2098.4898071428574 | PnL: -0.50% | $-1.17 +2025-03-10 13:51:19,694 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0174071428573 | Take profit: 2131.0453642857146 +2025-03-10 13:51:20,286 - INFO - CLOSED long at 2091.1 | PnL: -0.40% | $-0.96 +2025-03-10 13:51:20,286 - INFO - OPENED SHORT at 2091.1 | Stop loss: 2101.5704428571426 | Take profit: 2059.7110857142857 +2025-03-10 13:51:20,308 - INFO - CLOSED short at 2094.72 | PnL: -0.17% | $-0.52 +2025-03-10 13:51:20,308 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.231457142857 | Take profit: 2126.1632142857143 +2025-03-10 13:51:20,380 - INFO - STOP LOSS hit for long at 2084.231457142857 | PnL: -0.50% | $-1.14 +2025-03-10 13:51:20,451 - INFO - OPENED LONG at 2083.97 | Stop loss: 2073.535207142857 | Take profit: 2115.251964285714 +2025-03-10 13:51:20,822 - INFO - CLOSED long at 2088.66 | PnL: 0.23% | $0.23 +2025-03-10 13:51:20,822 - INFO - OPENED SHORT at 2088.66 | Stop loss: 2099.118242857143 | Take profit: 2057.3076857142855 +2025-03-10 13:51:21,038 - INFO - CLOSED short at 2086.81 | PnL: 0.09% | $-0.02 +2025-03-10 13:51:21,038 - INFO - OPENED LONG at 2086.81 | Stop loss: 2076.361007142857 | Take profit: 2118.1345642857145 +2025-03-10 13:51:21,289 - INFO - CLOSED long at 2099.99 | PnL: 0.63% | $1.00 +2025-03-10 13:51:21,290 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.5048928571427 | Take profit: 2068.4677357142855 +2025-03-10 13:51:21,413 - INFO - CLOSED short at 2099.89 | PnL: 0.00% | $-0.18 +2025-03-10 13:51:21,414 - INFO - OPENED LONG at 2099.89 | Stop loss: 2089.375607142857 | Take profit: 2131.410764285714 +2025-03-10 13:51:21,624 - INFO - CLOSED long at 2101.5 | PnL: 0.08% | $-0.04 +2025-03-10 13:51:21,625 - INFO - OPENED SHORT at 2101.5 | Stop loss: 2112.0224428571432 | Take profit: 2069.955085714286 +2025-03-10 13:51:21,857 - INFO - CLOSED short at 2100.0 | PnL: 0.07% | $-0.05 +2025-03-10 13:51:21,858 - INFO - OPENED LONG at 2100.0 | Stop loss: 2089.485057142857 | Take profit: 2131.522414285714 +2025-03-10 13:51:22,712 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.06, Avg Loss=$-0.62 +2025-03-10 13:51:22,713 - INFO - Episode 27: Reward=-12.96, Balance=$95.03, Win Rate=25.9%, Trades=27, Episode PnL=$-5.74, Total PnL=$-179.95, Max Drawdown=6.7%, Pred Accuracy=99.0% +2025-03-10 13:51:22,713 - INFO - Reducing learning rate to 0.000043 +2025-03-10 13:51:23,026 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:51:24,455 - INFO - CLOSED long at 2068.51 | PnL: 0.27% | $0.34 +2025-03-10 13:51:24,500 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.2321071428573 | Take profit: 2099.6412642857144 +2025-03-10 13:51:24,718 - INFO - CLOSED long at 2072.7 | PnL: 0.20% | $0.20 +2025-03-10 13:51:24,719 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.078442857143 | Take profit: 2041.5870857142854 +2025-03-10 13:51:24,796 - INFO - CLOSED short at 2073.9 | PnL: -0.06% | $-0.32 +2025-03-10 13:51:24,797 - INFO - OPENED LONG at 2073.9 | Stop loss: 2063.5155571428572 | Take profit: 2105.0309142857145 +2025-03-10 13:51:26,019 - INFO - CLOSED long at 2065.69 | PnL: -0.40% | $-0.99 +2025-03-10 13:51:26,202 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:51:26,342 - INFO - CLOSED long at 2066.24 | PnL: 0.16% | $0.12 +2025-03-10 13:51:26,342 - INFO - OPENED SHORT at 2066.24 | Stop loss: 2076.586142857143 | Take profit: 2035.2239857142854 +2025-03-10 13:51:26,562 - INFO - CLOSED short at 2062.71 | PnL: 0.17% | $0.14 +2025-03-10 13:51:26,563 - INFO - OPENED LONG at 2062.71 | Stop loss: 2052.381507142857 | Take profit: 2093.673064285714 +2025-03-10 13:51:26,787 - INFO - CLOSED long at 2061.8 | PnL: -0.04% | $-0.28 +2025-03-10 13:51:26,832 - INFO - OPENED LONG at 2064.7 | Stop loss: 2054.361557142857 | Take profit: 2095.6929142857143 +2025-03-10 13:51:30,692 - INFO - STOP LOSS hit for long at 2054.361557142857 | PnL: -0.50% | $-1.18 +2025-03-10 13:51:30,716 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.9490071428572 | Take profit: 2079.9705642857143 +2025-03-10 13:51:31,084 - INFO - CLOSED long at 2067.49 | PnL: 0.89% | $1.54 +2025-03-10 13:51:31,085 - INFO - OPENED SHORT at 2067.49 | Stop loss: 2077.8423928571424 | Take profit: 2036.4552357142857 +2025-03-10 13:51:31,150 - INFO - CLOSED short at 2061.21 | PnL: 0.30% | $0.40 +2025-03-10 13:51:31,152 - INFO - OPENED LONG at 2061.21 | Stop loss: 2050.8890071428573 | Take profit: 2092.150564285714 +2025-03-10 13:51:31,290 - INFO - CLOSED long at 2062.54 | PnL: 0.06% | $-0.07 +2025-03-10 13:51:31,290 - INFO - OPENED SHORT at 2062.54 | Stop loss: 2072.867642857143 | Take profit: 2031.5794857142857 +2025-03-10 13:51:31,329 - INFO - CLOSED short at 2065.72 | PnL: -0.15% | $-0.50 +2025-03-10 13:51:31,330 - INFO - OPENED LONG at 2065.72 | Stop loss: 2055.376457142857 | Take profit: 2096.728214285714 +2025-03-10 13:51:31,776 - INFO - TAKE PROFIT hit for long at 2096.728214285714 | PnL: 1.50% | $2.77 +2025-03-10 13:51:31,798 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.031557142857 | Take profit: 2162.682914285714 +2025-03-10 13:51:32,215 - INFO - STOP LOSS hit for long at 2120.031557142857 | PnL: -0.50% | $-1.22 +2025-03-10 13:51:32,262 - INFO - OPENED LONG at 2121.4 | Stop loss: 2110.778057142857 | Take profit: 2153.243414285714 +2025-03-10 13:51:32,372 - INFO - STOP LOSS hit for long at 2110.778057142857 | PnL: -0.50% | $-1.20 +2025-03-10 13:51:32,792 - INFO - OPENED LONG at 2100.5 | Stop loss: 2089.982557142857 | Take profit: 2132.029914285714 +2025-03-10 13:51:33,475 - INFO - STOP LOSS hit for long at 2089.982557142857 | PnL: -0.50% | $-1.19 +2025-03-10 13:51:33,497 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848657142857 | Take profit: 2114.551614285714 +2025-03-10 13:51:34,804 - INFO - CLOSED long at 2100.0 | PnL: 0.80% | $1.37 +2025-03-10 13:51:34,804 - INFO - OPENED SHORT at 2100.0 | Stop loss: 2110.514942857143 | Take profit: 2068.477585714286 +2025-03-10 13:51:34,851 - INFO - CLOSED short at 2102.7 | PnL: -0.13% | $-0.45 +2025-03-10 13:51:34,852 - INFO - OPENED LONG at 2102.7 | Stop loss: 2092.171557142857 | Take profit: 2134.262914285714 +2025-03-10 13:51:35,675 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.86, Avg Loss=$-0.74 +2025-03-10 13:51:35,676 - INFO - Episode 28: Reward=-0.83, Balance=$99.48, Win Rate=44.4%, Trades=18, Episode PnL=$-3.69, Total PnL=$-180.48, Max Drawdown=3.5%, Pred Accuracy=99.2% +2025-03-10 13:51:35,833 - INFO - Model saved to models/trading_agent_best_winrate.pt +2025-03-10 13:51:35,834 - INFO - New best win rate model saved: 44.4% +2025-03-10 13:51:35,834 - INFO - Reducing learning rate to 0.000039 +2025-03-10 13:51:36,469 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.8045071428571 | Take profit: 2089.004064285715 +2025-03-10 13:51:36,759 - INFO - CLOSED long at 2070.99 | PnL: 0.63% | $1.04 +2025-03-10 13:51:36,759 - INFO - OPENED SHORT at 2070.99 | Stop loss: 2081.3598928571428 | Take profit: 2039.9027357142854 +2025-03-10 13:51:36,782 - INFO - CLOSED short at 2069.6 | PnL: 0.07% | $-0.07 +2025-03-10 13:51:36,782 - INFO - OPENED LONG at 2069.6 | Stop loss: 2059.237057142857 | Take profit: 2100.6664142857144 +2025-03-10 13:51:37,700 - INFO - CLOSED long at 2068.51 | PnL: -0.05% | $-0.31 +2025-03-10 13:51:37,701 - INFO - OPENED SHORT at 2068.51 | Stop loss: 2078.867492857143 | Take profit: 2037.4599357142858 +2025-03-10 13:51:37,741 - INFO - CLOSED short at 2069.7 | PnL: -0.06% | $-0.31 +2025-03-10 13:51:37,741 - INFO - OPENED LONG at 2069.7 | Stop loss: 2059.3365571428567 | Take profit: 2100.767914285714 +2025-03-10 13:51:38,144 - INFO - CLOSED long at 2069.46 | PnL: -0.01% | $-0.22 +2025-03-10 13:51:38,144 - INFO - OPENED SHORT at 2069.46 | Stop loss: 2079.822242857143 | Take profit: 2038.395685714286 +2025-03-10 13:51:38,217 - INFO - CLOSED short at 2068.32 | PnL: 0.06% | $-0.09 +2025-03-10 13:51:38,219 - INFO - OPENED LONG at 2068.32 | Stop loss: 2057.9634571428574 | Take profit: 2099.3672142857145 +2025-03-10 13:51:39,891 - INFO - CLOSED long at 2062.61 | PnL: -0.28% | $-0.75 +2025-03-10 13:51:39,891 - INFO - OPENED SHORT at 2062.61 | Stop loss: 2072.937992857143 | Take profit: 2031.648435714286 +2025-03-10 13:51:39,987 - INFO - CLOSED short at 2061.13 | PnL: 0.07% | $-0.06 +2025-03-10 13:51:39,988 - INFO - OPENED LONG at 2061.13 | Stop loss: 2050.8094071428573 | Take profit: 2092.0693642857145 +2025-03-10 13:51:40,892 - INFO - CLOSED long at 2061.5 | PnL: 0.02% | $-0.16 +2025-03-10 13:51:40,893 - INFO - OPENED SHORT at 2061.5 | Stop loss: 2071.822442857143 | Take profit: 2030.5550857142857 +2025-03-10 13:51:40,967 - INFO - CLOSED short at 2062.69 | PnL: -0.06% | $-0.31 +2025-03-10 13:51:40,968 - INFO - OPENED LONG at 2062.69 | Stop loss: 2052.3616071428573 | Take profit: 2093.6527642857145 +2025-03-10 13:51:41,088 - INFO - CLOSED long at 2066.01 | PnL: 0.16% | $0.12 +2025-03-10 13:51:41,128 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.5655571428574 | Take profit: 2094.8809142857144 +2025-03-10 13:51:41,203 - INFO - CLOSED long at 2066.34 | PnL: 0.12% | $0.04 +2025-03-10 13:51:41,231 - INFO - OPENED LONG at 2066.79 | Stop loss: 2056.441107142857 | Take profit: 2097.814264285714 +2025-03-10 13:51:43,469 - INFO - CLOSED long at 2069.0 | PnL: 0.11% | $0.01 +2025-03-10 13:51:43,517 - INFO - OPENED LONG at 2070.19 | Stop loss: 2059.8241071428574 | Take profit: 2101.2652642857142 +2025-03-10 13:51:44,030 - INFO - STOP LOSS hit for long at 2059.8241071428574 | PnL: -0.50% | $-1.18 +2025-03-10 13:51:44,076 - INFO - OPENED LONG at 2058.65 | Stop loss: 2048.3418071428573 | Take profit: 2089.5521642857143 +2025-03-10 13:51:44,118 - INFO - CLOSED long at 2053.01 | PnL: -0.27% | $-0.73 +2025-03-10 13:51:44,239 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9935571428573 | Take profit: 2089.1969142857147 +2025-03-10 13:51:44,389 - INFO - CLOSED long at 2063.9 | PnL: 0.27% | $0.33 +2025-03-10 13:51:44,414 - INFO - OPENED LONG at 2065.1 | Stop loss: 2054.759557142857 | Take profit: 2096.0989142857143 +2025-03-10 13:51:44,862 - INFO - CLOSED long at 2069.34 | PnL: 0.21% | $0.20 +2025-03-10 13:51:44,862 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.7016428571433 | Take profit: 2038.2774857142858 +2025-03-10 13:51:44,885 - INFO - CLOSED short at 2069.81 | PnL: -0.02% | $-0.24 +2025-03-10 13:51:44,885 - INFO - OPENED LONG at 2069.81 | Stop loss: 2059.446007142857 | Take profit: 2100.8795642857144 +2025-03-10 13:51:45,114 - INFO - CLOSED long at 2074.9 | PnL: 0.25% | $0.28 +2025-03-10 13:51:45,115 - INFO - OPENED SHORT at 2074.9 | Stop loss: 2085.2894428571426 | Take profit: 2043.7540857142858 +2025-03-10 13:51:45,177 - INFO - CLOSED short at 2077.61 | PnL: -0.13% | $-0.45 +2025-03-10 13:51:45,177 - INFO - OPENED LONG at 2077.61 | Stop loss: 2067.2070071428575 | Take profit: 2108.796564285715 +2025-03-10 13:51:45,275 - INFO - TAKE PROFIT hit for long at 2108.796564285715 | PnL: 1.50% | $2.70 +2025-03-10 13:51:45,339 - INFO - OPENED LONG at 2133.95 | Stop loss: 2123.265307142857 | Take profit: 2165.9816642857145 +2025-03-10 13:51:45,732 - INFO - STOP LOSS hit for long at 2123.265307142857 | PnL: -0.50% | $-1.19 +2025-03-10 13:51:45,770 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.534307142857 | Take profit: 2151.9746642857144 +2025-03-10 13:51:46,019 - INFO - STOP LOSS hit for long at 2109.534307142857 | PnL: -0.50% | $-1.18 +2025-03-10 13:51:46,043 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032057142857 | Take profit: 2142.281414285714 +2025-03-10 13:51:46,370 - INFO - CLOSED long at 2108.71 | PnL: -0.09% | $-0.37 +2025-03-10 13:51:46,371 - INFO - OPENED SHORT at 2108.71 | Stop loss: 2119.268492857143 | Take profit: 2077.056935714286 +2025-03-10 13:51:46,395 - INFO - CLOSED short at 2106.49 | PnL: 0.11% | $0.01 +2025-03-10 13:51:46,396 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.942607142857 | Take profit: 2138.1097642857144 +2025-03-10 13:51:46,497 - INFO - STOP LOSS hit for long at 2095.942607142857 | PnL: -0.50% | $-1.16 +2025-03-10 13:51:46,521 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0174071428573 | Take profit: 2131.0453642857146 +2025-03-10 13:51:46,950 - INFO - CLOSED long at 2095.29 | PnL: -0.20% | $-0.58 +2025-03-10 13:51:47,105 - INFO - OPENED LONG at 2091.1 | Stop loss: 2080.6295571428573 | Take profit: 2122.488914285714 +2025-03-10 13:51:47,364 - INFO - STOP LOSS hit for long at 2080.6295571428573 | PnL: -0.50% | $-1.14 +2025-03-10 13:51:47,581 - INFO - OPENED LONG at 2086.57 | Stop loss: 2076.1222071428574 | Take profit: 2117.8909642857143 +2025-03-10 13:51:49,400 - INFO - TAKE PROFIT hit for long at 2117.8909642857143 | PnL: 1.50% | $2.62 +2025-03-10 13:51:49,445 - INFO - OPENED LONG at 2117.39 | Stop loss: 2106.788107142857 | Take profit: 2149.173264285714 +2025-03-10 13:51:49,642 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.74, Avg Loss=$-0.55 +2025-03-10 13:51:49,643 - INFO - Episode 29: Reward=-10.70, Balance=$96.89, Win Rate=34.5%, Trades=29, Episode PnL=$-2.83, Total PnL=$-183.58, Max Drawdown=5.7%, Pred Accuracy=99.4% +2025-03-10 13:51:49,644 - INFO - Reducing learning rate to 0.000035 +2025-03-10 13:51:49,824 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:51:50,031 - INFO - CLOSED long at 2064.32 | PnL: 0.07% | $-0.06 +2025-03-10 13:51:50,031 - INFO - OPENED SHORT at 2064.32 | Stop loss: 2074.6565428571434 | Take profit: 2033.3327857142858 +2025-03-10 13:51:50,067 - INFO - CLOSED short at 2065.86 | PnL: -0.07% | $-0.35 +2025-03-10 13:51:50,068 - INFO - OPENED LONG at 2065.86 | Stop loss: 2055.515757142857 | Take profit: 2096.8703142857144 +2025-03-10 13:51:50,190 - INFO - CLOSED long at 2067.89 | PnL: 0.10% | $-0.00 +2025-03-10 13:51:50,217 - INFO - OPENED LONG at 2071.63 | Stop loss: 2061.256907142857 | Take profit: 2102.7268642857143 +2025-03-10 13:51:51,135 - INFO - CLOSED long at 2066.18 | PnL: -0.26% | $-0.72 +2025-03-10 13:51:51,135 - INFO - OPENED SHORT at 2066.18 | Stop loss: 2076.525842857143 | Take profit: 2035.1648857142857 +2025-03-10 13:51:51,158 - INFO - CLOSED short at 2068.76 | PnL: -0.12% | $-0.44 +2025-03-10 13:51:51,158 - INFO - OPENED LONG at 2068.76 | Stop loss: 2058.4012571428575 | Take profit: 2099.8138142857147 +2025-03-10 13:51:52,054 - INFO - CLOSED long at 2067.86 | PnL: -0.04% | $-0.28 +2025-03-10 13:51:52,090 - INFO - OPENED LONG at 2067.59 | Stop loss: 2057.237107142857 | Take profit: 2098.6262642857146 +2025-03-10 13:51:52,966 - INFO - CLOSED long at 2059.59 | PnL: -0.39% | $-0.95 +2025-03-10 13:51:52,989 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.9785571428574 | Take profit: 2092.2419142857143 +2025-03-10 13:51:55,216 - INFO - CLOSED long at 2069.69 | PnL: 0.41% | $0.59 +2025-03-10 13:51:55,217 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.053392857143 | Take profit: 2038.6222357142858 +2025-03-10 13:51:55,273 - INFO - CLOSED short at 2069.03 | PnL: 0.03% | $-0.13 +2025-03-10 13:51:55,274 - INFO - OPENED LONG at 2069.03 | Stop loss: 2058.669907142857 | Take profit: 2100.0878642857147 +2025-03-10 13:51:56,509 - INFO - CLOSED long at 2076.9 | PnL: 0.38% | $0.54 +2025-03-10 13:51:56,509 - INFO - OPENED SHORT at 2076.9 | Stop loss: 2087.299442857143 | Take profit: 2045.7240857142858 +2025-03-10 13:51:56,542 - INFO - CLOSED short at 2075.61 | PnL: 0.06% | $-0.07 +2025-03-10 13:51:56,543 - INFO - OPENED LONG at 2075.61 | Stop loss: 2065.2170071428573 | Take profit: 2106.7665642857146 +2025-03-10 13:51:57,031 - INFO - STOP LOSS hit for long at 2065.2170071428573 | PnL: -0.50% | $-1.17 +2025-03-10 13:51:57,055 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.744607142857 | Take profit: 2097.103764285714 +2025-03-10 13:51:57,471 - INFO - STOP LOSS hit for long at 2055.744607142857 | PnL: -0.50% | $-1.16 +2025-03-10 13:51:57,498 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.9490071428572 | Take profit: 2079.9705642857143 +2025-03-10 13:51:57,780 - INFO - CLOSED long at 2063.9 | PnL: 0.72% | $1.17 +2025-03-10 13:51:57,806 - INFO - OPENED LONG at 2065.1 | Stop loss: 2054.759557142857 | Take profit: 2096.0989142857143 +2025-03-10 13:51:58,647 - INFO - TAKE PROFIT hit for long at 2096.0989142857143 | PnL: 1.50% | $2.70 +2025-03-10 13:51:58,671 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.031557142857 | Take profit: 2162.682914285714 +2025-03-10 13:51:59,085 - INFO - STOP LOSS hit for long at 2120.031557142857 | PnL: -0.50% | $-1.19 +2025-03-10 13:51:59,115 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.315407142857 | Take profit: 2151.751364285714 +2025-03-10 13:51:59,332 - INFO - STOP LOSS hit for long at 2109.315407142857 | PnL: -0.50% | $-1.17 +2025-03-10 13:51:59,360 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032057142857 | Take profit: 2142.281414285714 +2025-03-10 13:51:59,805 - INFO - STOP LOSS hit for long at 2100.032057142857 | PnL: -0.50% | $-1.16 +2025-03-10 13:51:59,828 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0174071428573 | Take profit: 2131.0453642857146 +2025-03-10 13:52:00,456 - INFO - STOP LOSS hit for long at 2089.0174071428573 | PnL: -0.50% | $-1.15 +2025-03-10 13:52:00,500 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848657142857 | Take profit: 2114.551614285714 +2025-03-10 13:52:00,741 - INFO - CLOSED long at 2083.59 | PnL: 0.01% | $-0.16 +2025-03-10 13:52:00,742 - INFO - OPENED SHORT at 2083.59 | Stop loss: 2094.022892857143 | Take profit: 2052.313735714286 +2025-03-10 13:52:00,774 - INFO - CLOSED short at 2086.57 | PnL: -0.14% | $-0.46 +2025-03-10 13:52:00,774 - INFO - OPENED LONG at 2086.57 | Stop loss: 2076.1222071428574 | Take profit: 2117.8909642857143 +2025-03-10 13:52:01,057 - INFO - CLOSED long at 2087.47 | PnL: 0.04% | $-0.11 +2025-03-10 13:52:01,057 - INFO - OPENED SHORT at 2087.47 | Stop loss: 2097.9222928571426 | Take profit: 2056.1355357142857 +2025-03-10 13:52:01,099 - INFO - CLOSED short at 2086.81 | PnL: 0.03% | $-0.13 +2025-03-10 13:52:01,100 - INFO - OPENED LONG at 2086.81 | Stop loss: 2076.361007142857 | Take profit: 2118.1345642857145 +2025-03-10 13:52:01,492 - INFO - CLOSED long at 2100.89 | PnL: 0.67% | $1.07 +2025-03-10 13:52:01,493 - INFO - OPENED SHORT at 2100.89 | Stop loss: 2111.409392857143 | Take profit: 2069.3542357142856 +2025-03-10 13:52:01,515 - INFO - CLOSED short at 2099.73 | PnL: 0.06% | $-0.08 +2025-03-10 13:52:01,515 - INFO - OPENED LONG at 2099.73 | Stop loss: 2089.216407142857 | Take profit: 2131.2483642857146 +2025-03-10 13:52:02,716 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.22, Avg Loss=$-0.55 +2025-03-10 13:52:02,716 - INFO - Episode 30: Reward=80.91, Balance=$95.14, Win Rate=20.0%, Trades=25, Episode PnL=$-6.03, Total PnL=$-188.44, Max Drawdown=5.0%, Pred Accuracy=99.5% +2025-03-10 13:52:02,856 - INFO - Model saved to checkpoints/trading_agent_episode_30.pt +2025-03-10 13:52:02,857 - INFO - Checkpoint saved at episode 30 +2025-03-10 13:52:02,858 - INFO - Reducing learning rate to 0.000031 +2025-03-10 13:52:02,924 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 13:52:02,925 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2405, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 13:52:03,324 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:52:04,845 - INFO - CLOSED long at 2069.7 | PnL: 0.33% | $0.46 +2025-03-10 13:52:04,846 - INFO - OPENED SHORT at 2069.7 | Stop loss: 2080.0634428571425 | Take profit: 2038.6320857142855 +2025-03-10 13:52:04,927 - INFO - CLOSED short at 2069.96 | PnL: -0.01% | $-0.22 +2025-03-10 13:52:04,927 - INFO - OPENED LONG at 2069.96 | Stop loss: 2059.595257142857 | Take profit: 2101.0318142857145 +2025-03-10 13:52:05,868 - INFO - CLOSED long at 2070.73 | PnL: 0.04% | $-0.12 +2025-03-10 13:52:05,892 - INFO - OPENED LONG at 2068.5 | Stop loss: 2058.142557142857 | Take profit: 2099.5499142857143 +2025-03-10 13:52:06,836 - INFO - CLOSED long at 2061.6 | PnL: -0.33% | $-0.86 +2025-03-10 13:52:06,892 - INFO - OPENED LONG at 2060.9 | Stop loss: 2050.5805571428573 | Take profit: 2091.8359142857144 +2025-03-10 13:52:07,496 - INFO - CLOSED long at 2059.61 | PnL: -0.06% | $-0.32 +2025-03-10 13:52:07,516 - INFO - OPENED LONG at 2059.16 | Stop loss: 2048.849257142857 | Take profit: 2090.069814285714 +2025-03-10 13:52:07,535 - INFO - CLOSED long at 2059.02 | PnL: -0.01% | $-0.21 +2025-03-10 13:52:07,535 - INFO - OPENED SHORT at 2059.02 | Stop loss: 2069.330042857143 | Take profit: 2028.1122857142857 +2025-03-10 13:52:07,600 - INFO - CLOSED short at 2059.96 | PnL: -0.05% | $-0.29 +2025-03-10 13:52:07,601 - INFO - OPENED LONG at 2059.96 | Stop loss: 2049.645257142857 | Take profit: 2090.881814285714 +2025-03-10 13:52:07,636 - INFO - CLOSED long at 2059.46 | PnL: -0.02% | $-0.24 +2025-03-10 13:52:07,676 - INFO - OPENED LONG at 2057.4 | Stop loss: 2047.0980571428572 | Take profit: 2088.283414285714 +2025-03-10 13:52:08,319 - INFO - CLOSED long at 2065.69 | PnL: 0.40% | $0.59 +2025-03-10 13:52:08,349 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.426107142857 | Take profit: 2100.8592642857143 +2025-03-10 13:52:11,007 - INFO - STOP LOSS hit for long at 2059.426107142857 | PnL: -0.50% | $-1.18 +2025-03-10 13:52:11,029 - INFO - OPENED LONG at 2058.09 | Stop loss: 2047.784607142857 | Take profit: 2088.9837642857146 +2025-03-10 13:52:11,158 - INFO - CLOSED long at 2051.99 | PnL: -0.30% | $-0.77 +2025-03-10 13:52:11,159 - INFO - OPENED SHORT at 2051.99 | Stop loss: 2062.2648928571425 | Take profit: 2021.1877357142855 +2025-03-10 13:52:11,197 - INFO - CLOSED short at 2058.3 | PnL: -0.31% | $-0.78 +2025-03-10 13:52:11,197 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9935571428573 | Take profit: 2089.1969142857147 +2025-03-10 13:52:11,235 - INFO - CLOSED long at 2056.85 | PnL: -0.07% | $-0.33 +2025-03-10 13:52:11,236 - INFO - OPENED SHORT at 2056.85 | Stop loss: 2067.1491928571427 | Take profit: 2025.9748357142857 +2025-03-10 13:52:11,314 - INFO - CLOSED short at 2057.89 | PnL: -0.05% | $-0.29 +2025-03-10 13:52:11,314 - INFO - OPENED LONG at 2057.89 | Stop loss: 2047.585607142857 | Take profit: 2088.7807642857138 +2025-03-10 13:52:12,134 - INFO - TAKE PROFIT hit for long at 2088.7807642857138 | PnL: 1.50% | $2.66 +2025-03-10 13:52:12,164 - INFO - OPENED LONG at 2103.02 | Stop loss: 2092.4899571428573 | Take profit: 2134.587714285714 +2025-03-10 13:52:12,212 - INFO - TAKE PROFIT hit for long at 2134.587714285714 | PnL: 1.50% | $2.73 +2025-03-10 13:52:12,242 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.1061571428572 | Take profit: 2163.7791142857145 +2025-03-10 13:52:12,551 - INFO - STOP LOSS hit for long at 2121.1061571428572 | PnL: -0.50% | $-1.20 +2025-03-10 13:52:12,573 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.534307142857 | Take profit: 2151.9746642857144 +2025-03-10 13:52:12,736 - INFO - STOP LOSS hit for long at 2109.534307142857 | PnL: -0.50% | $-1.19 +2025-03-10 13:52:12,763 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032057142857 | Take profit: 2142.281414285714 +2025-03-10 13:52:13,062 - INFO - CLOSED long at 2108.71 | PnL: -0.09% | $-0.37 +2025-03-10 13:52:13,084 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.942607142857 | Take profit: 2138.1097642857144 +2025-03-10 13:52:13,129 - INFO - CLOSED long at 2103.33 | PnL: -0.15% | $-0.49 +2025-03-10 13:52:13,158 - INFO - OPENED LONG at 2100.5 | Stop loss: 2089.982557142857 | Take profit: 2132.029914285714 +2025-03-10 13:52:13,324 - INFO - CLOSED long at 2102.19 | PnL: 0.08% | $-0.04 +2025-03-10 13:52:13,325 - INFO - OPENED SHORT at 2102.19 | Stop loss: 2112.7158928571425 | Take profit: 2070.634735714286 +2025-03-10 13:52:13,358 - INFO - CLOSED short at 2102.29 | PnL: -0.00% | $-0.20 +2025-03-10 13:52:13,358 - INFO - OPENED LONG at 2102.29 | Stop loss: 2091.7636071428574 | Take profit: 2133.8467642857145 +2025-03-10 13:52:13,835 - INFO - STOP LOSS hit for long at 2091.7636071428574 | PnL: -0.50% | $-1.16 +2025-03-10 13:52:13,859 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.231457142857 | Take profit: 2126.1632142857143 +2025-03-10 13:52:13,934 - INFO - STOP LOSS hit for long at 2084.231457142857 | PnL: -0.50% | $-1.15 +2025-03-10 13:52:13,981 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.982857142857 | Take profit: 2119.789014285714 +2025-03-10 13:52:14,102 - INFO - CLOSED long at 2082.44 | PnL: -0.29% | $-0.73 +2025-03-10 13:52:14,147 - INFO - OPENED LONG at 2081.49 | Stop loss: 2071.067607142857 | Take profit: 2112.734764285714 +2025-03-10 13:52:15,548 - INFO - CLOSED long at 2106.28 | PnL: 1.19% | $2.04 +2025-03-10 13:52:15,593 - INFO - OPENED LONG at 2108.0 | Stop loss: 2097.445057142857 | Take profit: 2139.642414285714 +2025-03-10 13:52:16,215 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.69, Avg Loss=$-0.58 +2025-03-10 13:52:16,216 - INFO - Episode 31: Reward=76.26, Balance=$96.33, Win Rate=19.2%, Trades=26, Episode PnL=$-2.78, Total PnL=$-192.11, Max Drawdown=6.5%, Pred Accuracy=99.6% +2025-03-10 13:52:16,217 - INFO - Reducing learning rate to 0.000028 +2025-03-10 13:52:16,398 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:52:16,775 - INFO - CLOSED long at 2067.89 | PnL: 0.24% | $0.28 +2025-03-10 13:52:16,799 - INFO - OPENED LONG at 2071.63 | Stop loss: 2061.256907142857 | Take profit: 2102.7268642857143 +2025-03-10 13:52:17,933 - INFO - CLOSED long at 2071.4 | PnL: -0.01% | $-0.22 +2025-03-10 13:52:17,933 - INFO - OPENED SHORT at 2071.4 | Stop loss: 2081.7719428571427 | Take profit: 2040.3065857142858 +2025-03-10 13:52:17,960 - INFO - CLOSED short at 2071.39 | PnL: 0.00% | $-0.20 +2025-03-10 13:52:17,961 - INFO - OPENED LONG at 2071.39 | Stop loss: 2061.018107142857 | Take profit: 2102.483264285714 +2025-03-10 13:52:18,111 - INFO - CLOSED long at 2073.9 | PnL: 0.12% | $0.04 +2025-03-10 13:52:18,139 - INFO - OPENED LONG at 2071.92 | Stop loss: 2061.5454571428572 | Take profit: 2103.0212142857144 +2025-03-10 13:52:19,229 - INFO - CLOSED long at 2067.8 | PnL: -0.20% | $-0.59 +2025-03-10 13:52:19,229 - INFO - OPENED SHORT at 2067.8 | Stop loss: 2078.153942857143 | Take profit: 2036.760585714286 +2025-03-10 13:52:19,253 - INFO - CLOSED short at 2068.18 | PnL: -0.02% | $-0.23 +2025-03-10 13:52:19,254 - INFO - OPENED LONG at 2068.18 | Stop loss: 2057.824157142857 | Take profit: 2099.225114285714 +2025-03-10 13:52:20,258 - INFO - CLOSED long at 2061.9 | PnL: -0.30% | $-0.79 +2025-03-10 13:52:20,334 - INFO - OPENED LONG at 2065.36 | Stop loss: 2055.0182571428572 | Take profit: 2096.362814285714 +2025-03-10 13:52:20,887 - INFO - STOP LOSS hit for long at 2055.0182571428572 | PnL: -0.50% | $-1.17 +2025-03-10 13:52:20,907 - INFO - OPENED SHORT at 2054.83 | Stop loss: 2065.1190928571427 | Take profit: 2023.9851357142857 +2025-03-10 13:52:20,929 - INFO - CLOSED short at 2056.71 | PnL: -0.09% | $-0.37 +2025-03-10 13:52:20,929 - INFO - OPENED LONG at 2056.71 | Stop loss: 2046.4115071428573 | Take profit: 2087.583064285714 +2025-03-10 13:52:20,954 - INFO - CLOSED long at 2058.15 | PnL: 0.07% | $-0.06 +2025-03-10 13:52:20,995 - INFO - OPENED LONG at 2059.8 | Stop loss: 2049.4860571428576 | Take profit: 2090.7194142857143 +2025-03-10 13:52:21,832 - INFO - CLOSED long at 2068.79 | PnL: 0.44% | $0.65 +2025-03-10 13:52:21,867 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.610107142857 | Take profit: 2104.107264285714 +2025-03-10 13:52:22,552 - INFO - CLOSED long at 2070.61 | PnL: -0.11% | $-0.42 +2025-03-10 13:52:22,608 - INFO - OPENED LONG at 2071.99 | Stop loss: 2061.615107142857 | Take profit: 2103.092264285714 +2025-03-10 13:52:23,169 - INFO - CLOSED long at 2067.0 | PnL: -0.24% | $-0.66 +2025-03-10 13:52:23,195 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.5455571428574 | Take profit: 2098.9409142857144 +2025-03-10 13:52:23,303 - INFO - CLOSED long at 2068.1 | PnL: 0.01% | $-0.17 +2025-03-10 13:52:23,329 - INFO - OPENED LONG at 2069.0 | Stop loss: 2058.640057142857 | Take profit: 2100.0574142857145 +2025-03-10 13:52:23,659 - INFO - CLOSED long at 2063.98 | PnL: -0.24% | $-0.65 +2025-03-10 13:52:23,687 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.754557142857 | Take profit: 2097.113914285714 +2025-03-10 13:52:24,039 - INFO - STOP LOSS hit for long at 2055.754557142857 | PnL: -0.50% | $-1.14 +2025-03-10 13:52:24,065 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.9490071428572 | Take profit: 2079.9705642857143 +2025-03-10 13:52:24,507 - INFO - CLOSED long at 2067.49 | PnL: 0.89% | $1.48 +2025-03-10 13:52:24,508 - INFO - OPENED SHORT at 2067.49 | Stop loss: 2077.8423928571424 | Take profit: 2036.4552357142857 +2025-03-10 13:52:24,527 - INFO - CLOSED short at 2066.59 | PnL: 0.04% | $-0.11 +2025-03-10 13:52:24,549 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.415342857143 | Take profit: 2033.0963857142856 +2025-03-10 13:52:24,599 - INFO - CLOSED short at 2061.21 | PnL: 0.14% | $0.07 +2025-03-10 13:52:24,599 - INFO - OPENED LONG at 2061.21 | Stop loss: 2050.8890071428573 | Take profit: 2092.150564285714 +2025-03-10 13:52:25,248 - INFO - TAKE PROFIT hit for long at 2092.150564285714 | PnL: 1.50% | $2.66 +2025-03-10 13:52:25,273 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.031557142857 | Take profit: 2162.682914285714 +2025-03-10 13:52:25,681 - INFO - STOP LOSS hit for long at 2120.031557142857 | PnL: -0.50% | $-1.17 +2025-03-10 13:52:25,707 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.315407142857 | Take profit: 2151.751364285714 +2025-03-10 13:52:25,889 - INFO - STOP LOSS hit for long at 2109.315407142857 | PnL: -0.50% | $-1.16 +2025-03-10 13:52:25,922 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032057142857 | Take profit: 2142.281414285714 +2025-03-10 13:52:26,355 - INFO - STOP LOSS hit for long at 2100.032057142857 | PnL: -0.50% | $-1.15 +2025-03-10 13:52:26,379 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0174071428573 | Take profit: 2131.0453642857146 +2025-03-10 13:52:26,973 - INFO - STOP LOSS hit for long at 2089.0174071428573 | PnL: -0.50% | $-1.13 +2025-03-10 13:52:27,018 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848657142857 | Take profit: 2114.551614285714 +2025-03-10 13:52:28,813 - INFO - TAKE PROFIT hit for long at 2114.551614285714 | PnL: 1.50% | $2.61 +2025-03-10 13:52:28,840 - INFO - OPENED LONG at 2113.61 | Stop loss: 2103.027007142857 | Take profit: 2145.3365642857143 +2025-03-10 13:52:29,264 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.11, Avg Loss=$-0.63 +2025-03-10 13:52:29,265 - INFO - Episode 32: Reward=84.23, Balance=$96.41, Win Rate=28.0%, Trades=25, Episode PnL=$-4.26, Total PnL=$-195.70, Max Drawdown=6.5%, Pred Accuracy=99.6% +2025-03-10 13:52:29,266 - INFO - Reducing learning rate to 0.000025 +2025-03-10 13:52:29,597 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:52:29,883 - INFO - CLOSED long at 2064.32 | PnL: 0.07% | $-0.06 +2025-03-10 13:52:29,919 - INFO - OPENED LONG at 2065.86 | Stop loss: 2055.515757142857 | Take profit: 2096.8703142857144 +2025-03-10 13:52:30,415 - INFO - CLOSED long at 2071.38 | PnL: 0.27% | $0.33 +2025-03-10 13:52:30,416 - INFO - OPENED SHORT at 2071.38 | Stop loss: 2081.751842857143 | Take profit: 2040.2868857142857 +2025-03-10 13:52:30,439 - INFO - CLOSED short at 2071.41 | PnL: -0.00% | $-0.20 +2025-03-10 13:52:30,439 - INFO - OPENED LONG at 2071.41 | Stop loss: 2061.0380071428567 | Take profit: 2102.5035642857138 +2025-03-10 13:52:32,666 - INFO - CLOSED long at 2067.88 | PnL: -0.17% | $-0.54 +2025-03-10 13:52:32,701 - INFO - OPENED LONG at 2064.99 | Stop loss: 2054.650107142857 | Take profit: 2095.987264285714 +2025-03-10 13:52:33,157 - INFO - CLOSED long at 2062.71 | PnL: -0.11% | $-0.42 +2025-03-10 13:52:33,181 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:52:36,748 - INFO - CLOSED long at 2066.89 | PnL: 0.19% | $0.18 +2025-03-10 13:52:36,775 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.525657142857 | Take profit: 2098.9206142857142 +2025-03-10 13:52:37,546 - INFO - STOP LOSS hit for long at 2057.525657142857 | PnL: -0.50% | $-1.18 +2025-03-10 13:52:37,570 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.7300071428574 | Take profit: 2083.8275642857143 +2025-03-10 13:52:38,520 - INFO - TAKE PROFIT hit for long at 2083.8275642857143 | PnL: 1.50% | $2.73 +2025-03-10 13:52:38,546 - INFO - OPENED LONG at 2090.49 | Stop loss: 2080.022607142857 | Take profit: 2121.869764285714 +2025-03-10 13:52:38,638 - INFO - TAKE PROFIT hit for long at 2121.869764285714 | PnL: 1.50% | $2.81 +2025-03-10 13:52:38,683 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.827357142857 | Take profit: 2171.655514285714 +2025-03-10 13:52:38,904 - INFO - STOP LOSS hit for long at 2128.827357142857 | PnL: -0.50% | $-1.24 +2025-03-10 13:52:38,926 - INFO - OPENED SHORT at 2127.3 | Stop loss: 2137.951442857143 | Take profit: 2095.368085714286 +2025-03-10 13:52:38,955 - INFO - CLOSED short at 2128.69 | PnL: -0.07% | $-0.34 +2025-03-10 13:52:38,955 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.0316071428574 | Take profit: 2160.6427642857143 +2025-03-10 13:52:39,063 - INFO - STOP LOSS hit for long at 2118.0316071428574 | PnL: -0.50% | $-1.22 +2025-03-10 13:52:39,100 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.315407142857 | Take profit: 2151.751364285714 +2025-03-10 13:52:39,240 - INFO - STOP LOSS hit for long at 2109.315407142857 | PnL: -0.50% | $-1.20 +2025-03-10 13:52:39,261 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032057142857 | Take profit: 2142.281414285714 +2025-03-10 13:52:39,284 - INFO - CLOSED long at 2109.05 | PnL: -0.07% | $-0.34 +2025-03-10 13:52:39,306 - INFO - OPENED LONG at 2112.09 | Stop loss: 2101.5146071428576 | Take profit: 2143.7937642857146 +2025-03-10 13:52:39,645 - INFO - STOP LOSS hit for long at 2101.5146071428576 | PnL: -0.50% | $-1.18 +2025-03-10 13:52:39,670 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.535057142857 | Take profit: 2121.3724142857145 +2025-03-10 13:52:40,119 - INFO - CLOSED long at 2098.39 | PnL: 0.40% | $0.59 +2025-03-10 13:52:40,119 - INFO - OPENED SHORT at 2098.39 | Stop loss: 2108.8968928571426 | Take profit: 2066.8917357142855 +2025-03-10 13:52:40,149 - INFO - CLOSED short at 2095.29 | PnL: 0.15% | $0.09 +2025-03-10 13:52:40,149 - INFO - OPENED LONG at 2095.29 | Stop loss: 2084.7986071428572 | Take profit: 2126.7417642857145 +2025-03-10 13:52:40,408 - INFO - STOP LOSS hit for long at 2084.7986071428572 | PnL: -0.50% | $-1.18 +2025-03-10 13:52:40,432 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.982857142857 | Take profit: 2119.789014285714 +2025-03-10 13:52:41,162 - INFO - CLOSED long at 2091.05 | PnL: 0.12% | $0.05 +2025-03-10 13:52:41,189 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.579807142857 | Take profit: 2122.4381642857143 +2025-03-10 13:52:42,270 - INFO - CLOSED long at 2112.11 | PnL: 1.01% | $1.76 +2025-03-10 13:52:42,271 - INFO - OPENED SHORT at 2112.11 | Stop loss: 2122.685492857143 | Take profit: 2080.405935714286 +2025-03-10 13:52:42,314 - INFO - CLOSED short at 2112.26 | PnL: -0.01% | $-0.21 +2025-03-10 13:52:42,315 - INFO - OPENED LONG at 2112.26 | Stop loss: 2101.6837571428573 | Take profit: 2143.9663142857144 +2025-03-10 13:52:42,674 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.07, Avg Loss=$-0.72 +2025-03-10 13:52:42,675 - INFO - Episode 33: Reward=92.93, Balance=$99.23, Win Rate=38.1%, Trades=21, Episode PnL=$-3.45, Total PnL=$-196.47, Max Drawdown=5.8%, Pred Accuracy=99.6% +2025-03-10 13:52:42,675 - INFO - Reducing learning rate to 0.000023 +2025-03-10 13:52:42,914 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:52:44,264 - INFO - CLOSED long at 2068.76 | PnL: 0.28% | $0.37 +2025-03-10 13:52:44,289 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.5405571428573 | Take profit: 2099.9559142857142 +2025-03-10 13:52:44,488 - INFO - CLOSED long at 2071.39 | PnL: 0.12% | $0.04 +2025-03-10 13:52:44,526 - INFO - OPENED LONG at 2071.36 | Stop loss: 2060.9882571428575 | Take profit: 2102.4528142857143 +2025-03-10 13:52:44,552 - INFO - CLOSED long at 2072.75 | PnL: 0.07% | $-0.07 +2025-03-10 13:52:44,552 - INFO - OPENED SHORT at 2072.75 | Stop loss: 2083.128692857143 | Take profit: 2041.6363357142857 +2025-03-10 13:52:44,573 - INFO - CLOSED short at 2073.11 | PnL: -0.02% | $-0.23 +2025-03-10 13:52:44,574 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.729507142857 | Take profit: 2104.2290642857142 +2025-03-10 13:52:45,098 - INFO - CLOSED long at 2068.8 | PnL: -0.21% | $-0.61 +2025-03-10 13:52:45,099 - INFO - OPENED SHORT at 2068.8 | Stop loss: 2079.1589428571433 | Take profit: 2037.7455857142859 +2025-03-10 13:52:45,128 - INFO - CLOSED short at 2069.34 | PnL: -0.03% | $-0.25 +2025-03-10 13:52:45,128 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.978357142857 | Take profit: 2100.4025142857145 +2025-03-10 13:52:46,833 - INFO - STOP LOSS hit for long at 2058.978357142857 | PnL: -0.50% | $-1.18 +2025-03-10 13:52:46,857 - INFO - OPENED LONG at 2059.3 | Stop loss: 2048.988557142857 | Take profit: 2090.2119142857146 +2025-03-10 13:52:48,407 - INFO - CLOSED long at 2071.04 | PnL: 0.57% | $0.92 +2025-03-10 13:52:48,408 - INFO - OPENED SHORT at 2071.04 | Stop loss: 2081.410142857143 | Take profit: 2039.9519857142857 +2025-03-10 13:52:48,429 - INFO - CLOSED short at 2070.01 | PnL: 0.05% | $-0.10 +2025-03-10 13:52:48,429 - INFO - OPENED LONG at 2070.01 | Stop loss: 2059.645007142857 | Take profit: 2101.082564285715 +2025-03-10 13:52:49,612 - INFO - CLOSED long at 2074.37 | PnL: 0.21% | $0.22 +2025-03-10 13:52:49,633 - INFO - OPENED LONG at 2075.07 | Stop loss: 2064.6797071428573 | Take profit: 2106.2184642857146 +2025-03-10 13:52:50,422 - INFO - STOP LOSS hit for long at 2064.6797071428573 | PnL: -0.50% | $-1.18 +2025-03-10 13:52:50,449 - INFO - OPENED LONG at 2062.34 | Stop loss: 2052.0133571428573 | Take profit: 2093.2975142857144 +2025-03-10 13:52:50,787 - INFO - CLOSED long at 2059.2 | PnL: -0.15% | $-0.49 +2025-03-10 13:52:50,811 - INFO - OPENED LONG at 2058.09 | Stop loss: 2047.784607142857 | Take profit: 2088.9837642857146 +2025-03-10 13:52:51,956 - INFO - TAKE PROFIT hit for long at 2088.9837642857146 | PnL: 1.50% | $2.71 +2025-03-10 13:52:51,984 - INFO - OPENED LONG at 2103.02 | Stop loss: 2092.4899571428573 | Take profit: 2134.587714285714 +2025-03-10 13:52:52,029 - INFO - TAKE PROFIT hit for long at 2134.587714285714 | PnL: 1.50% | $2.79 +2025-03-10 13:52:52,051 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.1061571428572 | Take profit: 2163.7791142857145 +2025-03-10 13:52:52,149 - INFO - CLOSED long at 2141.3 | PnL: 0.45% | $0.71 +2025-03-10 13:52:52,150 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.021442857143 | Take profit: 2109.158085714286 +2025-03-10 13:52:52,196 - INFO - CLOSED short at 2142.68 | PnL: -0.06% | $-0.34 +2025-03-10 13:52:52,197 - INFO - OPENED LONG at 2142.68 | Stop loss: 2131.951657142857 | Take profit: 2174.842614285714 +2025-03-10 13:52:52,330 - INFO - STOP LOSS hit for long at 2131.951657142857 | PnL: -0.50% | $-1.23 +2025-03-10 13:52:52,377 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.0316071428574 | Take profit: 2160.6427642857143 +2025-03-10 13:52:52,451 - INFO - STOP LOSS hit for long at 2118.0316071428574 | PnL: -0.50% | $-1.22 +2025-03-10 13:52:52,479 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.315407142857 | Take profit: 2151.751364285714 +2025-03-10 13:52:52,692 - INFO - STOP LOSS hit for long at 2109.315407142857 | PnL: -0.50% | $-1.20 +2025-03-10 13:52:52,741 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032057142857 | Take profit: 2142.281414285714 +2025-03-10 13:52:53,171 - INFO - STOP LOSS hit for long at 2100.032057142857 | PnL: -0.50% | $-1.19 +2025-03-10 13:52:53,192 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0174071428573 | Take profit: 2131.0453642857146 +2025-03-10 13:52:53,781 - INFO - STOP LOSS hit for long at 2089.0174071428573 | PnL: -0.50% | $-1.17 +2025-03-10 13:52:53,821 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848657142857 | Take profit: 2114.551614285714 +2025-03-10 13:52:53,863 - INFO - CLOSED long at 2088.44 | PnL: 0.25% | $0.29 +2025-03-10 13:52:53,864 - INFO - OPENED SHORT at 2088.44 | Stop loss: 2098.897142857143 | Take profit: 2057.090985714286 +2025-03-10 13:52:53,909 - INFO - CLOSED short at 2083.97 | PnL: 0.21% | $0.22 +2025-03-10 13:52:53,909 - INFO - OPENED LONG at 2083.97 | Stop loss: 2073.535207142857 | Take profit: 2115.251964285714 +2025-03-10 13:52:55,763 - INFO - TAKE PROFIT hit for long at 2115.251964285714 | PnL: 1.50% | $2.72 +2025-03-10 13:52:55,817 - INFO - OPENED LONG at 2113.61 | Stop loss: 2103.027007142857 | Take profit: 2145.3365642857143 +2025-03-10 13:52:55,947 - INFO - CLOSED long at 2112.11 | PnL: -0.07% | $-0.34 +2025-03-10 13:52:55,975 - INFO - OPENED LONG at 2112.26 | Stop loss: 2101.6837571428573 | Take profit: 2143.9663142857144 +2025-03-10 13:52:56,141 - INFO - CLOSED long at 2115.3 | PnL: 0.14% | $0.09 +2025-03-10 13:52:56,141 - INFO - OPENED SHORT at 2115.3 | Stop loss: 2125.891442857143 | Take profit: 2083.5480857142857 +2025-03-10 13:52:56,183 - INFO - CLOSED short at 2115.89 | PnL: -0.03% | $-0.25 +2025-03-10 13:52:56,184 - INFO - OPENED LONG at 2115.89 | Stop loss: 2105.295607142857 | Take profit: 2147.650764285714 +2025-03-10 13:52:56,346 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.01, Avg Loss=$-0.69 +2025-03-10 13:52:56,347 - INFO - Episode 34: Reward=92.34, Balance=$99.99, Win Rate=40.7%, Trades=27, Episode PnL=$-1.33, Total PnL=$-196.48, Max Drawdown=5.5%, Pred Accuracy=99.8% +2025-03-10 13:52:56,347 - INFO - Reducing learning rate to 0.000021 +2025-03-10 13:52:56,534 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:52:56,849 - INFO - CLOSED long at 2068.29 | PnL: 0.26% | $0.32 +2025-03-10 13:52:56,850 - INFO - OPENED SHORT at 2068.29 | Stop loss: 2078.6463928571425 | Take profit: 2037.2432357142857 +2025-03-10 13:52:56,894 - INFO - CLOSED short at 2067.89 | PnL: 0.02% | $-0.16 +2025-03-10 13:52:56,895 - INFO - OPENED LONG at 2067.89 | Stop loss: 2057.5356071428573 | Take profit: 2098.930764285714 +2025-03-10 13:52:58,213 - INFO - CLOSED long at 2072.75 | PnL: 0.24% | $0.27 +2025-03-10 13:52:58,237 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.729507142857 | Take profit: 2104.2290642857142 +2025-03-10 13:52:58,256 - INFO - CLOSED long at 2072.7 | PnL: -0.02% | $-0.24 +2025-03-10 13:52:58,281 - INFO - OPENED LONG at 2072.15 | Stop loss: 2061.774307142857 | Take profit: 2103.254664285714 +2025-03-10 13:52:59,362 - INFO - CLOSED long at 2070.04 | PnL: -0.10% | $-0.40 +2025-03-10 13:52:59,363 - INFO - OPENED SHORT at 2070.04 | Stop loss: 2080.405142857143 | Take profit: 2038.9669857142858 +2025-03-10 13:52:59,387 - INFO - CLOSED short at 2067.8 | PnL: 0.11% | $0.02 +2025-03-10 13:52:59,387 - INFO - OPENED LONG at 2067.8 | Stop loss: 2057.446057142857 | Take profit: 2098.8394142857146 +2025-03-10 13:52:59,799 - INFO - CLOSED long at 2067.1 | PnL: -0.03% | $-0.27 +2025-03-10 13:52:59,819 - INFO - OPENED LONG at 2065.54 | Stop loss: 2055.197357142857 | Take profit: 2096.5455142857145 +2025-03-10 13:53:00,697 - INFO - CLOSED long at 2061.09 | PnL: -0.22% | $-0.62 +2025-03-10 13:53:00,719 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.297007142857 | Take profit: 2090.5265642857144 +2025-03-10 13:53:03,579 - INFO - CLOSED long at 2066.89 | PnL: 0.35% | $0.50 +2025-03-10 13:53:03,580 - INFO - OPENED SHORT at 2066.89 | Stop loss: 2077.239392857143 | Take profit: 2035.8642357142858 +2025-03-10 13:53:03,614 - INFO - CLOSED short at 2067.88 | PnL: -0.05% | $-0.29 +2025-03-10 13:53:03,615 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.525657142857 | Take profit: 2098.9206142857142 +2025-03-10 13:53:04,323 - INFO - STOP LOSS hit for long at 2057.525657142857 | PnL: -0.50% | $-1.18 +2025-03-10 13:53:04,362 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.7300071428574 | Take profit: 2083.8275642857143 +2025-03-10 13:53:05,415 - INFO - TAKE PROFIT hit for long at 2083.8275642857143 | PnL: 1.50% | $2.72 +2025-03-10 13:53:05,444 - INFO - OPENED LONG at 2090.49 | Stop loss: 2080.022607142857 | Take profit: 2121.869764285714 +2025-03-10 13:53:05,490 - INFO - TAKE PROFIT hit for long at 2121.869764285714 | PnL: 1.50% | $2.80 +2025-03-10 13:53:05,513 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.827357142857 | Take profit: 2171.655514285714 +2025-03-10 13:53:05,603 - INFO - CLOSED long at 2137.59 | PnL: -0.09% | $-0.39 +2025-03-10 13:53:05,643 - INFO - OPENED LONG at 2141.41 | Stop loss: 2130.6880071428573 | Take profit: 2173.5535642857144 +2025-03-10 13:53:05,786 - INFO - STOP LOSS hit for long at 2130.6880071428573 | PnL: -0.50% | $-1.23 +2025-03-10 13:53:05,814 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.6485571428575 | Take profit: 2159.2319142857145 +2025-03-10 13:53:06,175 - INFO - STOP LOSS hit for long at 2116.6485571428575 | PnL: -0.50% | $-1.22 +2025-03-10 13:53:06,205 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.877907142857 | Take profit: 2139.063864285714 +2025-03-10 13:53:06,579 - INFO - CLOSED long at 2110.9 | PnL: 0.16% | $0.13 +2025-03-10 13:53:06,604 - INFO - OPENED LONG at 2108.71 | Stop loss: 2098.151507142857 | Take profit: 2140.3630642857142 +2025-03-10 13:53:06,724 - INFO - CLOSED long at 2090.0 | PnL: -0.89% | $-1.98 +2025-03-10 13:53:06,725 - INFO - OPENED SHORT at 2090.0 | Stop loss: 2100.464942857143 | Take profit: 2058.6275857142855 +2025-03-10 13:53:06,772 - INFO - CLOSED short at 2099.53 | PnL: -0.46% | $-1.09 +2025-03-10 13:53:06,772 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0174071428573 | Take profit: 2131.0453642857146 +2025-03-10 13:53:07,357 - INFO - CLOSED long at 2093.46 | PnL: -0.29% | $-0.75 +2025-03-10 13:53:07,357 - INFO - OPENED SHORT at 2093.46 | Stop loss: 2103.942242857143 | Take profit: 2062.0356857142856 +2025-03-10 13:53:07,380 - INFO - CLOSED short at 2093.33 | PnL: 0.01% | $-0.18 +2025-03-10 13:53:07,381 - INFO - OPENED LONG at 2093.33 | Stop loss: 2082.848407142857 | Take profit: 2124.752364285714 +2025-03-10 13:53:07,671 - INFO - STOP LOSS hit for long at 2082.848407142857 | PnL: -0.50% | $-1.15 +2025-03-10 13:53:07,720 - INFO - OPENED LONG at 2081.49 | Stop loss: 2071.067607142857 | Take profit: 2112.734764285714 +2025-03-10 13:53:09,015 - INFO - CLOSED long at 2102.7 | PnL: 1.02% | $1.74 +2025-03-10 13:53:09,015 - INFO - OPENED SHORT at 2102.7 | Stop loss: 2113.228442857143 | Take profit: 2071.1370857142856 +2025-03-10 13:53:09,038 - INFO - CLOSED short at 2102.0 | PnL: 0.03% | $-0.13 +2025-03-10 13:53:09,039 - INFO - OPENED LONG at 2102.0 | Stop loss: 2091.475057142857 | Take profit: 2133.5524142857143 +2025-03-10 13:53:09,906 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.06, Avg Loss=$-0.71 +2025-03-10 13:53:09,907 - INFO - Episode 35: Reward=83.42, Balance=$97.22, Win Rate=33.3%, Trades=24, Episode PnL=$-2.22, Total PnL=$-199.26, Max Drawdown=7.6%, Pred Accuracy=99.6% +2025-03-10 13:53:09,907 - INFO - Reducing learning rate to 0.000019 +2025-03-10 13:53:10,235 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:53:11,467 - INFO - CLOSED long at 2069.34 | PnL: 0.31% | $0.42 +2025-03-10 13:53:11,468 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.7016428571433 | Take profit: 2038.2774857142858 +2025-03-10 13:53:11,497 - INFO - CLOSED short at 2069.19 | PnL: 0.01% | $-0.18 +2025-03-10 13:53:11,497 - INFO - OPENED LONG at 2069.19 | Stop loss: 2058.829107142857 | Take profit: 2100.2502642857144 +2025-03-10 13:53:11,884 - INFO - CLOSED long at 2068.76 | PnL: -0.02% | $-0.24 +2025-03-10 13:53:11,911 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.5405571428573 | Take profit: 2099.9559142857142 +2025-03-10 13:53:14,575 - INFO - CLOSED long at 2065.36 | PnL: -0.17% | $-0.54 +2025-03-10 13:53:14,576 - INFO - OPENED SHORT at 2065.36 | Stop loss: 2075.701742857143 | Take profit: 2034.3571857142858 +2025-03-10 13:53:14,607 - INFO - CLOSED short at 2064.33 | PnL: 0.05% | $-0.10 +2025-03-10 13:53:14,607 - INFO - OPENED LONG at 2064.33 | Stop loss: 2053.993407142857 | Take profit: 2095.317364285714 +2025-03-10 13:53:15,688 - INFO - CLOSED long at 2066.33 | PnL: 0.10% | $-0.01 +2025-03-10 13:53:15,729 - INFO - OPENED LONG at 2066.34 | Stop loss: 2055.9933571428573 | Take profit: 2097.3575142857144 +2025-03-10 13:53:18,764 - INFO - STOP LOSS hit for long at 2055.9933571428573 | PnL: -0.50% | $-1.19 +2025-03-10 13:53:18,811 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.9490071428572 | Take profit: 2079.9705642857143 +2025-03-10 13:53:19,829 - INFO - TAKE PROFIT hit for long at 2079.9705642857143 | PnL: 1.50% | $2.73 +2025-03-10 13:53:19,851 - INFO - OPENED LONG at 2090.49 | Stop loss: 2080.022607142857 | Take profit: 2121.869764285714 +2025-03-10 13:53:19,902 - INFO - TAKE PROFIT hit for long at 2121.869764285714 | PnL: 1.50% | $2.81 +2025-03-10 13:53:19,926 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.827357142857 | Take profit: 2171.655514285714 +2025-03-10 13:53:20,214 - INFO - STOP LOSS hit for long at 2128.827357142857 | PnL: -0.50% | $-1.24 +2025-03-10 13:53:20,242 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.6485571428575 | Take profit: 2159.2319142857145 +2025-03-10 13:53:20,560 - INFO - STOP LOSS hit for long at 2116.6485571428575 | PnL: -0.50% | $-1.22 +2025-03-10 13:53:20,585 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.877907142857 | Take profit: 2139.063864285714 +2025-03-10 13:53:20,671 - INFO - CLOSED long at 2112.95 | PnL: 0.26% | $0.33 +2025-03-10 13:53:20,672 - INFO - OPENED SHORT at 2112.95 | Stop loss: 2123.5296928571424 | Take profit: 2081.2333357142857 +2025-03-10 13:53:20,699 - INFO - CLOSED short at 2112.46 | PnL: 0.02% | $-0.15 +2025-03-10 13:53:20,699 - INFO - OPENED LONG at 2112.46 | Stop loss: 2101.882757142857 | Take profit: 2144.1693142857143 +2025-03-10 13:53:21,049 - INFO - STOP LOSS hit for long at 2101.882757142857 | PnL: -0.50% | $-1.21 +2025-03-10 13:53:21,076 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.535057142857 | Take profit: 2121.3724142857145 +2025-03-10 13:53:21,125 - INFO - CLOSED long at 2098.1 | PnL: 0.39% | $0.57 +2025-03-10 13:53:21,204 - INFO - OPENED LONG at 2102.29 | Stop loss: 2091.7636071428574 | Take profit: 2133.8467642857145 +2025-03-10 13:53:21,241 - INFO - CLOSED long at 2099.25 | PnL: -0.14% | $-0.49 +2025-03-10 13:53:21,241 - INFO - OPENED SHORT at 2099.25 | Stop loss: 2109.761192857143 | Take profit: 2067.738835714286 +2025-03-10 13:53:21,299 - INFO - CLOSED short at 2098.9 | PnL: 0.02% | $-0.17 +2025-03-10 13:53:21,300 - INFO - OPENED LONG at 2098.9 | Stop loss: 2088.3905571428572 | Take profit: 2130.4059142857145 +2025-03-10 13:53:21,782 - INFO - STOP LOSS hit for long at 2088.3905571428572 | PnL: -0.50% | $-1.19 +2025-03-10 13:53:21,801 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848657142857 | Take profit: 2114.551614285714 +2025-03-10 13:53:23,094 - INFO - CLOSED long at 2101.5 | PnL: 0.87% | $1.52 +2025-03-10 13:53:23,094 - INFO - OPENED SHORT at 2101.5 | Stop loss: 2112.0224428571432 | Take profit: 2069.955085714286 +2025-03-10 13:53:23,117 - INFO - CLOSED short at 2105.83 | PnL: -0.21% | $-0.61 +2025-03-10 13:53:23,117 - INFO - OPENED LONG at 2105.83 | Stop loss: 2095.285907142857 | Take profit: 2137.4398642857145 +2025-03-10 13:53:24,231 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.40, Avg Loss=$-0.61 +2025-03-10 13:53:24,232 - INFO - Episode 36: Reward=88.22, Balance=$99.84, Win Rate=30.0%, Trades=20, Episode PnL=$-1.40, Total PnL=$-199.42, Max Drawdown=4.6%, Pred Accuracy=99.7% +2025-03-10 13:53:24,232 - INFO - Reducing learning rate to 0.000017 +2025-03-10 13:53:24,527 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:53:28,001 - INFO - CLOSED long at 2063.59 | PnL: 0.03% | $-0.13 +2025-03-10 13:53:28,001 - INFO - OPENED SHORT at 2063.59 | Stop loss: 2073.922892857143 | Take profit: 2032.613735714286 +2025-03-10 13:53:28,041 - INFO - CLOSED short at 2064.96 | PnL: -0.07% | $-0.33 +2025-03-10 13:53:28,042 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.620257142857 | Take profit: 2095.9568142857142 +2025-03-10 13:53:30,240 - INFO - CLOSED long at 2069.69 | PnL: 0.23% | $0.26 +2025-03-10 13:53:30,268 - INFO - OPENED LONG at 2069.03 | Stop loss: 2058.669907142857 | Take profit: 2100.0878642857147 +2025-03-10 13:53:30,465 - INFO - CLOSED long at 2067.33 | PnL: -0.08% | $-0.36 +2025-03-10 13:53:30,465 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.6815928571427 | Take profit: 2036.2976357142854 +2025-03-10 13:53:30,507 - INFO - CLOSED short at 2066.38 | PnL: 0.05% | $-0.11 +2025-03-10 13:53:30,508 - INFO - OPENED LONG at 2066.38 | Stop loss: 2056.0331571428574 | Take profit: 2097.398114285714 +2025-03-10 13:53:30,807 - INFO - CLOSED long at 2065.29 | PnL: -0.05% | $-0.30 +2025-03-10 13:53:30,857 - INFO - OPENED LONG at 2065.31 | Stop loss: 2054.968507142857 | Take profit: 2096.3120642857143 +2025-03-10 13:53:32,655 - INFO - CLOSED long at 2056.77 | PnL: -0.41% | $-1.01 +2025-03-10 13:53:32,679 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.7300071428574 | Take profit: 2083.8275642857143 +2025-03-10 13:53:33,151 - INFO - CLOSED long at 2066.59 | PnL: 0.66% | $1.09 +2025-03-10 13:53:33,151 - INFO - OPENED SHORT at 2066.59 | Stop loss: 2076.937892857143 | Take profit: 2035.5687357142858 +2025-03-10 13:53:33,195 - INFO - CLOSED short at 2064.08 | PnL: 0.12% | $0.04 +2025-03-10 13:53:33,196 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.744657142857 | Take profit: 2095.0636142857143 +2025-03-10 13:53:33,459 - INFO - CLOSED long at 2069.81 | PnL: 0.28% | $0.35 +2025-03-10 13:53:33,488 - INFO - OPENED LONG at 2070.41 | Stop loss: 2060.043007142857 | Take profit: 2101.488564285714 +2025-03-10 13:53:33,817 - INFO - TAKE PROFIT hit for long at 2101.488564285714 | PnL: 1.50% | $2.77 +2025-03-10 13:53:33,843 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.031557142857 | Take profit: 2162.682914285714 +2025-03-10 13:53:33,984 - INFO - CLOSED long at 2141.41 | PnL: 0.50% | $0.82 +2025-03-10 13:53:33,984 - INFO - OPENED SHORT at 2141.41 | Stop loss: 2152.131992857143 | Take profit: 2109.2664357142858 +2025-03-10 13:53:34,039 - INFO - CLOSED short at 2141.3 | PnL: 0.01% | $-0.19 +2025-03-10 13:53:34,039 - INFO - OPENED LONG at 2141.3 | Stop loss: 2130.5785571428573 | Take profit: 2173.441914285714 +2025-03-10 13:53:34,176 - INFO - STOP LOSS hit for long at 2130.5785571428573 | PnL: -0.50% | $-1.23 +2025-03-10 13:53:34,199 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.6485571428575 | Take profit: 2159.2319142857145 +2025-03-10 13:53:34,512 - INFO - STOP LOSS hit for long at 2116.6485571428575 | PnL: -0.50% | $-1.21 +2025-03-10 13:53:34,542 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.877907142857 | Take profit: 2139.063864285714 +2025-03-10 13:53:35,008 - INFO - STOP LOSS hit for long at 2096.877907142857 | PnL: -0.50% | $-1.20 +2025-03-10 13:53:35,050 - INFO - OPENED LONG at 2098.1 | Stop loss: 2087.594557142857 | Take profit: 2129.593914285714 +2025-03-10 13:53:35,400 - INFO - CLOSED long at 2099.59 | PnL: 0.07% | $-0.06 +2025-03-10 13:53:35,423 - INFO - OPENED LONG at 2100.02 | Stop loss: 2089.504957142857 | Take profit: 2131.5427142857143 +2025-03-10 13:53:35,672 - INFO - STOP LOSS hit for long at 2089.504957142857 | PnL: -0.50% | $-1.18 +2025-03-10 13:53:35,709 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848657142857 | Take profit: 2114.551614285714 +2025-03-10 13:53:36,896 - INFO - CLOSED long at 2105.83 | PnL: 1.08% | $1.91 +2025-03-10 13:53:36,951 - INFO - OPENED LONG at 2105.2 | Stop loss: 2094.659057142857 | Take profit: 2136.800414285714 +2025-03-10 13:53:37,979 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.03, Avg Loss=$-0.61 +2025-03-10 13:53:37,979 - INFO - Episode 37: Reward=92.33, Balance=$99.92, Win Rate=36.8%, Trades=19, Episode PnL=$-1.49, Total PnL=$-199.50, Max Drawdown=4.2%, Pred Accuracy=99.6% +2025-03-10 13:53:37,980 - INFO - Reducing learning rate to 0.000015 +2025-03-10 13:53:38,291 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:53:41,605 - INFO - CLOSED long at 2067.88 | PnL: 0.24% | $0.28 +2025-03-10 13:53:41,605 - INFO - OPENED SHORT at 2067.88 | Stop loss: 2078.2343428571426 | Take profit: 2036.8393857142858 +2025-03-10 13:53:41,626 - INFO - CLOSED short at 2064.99 | PnL: 0.14% | $0.08 +2025-03-10 13:53:41,626 - INFO - OPENED LONG at 2064.99 | Stop loss: 2054.650107142857 | Take profit: 2095.987264285714 +2025-03-10 13:53:42,898 - INFO - CLOSED long at 2061.09 | PnL: -0.19% | $-0.58 +2025-03-10 13:53:42,937 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.297007142857 | Take profit: 2090.5265642857144 +2025-03-10 13:53:43,463 - INFO - CLOSED long at 2061.6 | PnL: 0.10% | $-0.01 +2025-03-10 13:53:43,464 - INFO - OPENED SHORT at 2061.6 | Stop loss: 2071.922942857143 | Take profit: 2030.6535857142858 +2025-03-10 13:53:43,510 - INFO - CLOSED short at 2061.3 | PnL: 0.01% | $-0.17 +2025-03-10 13:53:43,510 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.9785571428574 | Take profit: 2092.2419142857143 +2025-03-10 13:53:45,248 - INFO - CLOSED long at 2075.07 | PnL: 0.67% | $1.12 +2025-03-10 13:53:45,271 - INFO - OPENED LONG at 2074.35 | Stop loss: 2063.963307142857 | Take profit: 2105.487664285714 +2025-03-10 13:53:45,977 - INFO - STOP LOSS hit for long at 2063.963307142857 | PnL: -0.50% | $-1.20 +2025-03-10 13:53:46,001 - INFO - OPENED LONG at 2062.34 | Stop loss: 2052.0133571428573 | Take profit: 2093.2975142857144 +2025-03-10 13:53:46,505 - INFO - STOP LOSS hit for long at 2052.0133571428573 | PnL: -0.50% | $-1.19 +2025-03-10 13:53:46,542 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.237557142857 | Take profit: 2080.264914285714 +2025-03-10 13:53:47,329 - INFO - CLOSED long at 2072.99 | PnL: 1.15% | $2.04 +2025-03-10 13:53:47,329 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.369892857143 | Take profit: 2041.8727357142855 +2025-03-10 13:53:47,353 - INFO - CLOSED short at 2071.89 | PnL: 0.05% | $-0.09 +2025-03-10 13:53:47,353 - INFO - OPENED LONG at 2071.89 | Stop loss: 2061.515607142857 | Take profit: 2102.9907642857142 +2025-03-10 13:53:47,515 - INFO - TAKE PROFIT hit for long at 2102.9907642857142 | PnL: 1.50% | $2.79 +2025-03-10 13:53:47,559 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.031557142857 | Take profit: 2162.682914285714 +2025-03-10 13:53:47,795 - INFO - CLOSED long at 2140.01 | PnL: 0.44% | $0.69 +2025-03-10 13:53:47,795 - INFO - OPENED SHORT at 2140.01 | Stop loss: 2150.7249928571428 | Take profit: 2107.887435714286 +2025-03-10 13:53:47,822 - INFO - CLOSED short at 2134.78 | PnL: 0.24% | $0.30 +2025-03-10 13:53:47,822 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.0911571428574 | Take profit: 2166.8241142857146 +2025-03-10 13:53:47,916 - INFO - STOP LOSS hit for long at 2124.0911571428574 | PnL: -0.50% | $-1.24 +2025-03-10 13:53:47,972 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.534307142857 | Take profit: 2151.9746642857144 +2025-03-10 13:53:48,243 - INFO - STOP LOSS hit for long at 2109.534307142857 | PnL: -0.50% | $-1.23 +2025-03-10 13:53:48,271 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032057142857 | Take profit: 2142.281414285714 +2025-03-10 13:53:48,505 - INFO - CLOSED long at 2112.99 | PnL: 0.11% | $0.03 +2025-03-10 13:53:48,506 - INFO - OPENED SHORT at 2112.99 | Stop loss: 2123.5698928571423 | Take profit: 2081.2727357142853 +2025-03-10 13:53:48,536 - INFO - CLOSED short at 2120.81 | PnL: -0.37% | $-0.95 +2025-03-10 13:53:48,537 - INFO - OPENED LONG at 2120.81 | Stop loss: 2110.191007142857 | Take profit: 2152.6445642857143 +2025-03-10 13:53:48,624 - INFO - STOP LOSS hit for long at 2110.191007142857 | PnL: -0.50% | $-1.20 +2025-03-10 13:53:48,648 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.942607142857 | Take profit: 2138.1097642857144 +2025-03-10 13:53:48,751 - INFO - STOP LOSS hit for long at 2095.942607142857 | PnL: -0.50% | $-1.19 +2025-03-10 13:53:48,789 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0174071428573 | Take profit: 2131.0453642857146 +2025-03-10 13:53:49,394 - INFO - STOP LOSS hit for long at 2089.0174071428573 | PnL: -0.50% | $-1.17 +2025-03-10 13:53:49,416 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848657142857 | Take profit: 2114.551614285714 +2025-03-10 13:53:50,861 - INFO - CLOSED long at 2102.7 | PnL: 0.93% | $1.60 +2025-03-10 13:53:50,924 - INFO - OPENED LONG at 2103.41 | Stop loss: 2092.878007142857 | Take profit: 2134.9835642857142 +2025-03-10 13:53:51,658 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.99, Avg Loss=$-0.85 +2025-03-10 13:53:51,658 - INFO - Episode 38: Reward=98.67, Balance=$98.72, Win Rate=42.9%, Trades=21, Episode PnL=$-4.31, Total PnL=$-200.77, Max Drawdown=5.8%, Pred Accuracy=99.8% +2025-03-10 13:53:51,659 - INFO - Reducing learning rate to 0.000014 +2025-03-10 13:53:51,888 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:53:52,134 - INFO - CLOSED long at 2070.58 | PnL: 0.37% | $0.54 +2025-03-10 13:53:52,177 - INFO - OPENED LONG at 2068.11 | Stop loss: 2057.754507142857 | Take profit: 2099.1540642857144 +2025-03-10 13:53:52,336 - INFO - CLOSED long at 2069.6 | PnL: 0.07% | $-0.06 +2025-03-10 13:53:52,362 - INFO - OPENED LONG at 2068.65 | Stop loss: 2058.291807142857 | Take profit: 2099.702164285714 +2025-03-10 13:53:52,499 - INFO - CLOSED long at 2073.73 | PnL: 0.25% | $0.29 +2025-03-10 13:53:52,499 - INFO - OPENED SHORT at 2073.73 | Stop loss: 2084.113592857143 | Take profit: 2042.6016357142857 +2025-03-10 13:53:52,535 - INFO - CLOSED short at 2075.1 | PnL: -0.07% | $-0.33 +2025-03-10 13:53:52,536 - INFO - OPENED LONG at 2075.1 | Stop loss: 2064.709557142857 | Take profit: 2106.248914285714 +2025-03-10 13:53:54,105 - INFO - STOP LOSS hit for long at 2064.709557142857 | PnL: -0.50% | $-1.20 +2025-03-10 13:53:54,134 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.9187571428574 | Take profit: 2096.2613142857144 +2025-03-10 13:53:54,977 - INFO - CLOSED long at 2065.26 | PnL: 0.00% | $-0.20 +2025-03-10 13:53:55,023 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:53:55,961 - INFO - CLOSED long at 2064.79 | PnL: 0.09% | $-0.02 +2025-03-10 13:53:55,985 - INFO - OPENED LONG at 2065.89 | Stop loss: 2055.545607142857 | Take profit: 2096.900764285714 +2025-03-10 13:53:56,115 - INFO - CLOSED long at 2060.7 | PnL: -0.25% | $-0.69 +2025-03-10 13:53:56,116 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.018442857143 | Take profit: 2029.7670857142855 +2025-03-10 13:53:56,165 - INFO - CLOSED short at 2061.09 | PnL: -0.02% | $-0.23 +2025-03-10 13:53:56,165 - INFO - OPENED LONG at 2061.09 | Stop loss: 2050.7696071428572 | Take profit: 2092.0287642857143 +2025-03-10 13:53:56,651 - INFO - CLOSED long at 2061.5 | PnL: 0.02% | $-0.16 +2025-03-10 13:53:56,688 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.277057142857 | Take profit: 2092.546414285714 +2025-03-10 13:53:56,912 - INFO - CLOSED long at 2066.79 | PnL: 0.25% | $0.30 +2025-03-10 13:53:56,913 - INFO - OPENED SHORT at 2066.79 | Stop loss: 2077.1388928571428 | Take profit: 2035.7657357142857 +2025-03-10 13:53:56,957 - INFO - CLOSED short at 2067.33 | PnL: -0.03% | $-0.25 +2025-03-10 13:53:56,958 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.978407142857 | Take profit: 2098.362364285714 +2025-03-10 13:53:58,016 - INFO - CLOSED long at 2066.5 | PnL: -0.04% | $-0.27 +2025-03-10 13:53:58,043 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.2321071428573 | Take profit: 2099.6412642857144 +2025-03-10 13:53:58,351 - INFO - CLOSED long at 2071.99 | PnL: 0.16% | $0.12 +2025-03-10 13:53:58,351 - INFO - OPENED SHORT at 2071.99 | Stop loss: 2082.3648928571424 | Take profit: 2040.8877357142856 +2025-03-10 13:53:58,373 - INFO - CLOSED short at 2068.19 | PnL: 0.18% | $0.16 +2025-03-10 13:53:58,373 - INFO - OPENED LONG at 2068.19 | Stop loss: 2057.834107142857 | Take profit: 2099.2352642857145 +2025-03-10 13:53:59,789 - INFO - STOP LOSS hit for long at 2057.834107142857 | PnL: -0.50% | $-1.17 +2025-03-10 13:53:59,829 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.7300071428574 | Take profit: 2083.8275642857143 +2025-03-10 13:54:00,850 - INFO - TAKE PROFIT hit for long at 2083.8275642857143 | PnL: 1.50% | $2.69 +2025-03-10 13:54:00,871 - INFO - OPENED LONG at 2090.49 | Stop loss: 2080.022607142857 | Take profit: 2121.869764285714 +2025-03-10 13:54:00,918 - INFO - TAKE PROFIT hit for long at 2121.869764285714 | PnL: 1.50% | $2.77 +2025-03-10 13:54:00,955 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.827357142857 | Take profit: 2171.655514285714 +2025-03-10 13:54:01,203 - INFO - STOP LOSS hit for long at 2128.827357142857 | PnL: -0.50% | $-1.22 +2025-03-10 13:54:01,228 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.6485571428575 | Take profit: 2159.2319142857145 +2025-03-10 13:54:01,522 - INFO - STOP LOSS hit for long at 2116.6485571428575 | PnL: -0.50% | $-1.21 +2025-03-10 13:54:01,548 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.877907142857 | Take profit: 2139.063864285714 +2025-03-10 13:54:01,985 - INFO - STOP LOSS hit for long at 2096.877907142857 | PnL: -0.50% | $-1.19 +2025-03-10 13:54:02,014 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0174071428573 | Take profit: 2131.0453642857146 +2025-03-10 13:54:02,637 - INFO - STOP LOSS hit for long at 2089.0174071428573 | PnL: -0.50% | $-1.18 +2025-03-10 13:54:02,684 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848657142857 | Take profit: 2114.551614285714 +2025-03-10 13:54:04,448 - INFO - TAKE PROFIT hit for long at 2114.551614285714 | PnL: 1.50% | $2.71 +2025-03-10 13:54:04,471 - INFO - OPENED LONG at 2113.61 | Stop loss: 2103.027007142857 | Take profit: 2145.3365642857143 +2025-03-10 13:54:04,974 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.20, Avg Loss=$-0.62 +2025-03-10 13:54:04,975 - INFO - Episode 39: Reward=88.75, Balance=$100.23, Win Rate=34.8%, Trades=23, Episode PnL=$0.21, Total PnL=$-200.54, Max Drawdown=4.7%, Pred Accuracy=99.6% +2025-03-10 13:54:04,975 - INFO - Reducing learning rate to 0.000012 +2025-03-10 13:54:05,257 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:54:05,620 - INFO - CLOSED long at 2071.63 | PnL: 0.42% | $0.64 +2025-03-10 13:54:05,663 - INFO - OPENED LONG at 2070.99 | Stop loss: 2060.620107142857 | Take profit: 2102.0772642857137 +2025-03-10 13:54:07,119 - INFO - CLOSED long at 2067.0 | PnL: -0.19% | $-0.58 +2025-03-10 13:54:07,120 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.3499428571427 | Take profit: 2035.9725857142857 +2025-03-10 13:54:07,145 - INFO - CLOSED short at 2067.79 | PnL: -0.04% | $-0.27 +2025-03-10 13:54:07,145 - INFO - OPENED LONG at 2067.79 | Stop loss: 2057.436107142857 | Take profit: 2098.8292642857145 +2025-03-10 13:54:07,393 - INFO - CLOSED long at 2067.59 | PnL: -0.01% | $-0.22 +2025-03-10 13:54:07,394 - INFO - OPENED SHORT at 2067.59 | Stop loss: 2077.942892857143 | Take profit: 2036.553735714286 +2025-03-10 13:54:07,420 - INFO - CLOSED short at 2069.2 | PnL: -0.08% | $-0.35 +2025-03-10 13:54:07,420 - INFO - OPENED LONG at 2069.2 | Stop loss: 2058.8390571428567 | Take profit: 2100.260414285714 +2025-03-10 13:54:07,468 - INFO - CLOSED long at 2071.59 | PnL: 0.12% | $0.03 +2025-03-10 13:54:07,497 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.331557142857 | Take profit: 2101.782914285714 +2025-03-10 13:54:08,104 - INFO - STOP LOSS hit for long at 2060.331557142857 | PnL: -0.50% | $-1.18 +2025-03-10 13:54:08,132 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.9785571428574 | Take profit: 2092.2419142857143 +2025-03-10 13:54:09,997 - INFO - CLOSED long at 2067.33 | PnL: 0.29% | $0.37 +2025-03-10 13:54:09,997 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.6815928571427 | Take profit: 2036.2976357142854 +2025-03-10 13:54:10,022 - INFO - CLOSED short at 2067.01 | PnL: 0.02% | $-0.17 +2025-03-10 13:54:10,022 - INFO - OPENED LONG at 2067.01 | Stop loss: 2056.6600071428575 | Take profit: 2098.037564285715 +2025-03-10 13:54:11,236 - INFO - CLOSED long at 2070.9 | PnL: 0.19% | $0.17 +2025-03-10 13:54:11,237 - INFO - OPENED SHORT at 2070.9 | Stop loss: 2081.269442857143 | Take profit: 2039.8140857142857 +2025-03-10 13:54:11,261 - INFO - CLOSED short at 2069.69 | PnL: 0.06% | $-0.08 +2025-03-10 13:54:11,261 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.326607142857 | Take profit: 2100.7577642857145 +2025-03-10 13:54:11,425 - INFO - CLOSED long at 2071.99 | PnL: 0.11% | $0.02 +2025-03-10 13:54:11,426 - INFO - OPENED SHORT at 2071.99 | Stop loss: 2082.3648928571424 | Take profit: 2040.8877357142856 +2025-03-10 13:54:11,479 - INFO - CLOSED short at 2068.19 | PnL: 0.18% | $0.16 +2025-03-10 13:54:11,479 - INFO - OPENED LONG at 2068.19 | Stop loss: 2057.834107142857 | Take profit: 2099.2352642857145 +2025-03-10 13:54:11,943 - INFO - CLOSED long at 2072.09 | PnL: 0.19% | $0.17 +2025-03-10 13:54:11,944 - INFO - OPENED SHORT at 2072.09 | Stop loss: 2082.4653928571433 | Take profit: 2040.9862357142858 +2025-03-10 13:54:11,972 - INFO - CLOSED short at 2069.97 | PnL: 0.10% | $0.00 +2025-03-10 13:54:11,973 - INFO - OPENED LONG at 2069.97 | Stop loss: 2059.6052071428567 | Take profit: 2101.041964285714 +2025-03-10 13:54:11,999 - INFO - CLOSED long at 2067.7 | PnL: -0.11% | $-0.41 +2025-03-10 13:54:11,999 - INFO - OPENED SHORT at 2067.7 | Stop loss: 2078.0534428571427 | Take profit: 2036.6620857142855 +2025-03-10 13:54:12,029 - INFO - CLOSED short at 2067.0 | PnL: 0.03% | $-0.13 +2025-03-10 13:54:12,029 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.6500571428573 | Take profit: 2098.0274142857143 +2025-03-10 13:54:12,974 - INFO - STOP LOSS hit for long at 2056.6500571428573 | PnL: -0.50% | $-1.17 +2025-03-10 13:54:13,017 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.9490071428572 | Take profit: 2079.9705642857143 +2025-03-10 13:54:13,285 - INFO - CLOSED long at 2062.43 | PnL: 0.65% | $1.05 +2025-03-10 13:54:13,285 - INFO - OPENED SHORT at 2062.43 | Stop loss: 2072.7570928571427 | Take profit: 2031.4711357142855 +2025-03-10 13:54:13,321 - INFO - CLOSED short at 2062.55 | PnL: -0.01% | $-0.21 +2025-03-10 13:54:13,321 - INFO - OPENED LONG at 2062.55 | Stop loss: 2052.2223071428575 | Take profit: 2093.5106642857145 +2025-03-10 13:54:14,136 - INFO - CLOSED long at 2103.02 | PnL: 1.96% | $3.62 +2025-03-10 13:54:14,136 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.5500428571427 | Take profit: 2071.4522857142856 +2025-03-10 13:54:14,185 - INFO - CLOSED short at 2130.7 | PnL: -1.32% | $-2.85 +2025-03-10 13:54:14,185 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.031557142857 | Take profit: 2162.682914285714 +2025-03-10 13:54:14,733 - INFO - STOP LOSS hit for long at 2120.031557142857 | PnL: -0.50% | $-1.18 +2025-03-10 13:54:14,756 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.315407142857 | Take profit: 2151.751364285714 +2025-03-10 13:54:14,893 - INFO - STOP LOSS hit for long at 2109.315407142857 | PnL: -0.50% | $-1.16 +2025-03-10 13:54:15,017 - INFO - OPENED LONG at 2112.09 | Stop loss: 2101.5146071428576 | Take profit: 2143.7937642857146 +2025-03-10 13:54:15,376 - INFO - STOP LOSS hit for long at 2101.5146071428576 | PnL: -0.50% | $-1.15 +2025-03-10 13:54:15,416 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.535057142857 | Take profit: 2121.3724142857145 +2025-03-10 13:54:16,010 - INFO - CLOSED long at 2094.08 | PnL: 0.20% | $0.18 +2025-03-10 13:54:16,038 - INFO - OPENED LONG at 2088.35 | Stop loss: 2077.8933071428573 | Take profit: 2119.6976642857144 +2025-03-10 13:54:18,267 - INFO - CLOSED long at 2115.3 | PnL: 1.29% | $2.25 +2025-03-10 13:54:18,306 - INFO - OPENED LONG at 2115.89 | Stop loss: 2105.295607142857 | Take profit: 2147.650764285714 +2025-03-10 13:54:18,413 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.72, Avg Loss=$-0.74 +2025-03-10 13:54:18,414 - INFO - Episode 40: Reward=95.43, Balance=$97.57, Win Rate=44.4%, Trades=27, Episode PnL=$-6.63, Total PnL=$-202.98, Max Drawdown=5.5%, Pred Accuracy=99.7% +2025-03-10 13:54:18,549 - INFO - Model saved to checkpoints/trading_agent_episode_40.pt +2025-03-10 13:54:18,550 - INFO - Checkpoint saved at episode 40 +2025-03-10 13:54:18,550 - INFO - Reducing learning rate to 0.000011 +2025-03-10 13:54:18,613 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 13:54:18,613 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2405, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 13:54:18,911 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:54:19,023 - INFO - CLOSED long at 2057.94 | PnL: -0.24% | $-0.68 +2025-03-10 13:54:19,048 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.8045071428571 | Take profit: 2089.004064285715 +2025-03-10 13:54:19,121 - INFO - CLOSED long at 2064.32 | PnL: 0.30% | $0.40 +2025-03-10 13:54:19,121 - INFO - OPENED SHORT at 2064.32 | Stop loss: 2074.6565428571434 | Take profit: 2033.3327857142858 +2025-03-10 13:54:19,171 - INFO - CLOSED short at 2065.86 | PnL: -0.07% | $-0.35 +2025-03-10 13:54:19,172 - INFO - OPENED LONG at 2065.86 | Stop loss: 2055.515757142857 | Take profit: 2096.8703142857144 +2025-03-10 13:54:19,458 - INFO - CLOSED long at 2067.9 | PnL: 0.10% | $-0.00 +2025-03-10 13:54:19,483 - INFO - OPENED LONG at 2067.69 | Stop loss: 2057.3366071428572 | Take profit: 2098.727764285715 +2025-03-10 13:54:19,903 - INFO - CLOSED long at 2070.28 | PnL: 0.13% | $0.05 +2025-03-10 13:54:19,903 - INFO - OPENED SHORT at 2070.28 | Stop loss: 2080.6463428571433 | Take profit: 2039.203385714286 +2025-03-10 13:54:19,952 - INFO - CLOSED short at 2068.02 | PnL: 0.11% | $0.02 +2025-03-10 13:54:19,952 - INFO - OPENED LONG at 2068.02 | Stop loss: 2057.664957142857 | Take profit: 2099.0627142857143 +2025-03-10 13:54:20,518 - INFO - CLOSED long at 2068.76 | PnL: 0.04% | $-0.13 +2025-03-10 13:54:20,543 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.5405571428573 | Take profit: 2099.9559142857142 +2025-03-10 13:54:20,952 - INFO - CLOSED long at 2073.9 | PnL: 0.24% | $0.28 +2025-03-10 13:54:21,025 - INFO - OPENED LONG at 2071.11 | Stop loss: 2060.7395071428573 | Take profit: 2102.1990642857145 +2025-03-10 13:54:22,298 - INFO - STOP LOSS hit for long at 2060.7395071428573 | PnL: -0.50% | $-1.19 +2025-03-10 13:54:22,328 - INFO - OPENED LONG at 2061.3 | Stop loss: 2050.9785571428574 | Take profit: 2092.2419142857143 +2025-03-10 13:54:22,972 - INFO - CLOSED long at 2064.7 | PnL: 0.16% | $0.13 +2025-03-10 13:54:22,973 - INFO - OPENED SHORT at 2064.7 | Stop loss: 2075.038442857143 | Take profit: 2033.7070857142853 +2025-03-10 13:54:22,995 - INFO - CLOSED short at 2062.61 | PnL: 0.10% | $0.00 +2025-03-10 13:54:22,995 - INFO - OPENED LONG at 2062.61 | Stop loss: 2052.2820071428573 | Take profit: 2093.5715642857144 +2025-03-10 13:54:23,610 - INFO - CLOSED long at 2059.96 | PnL: -0.13% | $-0.45 +2025-03-10 13:54:23,655 - INFO - OPENED LONG at 2059.46 | Stop loss: 2049.1477571428572 | Take profit: 2090.3743142857143 +2025-03-10 13:54:23,718 - INFO - CLOSED long at 2058.28 | PnL: -0.06% | $-0.31 +2025-03-10 13:54:23,718 - INFO - OPENED SHORT at 2058.28 | Stop loss: 2068.586342857143 | Take profit: 2027.3833857142859 +2025-03-10 13:54:23,765 - INFO - CLOSED short at 2055.6 | PnL: 0.13% | $0.06 +2025-03-10 13:54:23,765 - INFO - OPENED LONG at 2055.6 | Stop loss: 2045.307057142857 | Take profit: 2086.456414285714 +2025-03-10 13:54:23,812 - INFO - CLOSED long at 2054.83 | PnL: -0.04% | $-0.27 +2025-03-10 13:54:23,812 - INFO - OPENED SHORT at 2054.83 | Stop loss: 2065.1190928571427 | Take profit: 2023.9851357142857 +2025-03-10 13:54:23,840 - INFO - CLOSED short at 2056.71 | PnL: -0.09% | $-0.37 +2025-03-10 13:54:23,840 - INFO - OPENED LONG at 2056.71 | Stop loss: 2046.4115071428573 | Take profit: 2087.583064285714 +2025-03-10 13:54:23,891 - INFO - CLOSED long at 2059.8 | PnL: 0.15% | $0.10 +2025-03-10 13:54:23,892 - INFO - OPENED SHORT at 2059.8 | Stop loss: 2070.113942857143 | Take profit: 2028.8805857142859 +2025-03-10 13:54:23,928 - INFO - CLOSED short at 2061.66 | PnL: -0.09% | $-0.37 +2025-03-10 13:54:23,929 - INFO - OPENED LONG at 2061.66 | Stop loss: 2051.336757142857 | Take profit: 2092.607314285714 +2025-03-10 13:54:24,198 - INFO - CLOSED long at 2063.9 | PnL: 0.11% | $0.02 +2025-03-10 13:54:24,199 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.234442857143 | Take profit: 2032.9190857142858 +2025-03-10 13:54:24,221 - INFO - CLOSED short at 2064.49 | PnL: -0.03% | $-0.25 +2025-03-10 13:54:24,223 - INFO - OPENED LONG at 2064.49 | Stop loss: 2054.1526071428566 | Take profit: 2095.479764285714 +2025-03-10 13:54:24,380 - INFO - CLOSED long at 2065.69 | PnL: 0.06% | $-0.08 +2025-03-10 13:54:24,380 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.033392857143 | Take profit: 2034.6822357142858 +2025-03-10 13:54:24,420 - INFO - CLOSED short at 2069.79 | PnL: -0.20% | $-0.57 +2025-03-10 13:54:24,420 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.426107142857 | Take profit: 2100.8592642857143 +2025-03-10 13:54:24,562 - INFO - CLOSED long at 2075.01 | PnL: 0.25% | $0.29 +2025-03-10 13:54:24,564 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.399992857143 | Take profit: 2043.862435714286 +2025-03-10 13:54:24,661 - INFO - CLOSED short at 2071.6 | PnL: 0.16% | $0.12 +2025-03-10 13:54:24,661 - INFO - OPENED LONG at 2071.6 | Stop loss: 2061.227057142857 | Take profit: 2102.6964142857146 +2025-03-10 13:54:24,683 - INFO - CLOSED long at 2073.23 | PnL: 0.08% | $-0.04 +2025-03-10 13:54:24,684 - INFO - OPENED SHORT at 2073.23 | Stop loss: 2083.611092857143 | Take profit: 2042.109135714286 +2025-03-10 13:54:24,715 - INFO - CLOSED short at 2070.0 | PnL: 0.16% | $0.11 +2025-03-10 13:54:24,715 - INFO - OPENED LONG at 2070.0 | Stop loss: 2059.635057142857 | Take profit: 2101.0724142857143 +2025-03-10 13:54:24,965 - INFO - CLOSED long at 2067.44 | PnL: -0.12% | $-0.43 +2025-03-10 13:54:24,966 - INFO - OPENED SHORT at 2067.44 | Stop loss: 2077.792142857143 | Take profit: 2036.4059857142859 +2025-03-10 13:54:25,049 - INFO - CLOSED short at 2071.49 | PnL: -0.20% | $-0.56 +2025-03-10 13:54:25,049 - INFO - OPENED LONG at 2071.49 | Stop loss: 2061.1176071428567 | Take profit: 2102.5847642857143 +2025-03-10 13:54:25,145 - INFO - CLOSED long at 2066.38 | PnL: -0.25% | $-0.66 +2025-03-10 13:54:25,145 - INFO - OPENED SHORT at 2066.38 | Stop loss: 2076.726842857143 | Take profit: 2035.3618857142858 +2025-03-10 13:54:25,252 - INFO - CLOSED short at 2065.66 | PnL: 0.03% | $-0.12 +2025-03-10 13:54:25,253 - INFO - OPENED LONG at 2065.66 | Stop loss: 2055.316757142857 | Take profit: 2096.6673142857144 +2025-03-10 13:54:25,396 - INFO - CLOSED long at 2064.4 | PnL: -0.06% | $-0.30 +2025-03-10 13:54:25,396 - INFO - OPENED SHORT at 2064.4 | Stop loss: 2074.736942857143 | Take profit: 2033.4115857142858 +2025-03-10 13:54:25,419 - INFO - CLOSED short at 2064.31 | PnL: 0.00% | $-0.18 +2025-03-10 13:54:25,419 - INFO - OPENED LONG at 2064.31 | Stop loss: 2053.973507142857 | Take profit: 2095.2970642857144 +2025-03-10 13:54:25,440 - INFO - CLOSED long at 2065.5 | PnL: 0.06% | $-0.08 +2025-03-10 13:54:25,466 - INFO - OPENED SHORT at 2067.53 | Stop loss: 2077.882592857143 | Take profit: 2036.494635714286 +2025-03-10 13:54:25,492 - INFO - CLOSED short at 2065.29 | PnL: 0.11% | $0.02 +2025-03-10 13:54:25,492 - INFO - OPENED LONG at 2065.29 | Stop loss: 2054.948607142857 | Take profit: 2096.2917642857146 +2025-03-10 13:54:25,577 - INFO - CLOSED long at 2066.8 | PnL: 0.07% | $-0.05 +2025-03-10 13:54:25,578 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.1489428571426 | Take profit: 2035.7755857142859 +2025-03-10 13:54:25,628 - INFO - CLOSED short at 2066.5 | PnL: 0.01% | $-0.16 +2025-03-10 13:54:25,628 - INFO - OPENED LONG at 2066.5 | Stop loss: 2056.152557142857 | Take profit: 2097.519914285714 +2025-03-10 13:54:25,674 - INFO - CLOSED long at 2068.59 | PnL: 0.10% | $0.00 +2025-03-10 13:54:25,674 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.947892857143 | Take profit: 2037.5387357142858 +2025-03-10 13:54:25,784 - INFO - CLOSED short at 2070.9 | PnL: -0.11% | $-0.40 +2025-03-10 13:54:25,809 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.326607142857 | Take profit: 2100.7577642857145 +2025-03-10 13:54:25,915 - INFO - CLOSED long at 2070.61 | PnL: 0.04% | $-0.10 +2025-03-10 13:54:25,915 - INFO - OPENED SHORT at 2070.61 | Stop loss: 2080.977992857143 | Take profit: 2039.5284357142857 +2025-03-10 13:54:25,966 - INFO - CLOSED short at 2071.99 | PnL: -0.07% | $-0.31 +2025-03-10 13:54:25,967 - INFO - OPENED LONG at 2071.99 | Stop loss: 2061.615107142857 | Take profit: 2103.092264285714 +2025-03-10 13:54:26,060 - INFO - CLOSED long at 2068.67 | PnL: -0.16% | $-0.48 +2025-03-10 13:54:26,060 - INFO - OPENED SHORT at 2068.67 | Stop loss: 2079.0282928571432 | Take profit: 2037.6175357142856 +2025-03-10 13:54:26,132 - INFO - CLOSED short at 2069.78 | PnL: -0.05% | $-0.28 +2025-03-10 13:54:26,133 - INFO - OPENED LONG at 2069.78 | Stop loss: 2059.416157142857 | Take profit: 2100.8491142857147 +2025-03-10 13:54:26,159 - INFO - CLOSED long at 2071.61 | PnL: 0.09% | $-0.02 +2025-03-10 13:54:26,159 - INFO - OPENED SHORT at 2071.61 | Stop loss: 2081.9829928571426 | Take profit: 2040.5134357142858 +2025-03-10 13:54:26,182 - INFO - CLOSED short at 2074.37 | PnL: -0.13% | $-0.43 +2025-03-10 13:54:26,182 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.9832071428573 | Take profit: 2105.5079642857145 +2025-03-10 13:54:26,228 - INFO - CLOSED long at 2074.35 | PnL: -0.00% | $-0.18 +2025-03-10 13:54:26,229 - INFO - OPENED SHORT at 2074.35 | Stop loss: 2084.7366928571428 | Take profit: 2043.2123357142855 +2025-03-10 13:54:26,258 - INFO - CLOSED short at 2073.27 | PnL: 0.05% | $-0.09 +2025-03-10 13:54:26,258 - INFO - OPENED LONG at 2073.27 | Stop loss: 2062.888707142857 | Take profit: 2104.3914642857144 +2025-03-10 13:54:26,451 - INFO - CLOSED long at 2074.0 | PnL: 0.04% | $-0.12 +2025-03-10 13:54:26,451 - INFO - OPENED SHORT at 2074.0 | Stop loss: 2084.384942857143 | Take profit: 2042.8675857142857 +2025-03-10 13:54:26,512 - INFO - CLOSED short at 2072.09 | PnL: 0.09% | $-0.01 +2025-03-10 13:54:26,512 - INFO - OPENED LONG at 2072.09 | Stop loss: 2061.7146071428574 | Take profit: 2103.1937642857147 +2025-03-10 13:54:26,608 - INFO - CLOSED long at 2067.9 | PnL: -0.20% | $-0.55 +2025-03-10 13:54:26,608 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.2544428571427 | Take profit: 2036.8590857142858 +2025-03-10 13:54:26,633 - INFO - CLOSED short at 2066.4 | PnL: 0.07% | $-0.05 +2025-03-10 13:54:26,634 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.053057142857 | Take profit: 2097.4184142857143 +2025-03-10 13:54:26,684 - INFO - CLOSED long at 2067.88 | PnL: 0.07% | $-0.05 +2025-03-10 13:54:26,684 - INFO - OPENED SHORT at 2067.88 | Stop loss: 2078.2343428571426 | Take profit: 2036.8393857142858 +2025-03-10 13:54:26,709 - INFO - CLOSED short at 2065.45 | PnL: 0.12% | $0.03 +2025-03-10 13:54:26,709 - INFO - OPENED LONG at 2065.45 | Stop loss: 2055.107807142857 | Take profit: 2096.4541642857143 +2025-03-10 13:54:26,812 - INFO - CLOSED long at 2069.0 | PnL: 0.17% | $0.13 +2025-03-10 13:54:26,812 - INFO - OPENED SHORT at 2069.0 | Stop loss: 2079.359942857143 | Take profit: 2037.9425857142858 +2025-03-10 13:54:26,862 - INFO - CLOSED short at 2070.19 | PnL: -0.06% | $-0.28 +2025-03-10 13:54:26,862 - INFO - OPENED LONG at 2070.19 | Stop loss: 2059.8241071428574 | Take profit: 2101.2652642857142 +2025-03-10 13:54:26,939 - INFO - CLOSED long at 2067.19 | PnL: -0.14% | $-0.44 +2025-03-10 13:54:26,939 - INFO - OPENED SHORT at 2067.19 | Stop loss: 2077.540892857143 | Take profit: 2036.1597357142857 +2025-03-10 13:54:26,962 - INFO - CLOSED short at 2065.5 | PnL: 0.08% | $-0.03 +2025-03-10 13:54:26,962 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.157557142857 | Take profit: 2096.504914285714 +2025-03-10 13:54:27,016 - INFO - CLOSED long at 2065.8 | PnL: 0.01% | $-0.15 +2025-03-10 13:54:27,017 - INFO - OPENED SHORT at 2065.8 | Stop loss: 2076.143942857143 | Take profit: 2034.7905857142857 +2025-03-10 13:54:27,041 - INFO - CLOSED short at 2065.07 | PnL: 0.04% | $-0.12 +2025-03-10 13:54:27,042 - INFO - OPENED LONG at 2065.07 | Stop loss: 2054.7297071428575 | Take profit: 2096.0684642857145 +2025-03-10 13:54:27,321 - INFO - CLOSED long at 2064.5 | PnL: -0.03% | $-0.23 +2025-03-10 13:54:27,347 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.9834071428572 | Take profit: 2097.3473642857143 +2025-03-10 13:54:27,485 - INFO - CLOSED long at 2058.65 | PnL: -0.37% | $-0.84 +2025-03-10 13:54:27,486 - INFO - OPENED SHORT at 2058.65 | Stop loss: 2068.958192857143 | Take profit: 2027.7478357142857 +2025-03-10 13:54:27,509 - INFO - CLOSED short at 2056.77 | PnL: 0.09% | $-0.02 +2025-03-10 13:54:27,510 - INFO - OPENED LONG at 2056.77 | Stop loss: 2046.471207142857 | Take profit: 2087.6439642857144 +2025-03-10 13:54:27,801 - INFO - CLOSED long at 2062.83 | PnL: 0.29% | $0.34 +2025-03-10 13:54:27,801 - INFO - OPENED SHORT at 2062.83 | Stop loss: 2073.1590928571427 | Take profit: 2031.8651357142855 +2025-03-10 13:54:27,824 - INFO - CLOSED short at 2063.9 | PnL: -0.05% | $-0.27 +2025-03-10 13:54:27,824 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.5655571428574 | Take profit: 2094.8809142857144 +2025-03-10 13:54:27,896 - INFO - CLOSED long at 2062.55 | PnL: -0.07% | $-0.29 +2025-03-10 13:54:27,896 - INFO - OPENED SHORT at 2062.55 | Stop loss: 2072.877692857143 | Take profit: 2031.5893357142859 +2025-03-10 13:54:27,942 - INFO - CLOSED short at 2065.12 | PnL: -0.12% | $-0.40 +2025-03-10 13:54:27,942 - INFO - OPENED LONG at 2065.12 | Stop loss: 2054.779457142857 | Take profit: 2096.1192142857144 +2025-03-10 13:54:28,174 - INFO - CLOSED long at 2060.7 | PnL: -0.21% | $-0.55 +2025-03-10 13:54:28,174 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.018442857143 | Take profit: 2029.7670857142855 +2025-03-10 13:54:28,201 - INFO - CLOSED short at 2061.84 | PnL: -0.06% | $-0.27 +2025-03-10 13:54:28,202 - INFO - OPENED LONG at 2061.84 | Stop loss: 2051.5158571428574 | Take profit: 2092.7900142857143 +2025-03-10 13:54:28,256 - INFO - CLOSED long at 2065.72 | PnL: 0.19% | $0.15 +2025-03-10 13:54:28,256 - INFO - OPENED SHORT at 2065.72 | Stop loss: 2076.0635428571427 | Take profit: 2034.7117857142855 +2025-03-10 13:54:28,344 - INFO - CLOSED short at 2069.34 | PnL: -0.18% | $-0.48 +2025-03-10 13:54:28,345 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.978357142857 | Take profit: 2100.4025142857145 +2025-03-10 13:54:28,485 - INFO - CLOSED long at 2073.49 | PnL: 0.20% | $0.17 +2025-03-10 13:54:28,485 - INFO - OPENED SHORT at 2073.49 | Stop loss: 2083.8723928571426 | Take profit: 2042.3652357142855 +2025-03-10 13:54:28,524 - INFO - CLOSED short at 2074.05 | PnL: -0.03% | $-0.22 +2025-03-10 13:54:28,525 - INFO - OPENED LONG at 2074.05 | Stop loss: 2063.664807142857 | Take profit: 2105.183164285714 +2025-03-10 13:54:28,683 - INFO - CLOSED long at 2077.61 | PnL: 0.17% | $0.12 +2025-03-10 13:54:28,684 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2088.012992857143 | Take profit: 2046.423435714286 +2025-03-10 13:54:28,716 - INFO - CLOSED short at 2085.56 | PnL: -0.38% | $-0.84 +2025-03-10 13:54:28,716 - INFO - OPENED LONG at 2085.56 | Stop loss: 2075.1172571428574 | Take profit: 2116.865814285714 +2025-03-10 13:54:28,874 - INFO - TAKE PROFIT hit for long at 2116.865814285714 | PnL: 1.50% | $2.41 +2025-03-10 13:54:28,914 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2526428571427 | Take profit: 2107.4244857142858 +2025-03-10 13:54:28,943 - INFO - CLOSED short at 2131.78 | PnL: 0.36% | $0.46 +2025-03-10 13:54:28,943 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.1061571428572 | Take profit: 2163.7791142857145 +2025-03-10 13:54:28,965 - INFO - CLOSED long at 2133.95 | PnL: 0.10% | $0.00 +2025-03-10 13:54:28,989 - INFO - OPENED LONG at 2137.59 | Stop loss: 2126.887107142857 | Take profit: 2169.6762642857143 +2025-03-10 13:54:29,013 - INFO - CLOSED long at 2141.41 | PnL: 0.18% | $0.14 +2025-03-10 13:54:29,014 - INFO - OPENED SHORT at 2141.41 | Stop loss: 2152.131992857143 | Take profit: 2109.2664357142858 +2025-03-10 13:54:29,090 - INFO - CLOSED short at 2140.01 | PnL: 0.07% | $-0.06 +2025-03-10 13:54:29,090 - INFO - OPENED LONG at 2140.01 | Stop loss: 2129.2950071428572 | Take profit: 2172.1325642857146 +2025-03-10 13:54:29,191 - INFO - CLOSED long at 2126.99 | PnL: -0.61% | $-1.26 +2025-03-10 13:54:29,191 - INFO - OPENED SHORT at 2126.99 | Stop loss: 2137.6398928571425 | Take profit: 2095.0627357142857 +2025-03-10 13:54:29,299 - INFO - CLOSED short at 2128.69 | PnL: -0.08% | $-0.31 +2025-03-10 13:54:29,300 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.0316071428574 | Take profit: 2160.6427642857143 +2025-03-10 13:54:29,358 - INFO - CLOSED long at 2120.15 | PnL: -0.40% | $-0.87 +2025-03-10 13:54:29,359 - INFO - OPENED SHORT at 2120.15 | Stop loss: 2130.7656928571428 | Take profit: 2088.3253357142858 +2025-03-10 13:54:29,381 - INFO - CLOSED short at 2117.24 | PnL: 0.14% | $0.06 +2025-03-10 13:54:29,382 - INFO - OPENED LONG at 2117.24 | Stop loss: 2106.638857142857 | Take profit: 2149.021014285714 +2025-03-10 13:54:29,409 - INFO - CLOSED long at 2119.93 | PnL: 0.13% | $0.05 +2025-03-10 13:54:29,410 - INFO - OPENED SHORT at 2119.93 | Stop loss: 2130.544592857143 | Take profit: 2088.1086357142854 +2025-03-10 13:54:29,439 - INFO - CLOSED short at 2121.4 | PnL: -0.07% | $-0.29 +2025-03-10 13:54:29,440 - INFO - OPENED LONG at 2121.4 | Stop loss: 2110.778057142857 | Take profit: 2153.243414285714 +2025-03-10 13:54:29,626 - INFO - STOP LOSS hit for long at 2110.778057142857 | PnL: -0.50% | $-1.04 +2025-03-10 13:54:29,676 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032057142857 | Take profit: 2142.281414285714 +2025-03-10 13:54:29,714 - INFO - CLOSED long at 2109.05 | PnL: -0.07% | $-0.30 +2025-03-10 13:54:29,714 - INFO - OPENED SHORT at 2109.05 | Stop loss: 2119.610192857143 | Take profit: 2077.3918357142857 +2025-03-10 13:54:29,791 - INFO - CLOSED short at 2112.46 | PnL: -0.16% | $-0.44 +2025-03-10 13:54:29,792 - INFO - OPENED LONG at 2112.46 | Stop loss: 2101.882757142857 | Take profit: 2144.1693142857143 +2025-03-10 13:54:29,920 - INFO - CLOSED long at 2114.8 | PnL: 0.11% | $0.02 +2025-03-10 13:54:29,920 - INFO - OPENED SHORT at 2114.8 | Stop loss: 2125.388942857143 | Take profit: 2083.055585714286 +2025-03-10 13:54:30,011 - INFO - CLOSED short at 2108.71 | PnL: 0.29% | $0.32 +2025-03-10 13:54:30,011 - INFO - OPENED LONG at 2108.71 | Stop loss: 2098.151507142857 | Take profit: 2140.3630642857142 +2025-03-10 13:54:30,180 - INFO - CLOSED long at 2090.0 | PnL: -0.89% | $-1.67 +2025-03-10 13:54:30,180 - INFO - OPENED SHORT at 2090.0 | Stop loss: 2100.464942857143 | Take profit: 2058.6275857142855 +2025-03-10 13:54:30,204 - INFO - CLOSED short at 2099.53 | PnL: -0.46% | $-0.92 +2025-03-10 13:54:30,205 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0174071428573 | Take profit: 2131.0453642857146 +2025-03-10 13:54:30,302 - INFO - CLOSED long at 2099.25 | PnL: -0.01% | $-0.19 +2025-03-10 13:54:30,302 - INFO - OPENED SHORT at 2099.25 | Stop loss: 2109.761192857143 | Take profit: 2067.738835714286 +2025-03-10 13:54:30,440 - INFO - CLOSED short at 2104.83 | PnL: -0.27% | $-0.60 +2025-03-10 13:54:30,441 - INFO - OPENED LONG at 2104.83 | Stop loss: 2094.290907142857 | Take profit: 2136.424864285714 +2025-03-10 13:54:30,493 - INFO - CLOSED long at 2106.39 | PnL: 0.07% | $-0.04 +2025-03-10 13:54:30,494 - INFO - OPENED SHORT at 2106.39 | Stop loss: 2116.936892857143 | Take profit: 2074.7717357142856 +2025-03-10 13:54:30,520 - INFO - CLOSED short at 2100.74 | PnL: 0.27% | $0.27 +2025-03-10 13:54:30,520 - INFO - OPENED LONG at 2100.74 | Stop loss: 2090.221357142857 | Take profit: 2132.273514285714 +2025-03-10 13:54:30,714 - INFO - CLOSED long at 2093.46 | PnL: -0.35% | $-0.73 +2025-03-10 13:54:30,714 - INFO - OPENED SHORT at 2093.46 | Stop loss: 2103.942242857143 | Take profit: 2062.0356857142856 +2025-03-10 13:54:30,751 - INFO - CLOSED short at 2093.33 | PnL: 0.01% | $-0.15 +2025-03-10 13:54:30,751 - INFO - OPENED LONG at 2093.33 | Stop loss: 2082.848407142857 | Take profit: 2124.752364285714 +2025-03-10 13:54:30,799 - INFO - CLOSED long at 2092.46 | PnL: -0.04% | $-0.23 +2025-03-10 13:54:30,845 - INFO - OPENED LONG at 2091.1 | Stop loss: 2080.6295571428573 | Take profit: 2122.488914285714 +2025-03-10 13:54:30,942 - INFO - CLOSED long at 2088.35 | PnL: -0.13% | $-0.37 +2025-03-10 13:54:30,943 - INFO - OPENED SHORT at 2088.35 | Stop loss: 2098.806692857143 | Take profit: 2057.002335714286 +2025-03-10 13:54:30,966 - INFO - CLOSED short at 2083.28 | PnL: 0.24% | $0.23 +2025-03-10 13:54:30,966 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848657142857 | Take profit: 2114.551614285714 +2025-03-10 13:54:31,297 - INFO - CLOSED long at 2083.59 | PnL: 0.01% | $-0.14 +2025-03-10 13:54:31,297 - INFO - OPENED SHORT at 2083.59 | Stop loss: 2094.022892857143 | Take profit: 2052.313735714286 +2025-03-10 13:54:31,320 - INFO - CLOSED short at 2086.57 | PnL: -0.14% | $-0.39 +2025-03-10 13:54:31,320 - INFO - OPENED LONG at 2086.57 | Stop loss: 2076.1222071428574 | Take profit: 2117.8909642857143 +2025-03-10 13:54:31,634 - INFO - CLOSED long at 2086.81 | PnL: 0.01% | $-0.14 +2025-03-10 13:54:31,635 - INFO - OPENED SHORT at 2086.81 | Stop loss: 2097.258992857143 | Take profit: 2055.485435714286 +2025-03-10 13:54:31,673 - INFO - CLOSED short at 2089.79 | PnL: -0.14% | $-0.39 +2025-03-10 13:54:31,673 - INFO - OPENED LONG at 2089.79 | Stop loss: 2079.326107142857 | Take profit: 2121.1592642857145 +2025-03-10 13:54:31,818 - INFO - CLOSED long at 2094.7 | PnL: 0.23% | $0.21 +2025-03-10 13:54:31,819 - INFO - OPENED SHORT at 2094.7 | Stop loss: 2105.1884428571425 | Take profit: 2063.2570857142855 +2025-03-10 13:54:31,866 - INFO - CLOSED short at 2099.99 | PnL: -0.25% | $-0.56 +2025-03-10 13:54:31,866 - INFO - OPENED LONG at 2099.99 | Stop loss: 2089.475107142857 | Take profit: 2131.512264285714 +2025-03-10 13:54:31,892 - INFO - CLOSED long at 2101.64 | PnL: 0.08% | $-0.03 +2025-03-10 13:54:31,892 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1631428571427 | Take profit: 2070.0929857142855 +2025-03-10 13:54:31,931 - INFO - CLOSED short at 2097.11 | PnL: 0.22% | $0.18 +2025-03-10 13:54:31,932 - INFO - OPENED LONG at 2097.11 | Stop loss: 2086.609507142857 | Take profit: 2128.5890642857144 +2025-03-10 13:54:32,024 - INFO - CLOSED long at 2099.89 | PnL: 0.13% | $0.05 +2025-03-10 13:54:32,025 - INFO - OPENED SHORT at 2099.89 | Stop loss: 2110.4043928571427 | Take profit: 2068.3692357142854 +2025-03-10 13:54:32,069 - INFO - CLOSED short at 2100.89 | PnL: -0.05% | $-0.23 +2025-03-10 13:54:32,069 - INFO - OPENED LONG at 2100.89 | Stop loss: 2090.370607142857 | Take profit: 2132.425764285714 +2025-03-10 13:54:32,155 - INFO - CLOSED long at 2103.48 | PnL: 0.12% | $0.04 +2025-03-10 13:54:32,155 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.012342857143 | Take profit: 2071.905385714286 +2025-03-10 13:54:32,176 - INFO - CLOSED short at 2104.93 | PnL: -0.07% | $-0.27 +2025-03-10 13:54:32,177 - INFO - OPENED LONG at 2104.93 | Stop loss: 2094.390407142857 | Take profit: 2136.526364285714 +2025-03-10 13:54:32,426 - INFO - CLOSED long at 2105.21 | PnL: 0.01% | $-0.14 +2025-03-10 13:54:32,426 - INFO - OPENED SHORT at 2105.21 | Stop loss: 2115.750992857143 | Take profit: 2073.6094357142856 +2025-03-10 13:54:32,477 - INFO - CLOSED short at 2103.9 | PnL: 0.06% | $-0.06 +2025-03-10 13:54:32,478 - INFO - OPENED LONG at 2103.9 | Stop loss: 2093.365557142857 | Take profit: 2135.4809142857143 +2025-03-10 13:54:32,667 - INFO - CLOSED long at 2106.28 | PnL: 0.11% | $0.02 +2025-03-10 13:54:32,668 - INFO - OPENED SHORT at 2106.28 | Stop loss: 2116.826342857143 | Take profit: 2074.663385714286 +2025-03-10 13:54:32,808 - INFO - CLOSED short at 2110.4 | PnL: -0.20% | $-0.46 +2025-03-10 13:54:32,808 - INFO - OPENED LONG at 2110.4 | Stop loss: 2099.8330571428573 | Take profit: 2142.0784142857146 +2025-03-10 13:54:33,088 - INFO - CLOSED long at 2108.99 | PnL: -0.07% | $-0.26 +2025-03-10 13:54:33,089 - INFO - OPENED SHORT at 2108.99 | Stop loss: 2119.549892857143 | Take profit: 2077.3327357142857 +2025-03-10 13:54:33,141 - INFO - CLOSED short at 2111.19 | PnL: -0.10% | $-0.32 +2025-03-10 13:54:33,141 - INFO - OPENED LONG at 2111.19 | Stop loss: 2100.619107142857 | Take profit: 2142.8802642857145 +2025-03-10 13:54:33,287 - INFO - CLOSED long at 2117.39 | PnL: 0.29% | $0.30 +2025-03-10 13:54:33,288 - INFO - OPENED SHORT at 2117.39 | Stop loss: 2127.991892857143 | Take profit: 2085.6067357142856 +2025-03-10 13:54:33,316 - INFO - CLOSED short at 2115.3 | PnL: 0.10% | $-0.00 +2025-03-10 13:54:33,316 - INFO - OPENED LONG at 2115.3 | Stop loss: 2104.7085571428574 | Take profit: 2147.0519142857142 +2025-03-10 13:54:33,452 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.20, Avg Loss=$-0.34 +2025-03-10 13:54:33,452 - INFO - Episode 41: Reward=21.94, Balance=$78.35, Win Rate=30.0%, Trades=120, Episode PnL=$-12.33, Total PnL=$-224.63, Max Drawdown=18.9%, Pred Accuracy=99.8% +2025-03-10 13:54:33,453 - INFO - Reducing learning rate to 0.000010 +2025-03-10 13:54:33,756 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:54:33,845 - INFO - CLOSED long at 2057.89 | PnL: -0.24% | $-0.68 +2025-03-10 13:54:33,845 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.1943928571427 | Take profit: 2026.9992357142855 +2025-03-10 13:54:33,923 - INFO - CLOSED short at 2061.79 | PnL: -0.19% | $-0.57 +2025-03-10 13:54:33,923 - INFO - OPENED LONG at 2061.79 | Stop loss: 2051.4661071428573 | Take profit: 2092.7392642857144 +2025-03-10 13:54:33,961 - INFO - CLOSED long at 2061.18 | PnL: -0.03% | $-0.25 +2025-03-10 13:54:33,961 - INFO - OPENED SHORT at 2061.18 | Stop loss: 2071.5008428571427 | Take profit: 2030.2398857142855 +2025-03-10 13:54:33,994 - INFO - CLOSED short at 2064.32 | PnL: -0.15% | $-0.49 +2025-03-10 13:54:33,995 - INFO - OPENED LONG at 2064.32 | Stop loss: 2053.9834571428573 | Take profit: 2095.3072142857145 +2025-03-10 13:54:34,094 - INFO - CLOSED long at 2068.11 | PnL: 0.18% | $0.16 +2025-03-10 13:54:34,095 - INFO - OPENED SHORT at 2068.11 | Stop loss: 2078.465492857143 | Take profit: 2037.0659357142858 +2025-03-10 13:54:34,116 - INFO - CLOSED short at 2068.29 | PnL: -0.01% | $-0.21 +2025-03-10 13:54:34,116 - INFO - OPENED LONG at 2068.29 | Stop loss: 2057.933607142857 | Take profit: 2099.3367642857143 +2025-03-10 13:54:34,220 - INFO - CLOSED long at 2068.65 | PnL: 0.02% | $-0.16 +2025-03-10 13:54:34,220 - INFO - OPENED SHORT at 2068.65 | Stop loss: 2079.008192857143 | Take profit: 2037.5978357142858 +2025-03-10 13:54:34,245 - INFO - CLOSED short at 2068.99 | PnL: -0.02% | $-0.23 +2025-03-10 13:54:34,245 - INFO - OPENED LONG at 2068.99 | Stop loss: 2058.630107142857 | Take profit: 2100.047264285714 +2025-03-10 13:54:34,289 - INFO - CLOSED long at 2067.69 | PnL: -0.06% | $-0.32 +2025-03-10 13:54:34,289 - INFO - OPENED SHORT at 2067.69 | Stop loss: 2078.0433928571433 | Take profit: 2036.6522357142858 +2025-03-10 13:54:34,324 - INFO - CLOSED short at 2070.26 | PnL: -0.12% | $-0.43 +2025-03-10 13:54:34,364 - INFO - OPENED SHORT at 2071.44 | Stop loss: 2081.812142857143 | Take profit: 2040.3459857142857 +2025-03-10 13:54:34,434 - INFO - CLOSED short at 2075.1 | PnL: -0.18% | $-0.53 +2025-03-10 13:54:34,434 - INFO - OPENED LONG at 2075.1 | Stop loss: 2064.709557142857 | Take profit: 2106.248914285714 +2025-03-10 13:54:34,485 - INFO - CLOSED long at 2072.91 | PnL: -0.11% | $-0.39 +2025-03-10 13:54:34,485 - INFO - OPENED SHORT at 2072.91 | Stop loss: 2083.2894928571427 | Take profit: 2041.7939357142857 +2025-03-10 13:54:34,564 - INFO - CLOSED short at 2071.41 | PnL: 0.07% | $-0.05 +2025-03-10 13:54:34,565 - INFO - OPENED LONG at 2071.41 | Stop loss: 2061.0380071428567 | Take profit: 2102.5035642857138 +2025-03-10 13:54:34,610 - INFO - CLOSED long at 2070.9 | PnL: -0.02% | $-0.24 +2025-03-10 13:54:34,610 - INFO - OPENED SHORT at 2070.9 | Stop loss: 2081.269442857143 | Take profit: 2039.8140857142857 +2025-03-10 13:54:34,636 - INFO - CLOSED short at 2072.8 | PnL: -0.09% | $-0.36 +2025-03-10 13:54:34,636 - INFO - OPENED LONG at 2072.8 | Stop loss: 2062.4210571428575 | Take profit: 2103.9144142857144 +2025-03-10 13:54:34,834 - INFO - CLOSED long at 2070.7 | PnL: -0.10% | $-0.38 +2025-03-10 13:54:34,835 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.0684428571426 | Take profit: 2039.6170857142854 +2025-03-10 13:54:34,876 - INFO - CLOSED short at 2069.34 | PnL: 0.07% | $-0.06 +2025-03-10 13:54:34,876 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.978357142857 | Take profit: 2100.4025142857145 +2025-03-10 13:54:34,912 - INFO - CLOSED long at 2069.19 | PnL: -0.01% | $-0.20 +2025-03-10 13:54:34,937 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.4410571428575 | Take profit: 2099.8544142857145 +2025-03-10 13:54:35,051 - INFO - CLOSED long at 2065.99 | PnL: -0.14% | $-0.44 +2025-03-10 13:54:35,051 - INFO - OPENED SHORT at 2065.99 | Stop loss: 2076.3348928571427 | Take profit: 2034.9777357142855 +2025-03-10 13:54:35,074 - INFO - CLOSED short at 2066.19 | PnL: -0.01% | $-0.21 +2025-03-10 13:54:35,074 - INFO - OPENED LONG at 2066.19 | Stop loss: 2055.8441071428574 | Take profit: 2097.2052642857143 +2025-03-10 13:54:35,100 - INFO - CLOSED long at 2066.29 | PnL: 0.00% | $-0.18 +2025-03-10 13:54:35,101 - INFO - OPENED SHORT at 2066.29 | Stop loss: 2076.6363928571427 | Take profit: 2035.2732357142856 +2025-03-10 13:54:35,139 - INFO - CLOSED short at 2065.08 | PnL: 0.06% | $-0.08 +2025-03-10 13:54:35,139 - INFO - OPENED LONG at 2065.08 | Stop loss: 2054.739657142857 | Take profit: 2096.078614285714 +2025-03-10 13:54:35,406 - INFO - CLOSED long at 2071.39 | PnL: 0.31% | $0.38 +2025-03-10 13:54:35,407 - INFO - OPENED SHORT at 2071.39 | Stop loss: 2081.761892857143 | Take profit: 2040.2967357142857 +2025-03-10 13:54:35,428 - INFO - CLOSED short at 2071.36 | PnL: 0.00% | $-0.18 +2025-03-10 13:54:35,428 - INFO - OPENED LONG at 2071.36 | Stop loss: 2060.9882571428575 | Take profit: 2102.4528142857143 +2025-03-10 13:54:35,512 - INFO - CLOSED long at 2072.15 | PnL: 0.04% | $-0.12 +2025-03-10 13:54:35,513 - INFO - OPENED SHORT at 2072.15 | Stop loss: 2082.525692857143 | Take profit: 2041.045335714286 +2025-03-10 13:54:35,561 - INFO - CLOSED short at 2074.29 | PnL: -0.10% | $-0.38 +2025-03-10 13:54:35,562 - INFO - OPENED LONG at 2074.29 | Stop loss: 2063.9036071428573 | Take profit: 2105.4267642857144 +2025-03-10 13:54:35,642 - INFO - CLOSED long at 2071.92 | PnL: -0.11% | $-0.40 +2025-03-10 13:54:35,682 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.033057142857 | Take profit: 2101.4784142857143 +2025-03-10 13:54:35,754 - INFO - CLOSED long at 2069.35 | PnL: -0.05% | $-0.28 +2025-03-10 13:54:35,754 - INFO - OPENED SHORT at 2069.35 | Stop loss: 2079.7116928571427 | Take profit: 2038.2873357142855 +2025-03-10 13:54:35,774 - INFO - CLOSED short at 2068.32 | PnL: 0.05% | $-0.09 +2025-03-10 13:54:35,775 - INFO - OPENED LONG at 2068.32 | Stop loss: 2057.9634571428574 | Take profit: 2099.3672142857145 +2025-03-10 13:54:35,798 - INFO - CLOSED long at 2067.0 | PnL: -0.06% | $-0.30 +2025-03-10 13:54:35,799 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.3499428571427 | Take profit: 2035.9725857142857 +2025-03-10 13:54:35,847 - INFO - CLOSED short at 2067.46 | PnL: -0.02% | $-0.22 +2025-03-10 13:54:35,847 - INFO - OPENED LONG at 2067.46 | Stop loss: 2057.1077571428573 | Take profit: 2098.4943142857146 +2025-03-10 13:54:36,585 - INFO - CLOSED long at 2064.47 | PnL: -0.14% | $-0.45 +2025-03-10 13:54:36,585 - INFO - OPENED SHORT at 2064.47 | Stop loss: 2074.8072928571423 | Take profit: 2033.4805357142855 +2025-03-10 13:54:36,630 - INFO - CLOSED short at 2067.8 | PnL: -0.16% | $-0.48 +2025-03-10 13:54:36,632 - INFO - OPENED LONG at 2067.8 | Stop loss: 2057.446057142857 | Take profit: 2098.8394142857146 +2025-03-10 13:54:36,753 - INFO - CLOSED long at 2064.99 | PnL: -0.14% | $-0.43 +2025-03-10 13:54:36,753 - INFO - OPENED SHORT at 2064.99 | Stop loss: 2075.3298928571426 | Take profit: 2033.9927357142856 +2025-03-10 13:54:36,912 - INFO - CLOSED short at 2062.89 | PnL: 0.10% | $0.00 +2025-03-10 13:54:36,912 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:54:36,940 - INFO - CLOSED long at 2062.65 | PnL: -0.01% | $-0.20 +2025-03-10 13:54:36,940 - INFO - OPENED SHORT at 2062.65 | Stop loss: 2072.978192857143 | Take profit: 2031.6878357142857 +2025-03-10 13:54:36,966 - INFO - CLOSED short at 2061.78 | PnL: 0.04% | $-0.10 +2025-03-10 13:54:36,966 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.456157142857 | Take profit: 2092.729114285715 +2025-03-10 13:54:36,992 - INFO - CLOSED long at 2059.59 | PnL: -0.11% | $-0.37 +2025-03-10 13:54:37,015 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.621442857143 | Take profit: 2030.358085714286 +2025-03-10 13:54:37,060 - INFO - CLOSED short at 2064.96 | PnL: -0.18% | $-0.50 +2025-03-10 13:54:37,061 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.620257142857 | Take profit: 2095.9568142857142 +2025-03-10 13:54:37,221 - INFO - CLOSED long at 2066.09 | PnL: 0.05% | $-0.08 +2025-03-10 13:54:37,221 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.4353928571427 | Take profit: 2035.0762357142858 +2025-03-10 13:54:37,282 - INFO - CLOSED short at 2064.45 | PnL: 0.08% | $-0.04 +2025-03-10 13:54:37,282 - INFO - OPENED LONG at 2064.45 | Stop loss: 2054.112807142857 | Take profit: 2095.4391642857145 +2025-03-10 13:54:37,394 - INFO - CLOSED long at 2064.5 | PnL: 0.00% | $-0.17 +2025-03-10 13:54:37,394 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.837442857143 | Take profit: 2033.5100857142857 +2025-03-10 13:54:37,420 - INFO - CLOSED short at 2063.5 | PnL: 0.05% | $-0.09 +2025-03-10 13:54:37,420 - INFO - OPENED LONG at 2063.5 | Stop loss: 2053.1675571428573 | Take profit: 2094.4749142857145 +2025-03-10 13:54:37,469 - INFO - CLOSED long at 2060.9 | PnL: -0.13% | $-0.40 +2025-03-10 13:54:37,470 - INFO - OPENED SHORT at 2060.9 | Stop loss: 2071.219442857143 | Take profit: 2029.9640857142858 +2025-03-10 13:54:37,495 - INFO - CLOSED short at 2060.65 | PnL: 0.01% | $-0.15 +2025-03-10 13:54:37,495 - INFO - OPENED LONG at 2060.65 | Stop loss: 2050.3318071428575 | Take profit: 2091.5821642857145 +2025-03-10 13:54:37,604 - INFO - CLOSED long at 2059.3 | PnL: -0.07% | $-0.29 +2025-03-10 13:54:37,604 - INFO - OPENED SHORT at 2059.3 | Stop loss: 2069.6114428571427 | Take profit: 2028.3880857142858 +2025-03-10 13:54:37,748 - INFO - CLOSED short at 2062.61 | PnL: -0.16% | $-0.46 +2025-03-10 13:54:37,749 - INFO - OPENED LONG at 2062.61 | Stop loss: 2052.2820071428573 | Take profit: 2093.5715642857144 +2025-03-10 13:54:37,798 - INFO - CLOSED long at 2060.3 | PnL: -0.11% | $-0.37 +2025-03-10 13:54:37,798 - INFO - OPENED SHORT at 2060.3 | Stop loss: 2070.616442857143 | Take profit: 2029.373085714286 +2025-03-10 13:54:37,821 - INFO - CLOSED short at 2061.13 | PnL: -0.04% | $-0.24 +2025-03-10 13:54:37,822 - INFO - OPENED LONG at 2061.13 | Stop loss: 2050.8094071428573 | Take profit: 2092.0693642857145 +2025-03-10 13:54:37,896 - INFO - CLOSED long at 2065.36 | PnL: 0.21% | $0.18 +2025-03-10 13:54:37,897 - INFO - OPENED SHORT at 2065.36 | Stop loss: 2075.701742857143 | Take profit: 2034.3571857142858 +2025-03-10 13:54:37,940 - INFO - CLOSED short at 2064.33 | PnL: 0.05% | $-0.09 +2025-03-10 13:54:37,941 - INFO - OPENED LONG at 2064.33 | Stop loss: 2053.993407142857 | Take profit: 2095.317364285714 +2025-03-10 13:54:38,159 - INFO - CLOSED long at 2062.6 | PnL: -0.08% | $-0.32 +2025-03-10 13:54:38,160 - INFO - OPENED SHORT at 2062.6 | Stop loss: 2072.927942857143 | Take profit: 2031.6385857142857 +2025-03-10 13:54:38,185 - INFO - CLOSED short at 2061.89 | PnL: 0.03% | $-0.11 +2025-03-10 13:54:38,185 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.565607142857 | Take profit: 2092.840764285714 +2025-03-10 13:54:38,235 - INFO - CLOSED long at 2060.7 | PnL: -0.06% | $-0.27 +2025-03-10 13:54:38,236 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.018442857143 | Take profit: 2029.7670857142855 +2025-03-10 13:54:38,288 - INFO - CLOSED short at 2059.61 | PnL: 0.05% | $-0.08 +2025-03-10 13:54:38,289 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.297007142857 | Take profit: 2090.5265642857144 +2025-03-10 13:54:38,529 - INFO - CLOSED long at 2058.28 | PnL: -0.06% | $-0.28 +2025-03-10 13:54:38,529 - INFO - OPENED SHORT at 2058.28 | Stop loss: 2068.586342857143 | Take profit: 2027.3833857142859 +2025-03-10 13:54:38,550 - INFO - CLOSED short at 2056.28 | PnL: 0.10% | $-0.00 +2025-03-10 13:54:38,550 - INFO - OPENED LONG at 2056.28 | Stop loss: 2045.9836571428575 | Take profit: 2087.146614285715 +2025-03-10 13:54:38,828 - INFO - CLOSED long at 2061.3 | PnL: 0.24% | $0.25 +2025-03-10 13:54:38,828 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.621442857143 | Take profit: 2030.358085714286 +2025-03-10 13:54:38,875 - INFO - CLOSED short at 2062.69 | PnL: -0.07% | $-0.29 +2025-03-10 13:54:38,876 - INFO - OPENED LONG at 2062.69 | Stop loss: 2052.3616071428573 | Take profit: 2093.6527642857145 +2025-03-10 13:54:39,036 - INFO - CLOSED long at 2066.34 | PnL: 0.18% | $0.13 +2025-03-10 13:54:39,036 - INFO - OPENED SHORT at 2066.34 | Stop loss: 2076.686642857143 | Take profit: 2035.3224857142857 +2025-03-10 13:54:39,106 - INFO - CLOSED short at 2067.01 | PnL: -0.03% | $-0.23 +2025-03-10 13:54:39,106 - INFO - OPENED LONG at 2067.01 | Stop loss: 2056.6600071428575 | Take profit: 2098.037564285715 +2025-03-10 13:54:39,187 - INFO - CLOSED long at 2069.79 | PnL: 0.13% | $0.06 +2025-03-10 13:54:39,188 - INFO - OPENED SHORT at 2069.79 | Stop loss: 2080.153892857143 | Take profit: 2038.7207357142856 +2025-03-10 13:54:39,229 - INFO - CLOSED short at 2072.0 | PnL: -0.11% | $-0.35 +2025-03-10 13:54:39,229 - INFO - OPENED LONG at 2072.0 | Stop loss: 2061.6250571428573 | Take profit: 2103.1024142857145 +2025-03-10 13:54:39,326 - INFO - CLOSED long at 2075.01 | PnL: 0.15% | $0.08 +2025-03-10 13:54:39,327 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.399992857143 | Take profit: 2043.862435714286 +2025-03-10 13:54:39,350 - INFO - CLOSED short at 2072.6 | PnL: 0.12% | $0.03 +2025-03-10 13:54:39,350 - INFO - OPENED LONG at 2072.6 | Stop loss: 2062.222057142857 | Take profit: 2103.7114142857145 +2025-03-10 13:54:39,376 - INFO - CLOSED long at 2071.04 | PnL: -0.08% | $-0.30 +2025-03-10 13:54:39,377 - INFO - OPENED SHORT at 2071.04 | Stop loss: 2081.410142857143 | Take profit: 2039.9519857142857 +2025-03-10 13:54:39,399 - INFO - CLOSED short at 2070.01 | PnL: 0.05% | $-0.09 +2025-03-10 13:54:39,399 - INFO - OPENED LONG at 2070.01 | Stop loss: 2059.645007142857 | Take profit: 2101.082564285715 +2025-03-10 13:54:39,425 - INFO - CLOSED long at 2071.6 | PnL: 0.08% | $-0.04 +2025-03-10 13:54:39,426 - INFO - OPENED SHORT at 2071.6 | Stop loss: 2081.972942857143 | Take profit: 2040.5035857142857 +2025-03-10 13:54:39,495 - INFO - CLOSED short at 2068.15 | PnL: 0.17% | $0.11 +2025-03-10 13:54:39,496 - INFO - OPENED LONG at 2068.15 | Stop loss: 2057.794307142857 | Take profit: 2099.194664285714 +2025-03-10 13:54:39,571 - INFO - CLOSED long at 2069.69 | PnL: 0.07% | $-0.04 +2025-03-10 13:54:39,571 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.053392857143 | Take profit: 2038.6222357142858 +2025-03-10 13:54:39,651 - INFO - CLOSED short at 2067.44 | PnL: 0.11% | $0.01 +2025-03-10 13:54:39,651 - INFO - OPENED LONG at 2067.44 | Stop loss: 2057.087857142857 | Take profit: 2098.4740142857145 +2025-03-10 13:54:39,724 - INFO - CLOSED long at 2072.99 | PnL: 0.27% | $0.29 +2025-03-10 13:54:39,724 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.369892857143 | Take profit: 2041.8727357142855 +2025-03-10 13:54:39,749 - INFO - CLOSED short at 2071.49 | PnL: 0.07% | $-0.05 +2025-03-10 13:54:39,749 - INFO - OPENED LONG at 2071.49 | Stop loss: 2061.1176071428567 | Take profit: 2102.5847642857143 +2025-03-10 13:54:39,818 - INFO - CLOSED long at 2066.38 | PnL: -0.25% | $-0.59 +2025-03-10 13:54:39,818 - INFO - OPENED SHORT at 2066.38 | Stop loss: 2076.726842857143 | Take profit: 2035.3618857142858 +2025-03-10 13:54:39,843 - INFO - CLOSED short at 2065.7 | PnL: 0.03% | $-0.11 +2025-03-10 13:54:39,843 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.356557142857 | Take profit: 2096.707914285714 +2025-03-10 13:54:39,948 - INFO - CLOSED long at 2064.5 | PnL: -0.06% | $-0.27 +2025-03-10 13:54:39,949 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.837442857143 | Take profit: 2033.5100857142857 +2025-03-10 13:54:39,982 - INFO - CLOSED short at 2065.3 | PnL: -0.04% | $-0.23 +2025-03-10 13:54:39,982 - INFO - OPENED LONG at 2065.3 | Stop loss: 2054.9585571428574 | Take profit: 2096.3019142857142 +2025-03-10 13:54:40,067 - INFO - CLOSED long at 2064.31 | PnL: -0.05% | $-0.25 +2025-03-10 13:54:40,068 - INFO - OPENED SHORT at 2064.31 | Stop loss: 2074.6464928571427 | Take profit: 2033.3229357142857 +2025-03-10 13:54:40,109 - INFO - CLOSED short at 2065.5 | PnL: -0.06% | $-0.26 +2025-03-10 13:54:40,109 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.157557142857 | Take profit: 2096.504914285714 +2025-03-10 13:54:40,132 - INFO - CLOSED long at 2067.53 | PnL: 0.10% | $-0.00 +2025-03-10 13:54:40,132 - INFO - OPENED SHORT at 2067.53 | Stop loss: 2077.882592857143 | Take profit: 2036.494635714286 +2025-03-10 13:54:40,154 - INFO - CLOSED short at 2065.29 | PnL: 0.11% | $0.01 +2025-03-10 13:54:40,154 - INFO - OPENED LONG at 2065.29 | Stop loss: 2054.948607142857 | Take profit: 2096.2917642857146 +2025-03-10 13:54:40,260 - INFO - CLOSED long at 2071.59 | PnL: 0.31% | $0.34 +2025-03-10 13:54:40,261 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.962892857143 | Take profit: 2040.4937357142858 +2025-03-10 13:54:40,284 - INFO - CLOSED short at 2070.2 | PnL: 0.07% | $-0.06 +2025-03-10 13:54:40,284 - INFO - OPENED LONG at 2070.2 | Stop loss: 2059.834057142857 | Take profit: 2101.275414285714 +2025-03-10 13:54:40,310 - INFO - CLOSED long at 2071.35 | PnL: 0.06% | $-0.07 +2025-03-10 13:54:40,311 - INFO - OPENED SHORT at 2071.35 | Stop loss: 2081.721692857143 | Take profit: 2040.2573357142858 +2025-03-10 13:54:40,361 - INFO - CLOSED short at 2070.9 | PnL: 0.02% | $-0.13 +2025-03-10 13:54:40,362 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.530557142857 | Take profit: 2101.9859142857144 +2025-03-10 13:54:40,415 - INFO - CLOSED long at 2069.69 | PnL: -0.06% | $-0.27 +2025-03-10 13:54:40,415 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.053392857143 | Take profit: 2038.6222357142858 +2025-03-10 13:54:40,456 - INFO - CLOSED short at 2070.7 | PnL: -0.05% | $-0.25 +2025-03-10 13:54:40,457 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.331557142857 | Take profit: 2101.782914285714 +2025-03-10 13:54:40,700 - INFO - CLOSED long at 2074.37 | PnL: 0.18% | $0.13 +2025-03-10 13:54:40,700 - INFO - OPENED SHORT at 2074.37 | Stop loss: 2084.7567928571425 | Take profit: 2043.2320357142855 +2025-03-10 13:54:40,748 - INFO - CLOSED short at 2075.07 | PnL: -0.03% | $-0.22 +2025-03-10 13:54:40,748 - INFO - OPENED LONG at 2075.07 | Stop loss: 2064.6797071428573 | Take profit: 2106.2184642857146 +2025-03-10 13:54:40,844 - INFO - CLOSED long at 2073.27 | PnL: -0.09% | $-0.31 +2025-03-10 13:54:40,845 - INFO - OPENED SHORT at 2073.27 | Stop loss: 2083.651292857143 | Take profit: 2042.1485357142858 +2025-03-10 13:54:40,930 - INFO - CLOSED short at 2075.32 | PnL: -0.10% | $-0.33 +2025-03-10 13:54:40,931 - INFO - OPENED LONG at 2075.32 | Stop loss: 2064.9284571428575 | Take profit: 2106.4722142857145 +2025-03-10 13:54:40,974 - INFO - CLOSED long at 2076.9 | PnL: 0.08% | $-0.04 +2025-03-10 13:54:40,975 - INFO - OPENED SHORT at 2076.9 | Stop loss: 2087.299442857143 | Take profit: 2045.7240857142858 +2025-03-10 13:54:41,000 - INFO - CLOSED short at 2075.61 | PnL: 0.06% | $-0.06 +2025-03-10 13:54:41,000 - INFO - OPENED LONG at 2075.61 | Stop loss: 2065.2170071428573 | Take profit: 2106.7665642857146 +2025-03-10 13:54:41,119 - INFO - CLOSED long at 2067.0 | PnL: -0.41% | $-0.85 +2025-03-10 13:54:41,119 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.3499428571427 | Take profit: 2035.9725857142857 +2025-03-10 13:54:41,174 - INFO - CLOSED short at 2067.9 | PnL: -0.04% | $-0.23 +2025-03-10 13:54:41,174 - INFO - OPENED LONG at 2067.9 | Stop loss: 2057.5455571428574 | Take profit: 2098.9409142857144 +2025-03-10 13:54:41,330 - INFO - CLOSED long at 2065.45 | PnL: -0.12% | $-0.35 +2025-03-10 13:54:41,330 - INFO - OPENED SHORT at 2065.45 | Stop loss: 2075.7921928571427 | Take profit: 2034.4458357142857 +2025-03-10 13:54:41,352 - INFO - CLOSED short at 2068.1 | PnL: -0.13% | $-0.37 +2025-03-10 13:54:41,353 - INFO - OPENED LONG at 2068.1 | Stop loss: 2057.744557142857 | Take profit: 2099.1439142857143 +2025-03-10 13:54:41,375 - INFO - CLOSED long at 2069.0 | PnL: 0.04% | $-0.09 +2025-03-10 13:54:41,375 - INFO - OPENED SHORT at 2069.0 | Stop loss: 2079.359942857143 | Take profit: 2037.9425857142858 +2025-03-10 13:54:41,420 - INFO - CLOSED short at 2070.1 | PnL: -0.05% | $-0.25 +2025-03-10 13:54:41,420 - INFO - OPENED LONG at 2070.1 | Stop loss: 2059.734557142857 | Take profit: 2101.173914285714 +2025-03-10 13:54:41,463 - INFO - CLOSED long at 2065.5 | PnL: -0.22% | $-0.52 +2025-03-10 13:54:41,464 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.842442857143 | Take profit: 2034.4950857142856 +2025-03-10 13:54:41,490 - INFO - CLOSED short at 2065.7 | PnL: -0.01% | $-0.17 +2025-03-10 13:54:41,490 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.356557142857 | Take profit: 2096.707914285714 +2025-03-10 13:54:41,523 - INFO - CLOSED long at 2065.8 | PnL: 0.00% | $-0.15 +2025-03-10 13:54:41,524 - INFO - OPENED SHORT at 2065.8 | Stop loss: 2076.143942857143 | Take profit: 2034.7905857142857 +2025-03-10 13:54:41,566 - INFO - CLOSED short at 2065.07 | PnL: 0.04% | $-0.10 +2025-03-10 13:54:41,567 - INFO - OPENED LONG at 2065.07 | Stop loss: 2054.7297071428575 | Take profit: 2096.0684642857145 +2025-03-10 13:54:41,613 - INFO - CLOSED long at 2066.09 | PnL: 0.05% | $-0.08 +2025-03-10 13:54:41,614 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.4353928571427 | Take profit: 2035.0762357142858 +2025-03-10 13:54:41,690 - INFO - CLOSED short at 2062.34 | PnL: 0.18% | $0.13 +2025-03-10 13:54:41,690 - INFO - OPENED LONG at 2062.34 | Stop loss: 2052.0133571428573 | Take profit: 2093.2975142857144 +2025-03-10 13:54:41,742 - INFO - CLOSED long at 2066.1 | PnL: 0.18% | $0.13 +2025-03-10 13:54:41,742 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.445442857143 | Take profit: 2035.0860857142857 +2025-03-10 13:54:41,765 - INFO - CLOSED short at 2065.06 | PnL: 0.05% | $-0.08 +2025-03-10 13:54:41,765 - INFO - OPENED LONG at 2065.06 | Stop loss: 2054.719757142857 | Take profit: 2096.058314285714 +2025-03-10 13:54:41,877 - INFO - CLOSED long at 2060.7 | PnL: -0.21% | $-0.49 +2025-03-10 13:54:41,905 - INFO - OPENED LONG at 2060.2 | Stop loss: 2049.884057142857 | Take profit: 2091.125414285714 +2025-03-10 13:54:42,112 - INFO - CLOSED long at 2049.21 | PnL: -0.53% | $-1.00 +2025-03-10 13:54:42,113 - INFO - OPENED SHORT at 2049.21 | Stop loss: 2059.470992857143 | Take profit: 2018.4494357142858 +2025-03-10 13:54:42,136 - INFO - CLOSED short at 2049.5 | PnL: -0.01% | $-0.18 +2025-03-10 13:54:42,136 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.237557142857 | Take profit: 2080.264914285714 +2025-03-10 13:54:42,928 - INFO - CLOSED long at 2069.81 | PnL: 0.99% | $1.38 +2025-03-10 13:54:42,958 - INFO - OPENED LONG at 2070.41 | Stop loss: 2060.043007142857 | Take profit: 2101.488564285714 +2025-03-10 13:54:43,006 - INFO - CLOSED long at 2074.05 | PnL: 0.18% | $0.12 +2025-03-10 13:54:43,006 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4351928571427 | Take profit: 2042.9168357142858 +2025-03-10 13:54:43,035 - INFO - CLOSED short at 2072.99 | PnL: 0.05% | $-0.08 +2025-03-10 13:54:43,036 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.610107142857 | Take profit: 2104.107264285714 +2025-03-10 13:54:43,116 - INFO - CLOSED long at 2074.9 | PnL: 0.09% | $-0.01 +2025-03-10 13:54:43,117 - INFO - OPENED SHORT at 2074.9 | Stop loss: 2085.2894428571426 | Take profit: 2043.7540857142858 +2025-03-10 13:54:43,166 - INFO - CLOSED short at 2076.08 | PnL: -0.06% | $-0.25 +2025-03-10 13:54:43,166 - INFO - OPENED LONG at 2076.08 | Stop loss: 2065.6846571428573 | Take profit: 2107.2436142857146 +2025-03-10 13:54:43,330 - INFO - CLOSED long at 2130.7 | PnL: 2.63% | $3.99 +2025-03-10 13:54:43,330 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.368442857143 | Take profit: 2098.7170857142855 +2025-03-10 13:54:43,352 - INFO - CLOSED short at 2139.54 | PnL: -0.41% | $-0.85 +2025-03-10 13:54:43,352 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.827357142857 | Take profit: 2171.655514285714 +2025-03-10 13:54:43,661 - INFO - STOP LOSS hit for long at 2128.827357142857 | PnL: -0.50% | $-0.98 +2025-03-10 13:54:43,732 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.0316071428574 | Take profit: 2160.6427642857143 +2025-03-10 13:54:43,814 - INFO - STOP LOSS hit for long at 2118.0316071428574 | PnL: -0.50% | $-0.97 +2025-03-10 13:54:43,838 - INFO - OPENED SHORT at 2119.93 | Stop loss: 2130.544592857143 | Take profit: 2088.1086357142854 +2025-03-10 13:54:43,910 - INFO - CLOSED short at 2118.52 | PnL: 0.07% | $-0.05 +2025-03-10 13:54:43,910 - INFO - OPENED LONG at 2118.52 | Stop loss: 2107.912457142857 | Take profit: 2150.320214285714 +2025-03-10 13:54:44,122 - INFO - STOP LOSS hit for long at 2107.912457142857 | PnL: -0.50% | $-0.96 +2025-03-10 13:54:44,148 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032057142857 | Take profit: 2142.281414285714 +2025-03-10 13:54:44,221 - INFO - CLOSED long at 2112.95 | PnL: 0.11% | $0.02 +2025-03-10 13:54:44,221 - INFO - OPENED SHORT at 2112.95 | Stop loss: 2123.5296928571424 | Take profit: 2081.2333357142857 +2025-03-10 13:54:44,266 - INFO - CLOSED short at 2113.24 | PnL: -0.01% | $-0.18 +2025-03-10 13:54:44,267 - INFO - OPENED LONG at 2113.24 | Stop loss: 2102.658857142857 | Take profit: 2144.961014285714 +2025-03-10 13:54:44,490 - INFO - CLOSED long at 2106.49 | PnL: -0.32% | $-0.66 +2025-03-10 13:54:44,490 - INFO - OPENED SHORT at 2106.49 | Stop loss: 2117.0373928571425 | Take profit: 2074.8702357142856 +2025-03-10 13:54:44,512 - INFO - CLOSED short at 2108.06 | PnL: -0.07% | $-0.27 +2025-03-10 13:54:44,512 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.504757142857 | Take profit: 2139.7033142857144 +2025-03-10 13:54:44,582 - INFO - STOP LOSS hit for long at 2097.504757142857 | PnL: -0.50% | $-0.94 +2025-03-10 13:54:44,605 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0174071428573 | Take profit: 2131.0453642857146 +2025-03-10 13:54:45,194 - INFO - CLOSED long at 2091.1 | PnL: -0.40% | $-0.77 +2025-03-10 13:54:45,195 - INFO - OPENED SHORT at 2091.1 | Stop loss: 2101.5704428571426 | Take profit: 2059.7110857142857 +2025-03-10 13:54:45,250 - INFO - CLOSED short at 2094.72 | PnL: -0.17% | $-0.42 +2025-03-10 13:54:45,250 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.231457142857 | Take profit: 2126.1632142857143 +2025-03-10 13:54:45,342 - INFO - STOP LOSS hit for long at 2084.231457142857 | PnL: -0.50% | $-0.91 +2025-03-10 13:54:45,367 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.982857142857 | Take profit: 2119.789014285714 +2025-03-10 13:54:45,689 - INFO - CLOSED long at 2085.8 | PnL: -0.13% | $-0.34 +2025-03-10 13:54:45,690 - INFO - OPENED SHORT at 2085.8 | Stop loss: 2096.243942857143 | Take profit: 2054.4905857142858 +2025-03-10 13:54:45,711 - INFO - CLOSED short at 2084.72 | PnL: 0.05% | $-0.07 +2025-03-10 13:54:45,711 - INFO - OPENED LONG at 2084.72 | Stop loss: 2074.281457142857 | Take profit: 2116.013214285714 +2025-03-10 13:54:46,054 - INFO - CLOSED long at 2091.05 | PnL: 0.30% | $0.30 +2025-03-10 13:54:46,091 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.579807142857 | Take profit: 2122.4381642857143 +2025-03-10 13:54:46,495 - INFO - CLOSED long at 2103.81 | PnL: 0.61% | $0.76 +2025-03-10 13:54:46,496 - INFO - OPENED SHORT at 2103.81 | Stop loss: 2114.343992857143 | Take profit: 2072.2304357142857 +2025-03-10 13:54:46,525 - INFO - CLOSED short at 2103.07 | PnL: 0.04% | $-0.10 +2025-03-10 13:54:46,525 - INFO - OPENED LONG at 2103.07 | Stop loss: 2092.5397071428574 | Take profit: 2134.6384642857147 +2025-03-10 13:54:46,549 - INFO - CLOSED long at 2101.5 | PnL: -0.07% | $-0.26 +2025-03-10 13:54:46,549 - INFO - OPENED SHORT at 2101.5 | Stop loss: 2112.0224428571432 | Take profit: 2069.955085714286 +2025-03-10 13:54:46,574 - INFO - CLOSED short at 2105.83 | PnL: -0.21% | $-0.46 +2025-03-10 13:54:46,574 - INFO - OPENED LONG at 2105.83 | Stop loss: 2095.285907142857 | Take profit: 2137.4398642857145 +2025-03-10 13:54:46,846 - INFO - CLOSED long at 2102.7 | PnL: -0.15% | $-0.37 +2025-03-10 13:54:46,847 - INFO - OPENED SHORT at 2102.7 | Stop loss: 2113.228442857143 | Take profit: 2071.1370857142856 +2025-03-10 13:54:46,910 - INFO - CLOSED short at 2102.0 | PnL: 0.03% | $-0.10 +2025-03-10 13:54:46,911 - INFO - OPENED LONG at 2102.0 | Stop loss: 2091.475057142857 | Take profit: 2133.5524142857143 +2025-03-10 13:54:47,170 - INFO - CLOSED long at 2110.87 | PnL: 0.42% | $0.48 +2025-03-10 13:54:47,171 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.439292857143 | Take profit: 2079.1845357142856 +2025-03-10 13:54:47,198 - INFO - CLOSED short at 2110.4 | PnL: 0.02% | $-0.12 +2025-03-10 13:54:47,199 - INFO - OPENED LONG at 2110.4 | Stop loss: 2099.8330571428573 | Take profit: 2142.0784142857146 +2025-03-10 13:54:47,293 - INFO - CLOSED long at 2113.61 | PnL: 0.15% | $0.08 +2025-03-10 13:54:47,294 - INFO - OPENED SHORT at 2113.61 | Stop loss: 2124.192992857143 | Take profit: 2081.883435714286 +2025-03-10 13:54:47,321 - INFO - CLOSED short at 2113.1 | PnL: 0.02% | $-0.11 +2025-03-10 13:54:47,322 - INFO - OPENED LONG at 2113.1 | Stop loss: 2102.519557142857 | Take profit: 2144.818914285714 +2025-03-10 13:54:47,726 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.38, Avg Loss=$-0.29 +2025-03-10 13:54:47,726 - INFO - Episode 42: Reward=-18.49, Balance=$75.13, Win Rate=17.6%, Trades=142, Episode PnL=$-17.80, Total PnL=$-249.50, Max Drawdown=24.7%, Pred Accuracy=99.8% +2025-03-10 13:54:47,727 - INFO - Reducing learning rate to 0.000010 +2025-03-10 13:54:47,913 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:54:49,396 - INFO - CLOSED long at 2069.7 | PnL: 0.33% | $0.46 +2025-03-10 13:54:49,397 - INFO - OPENED SHORT at 2069.7 | Stop loss: 2080.0634428571425 | Take profit: 2038.6320857142855 +2025-03-10 13:54:49,457 - INFO - CLOSED short at 2070.4 | PnL: -0.03% | $-0.27 +2025-03-10 13:54:49,457 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.033057142857 | Take profit: 2101.4784142857143 +2025-03-10 13:54:50,438 - INFO - CLOSED long at 2068.5 | PnL: -0.09% | $-0.38 +2025-03-10 13:54:50,439 - INFO - OPENED SHORT at 2068.5 | Stop loss: 2078.857442857143 | Take profit: 2037.4500857142857 +2025-03-10 13:54:50,458 - INFO - CLOSED short at 2068.69 | PnL: -0.01% | $-0.22 +2025-03-10 13:54:50,459 - INFO - OPENED LONG at 2068.69 | Stop loss: 2058.331607142857 | Take profit: 2099.742764285714 +2025-03-10 13:54:51,928 - INFO - CLOSED long at 2064.79 | PnL: -0.19% | $-0.57 +2025-03-10 13:54:51,928 - INFO - OPENED SHORT at 2064.79 | Stop loss: 2075.128892857143 | Take profit: 2033.7957357142857 +2025-03-10 13:54:51,950 - INFO - CLOSED short at 2065.89 | PnL: -0.05% | $-0.30 +2025-03-10 13:54:51,950 - INFO - OPENED LONG at 2065.89 | Stop loss: 2055.545607142857 | Take profit: 2096.900764285714 +2025-03-10 13:54:52,267 - INFO - CLOSED long at 2058.89 | PnL: -0.34% | $-0.86 +2025-03-10 13:54:52,268 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.1993928571424 | Take profit: 2027.9842357142857 +2025-03-10 13:54:52,308 - INFO - CLOSED short at 2059.96 | PnL: -0.05% | $-0.30 +2025-03-10 13:54:52,308 - INFO - OPENED LONG at 2059.96 | Stop loss: 2049.645257142857 | Take profit: 2090.881814285714 +2025-03-10 13:54:53,455 - INFO - CLOSED long at 2069.03 | PnL: 0.44% | $0.66 +2025-03-10 13:54:53,501 - INFO - OPENED LONG at 2067.44 | Stop loss: 2057.087857142857 | Take profit: 2098.4740142857145 +2025-03-10 13:54:53,657 - INFO - CLOSED long at 2065.7 | PnL: -0.08% | $-0.36 +2025-03-10 13:54:53,657 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.0434428571425 | Take profit: 2034.6920857142857 +2025-03-10 13:54:53,684 - INFO - CLOSED short at 2065.66 | PnL: 0.00% | $-0.19 +2025-03-10 13:54:53,684 - INFO - OPENED LONG at 2065.66 | Stop loss: 2055.316757142857 | Take profit: 2096.6673142857144 +2025-03-10 13:54:54,001 - INFO - CLOSED long at 2065.31 | PnL: -0.02% | $-0.23 +2025-03-10 13:54:54,001 - INFO - OPENED SHORT at 2065.31 | Stop loss: 2075.651492857143 | Take profit: 2034.3079357142858 +2025-03-10 13:54:54,022 - INFO - CLOSED short at 2066.8 | PnL: -0.07% | $-0.33 +2025-03-10 13:54:54,022 - INFO - OPENED LONG at 2066.8 | Stop loss: 2056.4510571428573 | Take profit: 2097.8244142857143 +2025-03-10 13:54:55,884 - INFO - STOP LOSS hit for long at 2056.4510571428573 | PnL: -0.50% | $-1.16 +2025-03-10 13:54:55,912 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.9490071428572 | Take profit: 2079.9705642857143 +2025-03-10 13:54:56,687 - INFO - CLOSED long at 2074.05 | PnL: 1.21% | $2.12 +2025-03-10 13:54:56,688 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4351928571427 | Take profit: 2042.9168357142858 +2025-03-10 13:54:56,711 - INFO - CLOSED short at 2072.99 | PnL: 0.05% | $-0.10 +2025-03-10 13:54:56,711 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.610107142857 | Take profit: 2104.107264285714 +2025-03-10 13:54:56,929 - INFO - TAKE PROFIT hit for long at 2104.107264285714 | PnL: 1.50% | $2.73 +2025-03-10 13:54:56,977 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.827357142857 | Take profit: 2171.655514285714 +2025-03-10 13:54:57,210 - INFO - CLOSED long at 2134.78 | PnL: -0.22% | $-0.65 +2025-03-10 13:54:57,236 - INFO - OPENED LONG at 2126.99 | Stop loss: 2116.340107142857 | Take profit: 2158.9172642857143 +2025-03-10 13:54:57,558 - INFO - STOP LOSS hit for long at 2116.340107142857 | PnL: -0.50% | $-1.19 +2025-03-10 13:54:57,600 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032057142857 | Take profit: 2142.281414285714 +2025-03-10 13:54:58,025 - INFO - STOP LOSS hit for long at 2100.032057142857 | PnL: -0.50% | $-1.18 +2025-03-10 13:54:58,046 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0174071428573 | Take profit: 2131.0453642857146 +2025-03-10 13:54:58,723 - INFO - STOP LOSS hit for long at 2089.0174071428573 | PnL: -0.50% | $-1.17 +2025-03-10 13:54:58,746 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848657142857 | Take profit: 2114.551614285714 +2025-03-10 13:55:00,595 - INFO - CLOSED long at 2113.0 | PnL: 1.43% | $2.54 +2025-03-10 13:55:00,595 - INFO - OPENED SHORT at 2113.0 | Stop loss: 2123.579942857143 | Take profit: 2081.2825857142857 +2025-03-10 13:55:00,642 - INFO - CLOSED short at 2115.26 | PnL: -0.11% | $-0.41 +2025-03-10 13:55:00,642 - INFO - OPENED LONG at 2115.26 | Stop loss: 2104.6687571428574 | Take profit: 2147.0113142857144 +2025-03-10 13:55:01,151 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.70, Avg Loss=$-0.55 +2025-03-10 13:55:01,152 - INFO - Episode 43: Reward=82.30, Balance=$98.66, Win Rate=21.7%, Trades=23, Episode PnL=$-4.06, Total PnL=$-250.84, Max Drawdown=4.2%, Pred Accuracy=99.7% +2025-03-10 13:55:01,153 - INFO - Reducing learning rate to 0.000010 +2025-03-10 13:55:01,340 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:55:04,332 - INFO - CLOSED long at 2066.15 | PnL: 0.16% | $0.12 +2025-03-10 13:55:04,332 - INFO - OPENED SHORT at 2066.15 | Stop loss: 2076.4956928571432 | Take profit: 2035.1353357142857 +2025-03-10 13:55:04,385 - INFO - CLOSED short at 2065.26 | PnL: 0.04% | $-0.11 +2025-03-10 13:55:04,386 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.9187571428574 | Take profit: 2096.2613142857144 +2025-03-10 13:55:04,545 - INFO - CLOSED long at 2061.3 | PnL: -0.19% | $-0.58 +2025-03-10 13:55:04,573 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.2571071428574 | Take profit: 2094.5662642857146 +2025-03-10 13:55:06,109 - INFO - CLOSED long at 2054.89 | PnL: -0.42% | $-1.03 +2025-03-10 13:55:06,109 - INFO - OPENED SHORT at 2054.89 | Stop loss: 2065.179392857143 | Take profit: 2024.0442357142856 +2025-03-10 13:55:06,135 - INFO - CLOSED short at 2054.83 | PnL: 0.00% | $-0.19 +2025-03-10 13:55:06,135 - INFO - OPENED LONG at 2054.83 | Stop loss: 2044.540907142857 | Take profit: 2085.674864285714 +2025-03-10 13:55:06,162 - INFO - CLOSED long at 2056.71 | PnL: 0.09% | $-0.02 +2025-03-10 13:55:06,162 - INFO - OPENED SHORT at 2056.71 | Stop loss: 2067.0084928571428 | Take profit: 2025.8369357142856 +2025-03-10 13:55:06,186 - INFO - CLOSED short at 2058.15 | PnL: -0.07% | $-0.33 +2025-03-10 13:55:06,186 - INFO - OPENED LONG at 2058.15 | Stop loss: 2047.8443071428574 | Take profit: 2089.0446642857146 +2025-03-10 13:55:08,352 - INFO - CLOSED long at 2076.9 | PnL: 0.91% | $1.58 +2025-03-10 13:55:08,353 - INFO - OPENED SHORT at 2076.9 | Stop loss: 2087.299442857143 | Take profit: 2045.7240857142858 +2025-03-10 13:55:08,394 - INFO - CLOSED short at 2075.61 | PnL: 0.06% | $-0.07 +2025-03-10 13:55:08,394 - INFO - OPENED LONG at 2075.61 | Stop loss: 2065.2170071428573 | Take profit: 2106.7665642857146 +2025-03-10 13:55:08,918 - INFO - STOP LOSS hit for long at 2065.2170071428573 | PnL: -0.50% | $-1.19 +2025-03-10 13:55:08,941 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.744607142857 | Take profit: 2097.103764285714 +2025-03-10 13:55:09,357 - INFO - CLOSED long at 2056.77 | PnL: -0.45% | $-1.07 +2025-03-10 13:55:09,382 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.7300071428574 | Take profit: 2083.8275642857143 +2025-03-10 13:55:10,493 - INFO - CLOSED long at 2074.9 | PnL: 1.07% | $1.86 +2025-03-10 13:55:10,519 - INFO - OPENED LONG at 2076.08 | Stop loss: 2065.6846571428573 | Take profit: 2107.2436142857146 +2025-03-10 13:55:10,635 - INFO - TAKE PROFIT hit for long at 2107.2436142857146 | PnL: 1.50% | $2.75 +2025-03-10 13:55:10,659 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.827357142857 | Take profit: 2171.655514285714 +2025-03-10 13:55:10,939 - INFO - STOP LOSS hit for long at 2128.827357142857 | PnL: -0.50% | $-1.21 +2025-03-10 13:55:10,963 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.6485571428575 | Take profit: 2159.2319142857145 +2025-03-10 13:55:11,262 - INFO - STOP LOSS hit for long at 2116.6485571428575 | PnL: -0.50% | $-1.20 +2025-03-10 13:55:11,303 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.877907142857 | Take profit: 2139.063864285714 +2025-03-10 13:55:11,453 - INFO - CLOSED long at 2112.99 | PnL: 0.26% | $0.32 +2025-03-10 13:55:11,496 - INFO - OPENED LONG at 2116.48 | Stop loss: 2105.882657142857 | Take profit: 2148.249614285714 +2025-03-10 13:55:11,703 - INFO - STOP LOSS hit for long at 2105.882657142857 | PnL: -0.50% | $-1.19 +2025-03-10 13:55:11,726 - INFO - OPENED LONG at 2100.5 | Stop loss: 2089.982557142857 | Take profit: 2132.029914285714 +2025-03-10 13:55:12,441 - INFO - STOP LOSS hit for long at 2089.982557142857 | PnL: -0.50% | $-1.17 +2025-03-10 13:55:12,484 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848657142857 | Take profit: 2114.551614285714 +2025-03-10 13:55:13,032 - INFO - CLOSED long at 2087.0 | PnL: 0.18% | $0.15 +2025-03-10 13:55:13,058 - INFO - OPENED LONG at 2087.47 | Stop loss: 2077.017707142857 | Take profit: 2118.804464285714 +2025-03-10 13:55:13,743 - INFO - CLOSED long at 2105.83 | PnL: 0.88% | $1.51 +2025-03-10 13:55:13,768 - INFO - OPENED LONG at 2103.64 | Stop loss: 2093.106857142857 | Take profit: 2135.217014285714 +2025-03-10 13:55:13,924 - INFO - CLOSED long at 2102.7 | PnL: -0.04% | $-0.28 +2025-03-10 13:55:13,925 - INFO - OPENED SHORT at 2102.7 | Stop loss: 2113.228442857143 | Take profit: 2071.1370857142856 +2025-03-10 13:55:13,974 - INFO - CLOSED short at 2102.0 | PnL: 0.03% | $-0.13 +2025-03-10 13:55:13,974 - INFO - OPENED LONG at 2102.0 | Stop loss: 2091.475057142857 | Take profit: 2133.5524142857143 +2025-03-10 13:55:14,770 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.18, Avg Loss=$-0.65 +2025-03-10 13:55:14,771 - INFO - Episode 44: Reward=89.74, Balance=$98.51, Win Rate=31.8%, Trades=22, Episode PnL=$-1.85, Total PnL=$-252.34, Max Drawdown=4.4%, Pred Accuracy=99.7% +2025-03-10 13:55:14,771 - INFO - Reducing learning rate to 0.000010 +2025-03-10 13:55:15,051 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:55:16,015 - INFO - CLOSED long at 2070.79 | PnL: 0.38% | $0.56 +2025-03-10 13:55:16,016 - INFO - OPENED SHORT at 2070.79 | Stop loss: 2081.1588928571427 | Take profit: 2039.7057357142855 +2025-03-10 13:55:16,038 - INFO - CLOSED short at 2070.28 | PnL: 0.02% | $-0.15 +2025-03-10 13:55:16,039 - INFO - OPENED LONG at 2070.28 | Stop loss: 2059.913657142857 | Take profit: 2101.3566142857144 +2025-03-10 13:55:16,823 - INFO - CLOSED long at 2072.75 | PnL: 0.12% | $0.04 +2025-03-10 13:55:16,848 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.729507142857 | Take profit: 2104.2290642857142 +2025-03-10 13:55:18,185 - INFO - STOP LOSS hit for long at 2062.729507142857 | PnL: -0.50% | $-1.20 +2025-03-10 13:55:18,226 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.456157142857 | Take profit: 2092.729114285715 +2025-03-10 13:55:20,080 - INFO - CLOSED long at 2066.34 | PnL: 0.22% | $0.24 +2025-03-10 13:55:20,080 - INFO - OPENED SHORT at 2066.34 | Stop loss: 2076.686642857143 | Take profit: 2035.3224857142857 +2025-03-10 13:55:20,120 - INFO - CLOSED short at 2066.79 | PnL: -0.02% | $-0.24 +2025-03-10 13:55:20,121 - INFO - OPENED LONG at 2066.79 | Stop loss: 2056.441107142857 | Take profit: 2097.814264285714 +2025-03-10 13:55:20,373 - INFO - CLOSED long at 2072.6 | PnL: 0.28% | $0.36 +2025-03-10 13:55:20,374 - INFO - OPENED SHORT at 2072.6 | Stop loss: 2082.977942857143 | Take profit: 2041.4885857142856 +2025-03-10 13:55:20,395 - INFO - CLOSED short at 2071.04 | PnL: 0.08% | $-0.05 +2025-03-10 13:55:20,395 - INFO - OPENED LONG at 2071.04 | Stop loss: 2060.669857142857 | Take profit: 2102.1280142857145 +2025-03-10 13:55:21,839 - INFO - CLOSED long at 2075.32 | PnL: 0.21% | $0.21 +2025-03-10 13:55:21,881 - INFO - OPENED LONG at 2075.29 | Stop loss: 2064.898607142857 | Take profit: 2106.4417642857143 +2025-03-10 13:55:21,923 - INFO - CLOSED long at 2075.61 | PnL: 0.02% | $-0.17 +2025-03-10 13:55:21,923 - INFO - OPENED SHORT at 2075.61 | Stop loss: 2086.002992857143 | Take profit: 2044.453435714286 +2025-03-10 13:55:21,948 - INFO - CLOSED short at 2074.0 | PnL: 0.08% | $-0.04 +2025-03-10 13:55:21,949 - INFO - OPENED LONG at 2074.0 | Stop loss: 2063.615057142857 | Take profit: 2105.1324142857143 +2025-03-10 13:55:22,468 - INFO - STOP LOSS hit for long at 2063.615057142857 | PnL: -0.50% | $-1.19 +2025-03-10 13:55:22,495 - INFO - OPENED LONG at 2062.34 | Stop loss: 2052.0133571428573 | Take profit: 2093.2975142857144 +2025-03-10 13:55:22,884 - INFO - STOP LOSS hit for long at 2052.0133571428573 | PnL: -0.50% | $-1.17 +2025-03-10 13:55:22,920 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.237557142857 | Take profit: 2080.264914285714 +2025-03-10 13:55:23,116 - INFO - CLOSED long at 2062.83 | PnL: 0.65% | $1.06 +2025-03-10 13:55:23,116 - INFO - OPENED SHORT at 2062.83 | Stop loss: 2073.1590928571427 | Take profit: 2031.8651357142855 +2025-03-10 13:55:23,144 - INFO - CLOSED short at 2063.9 | PnL: -0.05% | $-0.30 +2025-03-10 13:55:23,144 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.5655571428574 | Take profit: 2094.8809142857144 +2025-03-10 13:55:23,645 - INFO - CLOSED long at 2070.41 | PnL: 0.32% | $0.42 +2025-03-10 13:55:23,687 - INFO - OPENED LONG at 2074.05 | Stop loss: 2063.664807142857 | Take profit: 2105.183164285714 +2025-03-10 13:55:24,000 - INFO - TAKE PROFIT hit for long at 2105.183164285714 | PnL: 1.50% | $2.74 +2025-03-10 13:55:24,023 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.827357142857 | Take profit: 2171.655514285714 +2025-03-10 13:55:24,312 - INFO - STOP LOSS hit for long at 2128.827357142857 | PnL: -0.50% | $-1.21 +2025-03-10 13:55:24,332 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.6485571428575 | Take profit: 2159.2319142857145 +2025-03-10 13:55:24,600 - INFO - STOP LOSS hit for long at 2116.6485571428575 | PnL: -0.50% | $-1.19 +2025-03-10 13:55:24,637 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.877907142857 | Take profit: 2139.063864285714 +2025-03-10 13:55:25,113 - INFO - STOP LOSS hit for long at 2096.877907142857 | PnL: -0.50% | $-1.18 +2025-03-10 13:55:25,136 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0174071428573 | Take profit: 2131.0453642857146 +2025-03-10 13:55:25,728 - INFO - STOP LOSS hit for long at 2089.0174071428573 | PnL: -0.50% | $-1.16 +2025-03-10 13:55:25,775 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848657142857 | Take profit: 2114.551614285714 +2025-03-10 13:55:27,623 - INFO - TAKE PROFIT hit for long at 2114.551614285714 | PnL: 1.50% | $2.68 +2025-03-10 13:55:27,648 - INFO - OPENED LONG at 2113.61 | Stop loss: 2103.027007142857 | Take profit: 2145.3365642857143 +2025-03-10 13:55:28,073 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.92, Avg Loss=$-0.71 +2025-03-10 13:55:28,074 - INFO - Episode 45: Reward=95.80, Balance=$99.06, Win Rate=40.9%, Trades=22, Episode PnL=$-2.99, Total PnL=$-253.28, Max Drawdown=4.7%, Pred Accuracy=99.7% +2025-03-10 13:55:28,074 - INFO - Reducing learning rate to 0.000010 +2025-03-10 13:55:28,410 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:55:28,519 - INFO - CLOSED long at 2057.94 | PnL: -0.24% | $-0.68 +2025-03-10 13:55:28,519 - INFO - OPENED SHORT at 2057.94 | Stop loss: 2068.244642857143 | Take profit: 2027.0484857142858 +2025-03-10 13:55:28,539 - INFO - CLOSED short at 2058.11 | PnL: -0.01% | $-0.21 +2025-03-10 13:55:28,539 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.8045071428571 | Take profit: 2089.004064285715 +2025-03-10 13:55:28,641 - INFO - CLOSED long at 2070.58 | PnL: 0.61% | $1.00 +2025-03-10 13:55:28,642 - INFO - OPENED SHORT at 2070.58 | Stop loss: 2080.9478428571424 | Take profit: 2039.4988857142857 +2025-03-10 13:55:28,662 - INFO - CLOSED short at 2068.11 | PnL: 0.12% | $0.04 +2025-03-10 13:55:28,662 - INFO - OPENED LONG at 2068.11 | Stop loss: 2057.754507142857 | Take profit: 2099.1540642857144 +2025-03-10 13:55:29,164 - INFO - CLOSED long at 2072.8 | PnL: 0.23% | $0.25 +2025-03-10 13:55:29,165 - INFO - OPENED SHORT at 2072.8 | Stop loss: 2083.178942857143 | Take profit: 2041.685585714286 +2025-03-10 13:55:29,202 - INFO - CLOSED short at 2070.79 | PnL: 0.10% | $-0.01 +2025-03-10 13:55:29,203 - INFO - OPENED LONG at 2070.79 | Stop loss: 2060.421107142857 | Take profit: 2101.874264285714 +2025-03-10 13:55:29,748 - INFO - CLOSED long at 2068.51 | PnL: -0.11% | $-0.42 +2025-03-10 13:55:29,770 - INFO - OPENED LONG at 2068.59 | Stop loss: 2058.2321071428573 | Take profit: 2099.6412642857144 +2025-03-10 13:55:30,230 - INFO - CLOSED long at 2069.35 | PnL: 0.04% | $-0.13 +2025-03-10 13:55:30,231 - INFO - OPENED SHORT at 2069.35 | Stop loss: 2079.7116928571427 | Take profit: 2038.2873357142855 +2025-03-10 13:55:30,253 - INFO - CLOSED short at 2068.32 | PnL: 0.05% | $-0.10 +2025-03-10 13:55:30,253 - INFO - OPENED LONG at 2068.32 | Stop loss: 2057.9634571428574 | Take profit: 2099.3672142857145 +2025-03-10 13:55:32,791 - INFO - STOP LOSS hit for long at 2057.9634571428574 | PnL: -0.50% | $-1.19 +2025-03-10 13:55:32,873 - INFO - OPENED LONG at 2056.28 | Stop loss: 2045.9836571428575 | Take profit: 2087.146614285715 +2025-03-10 13:55:33,357 - INFO - CLOSED long at 2066.34 | PnL: 0.49% | $0.76 +2025-03-10 13:55:33,358 - INFO - OPENED SHORT at 2066.34 | Stop loss: 2076.686642857143 | Take profit: 2035.3224857142857 +2025-03-10 13:55:33,381 - INFO - CLOSED short at 2066.79 | PnL: -0.02% | $-0.24 +2025-03-10 13:55:33,381 - INFO - OPENED LONG at 2066.79 | Stop loss: 2056.441107142857 | Take profit: 2097.814264285714 +2025-03-10 13:55:34,506 - INFO - CLOSED long at 2066.8 | PnL: 0.00% | $-0.20 +2025-03-10 13:55:34,507 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.1489428571426 | Take profit: 2035.7755857142859 +2025-03-10 13:55:34,530 - INFO - CLOSED short at 2066.5 | PnL: 0.01% | $-0.17 +2025-03-10 13:55:34,530 - INFO - OPENED LONG at 2066.5 | Stop loss: 2056.152557142857 | Take profit: 2097.519914285714 +2025-03-10 13:55:36,285 - INFO - STOP LOSS hit for long at 2056.152557142857 | PnL: -0.50% | $-1.18 +2025-03-10 13:55:36,332 - INFO - OPENED SHORT at 2049.21 | Stop loss: 2059.470992857143 | Take profit: 2018.4494357142858 +2025-03-10 13:55:36,383 - INFO - CLOSED short at 2049.5 | PnL: -0.01% | $-0.22 +2025-03-10 13:55:36,384 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.237557142857 | Take profit: 2080.264914285714 +2025-03-10 13:55:37,303 - INFO - CLOSED long at 2074.9 | PnL: 1.24% | $2.20 +2025-03-10 13:55:37,303 - INFO - OPENED SHORT at 2074.9 | Stop loss: 2085.2894428571426 | Take profit: 2043.7540857142858 +2025-03-10 13:55:37,324 - INFO - CLOSED short at 2076.08 | PnL: -0.06% | $-0.31 +2025-03-10 13:55:37,324 - INFO - OPENED LONG at 2076.08 | Stop loss: 2065.6846571428573 | Take profit: 2107.2436142857146 +2025-03-10 13:55:37,429 - INFO - TAKE PROFIT hit for long at 2107.2436142857146 | PnL: 1.50% | $2.76 +2025-03-10 13:55:37,469 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.1061571428572 | Take profit: 2163.7791142857145 +2025-03-10 13:55:37,775 - INFO - STOP LOSS hit for long at 2121.1061571428572 | PnL: -0.50% | $-1.22 +2025-03-10 13:55:37,797 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.534307142857 | Take profit: 2151.9746642857144 +2025-03-10 13:55:38,042 - INFO - STOP LOSS hit for long at 2109.534307142857 | PnL: -0.50% | $-1.20 +2025-03-10 13:55:38,087 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032057142857 | Take profit: 2142.281414285714 +2025-03-10 13:55:38,529 - INFO - STOP LOSS hit for long at 2100.032057142857 | PnL: -0.50% | $-1.19 +2025-03-10 13:55:38,553 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0174071428573 | Take profit: 2131.0453642857146 +2025-03-10 13:55:38,998 - INFO - CLOSED long at 2093.46 | PnL: -0.29% | $-0.76 +2025-03-10 13:55:38,998 - INFO - OPENED SHORT at 2093.46 | Stop loss: 2103.942242857143 | Take profit: 2062.0356857142856 +2025-03-10 13:55:39,024 - INFO - CLOSED short at 2093.33 | PnL: 0.01% | $-0.18 +2025-03-10 13:55:39,025 - INFO - OPENED LONG at 2093.33 | Stop loss: 2082.848407142857 | Take profit: 2124.752364285714 +2025-03-10 13:55:39,330 - INFO - STOP LOSS hit for long at 2082.848407142857 | PnL: -0.50% | $-1.16 +2025-03-10 13:55:39,355 - INFO - OPENED LONG at 2081.49 | Stop loss: 2071.067607142857 | Take profit: 2112.734764285714 +2025-03-10 13:55:40,830 - INFO - CLOSED long at 2107.25 | PnL: 1.24% | $2.17 +2025-03-10 13:55:40,879 - INFO - OPENED LONG at 2106.28 | Stop loss: 2095.7336571428573 | Take profit: 2137.8966142857143 +2025-03-10 13:55:40,920 - INFO - CLOSED long at 2112.28 | PnL: 0.28% | $0.36 +2025-03-10 13:55:40,943 - INFO - OPENED LONG at 2110.87 | Stop loss: 2100.300707142857 | Take profit: 2142.555464285714 +2025-03-10 13:55:41,532 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.19, Avg Loss=$-0.57 +2025-03-10 13:55:41,533 - INFO - Episode 46: Reward=88.64, Balance=$98.79, Win Rate=29.6%, Trades=27, Episode PnL=$-3.66, Total PnL=$-254.48, Max Drawdown=5.6%, Pred Accuracy=99.8% +2025-03-10 13:55:41,533 - INFO - Reducing learning rate to 0.000010 +2025-03-10 13:55:41,849 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:55:42,750 - INFO - CLOSED long at 2070.79 | PnL: 0.38% | $0.56 +2025-03-10 13:55:42,750 - INFO - OPENED SHORT at 2070.79 | Stop loss: 2081.1588928571427 | Take profit: 2039.7057357142855 +2025-03-10 13:55:42,769 - INFO - CLOSED short at 2070.28 | PnL: 0.02% | $-0.15 +2025-03-10 13:55:42,769 - INFO - OPENED LONG at 2070.28 | Stop loss: 2059.913657142857 | Take profit: 2101.3566142857144 +2025-03-10 13:55:42,790 - INFO - CLOSED long at 2068.02 | PnL: -0.11% | $-0.42 +2025-03-10 13:55:42,815 - INFO - OPENED LONG at 2067.2 | Stop loss: 2056.849057142857 | Take profit: 2098.2304142857142 +2025-03-10 13:55:44,059 - INFO - CLOSED long at 2067.89 | PnL: 0.03% | $-0.13 +2025-03-10 13:55:44,060 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.244392857143 | Take profit: 2036.8492357142854 +2025-03-10 13:55:44,086 - INFO - CLOSED short at 2068.58 | PnL: -0.03% | $-0.26 +2025-03-10 13:55:44,087 - INFO - OPENED LONG at 2068.58 | Stop loss: 2058.222157142857 | Take profit: 2099.6311142857144 +2025-03-10 13:55:45,084 - INFO - CLOSED long at 2061.3 | PnL: -0.35% | $-0.89 +2025-03-10 13:55:45,084 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.621442857143 | Take profit: 2030.358085714286 +2025-03-10 13:55:45,114 - INFO - CLOSED short at 2063.59 | PnL: -0.11% | $-0.41 +2025-03-10 13:55:45,115 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.2571071428574 | Take profit: 2094.5662642857146 +2025-03-10 13:55:45,600 - INFO - CLOSED long at 2061.8 | PnL: -0.09% | $-0.36 +2025-03-10 13:55:45,628 - INFO - OPENED LONG at 2064.7 | Stop loss: 2054.361557142857 | Take profit: 2095.6929142857143 +2025-03-10 13:55:46,939 - INFO - CLOSED long at 2066.79 | PnL: 0.10% | $0.00 +2025-03-10 13:55:46,981 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.978407142857 | Take profit: 2098.362364285714 +2025-03-10 13:55:47,815 - INFO - CLOSED long at 2066.38 | PnL: -0.05% | $-0.28 +2025-03-10 13:55:47,816 - INFO - OPENED SHORT at 2066.38 | Stop loss: 2076.726842857143 | Take profit: 2035.3618857142858 +2025-03-10 13:55:47,843 - INFO - CLOSED short at 2065.7 | PnL: 0.03% | $-0.13 +2025-03-10 13:55:47,844 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.356557142857 | Take profit: 2096.707914285714 +2025-03-10 13:55:47,867 - INFO - CLOSED long at 2065.66 | PnL: -0.00% | $-0.20 +2025-03-10 13:55:47,867 - INFO - OPENED SHORT at 2065.66 | Stop loss: 2076.003242857143 | Take profit: 2034.6526857142856 +2025-03-10 13:55:47,902 - INFO - CLOSED short at 2063.95 | PnL: 0.08% | $-0.03 +2025-03-10 13:55:47,903 - INFO - OPENED LONG at 2063.95 | Stop loss: 2053.615307142857 | Take profit: 2094.9316642857143 +2025-03-10 13:55:48,939 - INFO - CLOSED long at 2074.0 | PnL: 0.49% | $0.75 +2025-03-10 13:55:48,940 - INFO - OPENED SHORT at 2074.0 | Stop loss: 2084.384942857143 | Take profit: 2042.8675857142857 +2025-03-10 13:55:48,961 - INFO - CLOSED short at 2072.09 | PnL: 0.09% | $-0.02 +2025-03-10 13:55:48,961 - INFO - OPENED LONG at 2072.09 | Stop loss: 2061.7146071428574 | Take profit: 2103.1937642857147 +2025-03-10 13:55:49,509 - INFO - CLOSED long at 2066.1 | PnL: -0.29% | $-0.76 +2025-03-10 13:55:49,509 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.445442857143 | Take profit: 2035.0860857142857 +2025-03-10 13:55:49,552 - INFO - CLOSED short at 2065.06 | PnL: 0.05% | $-0.10 +2025-03-10 13:55:49,552 - INFO - OPENED LONG at 2065.06 | Stop loss: 2054.719757142857 | Take profit: 2096.058314285714 +2025-03-10 13:55:49,624 - INFO - CLOSED long at 2064.5 | PnL: -0.03% | $-0.25 +2025-03-10 13:55:49,624 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.837442857143 | Take profit: 2033.5100857142857 +2025-03-10 13:55:49,660 - INFO - CLOSED short at 2066.33 | PnL: -0.09% | $-0.36 +2025-03-10 13:55:49,661 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.9834071428572 | Take profit: 2097.3473642857143 +2025-03-10 13:55:49,754 - INFO - CLOSED long at 2059.2 | PnL: -0.35% | $-0.85 +2025-03-10 13:55:49,778 - INFO - OPENED LONG at 2058.09 | Stop loss: 2047.784607142857 | Take profit: 2088.9837642857146 +2025-03-10 13:55:49,956 - INFO - CLOSED long at 2051.99 | PnL: -0.30% | $-0.75 +2025-03-10 13:55:49,956 - INFO - OPENED SHORT at 2051.99 | Stop loss: 2062.2648928571425 | Take profit: 2021.1877357142855 +2025-03-10 13:55:49,999 - INFO - CLOSED short at 2058.3 | PnL: -0.31% | $-0.77 +2025-03-10 13:55:49,999 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9935571428573 | Take profit: 2089.1969142857147 +2025-03-10 13:55:50,070 - INFO - CLOSED long at 2057.11 | PnL: -0.06% | $-0.30 +2025-03-10 13:55:50,071 - INFO - OPENED SHORT at 2057.11 | Stop loss: 2067.4104928571433 | Take profit: 2026.2309357142858 +2025-03-10 13:55:50,094 - INFO - CLOSED short at 2057.89 | PnL: -0.04% | $-0.26 +2025-03-10 13:55:50,095 - INFO - OPENED LONG at 2057.89 | Stop loss: 2047.585607142857 | Take profit: 2088.7807642857138 +2025-03-10 13:55:50,231 - INFO - CLOSED long at 2065.12 | PnL: 0.35% | $0.47 +2025-03-10 13:55:50,231 - INFO - OPENED SHORT at 2065.12 | Stop loss: 2075.4605428571426 | Take profit: 2034.1207857142856 +2025-03-10 13:55:50,258 - INFO - CLOSED short at 2068.33 | PnL: -0.16% | $-0.48 +2025-03-10 13:55:50,258 - INFO - OPENED LONG at 2068.33 | Stop loss: 2057.973407142857 | Take profit: 2099.3773642857145 +2025-03-10 13:55:50,425 - INFO - CLOSED long at 2059.9 | PnL: -0.41% | $-0.94 +2025-03-10 13:55:50,425 - INFO - OPENED SHORT at 2059.9 | Stop loss: 2070.2144428571432 | Take profit: 2028.979085714286 +2025-03-10 13:55:50,472 - INFO - CLOSED short at 2060.7 | PnL: -0.04% | $-0.26 +2025-03-10 13:55:50,472 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3815571428568 | Take profit: 2091.632914285714 +2025-03-10 13:55:50,574 - INFO - CLOSED long at 2070.31 | PnL: 0.47% | $0.67 +2025-03-10 13:55:50,575 - INFO - OPENED SHORT at 2070.31 | Stop loss: 2080.676492857143 | Take profit: 2039.2329357142855 +2025-03-10 13:55:50,601 - INFO - CLOSED short at 2070.24 | PnL: 0.00% | $-0.18 +2025-03-10 13:55:50,601 - INFO - OPENED LONG at 2070.24 | Stop loss: 2059.873857142857 | Take profit: 2101.3160142857137 +2025-03-10 13:55:51,016 - INFO - TAKE PROFIT hit for long at 2101.3160142857137 | PnL: 1.50% | $2.58 +2025-03-10 13:55:51,041 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.031557142857 | Take profit: 2162.682914285714 +2025-03-10 13:55:51,465 - INFO - STOP LOSS hit for long at 2120.031557142857 | PnL: -0.50% | $-1.14 +2025-03-10 13:55:51,486 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.315407142857 | Take profit: 2151.751364285714 +2025-03-10 13:55:51,697 - INFO - STOP LOSS hit for long at 2109.315407142857 | PnL: -0.50% | $-1.13 +2025-03-10 13:55:51,725 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032057142857 | Take profit: 2142.281414285714 +2025-03-10 13:55:51,749 - INFO - CLOSED long at 2109.05 | PnL: -0.07% | $-0.32 +2025-03-10 13:55:51,750 - INFO - OPENED SHORT at 2109.05 | Stop loss: 2119.610192857143 | Take profit: 2077.3918357142857 +2025-03-10 13:55:51,773 - INFO - CLOSED short at 2112.09 | PnL: -0.14% | $-0.45 +2025-03-10 13:55:51,773 - INFO - OPENED LONG at 2112.09 | Stop loss: 2101.5146071428576 | Take profit: 2143.7937642857146 +2025-03-10 13:55:52,194 - INFO - STOP LOSS hit for long at 2101.5146071428576 | PnL: -0.50% | $-1.10 +2025-03-10 13:55:52,219 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.535057142857 | Take profit: 2121.3724142857145 +2025-03-10 13:55:52,937 - INFO - CLOSED long at 2083.28 | PnL: -0.32% | $-0.76 +2025-03-10 13:55:52,937 - INFO - OPENED SHORT at 2083.28 | Stop loss: 2093.7113428571433 | Take profit: 2052.008385714286 +2025-03-10 13:55:52,959 - INFO - CLOSED short at 2088.44 | PnL: -0.25% | $-0.63 +2025-03-10 13:55:52,959 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.982857142857 | Take profit: 2119.789014285714 +2025-03-10 13:55:54,219 - INFO - CLOSED long at 2105.2 | PnL: 0.80% | $1.26 +2025-03-10 13:55:54,244 - INFO - OPENED SHORT at 2103.52 | Stop loss: 2114.0525428571427 | Take profit: 2071.9447857142854 +2025-03-10 13:55:54,268 - INFO - CLOSED short at 2104.4 | PnL: -0.04% | $-0.26 +2025-03-10 13:55:54,269 - INFO - OPENED LONG at 2104.4 | Stop loss: 2093.863057142857 | Take profit: 2135.9884142857145 +2025-03-10 13:55:54,451 - INFO - CLOSED long at 2102.0 | PnL: -0.11% | $-0.39 +2025-03-10 13:55:54,494 - INFO - OPENED LONG at 2103.41 | Stop loss: 2092.878007142857 | Take profit: 2134.9835642857142 +2025-03-10 13:55:54,895 - INFO - CLOSED long at 2112.26 | PnL: 0.42% | $0.58 +2025-03-10 13:55:54,896 - INFO - OPENED SHORT at 2112.26 | Stop loss: 2122.836242857143 | Take profit: 2080.5536857142856 +2025-03-10 13:55:54,919 - INFO - CLOSED short at 2110.99 | PnL: 0.06% | $-0.07 +2025-03-10 13:55:54,919 - INFO - OPENED LONG at 2110.99 | Stop loss: 2100.420107142857 | Take profit: 2142.677264285714 +2025-03-10 13:55:55,234 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.86, Avg Loss=$-0.45 +2025-03-10 13:55:55,234 - INFO - Episode 47: Reward=58.59, Balance=$91.08, Win Rate=18.6%, Trades=43, Episode PnL=$-6.36, Total PnL=$-263.40, Max Drawdown=9.4%, Pred Accuracy=99.7% +2025-03-10 13:55:55,235 - INFO - Reducing learning rate to 0.000010 +2025-03-10 13:55:55,456 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:55:55,600 - INFO - CLOSED long at 2061.79 | PnL: -0.05% | $-0.30 +2025-03-10 13:55:55,600 - INFO - OPENED SHORT at 2061.79 | Stop loss: 2072.1138928571427 | Take profit: 2030.8407357142858 +2025-03-10 13:55:55,620 - INFO - CLOSED short at 2061.18 | PnL: 0.03% | $-0.14 +2025-03-10 13:55:55,621 - INFO - OPENED LONG at 2061.18 | Stop loss: 2050.859157142857 | Take profit: 2092.120114285714 +2025-03-10 13:55:56,013 - INFO - CLOSED long at 2071.44 | PnL: 0.50% | $0.79 +2025-03-10 13:55:56,036 - INFO - OPENED LONG at 2073.73 | Stop loss: 2063.346407142857 | Take profit: 2104.8583642857143 +2025-03-10 13:55:56,386 - INFO - CLOSED long at 2067.2 | PnL: -0.31% | $-0.83 +2025-03-10 13:55:56,386 - INFO - OPENED SHORT at 2067.2 | Stop loss: 2077.5509428571427 | Take profit: 2036.1695857142856 +2025-03-10 13:55:56,407 - INFO - CLOSED short at 2070.36 | PnL: -0.15% | $-0.50 +2025-03-10 13:55:56,407 - INFO - OPENED LONG at 2070.36 | Stop loss: 2059.993257142857 | Take profit: 2101.437814285714 +2025-03-10 13:55:56,462 - INFO - CLOSED long at 2070.7 | PnL: 0.02% | $-0.16 +2025-03-10 13:55:56,463 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.0684428571426 | Take profit: 2039.6170857142854 +2025-03-10 13:55:56,509 - INFO - CLOSED short at 2069.34 | PnL: 0.07% | $-0.07 +2025-03-10 13:55:56,510 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.978357142857 | Take profit: 2100.4025142857145 +2025-03-10 13:55:57,171 - INFO - CLOSED long at 2072.75 | PnL: 0.16% | $0.13 +2025-03-10 13:55:57,172 - INFO - OPENED SHORT at 2072.75 | Stop loss: 2083.128692857143 | Take profit: 2041.6363357142857 +2025-03-10 13:55:57,197 - INFO - CLOSED short at 2073.11 | PnL: -0.02% | $-0.23 +2025-03-10 13:55:57,197 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.729507142857 | Take profit: 2104.2290642857142 +2025-03-10 13:55:58,190 - INFO - CLOSED long at 2067.86 | PnL: -0.25% | $-0.69 +2025-03-10 13:55:58,235 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.053057142857 | Take profit: 2097.4184142857143 +2025-03-10 13:55:58,277 - INFO - CLOSED long at 2066.1 | PnL: -0.01% | $-0.22 +2025-03-10 13:55:58,307 - INFO - OPENED LONG at 2065.28 | Stop loss: 2054.9386571428577 | Take profit: 2096.2816142857146 +2025-03-10 13:55:59,056 - INFO - CLOSED long at 2062.89 | PnL: -0.12% | $-0.42 +2025-03-10 13:55:59,056 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.219392857143 | Take profit: 2031.9242357142857 +2025-03-10 13:55:59,088 - INFO - CLOSED short at 2064.5 | PnL: -0.08% | $-0.34 +2025-03-10 13:55:59,088 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.162557142857 | Take profit: 2095.4899142857143 +2025-03-10 13:55:59,156 - INFO - CLOSED long at 2060.9 | PnL: -0.17% | $-0.53 +2025-03-10 13:55:59,156 - INFO - OPENED SHORT at 2060.9 | Stop loss: 2071.219442857143 | Take profit: 2029.9640857142858 +2025-03-10 13:55:59,181 - INFO - CLOSED short at 2060.65 | PnL: 0.01% | $-0.17 +2025-03-10 13:55:59,181 - INFO - OPENED LONG at 2060.65 | Stop loss: 2050.3318071428575 | Take profit: 2091.5821642857145 +2025-03-10 13:56:00,701 - INFO - CLOSED long at 2065.69 | PnL: 0.24% | $0.28 +2025-03-10 13:56:00,702 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.033392857143 | Take profit: 2034.6822357142858 +2025-03-10 13:56:00,729 - INFO - CLOSED short at 2069.79 | PnL: -0.20% | $-0.57 +2025-03-10 13:56:00,730 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.426107142857 | Take profit: 2100.8592642857143 +2025-03-10 13:56:01,129 - INFO - CLOSED long at 2067.44 | PnL: -0.11% | $-0.41 +2025-03-10 13:56:01,153 - INFO - OPENED LONG at 2068.79 | Stop loss: 2058.431107142857 | Take profit: 2099.8442642857144 +2025-03-10 13:56:01,383 - INFO - CLOSED long at 2063.97 | PnL: -0.23% | $-0.63 +2025-03-10 13:56:01,384 - INFO - OPENED SHORT at 2063.97 | Stop loss: 2074.3047928571423 | Take profit: 2032.9880357142854 +2025-03-10 13:56:01,423 - INFO - CLOSED short at 2064.5 | PnL: -0.03% | $-0.24 +2025-03-10 13:56:01,423 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.162557142857 | Take profit: 2095.4899142857143 +2025-03-10 13:56:01,569 - INFO - CLOSED long at 2065.29 | PnL: 0.04% | $-0.12 +2025-03-10 13:56:01,570 - INFO - OPENED SHORT at 2065.29 | Stop loss: 2075.631392857143 | Take profit: 2034.2882357142857 +2025-03-10 13:56:01,590 - INFO - CLOSED short at 2065.31 | PnL: -0.00% | $-0.19 +2025-03-10 13:56:01,591 - INFO - OPENED LONG at 2065.31 | Stop loss: 2054.968507142857 | Take profit: 2096.3120642857143 +2025-03-10 13:56:02,024 - INFO - CLOSED long at 2069.78 | PnL: 0.22% | $0.22 +2025-03-10 13:56:02,024 - INFO - OPENED SHORT at 2069.78 | Stop loss: 2080.143842857143 | Take profit: 2038.710885714286 +2025-03-10 13:56:02,047 - INFO - CLOSED short at 2071.61 | PnL: -0.09% | $-0.35 +2025-03-10 13:56:02,047 - INFO - OPENED LONG at 2071.61 | Stop loss: 2061.2370071428572 | Take profit: 2102.706564285714 +2025-03-10 13:56:02,136 - INFO - CLOSED long at 2074.35 | PnL: 0.13% | $0.06 +2025-03-10 13:56:02,136 - INFO - OPENED SHORT at 2074.35 | Stop loss: 2084.7366928571428 | Take profit: 2043.2123357142855 +2025-03-10 13:56:02,191 - INFO - CLOSED short at 2073.27 | PnL: 0.05% | $-0.09 +2025-03-10 13:56:02,191 - INFO - OPENED LONG at 2073.27 | Stop loss: 2062.888707142857 | Take profit: 2104.3914642857144 +2025-03-10 13:56:02,329 - INFO - CLOSED long at 2076.9 | PnL: 0.18% | $0.14 +2025-03-10 13:56:02,330 - INFO - OPENED SHORT at 2076.9 | Stop loss: 2087.299442857143 | Take profit: 2045.7240857142858 +2025-03-10 13:56:02,385 - INFO - CLOSED short at 2074.0 | PnL: 0.14% | $0.07 +2025-03-10 13:56:02,386 - INFO - OPENED LONG at 2074.0 | Stop loss: 2063.615057142857 | Take profit: 2105.1324142857143 +2025-03-10 13:56:02,524 - INFO - CLOSED long at 2067.0 | PnL: -0.34% | $-0.82 +2025-03-10 13:56:02,525 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.3499428571427 | Take profit: 2035.9725857142857 +2025-03-10 13:56:02,634 - INFO - CLOSED short at 2066.4 | PnL: 0.03% | $-0.13 +2025-03-10 13:56:02,635 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.053057142857 | Take profit: 2097.4184142857143 +2025-03-10 13:56:03,101 - INFO - CLOSED long at 2063.98 | PnL: -0.12% | $-0.40 +2025-03-10 13:56:03,101 - INFO - OPENED SHORT at 2063.98 | Stop loss: 2074.314842857143 | Take profit: 2032.9978857142858 +2025-03-10 13:56:03,124 - INFO - CLOSED short at 2066.1 | PnL: -0.10% | $-0.37 +2025-03-10 13:56:03,125 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.754557142857 | Take profit: 2097.113914285714 +2025-03-10 13:56:03,363 - INFO - CLOSED long at 2059.2 | PnL: -0.33% | $-0.80 +2025-03-10 13:56:03,364 - INFO - OPENED SHORT at 2059.2 | Stop loss: 2069.5109428571427 | Take profit: 2028.2895857142855 +2025-03-10 13:56:03,418 - INFO - CLOSED short at 2058.09 | PnL: 0.05% | $-0.08 +2025-03-10 13:56:03,419 - INFO - OPENED LONG at 2058.09 | Stop loss: 2047.784607142857 | Take profit: 2088.9837642857146 +2025-03-10 13:56:03,491 - INFO - CLOSED long at 2056.77 | PnL: -0.06% | $-0.30 +2025-03-10 13:56:03,515 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.7300071428574 | Take profit: 2083.8275642857143 +2025-03-10 13:56:03,564 - INFO - CLOSED long at 2049.5 | PnL: -0.17% | $-0.49 +2025-03-10 13:56:03,564 - INFO - OPENED SHORT at 2049.5 | Stop loss: 2059.7624428571426 | Take profit: 2018.7350857142856 +2025-03-10 13:56:03,588 - INFO - CLOSED short at 2051.99 | PnL: -0.12% | $-0.40 +2025-03-10 13:56:03,588 - INFO - OPENED LONG at 2051.99 | Stop loss: 2041.7151071428568 | Take profit: 2082.792264285714 +2025-03-10 13:56:03,677 - INFO - CLOSED long at 2057.89 | PnL: 0.29% | $0.34 +2025-03-10 13:56:03,726 - INFO - OPENED LONG at 2062.83 | Stop loss: 2052.500907142857 | Take profit: 2093.794864285714 +2025-03-10 13:56:03,885 - INFO - CLOSED long at 2062.55 | PnL: -0.01% | $-0.21 +2025-03-10 13:56:03,886 - INFO - OPENED SHORT at 2062.55 | Stop loss: 2072.877692857143 | Take profit: 2031.5893357142859 +2025-03-10 13:56:03,910 - INFO - CLOSED short at 2065.12 | PnL: -0.12% | $-0.40 +2025-03-10 13:56:03,911 - INFO - OPENED LONG at 2065.12 | Stop loss: 2054.779457142857 | Take profit: 2096.1192142857144 +2025-03-10 13:56:04,480 - INFO - CLOSED long at 2077.61 | PnL: 0.60% | $0.91 +2025-03-10 13:56:04,532 - INFO - OPENED LONG at 2085.56 | Stop loss: 2075.1172571428574 | Take profit: 2116.865814285714 +2025-03-10 13:56:04,671 - INFO - TAKE PROFIT hit for long at 2116.865814285714 | PnL: 1.50% | $2.54 +2025-03-10 13:56:04,701 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.827357142857 | Take profit: 2171.655514285714 +2025-03-10 13:56:04,791 - INFO - CLOSED long at 2141.41 | PnL: 0.09% | $-0.02 +2025-03-10 13:56:04,813 - INFO - OPENED LONG at 2141.3 | Stop loss: 2130.5785571428573 | Take profit: 2173.441914285714 +2025-03-10 13:56:04,928 - INFO - CLOSED long at 2126.99 | PnL: -0.67% | $-1.43 +2025-03-10 13:56:04,928 - INFO - OPENED SHORT at 2126.99 | Stop loss: 2137.6398928571425 | Take profit: 2095.0627357142857 +2025-03-10 13:56:04,966 - INFO - CLOSED short at 2127.3 | PnL: -0.01% | $-0.21 +2025-03-10 13:56:04,966 - INFO - OPENED LONG at 2127.3 | Stop loss: 2116.6485571428575 | Take profit: 2159.2319142857145 +2025-03-10 13:56:05,239 - INFO - STOP LOSS hit for long at 2116.6485571428575 | PnL: -0.50% | $-1.10 +2025-03-10 13:56:05,263 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.877907142857 | Take profit: 2139.063864285714 +2025-03-10 13:56:05,515 - INFO - CLOSED long at 2120.81 | PnL: 0.63% | $0.97 +2025-03-10 13:56:05,516 - INFO - OPENED SHORT at 2120.81 | Stop loss: 2131.428992857143 | Take profit: 2088.9754357142856 +2025-03-10 13:56:05,540 - INFO - CLOSED short at 2116.48 | PnL: 0.20% | $0.19 +2025-03-10 13:56:05,541 - INFO - OPENED LONG at 2116.48 | Stop loss: 2105.882657142857 | Take profit: 2148.249614285714 +2025-03-10 13:56:05,669 - INFO - STOP LOSS hit for long at 2105.882657142857 | PnL: -0.50% | $-1.10 +2025-03-10 13:56:05,707 - INFO - OPENED LONG at 2100.5 | Stop loss: 2089.982557142857 | Take profit: 2132.029914285714 +2025-03-10 13:56:06,311 - INFO - CLOSED long at 2093.33 | PnL: -0.34% | $-0.80 +2025-03-10 13:56:06,311 - INFO - OPENED SHORT at 2093.33 | Stop loss: 2103.8115928571424 | Take profit: 2061.907635714286 +2025-03-10 13:56:06,357 - INFO - CLOSED short at 2091.1 | PnL: 0.11% | $0.01 +2025-03-10 13:56:06,358 - INFO - OPENED LONG at 2091.1 | Stop loss: 2080.6295571428573 | Take profit: 2122.488914285714 +2025-03-10 13:56:06,401 - INFO - CLOSED long at 2094.08 | PnL: 0.14% | $0.08 +2025-03-10 13:56:06,424 - INFO - OPENED LONG at 2088.35 | Stop loss: 2077.8933071428573 | Take profit: 2119.6976642857144 +2025-03-10 13:56:06,657 - INFO - CLOSED long at 2080.38 | PnL: -0.38% | $-0.86 +2025-03-10 13:56:06,657 - INFO - OPENED SHORT at 2080.38 | Stop loss: 2090.796842857143 | Take profit: 2049.151885714286 +2025-03-10 13:56:06,688 - INFO - CLOSED short at 2081.25 | PnL: -0.04% | $-0.25 +2025-03-10 13:56:06,713 - INFO - OPENED LONG at 2083.41 | Stop loss: 2072.9780071428568 | Take profit: 2114.6835642857145 +2025-03-10 13:56:07,674 - INFO - CLOSED long at 2105.83 | PnL: 1.08% | $1.73 +2025-03-10 13:56:07,674 - INFO - OPENED SHORT at 2105.83 | Stop loss: 2116.374092857143 | Take profit: 2074.220135714286 +2025-03-10 13:56:07,712 - INFO - CLOSED short at 2103.64 | PnL: 0.10% | $0.01 +2025-03-10 13:56:07,712 - INFO - OPENED LONG at 2103.64 | Stop loss: 2093.106857142857 | Take profit: 2135.217014285714 +2025-03-10 13:56:08,187 - INFO - CLOSED long at 2110.87 | PnL: 0.34% | $0.44 +2025-03-10 13:56:08,188 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.439292857143 | Take profit: 2079.1845357142856 +2025-03-10 13:56:08,257 - INFO - CLOSED short at 2110.4 | PnL: 0.02% | $-0.14 +2025-03-10 13:56:08,257 - INFO - OPENED LONG at 2110.4 | Stop loss: 2099.8330571428573 | Take profit: 2142.0784142857146 +2025-03-10 13:56:08,456 - INFO - CLOSED long at 2112.26 | PnL: 0.09% | $-0.02 +2025-03-10 13:56:08,486 - INFO - OPENED LONG at 2110.99 | Stop loss: 2100.420107142857 | Take profit: 2142.677264285714 +2025-03-10 13:56:08,832 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.52, Avg Loss=$-0.42 +2025-03-10 13:56:08,833 - INFO - Episode 48: Reward=58.24, Balance=$91.33, Win Rate=28.8%, Trades=59, Episode PnL=$-3.83, Total PnL=$-272.07, Max Drawdown=11.0%, Pred Accuracy=99.9% +2025-03-10 13:56:08,833 - INFO - Reducing learning rate to 0.000010 +2025-03-10 13:56:09,159 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.560607142857 | Take profit: 2093.855764285714 +2025-03-10 13:56:09,600 - INFO - CLOSED long at 2068.65 | PnL: 0.28% | $0.36 +2025-03-10 13:56:09,621 - INFO - OPENED LONG at 2068.99 | Stop loss: 2058.630107142857 | Take profit: 2100.047264285714 +2025-03-10 13:56:10,403 - INFO - CLOSED long at 2065.99 | PnL: -0.14% | $-0.49 +2025-03-10 13:56:10,427 - INFO - OPENED LONG at 2066.19 | Stop loss: 2055.8441071428574 | Take profit: 2097.2052642857143 +2025-03-10 13:56:12,107 - INFO - CLOSED long at 2067.8 | PnL: 0.08% | $-0.04 +2025-03-10 13:56:12,130 - INFO - OPENED LONG at 2068.18 | Stop loss: 2057.824157142857 | Take profit: 2099.225114285714 +2025-03-10 13:56:13,531 - INFO - CLOSED long at 2061.09 | PnL: -0.34% | $-0.88 +2025-03-10 13:56:13,575 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.297007142857 | Take profit: 2090.5265642857144 +2025-03-10 13:56:14,188 - INFO - CLOSED long at 2066.01 | PnL: 0.31% | $0.41 +2025-03-10 13:56:14,188 - INFO - OPENED SHORT at 2066.01 | Stop loss: 2076.354992857143 | Take profit: 2034.9974357142858 +2025-03-10 13:56:14,216 - INFO - CLOSED short at 2063.9 | PnL: 0.10% | $0.00 +2025-03-10 13:56:14,217 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.5655571428574 | Take profit: 2094.8809142857144 +2025-03-10 13:56:17,023 - INFO - CLOSED long at 2060.7 | PnL: -0.16% | $-0.50 +2025-03-10 13:56:17,048 - INFO - OPENED LONG at 2060.2 | Stop loss: 2049.884057142857 | Take profit: 2091.125414285714 +2025-03-10 13:56:17,278 - INFO - STOP LOSS hit for long at 2049.884057142857 | PnL: -0.50% | $-1.18 +2025-03-10 13:56:17,302 - INFO - OPENED LONG at 2049.5 | Stop loss: 2039.237557142857 | Take profit: 2080.264914285714 +2025-03-10 13:56:17,371 - INFO - CLOSED long at 2056.85 | PnL: 0.36% | $0.50 +2025-03-10 13:56:17,417 - INFO - OPENED LONG at 2057.89 | Stop loss: 2047.585607142857 | Take profit: 2088.7807642857138 +2025-03-10 13:56:18,286 - INFO - TAKE PROFIT hit for long at 2088.7807642857138 | PnL: 1.50% | $2.73 +2025-03-10 13:56:18,330 - INFO - OPENED LONG at 2103.02 | Stop loss: 2092.4899571428573 | Take profit: 2134.587714285714 +2025-03-10 13:56:18,410 - INFO - TAKE PROFIT hit for long at 2134.587714285714 | PnL: 1.50% | $2.81 +2025-03-10 13:56:18,452 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.1061571428572 | Take profit: 2163.7791142857145 +2025-03-10 13:56:18,773 - INFO - STOP LOSS hit for long at 2121.1061571428572 | PnL: -0.50% | $-1.24 +2025-03-10 13:56:18,821 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.534307142857 | Take profit: 2151.9746642857144 +2025-03-10 13:56:19,040 - INFO - STOP LOSS hit for long at 2109.534307142857 | PnL: -0.50% | $-1.22 +2025-03-10 13:56:19,064 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.032057142857 | Take profit: 2142.281414285714 +2025-03-10 13:56:19,413 - INFO - CLOSED long at 2106.49 | PnL: -0.19% | $-0.59 +2025-03-10 13:56:19,436 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.504757142857 | Take profit: 2139.7033142857144 +2025-03-10 13:56:19,515 - INFO - STOP LOSS hit for long at 2097.504757142857 | PnL: -0.50% | $-1.20 +2025-03-10 13:56:19,552 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0174071428573 | Take profit: 2131.0453642857146 +2025-03-10 13:56:20,186 - INFO - STOP LOSS hit for long at 2089.0174071428573 | PnL: -0.50% | $-1.19 +2025-03-10 13:56:20,209 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.848657142857 | Take profit: 2114.551614285714 +2025-03-10 13:56:22,087 - INFO - TAKE PROFIT hit for long at 2114.551614285714 | PnL: 1.50% | $2.73 +2025-03-10 13:56:22,113 - INFO - OPENED LONG at 2113.61 | Stop loss: 2103.027007142857 | Take profit: 2145.3365642857143 +2025-03-10 13:56:22,577 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.36, Avg Loss=$-0.85 +2025-03-10 13:56:22,578 - INFO - Episode 49: Reward=91.44, Balance=$101.02, Win Rate=41.2%, Trades=17, Episode PnL=$0.60, Total PnL=$-271.06, Max Drawdown=5.2%, Pred Accuracy=99.7% +2025-03-10 13:56:22,727 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 13:56:22,727 - INFO - New best PnL model saved: $0.60 +2025-03-10 13:56:22,728 - INFO - Reducing learning rate to 0.000010 +2025-03-10 13:56:22,728 - INFO - Early stopping triggered after 50 episodes without improvement +2025-03-10 13:56:22,862 - INFO - Model saved to models/trading_agent_final.pt +2025-03-10 13:56:22,977 - ERROR - Training failed: 'episode_pnls' +2025-03-10 13:56:22,978 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1935, in train_agent + plot_training_results(stats) + File "main.py", line 1977, in plot_training_results + plt.plot(stats['episode_pnls']) + ~~~~~^^^^^^^^^^^^^^^^ +KeyError: 'episode_pnls' + +2025-03-10 13:56:23,108 - INFO - Model saved to models/trading_agent_emergency.pt +2025-03-10 13:56:23,108 - INFO - Emergency model saved due to training failure +2025-03-10 13:56:23,108 - INFO - Exchange connection closed +2025-03-10 14:19:22,656 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 14:19:22,679 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 14:19:22,680 - INFO - Fetching initial data for ETH/USDT +2025-03-10 14:19:26,501 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 14:19:26,519 - INFO - Initialized environment with 500 candles +2025-03-10 14:19:28,950 - INFO - Starting training for 1000 episodes... +2025-03-10 14:19:28,951 - INFO - Starting training on device: cuda +2025-03-10 14:19:28,952 - INFO - Loading best model from models/trading_agent_best_pnl.pt to resume training +2025-03-10 14:19:28,952 - INFO - Loading model from models/trading_agent_best_pnl.pt +2025-03-10 14:19:29,130 - INFO - Model loaded successfully with weights_only=True +2025-03-10 14:19:29,131 - INFO - Resumed with best metrics - Reward: 202.74, PnL: $0.26, Win Rate: 44.4% +2025-03-10 14:19:30,374 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:19:30,383 - INFO - CLOSED short at 2070.7 | PnL: -0.13% | $-0.46 +2025-03-10 14:19:30,387 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.703285714286 | Take profit: 2038.2750214285716 +2025-03-10 14:19:30,394 - INFO - CLOSED short at 2068.8 | PnL: 0.03% | $-0.15 +2025-03-10 14:19:30,398 - INFO - OPENED SHORT at 2067.6 | Stop loss: 2077.9545857142857 | Take profit: 2036.5611214285714 +2025-03-10 14:19:30,402 - INFO - CLOSED short at 2067.51 | PnL: 0.00% | $-0.19 +2025-03-10 14:19:30,414 - INFO - OPENED SHORT at 2066.19 | Stop loss: 2076.5375357142857 | Take profit: 2035.1722714285715 +2025-03-10 14:19:30,425 - INFO - CLOSED short at 2066.18 | PnL: 0.00% | $-0.20 +2025-03-10 14:19:30,429 - INFO - OPENED SHORT at 2068.76 | Stop loss: 2079.120385714286 | Take profit: 2037.7037214285717 +2025-03-10 14:19:30,432 - INFO - CLOSED short at 2068.9 | PnL: -0.01% | $-0.21 +2025-03-10 14:19:30,437 - INFO - OPENED SHORT at 2068.51 | Stop loss: 2078.869135714286 | Take profit: 2037.4574714285716 +2025-03-10 14:19:30,441 - INFO - CLOSED short at 2068.59 | PnL: -0.00% | $-0.20 +2025-03-10 14:19:30,444 - INFO - OPENED SHORT at 2069.7 | Stop loss: 2080.0650857142855 | Take profit: 2038.6296214285712 +2025-03-10 14:19:30,450 - INFO - CLOSED short at 2069.96 | PnL: -0.01% | $-0.22 +2025-03-10 14:19:30,455 - INFO - OPENED SHORT at 2071.4 | Stop loss: 2081.7735857142857 | Take profit: 2040.3041214285715 +2025-03-10 14:19:30,462 - INFO - CLOSED short at 2071.36 | PnL: 0.00% | $-0.19 +2025-03-10 14:19:30,466 - INFO - OPENED SHORT at 2072.75 | Stop loss: 2083.1303357142856 | Take profit: 2041.6338714285714 +2025-03-10 14:19:30,470 - INFO - CLOSED short at 2073.11 | PnL: -0.02% | $-0.23 +2025-03-10 14:19:30,474 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.0800857142854 | Take profit: 2041.5846214285714 +2025-03-10 14:19:30,477 - INFO - CLOSED short at 2072.15 | PnL: 0.03% | $-0.14 +2025-03-10 14:19:30,481 - INFO - OPENED SHORT at 2074.29 | Stop loss: 2084.6780357142857 | Take profit: 2043.1507714285715 +2025-03-10 14:19:30,491 - INFO - CLOSED short at 2071.11 | PnL: 0.15% | $0.10 +2025-03-10 14:19:30,492 - INFO - OPENED LONG at 2069.46 | Stop loss: 2059.096114285714 | Take profit: 2100.5267785714286 +2025-03-10 14:19:30,497 - INFO - CLOSED long at 2069.35 | PnL: -0.01% | $-0.20 +2025-03-10 14:19:30,497 - INFO - OPENED SHORT at 2069.35 | Stop loss: 2079.7133357142857 | Take profit: 2038.2848714285715 +2025-03-10 14:19:30,507 - INFO - CLOSED short at 2067.79 | PnL: 0.08% | $-0.05 +2025-03-10 14:19:30,508 - INFO - OPENED LONG at 2067.79 | Stop loss: 2057.434464285714 | Take profit: 2098.8317285714284 +2025-03-10 14:19:30,511 - INFO - CLOSED long at 2067.46 | PnL: -0.02% | $-0.22 +2025-03-10 14:19:30,511 - INFO - OPENED SHORT at 2067.46 | Stop loss: 2077.813885714286 | Take profit: 2036.4232214285714 +2025-03-10 14:19:30,522 - INFO - CLOSED short at 2063.61 | PnL: 0.19% | $0.17 +2025-03-10 14:19:30,525 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.602885714286 | Take profit: 2034.2562214285715 +2025-03-10 14:19:30,533 - INFO - CLOSED short at 2068.8 | PnL: -0.17% | $-0.53 +2025-03-10 14:19:30,533 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.4394142857145 | Take profit: 2099.8568785714288 +2025-03-10 14:19:30,536 - INFO - CLOSED long at 2069.34 | PnL: 0.03% | $-0.14 +2025-03-10 14:19:30,541 - INFO - OPENED SHORT at 2067.86 | Stop loss: 2078.215885714286 | Take profit: 2036.8172214285717 +2025-03-10 14:19:30,552 - INFO - CLOSED short at 2070.3 | PnL: -0.12% | $-0.42 +2025-03-10 14:19:30,559 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.0700857142856 | Take profit: 2039.6146214285714 +2025-03-10 14:19:30,564 - INFO - CLOSED short at 2070.4 | PnL: 0.01% | $-0.16 +2025-03-10 14:19:30,567 - INFO - OPENED SHORT at 2070.73 | Stop loss: 2081.1002357142856 | Take profit: 2039.6441714285713 +2025-03-10 14:19:30,572 - INFO - CLOSED short at 2068.5 | PnL: 0.11% | $0.01 +2025-03-10 14:19:30,579 - INFO - OPENED LONG at 2067.84 | Stop loss: 2057.484214285714 | Take profit: 2098.8824785714287 +2025-03-10 14:19:30,582 - INFO - CLOSED long at 2067.11 | PnL: -0.04% | $-0.26 +2025-03-10 14:19:30,582 - INFO - OPENED SHORT at 2067.11 | Stop loss: 2077.4621357142855 | Take profit: 2036.0784714285717 +2025-03-10 14:19:30,586 - INFO - CLOSED short at 2067.86 | PnL: -0.04% | $-0.26 +2025-03-10 14:19:30,586 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.7485857142856 | Take profit: 2035.3791214285716 +2025-03-10 14:19:30,757 - INFO - CLOSED short at 2064.47 | PnL: 0.09% | $-0.01 +2025-03-10 14:19:30,779 - INFO - OPENED SHORT at 2070.04 | Stop loss: 2080.4067857142854 | Take profit: 2038.9645214285713 +2025-03-10 14:19:30,879 - INFO - CLOSED short at 2064.99 | PnL: 0.24% | $0.27 +2025-03-10 14:19:30,879 - INFO - OPENED LONG at 2064.99 | Stop loss: 2054.648464285714 | Take profit: 2095.9897285714283 +2025-03-10 14:19:30,895 - INFO - CLOSED long at 2065.83 | PnL: 0.04% | $-0.11 +2025-03-10 14:19:30,896 - INFO - OPENED SHORT at 2065.83 | Stop loss: 2076.1757357142856 | Take profit: 2034.8176714285712 +2025-03-10 14:19:31,241 - INFO - CLOSED short at 2064.45 | PnL: 0.07% | $-0.06 +2025-03-10 14:19:31,241 - INFO - OPENED LONG at 2064.45 | Stop loss: 2054.111164285714 | Take profit: 2095.4416285714283 +2025-03-10 14:19:31,273 - INFO - CLOSED long at 2064.08 | PnL: -0.02% | $-0.22 +2025-03-10 14:19:31,273 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.4169857142856 | Take profit: 2033.0939214285713 +2025-03-10 14:19:31,768 - INFO - CLOSED short at 2065.89 | PnL: -0.09% | $-0.36 +2025-03-10 14:19:31,769 - INFO - OPENED LONG at 2065.89 | Stop loss: 2055.543964285714 | Take profit: 2096.9032285714284 +2025-03-10 14:19:31,793 - INFO - CLOSED long at 2063.53 | PnL: -0.11% | $-0.41 +2025-03-10 14:19:31,793 - INFO - OPENED SHORT at 2063.53 | Stop loss: 2073.8642357142858 | Take profit: 2032.5521714285717 +2025-03-10 14:19:32,220 - INFO - CLOSED short at 2056.71 | PnL: 0.33% | $0.43 +2025-03-10 14:19:32,220 - INFO - OPENED LONG at 2056.71 | Stop loss: 2046.4098642857143 | Take profit: 2087.5855285714288 +2025-03-10 14:19:32,244 - INFO - CLOSED long at 2058.15 | PnL: 0.07% | $-0.06 +2025-03-10 14:19:32,244 - INFO - OPENED SHORT at 2058.15 | Stop loss: 2068.457335714286 | Take profit: 2027.2528714285716 +2025-03-10 14:19:32,630 - INFO - STOP LOSS hit for short at 2068.457335714286 | PnL: -0.50% | $-1.14 +2025-03-10 14:19:32,673 - INFO - OPENED SHORT at 2074.3 | Stop loss: 2084.688085714286 | Take profit: 2043.1606214285716 +2025-03-10 14:19:33,728 - INFO - CLOSED short at 2071.99 | PnL: 0.11% | $0.02 +2025-03-10 14:19:33,728 - INFO - OPENED LONG at 2071.99 | Stop loss: 2061.613464285714 | Take profit: 2103.0947285714283 +2025-03-10 14:19:33,778 - INFO - CLOSED long at 2068.19 | PnL: -0.18% | $-0.53 +2025-03-10 14:19:33,778 - INFO - OPENED SHORT at 2068.19 | Stop loss: 2078.547535714286 | Take profit: 2037.1422714285713 +2025-03-10 14:19:33,915 - INFO - CLOSED short at 2074.37 | PnL: -0.30% | $-0.74 +2025-03-10 14:19:33,915 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.9815642857143 | Take profit: 2105.5104285714287 +2025-03-10 14:19:33,936 - INFO - CLOSED long at 2075.07 | PnL: 0.03% | $-0.12 +2025-03-10 14:19:33,936 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.461935714286 | Take profit: 2043.9190714285717 +2025-03-10 14:19:34,025 - INFO - CLOSED short at 2075.32 | PnL: -0.01% | $-0.21 +2025-03-10 14:19:34,065 - INFO - OPENED SHORT at 2075.29 | Stop loss: 2085.6830357142853 | Take profit: 2044.1357714285714 +2025-03-10 14:19:34,611 - INFO - CLOSED short at 2065.8 | PnL: 0.46% | $0.66 +2025-03-10 14:19:34,638 - INFO - OPENED SHORT at 2065.07 | Stop loss: 2075.411935714286 | Take profit: 2034.0690714285715 +2025-03-10 14:19:36,501 - INFO - STOP LOSS hit for short at 2075.411935714286 | PnL: -0.50% | $-1.11 +2025-03-10 14:19:36,554 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2088.014635714286 | Take profit: 2046.4209714285716 +2025-03-10 14:19:36,640 - INFO - STOP LOSS hit for short at 2088.014635714286 | PnL: -0.50% | $-1.10 +2025-03-10 14:19:36,665 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.5516857142857 | Take profit: 2071.4498214285713 +2025-03-10 14:19:36,696 - INFO - STOP LOSS hit for short at 2113.5516857142857 | PnL: -0.50% | $-1.09 +2025-03-10 14:19:36,724 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2542857142857 | Take profit: 2107.4220214285715 +2025-03-10 14:19:37,763 - INFO - TAKE PROFIT hit for short at 2107.4220214285715 | PnL: 1.50% | $2.50 +2025-03-10 14:19:37,821 - INFO - OPENED SHORT at 2108.06 | Stop loss: 2118.6168857142857 | Take profit: 2076.414221428571 +2025-03-10 14:19:39,099 - INFO - CLOSED short at 2085.09 | PnL: 1.09% | $1.82 +2025-03-10 14:19:39,124 - INFO - OPENED SHORT at 2083.59 | Stop loss: 2094.024535714286 | Take profit: 2052.3112714285717 +2025-03-10 14:19:39,240 - INFO - CLOSED short at 2085.83 | PnL: -0.11% | $-0.39 +2025-03-10 14:19:39,289 - INFO - OPENED SHORT at 2085.85 | Stop loss: 2096.2958357142857 | Take profit: 2054.5373714285715 +2025-03-10 14:19:39,902 - INFO - STOP LOSS hit for short at 2096.2958357142857 | PnL: -0.50% | $-1.12 +2025-03-10 14:19:39,928 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.5065357142853 | Take profit: 2068.465271428571 +2025-03-10 14:19:40,743 - INFO - STOP LOSS hit for short at 2110.5065357142853 | PnL: -0.50% | $-1.11 +2025-03-10 14:19:40,773 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.440935714286 | Take profit: 2079.1820714285714 +2025-03-10 14:19:41,627 - INFO - STOP LOSS hit for short at 2121.440935714286 | PnL: -0.50% | $-1.09 +2025-03-10 14:19:41,676 - INFO - OPENED SHORT at 2121.2 | Stop loss: 2131.8225857142857 | Take profit: 2089.357121428571 +2025-03-10 14:19:41,822 - INFO - STOP LOSS hit for short at 2131.8225857142857 | PnL: -0.50% | $-1.08 +2025-03-10 14:19:41,847 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.957885714286 | Take profit: 2104.1912214285717 +2025-03-10 14:19:42,538 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 23.5% in downtrends | Avg Win=$0.67, Avg Loss=$-0.42 +2025-03-10 14:19:42,539 - INFO - Episode 0: Reward=-36.82, Balance=$89.51, Win Rate=18.8%, Trades=48, Episode PnL=$-8.35, Total PnL=$-10.49, Max Drawdown=10.5%, Pred Accuracy=96.6% +2025-03-10 14:19:42,687 - INFO - Model saved to checkpoints/trading_agent_episode_0.pt +2025-03-10 14:19:42,690 - INFO - Checkpoint saved at episode 0 +2025-03-10 14:19:42,834 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 14:19:42,834 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2514, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 14:19:43,825 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 14:19:43,826 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2514, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 14:19:44,218 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:19:44,246 - INFO - CLOSED short at 2067.2 | PnL: 0.04% | $-0.12 +2025-03-10 14:19:44,247 - INFO - OPENED LONG at 2067.2 | Stop loss: 2056.847414285714 | Take profit: 2098.2328785714285 +2025-03-10 14:19:44,276 - INFO - CLOSED long at 2070.36 | PnL: 0.15% | $0.10 +2025-03-10 14:19:44,277 - INFO - OPENED SHORT at 2070.36 | Stop loss: 2080.7283857142857 | Take profit: 2039.2797214285715 +2025-03-10 14:19:45,018 - INFO - CLOSED short at 2071.36 | PnL: -0.05% | $-0.29 +2025-03-10 14:19:45,019 - INFO - OPENED LONG at 2071.36 | Stop loss: 2060.9866142857145 | Take profit: 2102.4552785714286 +2025-03-10 14:19:45,091 - INFO - CLOSED long at 2072.75 | PnL: 0.07% | $-0.07 +2025-03-10 14:19:45,091 - INFO - OPENED SHORT at 2072.75 | Stop loss: 2083.1303357142856 | Take profit: 2041.6338714285714 +2025-03-10 14:19:45,321 - INFO - CLOSED short at 2070.4 | PnL: 0.11% | $0.03 +2025-03-10 14:19:45,321 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.031414285714 | Take profit: 2101.4808785714285 +2025-03-10 14:19:45,341 - INFO - CLOSED long at 2071.11 | PnL: 0.03% | $-0.13 +2025-03-10 14:19:45,394 - INFO - OPENED SHORT at 2069.35 | Stop loss: 2079.7133357142857 | Take profit: 2038.2848714285715 +2025-03-10 14:19:45,681 - INFO - CLOSED short at 2068.8 | PnL: 0.03% | $-0.14 +2025-03-10 14:19:45,705 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.703285714286 | Take profit: 2038.2750214285716 +2025-03-10 14:19:46,703 - INFO - CLOSED short at 2065.54 | PnL: 0.18% | $0.16 +2025-03-10 14:19:46,754 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.437035714286 | Take profit: 2035.0737714285715 +2025-03-10 14:19:47,012 - INFO - CLOSED short at 2060.65 | PnL: 0.26% | $0.32 +2025-03-10 14:19:47,013 - INFO - OPENED LONG at 2060.65 | Stop loss: 2050.3301642857145 | Take profit: 2091.5846285714288 +2025-03-10 14:19:47,065 - INFO - CLOSED long at 2058.89 | PnL: -0.09% | $-0.37 +2025-03-10 14:19:47,066 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.201035714286 | Take profit: 2027.9817714285714 +2025-03-10 14:19:48,069 - INFO - CLOSED short at 2054.89 | PnL: 0.19% | $0.19 +2025-03-10 14:19:48,093 - INFO - OPENED SHORT at 2054.83 | Stop loss: 2065.1207357142857 | Take profit: 2023.9826714285714 +2025-03-10 14:19:48,386 - INFO - STOP LOSS hit for short at 2065.1207357142857 | PnL: -0.50% | $-1.19 +2025-03-10 14:19:48,428 - INFO - OPENED SHORT at 2066.01 | Stop loss: 2076.356635714286 | Take profit: 2034.9949714285715 +2025-03-10 14:19:48,760 - INFO - STOP LOSS hit for short at 2076.356635714286 | PnL: -0.50% | $-1.17 +2025-03-10 14:19:48,799 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.401635714286 | Take profit: 2043.8599714285717 +2025-03-10 14:19:49,017 - INFO - CLOSED short at 2069.69 | PnL: 0.26% | $0.30 +2025-03-10 14:19:49,068 - INFO - OPENED SHORT at 2069.03 | Stop loss: 2079.391735714286 | Take profit: 2037.9696714285717 +2025-03-10 14:19:50,735 - INFO - CLOSED short at 2067.19 | PnL: 0.09% | $-0.02 +2025-03-10 14:19:50,735 - INFO - OPENED LONG at 2067.19 | Stop loss: 2056.8374642857143 | Take profit: 2098.222728571429 +2025-03-10 14:19:50,784 - INFO - CLOSED long at 2065.5 | PnL: -0.08% | $-0.35 +2025-03-10 14:19:50,784 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.844085714286 | Take profit: 2034.4926214285715 +2025-03-10 14:19:50,946 - INFO - CLOSED short at 2063.98 | PnL: 0.07% | $-0.05 +2025-03-10 14:19:50,968 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.4470857142855 | Take profit: 2035.0836214285712 +2025-03-10 14:19:52,383 - INFO - STOP LOSS hit for short at 2076.4470857142855 | PnL: -0.50% | $-1.16 +2025-03-10 14:19:52,426 - INFO - OPENED SHORT at 2085.56 | Stop loss: 2096.0043857142855 | Take profit: 2054.2517214285713 +2025-03-10 14:19:52,473 - INFO - STOP LOSS hit for short at 2096.0043857142855 | PnL: -0.50% | $-1.14 +2025-03-10 14:19:52,496 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:19:52,519 - INFO - CLOSED short at 2139.54 | PnL: -0.41% | $-0.97 +2025-03-10 14:19:52,545 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.1045142857142 | Take profit: 2163.7815785714283 +2025-03-10 14:19:52,571 - INFO - CLOSED long at 2133.95 | PnL: 0.10% | $0.00 +2025-03-10 14:19:52,571 - INFO - OPENED SHORT at 2133.95 | Stop loss: 2144.6363357142855 | Take profit: 2101.9158714285713 +2025-03-10 14:19:52,863 - INFO - CLOSED short at 2128.69 | PnL: 0.25% | $0.27 +2025-03-10 14:19:52,889 - INFO - OPENED SHORT at 2121.09 | Stop loss: 2131.712035714286 | Take profit: 2089.2487714285717 +2025-03-10 14:19:53,186 - INFO - CLOSED short at 2110.6 | PnL: 0.49% | $0.74 +2025-03-10 14:19:53,229 - INFO - OPENED SHORT at 2109.05 | Stop loss: 2119.611835714286 | Take profit: 2077.389371428572 +2025-03-10 14:19:53,385 - INFO - STOP LOSS hit for short at 2119.611835714286 | PnL: -0.50% | $-1.13 +2025-03-10 14:19:53,406 - INFO - OPENED SHORT at 2116.48 | Stop loss: 2127.078985714286 | Take profit: 2084.7079214285714 +2025-03-10 14:19:54,005 - INFO - CLOSED short at 2100.74 | PnL: 0.74% | $1.20 +2025-03-10 14:19:54,006 - INFO - OPENED LONG at 2100.74 | Stop loss: 2090.219714285714 | Take profit: 2132.2759785714284 +2025-03-10 14:19:54,094 - INFO - CLOSED long at 2101.51 | PnL: 0.04% | $-0.12 +2025-03-10 14:19:54,094 - INFO - OPENED SHORT at 2101.51 | Stop loss: 2112.034135714286 | Take profit: 2069.9624714285715 +2025-03-10 14:19:54,904 - INFO - CLOSED short at 2088.1 | PnL: 0.64% | $1.01 +2025-03-10 14:19:54,972 - INFO - OPENED SHORT at 2087.47 | Stop loss: 2097.923935714285 | Take profit: 2056.133071428571 +2025-03-10 14:19:55,293 - INFO - STOP LOSS hit for short at 2097.923935714285 | PnL: -0.50% | $-1.14 +2025-03-10 14:19:55,518 - INFO - OPENED SHORT at 2106.15 | Stop loss: 2116.6973357142856 | Take profit: 2074.5328714285715 +2025-03-10 14:19:56,032 - INFO - CLOSED short at 2104.73 | PnL: 0.07% | $-0.06 +2025-03-10 14:19:56,033 - INFO - OPENED LONG at 2104.73 | Stop loss: 2094.1897642857143 | Take profit: 2136.3258285714287 +2025-03-10 14:19:56,055 - INFO - CLOSED long at 2107.25 | PnL: 0.12% | $0.04 +2025-03-10 14:19:56,055 - INFO - OPENED SHORT at 2107.25 | Stop loss: 2117.8028357142857 | Take profit: 2075.6163714285713 +2025-03-10 14:19:56,198 - INFO - CLOSED short at 2113.7 | PnL: -0.31% | $-0.76 +2025-03-10 14:19:56,233 - INFO - OPENED SHORT at 2113.0 | Stop loss: 2123.581585714286 | Take profit: 2081.2801214285714 +2025-03-10 14:19:57,159 - INFO - STOP LOSS hit for short at 2123.581585714286 | PnL: -0.50% | $-1.12 +2025-03-10 14:19:57,186 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4455357142856 | Take profit: 2095.8482714285715 +2025-03-10 14:19:57,420 - INFO - CLOSED short at 2127.47 | PnL: 0.02% | $-0.16 +2025-03-10 14:19:57,448 - INFO - OPENED SHORT at 2129.51 | Stop loss: 2140.174135714286 | Take profit: 2097.5424714285714 +2025-03-10 14:19:57,932 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 21.4% in downtrends | Avg Win=$0.36, Avg Loss=$-0.56 +2025-03-10 14:19:57,933 - INFO - Episode 1: Reward=-10.64, Balance=$92.69, Win Rate=36.4%, Trades=33, Episode PnL=$-6.55, Total PnL=$-17.80, Max Drawdown=7.3%, Pred Accuracy=96.7% +2025-03-10 14:19:58,202 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:20:00,537 - INFO - CLOSED short at 2064.96 | PnL: 0.15% | $0.10 +2025-03-10 14:20:00,568 - INFO - OPENED SHORT at 2066.24 | Stop loss: 2076.5877857142855 | Take profit: 2035.2215214285714 +2025-03-10 14:20:01,403 - INFO - CLOSED short at 2061.89 | PnL: 0.21% | $0.22 +2025-03-10 14:20:01,403 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.563964285714 | Take profit: 2092.8432285714284 +2025-03-10 14:20:01,432 - INFO - CLOSED long at 2061.7 | PnL: -0.01% | $-0.22 +2025-03-10 14:20:01,433 - INFO - OPENED SHORT at 2061.7 | Stop loss: 2072.0250857142855 | Take profit: 2030.7496214285713 +2025-03-10 14:20:01,888 - INFO - CLOSED short at 2056.71 | PnL: 0.24% | $0.28 +2025-03-10 14:20:01,889 - INFO - OPENED LONG at 2056.71 | Stop loss: 2046.4098642857143 | Take profit: 2087.5855285714288 +2025-03-10 14:20:01,948 - INFO - CLOSED long at 2058.15 | PnL: 0.07% | $-0.06 +2025-03-10 14:20:01,948 - INFO - OPENED SHORT at 2058.15 | Stop loss: 2068.457335714286 | Take profit: 2027.2528714285716 +2025-03-10 14:20:02,459 - INFO - STOP LOSS hit for short at 2068.457335714286 | PnL: -0.50% | $-1.20 +2025-03-10 14:20:02,479 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3765857142857 | Take profit: 2040.8951214285714 +2025-03-10 14:20:02,543 - INFO - CLOSED short at 2075.01 | PnL: -0.15% | $-0.48 +2025-03-10 14:20:02,543 - INFO - OPENED LONG at 2075.01 | Stop loss: 2064.6183642857145 | Take profit: 2106.160028571429 +2025-03-10 14:20:02,564 - INFO - CLOSED long at 2072.6 | PnL: -0.12% | $-0.42 +2025-03-10 14:20:02,565 - INFO - OPENED SHORT at 2072.6 | Stop loss: 2082.979585714286 | Take profit: 2041.4861214285713 +2025-03-10 14:20:05,291 - INFO - CLOSED short at 2051.99 | PnL: 0.99% | $1.74 +2025-03-10 14:20:05,711 - INFO - OPENED SHORT at 2066.59 | Stop loss: 2076.9395357142857 | Take profit: 2035.5662714285716 +2025-03-10 14:20:06,280 - INFO - STOP LOSS hit for short at 2076.9395357142857 | PnL: -0.50% | $-1.19 +2025-03-10 14:20:06,304 - INFO - OPENED SHORT at 2085.56 | Stop loss: 2096.0043857142855 | Take profit: 2054.2517214285713 +2025-03-10 14:20:06,354 - INFO - STOP LOSS hit for short at 2096.0043857142855 | PnL: -0.50% | $-1.18 +2025-03-10 14:20:06,379 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:20:06,582 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.16 +2025-03-10 14:20:06,629 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:20:07,109 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.68 +2025-03-10 14:20:07,133 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:20:07,800 - INFO - CLOSED short at 2102.29 | PnL: 0.39% | $0.58 +2025-03-10 14:20:07,837 - INFO - OPENED SHORT at 2099.25 | Stop loss: 2109.7628357142858 | Take profit: 2067.736371428571 +2025-03-10 14:20:08,880 - INFO - CLOSED short at 2088.32 | PnL: 0.52% | $0.83 +2025-03-10 14:20:08,881 - INFO - OPENED LONG at 2088.32 | Stop loss: 2077.8618142857144 | Take profit: 2119.6696785714284 +2025-03-10 14:20:08,928 - INFO - CLOSED long at 2088.1 | PnL: -0.01% | $-0.22 +2025-03-10 14:20:08,928 - INFO - OPENED SHORT at 2088.1 | Stop loss: 2098.5570857142857 | Take profit: 2056.7536214285715 +2025-03-10 14:20:09,370 - INFO - STOP LOSS hit for short at 2098.5570857142857 | PnL: -0.50% | $-1.20 +2025-03-10 14:20:09,417 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1647857142857 | Take profit: 2070.0905214285713 +2025-03-10 14:20:10,244 - INFO - STOP LOSS hit for short at 2112.1647857142857 | PnL: -0.50% | $-1.18 +2025-03-10 14:20:10,267 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.440935714286 | Take profit: 2079.1820714285714 +2025-03-10 14:20:10,649 - INFO - CLOSED short at 2111.19 | PnL: -0.02% | $-0.22 +2025-03-10 14:20:10,671 - INFO - OPENED SHORT at 2112.61 | Stop loss: 2123.1896357142855 | Take profit: 2080.8959714285716 +2025-03-10 14:20:10,743 - INFO - CLOSED short at 2115.3 | PnL: -0.13% | $-0.44 +2025-03-10 14:20:10,767 - INFO - OPENED SHORT at 2115.89 | Stop loss: 2126.486035714285 | Take profit: 2084.1267714285714 +2025-03-10 14:20:11,118 - INFO - CLOSED short at 2125.11 | PnL: -0.44% | $-1.03 +2025-03-10 14:20:11,118 - INFO - OPENED LONG at 2125.11 | Stop loss: 2114.4678642857143 | Take profit: 2157.0115285714287 +2025-03-10 14:20:11,141 - INFO - CLOSED long at 2127.79 | PnL: 0.13% | $0.05 +2025-03-10 14:20:11,142 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4455357142856 | Take profit: 2095.8482714285715 +2025-03-10 14:20:11,427 - INFO - CLOSED short at 2123.23 | PnL: 0.21% | $0.22 +2025-03-10 14:20:11,427 - INFO - OPENED LONG at 2123.23 | Stop loss: 2112.597264285714 | Take profit: 2155.1033285714284 +2025-03-10 14:20:11,453 - INFO - CLOSED long at 2127.47 | PnL: 0.20% | $0.19 +2025-03-10 14:20:11,454 - INFO - OPENED SHORT at 2127.47 | Stop loss: 2138.1239357142854 | Take profit: 2095.5330714285715 +2025-03-10 14:20:11,917 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 38.5% in downtrends | Avg Win=$0.69, Avg Loss=$-0.73 +2025-03-10 14:20:11,918 - INFO - Episode 2: Reward=-5.59, Balance=$96.68, Win Rate=41.7%, Trades=24, Episode PnL=$-2.64, Total PnL=$-21.12, Max Drawdown=3.7%, Pred Accuracy=96.7% +2025-03-10 14:20:12,240 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:20:12,269 - INFO - CLOSED short at 2067.2 | PnL: 0.04% | $-0.12 +2025-03-10 14:20:12,269 - INFO - OPENED LONG at 2067.2 | Stop loss: 2056.847414285714 | Take profit: 2098.2328785714285 +2025-03-10 14:20:12,301 - INFO - CLOSED long at 2070.36 | PnL: 0.15% | $0.10 +2025-03-10 14:20:12,301 - INFO - OPENED SHORT at 2070.36 | Stop loss: 2080.7283857142857 | Take profit: 2039.2797214285715 +2025-03-10 14:20:14,382 - INFO - CLOSED short at 2067.88 | PnL: 0.12% | $0.04 +2025-03-10 14:20:14,383 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.5240142857147 | Take profit: 2098.923078571429 +2025-03-10 14:20:14,408 - INFO - CLOSED long at 2064.99 | PnL: -0.14% | $-0.48 +2025-03-10 14:20:14,408 - INFO - OPENED SHORT at 2064.99 | Stop loss: 2075.331535714285 | Take profit: 2033.990271428571 +2025-03-10 14:20:14,715 - INFO - CLOSED short at 2066.09 | PnL: -0.05% | $-0.30 +2025-03-10 14:20:14,715 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.742964285714 | Take profit: 2097.1062285714283 +2025-03-10 14:20:14,738 - INFO - CLOSED long at 2064.45 | PnL: -0.08% | $-0.35 +2025-03-10 14:20:14,738 - INFO - OPENED SHORT at 2064.45 | Stop loss: 2074.7888357142856 | Take profit: 2033.4583714285711 +2025-03-10 14:20:15,057 - INFO - CLOSED short at 2061.8 | PnL: 0.13% | $0.06 +2025-03-10 14:20:15,058 - INFO - OPENED LONG at 2061.8 | Stop loss: 2051.4744142857144 | Take profit: 2092.7518785714287 +2025-03-10 14:20:15,111 - INFO - CLOSED long at 2062.61 | PnL: 0.04% | $-0.12 +2025-03-10 14:20:15,111 - INFO - OPENED SHORT at 2062.61 | Stop loss: 2072.939635714286 | Take profit: 2031.6459714285716 +2025-03-10 14:20:16,348 - INFO - STOP LOSS hit for short at 2072.939635714286 | PnL: -0.50% | $-1.18 +2025-03-10 14:20:16,411 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.401635714286 | Take profit: 2043.8599714285717 +2025-03-10 14:20:16,854 - INFO - CLOSED short at 2065.7 | PnL: 0.45% | $0.68 +2025-03-10 14:20:16,905 - INFO - OPENED SHORT at 2063.95 | Stop loss: 2074.2863357142855 | Take profit: 2032.9658714285713 +2025-03-10 14:20:17,758 - INFO - STOP LOSS hit for short at 2074.2863357142855 | PnL: -0.50% | $-1.17 +2025-03-10 14:20:17,831 - INFO - OPENED SHORT at 2074.35 | Stop loss: 2084.7383357142858 | Take profit: 2043.2098714285712 +2025-03-10 14:20:18,217 - INFO - CLOSED short at 2066.4 | PnL: 0.38% | $0.55 +2025-03-10 14:20:18,217 - INFO - OPENED LONG at 2066.4 | Stop loss: 2056.0514142857146 | Take profit: 2097.420878571429 +2025-03-10 14:20:18,382 - INFO - CLOSED long at 2070.1 | PnL: 0.18% | $0.15 +2025-03-10 14:20:18,382 - INFO - OPENED SHORT at 2070.1 | Stop loss: 2080.4670857142855 | Take profit: 2039.0236214285712 +2025-03-10 14:20:19,914 - INFO - CLOSED short at 2074.05 | PnL: -0.19% | $-0.56 +2025-03-10 14:20:19,964 - INFO - OPENED SHORT at 2071.89 | Stop loss: 2082.2660357142854 | Take profit: 2040.7867714285715 +2025-03-10 14:20:20,133 - INFO - STOP LOSS hit for short at 2082.2660357142854 | PnL: -0.50% | $-1.16 +2025-03-10 14:20:20,173 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:20:20,211 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.15 +2025-03-10 14:20:20,234 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:20:20,372 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.13 +2025-03-10 14:20:20,422 - INFO - OPENED SHORT at 2142.68 | Stop loss: 2153.4099857142855 | Take profit: 2110.514921428571 +2025-03-10 14:20:20,843 - INFO - TAKE PROFIT hit for short at 2110.514921428571 | PnL: 1.50% | $2.61 +2025-03-10 14:20:20,893 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:20:22,127 - INFO - CLOSED short at 2083.97 | PnL: 1.26% | $2.22 +2025-03-10 14:20:22,170 - INFO - OPENED SHORT at 2085.3 | Stop loss: 2095.7430857142863 | Take profit: 2053.9956214285717 +2025-03-10 14:20:22,638 - INFO - CLOSED short at 2087.0 | PnL: -0.08% | $-0.36 +2025-03-10 14:20:22,672 - INFO - OPENED SHORT at 2087.47 | Stop loss: 2097.923935714285 | Take profit: 2056.133071428571 +2025-03-10 14:20:23,030 - INFO - STOP LOSS hit for short at 2097.923935714285 | PnL: -0.50% | $-1.17 +2025-03-10 14:20:23,085 - INFO - OPENED SHORT at 2097.11 | Stop loss: 2107.6121357142856 | Take profit: 2065.6284714285716 +2025-03-10 14:20:23,561 - INFO - CLOSED short at 2104.4 | PnL: -0.35% | $-0.86 +2025-03-10 14:20:23,589 - INFO - OPENED SHORT at 2105.21 | Stop loss: 2115.752635714286 | Take profit: 2073.6069714285713 +2025-03-10 14:20:24,363 - INFO - STOP LOSS hit for short at 2115.752635714286 | PnL: -0.50% | $-1.15 +2025-03-10 14:20:24,385 - INFO - OPENED SHORT at 2117.39 | Stop loss: 2127.993535714286 | Take profit: 2085.6042714285713 +2025-03-10 14:20:24,872 - INFO - STOP LOSS hit for short at 2127.993535714286 | PnL: -0.50% | $-1.13 +2025-03-10 14:20:24,916 - INFO - OPENED LONG at 2135.86 | Stop loss: 2125.1641142857143 | Take profit: 2167.922778571429 +2025-03-10 14:20:24,959 - INFO - CLOSED long at 2136.26 | PnL: 0.02% | $-0.15 +2025-03-10 14:20:25,015 - INFO - OPENED SHORT at 2135.51 | Stop loss: 2146.2041357142857 | Take profit: 2103.4524714285717 +2025-03-10 14:20:25,120 - INFO - CLOSED short at 2124.38 | PnL: 0.52% | $0.78 +2025-03-10 14:20:25,121 - INFO - OPENED LONG at 2124.38 | Stop loss: 2113.7415142857144 | Take profit: 2156.2705785714284 +2025-03-10 14:20:25,144 - INFO - CLOSED long at 2123.23 | PnL: -0.05% | $-0.29 +2025-03-10 14:20:25,145 - INFO - OPENED SHORT at 2123.23 | Stop loss: 2133.8627357142855 | Take profit: 2091.3566714285716 +2025-03-10 14:20:25,216 - INFO - STOP LOSS hit for short at 2133.8627357142855 | PnL: -0.50% | $-1.12 +2025-03-10 14:20:25,260 - INFO - OPENED SHORT at 2131.23 | Stop loss: 2141.902735714286 | Take profit: 2099.2366714285713 +2025-03-10 14:20:25,762 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 31.2% in downtrends | Avg Win=$0.80, Avg Loss=$-0.73 +2025-03-10 14:20:25,764 - INFO - Episode 3: Reward=-10.88, Balance=$93.23, Win Rate=32.1%, Trades=28, Episode PnL=$-5.79, Total PnL=$-27.89, Max Drawdown=6.8%, Pred Accuracy=96.8% +2025-03-10 14:20:26,014 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:20:29,890 - INFO - CLOSED short at 2054.89 | PnL: 0.63% | $1.06 +2025-03-10 14:20:29,890 - INFO - OPENED LONG at 2054.89 | Stop loss: 2044.5989642857141 | Take profit: 2085.7382285714284 +2025-03-10 14:20:29,978 - INFO - CLOSED long at 2058.15 | PnL: 0.16% | $0.12 +2025-03-10 14:20:29,978 - INFO - OPENED SHORT at 2058.15 | Stop loss: 2068.457335714286 | Take profit: 2027.2528714285716 +2025-03-10 14:20:30,294 - INFO - CLOSED short at 2063.9 | PnL: -0.28% | $-0.76 +2025-03-10 14:20:30,319 - INFO - OPENED SHORT at 2064.49 | Stop loss: 2074.8290357142855 | Take profit: 2033.4977714285712 +2025-03-10 14:20:30,645 - INFO - STOP LOSS hit for short at 2074.8290357142855 | PnL: -0.50% | $-1.20 +2025-03-10 14:20:30,674 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.401635714286 | Take profit: 2043.8599714285717 +2025-03-10 14:20:32,700 - INFO - CLOSED short at 2070.1 | PnL: 0.24% | $0.27 +2025-03-10 14:20:32,701 - INFO - OPENED LONG at 2070.1 | Stop loss: 2059.7329142857143 | Take profit: 2101.1763785714284 +2025-03-10 14:20:32,725 - INFO - CLOSED long at 2067.19 | PnL: -0.14% | $-0.47 +2025-03-10 14:20:32,726 - INFO - OPENED SHORT at 2067.19 | Stop loss: 2077.542535714286 | Take profit: 2036.1572714285714 +2025-03-10 14:20:33,540 - INFO - CLOSED short at 2057.11 | PnL: 0.49% | $0.76 +2025-03-10 14:20:33,540 - INFO - OPENED LONG at 2057.11 | Stop loss: 2046.8078642857145 | Take profit: 2087.9915285714287 +2025-03-10 14:20:33,563 - INFO - CLOSED long at 2057.89 | PnL: 0.04% | $-0.12 +2025-03-10 14:20:33,564 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.1960357142857 | Take profit: 2026.9967714285713 +2025-03-10 14:20:33,857 - INFO - STOP LOSS hit for short at 2068.1960357142857 | PnL: -0.50% | $-1.19 +2025-03-10 14:20:33,921 - INFO - OPENED SHORT at 2066.59 | Stop loss: 2076.9395357142857 | Take profit: 2035.5662714285716 +2025-03-10 14:20:34,298 - INFO - CLOSED short at 2069.34 | PnL: -0.13% | $-0.46 +2025-03-10 14:20:34,324 - INFO - OPENED SHORT at 2069.81 | Stop loss: 2080.175635714286 | Take profit: 2038.7379714285714 +2025-03-10 14:20:34,632 - INFO - STOP LOSS hit for short at 2080.175635714286 | PnL: -0.50% | $-1.17 +2025-03-10 14:20:34,658 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:20:34,692 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.15 +2025-03-10 14:20:34,722 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:20:34,913 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.14 +2025-03-10 14:20:34,970 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:20:35,491 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.63 +2025-03-10 14:20:35,522 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:20:36,035 - INFO - CLOSED short at 2102.19 | PnL: 0.40% | $0.58 +2025-03-10 14:20:36,035 - INFO - OPENED LONG at 2102.19 | Stop loss: 2091.662464285714 | Take profit: 2133.7477285714285 +2025-03-10 14:20:36,071 - INFO - CLOSED long at 2102.29 | PnL: 0.00% | $-0.18 +2025-03-10 14:20:36,072 - INFO - OPENED SHORT at 2102.29 | Stop loss: 2112.8180357142855 | Take profit: 2070.730771428571 +2025-03-10 14:20:36,754 - INFO - CLOSED short at 2081.49 | PnL: 0.99% | $1.72 +2025-03-10 14:20:36,776 - INFO - OPENED SHORT at 2080.38 | Stop loss: 2090.798485714286 | Take profit: 2049.1494214285717 +2025-03-10 14:20:37,323 - INFO - CLOSED short at 2091.05 | PnL: -0.51% | $-1.21 +2025-03-10 14:20:37,323 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.5781642857146 | Take profit: 2122.440628571429 +2025-03-10 14:20:37,373 - INFO - CLOSED long at 2091.05 | PnL: 0.00% | $-0.19 +2025-03-10 14:20:37,373 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.5218357142858 | Take profit: 2059.659371428572 +2025-03-10 14:20:37,516 - INFO - CLOSED short at 2101.64 | PnL: -0.51% | $-1.18 +2025-03-10 14:20:37,565 - INFO - OPENED SHORT at 2098.49 | Stop loss: 2108.999035714285 | Take profit: 2066.9877714285712 +2025-03-10 14:20:37,585 - INFO - CLOSED short at 2099.89 | PnL: -0.07% | $-0.32 +2025-03-10 14:20:37,621 - INFO - OPENED SHORT at 2100.89 | Stop loss: 2111.411035714286 | Take profit: 2069.3517714285713 +2025-03-10 14:20:38,348 - INFO - STOP LOSS hit for short at 2111.411035714286 | PnL: -0.50% | $-1.15 +2025-03-10 14:20:38,376 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.440935714286 | Take profit: 2079.1820714285714 +2025-03-10 14:20:39,680 - INFO - STOP LOSS hit for short at 2121.440935714286 | PnL: -0.50% | $-1.14 +2025-03-10 14:20:39,704 - INFO - OPENED SHORT at 2121.2 | Stop loss: 2131.8225857142857 | Take profit: 2089.357121428571 +2025-03-10 14:20:39,749 - INFO - CLOSED short at 2127.79 | PnL: -0.31% | $-0.77 +2025-03-10 14:20:39,750 - INFO - OPENED LONG at 2127.79 | Stop loss: 2117.1344642857143 | Take profit: 2159.7317285714284 +2025-03-10 14:20:39,773 - INFO - CLOSED long at 2129.3 | PnL: 0.07% | $-0.05 +2025-03-10 14:20:39,774 - INFO - OPENED SHORT at 2129.3 | Stop loss: 2139.9630857142856 | Take profit: 2097.335621428572 +2025-03-10 14:20:40,379 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 35.7% in downtrends | Avg Win=$1.02, Avg Loss=$-0.77 +2025-03-10 14:20:40,380 - INFO - Episode 4: Reward=-12.08, Balance=$93.28, Win Rate=28.0%, Trades=25, Episode PnL=$-5.80, Total PnL=$-34.60, Max Drawdown=6.3%, Pred Accuracy=96.8% +2025-03-10 14:20:41,284 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:20:42,187 - INFO - CLOSED short at 2067.79 | PnL: 0.01% | $-0.18 +2025-03-10 14:20:42,188 - INFO - OPENED LONG at 2067.79 | Stop loss: 2057.434464285714 | Take profit: 2098.8317285714284 +2025-03-10 14:20:42,223 - INFO - CLOSED long at 2067.46 | PnL: -0.02% | $-0.23 +2025-03-10 14:20:42,224 - INFO - OPENED SHORT at 2067.46 | Stop loss: 2077.813885714286 | Take profit: 2036.4232214285714 +2025-03-10 14:20:43,441 - INFO - CLOSED short at 2064.45 | PnL: 0.15% | $0.09 +2025-03-10 14:20:43,481 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.4169857142856 | Take profit: 2033.0939214285713 +2025-03-10 14:20:44,569 - INFO - CLOSED short at 2054.83 | PnL: 0.45% | $0.69 +2025-03-10 14:20:44,594 - INFO - OPENED LONG at 2056.71 | Stop loss: 2046.4098642857143 | Take profit: 2087.5855285714288 +2025-03-10 14:20:44,643 - INFO - CLOSED long at 2058.15 | PnL: 0.07% | $-0.06 +2025-03-10 14:20:44,643 - INFO - OPENED SHORT at 2058.15 | Stop loss: 2068.457335714286 | Take profit: 2027.2528714285716 +2025-03-10 14:20:45,204 - INFO - STOP LOSS hit for short at 2068.457335714286 | PnL: -0.50% | $-1.20 +2025-03-10 14:20:45,228 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3765857142857 | Take profit: 2040.8951214285714 +2025-03-10 14:20:46,376 - INFO - CLOSED short at 2068.19 | PnL: 0.18% | $0.16 +2025-03-10 14:20:46,414 - INFO - OPENED SHORT at 2068.67 | Stop loss: 2079.029935714286 | Take profit: 2037.6150714285716 +2025-03-10 14:20:47,801 - INFO - CLOSED short at 2057.89 | PnL: 0.52% | $0.83 +2025-03-10 14:20:47,839 - INFO - OPENED SHORT at 2062.83 | Stop loss: 2073.1607357142857 | Take profit: 2031.8626714285713 +2025-03-10 14:20:48,411 - INFO - STOP LOSS hit for short at 2073.1607357142857 | PnL: -0.50% | $-1.19 +2025-03-10 14:20:48,433 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4368357142857 | Take profit: 2042.9143714285715 +2025-03-10 14:20:48,588 - INFO - STOP LOSS hit for short at 2084.4368357142857 | PnL: -0.50% | $-1.18 +2025-03-10 14:20:48,618 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:20:48,659 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.17 +2025-03-10 14:20:48,702 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:20:48,848 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.15 +2025-03-10 14:20:48,870 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:20:49,293 - INFO - CLOSED short at 2107.43 | PnL: 1.58% | $2.81 +2025-03-10 14:20:49,316 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:20:50,422 - INFO - CLOSED short at 2094.72 | PnL: 0.75% | $1.27 +2025-03-10 14:20:50,447 - INFO - OPENED SHORT at 2094.08 | Stop loss: 2104.5669857142857 | Take profit: 2062.643921428571 +2025-03-10 14:20:51,423 - INFO - CLOSED short at 2100.89 | PnL: -0.33% | $-0.84 +2025-03-10 14:20:51,460 - INFO - OPENED SHORT at 2099.73 | Stop loss: 2110.2452357142856 | Take profit: 2068.2091714285716 +2025-03-10 14:20:51,566 - INFO - CLOSED short at 2104.93 | PnL: -0.25% | $-0.68 +2025-03-10 14:20:51,606 - INFO - OPENED SHORT at 2103.81 | Stop loss: 2114.345635714286 | Take profit: 2072.2279714285714 +2025-03-10 14:20:52,176 - INFO - STOP LOSS hit for short at 2114.345635714286 | PnL: -0.50% | $-1.17 +2025-03-10 14:20:52,232 - INFO - OPENED SHORT at 2113.1 | Stop loss: 2123.6820857142857 | Take profit: 2081.3786214285715 +2025-03-10 14:20:52,868 - INFO - STOP LOSS hit for short at 2123.6820857142857 | PnL: -0.50% | $-1.15 +2025-03-10 14:20:52,890 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4455357142856 | Take profit: 2095.8482714285715 +2025-03-10 14:20:53,559 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.98, Avg Loss=$-0.85 +2025-03-10 14:20:53,560 - INFO - Episode 5: Reward=0.94, Balance=$95.66, Win Rate=33.3%, Trades=18, Episode PnL=$-4.05, Total PnL=$-38.95, Max Drawdown=4.9%, Pred Accuracy=96.9% +2025-03-10 14:20:53,780 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:20:54,093 - INFO - CLOSED short at 2066.29 | PnL: 0.08% | $-0.03 +2025-03-10 14:20:54,133 - INFO - OPENED SHORT at 2065.08 | Stop loss: 2075.4219857142857 | Take profit: 2034.0789214285714 +2025-03-10 14:20:54,573 - INFO - CLOSED short at 2073.9 | PnL: -0.43% | $-1.05 +2025-03-10 14:20:54,610 - INFO - OPENED SHORT at 2071.92 | Stop loss: 2082.2961857142855 | Take profit: 2040.8163214285717 +2025-03-10 14:20:54,692 - INFO - CLOSED short at 2069.35 | PnL: 0.12% | $0.05 +2025-03-10 14:20:54,711 - INFO - OPENED SHORT at 2068.32 | Stop loss: 2078.678185714286 | Take profit: 2037.2703214285716 +2025-03-10 14:20:56,497 - INFO - CLOSED short at 2060.91 | PnL: 0.36% | $0.51 +2025-03-10 14:20:56,536 - INFO - OPENED SHORT at 2060.3 | Stop loss: 2070.618085714286 | Take profit: 2029.3706214285717 +2025-03-10 14:20:57,691 - INFO - CLOSED short at 2066.33 | PnL: -0.29% | $-0.78 +2025-03-10 14:20:57,692 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.9817642857142 | Take profit: 2097.349828571428 +2025-03-10 14:20:57,714 - INFO - CLOSED long at 2066.34 | PnL: 0.00% | $-0.19 +2025-03-10 14:20:57,737 - INFO - OPENED SHORT at 2066.79 | Stop loss: 2077.1405357142858 | Take profit: 2035.7632714285714 +2025-03-10 14:20:57,944 - INFO - STOP LOSS hit for short at 2077.1405357142858 | PnL: -0.50% | $-1.17 +2025-03-10 14:20:57,984 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.401635714286 | Take profit: 2043.8599714285717 +2025-03-10 14:20:58,550 - INFO - CLOSED short at 2064.5 | PnL: 0.51% | $0.79 +2025-03-10 14:20:58,550 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.160914285714 | Take profit: 2095.4923785714286 +2025-03-10 14:20:58,576 - INFO - CLOSED long at 2065.3 | PnL: 0.04% | $-0.12 +2025-03-10 14:20:58,576 - INFO - OPENED SHORT at 2065.3 | Stop loss: 2075.643085714286 | Take profit: 2034.2956214285716 +2025-03-10 14:20:59,392 - INFO - STOP LOSS hit for short at 2075.643085714286 | PnL: -0.50% | $-1.17 +2025-03-10 14:20:59,433 - INFO - OPENED SHORT at 2075.61 | Stop loss: 2086.004635714286 | Take profit: 2044.4509714285716 +2025-03-10 14:20:59,827 - INFO - CLOSED short at 2067.19 | PnL: 0.41% | $0.59 +2025-03-10 14:20:59,828 - INFO - OPENED LONG at 2067.19 | Stop loss: 2056.8374642857143 | Take profit: 2098.222728571429 +2025-03-10 14:20:59,872 - INFO - CLOSED long at 2065.5 | PnL: -0.08% | $-0.35 +2025-03-10 14:20:59,872 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.844085714286 | Take profit: 2034.4926214285715 +2025-03-10 14:21:00,456 - INFO - CLOSED short at 2056.77 | PnL: 0.42% | $0.62 +2025-03-10 14:21:00,456 - INFO - OPENED LONG at 2056.77 | Stop loss: 2046.4695642857143 | Take profit: 2087.6464285714287 +2025-03-10 14:21:00,481 - INFO - CLOSED long at 2053.01 | PnL: -0.18% | $-0.55 +2025-03-10 14:21:00,481 - INFO - OPENED SHORT at 2053.01 | Stop loss: 2063.291635714286 | Take profit: 2022.1899714285717 +2025-03-10 14:21:00,772 - INFO - STOP LOSS hit for short at 2063.291635714286 | PnL: -0.50% | $-1.16 +2025-03-10 14:21:00,805 - INFO - OPENED SHORT at 2065.1 | Stop loss: 2075.442085714286 | Take profit: 2034.0986214285713 +2025-03-10 14:21:01,419 - INFO - STOP LOSS hit for short at 2075.442085714286 | PnL: -0.50% | $-1.14 +2025-03-10 14:21:01,457 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2088.014635714286 | Take profit: 2046.4209714285716 +2025-03-10 14:21:01,534 - INFO - STOP LOSS hit for short at 2088.014635714286 | PnL: -0.50% | $-1.13 +2025-03-10 14:21:01,575 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.5516857142857 | Take profit: 2071.4498214285713 +2025-03-10 14:21:01,611 - INFO - STOP LOSS hit for short at 2113.5516857142857 | PnL: -0.50% | $-1.12 +2025-03-10 14:21:01,634 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2542857142857 | Take profit: 2107.4220214285715 +2025-03-10 14:21:02,499 - INFO - TAKE PROFIT hit for short at 2107.4220214285715 | PnL: 1.50% | $2.57 +2025-03-10 14:21:02,519 - INFO - OPENED SHORT at 2108.06 | Stop loss: 2118.6168857142857 | Take profit: 2076.414221428571 +2025-03-10 14:21:03,130 - INFO - CLOSED short at 2092.46 | PnL: 0.74% | $1.21 +2025-03-10 14:21:03,167 - INFO - OPENED SHORT at 2091.1 | Stop loss: 2101.5720857142855 | Take profit: 2059.7086214285714 +2025-03-10 14:21:03,725 - INFO - CLOSED short at 2088.1 | PnL: 0.14% | $0.08 +2025-03-10 14:21:03,748 - INFO - OPENED SHORT at 2089.96 | Stop loss: 2100.426385714286 | Take profit: 2058.5857214285716 +2025-03-10 14:21:04,119 - INFO - STOP LOSS hit for short at 2100.426385714286 | PnL: -0.50% | $-1.15 +2025-03-10 14:21:04,142 - INFO - OPENED SHORT at 2097.11 | Stop loss: 2107.6121357142856 | Take profit: 2065.6284714285716 +2025-03-10 14:21:04,187 - INFO - CLOSED short at 2099.89 | PnL: -0.13% | $-0.44 +2025-03-10 14:21:04,218 - INFO - OPENED SHORT at 2100.89 | Stop loss: 2111.411035714286 | Take profit: 2069.3517714285713 +2025-03-10 14:21:04,630 - INFO - CLOSED short at 2102.7 | PnL: -0.09% | $-0.35 +2025-03-10 14:21:04,668 - INFO - OPENED SHORT at 2102.0 | Stop loss: 2112.5265857142854 | Take profit: 2070.4451214285714 +2025-03-10 14:21:04,900 - INFO - STOP LOSS hit for short at 2112.5265857142854 | PnL: -0.50% | $-1.13 +2025-03-10 14:21:04,922 - INFO - OPENED SHORT at 2113.0 | Stop loss: 2123.581585714286 | Take profit: 2081.2801214285714 +2025-03-10 14:21:05,630 - INFO - STOP LOSS hit for short at 2123.581585714286 | PnL: -0.50% | $-1.11 +2025-03-10 14:21:05,656 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4455357142856 | Take profit: 2095.8482714285715 +2025-03-10 14:21:06,097 - INFO - CLOSED short at 2126.43 | PnL: 0.06% | $-0.07 +2025-03-10 14:21:06,098 - INFO - OPENED LONG at 2126.43 | Stop loss: 2115.7812642857143 | Take profit: 2158.3513285714284 +2025-03-10 14:21:06,120 - INFO - CLOSED long at 2124.49 | PnL: -0.09% | $-0.35 +2025-03-10 14:21:06,121 - INFO - OPENED SHORT at 2124.49 | Stop loss: 2135.1290357142852 | Take profit: 2092.597771428571 +2025-03-10 14:21:06,432 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 26.7% in downtrends | Avg Win=$0.80, Avg Loss=$-0.73 +2025-03-10 14:21:06,433 - INFO - Episode 6: Reward=-8.28, Balance=$91.86, Win Rate=28.6%, Trades=28, Episode PnL=$-6.77, Total PnL=$-47.09, Max Drawdown=7.7%, Pred Accuracy=97.0% +2025-03-10 14:21:06,620 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:21:07,288 - INFO - CLOSED short at 2073.11 | PnL: -0.25% | $-0.69 +2025-03-10 14:21:07,289 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.7278642857145 | Take profit: 2104.231528571429 +2025-03-10 14:21:07,323 - INFO - CLOSED long at 2072.7 | PnL: -0.02% | $-0.24 +2025-03-10 14:21:07,324 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.0800857142854 | Take profit: 2041.5846214285714 +2025-03-10 14:21:07,740 - INFO - CLOSED short at 2067.89 | PnL: 0.23% | $0.26 +2025-03-10 14:21:07,776 - INFO - OPENED SHORT at 2068.58 | Stop loss: 2078.9394857142856 | Take profit: 2037.5264214285714 +2025-03-10 14:21:08,827 - INFO - CLOSED short at 2062.89 | PnL: 0.28% | $0.35 +2025-03-10 14:21:08,827 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.558964285714 | Take profit: 2093.8582285714288 +2025-03-10 14:21:08,867 - INFO - CLOSED long at 2064.5 | PnL: 0.08% | $-0.04 +2025-03-10 14:21:08,868 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.8390857142854 | Take profit: 2033.5076214285714 +2025-03-10 14:21:09,818 - INFO - CLOSED short at 2056.28 | PnL: 0.40% | $0.59 +2025-03-10 14:21:09,818 - INFO - OPENED LONG at 2056.28 | Stop loss: 2045.9820142857145 | Take profit: 2087.1490785714286 +2025-03-10 14:21:09,837 - INFO - CLOSED long at 2055.6 | PnL: -0.03% | $-0.26 +2025-03-10 14:21:09,862 - INFO - OPENED SHORT at 2054.89 | Stop loss: 2065.181035714286 | Take profit: 2024.0417714285713 +2025-03-10 14:21:10,153 - INFO - STOP LOSS hit for short at 2065.181035714286 | PnL: -0.50% | $-1.19 +2025-03-10 14:21:10,192 - INFO - OPENED SHORT at 2066.01 | Stop loss: 2076.356635714286 | Take profit: 2034.9949714285715 +2025-03-10 14:21:10,523 - INFO - STOP LOSS hit for short at 2076.356635714286 | PnL: -0.50% | $-1.18 +2025-03-10 14:21:10,562 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.401635714286 | Take profit: 2043.8599714285717 +2025-03-10 14:21:13,942 - INFO - STOP LOSS hit for short at 2085.401635714286 | PnL: -0.50% | $-1.16 +2025-03-10 14:21:13,966 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:21:13,987 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.15 +2025-03-10 14:21:14,021 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:21:14,202 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.14 +2025-03-10 14:21:14,225 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:21:14,629 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.62 +2025-03-10 14:21:14,651 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:21:15,071 - INFO - CLOSED short at 2099.53 | PnL: 0.52% | $0.82 +2025-03-10 14:21:15,072 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.0157642857143 | Take profit: 2131.0478285714285 +2025-03-10 14:21:15,094 - INFO - CLOSED long at 2098.1 | PnL: -0.07% | $-0.33 +2025-03-10 14:21:15,094 - INFO - OPENED SHORT at 2098.1 | Stop loss: 2108.6070857142854 | Take profit: 2066.6036214285714 +2025-03-10 14:21:15,652 - INFO - CLOSED short at 2094.08 | PnL: 0.19% | $0.18 +2025-03-10 14:21:15,653 - INFO - OPENED LONG at 2094.08 | Stop loss: 2083.593014285714 | Take profit: 2125.5160785714284 +2025-03-10 14:21:15,704 - INFO - CLOSED long at 2088.35 | PnL: -0.27% | $-0.72 +2025-03-10 14:21:15,704 - INFO - OPENED SHORT at 2088.35 | Stop loss: 2098.8083357142855 | Take profit: 2056.999871428571 +2025-03-10 14:21:16,657 - INFO - STOP LOSS hit for short at 2098.8083357142855 | PnL: -0.50% | $-1.15 +2025-03-10 14:21:16,679 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1647857142857 | Take profit: 2070.0905214285713 +2025-03-10 14:21:17,413 - INFO - STOP LOSS hit for short at 2112.1647857142857 | PnL: -0.50% | $-1.14 +2025-03-10 14:21:17,436 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.440935714286 | Take profit: 2079.1820714285714 +2025-03-10 14:21:17,939 - INFO - CLOSED short at 2117.6 | PnL: -0.32% | $-0.78 +2025-03-10 14:21:17,959 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.8026357142858 | Take profit: 2083.4569714285717 +2025-03-10 14:21:18,193 - INFO - STOP LOSS hit for short at 2125.8026357142858 | PnL: -0.50% | $-1.12 +2025-03-10 14:21:18,216 - INFO - OPENED SHORT at 2129.3 | Stop loss: 2139.9630857142856 | Take profit: 2097.335621428572 +2025-03-10 14:21:18,382 - INFO - CLOSED short at 2123.23 | PnL: 0.29% | $0.34 +2025-03-10 14:21:18,420 - INFO - OPENED SHORT at 2127.47 | Stop loss: 2138.1239357142854 | Take profit: 2095.5330714285715 +2025-03-10 14:21:18,490 - INFO - CLOSED short at 2135.55 | PnL: -0.38% | $-0.88 +2025-03-10 14:21:18,491 - INFO - OPENED LONG at 2135.55 | Stop loss: 2124.8556642857143 | Take profit: 2167.6081285714286 +2025-03-10 14:21:18,538 - INFO - CLOSED long at 2131.23 | PnL: -0.20% | $-0.55 +2025-03-10 14:21:18,538 - INFO - OPENED SHORT at 2131.23 | Stop loss: 2141.902735714286 | Take profit: 2099.2366714285713 +2025-03-10 14:21:18,873 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 33.3% in downtrends | Avg Win=$0.73, Avg Loss=$-0.81 +2025-03-10 14:21:18,873 - INFO - Episode 7: Reward=-8.27, Balance=$91.42, Win Rate=29.2%, Trades=24, Episode PnL=$-6.70, Total PnL=$-55.67, Max Drawdown=7.5%, Pred Accuracy=97.1% +2025-03-10 14:21:19,147 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:21:19,442 - INFO - CLOSED short at 2066.29 | PnL: 0.08% | $-0.03 +2025-03-10 14:21:19,488 - INFO - OPENED SHORT at 2065.08 | Stop loss: 2075.4219857142857 | Take profit: 2034.0789214285714 +2025-03-10 14:21:20,362 - INFO - CLOSED short at 2068.8 | PnL: -0.18% | $-0.56 +2025-03-10 14:21:20,363 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.4394142857145 | Take profit: 2099.8568785714288 +2025-03-10 14:21:20,429 - INFO - CLOSED long at 2067.86 | PnL: -0.05% | $-0.29 +2025-03-10 14:21:20,429 - INFO - OPENED SHORT at 2067.86 | Stop loss: 2078.215885714286 | Take profit: 2036.8172214285717 +2025-03-10 14:21:20,758 - INFO - CLOSED short at 2067.86 | PnL: 0.00% | $-0.20 +2025-03-10 14:21:20,758 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.5041142857144 | Take profit: 2098.902778571429 +2025-03-10 14:21:20,799 - INFO - CLOSED long at 2066.4 | PnL: -0.07% | $-0.33 +2025-03-10 14:21:20,801 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.7485857142856 | Take profit: 2035.3791214285716 +2025-03-10 14:21:21,231 - INFO - CLOSED short at 2059.59 | PnL: 0.33% | $0.45 +2025-03-10 14:21:21,231 - INFO - OPENED LONG at 2059.59 | Stop loss: 2049.2754642857144 | Take profit: 2090.5087285714285 +2025-03-10 14:21:21,252 - INFO - CLOSED long at 2061.3 | PnL: 0.08% | $-0.03 +2025-03-10 14:21:21,252 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.623085714286 | Take profit: 2030.3556214285716 +2025-03-10 14:21:21,570 - INFO - CLOSED short at 2062.89 | PnL: -0.08% | $-0.35 +2025-03-10 14:21:21,758 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.6281357142857 | Take profit: 2029.3804714285714 +2025-03-10 14:21:22,024 - INFO - CLOSED short at 2065.36 | PnL: -0.25% | $-0.68 +2025-03-10 14:21:22,235 - INFO - OPENED SHORT at 2061.7 | Stop loss: 2072.0250857142855 | Take profit: 2030.7496214285713 +2025-03-10 14:21:22,891 - INFO - CLOSED short at 2066.01 | PnL: -0.21% | $-0.60 +2025-03-10 14:21:22,891 - INFO - OPENED LONG at 2066.01 | Stop loss: 2055.6633642857146 | Take profit: 2097.0250285714287 +2025-03-10 14:21:22,959 - INFO - CLOSED long at 2066.33 | PnL: 0.02% | $-0.16 +2025-03-10 14:21:22,960 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6782357142856 | Take profit: 2035.3101714285713 +2025-03-10 14:21:23,234 - INFO - STOP LOSS hit for short at 2076.6782357142856 | PnL: -0.50% | $-1.16 +2025-03-10 14:21:23,279 - INFO - OPENED SHORT at 2072.6 | Stop loss: 2082.979585714286 | Take profit: 2041.4861214285713 +2025-03-10 14:21:24,306 - INFO - CLOSED short at 2070.35 | PnL: 0.11% | $0.02 +2025-03-10 14:21:24,306 - INFO - OPENED LONG at 2070.35 | Stop loss: 2059.981664285714 | Take profit: 2101.430128571428 +2025-03-10 14:21:24,346 - INFO - CLOSED long at 2070.61 | PnL: 0.01% | $-0.17 +2025-03-10 14:21:24,347 - INFO - OPENED SHORT at 2070.61 | Stop loss: 2080.979635714286 | Take profit: 2039.5259714285714 +2025-03-10 14:21:26,569 - INFO - STOP LOSS hit for short at 2080.979635714286 | PnL: -0.50% | $-1.14 +2025-03-10 14:21:26,594 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:21:26,648 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.13 +2025-03-10 14:21:26,699 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:21:26,870 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.12 +2025-03-10 14:21:26,895 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:21:27,327 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.57 +2025-03-10 14:21:27,348 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:21:27,741 - INFO - CLOSED short at 2090.0 | PnL: 0.98% | $1.65 +2025-03-10 14:21:27,764 - INFO - OPENED SHORT at 2099.53 | Stop loss: 2110.044235714286 | Take profit: 2068.0121714285715 +2025-03-10 14:21:29,958 - INFO - STOP LOSS hit for short at 2110.044235714286 | PnL: -0.50% | $-1.15 +2025-03-10 14:21:30,002 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.440935714286 | Take profit: 2079.1820714285714 +2025-03-10 14:21:30,558 - INFO - CLOSED short at 2115.21 | PnL: -0.21% | $-0.58 +2025-03-10 14:21:30,582 - INFO - OPENED SHORT at 2118.19 | Stop loss: 2128.7975357142855 | Take profit: 2086.3922714285713 +2025-03-10 14:21:30,840 - INFO - STOP LOSS hit for short at 2128.7975357142855 | PnL: -0.50% | $-1.13 +2025-03-10 14:21:30,885 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.957885714286 | Take profit: 2104.1912214285717 +2025-03-10 14:21:31,597 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 25.0% in downtrends | Avg Win=$1.17, Avg Loss=$-0.60 +2025-03-10 14:21:31,598 - INFO - Episode 8: Reward=-19.69, Balance=$93.88, Win Rate=18.2%, Trades=22, Episode PnL=$-5.13, Total PnL=$-61.78, Max Drawdown=7.5%, Pred Accuracy=97.2% +2025-03-10 14:21:31,794 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:21:32,735 - INFO - CLOSED short at 2070.4 | PnL: -0.12% | $-0.43 +2025-03-10 14:21:32,757 - INFO - OPENED SHORT at 2071.11 | Stop loss: 2081.4821357142855 | Take profit: 2040.0184714285715 +2025-03-10 14:21:33,199 - INFO - CLOSED short at 2069.2 | PnL: 0.09% | $-0.02 +2025-03-10 14:21:33,199 - INFO - OPENED LONG at 2069.2 | Stop loss: 2058.837414285714 | Take profit: 2100.2628785714282 +2025-03-10 14:21:33,242 - INFO - CLOSED long at 2070.3 | PnL: 0.05% | $-0.09 +2025-03-10 14:21:33,242 - INFO - OPENED SHORT at 2070.3 | Stop loss: 2080.6680857142856 | Take profit: 2039.2206214285716 +2025-03-10 14:21:33,353 - INFO - CLOSED short at 2070.4 | PnL: -0.00% | $-0.21 +2025-03-10 14:21:33,391 - INFO - OPENED SHORT at 2070.73 | Stop loss: 2081.1002357142856 | Take profit: 2039.6441714285713 +2025-03-10 14:21:34,165 - INFO - CLOSED short at 2065.54 | PnL: 0.25% | $0.30 +2025-03-10 14:21:34,198 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.437035714286 | Take profit: 2035.0737714285715 +2025-03-10 14:21:34,740 - INFO - CLOSED short at 2064.33 | PnL: 0.09% | $-0.03 +2025-03-10 14:21:34,741 - INFO - OPENED LONG at 2064.33 | Stop loss: 2053.991764285714 | Take profit: 2095.319828571429 +2025-03-10 14:21:34,763 - INFO - CLOSED long at 2063.39 | PnL: -0.05% | $-0.29 +2025-03-10 14:21:34,764 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.723535714286 | Take profit: 2032.4142714285713 +2025-03-10 14:21:34,785 - INFO - CLOSED short at 2064.79 | PnL: -0.07% | $-0.33 +2025-03-10 14:21:34,825 - INFO - OPENED SHORT at 2065.89 | Stop loss: 2076.2360357142857 | Take profit: 2034.8767714285714 +2025-03-10 14:21:34,991 - INFO - CLOSED short at 2061.7 | PnL: 0.20% | $0.20 +2025-03-10 14:21:35,015 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0200857142854 | Take profit: 2029.7646214285712 +2025-03-10 14:21:35,902 - INFO - STOP LOSS hit for short at 2071.0200857142854 | PnL: -0.50% | $-1.18 +2025-03-10 14:21:35,927 - INFO - OPENED SHORT at 2074.3 | Stop loss: 2084.688085714286 | Take profit: 2043.1606214285716 +2025-03-10 14:21:37,483 - INFO - CLOSED short at 2075.29 | PnL: -0.05% | $-0.29 +2025-03-10 14:21:37,484 - INFO - OPENED LONG at 2075.29 | Stop loss: 2064.896964285714 | Take profit: 2106.4442285714285 +2025-03-10 14:21:37,505 - INFO - CLOSED long at 2076.9 | PnL: 0.08% | $-0.04 +2025-03-10 14:21:37,506 - INFO - OPENED SHORT at 2076.9 | Stop loss: 2087.301085714286 | Take profit: 2045.7216214285716 +2025-03-10 14:21:39,419 - INFO - STOP LOSS hit for short at 2087.301085714286 | PnL: -0.50% | $-1.16 +2025-03-10 14:21:39,443 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.5516857142857 | Take profit: 2071.4498214285713 +2025-03-10 14:21:39,465 - INFO - STOP LOSS hit for short at 2113.5516857142857 | PnL: -0.50% | $-1.15 +2025-03-10 14:21:39,486 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2542857142857 | Take profit: 2107.4220214285715 +2025-03-10 14:21:40,320 - INFO - TAKE PROFIT hit for short at 2107.4220214285715 | PnL: 1.50% | $2.65 +2025-03-10 14:21:40,342 - INFO - OPENED SHORT at 2108.06 | Stop loss: 2118.6168857142857 | Take profit: 2076.414221428571 +2025-03-10 14:21:41,686 - INFO - CLOSED short at 2087.47 | PnL: 0.98% | $1.70 +2025-03-10 14:21:41,725 - INFO - OPENED SHORT at 2087.78 | Stop loss: 2098.235485714286 | Take profit: 2056.4384214285715 +2025-03-10 14:21:41,895 - INFO - CLOSED short at 2091.95 | PnL: -0.20% | $-0.59 +2025-03-10 14:21:41,918 - INFO - OPENED SHORT at 2094.7 | Stop loss: 2105.190085714286 | Take profit: 2063.254621428571 +2025-03-10 14:21:41,960 - INFO - CLOSED short at 2099.99 | PnL: -0.25% | $-0.69 +2025-03-10 14:21:41,985 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1647857142857 | Take profit: 2070.0905214285713 +2025-03-10 14:21:42,770 - INFO - STOP LOSS hit for short at 2112.1647857142857 | PnL: -0.50% | $-1.17 +2025-03-10 14:21:42,796 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.440935714286 | Take profit: 2079.1820714285714 +2025-03-10 14:21:43,202 - INFO - CLOSED short at 2117.39 | PnL: -0.31% | $-0.79 +2025-03-10 14:21:43,202 - INFO - OPENED LONG at 2117.39 | Stop loss: 2106.7864642857144 | Take profit: 2149.1757285714284 +2025-03-10 14:21:43,236 - INFO - CLOSED long at 2115.3 | PnL: -0.10% | $-0.38 +2025-03-10 14:21:43,237 - INFO - OPENED SHORT at 2115.3 | Stop loss: 2125.893085714286 | Take profit: 2083.545621428572 +2025-03-10 14:21:43,636 - INFO - STOP LOSS hit for short at 2125.893085714286 | PnL: -0.50% | $-1.14 +2025-03-10 14:21:43,678 - INFO - OPENED SHORT at 2129.3 | Stop loss: 2139.9630857142856 | Take profit: 2097.335621428572 +2025-03-10 14:21:44,361 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 10.0% in downtrends | Avg Win=$1.21, Avg Loss=$-0.55 +2025-03-10 14:21:44,362 - INFO - Episode 9: Reward=-15.27, Balance=$94.87, Win Rate=18.2%, Trades=22, Episode PnL=$-4.33, Total PnL=$-66.92, Max Drawdown=5.1%, Pred Accuracy=97.4% +2025-03-10 14:21:45,373 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:21:46,231 - INFO - CLOSED short at 2073.9 | PnL: -0.28% | $-0.76 +2025-03-10 14:21:46,268 - INFO - OPENED SHORT at 2071.92 | Stop loss: 2082.2961857142855 | Take profit: 2040.8163214285717 +2025-03-10 14:21:50,872 - INFO - CLOSED short at 2067.0 | PnL: 0.24% | $0.27 +2025-03-10 14:21:50,893 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.2560857142857 | Take profit: 2036.8566214285713 +2025-03-10 14:21:50,952 - INFO - CLOSED short at 2067.88 | PnL: 0.00% | $-0.20 +2025-03-10 14:21:50,953 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.5240142857147 | Take profit: 2098.923078571429 +2025-03-10 14:21:50,973 - INFO - CLOSED long at 2065.45 | PnL: -0.12% | $-0.43 +2025-03-10 14:21:50,974 - INFO - OPENED SHORT at 2065.45 | Stop loss: 2075.7938357142853 | Take profit: 2034.4433714285713 +2025-03-10 14:21:51,751 - INFO - CLOSED short at 2057.11 | PnL: 0.40% | $0.60 +2025-03-10 14:21:51,751 - INFO - OPENED LONG at 2057.11 | Stop loss: 2046.8078642857145 | Take profit: 2087.9915285714287 +2025-03-10 14:21:51,772 - INFO - CLOSED long at 2057.89 | PnL: 0.04% | $-0.12 +2025-03-10 14:21:51,772 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.1960357142857 | Take profit: 2026.9967714285713 +2025-03-10 14:21:51,991 - INFO - STOP LOSS hit for short at 2068.1960357142857 | PnL: -0.50% | $-1.18 +2025-03-10 14:21:52,012 - INFO - OPENED SHORT at 2067.49 | Stop loss: 2077.8440357142854 | Take profit: 2036.4527714285712 +2025-03-10 14:21:52,119 - INFO - CLOSED short at 2060.7 | PnL: 0.33% | $0.44 +2025-03-10 14:21:52,142 - INFO - OPENED SHORT at 2061.84 | Stop loss: 2072.165785714286 | Take profit: 2030.8875214285715 +2025-03-10 14:21:52,369 - INFO - STOP LOSS hit for short at 2072.165785714286 | PnL: -0.50% | $-1.18 +2025-03-10 14:21:52,395 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4368357142857 | Take profit: 2042.9143714285715 +2025-03-10 14:21:52,538 - INFO - STOP LOSS hit for short at 2084.4368357142857 | PnL: -0.50% | $-1.16 +2025-03-10 14:21:52,558 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:21:52,580 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.15 +2025-03-10 14:21:52,620 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:21:52,802 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.13 +2025-03-10 14:21:52,829 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:21:53,271 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.61 +2025-03-10 14:21:53,294 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:21:53,531 - INFO - CLOSED short at 2114.8 | PnL: -0.20% | $-0.57 +2025-03-10 14:21:53,531 - INFO - OPENED LONG at 2114.8 | Stop loss: 2104.2094142857145 | Take profit: 2146.546878571429 +2025-03-10 14:21:53,572 - INFO - CLOSED long at 2110.9 | PnL: -0.18% | $-0.54 +2025-03-10 14:21:53,573 - INFO - OPENED SHORT at 2110.9 | Stop loss: 2121.471085714286 | Take profit: 2079.2116214285716 +2025-03-10 14:21:54,820 - INFO - CLOSED short at 2087.0 | PnL: 1.13% | $1.96 +2025-03-10 14:21:54,842 - INFO - OPENED SHORT at 2087.47 | Stop loss: 2097.923935714285 | Take profit: 2056.133071428571 +2025-03-10 14:21:55,138 - INFO - CLOSED short at 2099.99 | PnL: -0.60% | $-1.35 +2025-03-10 14:21:55,138 - INFO - OPENED LONG at 2099.99 | Stop loss: 2089.4734642857143 | Take profit: 2131.5147285714283 +2025-03-10 14:21:55,181 - INFO - CLOSED long at 2101.64 | PnL: 0.08% | $-0.04 +2025-03-10 14:21:55,181 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1647857142857 | Take profit: 2070.0905214285713 +2025-03-10 14:21:55,466 - INFO - CLOSED short at 2105.83 | PnL: -0.20% | $-0.57 +2025-03-10 14:21:55,466 - INFO - OPENED LONG at 2105.83 | Stop loss: 2095.284264285714 | Take profit: 2137.4423285714283 +2025-03-10 14:21:55,510 - INFO - CLOSED long at 2103.64 | PnL: -0.10% | $-0.39 +2025-03-10 14:21:55,510 - INFO - OPENED SHORT at 2103.64 | Stop loss: 2114.1747857142855 | Take profit: 2072.0605214285715 +2025-03-10 14:21:56,036 - INFO - STOP LOSS hit for short at 2114.1747857142855 | PnL: -0.50% | $-1.13 +2025-03-10 14:21:56,059 - INFO - OPENED SHORT at 2113.61 | Stop loss: 2124.194635714286 | Take profit: 2081.8809714285717 +2025-03-10 14:21:56,273 - INFO - CLOSED short at 2118.72 | PnL: -0.24% | $-0.64 +2025-03-10 14:21:56,273 - INFO - OPENED LONG at 2118.72 | Stop loss: 2108.109814285714 | Take profit: 2150.525678571428 +2025-03-10 14:21:56,312 - INFO - CLOSED long at 2117.39 | PnL: -0.06% | $-0.30 +2025-03-10 14:21:56,313 - INFO - OPENED SHORT at 2117.39 | Stop loss: 2127.993535714286 | Take profit: 2085.6042714285713 +2025-03-10 14:21:56,701 - INFO - STOP LOSS hit for short at 2127.993535714286 | PnL: -0.50% | $-1.11 +2025-03-10 14:21:56,736 - INFO - OPENED SHORT at 2135.86 | Stop loss: 2146.5558857142855 | Take profit: 2103.7972214285714 +2025-03-10 14:21:57,392 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 14.3% in downtrends | Avg Win=$1.18, Avg Loss=$-0.73 +2025-03-10 14:21:57,393 - INFO - Episode 10: Reward=-15.01, Balance=$91.92, Win Rate=20.8%, Trades=24, Episode PnL=$-6.26, Total PnL=$-75.00, Max Drawdown=8.1%, Pred Accuracy=97.6% +2025-03-10 14:21:57,559 - INFO - Model saved to checkpoints/trading_agent_episode_10.pt +2025-03-10 14:21:57,560 - INFO - Checkpoint saved at episode 10 +2025-03-10 14:21:57,668 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 14:21:57,669 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2514, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 14:21:58,622 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 14:21:58,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2514, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 14:21:59,089 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:21:59,194 - INFO - CLOSED short at 2069.34 | PnL: -0.06% | $-0.33 +2025-03-10 14:21:59,220 - INFO - OPENED SHORT at 2069.19 | Stop loss: 2079.5525357142856 | Take profit: 2038.1272714285715 +2025-03-10 14:22:00,135 - INFO - CLOSED short at 2065.26 | PnL: 0.19% | $0.18 +2025-03-10 14:22:00,161 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.246035714286 | Take profit: 2036.8467714285714 +2025-03-10 14:22:00,201 - INFO - CLOSED short at 2068.8 | PnL: -0.04% | $-0.29 +2025-03-10 14:22:00,201 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.4394142857145 | Take profit: 2099.8568785714288 +2025-03-10 14:22:00,236 - INFO - CLOSED long at 2069.34 | PnL: 0.03% | $-0.15 +2025-03-10 14:22:00,236 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.703285714286 | Take profit: 2038.2750214285716 +2025-03-10 14:22:01,740 - INFO - CLOSED short at 2065.89 | PnL: 0.17% | $0.13 +2025-03-10 14:22:01,740 - INFO - OPENED LONG at 2065.89 | Stop loss: 2055.543964285714 | Take profit: 2096.9032285714284 +2025-03-10 14:22:01,763 - INFO - CLOSED long at 2063.53 | PnL: -0.11% | $-0.42 +2025-03-10 14:22:01,764 - INFO - OPENED SHORT at 2063.53 | Stop loss: 2073.8642357142858 | Take profit: 2032.5521714285717 +2025-03-10 14:22:02,755 - INFO - STOP LOSS hit for short at 2073.8642357142858 | PnL: -0.50% | $-1.18 +2025-03-10 14:22:02,787 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.416635714286 | Take profit: 2046.8149714285717 +2025-03-10 14:22:03,628 - INFO - CLOSED short at 2066.5 | PnL: 0.55% | $0.88 +2025-03-10 14:22:03,652 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.949535714286 | Take profit: 2037.5362714285716 +2025-03-10 14:22:05,490 - INFO - CLOSED short at 2065.12 | PnL: 0.17% | $0.13 +2025-03-10 14:22:05,513 - INFO - OPENED SHORT at 2068.33 | Stop loss: 2078.688235714286 | Take profit: 2037.2801714285713 +2025-03-10 14:22:05,769 - INFO - CLOSED short at 2070.31 | PnL: -0.10% | $-0.38 +2025-03-10 14:22:05,794 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.6077857142855 | Take profit: 2039.1615214285712 +2025-03-10 14:22:06,056 - INFO - STOP LOSS hit for short at 2080.6077857142855 | PnL: -0.50% | $-1.18 +2025-03-10 14:22:06,092 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:22:06,125 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.16 +2025-03-10 14:22:06,161 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:22:06,231 - INFO - CLOSED short at 2133.95 | PnL: -0.15% | $-0.48 +2025-03-10 14:22:06,231 - INFO - OPENED LONG at 2133.95 | Stop loss: 2123.263664285714 | Take profit: 2165.9841285714283 +2025-03-10 14:22:06,252 - INFO - CLOSED long at 2137.59 | PnL: 0.17% | $0.13 +2025-03-10 14:22:06,253 - INFO - OPENED SHORT at 2137.59 | Stop loss: 2148.2945357142858 | Take profit: 2105.5012714285717 +2025-03-10 14:22:07,038 - INFO - TAKE PROFIT hit for short at 2105.5012714285717 | PnL: 1.50% | $2.67 +2025-03-10 14:22:07,061 - INFO - OPENED SHORT at 2100.5 | Stop loss: 2111.0190857142857 | Take profit: 2068.9676214285714 +2025-03-10 14:22:07,934 - INFO - CLOSED short at 2083.59 | PnL: 0.81% | $1.38 +2025-03-10 14:22:07,957 - INFO - OPENED SHORT at 2086.57 | Stop loss: 2097.019435714286 | Take profit: 2055.2465714285713 +2025-03-10 14:22:08,467 - INFO - STOP LOSS hit for short at 2097.019435714286 | PnL: -0.50% | $-1.19 +2025-03-10 14:22:08,512 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.5065357142853 | Take profit: 2068.465271428571 +2025-03-10 14:22:08,977 - INFO - CLOSED short at 2103.52 | PnL: -0.17% | $-0.53 +2025-03-10 14:22:08,978 - INFO - OPENED LONG at 2103.52 | Stop loss: 2092.9858142857142 | Take profit: 2135.0976785714283 +2025-03-10 14:22:09,002 - INFO - CLOSED long at 2104.4 | PnL: 0.04% | $-0.11 +2025-03-10 14:22:09,002 - INFO - OPENED SHORT at 2104.4 | Stop loss: 2114.9385857142856 | Take profit: 2072.8091214285714 +2025-03-10 14:22:09,092 - INFO - CLOSED short at 2102.7 | PnL: 0.08% | $-0.04 +2025-03-10 14:22:09,092 - INFO - OPENED LONG at 2102.7 | Stop loss: 2092.169914285714 | Take profit: 2134.2653785714288 +2025-03-10 14:22:09,117 - INFO - CLOSED long at 2102.0 | PnL: -0.03% | $-0.26 +2025-03-10 14:22:09,118 - INFO - OPENED SHORT at 2102.0 | Stop loss: 2112.5265857142854 | Take profit: 2070.4451214285714 +2025-03-10 14:22:09,371 - INFO - STOP LOSS hit for short at 2112.5265857142854 | PnL: -0.50% | $-1.17 +2025-03-10 14:22:09,392 - INFO - OPENED SHORT at 2113.0 | Stop loss: 2123.581585714286 | Take profit: 2081.2801214285714 +2025-03-10 14:22:09,590 - INFO - CLOSED short at 2112.61 | PnL: 0.02% | $-0.16 +2025-03-10 14:22:09,590 - INFO - OPENED LONG at 2112.61 | Stop loss: 2102.0303642857143 | Take profit: 2144.3240285714287 +2025-03-10 14:22:09,628 - INFO - CLOSED long at 2118.72 | PnL: 0.29% | $0.36 +2025-03-10 14:22:09,629 - INFO - OPENED SHORT at 2118.72 | Stop loss: 2129.3301857142856 | Take profit: 2086.914321428571 +2025-03-10 14:22:10,088 - INFO - STOP LOSS hit for short at 2129.3301857142856 | PnL: -0.50% | $-1.15 +2025-03-10 14:22:10,124 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.957885714286 | Take profit: 2104.1912214285717 +2025-03-10 14:22:10,344 - INFO - CLOSED short at 2131.23 | PnL: 0.24% | $0.26 +2025-03-10 14:22:10,344 - INFO - OPENED LONG at 2131.23 | Stop loss: 2120.557264285714 | Take profit: 2163.2233285714287 +2025-03-10 14:22:10,382 - INFO - CLOSED long at 2126.43 | PnL: -0.23% | $-0.62 +2025-03-10 14:22:10,383 - INFO - OPENED SHORT at 2126.43 | Stop loss: 2137.0787357142854 | Take profit: 2094.5086714285712 +2025-03-10 14:22:10,686 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 21.4% in downtrends | Avg Win=$0.68, Avg Loss=$-0.60 +2025-03-10 14:22:10,687 - INFO - Episode 11: Reward=-9.87, Balance=$95.34, Win Rate=33.3%, Trades=27, Episode PnL=$-3.60, Total PnL=$-79.66, Max Drawdown=4.3%, Pred Accuracy=98.0% +2025-03-10 14:22:10,913 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:22:11,008 - INFO - CLOSED short at 2070.7 | PnL: -0.13% | $-0.46 +2025-03-10 14:22:11,055 - INFO - OPENED SHORT at 2069.19 | Stop loss: 2079.5525357142856 | Take profit: 2038.1272714285715 +2025-03-10 14:22:11,077 - INFO - CLOSED short at 2068.8 | PnL: 0.02% | $-0.16 +2025-03-10 14:22:11,077 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.4394142857145 | Take profit: 2099.8568785714288 +2025-03-10 14:22:11,100 - INFO - CLOSED long at 2067.6 | PnL: -0.06% | $-0.31 +2025-03-10 14:22:11,100 - INFO - OPENED SHORT at 2067.6 | Stop loss: 2077.9545857142857 | Take profit: 2036.5611214285714 +2025-03-10 14:22:11,658 - INFO - CLOSED short at 2073.9 | PnL: -0.30% | $-0.80 +2025-03-10 14:22:11,693 - INFO - OPENED SHORT at 2071.92 | Stop loss: 2082.2961857142855 | Take profit: 2040.8163214285717 +2025-03-10 14:22:12,729 - INFO - CLOSED short at 2062.89 | PnL: 0.44% | $0.65 +2025-03-10 14:22:12,730 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.558964285714 | Take profit: 2093.8582285714288 +2025-03-10 14:22:12,749 - INFO - CLOSED long at 2062.65 | PnL: -0.01% | $-0.22 +2025-03-10 14:22:12,749 - INFO - OPENED SHORT at 2062.65 | Stop loss: 2072.979835714286 | Take profit: 2031.6853714285717 +2025-03-10 14:22:13,094 - INFO - CLOSED short at 2064.5 | PnL: -0.09% | $-0.37 +2025-03-10 14:22:13,094 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.160914285714 | Take profit: 2095.4923785714286 +2025-03-10 14:22:13,117 - INFO - CLOSED long at 2063.5 | PnL: -0.05% | $-0.29 +2025-03-10 14:22:13,117 - INFO - OPENED SHORT at 2063.5 | Stop loss: 2073.8340857142857 | Take profit: 2032.5226214285715 +2025-03-10 14:22:14,660 - INFO - STOP LOSS hit for short at 2073.8340857142857 | PnL: -0.50% | $-1.17 +2025-03-10 14:22:14,681 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.416635714286 | Take profit: 2046.8149714285717 +2025-03-10 14:22:16,613 - INFO - CLOSED short at 2066.1 | PnL: 0.57% | $0.91 +2025-03-10 14:22:16,636 - INFO - OPENED SHORT at 2065.06 | Stop loss: 2075.401885714286 | Take profit: 2034.0592214285714 +2025-03-10 14:22:16,678 - INFO - CLOSED short at 2064.5 | PnL: 0.03% | $-0.14 +2025-03-10 14:22:16,678 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.160914285714 | Take profit: 2095.4923785714286 +2025-03-10 14:22:16,699 - INFO - CLOSED long at 2066.33 | PnL: 0.09% | $-0.02 +2025-03-10 14:22:16,700 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6782357142856 | Take profit: 2035.3101714285713 +2025-03-10 14:22:17,382 - INFO - CLOSED short at 2060.7 | PnL: 0.27% | $0.33 +2025-03-10 14:22:17,382 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.379914285714 | Take profit: 2091.635378571428 +2025-03-10 14:22:17,403 - INFO - CLOSED long at 2061.84 | PnL: 0.06% | $-0.09 +2025-03-10 14:22:17,403 - INFO - OPENED SHORT at 2061.84 | Stop loss: 2072.165785714286 | Take profit: 2030.8875214285715 +2025-03-10 14:22:17,564 - INFO - STOP LOSS hit for short at 2072.165785714286 | PnL: -0.50% | $-1.17 +2025-03-10 14:22:17,586 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4368357142857 | Take profit: 2042.9143714285715 +2025-03-10 14:22:17,787 - INFO - STOP LOSS hit for short at 2084.4368357142857 | PnL: -0.50% | $-1.15 +2025-03-10 14:22:17,810 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:22:17,828 - INFO - CLOSED short at 2103.02 | PnL: -0.60% | $-1.33 +2025-03-10 14:22:17,851 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:22:17,956 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.12 +2025-03-10 14:22:17,979 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:22:18,362 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.59 +2025-03-10 14:22:18,383 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:22:19,217 - INFO - CLOSED short at 2095.29 | PnL: 0.73% | $1.19 +2025-03-10 14:22:19,260 - INFO - OPENED SHORT at 2093.46 | Stop loss: 2103.943885714286 | Take profit: 2062.0332214285713 +2025-03-10 14:22:19,863 - INFO - CLOSED short at 2088.32 | PnL: 0.25% | $0.28 +2025-03-10 14:22:19,885 - INFO - OPENED SHORT at 2088.1 | Stop loss: 2098.5570857142857 | Take profit: 2056.7536214285715 +2025-03-10 14:22:20,227 - INFO - STOP LOSS hit for short at 2098.5570857142857 | PnL: -0.50% | $-1.16 +2025-03-10 14:22:20,252 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1647857142857 | Take profit: 2070.0905214285713 +2025-03-10 14:22:20,372 - INFO - CLOSED short at 2106.15 | PnL: -0.21% | $-0.60 +2025-03-10 14:22:20,372 - INFO - OPENED LONG at 2106.15 | Stop loss: 2095.602664285714 | Take profit: 2137.7671285714287 +2025-03-10 14:22:20,394 - INFO - CLOSED long at 2103.48 | PnL: -0.13% | $-0.43 +2025-03-10 14:22:20,395 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.013985714286 | Take profit: 2071.9029214285715 +2025-03-10 14:22:21,018 - INFO - STOP LOSS hit for short at 2114.013985714286 | PnL: -0.50% | $-1.13 +2025-03-10 14:22:21,041 - INFO - OPENED SHORT at 2113.61 | Stop loss: 2124.194635714286 | Take profit: 2081.8809714285717 +2025-03-10 14:22:21,581 - INFO - STOP LOSS hit for short at 2124.194635714286 | PnL: -0.50% | $-1.12 +2025-03-10 14:22:21,606 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4455357142856 | Take profit: 2095.8482714285715 +2025-03-10 14:22:22,262 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 21.4% in downtrends | Avg Win=$0.99, Avg Loss=$-0.66 +2025-03-10 14:22:22,263 - INFO - Episode 12: Reward=79.70, Balance=$92.73, Win Rate=23.1%, Trades=26, Episode PnL=$-5.92, Total PnL=$-86.94, Max Drawdown=7.3%, Pred Accuracy=98.6% +2025-03-10 14:22:22,433 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:22:22,822 - INFO - CLOSED short at 2068.76 | PnL: -0.04% | $-0.27 +2025-03-10 14:22:22,822 - INFO - OPENED LONG at 2068.76 | Stop loss: 2058.3996142857145 | Take profit: 2099.8162785714285 +2025-03-10 14:22:22,843 - INFO - CLOSED long at 2068.9 | PnL: 0.01% | $-0.18 +2025-03-10 14:22:22,843 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.261085714286 | Take profit: 2037.8416214285717 +2025-03-10 14:22:23,298 - INFO - CLOSED short at 2069.35 | PnL: -0.02% | $-0.24 +2025-03-10 14:22:23,299 - INFO - OPENED LONG at 2069.35 | Stop loss: 2058.986664285714 | Take profit: 2100.415128571429 +2025-03-10 14:22:23,321 - INFO - CLOSED long at 2068.32 | PnL: -0.05% | $-0.30 +2025-03-10 14:22:23,322 - INFO - OPENED SHORT at 2068.32 | Stop loss: 2078.678185714286 | Take profit: 2037.2703214285716 +2025-03-10 14:22:24,018 - INFO - CLOSED short at 2066.39 | PnL: 0.09% | $-0.01 +2025-03-10 14:22:24,041 - INFO - OPENED SHORT at 2064.47 | Stop loss: 2074.8089357142853 | Take profit: 2033.4780714285712 +2025-03-10 14:22:24,102 - INFO - CLOSED short at 2068.18 | PnL: -0.18% | $-0.55 +2025-03-10 14:22:24,103 - INFO - OPENED LONG at 2068.18 | Stop loss: 2057.822514285714 | Take profit: 2099.2275785714282 +2025-03-10 14:22:24,124 - INFO - CLOSED long at 2065.69 | PnL: -0.12% | $-0.43 +2025-03-10 14:22:24,124 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.0350357142856 | Take profit: 2034.6797714285715 +2025-03-10 14:22:25,195 - INFO - CLOSED short at 2063.39 | PnL: 0.11% | $0.02 +2025-03-10 14:22:25,196 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.056464285714 | Take profit: 2094.3657285714285 +2025-03-10 14:22:25,216 - INFO - CLOSED long at 2064.79 | PnL: 0.07% | $-0.06 +2025-03-10 14:22:25,217 - INFO - OPENED SHORT at 2064.79 | Stop loss: 2075.1305357142855 | Take profit: 2033.7932714285714 +2025-03-10 14:22:25,896 - INFO - CLOSED short at 2062.69 | PnL: 0.10% | $0.00 +2025-03-10 14:22:25,931 - INFO - OPENED SHORT at 2063.4 | Stop loss: 2073.733585714286 | Take profit: 2032.4241214285714 +2025-03-10 14:22:26,231 - INFO - STOP LOSS hit for short at 2073.733585714286 | PnL: -0.50% | $-1.17 +2025-03-10 14:22:26,265 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.416635714286 | Take profit: 2046.8149714285717 +2025-03-10 14:22:26,723 - INFO - CLOSED short at 2065.7 | PnL: 0.59% | $0.95 +2025-03-10 14:22:26,781 - INFO - OPENED SHORT at 2063.95 | Stop loss: 2074.2863357142855 | Take profit: 2032.9658714285713 +2025-03-10 14:22:27,451 - INFO - STOP LOSS hit for short at 2074.2863357142855 | PnL: -0.50% | $-1.17 +2025-03-10 14:22:27,489 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.461935714286 | Take profit: 2043.9190714285717 +2025-03-10 14:22:28,930 - INFO - CLOSED short at 2064.08 | PnL: 0.53% | $0.82 +2025-03-10 14:22:28,952 - INFO - OPENED SHORT at 2061.21 | Stop loss: 2071.532635714286 | Take profit: 2030.2669714285714 +2025-03-10 14:22:29,181 - INFO - CLOSED short at 2069.34 | PnL: -0.39% | $-0.96 +2025-03-10 14:22:29,201 - INFO - OPENED SHORT at 2069.81 | Stop loss: 2080.175635714286 | Take profit: 2038.7379714285714 +2025-03-10 14:22:29,418 - INFO - STOP LOSS hit for short at 2080.175635714286 | PnL: -0.50% | $-1.15 +2025-03-10 14:22:29,461 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:22:29,506 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.14 +2025-03-10 14:22:29,551 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:22:29,674 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.12 +2025-03-10 14:22:29,702 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:22:30,135 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.59 +2025-03-10 14:22:30,159 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:22:32,556 - INFO - CLOSED short at 2106.28 | PnL: 0.20% | $0.20 +2025-03-10 14:22:32,557 - INFO - OPENED LONG at 2106.28 | Stop loss: 2095.7320142857147 | Take profit: 2137.8990785714286 +2025-03-10 14:22:32,578 - INFO - CLOSED long at 2108.0 | PnL: 0.08% | $-0.03 +2025-03-10 14:22:32,578 - INFO - OPENED SHORT at 2108.0 | Stop loss: 2118.5565857142856 | Take profit: 2076.3551214285712 +2025-03-10 14:22:32,982 - INFO - STOP LOSS hit for short at 2118.5565857142856 | PnL: -0.50% | $-1.14 +2025-03-10 14:22:33,018 - INFO - OPENED SHORT at 2117.39 | Stop loss: 2127.993535714286 | Take profit: 2085.6042714285713 +2025-03-10 14:22:33,407 - INFO - STOP LOSS hit for short at 2127.993535714286 | PnL: -0.50% | $-1.13 +2025-03-10 14:22:33,444 - INFO - OPENED SHORT at 2135.86 | Stop loss: 2146.5558857142855 | Take profit: 2103.7972214285714 +2025-03-10 14:22:34,058 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 23.1% in downtrends | Avg Win=$0.76, Avg Loss=$-0.65 +2025-03-10 14:22:34,059 - INFO - Episode 13: Reward=84.65, Balance=$93.53, Win Rate=26.1%, Trades=23, Episode PnL=$-5.46, Total PnL=$-93.40, Max Drawdown=6.9%, Pred Accuracy=98.9% +2025-03-10 14:22:34,237 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:22:34,341 - INFO - CLOSED short at 2069.34 | PnL: -0.06% | $-0.33 +2025-03-10 14:22:34,363 - INFO - OPENED SHORT at 2069.19 | Stop loss: 2079.5525357142856 | Take profit: 2038.1272714285715 +2025-03-10 14:22:35,141 - INFO - CLOSED short at 2071.11 | PnL: -0.09% | $-0.38 +2025-03-10 14:22:35,160 - INFO - OPENED SHORT at 2069.46 | Stop loss: 2079.823885714286 | Take profit: 2038.3932214285715 +2025-03-10 14:22:35,415 - INFO - CLOSED short at 2065.26 | PnL: 0.20% | $0.20 +2025-03-10 14:22:35,416 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.9171142857144 | Take profit: 2096.2637785714287 +2025-03-10 14:22:35,456 - INFO - CLOSED long at 2068.58 | PnL: 0.16% | $0.12 +2025-03-10 14:22:35,456 - INFO - OPENED SHORT at 2068.58 | Stop loss: 2078.9394857142856 | Take profit: 2037.5264214285714 +2025-03-10 14:22:36,851 - INFO - CLOSED short at 2061.13 | PnL: 0.36% | $0.51 +2025-03-10 14:22:36,851 - INFO - OPENED LONG at 2061.13 | Stop loss: 2050.8077642857143 | Take profit: 2092.071828571429 +2025-03-10 14:22:36,887 - INFO - CLOSED long at 2061.9 | PnL: 0.04% | $-0.12 +2025-03-10 14:22:36,888 - INFO - OPENED SHORT at 2061.9 | Stop loss: 2072.226085714286 | Take profit: 2030.9466214285717 +2025-03-10 14:22:37,256 - INFO - CLOSED short at 2059.16 | PnL: 0.13% | $0.07 +2025-03-10 14:22:37,292 - INFO - OPENED SHORT at 2059.02 | Stop loss: 2069.3316857142854 | Take profit: 2028.1098214285712 +2025-03-10 14:22:37,868 - INFO - CLOSED short at 2066.34 | PnL: -0.36% | $-0.90 +2025-03-10 14:22:37,868 - INFO - OPENED LONG at 2066.34 | Stop loss: 2055.9917142857144 | Take profit: 2097.3599785714287 +2025-03-10 14:22:37,888 - INFO - CLOSED long at 2066.79 | PnL: 0.02% | $-0.15 +2025-03-10 14:22:37,889 - INFO - OPENED SHORT at 2066.79 | Stop loss: 2077.1405357142858 | Take profit: 2035.7632714285714 +2025-03-10 14:22:38,072 - INFO - STOP LOSS hit for short at 2077.1405357142858 | PnL: -0.50% | $-1.18 +2025-03-10 14:22:38,108 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.401635714286 | Take profit: 2043.8599714285717 +2025-03-10 14:22:38,214 - INFO - CLOSED short at 2071.6 | PnL: 0.16% | $0.12 +2025-03-10 14:22:38,214 - INFO - OPENED LONG at 2071.6 | Stop loss: 2061.225414285714 | Take profit: 2102.6988785714284 +2025-03-10 14:22:38,236 - INFO - CLOSED long at 2073.23 | PnL: 0.08% | $-0.04 +2025-03-10 14:22:38,237 - INFO - OPENED SHORT at 2073.23 | Stop loss: 2083.612735714286 | Take profit: 2042.1066714285714 +2025-03-10 14:22:39,118 - INFO - CLOSED short at 2071.99 | PnL: 0.06% | $-0.08 +2025-03-10 14:22:39,119 - INFO - OPENED LONG at 2071.99 | Stop loss: 2061.613464285714 | Take profit: 2103.0947285714283 +2025-03-10 14:22:39,143 - INFO - CLOSED long at 2068.19 | PnL: -0.18% | $-0.55 +2025-03-10 14:22:39,144 - INFO - OPENED SHORT at 2068.19 | Stop loss: 2078.547535714286 | Take profit: 2037.1422714285713 +2025-03-10 14:22:39,908 - INFO - CLOSED short at 2065.8 | PnL: 0.12% | $0.03 +2025-03-10 14:22:39,908 - INFO - OPENED LONG at 2065.8 | Stop loss: 2055.4544142857144 | Take profit: 2096.8118785714287 +2025-03-10 14:22:39,932 - INFO - CLOSED long at 2065.07 | PnL: -0.04% | $-0.26 +2025-03-10 14:22:39,932 - INFO - OPENED SHORT at 2065.07 | Stop loss: 2075.411935714286 | Take profit: 2034.0690714285715 +2025-03-10 14:22:41,046 - INFO - CLOSED short at 2070.31 | PnL: -0.25% | $-0.68 +2025-03-10 14:22:41,067 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.6077857142855 | Take profit: 2039.1615214285712 +2025-03-10 14:22:41,381 - INFO - STOP LOSS hit for short at 2080.6077857142855 | PnL: -0.50% | $-1.15 +2025-03-10 14:22:41,405 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:22:41,426 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.14 +2025-03-10 14:22:41,446 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:22:41,544 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.12 +2025-03-10 14:22:41,564 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:22:41,956 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.59 +2025-03-10 14:22:41,985 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:22:45,145 - INFO - STOP LOSS hit for short at 2121.1695857142854 | PnL: -0.50% | $-1.14 +2025-03-10 14:22:45,166 - INFO - OPENED SHORT at 2121.2 | Stop loss: 2131.8225857142857 | Take profit: 2089.357121428571 +2025-03-10 14:22:45,336 - INFO - STOP LOSS hit for short at 2131.8225857142857 | PnL: -0.50% | $-1.13 +2025-03-10 14:22:45,378 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.957885714286 | Take profit: 2104.1912214285717 +2025-03-10 14:22:45,819 - INFO - CLOSED short at 2117.98 | PnL: 0.86% | $1.40 +2025-03-10 14:22:45,841 - INFO - OPENED SHORT at 2118.8 | Stop loss: 2129.410585714286 | Take profit: 2086.9931214285716 +2025-03-10 14:22:45,960 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 38.5% in downtrends | Avg Win=$0.63, Avg Loss=$-0.65 +2025-03-10 14:22:45,960 - INFO - Episode 14: Reward=85.67, Balance=$94.69, Win Rate=33.3%, Trades=24, Episode PnL=$-4.30, Total PnL=$-98.71, Max Drawdown=7.1%, Pred Accuracy=98.7% +2025-03-10 14:22:47,188 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:22:48,400 - INFO - CLOSED short at 2063.61 | PnL: 0.21% | $0.22 +2025-03-10 14:22:48,401 - INFO - OPENED LONG at 2063.61 | Stop loss: 2053.275364285714 | Take profit: 2094.5890285714286 +2025-03-10 14:22:48,421 - INFO - CLOSED long at 2065.26 | PnL: 0.08% | $-0.04 +2025-03-10 14:22:48,421 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.602885714286 | Take profit: 2034.2562214285715 +2025-03-10 14:22:50,902 - INFO - CLOSED short at 2066.33 | PnL: -0.05% | $-0.30 +2025-03-10 14:22:50,927 - INFO - OPENED SHORT at 2066.34 | Stop loss: 2076.688285714286 | Take profit: 2035.3200214285716 +2025-03-10 14:22:51,157 - INFO - STOP LOSS hit for short at 2076.688285714286 | PnL: -0.50% | $-1.19 +2025-03-10 14:22:51,182 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.401635714286 | Take profit: 2043.8599714285717 +2025-03-10 14:22:51,262 - INFO - CLOSED short at 2071.6 | PnL: 0.16% | $0.13 +2025-03-10 14:22:51,262 - INFO - OPENED LONG at 2071.6 | Stop loss: 2061.225414285714 | Take profit: 2102.6988785714284 +2025-03-10 14:22:51,282 - INFO - CLOSED long at 2073.23 | PnL: 0.08% | $-0.04 +2025-03-10 14:22:51,282 - INFO - OPENED SHORT at 2073.23 | Stop loss: 2083.612735714286 | Take profit: 2042.1066714285714 +2025-03-10 14:22:52,144 - INFO - CLOSED short at 2070.61 | PnL: 0.13% | $0.05 +2025-03-10 14:22:52,161 - INFO - OPENED SHORT at 2071.99 | Stop loss: 2082.3665357142854 | Take profit: 2040.8852714285713 +2025-03-10 14:22:53,083 - INFO - CLOSED short at 2063.98 | PnL: 0.39% | $0.56 +2025-03-10 14:22:53,083 - INFO - OPENED LONG at 2063.98 | Stop loss: 2053.6435142857144 | Take profit: 2094.964578571429 +2025-03-10 14:22:53,124 - INFO - CLOSED long at 2066.1 | PnL: 0.10% | $0.01 +2025-03-10 14:22:53,124 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.4470857142855 | Take profit: 2035.0836214285712 +2025-03-10 14:22:53,912 - INFO - CLOSED short at 2061.84 | PnL: 0.21% | $0.21 +2025-03-10 14:22:53,913 - INFO - OPENED LONG at 2061.84 | Stop loss: 2051.5142142857144 | Take profit: 2092.7924785714285 +2025-03-10 14:22:53,953 - INFO - CLOSED long at 2062.54 | PnL: 0.03% | $-0.13 +2025-03-10 14:22:53,954 - INFO - OPENED SHORT at 2062.54 | Stop loss: 2072.8692857142855 | Take profit: 2031.5770214285715 +2025-03-10 14:22:54,103 - INFO - STOP LOSS hit for short at 2072.8692857142855 | PnL: -0.50% | $-1.19 +2025-03-10 14:22:54,146 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.3715357142855 | Take profit: 2041.8702714285712 +2025-03-10 14:22:54,329 - INFO - STOP LOSS hit for short at 2083.3715357142855 | PnL: -0.50% | $-1.17 +2025-03-10 14:22:54,366 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:22:54,388 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.16 +2025-03-10 14:22:54,408 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:22:54,512 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.14 +2025-03-10 14:22:54,532 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:22:54,927 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.64 +2025-03-10 14:22:54,946 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:22:55,069 - INFO - CLOSED short at 2112.46 | PnL: -0.09% | $-0.36 +2025-03-10 14:22:55,069 - INFO - OPENED LONG at 2112.46 | Stop loss: 2101.8811142857144 | Take profit: 2144.1717785714286 +2025-03-10 14:22:55,110 - INFO - CLOSED long at 2113.24 | PnL: 0.04% | $-0.12 +2025-03-10 14:22:55,110 - INFO - OPENED SHORT at 2113.24 | Stop loss: 2123.8227857142856 | Take profit: 2081.516521428571 +2025-03-10 14:22:55,193 - INFO - CLOSED short at 2116.48 | PnL: -0.15% | $-0.49 +2025-03-10 14:22:55,217 - INFO - OPENED SHORT at 2114.8 | Stop loss: 2125.390585714286 | Take profit: 2083.0531214285716 +2025-03-10 14:22:55,501 - INFO - CLOSED short at 2099.25 | PnL: 0.74% | $1.22 +2025-03-10 14:22:55,537 - INFO - OPENED SHORT at 2098.9 | Stop loss: 2109.4110857142855 | Take profit: 2067.3916214285714 +2025-03-10 14:22:57,559 - INFO - STOP LOSS hit for short at 2109.4110857142855 | PnL: -0.50% | $-1.16 +2025-03-10 14:22:57,581 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.440935714286 | Take profit: 2079.1820714285714 +2025-03-10 14:22:58,361 - INFO - STOP LOSS hit for short at 2121.440935714286 | PnL: -0.50% | $-1.15 +2025-03-10 14:22:58,387 - INFO - OPENED SHORT at 2121.2 | Stop loss: 2131.8225857142857 | Take profit: 2089.357121428571 +2025-03-10 14:22:58,475 - INFO - STOP LOSS hit for short at 2131.8225857142857 | PnL: -0.50% | $-1.14 +2025-03-10 14:22:58,521 - INFO - OPENED SHORT at 2135.51 | Stop loss: 2146.2041357142857 | Take profit: 2103.4524714285717 +2025-03-10 14:22:59,089 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 35.7% in downtrends | Avg Win=$0.63, Avg Loss=$-0.72 +2025-03-10 14:22:59,090 - INFO - Episode 15: Reward=91.69, Balance=$94.24, Win Rate=34.8%, Trades=23, Episode PnL=$-5.43, Total PnL=$-104.47, Max Drawdown=5.8%, Pred Accuracy=98.5% +2025-03-10 14:22:59,327 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:22:59,873 - INFO - CLOSED short at 2071.4 | PnL: -0.16% | $-0.52 +2025-03-10 14:22:59,874 - INFO - OPENED LONG at 2071.4 | Stop loss: 2061.0264142857145 | Take profit: 2102.495878571429 +2025-03-10 14:22:59,896 - INFO - CLOSED long at 2071.39 | PnL: -0.00% | $-0.20 +2025-03-10 14:22:59,896 - INFO - OPENED SHORT at 2071.39 | Stop loss: 2081.7635357142854 | Take profit: 2040.2942714285712 +2025-03-10 14:23:00,108 - INFO - CLOSED short at 2071.92 | PnL: -0.03% | $-0.25 +2025-03-10 14:23:00,144 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.768585714286 | Take profit: 2039.3191214285714 +2025-03-10 14:23:03,147 - INFO - CLOSED short at 2078.01 | PnL: -0.37% | $-0.92 +2025-03-10 14:23:03,172 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.401635714286 | Take profit: 2043.8599714285717 +2025-03-10 14:23:04,270 - INFO - CLOSED short at 2068.67 | PnL: 0.31% | $0.40 +2025-03-10 14:23:04,270 - INFO - OPENED LONG at 2068.67 | Stop loss: 2058.3100642857144 | Take profit: 2099.724928571429 +2025-03-10 14:23:04,297 - INFO - CLOSED long at 2070.67 | PnL: 0.10% | $-0.01 +2025-03-10 14:23:04,297 - INFO - OPENED SHORT at 2070.67 | Stop loss: 2081.039935714286 | Take profit: 2039.5850714285716 +2025-03-10 14:23:05,911 - INFO - CLOSED short at 2064.08 | PnL: 0.32% | $0.43 +2025-03-10 14:23:05,935 - INFO - OPENED SHORT at 2061.21 | Stop loss: 2071.532635714286 | Take profit: 2030.2669714285714 +2025-03-10 14:23:06,283 - INFO - STOP LOSS hit for short at 2071.532635714286 | PnL: -0.50% | $-1.18 +2025-03-10 14:23:06,314 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4368357142857 | Take profit: 2042.9143714285715 +2025-03-10 14:23:06,570 - INFO - CLOSED short at 2085.56 | PnL: -0.55% | $-1.27 +2025-03-10 14:23:06,594 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:23:06,618 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.15 +2025-03-10 14:23:06,642 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:23:06,750 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.14 +2025-03-10 14:23:06,787 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:23:06,920 - INFO - CLOSED short at 2126.99 | PnL: 0.67% | $1.06 +2025-03-10 14:23:06,921 - INFO - OPENED LONG at 2126.99 | Stop loss: 2116.338464285714 | Take profit: 2158.919728571428 +2025-03-10 14:23:06,957 - INFO - CLOSED long at 2127.3 | PnL: 0.01% | $-0.16 +2025-03-10 14:23:06,958 - INFO - OPENED SHORT at 2127.3 | Stop loss: 2137.953085714286 | Take profit: 2095.3656214285716 +2025-03-10 14:23:07,622 - INFO - TAKE PROFIT hit for short at 2095.3656214285716 | PnL: 1.50% | $2.64 +2025-03-10 14:23:07,659 - INFO - OPENED SHORT at 2099.53 | Stop loss: 2110.044235714286 | Take profit: 2068.0121714285715 +2025-03-10 14:23:07,776 - INFO - CLOSED short at 2099.25 | PnL: 0.01% | $-0.17 +2025-03-10 14:23:07,797 - INFO - OPENED SHORT at 2098.9 | Stop loss: 2109.4110857142855 | Take profit: 2067.3916214285714 +2025-03-10 14:23:08,594 - INFO - CLOSED short at 2085.83 | PnL: 0.62% | $1.01 +2025-03-10 14:23:08,594 - INFO - OPENED LONG at 2085.83 | Stop loss: 2075.3842642857144 | Take profit: 2117.1423285714286 +2025-03-10 14:23:08,615 - INFO - CLOSED long at 2085.85 | PnL: 0.00% | $-0.19 +2025-03-10 14:23:08,615 - INFO - OPENED SHORT at 2085.85 | Stop loss: 2096.2958357142857 | Take profit: 2054.5373714285715 +2025-03-10 14:23:09,014 - INFO - STOP LOSS hit for short at 2096.2958357142857 | PnL: -0.50% | $-1.17 +2025-03-10 14:23:09,038 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.5065357142853 | Take profit: 2068.465271428571 +2025-03-10 14:23:09,429 - INFO - CLOSED short at 2103.52 | PnL: -0.17% | $-0.52 +2025-03-10 14:23:09,429 - INFO - OPENED LONG at 2103.52 | Stop loss: 2092.9858142857142 | Take profit: 2135.0976785714283 +2025-03-10 14:23:09,450 - INFO - CLOSED long at 2104.4 | PnL: 0.04% | $-0.11 +2025-03-10 14:23:09,451 - INFO - OPENED SHORT at 2104.4 | Stop loss: 2114.9385857142856 | Take profit: 2072.8091214285714 +2025-03-10 14:23:09,834 - INFO - STOP LOSS hit for short at 2114.9385857142856 | PnL: -0.50% | $-1.15 +2025-03-10 14:23:09,857 - INFO - OPENED SHORT at 2113.61 | Stop loss: 2124.194635714286 | Take profit: 2081.8809714285717 +2025-03-10 14:23:10,436 - INFO - STOP LOSS hit for short at 2124.194635714286 | PnL: -0.50% | $-1.14 +2025-03-10 14:23:10,472 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4455357142856 | Take profit: 2095.8482714285715 +2025-03-10 14:23:11,110 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 33.3% in downtrends | Avg Win=$1.11, Avg Loss=$-0.66 +2025-03-10 14:23:11,112 - INFO - Episode 16: Reward=82.35, Balance=$94.30, Win Rate=22.7%, Trades=22, Episode PnL=$-5.03, Total PnL=$-110.17, Max Drawdown=5.8%, Pred Accuracy=98.6% +2025-03-10 14:23:11,418 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:23:11,821 - INFO - CLOSED short at 2065.08 | PnL: 0.14% | $0.08 +2025-03-10 14:23:11,844 - INFO - OPENED SHORT at 2066.18 | Stop loss: 2076.527485714286 | Take profit: 2035.1624214285712 +2025-03-10 14:23:13,493 - INFO - CLOSED short at 2064.96 | PnL: 0.06% | $-0.08 +2025-03-10 14:23:13,494 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.6186142857146 | Take profit: 2095.9592785714285 +2025-03-10 14:23:13,515 - INFO - CLOSED long at 2066.24 | PnL: 0.06% | $-0.08 +2025-03-10 14:23:13,516 - INFO - OPENED SHORT at 2066.24 | Stop loss: 2076.5877857142855 | Take profit: 2035.2215214285714 +2025-03-10 14:23:13,895 - INFO - CLOSED short at 2060.31 | PnL: 0.29% | $0.37 +2025-03-10 14:23:13,895 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.991864285714 | Take profit: 2091.2395285714283 +2025-03-10 14:23:13,918 - INFO - CLOSED long at 2061.8 | PnL: 0.07% | $-0.06 +2025-03-10 14:23:13,918 - INFO - OPENED SHORT at 2061.8 | Stop loss: 2072.125585714286 | Take profit: 2030.8481214285716 +2025-03-10 14:23:14,645 - INFO - CLOSED short at 2055.6 | PnL: 0.30% | $0.40 +2025-03-10 14:23:14,667 - INFO - OPENED SHORT at 2054.89 | Stop loss: 2065.181035714286 | Take profit: 2024.0417714285713 +2025-03-10 14:23:14,960 - INFO - STOP LOSS hit for short at 2065.181035714286 | PnL: -0.50% | $-1.20 +2025-03-10 14:23:14,982 - INFO - OPENED SHORT at 2066.01 | Stop loss: 2076.356635714286 | Take profit: 2034.9949714285715 +2025-03-10 14:23:15,234 - INFO - CLOSED short at 2074.3 | PnL: -0.40% | $-0.99 +2025-03-10 14:23:15,234 - INFO - OPENED LONG at 2074.3 | Stop loss: 2063.9119142857144 | Take profit: 2105.4393785714287 +2025-03-10 14:23:15,274 - INFO - CLOSED long at 2078.01 | PnL: 0.18% | $0.15 +2025-03-10 14:23:15,274 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.416635714286 | Take profit: 2046.8149714285717 +2025-03-10 14:23:16,711 - INFO - CLOSED short at 2072.09 | PnL: 0.28% | $0.36 +2025-03-10 14:23:16,711 - INFO - OPENED LONG at 2072.09 | Stop loss: 2061.7129642857144 | Take profit: 2103.196228571429 +2025-03-10 14:23:16,735 - INFO - CLOSED long at 2069.97 | PnL: -0.10% | $-0.40 +2025-03-10 14:23:16,736 - INFO - OPENED SHORT at 2069.97 | Stop loss: 2080.3364357142855 | Take profit: 2038.8955714285712 +2025-03-10 14:23:18,131 - INFO - CLOSED short at 2061.84 | PnL: 0.39% | $0.57 +2025-03-10 14:23:18,131 - INFO - OPENED LONG at 2061.84 | Stop loss: 2051.5142142857144 | Take profit: 2092.7924785714285 +2025-03-10 14:23:18,166 - INFO - CLOSED long at 2062.54 | PnL: 0.03% | $-0.13 +2025-03-10 14:23:18,166 - INFO - OPENED SHORT at 2062.54 | Stop loss: 2072.8692857142855 | Take profit: 2031.5770214285715 +2025-03-10 14:23:18,321 - INFO - STOP LOSS hit for short at 2072.8692857142855 | PnL: -0.50% | $-1.18 +2025-03-10 14:23:18,342 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4368357142857 | Take profit: 2042.9143714285715 +2025-03-10 14:23:18,563 - INFO - STOP LOSS hit for short at 2084.4368357142857 | PnL: -0.50% | $-1.17 +2025-03-10 14:23:18,583 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:23:18,605 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.15 +2025-03-10 14:23:18,629 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:23:18,730 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.14 +2025-03-10 14:23:18,750 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:23:19,141 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.62 +2025-03-10 14:23:19,162 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:23:20,402 - INFO - CLOSED short at 2083.59 | PnL: 1.28% | $2.27 +2025-03-10 14:23:20,402 - INFO - OPENED LONG at 2083.59 | Stop loss: 2073.1554642857145 | Take profit: 2114.868728571429 +2025-03-10 14:23:20,443 - INFO - CLOSED long at 2086.57 | PnL: 0.14% | $0.08 +2025-03-10 14:23:20,443 - INFO - OPENED SHORT at 2086.57 | Stop loss: 2097.019435714286 | Take profit: 2055.2465714285713 +2025-03-10 14:23:20,945 - INFO - STOP LOSS hit for short at 2097.019435714286 | PnL: -0.50% | $-1.18 +2025-03-10 14:23:20,967 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.5065357142853 | Take profit: 2068.465271428571 +2025-03-10 14:23:21,625 - INFO - STOP LOSS hit for short at 2110.5065357142853 | PnL: -0.50% | $-1.17 +2025-03-10 14:23:21,662 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.440935714286 | Take profit: 2079.1820714285714 +2025-03-10 14:23:21,940 - INFO - CLOSED short at 2108.99 | PnL: 0.09% | $-0.02 +2025-03-10 14:23:21,968 - INFO - OPENED SHORT at 2111.19 | Stop loss: 2121.7625357142856 | Take profit: 2079.4972714285714 +2025-03-10 14:23:22,389 - INFO - STOP LOSS hit for short at 2121.7625357142856 | PnL: -0.50% | $-1.16 +2025-03-10 14:23:22,424 - INFO - OPENED SHORT at 2121.2 | Stop loss: 2131.8225857142857 | Take profit: 2089.357121428571 +2025-03-10 14:23:22,549 - INFO - STOP LOSS hit for short at 2131.8225857142857 | PnL: -0.50% | $-1.14 +2025-03-10 14:23:22,570 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.957885714286 | Take profit: 2104.1912214285717 +2025-03-10 14:23:22,990 - INFO - CLOSED short at 2117.98 | PnL: 0.86% | $1.42 +2025-03-10 14:23:22,991 - INFO - OPENED LONG at 2117.98 | Stop loss: 2107.3735142857145 | Take profit: 2149.7745785714287 +2025-03-10 14:23:23,010 - INFO - CLOSED long at 2118.8 | PnL: 0.04% | $-0.12 +2025-03-10 14:23:23,011 - INFO - OPENED SHORT at 2118.8 | Stop loss: 2129.410585714286 | Take profit: 2086.9931214285716 +2025-03-10 14:23:23,132 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 35.3% in downtrends | Avg Win=$0.83, Avg Loss=$-0.73 +2025-03-10 14:23:23,133 - INFO - Episode 17: Reward=94.42, Balance=$95.99, Win Rate=37.0%, Trades=27, Episode PnL=$-3.48, Total PnL=$-114.18, Max Drawdown=6.2%, Pred Accuracy=98.8% +2025-03-10 14:23:23,440 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:23:24,157 - INFO - CLOSED short at 2072.15 | PnL: -0.20% | $-0.59 +2025-03-10 14:23:24,158 - INFO - OPENED LONG at 2072.15 | Stop loss: 2061.772664285714 | Take profit: 2103.257128571429 +2025-03-10 14:23:24,178 - INFO - CLOSED long at 2074.29 | PnL: 0.10% | $0.01 +2025-03-10 14:23:24,178 - INFO - OPENED SHORT at 2074.29 | Stop loss: 2084.6780357142857 | Take profit: 2043.1507714285715 +2025-03-10 14:23:25,052 - INFO - CLOSED short at 2064.47 | PnL: 0.47% | $0.74 +2025-03-10 14:23:25,053 - INFO - OPENED LONG at 2064.47 | Stop loss: 2054.1310642857143 | Take profit: 2095.4619285714284 +2025-03-10 14:23:25,074 - INFO - CLOSED long at 2070.04 | PnL: 0.27% | $0.34 +2025-03-10 14:23:25,075 - INFO - OPENED SHORT at 2070.04 | Stop loss: 2080.4067857142854 | Take profit: 2038.9645214285713 +2025-03-10 14:23:27,548 - INFO - CLOSED short at 2068.79 | PnL: 0.06% | $-0.08 +2025-03-10 14:23:27,549 - INFO - OPENED LONG at 2068.79 | Stop loss: 2058.4294642857144 | Take profit: 2099.8467285714282 +2025-03-10 14:23:27,593 - INFO - CLOSED long at 2072.99 | PnL: 0.20% | $0.21 +2025-03-10 14:23:27,594 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.3715357142855 | Take profit: 2041.8702714285712 +2025-03-10 14:23:28,186 - INFO - CLOSED short at 2070.9 | PnL: 0.10% | $0.00 +2025-03-10 14:23:28,207 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.0550357142856 | Take profit: 2038.6197714285713 +2025-03-10 14:23:29,888 - INFO - CLOSED short at 2066.59 | PnL: 0.15% | $0.10 +2025-03-10 14:23:29,889 - INFO - OPENED LONG at 2066.59 | Stop loss: 2056.2404642857146 | Take profit: 2097.613728571429 +2025-03-10 14:23:29,908 - INFO - CLOSED long at 2064.08 | PnL: -0.12% | $-0.44 +2025-03-10 14:23:29,908 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.4169857142856 | Take profit: 2033.0939214285713 +2025-03-10 14:23:30,322 - INFO - CLOSED short at 2074.9 | PnL: -0.52% | $-1.24 +2025-03-10 14:23:30,344 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.4769857142855 | Take profit: 2044.9139214285713 +2025-03-10 14:23:30,437 - INFO - STOP LOSS hit for short at 2086.4769857142855 | PnL: -0.50% | $-1.18 +2025-03-10 14:23:30,473 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.5516857142857 | Take profit: 2071.4498214285713 +2025-03-10 14:23:30,507 - INFO - STOP LOSS hit for short at 2113.5516857142857 | PnL: -0.50% | $-1.17 +2025-03-10 14:23:30,544 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2542857142857 | Take profit: 2107.4220214285715 +2025-03-10 14:23:31,371 - INFO - TAKE PROFIT hit for short at 2107.4220214285715 | PnL: 1.50% | $2.69 +2025-03-10 14:23:31,393 - INFO - OPENED SHORT at 2108.06 | Stop loss: 2118.6168857142857 | Take profit: 2076.414221428571 +2025-03-10 14:23:31,906 - INFO - CLOSED short at 2093.33 | PnL: 0.70% | $1.18 +2025-03-10 14:23:31,906 - INFO - OPENED LONG at 2093.33 | Stop loss: 2082.8467642857145 | Take profit: 2124.754828571429 +2025-03-10 14:23:31,926 - INFO - CLOSED long at 2092.46 | PnL: -0.04% | $-0.28 +2025-03-10 14:23:31,927 - INFO - OPENED SHORT at 2092.46 | Stop loss: 2102.938885714286 | Take profit: 2061.0482214285717 +2025-03-10 14:23:33,092 - INFO - STOP LOSS hit for short at 2102.938885714286 | PnL: -0.50% | $-1.20 +2025-03-10 14:23:33,114 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.013985714286 | Take profit: 2071.9029214285715 +2025-03-10 14:23:33,747 - INFO - STOP LOSS hit for short at 2114.013985714286 | PnL: -0.50% | $-1.18 +2025-03-10 14:23:33,769 - INFO - OPENED SHORT at 2113.61 | Stop loss: 2124.194635714286 | Take profit: 2081.8809714285717 +2025-03-10 14:23:33,987 - INFO - CLOSED short at 2117.39 | PnL: -0.18% | $-0.54 +2025-03-10 14:23:33,987 - INFO - OPENED LONG at 2117.39 | Stop loss: 2106.7864642857144 | Take profit: 2149.1757285714284 +2025-03-10 14:23:34,028 - INFO - CLOSED long at 2115.3 | PnL: -0.10% | $-0.38 +2025-03-10 14:23:34,028 - INFO - OPENED SHORT at 2115.3 | Stop loss: 2125.893085714286 | Take profit: 2083.545621428572 +2025-03-10 14:23:34,375 - INFO - STOP LOSS hit for short at 2125.893085714286 | PnL: -0.50% | $-1.16 +2025-03-10 14:23:34,412 - INFO - OPENED SHORT at 2129.3 | Stop loss: 2139.9630857142856 | Take profit: 2097.335621428572 +2025-03-10 14:23:35,044 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 33.3% in downtrends | Avg Win=$0.66, Avg Loss=$-0.79 +2025-03-10 14:23:35,045 - INFO - Episode 18: Reward=89.45, Balance=$95.81, Win Rate=40.0%, Trades=20, Episode PnL=$-3.63, Total PnL=$-118.37, Max Drawdown=4.8%, Pred Accuracy=99.0% +2025-03-10 14:23:35,224 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:23:37,182 - INFO - CLOSED short at 2063.59 | PnL: 0.21% | $0.23 +2025-03-10 14:23:37,183 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.2554642857144 | Take profit: 2094.5687285714284 +2025-03-10 14:23:37,204 - INFO - CLOSED long at 2064.96 | PnL: 0.07% | $-0.07 +2025-03-10 14:23:37,204 - INFO - OPENED SHORT at 2064.96 | Stop loss: 2075.3013857142855 | Take profit: 2033.9607214285713 +2025-03-10 14:23:38,990 - INFO - STOP LOSS hit for short at 2075.3013857142855 | PnL: -0.50% | $-1.19 +2025-03-10 14:23:39,026 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.401635714286 | Take profit: 2043.8599714285717 +2025-03-10 14:23:40,112 - INFO - CLOSED short at 2068.67 | PnL: 0.31% | $0.40 +2025-03-10 14:23:40,112 - INFO - OPENED LONG at 2068.67 | Stop loss: 2058.3100642857144 | Take profit: 2099.724928571429 +2025-03-10 14:23:40,137 - INFO - CLOSED long at 2070.67 | PnL: 0.10% | $-0.01 +2025-03-10 14:23:40,138 - INFO - OPENED SHORT at 2070.67 | Stop loss: 2081.039935714286 | Take profit: 2039.5850714285716 +2025-03-10 14:23:41,291 - INFO - CLOSED short at 2053.01 | PnL: 0.85% | $1.48 +2025-03-10 14:23:41,312 - INFO - OPENED SHORT at 2049.21 | Stop loss: 2059.472635714286 | Take profit: 2018.4469714285715 +2025-03-10 14:23:41,510 - INFO - STOP LOSS hit for short at 2059.472635714286 | PnL: -0.50% | $-1.20 +2025-03-10 14:23:41,548 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.2360857142858 | Take profit: 2032.9166214285715 +2025-03-10 14:23:42,114 - INFO - STOP LOSS hit for short at 2074.2360857142858 | PnL: -0.50% | $-1.19 +2025-03-10 14:23:42,139 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.4769857142855 | Take profit: 2044.9139214285713 +2025-03-10 14:23:42,235 - INFO - STOP LOSS hit for short at 2086.4769857142855 | PnL: -0.50% | $-1.17 +2025-03-10 14:23:42,272 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.5516857142857 | Take profit: 2071.4498214285713 +2025-03-10 14:23:42,310 - INFO - STOP LOSS hit for short at 2113.5516857142857 | PnL: -0.50% | $-1.16 +2025-03-10 14:23:42,347 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2542857142857 | Take profit: 2107.4220214285715 +2025-03-10 14:23:43,081 - INFO - CLOSED short at 2112.99 | PnL: 1.24% | $2.18 +2025-03-10 14:23:43,125 - INFO - OPENED SHORT at 2120.81 | Stop loss: 2131.4306357142855 | Take profit: 2088.9729714285713 +2025-03-10 14:23:43,321 - INFO - CLOSED short at 2100.5 | PnL: 0.96% | $1.67 +2025-03-10 14:23:43,322 - INFO - OPENED LONG at 2100.5 | Stop loss: 2089.9809142857143 | Take profit: 2132.0323785714286 +2025-03-10 14:23:43,345 - INFO - CLOSED long at 2090.0 | PnL: -0.50% | $-1.19 +2025-03-10 14:23:43,345 - INFO - OPENED SHORT at 2090.0 | Stop loss: 2100.4665857142854 | Take profit: 2058.625121428571 +2025-03-10 14:23:43,451 - INFO - STOP LOSS hit for short at 2100.4665857142854 | PnL: -0.50% | $-1.18 +2025-03-10 14:23:43,490 - INFO - OPENED SHORT at 2102.29 | Stop loss: 2112.8180357142855 | Take profit: 2070.730771428571 +2025-03-10 14:23:43,817 - INFO - CLOSED short at 2093.46 | PnL: 0.42% | $0.62 +2025-03-10 14:23:43,852 - INFO - OPENED SHORT at 2093.33 | Stop loss: 2103.8132357142854 | Take profit: 2061.905171428571 +2025-03-10 14:23:44,222 - INFO - CLOSED short at 2085.09 | PnL: 0.39% | $0.57 +2025-03-10 14:23:44,222 - INFO - OPENED LONG at 2085.09 | Stop loss: 2074.6479642857144 | Take profit: 2116.391228571429 +2025-03-10 14:23:44,262 - INFO - CLOSED long at 2083.59 | PnL: -0.07% | $-0.34 +2025-03-10 14:23:44,263 - INFO - OPENED SHORT at 2083.59 | Stop loss: 2094.024535714286 | Take profit: 2052.3112714285717 +2025-03-10 14:23:44,533 - INFO - CLOSED short at 2087.78 | PnL: -0.20% | $-0.59 +2025-03-10 14:23:44,533 - INFO - OPENED LONG at 2087.78 | Stop loss: 2077.3245142857145 | Take profit: 2119.121578571429 +2025-03-10 14:23:44,558 - INFO - CLOSED long at 2086.81 | PnL: -0.05% | $-0.28 +2025-03-10 14:23:44,558 - INFO - OPENED SHORT at 2086.81 | Stop loss: 2097.260635714286 | Take profit: 2055.4829714285715 +2025-03-10 14:23:44,788 - INFO - STOP LOSS hit for short at 2097.260635714286 | PnL: -0.50% | $-1.16 +2025-03-10 14:23:44,809 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.5065357142853 | Take profit: 2068.465271428571 +2025-03-10 14:23:45,478 - INFO - STOP LOSS hit for short at 2110.5065357142853 | PnL: -0.50% | $-1.15 +2025-03-10 14:23:45,514 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.440935714286 | Take profit: 2079.1820714285714 +2025-03-10 14:23:46,141 - INFO - STOP LOSS hit for short at 2121.440935714286 | PnL: -0.50% | $-1.14 +2025-03-10 14:23:46,177 - INFO - OPENED SHORT at 2121.2 | Stop loss: 2131.8225857142857 | Take profit: 2089.357121428571 +2025-03-10 14:23:46,309 - INFO - STOP LOSS hit for short at 2131.8225857142857 | PnL: -0.50% | $-1.12 +2025-03-10 14:23:46,348 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.957885714286 | Take profit: 2104.1912214285717 +2025-03-10 14:23:46,530 - INFO - CLOSED short at 2135.55 | PnL: 0.03% | $-0.12 +2025-03-10 14:23:46,555 - INFO - OPENED SHORT at 2131.23 | Stop loss: 2141.902735714286 | Take profit: 2099.2366714285713 +2025-03-10 14:23:46,904 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 26.7% in downtrends | Avg Win=$1.02, Avg Loss=$-0.84 +2025-03-10 14:23:46,905 - INFO - Episode 19: Reward=94.18, Balance=$92.89, Win Rate=29.2%, Trades=24, Episode PnL=$-5.22, Total PnL=$-125.48, Max Drawdown=7.9%, Pred Accuracy=99.0% +2025-03-10 14:23:47,867 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:23:48,552 - INFO - CLOSED short at 2072.75 | PnL: -0.23% | $-0.65 +2025-03-10 14:23:48,552 - INFO - OPENED LONG at 2072.75 | Stop loss: 2062.3696642857144 | Take profit: 2103.866128571429 +2025-03-10 14:23:48,587 - INFO - CLOSED long at 2073.11 | PnL: 0.02% | $-0.16 +2025-03-10 14:23:48,588 - INFO - OPENED SHORT at 2073.11 | Stop loss: 2083.4921357142857 | Take profit: 2041.9884714285715 +2025-03-10 14:23:49,003 - INFO - CLOSED short at 2065.26 | PnL: 0.38% | $0.55 +2025-03-10 14:23:49,040 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.246035714286 | Take profit: 2036.8467714285714 +2025-03-10 14:23:49,979 - INFO - CLOSED short at 2066.24 | PnL: 0.08% | $-0.04 +2025-03-10 14:23:49,979 - INFO - OPENED LONG at 2066.24 | Stop loss: 2055.892214285714 | Take profit: 2097.2584785714284 +2025-03-10 14:23:49,999 - INFO - CLOSED long at 2067.1 | PnL: 0.04% | $-0.12 +2025-03-10 14:23:49,999 - INFO - OPENED SHORT at 2067.1 | Stop loss: 2077.4520857142857 | Take profit: 2036.0686214285715 +2025-03-10 14:23:51,286 - INFO - CLOSED short at 2062.69 | PnL: 0.21% | $0.22 +2025-03-10 14:23:51,308 - INFO - OPENED SHORT at 2063.4 | Stop loss: 2073.733585714286 | Take profit: 2032.4241214285714 +2025-03-10 14:23:51,551 - INFO - CLOSED short at 2067.01 | PnL: -0.17% | $-0.54 +2025-03-10 14:23:51,551 - INFO - OPENED LONG at 2067.01 | Stop loss: 2056.6583642857145 | Take profit: 2098.0400285714286 +2025-03-10 14:23:51,572 - INFO - CLOSED long at 2065.69 | PnL: -0.06% | $-0.32 +2025-03-10 14:23:51,572 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.0350357142856 | Take profit: 2034.6797714285715 +2025-03-10 14:23:51,651 - INFO - STOP LOSS hit for short at 2076.0350357142856 | PnL: -0.50% | $-1.18 +2025-03-10 14:23:51,672 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.401635714286 | Take profit: 2043.8599714285717 +2025-03-10 14:23:53,616 - INFO - CLOSED short at 2063.39 | PnL: 0.56% | $0.89 +2025-03-10 14:23:53,640 - INFO - OPENED SHORT at 2062.34 | Stop loss: 2072.668285714286 | Take profit: 2031.3800214285716 +2025-03-10 14:23:54,677 - INFO - STOP LOSS hit for short at 2072.668285714286 | PnL: -0.50% | $-1.18 +2025-03-10 14:23:54,709 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4368357142857 | Take profit: 2042.9143714285715 +2025-03-10 14:23:54,872 - INFO - STOP LOSS hit for short at 2084.4368357142857 | PnL: -0.50% | $-1.16 +2025-03-10 14:23:54,892 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:23:54,914 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.15 +2025-03-10 14:23:54,935 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:23:55,094 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.13 +2025-03-10 14:23:55,131 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:23:55,529 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.61 +2025-03-10 14:23:55,556 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:23:55,601 - INFO - CLOSED short at 2112.09 | PnL: -0.07% | $-0.33 +2025-03-10 14:23:55,621 - INFO - OPENED SHORT at 2112.95 | Stop loss: 2123.531335714286 | Take profit: 2081.2308714285714 +2025-03-10 14:23:56,684 - INFO - TAKE PROFIT hit for short at 2081.2308714285714 | PnL: 1.50% | $2.68 +2025-03-10 14:23:56,720 - INFO - OPENED SHORT at 2081.25 | Stop loss: 2091.6728357142856 | Take profit: 2050.006371428571 +2025-03-10 14:23:57,005 - INFO - CLOSED short at 2087.0 | PnL: -0.28% | $-0.74 +2025-03-10 14:23:57,005 - INFO - OPENED LONG at 2087.0 | Stop loss: 2076.5484142857144 | Take profit: 2118.3298785714287 +2025-03-10 14:23:57,043 - INFO - CLOSED long at 2087.47 | PnL: 0.02% | $-0.15 +2025-03-10 14:23:57,044 - INFO - OPENED SHORT at 2087.47 | Stop loss: 2097.923935714285 | Take profit: 2056.133071428571 +2025-03-10 14:23:57,307 - INFO - STOP LOSS hit for short at 2097.923935714285 | PnL: -0.50% | $-1.17 +2025-03-10 14:23:57,331 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1647857142857 | Take profit: 2070.0905214285713 +2025-03-10 14:23:58,030 - INFO - STOP LOSS hit for short at 2112.1647857142857 | PnL: -0.50% | $-1.16 +2025-03-10 14:23:58,075 - INFO - OPENED SHORT at 2110.4 | Stop loss: 2120.968585714286 | Take profit: 2078.7191214285717 +2025-03-10 14:23:58,876 - INFO - STOP LOSS hit for short at 2120.968585714286 | PnL: -0.50% | $-1.14 +2025-03-10 14:23:58,901 - INFO - OPENED SHORT at 2121.2 | Stop loss: 2131.8225857142857 | Take profit: 2089.357121428571 +2025-03-10 14:23:59,021 - INFO - STOP LOSS hit for short at 2131.8225857142857 | PnL: -0.50% | $-1.13 +2025-03-10 14:23:59,069 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.957885714286 | Take profit: 2104.1912214285717 +2025-03-10 14:23:59,644 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 13.3% in downtrends | Avg Win=$1.39, Avg Loss=$-0.75 +2025-03-10 14:23:59,645 - INFO - Episode 20: Reward=83.91, Balance=$93.51, Win Rate=21.7%, Trades=23, Episode PnL=$-5.74, Total PnL=$-131.97, Max Drawdown=6.5%, Pred Accuracy=99.1% +2025-03-10 14:23:59,792 - INFO - Model saved to checkpoints/trading_agent_episode_20.pt +2025-03-10 14:23:59,793 - INFO - Checkpoint saved at episode 20 +2025-03-10 14:23:59,793 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:23:59,854 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 14:23:59,856 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2514, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 14:24:00,691 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 14:24:00,691 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2514, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 14:24:00,859 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:24:02,712 - INFO - CLOSED short at 2061.78 | PnL: 0.30% | $0.40 +2025-03-10 14:24:02,733 - INFO - OPENED SHORT at 2059.59 | Stop loss: 2069.904535714286 | Take profit: 2028.6712714285716 +2025-03-10 14:24:02,966 - INFO - CLOSED short at 2064.45 | PnL: -0.24% | $-0.67 +2025-03-10 14:24:02,967 - INFO - OPENED LONG at 2064.45 | Stop loss: 2054.111164285714 | Take profit: 2095.4416285714283 +2025-03-10 14:24:02,987 - INFO - CLOSED long at 2064.08 | PnL: -0.02% | $-0.23 +2025-03-10 14:24:02,987 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.4169857142856 | Take profit: 2033.0939214285713 +2025-03-10 14:24:03,527 - INFO - CLOSED short at 2065.89 | PnL: -0.09% | $-0.37 +2025-03-10 14:24:03,528 - INFO - OPENED LONG at 2065.89 | Stop loss: 2055.543964285714 | Take profit: 2096.9032285714284 +2025-03-10 14:24:03,553 - INFO - CLOSED long at 2063.53 | PnL: -0.11% | $-0.42 +2025-03-10 14:24:03,554 - INFO - OPENED SHORT at 2063.53 | Stop loss: 2073.8642357142858 | Take profit: 2032.5521714285717 +2025-03-10 14:24:03,689 - INFO - CLOSED short at 2061.7 | PnL: 0.09% | $-0.02 +2025-03-10 14:24:03,725 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0200857142854 | Take profit: 2029.7646214285712 +2025-03-10 14:24:04,213 - INFO - CLOSED short at 2061.66 | PnL: -0.05% | $-0.29 +2025-03-10 14:24:04,214 - INFO - OPENED LONG at 2061.66 | Stop loss: 2051.335114285714 | Take profit: 2092.6097785714283 +2025-03-10 14:24:04,240 - INFO - CLOSED long at 2061.5 | PnL: -0.01% | $-0.21 +2025-03-10 14:24:04,241 - INFO - OPENED SHORT at 2061.5 | Stop loss: 2071.8240857142855 | Take profit: 2030.5526214285715 +2025-03-10 14:24:04,613 - INFO - CLOSED short at 2065.69 | PnL: -0.20% | $-0.59 +2025-03-10 14:24:04,638 - INFO - OPENED SHORT at 2069.79 | Stop loss: 2080.1555357142856 | Take profit: 2038.7182714285714 +2025-03-10 14:24:04,656 - INFO - CLOSED short at 2072.0 | PnL: -0.11% | $-0.40 +2025-03-10 14:24:04,681 - INFO - OPENED SHORT at 2074.3 | Stop loss: 2084.688085714286 | Take profit: 2043.1606214285716 +2025-03-10 14:24:06,595 - INFO - CLOSED short at 2065.07 | PnL: 0.44% | $0.67 +2025-03-10 14:24:06,597 - INFO - OPENED LONG at 2065.07 | Stop loss: 2054.7280642857145 | Take profit: 2096.070928571429 +2025-03-10 14:24:06,617 - INFO - CLOSED long at 2066.09 | PnL: 0.05% | $-0.10 +2025-03-10 14:24:06,617 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.437035714286 | Take profit: 2035.0737714285715 +2025-03-10 14:24:07,867 - INFO - STOP LOSS hit for short at 2076.437035714286 | PnL: -0.50% | $-1.17 +2025-03-10 14:24:07,887 - INFO - OPENED SHORT at 2085.56 | Stop loss: 2096.0043857142855 | Take profit: 2054.2517214285713 +2025-03-10 14:24:07,930 - INFO - STOP LOSS hit for short at 2096.0043857142855 | PnL: -0.50% | $-1.15 +2025-03-10 14:24:07,963 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:24:08,128 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.14 +2025-03-10 14:24:08,152 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:24:08,556 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.62 +2025-03-10 14:24:08,575 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:24:08,999 - INFO - CLOSED short at 2098.1 | PnL: 0.59% | $0.95 +2025-03-10 14:24:09,020 - INFO - OPENED SHORT at 2102.19 | Stop loss: 2112.717535714286 | Take profit: 2070.6322714285716 +2025-03-10 14:24:10,971 - INFO - CLOSED short at 2105.2 | PnL: -0.14% | $-0.47 +2025-03-10 14:24:10,971 - INFO - OPENED LONG at 2105.2 | Stop loss: 2094.6574142857144 | Take profit: 2136.802878571428 +2025-03-10 14:24:10,993 - INFO - CLOSED long at 2103.52 | PnL: -0.08% | $-0.35 +2025-03-10 14:24:10,994 - INFO - OPENED SHORT at 2103.52 | Stop loss: 2114.0541857142857 | Take profit: 2071.9423214285716 +2025-03-10 14:24:11,415 - INFO - STOP LOSS hit for short at 2114.0541857142857 | PnL: -0.50% | $-1.16 +2025-03-10 14:24:11,437 - INFO - OPENED SHORT at 2113.61 | Stop loss: 2124.194635714286 | Take profit: 2081.8809714285717 +2025-03-10 14:24:12,009 - INFO - STOP LOSS hit for short at 2124.194635714286 | PnL: -0.50% | $-1.14 +2025-03-10 14:24:12,079 - INFO - OPENED SHORT at 2129.3 | Stop loss: 2139.9630857142856 | Take profit: 2097.335621428572 +2025-03-10 14:24:12,768 - INFO - CLOSED short at 2121.53 | PnL: 0.36% | $0.50 +2025-03-10 14:24:12,812 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.6366357142856 | Take profit: 2090.1549714285716 +2025-03-10 14:24:12,853 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 18.2% in downtrends | Avg Win=$1.03, Avg Loss=$-0.58 +2025-03-10 14:24:12,854 - INFO - Episode 21: Reward=80.40, Balance=$95.25, Win Rate=22.7%, Trades=22, Episode PnL=$-3.43, Total PnL=$-136.72, Max Drawdown=6.1%, Pred Accuracy=99.1% +2025-03-10 14:24:12,855 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:24:13,113 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:24:13,296 - INFO - CLOSED short at 2067.6 | PnL: 0.02% | $-0.16 +2025-03-10 14:24:13,296 - INFO - OPENED LONG at 2067.6 | Stop loss: 2057.245414285714 | Take profit: 2098.6388785714284 +2025-03-10 14:24:13,321 - INFO - CLOSED long at 2067.51 | PnL: -0.00% | $-0.21 +2025-03-10 14:24:13,322 - INFO - OPENED SHORT at 2067.51 | Stop loss: 2077.864135714286 | Take profit: 2036.4724714285717 +2025-03-10 14:24:16,462 - INFO - CLOSED short at 2059.46 | PnL: 0.39% | $0.57 +2025-03-10 14:24:16,484 - INFO - OPENED SHORT at 2057.4 | Stop loss: 2067.7035857142855 | Take profit: 2026.5141214285716 +2025-03-10 14:24:17,173 - INFO - STOP LOSS hit for short at 2067.7035857142855 | PnL: -0.50% | $-1.19 +2025-03-10 14:24:17,195 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3765857142857 | Take profit: 2040.8951214285714 +2025-03-10 14:24:17,956 - INFO - CLOSED short at 2065.5 | PnL: 0.31% | $0.42 +2025-03-10 14:24:17,978 - INFO - OPENED SHORT at 2067.53 | Stop loss: 2077.8842357142858 | Take profit: 2036.4921714285717 +2025-03-10 14:24:18,579 - INFO - CLOSED short at 2074.35 | PnL: -0.33% | $-0.85 +2025-03-10 14:24:18,579 - INFO - OPENED LONG at 2074.35 | Stop loss: 2063.961664285714 | Take profit: 2105.4901285714286 +2025-03-10 14:24:18,626 - INFO - CLOSED long at 2073.27 | PnL: -0.05% | $-0.30 +2025-03-10 14:24:18,626 - INFO - OPENED SHORT at 2073.27 | Stop loss: 2083.652935714286 | Take profit: 2042.1460714285713 +2025-03-10 14:24:18,768 - INFO - CLOSED short at 2076.9 | PnL: -0.18% | $-0.54 +2025-03-10 14:24:18,769 - INFO - OPENED LONG at 2076.9 | Stop loss: 2066.4989142857144 | Take profit: 2108.078378571429 +2025-03-10 14:24:18,792 - INFO - CLOSED long at 2075.61 | PnL: -0.06% | $-0.31 +2025-03-10 14:24:18,792 - INFO - OPENED SHORT at 2075.61 | Stop loss: 2086.004635714286 | Take profit: 2044.4509714285716 +2025-03-10 14:24:20,631 - INFO - CLOSED short at 2072.99 | PnL: 0.13% | $0.05 +2025-03-10 14:24:20,632 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.608464285714 | Take profit: 2104.1097285714286 +2025-03-10 14:24:20,678 - INFO - CLOSED long at 2071.89 | PnL: -0.05% | $-0.30 +2025-03-10 14:24:20,678 - INFO - OPENED SHORT at 2071.89 | Stop loss: 2082.2660357142854 | Take profit: 2040.7867714285715 +2025-03-10 14:24:20,811 - INFO - STOP LOSS hit for short at 2082.2660357142854 | PnL: -0.50% | $-1.16 +2025-03-10 14:24:20,833 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:24:20,857 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.14 +2025-03-10 14:24:20,880 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:24:21,011 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.13 +2025-03-10 14:24:21,049 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:24:21,462 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.61 +2025-03-10 14:24:21,503 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:24:21,585 - INFO - CLOSED short at 2112.95 | PnL: -0.11% | $-0.40 +2025-03-10 14:24:21,608 - INFO - OPENED SHORT at 2112.46 | Stop loss: 2123.038885714286 | Take profit: 2080.7482214285715 +2025-03-10 14:24:21,951 - INFO - CLOSED short at 2090.0 | PnL: 1.06% | $1.83 +2025-03-10 14:24:21,976 - INFO - OPENED SHORT at 2099.53 | Stop loss: 2110.044235714286 | Take profit: 2068.0121714285715 +2025-03-10 14:24:23,587 - INFO - CLOSED short at 2100.89 | PnL: -0.06% | $-0.32 +2025-03-10 14:24:23,588 - INFO - OPENED LONG at 2100.89 | Stop loss: 2090.368964285714 | Take profit: 2132.4282285714285 +2025-03-10 14:24:23,610 - INFO - CLOSED long at 2099.73 | PnL: -0.06% | $-0.30 +2025-03-10 14:24:23,610 - INFO - OPENED SHORT at 2099.73 | Stop loss: 2110.2452357142856 | Take profit: 2068.2091714285716 +2025-03-10 14:24:24,167 - INFO - STOP LOSS hit for short at 2110.2452357142856 | PnL: -0.50% | $-1.16 +2025-03-10 14:24:24,204 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.440935714286 | Take profit: 2079.1820714285714 +2025-03-10 14:24:24,954 - INFO - STOP LOSS hit for short at 2121.440935714286 | PnL: -0.50% | $-1.14 +2025-03-10 14:24:25,006 - INFO - OPENED SHORT at 2121.2 | Stop loss: 2131.8225857142857 | Take profit: 2089.357121428571 +2025-03-10 14:24:25,172 - INFO - STOP LOSS hit for short at 2131.8225857142857 | PnL: -0.50% | $-1.13 +2025-03-10 14:24:25,196 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.957885714286 | Take profit: 2104.1912214285717 +2025-03-10 14:24:25,828 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 15.4% in downtrends | Avg Win=$1.10, Avg Loss=$-0.69 +2025-03-10 14:24:25,829 - INFO - Episode 22: Reward=177.34, Balance=$93.74, Win Rate=22.7%, Trades=22, Episode PnL=$-4.85, Total PnL=$-142.98, Max Drawdown=6.5%, Pred Accuracy=99.6% +2025-03-10 14:24:25,829 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:24:26,099 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:24:26,727 - INFO - CLOSED short at 2072.75 | PnL: -0.23% | $-0.65 +2025-03-10 14:24:26,750 - INFO - OPENED SHORT at 2073.11 | Stop loss: 2083.4921357142857 | Take profit: 2041.9884714285715 +2025-03-10 14:24:27,827 - INFO - CLOSED short at 2064.47 | PnL: 0.42% | $0.62 +2025-03-10 14:24:27,854 - INFO - OPENED SHORT at 2070.04 | Stop loss: 2080.4067857142854 | Take profit: 2038.9645214285713 +2025-03-10 14:24:28,553 - INFO - CLOSED short at 2061.6 | PnL: 0.41% | $0.61 +2025-03-10 14:24:28,553 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.2754142857143 | Take profit: 2092.5488785714283 +2025-03-10 14:24:28,575 - INFO - CLOSED long at 2060.9 | PnL: -0.03% | $-0.27 +2025-03-10 14:24:28,575 - INFO - OPENED SHORT at 2060.9 | Stop loss: 2071.221085714286 | Take profit: 2029.9616214285713 +2025-03-10 14:24:28,661 - INFO - CLOSED short at 2060.31 | PnL: 0.03% | $-0.14 +2025-03-10 14:24:28,683 - INFO - OPENED SHORT at 2061.8 | Stop loss: 2072.125585714286 | Take profit: 2030.8481214285716 +2025-03-10 14:24:28,704 - INFO - CLOSED short at 2064.7 | PnL: -0.14% | $-0.48 +2025-03-10 14:24:28,726 - INFO - OPENED SHORT at 2062.61 | Stop loss: 2072.939635714286 | Take profit: 2031.6459714285716 +2025-03-10 14:24:30,058 - INFO - STOP LOSS hit for short at 2072.939635714286 | PnL: -0.50% | $-1.19 +2025-03-10 14:24:30,113 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.416635714286 | Take profit: 2046.8149714285717 +2025-03-10 14:24:30,638 - INFO - CLOSED short at 2065.7 | PnL: 0.59% | $0.96 +2025-03-10 14:24:30,638 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.354914285714 | Take profit: 2096.7103785714285 +2025-03-10 14:24:30,660 - INFO - CLOSED long at 2065.66 | PnL: -0.00% | $-0.20 +2025-03-10 14:24:30,661 - INFO - OPENED SHORT at 2065.66 | Stop loss: 2076.0048857142856 | Take profit: 2034.6502214285713 +2025-03-10 14:24:31,605 - INFO - STOP LOSS hit for short at 2076.0048857142856 | PnL: -0.50% | $-1.18 +2025-03-10 14:24:31,642 - INFO - OPENED SHORT at 2075.61 | Stop loss: 2086.004635714286 | Take profit: 2044.4509714285716 +2025-03-10 14:24:32,701 - INFO - CLOSED short at 2057.11 | PnL: 0.89% | $1.54 +2025-03-10 14:24:32,723 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.1960357142857 | Take profit: 2026.9967714285713 +2025-03-10 14:24:32,953 - INFO - STOP LOSS hit for short at 2068.1960357142857 | PnL: -0.50% | $-1.19 +2025-03-10 14:24:32,976 - INFO - OPENED SHORT at 2067.49 | Stop loss: 2077.8440357142854 | Take profit: 2036.4527714285712 +2025-03-10 14:24:33,510 - INFO - STOP LOSS hit for short at 2077.8440357142854 | PnL: -0.50% | $-1.17 +2025-03-10 14:24:33,532 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:24:33,577 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.16 +2025-03-10 14:24:33,618 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:24:33,763 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.15 +2025-03-10 14:24:33,787 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:24:34,209 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.64 +2025-03-10 14:24:34,231 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:24:34,603 - INFO - CLOSED short at 2103.33 | PnL: 0.34% | $0.47 +2025-03-10 14:24:34,604 - INFO - OPENED LONG at 2103.33 | Stop loss: 2092.7967642857143 | Take profit: 2134.9048285714284 +2025-03-10 14:24:34,626 - INFO - CLOSED long at 2100.5 | PnL: -0.13% | $-0.46 +2025-03-10 14:24:34,626 - INFO - OPENED SHORT at 2100.5 | Stop loss: 2111.0190857142857 | Take profit: 2068.9676214285714 +2025-03-10 14:24:35,086 - INFO - CLOSED short at 2093.46 | PnL: 0.34% | $0.46 +2025-03-10 14:24:35,109 - INFO - OPENED SHORT at 2093.33 | Stop loss: 2103.8132357142854 | Take profit: 2061.905171428571 +2025-03-10 14:24:35,191 - INFO - CLOSED short at 2094.72 | PnL: -0.07% | $-0.32 +2025-03-10 14:24:35,236 - INFO - OPENED SHORT at 2094.08 | Stop loss: 2104.5669857142857 | Take profit: 2062.643921428571 +2025-03-10 14:24:36,376 - INFO - STOP LOSS hit for short at 2104.5669857142857 | PnL: -0.50% | $-1.17 +2025-03-10 14:24:36,414 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.013985714286 | Take profit: 2071.9029214285715 +2025-03-10 14:24:37,117 - INFO - STOP LOSS hit for short at 2114.013985714286 | PnL: -0.50% | $-1.15 +2025-03-10 14:24:37,149 - INFO - OPENED SHORT at 2113.61 | Stop loss: 2124.194635714286 | Take profit: 2081.8809714285717 +2025-03-10 14:24:37,361 - INFO - CLOSED short at 2111.19 | PnL: 0.11% | $0.03 +2025-03-10 14:24:37,389 - INFO - OPENED SHORT at 2112.61 | Stop loss: 2123.1896357142855 | Take profit: 2080.8959714285716 +2025-03-10 14:24:37,435 - INFO - CLOSED short at 2117.39 | PnL: -0.23% | $-0.62 +2025-03-10 14:24:37,435 - INFO - OPENED LONG at 2117.39 | Stop loss: 2106.7864642857144 | Take profit: 2149.1757285714284 +2025-03-10 14:24:37,458 - INFO - CLOSED long at 2115.3 | PnL: -0.10% | $-0.37 +2025-03-10 14:24:37,458 - INFO - OPENED SHORT at 2115.3 | Stop loss: 2125.893085714286 | Take profit: 2083.545621428572 +2025-03-10 14:24:37,824 - INFO - STOP LOSS hit for short at 2125.893085714286 | PnL: -0.50% | $-1.13 +2025-03-10 14:24:37,846 - INFO - OPENED SHORT at 2129.3 | Stop loss: 2139.9630857142856 | Take profit: 2097.335621428572 +2025-03-10 14:24:38,545 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 28.6% in downtrends | Avg Win=$0.92, Avg Loss=$-0.78 +2025-03-10 14:24:38,546 - INFO - Episode 23: Reward=183.51, Balance=$93.34, Win Rate=30.8%, Trades=26, Episode PnL=$-5.36, Total PnL=$-149.64, Max Drawdown=6.8%, Pred Accuracy=99.7% +2025-03-10 14:24:38,546 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:24:38,731 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:24:39,713 - INFO - CLOSED short at 2067.79 | PnL: 0.01% | $-0.18 +2025-03-10 14:24:39,713 - INFO - OPENED LONG at 2067.79 | Stop loss: 2057.434464285714 | Take profit: 2098.8317285714284 +2025-03-10 14:24:39,735 - INFO - CLOSED long at 2067.46 | PnL: -0.02% | $-0.23 +2025-03-10 14:24:39,735 - INFO - OPENED SHORT at 2067.46 | Stop loss: 2077.813885714286 | Take profit: 2036.4232214285714 +2025-03-10 14:24:40,282 - INFO - CLOSED short at 2067.84 | PnL: -0.02% | $-0.23 +2025-03-10 14:24:40,323 - INFO - OPENED SHORT at 2067.11 | Stop loss: 2077.4621357142855 | Take profit: 2036.0784714285717 +2025-03-10 14:24:40,391 - INFO - CLOSED short at 2066.1 | PnL: 0.05% | $-0.10 +2025-03-10 14:24:40,417 - INFO - OPENED SHORT at 2065.28 | Stop loss: 2075.6229857142857 | Take profit: 2034.2759214285716 +2025-03-10 14:24:42,101 - INFO - CLOSED short at 2058.28 | PnL: 0.34% | $0.47 +2025-03-10 14:24:42,102 - INFO - OPENED LONG at 2058.28 | Stop loss: 2047.9720142857145 | Take profit: 2089.179078571429 +2025-03-10 14:24:42,124 - INFO - CLOSED long at 2056.28 | PnL: -0.10% | $-0.39 +2025-03-10 14:24:42,125 - INFO - OPENED SHORT at 2056.28 | Stop loss: 2066.577985714286 | Take profit: 2025.4109214285716 +2025-03-10 14:24:42,352 - INFO - CLOSED short at 2061.66 | PnL: -0.26% | $-0.71 +2025-03-10 14:24:42,377 - INFO - OPENED SHORT at 2061.5 | Stop loss: 2071.8240857142855 | Take profit: 2030.5526214285715 +2025-03-10 14:24:42,811 - INFO - STOP LOSS hit for short at 2071.8240857142855 | PnL: -0.50% | $-1.18 +2025-03-10 14:24:42,837 - INFO - OPENED SHORT at 2074.3 | Stop loss: 2084.688085714286 | Take profit: 2043.1606214285716 +2025-03-10 14:24:44,674 - INFO - CLOSED short at 2070.19 | PnL: 0.20% | $0.19 +2025-03-10 14:24:44,714 - INFO - OPENED SHORT at 2070.1 | Stop loss: 2080.4670857142855 | Take profit: 2039.0236214285712 +2025-03-10 14:24:46,338 - INFO - STOP LOSS hit for short at 2080.4670857142855 | PnL: -0.50% | $-1.16 +2025-03-10 14:24:46,362 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:24:46,384 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.15 +2025-03-10 14:24:46,408 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:24:46,511 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.14 +2025-03-10 14:24:46,535 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:24:46,643 - INFO - CLOSED short at 2134.78 | PnL: 0.30% | $0.38 +2025-03-10 14:24:46,644 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.0895142857144 | Take profit: 2166.826578571429 +2025-03-10 14:24:46,689 - INFO - CLOSED long at 2126.99 | PnL: -0.36% | $-0.87 +2025-03-10 14:24:46,689 - INFO - OPENED SHORT at 2126.99 | Stop loss: 2137.6415357142855 | Take profit: 2095.0602714285715 +2025-03-10 14:24:47,257 - INFO - CLOSED short at 2110.9 | PnL: 0.76% | $1.22 +2025-03-10 14:24:47,278 - INFO - OPENED SHORT at 2108.71 | Stop loss: 2119.270135714286 | Take profit: 2077.0544714285716 +2025-03-10 14:24:49,092 - INFO - CLOSED short at 2106.15 | PnL: 0.12% | $0.04 +2025-03-10 14:24:49,129 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.013985714286 | Take profit: 2071.9029214285715 +2025-03-10 14:24:49,730 - INFO - STOP LOSS hit for short at 2114.013985714286 | PnL: -0.50% | $-1.13 +2025-03-10 14:24:49,767 - INFO - OPENED SHORT at 2113.61 | Stop loss: 2124.194635714286 | Take profit: 2081.8809714285717 +2025-03-10 14:24:50,407 - INFO - CLOSED short at 2125.11 | PnL: -0.54% | $-1.20 +2025-03-10 14:24:50,407 - INFO - OPENED LONG at 2125.11 | Stop loss: 2114.4678642857143 | Take profit: 2157.0115285714287 +2025-03-10 14:24:50,428 - INFO - CLOSED long at 2127.79 | PnL: 0.13% | $0.05 +2025-03-10 14:24:50,429 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4455357142856 | Take profit: 2095.8482714285715 +2025-03-10 14:24:51,189 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 22.2% in downtrends | Avg Win=$0.39, Avg Loss=$-0.74 +2025-03-10 14:24:51,191 - INFO - Episode 24: Reward=180.98, Balance=$92.68, Win Rate=31.6%, Trades=19, Episode PnL=$-5.88, Total PnL=$-156.96, Max Drawdown=6.2%, Pred Accuracy=99.9% +2025-03-10 14:24:51,191 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:24:52,117 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:24:52,555 - INFO - CLOSED short at 2068.9 | PnL: -0.04% | $-0.28 +2025-03-10 14:24:52,596 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.949535714286 | Take profit: 2037.5362714285716 +2025-03-10 14:24:52,745 - INFO - CLOSED short at 2072.75 | PnL: -0.20% | $-0.60 +2025-03-10 14:24:52,782 - INFO - OPENED SHORT at 2073.11 | Stop loss: 2083.4921357142857 | Take profit: 2041.9884714285715 +2025-03-10 14:24:53,066 - INFO - CLOSED short at 2068.32 | PnL: 0.23% | $0.26 +2025-03-10 14:24:53,067 - INFO - OPENED LONG at 2068.32 | Stop loss: 2057.9618142857144 | Take profit: 2099.3696785714287 +2025-03-10 14:24:53,090 - INFO - CLOSED long at 2067.0 | PnL: -0.06% | $-0.32 +2025-03-10 14:24:53,090 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.3515857142856 | Take profit: 2035.9701214285715 +2025-03-10 14:24:54,185 - INFO - CLOSED short at 2059.59 | PnL: 0.36% | $0.51 +2025-03-10 14:24:54,186 - INFO - OPENED LONG at 2059.59 | Stop loss: 2049.2754642857144 | Take profit: 2090.5087285714285 +2025-03-10 14:24:54,207 - INFO - CLOSED long at 2061.3 | PnL: 0.08% | $-0.03 +2025-03-10 14:24:54,207 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.623085714286 | Take profit: 2030.3556214285716 +2025-03-10 14:24:54,270 - INFO - CLOSED short at 2066.24 | PnL: -0.24% | $-0.67 +2025-03-10 14:24:54,271 - INFO - OPENED LONG at 2066.24 | Stop loss: 2055.892214285714 | Take profit: 2097.2584785714284 +2025-03-10 14:24:54,292 - INFO - CLOSED long at 2067.1 | PnL: 0.04% | $-0.11 +2025-03-10 14:24:54,293 - INFO - OPENED SHORT at 2067.1 | Stop loss: 2077.4520857142857 | Take profit: 2036.0686214285715 +2025-03-10 14:24:54,576 - INFO - CLOSED short at 2060.9 | PnL: 0.30% | $0.39 +2025-03-10 14:24:54,576 - INFO - OPENED LONG at 2060.9 | Stop loss: 2050.5789142857143 | Take profit: 2091.8383785714286 +2025-03-10 14:24:54,597 - INFO - CLOSED long at 2060.65 | PnL: -0.01% | $-0.22 +2025-03-10 14:24:54,597 - INFO - OPENED SHORT at 2060.65 | Stop loss: 2070.969835714286 | Take profit: 2029.7153714285716 +2025-03-10 14:24:56,115 - INFO - STOP LOSS hit for short at 2070.969835714286 | PnL: -0.50% | $-1.18 +2025-03-10 14:24:56,140 - INFO - OPENED SHORT at 2074.3 | Stop loss: 2084.688085714286 | Take profit: 2043.1606214285716 +2025-03-10 14:24:57,288 - INFO - CLOSED short at 2070.8 | PnL: 0.17% | $0.13 +2025-03-10 14:24:57,325 - INFO - OPENED SHORT at 2070.35 | Stop loss: 2080.718335714286 | Take profit: 2039.2698714285714 +2025-03-10 14:24:58,023 - INFO - CLOSED short at 2068.1 | PnL: 0.11% | $0.02 +2025-03-10 14:24:58,023 - INFO - OPENED LONG at 2068.1 | Stop loss: 2057.742914285714 | Take profit: 2099.1463785714286 +2025-03-10 14:24:58,074 - INFO - CLOSED long at 2069.0 | PnL: 0.04% | $-0.11 +2025-03-10 14:24:58,074 - INFO - OPENED SHORT at 2069.0 | Stop loss: 2079.361585714286 | Take profit: 2037.9401214285715 +2025-03-10 14:25:00,013 - INFO - STOP LOSS hit for short at 2079.361585714286 | PnL: -0.50% | $-1.17 +2025-03-10 14:25:00,036 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:25:00,062 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.15 +2025-03-10 14:25:00,090 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:25:00,259 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.14 +2025-03-10 14:25:00,299 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:25:00,732 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.62 +2025-03-10 14:25:00,755 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:25:04,649 - INFO - STOP LOSS hit for short at 2121.1695857142854 | PnL: -0.50% | $-1.16 +2025-03-10 14:25:04,681 - INFO - OPENED SHORT at 2121.2 | Stop loss: 2131.8225857142857 | Take profit: 2089.357121428571 +2025-03-10 14:25:04,789 - INFO - STOP LOSS hit for short at 2131.8225857142857 | PnL: -0.50% | $-1.14 +2025-03-10 14:25:04,813 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.957885714286 | Take profit: 2104.1912214285717 +2025-03-10 14:25:05,416 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 41.7% in downtrends | Avg Win=$0.66, Avg Loss=$-0.66 +2025-03-10 14:25:05,417 - INFO - Episode 25: Reward=181.02, Balance=$94.65, Win Rate=30.0%, Trades=20, Episode PnL=$-4.55, Total PnL=$-162.31, Max Drawdown=5.7%, Pred Accuracy=99.7% +2025-03-10 14:25:05,418 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:25:05,612 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:25:05,667 - INFO - CLOSED short at 2070.36 | PnL: -0.11% | $-0.42 +2025-03-10 14:25:05,696 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.261085714286 | Take profit: 2037.8416214285717 +2025-03-10 14:25:05,867 - INFO - CLOSED short at 2067.51 | PnL: 0.07% | $-0.06 +2025-03-10 14:25:05,867 - INFO - OPENED LONG at 2067.51 | Stop loss: 2057.1558642857144 | Take profit: 2098.5475285714288 +2025-03-10 14:25:05,898 - INFO - CLOSED long at 2069.01 | PnL: 0.07% | $-0.05 +2025-03-10 14:25:05,899 - INFO - OPENED SHORT at 2069.01 | Stop loss: 2079.3716357142857 | Take profit: 2037.9499714285716 +2025-03-10 14:25:06,472 - INFO - CLOSED short at 2071.39 | PnL: -0.12% | $-0.42 +2025-03-10 14:25:06,536 - INFO - OPENED SHORT at 2071.36 | Stop loss: 2081.7333857142858 | Take profit: 2040.2647214285716 +2025-03-10 14:25:06,560 - INFO - CLOSED short at 2072.75 | PnL: -0.07% | $-0.33 +2025-03-10 14:25:06,560 - INFO - OPENED LONG at 2072.75 | Stop loss: 2062.3696642857144 | Take profit: 2103.866128571429 +2025-03-10 14:25:06,587 - INFO - CLOSED long at 2073.11 | PnL: 0.02% | $-0.16 +2025-03-10 14:25:06,588 - INFO - OPENED SHORT at 2073.11 | Stop loss: 2083.4921357142857 | Take profit: 2041.9884714285715 +2025-03-10 14:25:07,586 - INFO - CLOSED short at 2066.1 | PnL: 0.34% | $0.47 +2025-03-10 14:25:07,586 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.7529142857143 | Take profit: 2097.1163785714284 +2025-03-10 14:25:07,635 - INFO - CLOSED long at 2065.28 | PnL: -0.04% | $-0.27 +2025-03-10 14:25:07,637 - INFO - OPENED SHORT at 2065.28 | Stop loss: 2075.6229857142857 | Take profit: 2034.2759214285716 +2025-03-10 14:25:09,281 - INFO - CLOSED short at 2059.16 | PnL: 0.30% | $0.38 +2025-03-10 14:25:09,325 - INFO - OPENED SHORT at 2059.02 | Stop loss: 2069.3316857142854 | Take profit: 2028.1098214285712 +2025-03-10 14:25:09,437 - INFO - CLOSED short at 2058.28 | PnL: 0.04% | $-0.13 +2025-03-10 14:25:09,437 - INFO - OPENED LONG at 2058.28 | Stop loss: 2047.9720142857145 | Take profit: 2089.179078571429 +2025-03-10 14:25:09,459 - INFO - CLOSED long at 2056.28 | PnL: -0.10% | $-0.39 +2025-03-10 14:25:09,460 - INFO - OPENED SHORT at 2056.28 | Stop loss: 2066.577985714286 | Take profit: 2025.4109214285716 +2025-03-10 14:25:10,019 - INFO - STOP LOSS hit for short at 2066.577985714286 | PnL: -0.50% | $-1.18 +2025-03-10 14:25:10,074 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.6832357142857 | Take profit: 2036.2951714285712 +2025-03-10 14:25:10,232 - INFO - STOP LOSS hit for short at 2077.6832357142857 | PnL: -0.50% | $-1.16 +2025-03-10 14:25:10,255 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.401635714286 | Take profit: 2043.8599714285717 +2025-03-10 14:25:10,994 - INFO - CLOSED short at 2064.31 | PnL: 0.52% | $0.79 +2025-03-10 14:25:11,026 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.844085714286 | Take profit: 2034.4926214285715 +2025-03-10 14:25:12,002 - INFO - STOP LOSS hit for short at 2075.844085714286 | PnL: -0.50% | $-1.16 +2025-03-10 14:25:12,060 - INFO - OPENED SHORT at 2075.61 | Stop loss: 2086.004635714286 | Take profit: 2044.4509714285716 +2025-03-10 14:25:13,561 - INFO - CLOSED short at 2051.99 | PnL: 1.14% | $1.98 +2025-03-10 14:25:13,600 - INFO - OPENED SHORT at 2058.3 | Stop loss: 2068.6080857142856 | Take profit: 2027.4006214285716 +2025-03-10 14:25:14,143 - INFO - STOP LOSS hit for short at 2068.6080857142856 | PnL: -0.50% | $-1.17 +2025-03-10 14:25:14,191 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.6077857142855 | Take profit: 2039.1615214285712 +2025-03-10 14:25:14,587 - INFO - STOP LOSS hit for short at 2080.6077857142855 | PnL: -0.50% | $-1.15 +2025-03-10 14:25:14,646 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:25:14,704 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.14 +2025-03-10 14:25:14,735 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:25:14,865 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.13 +2025-03-10 14:25:14,887 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:25:15,418 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.59 +2025-03-10 14:25:15,465 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:25:15,638 - INFO - CLOSED short at 2112.99 | PnL: -0.11% | $-0.41 +2025-03-10 14:25:15,661 - INFO - OPENED SHORT at 2120.81 | Stop loss: 2131.4306357142855 | Take profit: 2088.9729714285713 +2025-03-10 14:25:16,767 - INFO - TAKE PROFIT hit for short at 2088.9729714285713 | PnL: 1.50% | $2.66 +2025-03-10 14:25:16,800 - INFO - OPENED SHORT at 2083.28 | Stop loss: 2093.712985714286 | Take profit: 2052.0059214285716 +2025-03-10 14:25:17,479 - INFO - CLOSED short at 2087.47 | PnL: -0.20% | $-0.59 +2025-03-10 14:25:17,479 - INFO - OPENED LONG at 2087.47 | Stop loss: 2077.016064285714 | Take profit: 2118.8069285714287 +2025-03-10 14:25:17,535 - INFO - CLOSED long at 2087.78 | PnL: 0.01% | $-0.16 +2025-03-10 14:25:17,536 - INFO - OPENED SHORT at 2087.78 | Stop loss: 2098.235485714286 | Take profit: 2056.4384214285715 +2025-03-10 14:25:17,840 - INFO - STOP LOSS hit for short at 2098.235485714286 | PnL: -0.50% | $-1.16 +2025-03-10 14:25:17,893 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1647857142857 | Take profit: 2070.0905214285713 +2025-03-10 14:25:18,736 - INFO - STOP LOSS hit for short at 2112.1647857142857 | PnL: -0.50% | $-1.15 +2025-03-10 14:25:18,763 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.440935714286 | Take profit: 2079.1820714285714 +2025-03-10 14:25:19,562 - INFO - STOP LOSS hit for short at 2121.440935714286 | PnL: -0.50% | $-1.13 +2025-03-10 14:25:19,589 - INFO - OPENED SHORT at 2121.2 | Stop loss: 2131.8225857142857 | Take profit: 2089.357121428571 +2025-03-10 14:25:19,686 - INFO - STOP LOSS hit for short at 2131.8225857142857 | PnL: -0.50% | $-1.12 +2025-03-10 14:25:19,711 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.957885714286 | Take profit: 2104.1912214285717 +2025-03-10 14:25:20,133 - INFO - CLOSED short at 2124.49 | PnL: 0.55% | $0.83 +2025-03-10 14:25:20,186 - INFO - OPENED SHORT at 2123.37 | Stop loss: 2134.0034357142854 | Take profit: 2091.4945714285714 +2025-03-10 14:25:20,487 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 16.7% in downtrends | Avg Win=$1.39, Avg Loss=$-0.70 +2025-03-10 14:25:20,488 - INFO - Episode 26: Reward=177.93, Balance=$93.66, Win Rate=23.3%, Trades=30, Episode PnL=$-5.30, Total PnL=$-168.66, Max Drawdown=7.2%, Pred Accuracy=99.7% +2025-03-10 14:25:20,488 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:25:20,829 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:25:29,106 - INFO - STOP LOSS hit for short at 2078.376685714286 | PnL: -0.50% | $-1.19 +2025-03-10 14:25:29,140 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:25:29,193 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.18 +2025-03-10 14:25:29,239 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:25:29,385 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.16 +2025-03-10 14:25:29,407 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:25:29,915 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.68 +2025-03-10 14:25:29,967 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:25:31,823 - INFO - CLOSED short at 2089.96 | PnL: 0.98% | $1.73 +2025-03-10 14:25:31,824 - INFO - OPENED LONG at 2089.96 | Stop loss: 2079.4936142857146 | Take profit: 2121.334278571429 +2025-03-10 14:25:31,870 - INFO - CLOSED long at 2087.0 | PnL: -0.14% | $-0.48 +2025-03-10 14:25:31,871 - INFO - OPENED SHORT at 2087.0 | Stop loss: 2097.4515857142856 | Take profit: 2055.6701214285713 +2025-03-10 14:25:32,117 - INFO - STOP LOSS hit for short at 2097.4515857142856 | PnL: -0.50% | $-1.20 +2025-03-10 14:25:32,157 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.5065357142853 | Take profit: 2068.465271428571 +2025-03-10 14:25:32,703 - INFO - CLOSED short at 2103.52 | PnL: -0.17% | $-0.53 +2025-03-10 14:25:32,703 - INFO - OPENED LONG at 2103.52 | Stop loss: 2092.9858142857142 | Take profit: 2135.0976785714283 +2025-03-10 14:25:32,730 - INFO - CLOSED long at 2104.4 | PnL: 0.04% | $-0.11 +2025-03-10 14:25:32,731 - INFO - OPENED SHORT at 2104.4 | Stop loss: 2114.9385857142856 | Take profit: 2072.8091214285714 +2025-03-10 14:25:32,802 - INFO - CLOSED short at 2100.0 | PnL: 0.21% | $0.21 +2025-03-10 14:25:32,803 - INFO - OPENED LONG at 2100.0 | Stop loss: 2089.4834142857144 | Take profit: 2131.5248785714284 +2025-03-10 14:25:32,828 - INFO - CLOSED long at 2102.7 | PnL: 0.13% | $0.06 +2025-03-10 14:25:32,830 - INFO - OPENED SHORT at 2102.7 | Stop loss: 2113.2300857142855 | Take profit: 2071.1346214285713 +2025-03-10 14:25:32,993 - INFO - CLOSED short at 2108.0 | PnL: -0.25% | $-0.69 +2025-03-10 14:25:32,994 - INFO - OPENED LONG at 2108.0 | Stop loss: 2097.4434142857144 | Take profit: 2139.6448785714288 +2025-03-10 14:25:33,044 - INFO - CLOSED long at 2112.28 | PnL: 0.20% | $0.20 +2025-03-10 14:25:33,045 - INFO - OPENED SHORT at 2112.28 | Stop loss: 2122.857985714286 | Take profit: 2080.5709214285716 +2025-03-10 14:25:33,942 - INFO - STOP LOSS hit for short at 2122.857985714286 | PnL: -0.50% | $-1.17 +2025-03-10 14:25:33,966 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4455357142856 | Take profit: 2095.8482714285715 +2025-03-10 14:25:34,427 - INFO - CLOSED short at 2123.37 | PnL: 0.21% | $0.21 +2025-03-10 14:25:34,450 - INFO - OPENED SHORT at 2121.73 | Stop loss: 2132.3552357142858 | Take profit: 2089.8791714285717 +2025-03-10 14:25:34,720 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 30.0% in downtrends | Avg Win=$0.85, Avg Loss=$-0.86 +2025-03-10 14:25:34,721 - INFO - Episode 27: Reward=186.98, Balance=$97.37, Win Rate=40.0%, Trades=15, Episode PnL=$-2.29, Total PnL=$-171.29, Max Drawdown=3.5%, Pred Accuracy=99.6% +2025-03-10 14:25:34,722 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:25:34,924 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:25:36,496 - INFO - CLOSED short at 2070.3 | PnL: -0.11% | $-0.42 +2025-03-10 14:25:36,496 - INFO - OPENED LONG at 2070.3 | Stop loss: 2059.9319142857144 | Take profit: 2101.379378571429 +2025-03-10 14:25:36,534 - INFO - CLOSED long at 2071.59 | PnL: 0.06% | $-0.07 +2025-03-10 14:25:36,534 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.964535714286 | Take profit: 2040.4912714285717 +2025-03-10 14:25:37,811 - INFO - CLOSED short at 2058.89 | PnL: 0.61% | $1.01 +2025-03-10 14:25:37,811 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.5789642857144 | Take profit: 2089.7982285714284 +2025-03-10 14:25:37,841 - INFO - CLOSED long at 2059.3 | PnL: 0.02% | $-0.16 +2025-03-10 14:25:37,842 - INFO - OPENED SHORT at 2059.3 | Stop loss: 2069.6130857142857 | Take profit: 2028.3856214285715 +2025-03-10 14:25:38,178 - INFO - CLOSED short at 2064.1 | PnL: -0.23% | $-0.66 +2025-03-10 14:25:38,208 - INFO - OPENED SHORT at 2065.36 | Stop loss: 2075.703385714286 | Take profit: 2034.3547214285716 +2025-03-10 14:25:39,006 - INFO - CLOSED short at 2061.5 | PnL: 0.19% | $0.17 +2025-03-10 14:25:39,029 - INFO - OPENED SHORT at 2061.6 | Stop loss: 2071.9245857142855 | Take profit: 2030.6511214285713 +2025-03-10 14:25:39,432 - INFO - STOP LOSS hit for short at 2071.9245857142855 | PnL: -0.50% | $-1.19 +2025-03-10 14:25:39,453 - INFO - OPENED SHORT at 2074.3 | Stop loss: 2084.688085714286 | Take profit: 2043.1606214285716 +2025-03-10 14:25:40,926 - INFO - CLOSED short at 2074.37 | PnL: -0.00% | $-0.20 +2025-03-10 14:25:40,926 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.9815642857143 | Take profit: 2105.5104285714287 +2025-03-10 14:25:40,950 - INFO - CLOSED long at 2075.07 | PnL: 0.03% | $-0.13 +2025-03-10 14:25:40,950 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.461935714286 | Take profit: 2043.9190714285717 +2025-03-10 14:25:41,229 - INFO - CLOSED short at 2069.97 | PnL: 0.25% | $0.28 +2025-03-10 14:25:41,230 - INFO - OPENED LONG at 2069.97 | Stop loss: 2059.603564285714 | Take profit: 2101.0444285714284 +2025-03-10 14:25:41,284 - INFO - CLOSED long at 2067.7 | PnL: -0.11% | $-0.41 +2025-03-10 14:25:41,284 - INFO - OPENED SHORT at 2067.7 | Stop loss: 2078.0550857142853 | Take profit: 2036.6596214285712 +2025-03-10 14:25:41,811 - INFO - CLOSED short at 2066.1 | PnL: 0.08% | $-0.04 +2025-03-10 14:25:41,835 - INFO - OPENED SHORT at 2065.06 | Stop loss: 2075.401885714286 | Take profit: 2034.0592214285714 +2025-03-10 14:25:43,380 - INFO - STOP LOSS hit for short at 2075.401885714286 | PnL: -0.50% | $-1.17 +2025-03-10 14:25:43,408 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2088.014635714286 | Take profit: 2046.4209714285716 +2025-03-10 14:25:43,463 - INFO - STOP LOSS hit for short at 2088.014635714286 | PnL: -0.50% | $-1.16 +2025-03-10 14:25:43,486 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.5516857142857 | Take profit: 2071.4498214285713 +2025-03-10 14:25:43,534 - INFO - STOP LOSS hit for short at 2113.5516857142857 | PnL: -0.50% | $-1.14 +2025-03-10 14:25:43,590 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2542857142857 | Take profit: 2107.4220214285715 +2025-03-10 14:25:44,713 - INFO - TAKE PROFIT hit for short at 2107.4220214285715 | PnL: 1.50% | $2.63 +2025-03-10 14:25:44,756 - INFO - OPENED SHORT at 2108.06 | Stop loss: 2118.6168857142857 | Take profit: 2076.414221428571 +2025-03-10 14:25:45,266 - INFO - CLOSED short at 2100.02 | PnL: 0.38% | $0.54 +2025-03-10 14:25:45,310 - INFO - OPENED SHORT at 2098.39 | Stop loss: 2108.8985357142856 | Take profit: 2066.889271428571 +2025-03-10 14:25:47,517 - INFO - STOP LOSS hit for short at 2108.8985357142856 | PnL: -0.50% | $-1.17 +2025-03-10 14:25:47,545 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.440935714286 | Take profit: 2079.1820714285714 +2025-03-10 14:25:48,396 - INFO - STOP LOSS hit for short at 2121.440935714286 | PnL: -0.50% | $-1.15 +2025-03-10 14:25:48,425 - INFO - OPENED SHORT at 2121.2 | Stop loss: 2131.8225857142857 | Take profit: 2089.357121428571 +2025-03-10 14:25:48,531 - INFO - STOP LOSS hit for short at 2131.8225857142857 | PnL: -0.50% | $-1.14 +2025-03-10 14:25:48,581 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.957885714286 | Take profit: 2104.1912214285717 +2025-03-10 14:25:49,006 - INFO - CLOSED short at 2123.37 | PnL: 0.60% | $0.94 +2025-03-10 14:25:49,006 - INFO - OPENED LONG at 2123.37 | Stop loss: 2112.7365642857144 | Take profit: 2155.2454285714284 +2025-03-10 14:25:49,055 - INFO - CLOSED long at 2121.73 | PnL: -0.08% | $-0.34 +2025-03-10 14:25:49,055 - INFO - OPENED SHORT at 2121.73 | Stop loss: 2132.3552357142858 | Take profit: 2089.8791714285717 +2025-03-10 14:25:49,323 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 30.8% in downtrends | Avg Win=$0.93, Avg Loss=$-0.66 +2025-03-10 14:25:49,324 - INFO - Episode 28: Reward=181.37, Balance=$95.03, Win Rate=27.3%, Trades=22, Episode PnL=$-3.86, Total PnL=$-176.25, Max Drawdown=5.6%, Pred Accuracy=99.5% +2025-03-10 14:25:49,326 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:25:49,667 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:25:52,446 - INFO - CLOSED short at 2064.5 | PnL: 0.17% | $0.14 +2025-03-10 14:25:52,446 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.160914285714 | Take profit: 2095.4923785714286 +2025-03-10 14:25:52,491 - INFO - CLOSED long at 2063.5 | PnL: -0.05% | $-0.29 +2025-03-10 14:25:52,492 - INFO - OPENED SHORT at 2063.5 | Stop loss: 2073.8340857142857 | Take profit: 2032.5226214285715 +2025-03-10 14:25:52,604 - INFO - CLOSED short at 2059.3 | PnL: 0.20% | $0.21 +2025-03-10 14:25:52,605 - INFO - OPENED LONG at 2059.3 | Stop loss: 2048.9869142857146 | Take profit: 2090.214378571429 +2025-03-10 14:25:52,629 - INFO - CLOSED long at 2060.31 | PnL: 0.05% | $-0.10 +2025-03-10 14:25:52,629 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.6281357142857 | Take profit: 2029.3804714285714 +2025-03-10 14:25:54,237 - INFO - STOP LOSS hit for short at 2070.6281357142857 | PnL: -0.50% | $-1.19 +2025-03-10 14:25:54,266 - INFO - OPENED SHORT at 2074.3 | Stop loss: 2084.688085714286 | Take profit: 2043.1606214285716 +2025-03-10 14:25:54,952 - INFO - CLOSED short at 2065.66 | PnL: 0.42% | $0.62 +2025-03-10 14:25:54,953 - INFO - OPENED LONG at 2065.66 | Stop loss: 2055.315114285714 | Take profit: 2096.6697785714287 +2025-03-10 14:25:54,975 - INFO - CLOSED long at 2063.95 | PnL: -0.08% | $-0.36 +2025-03-10 14:25:54,975 - INFO - OPENED SHORT at 2063.95 | Stop loss: 2074.2863357142855 | Take profit: 2032.9658714285713 +2025-03-10 14:25:55,850 - INFO - STOP LOSS hit for short at 2074.2863357142855 | PnL: -0.50% | $-1.18 +2025-03-10 14:25:55,896 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.461935714286 | Take profit: 2043.9190714285717 +2025-03-10 14:25:56,668 - INFO - CLOSED short at 2065.7 | PnL: 0.45% | $0.68 +2025-03-10 14:25:56,694 - INFO - OPENED SHORT at 2065.8 | Stop loss: 2076.145585714286 | Take profit: 2034.7881214285715 +2025-03-10 14:25:57,021 - INFO - CLOSED short at 2064.5 | PnL: 0.06% | $-0.07 +2025-03-10 14:25:57,022 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.160914285714 | Take profit: 2095.4923785714286 +2025-03-10 14:25:57,052 - INFO - CLOSED long at 2066.33 | PnL: 0.09% | $-0.02 +2025-03-10 14:25:57,053 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6782357142856 | Take profit: 2035.3101714285713 +2025-03-10 14:25:58,484 - INFO - STOP LOSS hit for short at 2076.6782357142856 | PnL: -0.50% | $-1.17 +2025-03-10 14:25:58,525 - INFO - OPENED SHORT at 2085.56 | Stop loss: 2096.0043857142855 | Take profit: 2054.2517214285713 +2025-03-10 14:25:58,578 - INFO - STOP LOSS hit for short at 2096.0043857142855 | PnL: -0.50% | $-1.16 +2025-03-10 14:25:58,603 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:25:58,740 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.15 +2025-03-10 14:25:58,784 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:25:59,422 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.64 +2025-03-10 14:25:59,470 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:26:00,085 - INFO - CLOSED short at 2102.29 | PnL: 0.39% | $0.57 +2025-03-10 14:26:00,157 - INFO - OPENED SHORT at 2099.25 | Stop loss: 2109.7628357142858 | Take profit: 2067.736371428571 +2025-03-10 14:26:02,072 - INFO - CLOSED short at 2103.48 | PnL: -0.20% | $-0.59 +2025-03-10 14:26:02,072 - INFO - OPENED LONG at 2103.48 | Stop loss: 2092.946014285714 | Take profit: 2135.0570785714285 +2025-03-10 14:26:02,140 - INFO - CLOSED long at 2104.93 | PnL: 0.07% | $-0.06 +2025-03-10 14:26:02,140 - INFO - OPENED SHORT at 2104.93 | Stop loss: 2115.4712357142857 | Take profit: 2073.331171428571 +2025-03-10 14:26:02,440 - INFO - CLOSED short at 2105.21 | PnL: -0.01% | $-0.22 +2025-03-10 14:26:02,464 - INFO - OPENED SHORT at 2103.9 | Stop loss: 2114.4360857142856 | Take profit: 2072.3166214285716 +2025-03-10 14:26:02,865 - INFO - STOP LOSS hit for short at 2114.4360857142856 | PnL: -0.50% | $-1.16 +2025-03-10 14:26:02,890 - INFO - OPENED SHORT at 2113.61 | Stop loss: 2124.194635714286 | Take profit: 2081.8809714285717 +2025-03-10 14:26:03,526 - INFO - STOP LOSS hit for short at 2124.194635714286 | PnL: -0.50% | $-1.15 +2025-03-10 14:26:03,548 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4455357142856 | Take profit: 2095.8482714285715 +2025-03-10 14:26:04,295 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 30.8% in downtrends | Avg Win=$0.81, Avg Loss=$-0.66 +2025-03-10 14:26:04,296 - INFO - Episode 29: Reward=88.61, Balance=$94.98, Win Rate=28.6%, Trades=21, Episode PnL=$-4.18, Total PnL=$-181.27, Max Drawdown=5.1%, Pred Accuracy=99.4% +2025-03-10 14:26:04,297 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:26:05,387 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:26:05,745 - INFO - CLOSED short at 2065.99 | PnL: 0.10% | $-0.00 +2025-03-10 14:26:05,775 - INFO - OPENED SHORT at 2066.19 | Stop loss: 2076.5375357142857 | Take profit: 2035.1722714285715 +2025-03-10 14:26:05,850 - INFO - CLOSED short at 2066.18 | PnL: 0.00% | $-0.20 +2025-03-10 14:26:05,851 - INFO - OPENED LONG at 2066.18 | Stop loss: 2055.8325142857143 | Take profit: 2097.1975785714285 +2025-03-10 14:26:05,878 - INFO - CLOSED long at 2068.76 | PnL: 0.12% | $0.05 +2025-03-10 14:26:05,878 - INFO - OPENED SHORT at 2068.76 | Stop loss: 2079.120385714286 | Take profit: 2037.7037214285717 +2025-03-10 14:26:07,328 - INFO - CLOSED short at 2065.28 | PnL: 0.17% | $0.14 +2025-03-10 14:26:07,328 - INFO - OPENED LONG at 2065.28 | Stop loss: 2054.937014285714 | Take profit: 2096.284078571429 +2025-03-10 14:26:07,353 - INFO - CLOSED long at 2066.39 | PnL: 0.05% | $-0.09 +2025-03-10 14:26:07,353 - INFO - OPENED SHORT at 2066.39 | Stop loss: 2076.7385357142853 | Take profit: 2035.3692714285712 +2025-03-10 14:26:10,183 - INFO - STOP LOSS hit for short at 2076.7385357142853 | PnL: -0.50% | $-1.19 +2025-03-10 14:26:10,208 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.401635714286 | Take profit: 2043.8599714285717 +2025-03-10 14:26:10,719 - INFO - CLOSED short at 2065.66 | PnL: 0.45% | $0.69 +2025-03-10 14:26:10,720 - INFO - OPENED LONG at 2065.66 | Stop loss: 2055.315114285714 | Take profit: 2096.6697785714287 +2025-03-10 14:26:10,778 - INFO - CLOSED long at 2063.95 | PnL: -0.08% | $-0.36 +2025-03-10 14:26:10,778 - INFO - OPENED SHORT at 2063.95 | Stop loss: 2074.2863357142855 | Take profit: 2032.9658714285713 +2025-03-10 14:26:11,701 - INFO - CLOSED short at 2074.37 | PnL: -0.50% | $-1.19 +2025-03-10 14:26:11,702 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.9815642857143 | Take profit: 2105.5104285714287 +2025-03-10 14:26:11,734 - INFO - CLOSED long at 2075.07 | PnL: 0.03% | $-0.13 +2025-03-10 14:26:11,734 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.461935714286 | Take profit: 2043.9190714285717 +2025-03-10 14:26:11,781 - INFO - CLOSED short at 2073.27 | PnL: 0.09% | $-0.03 +2025-03-10 14:26:11,810 - INFO - OPENED SHORT at 2073.99 | Stop loss: 2084.376535714285 | Take profit: 2042.8552714285713 +2025-03-10 14:26:12,650 - INFO - CLOSED short at 2064.11 | PnL: 0.48% | $0.73 +2025-03-10 14:26:12,650 - INFO - OPENED LONG at 2064.11 | Stop loss: 2053.7728642857146 | Take profit: 2095.0965285714287 +2025-03-10 14:26:12,675 - INFO - CLOSED long at 2064.5 | PnL: 0.02% | $-0.16 +2025-03-10 14:26:12,676 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.8390857142854 | Take profit: 2033.5076214285714 +2025-03-10 14:26:13,890 - INFO - CLOSED short at 2071.8 | PnL: -0.35% | $-0.88 +2025-03-10 14:26:13,951 - INFO - OPENED SHORT at 2074.9 | Stop loss: 2085.291085714286 | Take profit: 2043.7516214285715 +2025-03-10 14:26:14,026 - INFO - CLOSED short at 2076.08 | PnL: -0.06% | $-0.30 +2025-03-10 14:26:14,090 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2088.014635714286 | Take profit: 2046.4209714285716 +2025-03-10 14:26:14,151 - INFO - STOP LOSS hit for short at 2088.014635714286 | PnL: -0.50% | $-1.16 +2025-03-10 14:26:14,181 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.5516857142857 | Take profit: 2071.4498214285713 +2025-03-10 14:26:14,218 - INFO - STOP LOSS hit for short at 2113.5516857142857 | PnL: -0.50% | $-1.14 +2025-03-10 14:26:14,252 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2542857142857 | Take profit: 2107.4220214285715 +2025-03-10 14:26:14,938 - INFO - CLOSED short at 2119.14 | PnL: 0.95% | $1.61 +2025-03-10 14:26:14,963 - INFO - OPENED SHORT at 2119.07 | Stop loss: 2129.681935714286 | Take profit: 2087.2590714285716 +2025-03-10 14:26:16,403 - INFO - TAKE PROFIT hit for short at 2087.2590714285716 | PnL: 1.50% | $2.68 +2025-03-10 14:26:16,443 - INFO - OPENED SHORT at 2088.44 | Stop loss: 2098.8987857142856 | Take profit: 2057.0885214285718 +2025-03-10 14:26:17,336 - INFO - STOP LOSS hit for short at 2098.8987857142856 | PnL: -0.50% | $-1.18 +2025-03-10 14:26:17,367 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1647857142857 | Take profit: 2070.0905214285713 +2025-03-10 14:26:17,872 - INFO - CLOSED short at 2103.41 | PnL: -0.08% | $-0.36 +2025-03-10 14:26:17,896 - INFO - OPENED SHORT at 2104.73 | Stop loss: 2115.2702357142857 | Take profit: 2073.1341714285713 +2025-03-10 14:26:18,421 - INFO - STOP LOSS hit for short at 2115.2702357142857 | PnL: -0.50% | $-1.16 +2025-03-10 14:26:18,446 - INFO - OPENED SHORT at 2117.39 | Stop loss: 2127.993535714286 | Take profit: 2085.6042714285713 +2025-03-10 14:26:18,659 - INFO - CLOSED short at 2118.19 | PnL: -0.04% | $-0.26 +2025-03-10 14:26:18,692 - INFO - OPENED SHORT at 2118.2 | Stop loss: 2128.8075857142853 | Take profit: 2086.4021214285713 +2025-03-10 14:26:18,874 - INFO - STOP LOSS hit for short at 2128.8075857142853 | PnL: -0.50% | $-1.15 +2025-03-10 14:26:18,898 - INFO - OPENED SHORT at 2135.86 | Stop loss: 2146.5558857142855 | Take profit: 2103.7972214285714 +2025-03-10 14:26:19,219 - INFO - CLOSED short at 2126.43 | PnL: 0.44% | $0.64 +2025-03-10 14:26:19,242 - INFO - OPENED SHORT at 2124.49 | Stop loss: 2135.1290357142852 | Take profit: 2092.597771428571 +2025-03-10 14:26:19,485 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 33.3% in downtrends | Avg Win=$0.93, Avg Loss=$-0.61 +2025-03-10 14:26:19,486 - INFO - Episode 30: Reward=83.72, Balance=$95.59, Win Rate=28.0%, Trades=25, Episode PnL=$-3.72, Total PnL=$-185.69, Max Drawdown=5.2%, Pred Accuracy=99.4% +2025-03-10 14:26:19,611 - INFO - Model saved to checkpoints/trading_agent_episode_30.pt +2025-03-10 14:26:19,612 - INFO - Checkpoint saved at episode 30 +2025-03-10 14:26:19,613 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:26:19,685 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 14:26:19,685 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2514, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 14:26:20,921 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 14:26:20,922 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2514, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 14:26:21,250 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:26:21,616 - INFO - CLOSED short at 2066.29 | PnL: 0.08% | $-0.03 +2025-03-10 14:26:21,656 - INFO - OPENED SHORT at 2065.08 | Stop loss: 2075.4219857142857 | Take profit: 2034.0789214285714 +2025-03-10 14:26:21,703 - INFO - CLOSED short at 2066.18 | PnL: -0.05% | $-0.30 +2025-03-10 14:26:21,731 - INFO - OPENED SHORT at 2068.76 | Stop loss: 2079.120385714286 | Take profit: 2037.7037214285717 +2025-03-10 14:26:22,696 - INFO - CLOSED short at 2069.2 | PnL: -0.02% | $-0.24 +2025-03-10 14:26:22,696 - INFO - OPENED LONG at 2069.2 | Stop loss: 2058.837414285714 | Take profit: 2100.2628785714282 +2025-03-10 14:26:22,731 - INFO - CLOSED long at 2070.3 | PnL: 0.05% | $-0.09 +2025-03-10 14:26:22,732 - INFO - OPENED SHORT at 2070.3 | Stop loss: 2080.6680857142856 | Take profit: 2039.2206214285716 +2025-03-10 14:26:26,497 - INFO - CLOSED short at 2070.35 | PnL: -0.00% | $-0.20 +2025-03-10 14:26:26,520 - INFO - OPENED SHORT at 2070.61 | Stop loss: 2080.979635714286 | Take profit: 2039.5259714285714 +2025-03-10 14:26:27,166 - INFO - CLOSED short at 2066.89 | PnL: 0.18% | $0.16 +2025-03-10 14:26:27,166 - INFO - OPENED LONG at 2066.89 | Stop loss: 2056.5389642857144 | Take profit: 2097.9182285714287 +2025-03-10 14:26:27,210 - INFO - CLOSED long at 2067.88 | PnL: 0.05% | $-0.10 +2025-03-10 14:26:27,211 - INFO - OPENED SHORT at 2067.88 | Stop loss: 2078.235985714286 | Take profit: 2036.8369214285715 +2025-03-10 14:26:28,529 - INFO - CLOSED short at 2061.84 | PnL: 0.29% | $0.38 +2025-03-10 14:26:28,556 - INFO - OPENED SHORT at 2062.54 | Stop loss: 2072.8692857142855 | Take profit: 2031.5770214285715 +2025-03-10 14:26:28,727 - INFO - STOP LOSS hit for short at 2072.8692857142855 | PnL: -0.50% | $-1.19 +2025-03-10 14:26:28,764 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4368357142857 | Take profit: 2042.9143714285715 +2025-03-10 14:26:28,972 - INFO - STOP LOSS hit for short at 2084.4368357142857 | PnL: -0.50% | $-1.17 +2025-03-10 14:26:28,998 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:26:29,023 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.16 +2025-03-10 14:26:29,054 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:26:29,224 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.15 +2025-03-10 14:26:29,269 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:26:29,628 - INFO - CLOSED short at 2119.07 | PnL: 1.04% | $1.77 +2025-03-10 14:26:29,628 - INFO - OPENED LONG at 2119.07 | Stop loss: 2108.4580642857145 | Take profit: 2150.8809285714287 +2025-03-10 14:26:29,701 - INFO - CLOSED long at 2107.43 | PnL: -0.55% | $-1.25 +2025-03-10 14:26:29,701 - INFO - OPENED SHORT at 2107.43 | Stop loss: 2117.9837357142856 | Take profit: 2075.793671428571 +2025-03-10 14:26:29,893 - INFO - STOP LOSS hit for short at 2117.9837357142856 | PnL: -0.50% | $-1.14 +2025-03-10 14:26:29,937 - INFO - OPENED SHORT at 2116.48 | Stop loss: 2127.078985714286 | Take profit: 2084.7079214285714 +2025-03-10 14:26:30,341 - INFO - CLOSED short at 2099.25 | PnL: 0.81% | $1.34 +2025-03-10 14:26:30,342 - INFO - OPENED LONG at 2099.25 | Stop loss: 2088.7371642857142 | Take profit: 2130.7636285714284 +2025-03-10 14:26:30,394 - INFO - CLOSED long at 2098.9 | PnL: -0.02% | $-0.22 +2025-03-10 14:26:30,394 - INFO - OPENED SHORT at 2098.9 | Stop loss: 2109.4110857142855 | Take profit: 2067.3916214285714 +2025-03-10 14:26:32,242 - INFO - CLOSED short at 2105.83 | PnL: -0.33% | $-0.81 +2025-03-10 14:26:32,243 - INFO - OPENED LONG at 2105.83 | Stop loss: 2095.284264285714 | Take profit: 2137.4423285714283 +2025-03-10 14:26:32,270 - INFO - CLOSED long at 2103.64 | PnL: -0.10% | $-0.38 +2025-03-10 14:26:32,270 - INFO - OPENED SHORT at 2103.64 | Stop loss: 2114.1747857142855 | Take profit: 2072.0605214285715 +2025-03-10 14:26:32,899 - INFO - STOP LOSS hit for short at 2114.1747857142855 | PnL: -0.50% | $-1.12 +2025-03-10 14:26:32,921 - INFO - OPENED SHORT at 2113.61 | Stop loss: 2124.194635714286 | Take profit: 2081.8809714285717 +2025-03-10 14:26:33,256 - INFO - CLOSED short at 2115.89 | PnL: -0.11% | $-0.38 +2025-03-10 14:26:33,293 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.4106357142855 | Take profit: 2085.0329714285713 +2025-03-10 14:26:33,612 - INFO - STOP LOSS hit for short at 2127.4106357142855 | PnL: -0.50% | $-1.11 +2025-03-10 14:26:33,656 - INFO - OPENED SHORT at 2129.3 | Stop loss: 2139.9630857142856 | Take profit: 2097.335621428572 +2025-03-10 14:26:34,107 - INFO - CLOSED short at 2121.73 | PnL: 0.36% | $0.46 +2025-03-10 14:26:34,133 - INFO - OPENED SHORT at 2120.0 | Stop loss: 2130.6165857142855 | Take profit: 2088.1751214285714 +2025-03-10 14:26:34,325 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 25.0% in downtrends | Avg Win=$0.82, Avg Loss=$-0.67 +2025-03-10 14:26:34,326 - INFO - Episode 31: Reward=177.69, Balance=$92.05, Win Rate=21.7%, Trades=23, Episode PnL=$-5.90, Total PnL=$-193.63, Max Drawdown=8.4%, Pred Accuracy=99.5% +2025-03-10 14:26:34,326 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:26:34,657 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:26:34,700 - INFO - CLOSED short at 2070.36 | PnL: -0.11% | $-0.42 +2025-03-10 14:26:34,701 - INFO - OPENED LONG at 2070.36 | Stop loss: 2059.991614285714 | Take profit: 2101.4402785714287 +2025-03-10 14:26:34,724 - INFO - CLOSED long at 2068.9 | PnL: -0.07% | $-0.34 +2025-03-10 14:26:34,725 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.261085714286 | Take profit: 2037.8416214285717 +2025-03-10 14:26:41,589 - INFO - CLOSED short at 2063.01 | PnL: 0.28% | $0.36 +2025-03-10 14:26:41,623 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0200857142854 | Take profit: 2029.7646214285712 +2025-03-10 14:26:42,232 - INFO - CLOSED short at 2064.08 | PnL: -0.16% | $-0.52 +2025-03-10 14:26:42,254 - INFO - OPENED SHORT at 2061.21 | Stop loss: 2071.532635714286 | Take profit: 2030.2669714285714 +2025-03-10 14:26:42,554 - INFO - STOP LOSS hit for short at 2071.532635714286 | PnL: -0.50% | $-1.18 +2025-03-10 14:26:42,577 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4368357142857 | Take profit: 2042.9143714285715 +2025-03-10 14:26:42,769 - INFO - STOP LOSS hit for short at 2084.4368357142857 | PnL: -0.50% | $-1.17 +2025-03-10 14:26:42,808 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:26:42,850 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.15 +2025-03-10 14:26:42,887 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:26:43,003 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.14 +2025-03-10 14:26:43,027 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:26:43,457 - INFO - CLOSED short at 2115.28 | PnL: 1.22% | $2.09 +2025-03-10 14:26:43,458 - INFO - OPENED LONG at 2115.28 | Stop loss: 2104.6870142857147 | Take profit: 2147.034078571429 +2025-03-10 14:26:43,489 - INFO - CLOSED long at 2107.43 | PnL: -0.37% | $-0.90 +2025-03-10 14:26:43,490 - INFO - OPENED SHORT at 2107.43 | Stop loss: 2117.9837357142856 | Take profit: 2075.793671428571 +2025-03-10 14:26:43,762 - INFO - STOP LOSS hit for short at 2117.9837357142856 | PnL: -0.50% | $-1.14 +2025-03-10 14:26:43,790 - INFO - OPENED SHORT at 2116.48 | Stop loss: 2127.078985714286 | Take profit: 2084.7079214285714 +2025-03-10 14:26:44,842 - INFO - TAKE PROFIT hit for short at 2084.7079214285714 | PnL: 1.50% | $2.63 +2025-03-10 14:26:44,879 - INFO - OPENED SHORT at 2088.44 | Stop loss: 2098.8987857142856 | Take profit: 2057.0885214285718 +2025-03-10 14:26:45,765 - INFO - STOP LOSS hit for short at 2098.8987857142856 | PnL: -0.50% | $-1.16 +2025-03-10 14:26:45,788 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1647857142857 | Take profit: 2070.0905214285713 +2025-03-10 14:26:46,573 - INFO - STOP LOSS hit for short at 2112.1647857142857 | PnL: -0.50% | $-1.14 +2025-03-10 14:26:46,596 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.440935714286 | Take profit: 2079.1820714285714 +2025-03-10 14:26:46,890 - INFO - CLOSED short at 2112.11 | PnL: -0.06% | $-0.30 +2025-03-10 14:26:46,918 - INFO - OPENED SHORT at 2112.26 | Stop loss: 2122.837885714286 | Take profit: 2080.551221428572 +2025-03-10 14:26:47,460 - INFO - STOP LOSS hit for short at 2122.837885714286 | PnL: -0.50% | $-1.13 +2025-03-10 14:26:47,489 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4455357142856 | Take profit: 2095.8482714285715 +2025-03-10 14:26:48,220 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 18.2% in downtrends | Avg Win=$1.69, Avg Loss=$-0.90 +2025-03-10 14:26:48,221 - INFO - Episode 32: Reward=183.58, Balance=$93.39, Win Rate=18.8%, Trades=16, Episode PnL=$-5.37, Total PnL=$-200.24, Max Drawdown=6.6%, Pred Accuracy=99.6% +2025-03-10 14:26:48,221 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:26:48,523 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:26:48,724 - INFO - CLOSED short at 2067.51 | PnL: 0.02% | $-0.15 +2025-03-10 14:26:48,758 - INFO - OPENED SHORT at 2069.01 | Stop loss: 2079.3716357142857 | Take profit: 2037.9499714285716 +2025-03-10 14:26:48,957 - INFO - CLOSED short at 2068.76 | PnL: 0.01% | $-0.17 +2025-03-10 14:26:48,982 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.261085714286 | Take profit: 2037.8416214285717 +2025-03-10 14:26:49,951 - INFO - CLOSED short at 2067.59 | PnL: 0.06% | $-0.07 +2025-03-10 14:26:49,993 - INFO - OPENED SHORT at 2069.2 | Stop loss: 2079.5625857142854 | Take profit: 2038.1371214285714 +2025-03-10 14:26:50,530 - INFO - CLOSED short at 2070.04 | PnL: -0.04% | $-0.28 +2025-03-10 14:26:50,561 - INFO - OPENED SHORT at 2067.8 | Stop loss: 2078.1555857142857 | Take profit: 2036.7581214285715 +2025-03-10 14:26:51,489 - INFO - CLOSED short at 2059.3 | PnL: 0.41% | $0.61 +2025-03-10 14:26:51,490 - INFO - OPENED LONG at 2059.3 | Stop loss: 2048.9869142857146 | Take profit: 2090.214378571429 +2025-03-10 14:26:51,551 - INFO - CLOSED long at 2060.31 | PnL: 0.05% | $-0.10 +2025-03-10 14:26:51,552 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.6281357142857 | Take profit: 2029.3804714285714 +2025-03-10 14:26:51,843 - INFO - CLOSED short at 2061.9 | PnL: -0.08% | $-0.35 +2025-03-10 14:26:51,872 - INFO - OPENED SHORT at 2064.1 | Stop loss: 2074.4370857142853 | Take profit: 2033.1136214285714 +2025-03-10 14:26:53,145 - INFO - STOP LOSS hit for short at 2074.4370857142853 | PnL: -0.50% | $-1.19 +2025-03-10 14:26:53,170 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.401635714286 | Take profit: 2043.8599714285717 +2025-03-10 14:26:53,533 - INFO - CLOSED short at 2069.87 | PnL: 0.25% | $0.29 +2025-03-10 14:26:53,560 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.6832357142857 | Take profit: 2036.2951714285712 +2025-03-10 14:26:53,898 - INFO - CLOSED short at 2065.31 | PnL: 0.10% | $-0.00 +2025-03-10 14:26:53,921 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.1505857142856 | Take profit: 2035.7731214285716 +2025-03-10 14:26:56,899 - INFO - STOP LOSS hit for short at 2077.1505857142856 | PnL: -0.50% | $-1.18 +2025-03-10 14:26:56,920 - INFO - OPENED SHORT at 2085.56 | Stop loss: 2096.0043857142855 | Take profit: 2054.2517214285713 +2025-03-10 14:26:56,964 - INFO - STOP LOSS hit for short at 2096.0043857142855 | PnL: -0.50% | $-1.16 +2025-03-10 14:26:56,989 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:26:57,116 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.15 +2025-03-10 14:26:57,163 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:26:57,639 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.64 +2025-03-10 14:26:57,687 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:26:59,810 - INFO - CLOSED short at 2100.89 | PnL: 0.46% | $0.70 +2025-03-10 14:26:59,835 - INFO - OPENED SHORT at 2099.73 | Stop loss: 2110.2452357142856 | Take profit: 2068.2091714285716 +2025-03-10 14:27:00,518 - INFO - STOP LOSS hit for short at 2110.2452357142856 | PnL: -0.50% | $-1.17 +2025-03-10 14:27:00,540 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.440935714286 | Take profit: 2079.1820714285714 +2025-03-10 14:27:01,348 - INFO - STOP LOSS hit for short at 2121.440935714286 | PnL: -0.50% | $-1.16 +2025-03-10 14:27:01,379 - INFO - OPENED SHORT at 2121.2 | Stop loss: 2131.8225857142857 | Take profit: 2089.357121428571 +2025-03-10 14:27:01,531 - INFO - STOP LOSS hit for short at 2131.8225857142857 | PnL: -0.50% | $-1.15 +2025-03-10 14:27:01,578 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.957885714286 | Take profit: 2104.1912214285717 +2025-03-10 14:27:02,281 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 22.2% in downtrends | Avg Win=$1.06, Avg Loss=$-0.66 +2025-03-10 14:27:02,282 - INFO - Episode 33: Reward=183.11, Balance=$94.96, Win Rate=22.2%, Trades=18, Episode PnL=$-4.93, Total PnL=$-205.28, Max Drawdown=5.0%, Pred Accuracy=99.7% +2025-03-10 14:27:02,282 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:27:02,602 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:27:03,118 - INFO - CLOSED short at 2068.51 | PnL: -0.02% | $-0.25 +2025-03-10 14:27:03,145 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.949535714286 | Take profit: 2037.5362714285716 +2025-03-10 14:27:04,037 - INFO - CLOSED short at 2069.2 | PnL: -0.03% | $-0.26 +2025-03-10 14:27:04,064 - INFO - OPENED SHORT at 2070.3 | Stop loss: 2080.6680857142856 | Take profit: 2039.2206214285716 +2025-03-10 14:27:08,844 - INFO - CLOSED short at 2065.5 | PnL: 0.23% | $0.26 +2025-03-10 14:27:08,845 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.155914285714 | Take profit: 2096.5073785714285 +2025-03-10 14:27:08,865 - INFO - CLOSED long at 2065.7 | PnL: 0.01% | $-0.18 +2025-03-10 14:27:08,865 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.0450857142855 | Take profit: 2034.6896214285714 +2025-03-10 14:27:09,623 - INFO - CLOSED short at 2065.1 | PnL: 0.03% | $-0.14 +2025-03-10 14:27:09,623 - INFO - OPENED LONG at 2065.1 | Stop loss: 2054.7579142857144 | Take profit: 2096.101378571428 +2025-03-10 14:27:09,643 - INFO - CLOSED long at 2062.43 | PnL: -0.13% | $-0.45 +2025-03-10 14:27:09,643 - INFO - OPENED SHORT at 2062.43 | Stop loss: 2072.7587357142856 | Take profit: 2031.4686714285713 +2025-03-10 14:27:10,152 - INFO - STOP LOSS hit for short at 2072.7587357142856 | PnL: -0.50% | $-1.18 +2025-03-10 14:27:10,224 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.608464285714 | Take profit: 2104.1097285714286 +2025-03-10 14:27:10,267 - INFO - CLOSED long at 2071.89 | PnL: -0.05% | $-0.30 +2025-03-10 14:27:10,267 - INFO - OPENED SHORT at 2071.89 | Stop loss: 2082.2660357142854 | Take profit: 2040.7867714285715 +2025-03-10 14:27:10,389 - INFO - STOP LOSS hit for short at 2082.2660357142854 | PnL: -0.50% | $-1.16 +2025-03-10 14:27:10,411 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:27:10,434 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.15 +2025-03-10 14:27:10,457 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:27:10,617 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.14 +2025-03-10 14:27:10,657 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:27:11,089 - INFO - CLOSED short at 2107.43 | PnL: 1.58% | $2.77 +2025-03-10 14:27:11,090 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.876264285714 | Take profit: 2139.0663285714286 +2025-03-10 14:27:11,114 - INFO - CLOSED long at 2110.6 | PnL: 0.15% | $0.10 +2025-03-10 14:27:11,115 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:27:11,469 - INFO - CLOSED short at 2108.06 | PnL: 0.12% | $0.04 +2025-03-10 14:27:11,502 - INFO - OPENED SHORT at 2103.33 | Stop loss: 2113.8632357142856 | Take profit: 2071.7551714285714 +2025-03-10 14:27:12,246 - INFO - CLOSED short at 2088.44 | PnL: 0.71% | $1.17 +2025-03-10 14:27:12,247 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.9812142857145 | Take profit: 2119.791478571429 +2025-03-10 14:27:12,289 - INFO - CLOSED long at 2083.97 | PnL: -0.21% | $-0.61 +2025-03-10 14:27:12,289 - INFO - OPENED SHORT at 2083.97 | Stop loss: 2094.406435714285 | Take profit: 2052.685571428571 +2025-03-10 14:27:12,415 - INFO - CLOSED short at 2081.25 | PnL: 0.13% | $0.06 +2025-03-10 14:27:12,415 - INFO - OPENED LONG at 2081.25 | Stop loss: 2070.8271642857144 | Take profit: 2112.4936285714284 +2025-03-10 14:27:12,440 - INFO - CLOSED long at 2083.41 | PnL: 0.10% | $0.01 +2025-03-10 14:27:12,440 - INFO - OPENED SHORT at 2083.41 | Stop loss: 2093.8436357142855 | Take profit: 2052.1339714285714 +2025-03-10 14:27:12,892 - INFO - CLOSED short at 2089.79 | PnL: -0.31% | $-0.79 +2025-03-10 14:27:12,933 - INFO - OPENED SHORT at 2085.67 | Stop loss: 2096.114935714286 | Take profit: 2054.3600714285717 +2025-03-10 14:27:13,132 - INFO - STOP LOSS hit for short at 2096.114935714286 | PnL: -0.50% | $-1.15 +2025-03-10 14:27:13,154 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.5065357142853 | Take profit: 2068.465271428571 +2025-03-10 14:27:13,546 - INFO - CLOSED short at 2105.83 | PnL: -0.28% | $-0.72 +2025-03-10 14:27:13,576 - INFO - OPENED SHORT at 2103.64 | Stop loss: 2114.1747857142855 | Take profit: 2072.0605214285715 +2025-03-10 14:27:13,740 - INFO - CLOSED short at 2103.9 | PnL: -0.01% | $-0.21 +2025-03-10 14:27:13,740 - INFO - OPENED LONG at 2103.9 | Stop loss: 2093.3639142857146 | Take profit: 2135.4833785714286 +2025-03-10 14:27:13,793 - INFO - CLOSED long at 2100.0 | PnL: -0.19% | $-0.54 +2025-03-10 14:27:13,794 - INFO - OPENED SHORT at 2100.0 | Stop loss: 2110.5165857142856 | Take profit: 2068.475121428571 +2025-03-10 14:27:14,094 - INFO - STOP LOSS hit for short at 2110.5165857142856 | PnL: -0.50% | $-1.12 +2025-03-10 14:27:14,132 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.440935714286 | Take profit: 2079.1820714285714 +2025-03-10 14:27:14,932 - INFO - CLOSED short at 2121.77 | PnL: -0.52% | $-1.14 +2025-03-10 14:27:14,966 - INFO - OPENED SHORT at 2121.2 | Stop loss: 2131.8225857142857 | Take profit: 2089.357121428571 +2025-03-10 14:27:15,075 - INFO - STOP LOSS hit for short at 2131.8225857142857 | PnL: -0.50% | $-1.10 +2025-03-10 14:27:15,108 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.957885714286 | Take profit: 2104.1912214285717 +2025-03-10 14:27:15,275 - INFO - CLOSED short at 2123.23 | PnL: 0.61% | $0.92 +2025-03-10 14:27:15,275 - INFO - OPENED LONG at 2123.23 | Stop loss: 2112.597264285714 | Take profit: 2155.1033285714284 +2025-03-10 14:27:15,300 - INFO - CLOSED long at 2127.47 | PnL: 0.20% | $0.18 +2025-03-10 14:27:15,300 - INFO - OPENED SHORT at 2127.47 | Stop loss: 2138.1239357142854 | Take profit: 2095.5330714285715 +2025-03-10 14:27:15,840 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 35.7% in downtrends | Avg Win=$0.61, Avg Loss=$-0.71 +2025-03-10 14:27:15,841 - INFO - Episode 34: Reward=179.01, Balance=$91.93, Win Rate=32.1%, Trades=28, Episode PnL=$-6.28, Total PnL=$-213.35, Max Drawdown=9.2%, Pred Accuracy=99.7% +2025-03-10 14:27:15,841 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:27:16,883 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:27:18,782 - INFO - CLOSED short at 2067.86 | PnL: 0.01% | $-0.18 +2025-03-10 14:27:18,812 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.7485857142856 | Take profit: 2035.3791214285716 +2025-03-10 14:27:19,295 - INFO - CLOSED short at 2062.65 | PnL: 0.18% | $0.16 +2025-03-10 14:27:19,296 - INFO - OPENED LONG at 2062.65 | Stop loss: 2052.3201642857143 | Take profit: 2093.6146285714285 +2025-03-10 14:27:19,319 - INFO - CLOSED long at 2061.78 | PnL: -0.04% | $-0.28 +2025-03-10 14:27:19,320 - INFO - OPENED SHORT at 2061.78 | Stop loss: 2072.1054857142863 | Take profit: 2030.8284214285716 +2025-03-10 14:27:20,380 - INFO - CLOSED short at 2062.6 | PnL: -0.04% | $-0.28 +2025-03-10 14:27:20,380 - INFO - OPENED LONG at 2062.6 | Stop loss: 2052.270414285714 | Take profit: 2093.563878571428 +2025-03-10 14:27:20,428 - INFO - CLOSED long at 2061.89 | PnL: -0.03% | $-0.27 +2025-03-10 14:27:20,429 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.2160357142857 | Take profit: 2030.9367714285713 +2025-03-10 14:27:20,893 - INFO - CLOSED short at 2055.6 | PnL: 0.31% | $0.40 +2025-03-10 14:27:20,894 - INFO - OPENED LONG at 2055.6 | Stop loss: 2045.3054142857143 | Take profit: 2086.4588785714286 +2025-03-10 14:27:20,918 - INFO - CLOSED long at 2054.89 | PnL: -0.03% | $-0.27 +2025-03-10 14:27:20,918 - INFO - OPENED SHORT at 2054.89 | Stop loss: 2065.181035714286 | Take profit: 2024.0417714285713 +2025-03-10 14:27:21,193 - INFO - CLOSED short at 2063.4 | PnL: -0.41% | $-1.01 +2025-03-10 14:27:21,234 - INFO - OPENED SHORT at 2066.36 | Stop loss: 2076.7083857142857 | Take profit: 2035.3397214285715 +2025-03-10 14:27:21,586 - INFO - STOP LOSS hit for short at 2076.7083857142857 | PnL: -0.50% | $-1.17 +2025-03-10 14:27:21,630 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.401635714286 | Take profit: 2043.8599714285717 +2025-03-10 14:27:22,154 - INFO - CLOSED short at 2065.66 | PnL: 0.45% | $0.68 +2025-03-10 14:27:22,177 - INFO - OPENED SHORT at 2063.95 | Stop loss: 2074.2863357142855 | Take profit: 2032.9658714285713 +2025-03-10 14:27:22,480 - INFO - CLOSED short at 2066.8 | PnL: -0.14% | $-0.46 +2025-03-10 14:27:22,481 - INFO - OPENED LONG at 2066.8 | Stop loss: 2056.4494142857143 | Take profit: 2097.826878571429 +2025-03-10 14:27:22,511 - INFO - CLOSED long at 2066.5 | PnL: -0.01% | $-0.22 +2025-03-10 14:27:22,512 - INFO - OPENED SHORT at 2066.5 | Stop loss: 2076.8490857142856 | Take profit: 2035.4776214285714 +2025-03-10 14:27:22,629 - INFO - CLOSED short at 2070.9 | PnL: -0.21% | $-0.60 +2025-03-10 14:27:22,651 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.0550357142856 | Take profit: 2038.6197714285713 +2025-03-10 14:27:23,264 - INFO - CLOSED short at 2075.61 | PnL: -0.29% | $-0.74 +2025-03-10 14:27:23,265 - INFO - OPENED LONG at 2075.61 | Stop loss: 2065.2153642857143 | Take profit: 2106.769028571429 +2025-03-10 14:27:23,290 - INFO - CLOSED long at 2074.0 | PnL: -0.08% | $-0.34 +2025-03-10 14:27:23,290 - INFO - OPENED SHORT at 2074.0 | Stop loss: 2084.386585714286 | Take profit: 2042.8651214285715 +2025-03-10 14:27:24,591 - INFO - CLOSED short at 2057.89 | PnL: 0.78% | $1.28 +2025-03-10 14:27:24,623 - INFO - OPENED SHORT at 2062.83 | Stop loss: 2073.1607357142857 | Take profit: 2031.8626714285713 +2025-03-10 14:27:24,778 - INFO - CLOSED short at 2065.12 | PnL: -0.11% | $-0.40 +2025-03-10 14:27:24,779 - INFO - OPENED LONG at 2065.12 | Stop loss: 2054.777814285714 | Take profit: 2096.1216785714287 +2025-03-10 14:27:24,812 - INFO - CLOSED long at 2068.33 | PnL: 0.16% | $0.11 +2025-03-10 14:27:24,812 - INFO - OPENED SHORT at 2068.33 | Stop loss: 2078.688235714286 | Take profit: 2037.2801714285713 +2025-03-10 14:27:25,087 - INFO - CLOSED short at 2070.31 | PnL: -0.10% | $-0.37 +2025-03-10 14:27:25,118 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.6077857142855 | Take profit: 2039.1615214285712 +2025-03-10 14:27:25,572 - INFO - STOP LOSS hit for short at 2080.6077857142855 | PnL: -0.50% | $-1.14 +2025-03-10 14:27:25,646 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:27:25,700 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.13 +2025-03-10 14:27:25,734 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:27:25,793 - INFO - CLOSED short at 2131.78 | PnL: -0.05% | $-0.28 +2025-03-10 14:27:25,824 - INFO - OPENED SHORT at 2133.95 | Stop loss: 2144.6363357142855 | Take profit: 2101.9158714285713 +2025-03-10 14:27:26,206 - INFO - CLOSED short at 2128.69 | PnL: 0.25% | $0.27 +2025-03-10 14:27:26,207 - INFO - OPENED LONG at 2128.69 | Stop loss: 2118.0299642857144 | Take profit: 2160.6452285714286 +2025-03-10 14:27:26,239 - INFO - CLOSED long at 2121.09 | PnL: -0.36% | $-0.85 +2025-03-10 14:27:26,239 - INFO - OPENED SHORT at 2121.09 | Stop loss: 2131.712035714286 | Take profit: 2089.2487714285717 +2025-03-10 14:27:27,016 - INFO - CLOSED short at 2100.5 | PnL: 0.97% | $1.61 +2025-03-10 14:27:27,016 - INFO - OPENED LONG at 2100.5 | Stop loss: 2089.9809142857143 | Take profit: 2132.0323785714286 +2025-03-10 14:27:27,043 - INFO - CLOSED long at 2090.0 | PnL: -0.50% | $-1.12 +2025-03-10 14:27:27,044 - INFO - OPENED SHORT at 2090.0 | Stop loss: 2100.4665857142854 | Take profit: 2058.625121428571 +2025-03-10 14:27:27,145 - INFO - STOP LOSS hit for short at 2100.4665857142854 | PnL: -0.50% | $-1.11 +2025-03-10 14:27:27,173 - INFO - OPENED SHORT at 2102.29 | Stop loss: 2112.8180357142855 | Take profit: 2070.730771428571 +2025-03-10 14:27:28,523 - INFO - CLOSED short at 2089.79 | PnL: 0.59% | $0.91 +2025-03-10 14:27:28,554 - INFO - OPENED SHORT at 2085.67 | Stop loss: 2096.114935714286 | Take profit: 2054.3600714285717 +2025-03-10 14:27:28,738 - INFO - STOP LOSS hit for short at 2096.114935714286 | PnL: -0.50% | $-1.11 +2025-03-10 14:27:28,771 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.5065357142853 | Take profit: 2068.465271428571 +2025-03-10 14:27:29,608 - INFO - STOP LOSS hit for short at 2110.5065357142853 | PnL: -0.50% | $-1.10 +2025-03-10 14:27:29,633 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.440935714286 | Take profit: 2079.1820714285714 +2025-03-10 14:27:30,505 - INFO - STOP LOSS hit for short at 2121.440935714286 | PnL: -0.50% | $-1.08 +2025-03-10 14:27:30,538 - INFO - OPENED SHORT at 2121.2 | Stop loss: 2131.8225857142857 | Take profit: 2089.357121428571 +2025-03-10 14:27:30,660 - INFO - STOP LOSS hit for short at 2131.8225857142857 | PnL: -0.50% | $-1.07 +2025-03-10 14:27:30,687 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.957885714286 | Take profit: 2104.1912214285717 +2025-03-10 14:27:31,540 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 25.0% in downtrends | Avg Win=$0.68, Avg Loss=$-0.69 +2025-03-10 14:27:31,541 - INFO - Episode 35: Reward=171.51, Balance=$88.80, Win Rate=25.0%, Trades=32, Episode PnL=$-7.96, Total PnL=$-224.55, Max Drawdown=11.2%, Pred Accuracy=99.8% +2025-03-10 14:27:31,541 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:27:31,745 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:27:31,976 - INFO - CLOSED short at 2068.8 | PnL: -0.04% | $-0.27 +2025-03-10 14:27:32,024 - INFO - OPENED SHORT at 2067.6 | Stop loss: 2077.9545857142857 | Take profit: 2036.5611214285714 +2025-03-10 14:27:33,736 - INFO - CLOSED short at 2067.8 | PnL: -0.01% | $-0.22 +2025-03-10 14:27:33,737 - INFO - OPENED LONG at 2067.8 | Stop loss: 2057.4444142857146 | Take profit: 2098.8418785714284 +2025-03-10 14:27:33,765 - INFO - CLOSED long at 2068.18 | PnL: 0.02% | $-0.16 +2025-03-10 14:27:33,766 - INFO - OPENED SHORT at 2068.18 | Stop loss: 2078.5374857142856 | Take profit: 2037.1324214285714 +2025-03-10 14:27:33,838 - INFO - CLOSED short at 2064.99 | PnL: 0.15% | $0.11 +2025-03-10 14:27:33,871 - INFO - OPENED SHORT at 2065.83 | Stop loss: 2076.1757357142856 | Take profit: 2034.8176714285712 +2025-03-10 14:27:34,386 - INFO - CLOSED short at 2061.6 | PnL: 0.20% | $0.21 +2025-03-10 14:27:34,408 - INFO - OPENED SHORT at 2060.9 | Stop loss: 2071.221085714286 | Take profit: 2029.9616214285713 +2025-03-10 14:27:34,838 - INFO - CLOSED short at 2062.6 | PnL: -0.08% | $-0.36 +2025-03-10 14:27:34,839 - INFO - OPENED LONG at 2062.6 | Stop loss: 2052.270414285714 | Take profit: 2093.563878571428 +2025-03-10 14:27:34,864 - INFO - CLOSED long at 2061.89 | PnL: -0.03% | $-0.26 +2025-03-10 14:27:34,864 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.2160357142857 | Take profit: 2030.9367714285713 +2025-03-10 14:27:35,636 - INFO - STOP LOSS hit for short at 2072.2160357142857 | PnL: -0.50% | $-1.18 +2025-03-10 14:27:35,659 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.416635714286 | Take profit: 2046.8149714285717 +2025-03-10 14:27:37,465 - INFO - CLOSED short at 2065.5 | PnL: 0.60% | $0.97 +2025-03-10 14:27:37,465 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.155914285714 | Take profit: 2096.5073785714285 +2025-03-10 14:27:37,502 - INFO - CLOSED long at 2065.7 | PnL: 0.01% | $-0.18 +2025-03-10 14:27:37,502 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.0450857142855 | Take profit: 2034.6896214285714 +2025-03-10 14:27:38,854 - INFO - STOP LOSS hit for short at 2076.0450857142855 | PnL: -0.50% | $-1.18 +2025-03-10 14:27:38,884 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2088.014635714286 | Take profit: 2046.4209714285716 +2025-03-10 14:27:38,924 - INFO - STOP LOSS hit for short at 2088.014635714286 | PnL: -0.50% | $-1.16 +2025-03-10 14:27:38,947 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.5516857142857 | Take profit: 2071.4498214285713 +2025-03-10 14:27:38,968 - INFO - STOP LOSS hit for short at 2113.5516857142857 | PnL: -0.50% | $-1.15 +2025-03-10 14:27:38,992 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2542857142857 | Take profit: 2107.4220214285715 +2025-03-10 14:27:39,439 - INFO - CLOSED short at 2119.14 | PnL: 0.95% | $1.61 +2025-03-10 14:27:39,461 - INFO - OPENED SHORT at 2119.07 | Stop loss: 2129.681935714286 | Take profit: 2087.2590714285716 +2025-03-10 14:27:39,705 - INFO - CLOSED short at 2113.24 | PnL: 0.28% | $0.34 +2025-03-10 14:27:39,728 - INFO - OPENED SHORT at 2112.99 | Stop loss: 2123.5715357142853 | Take profit: 2081.270271428571 +2025-03-10 14:27:40,015 - INFO - CLOSED short at 2098.1 | PnL: 0.70% | $1.17 +2025-03-10 14:27:40,059 - INFO - OPENED SHORT at 2102.19 | Stop loss: 2112.717535714286 | Take profit: 2070.6322714285716 +2025-03-10 14:27:40,268 - INFO - CLOSED short at 2101.51 | PnL: 0.03% | $-0.13 +2025-03-10 14:27:40,268 - INFO - OPENED LONG at 2101.51 | Stop loss: 2090.9858642857143 | Take profit: 2133.057528571429 +2025-03-10 14:27:40,305 - INFO - CLOSED long at 2099.59 | PnL: -0.09% | $-0.37 +2025-03-10 14:27:40,306 - INFO - OPENED SHORT at 2099.59 | Stop loss: 2110.1045357142857 | Take profit: 2068.071271428572 +2025-03-10 14:27:41,055 - INFO - CLOSED short at 2089.96 | PnL: 0.46% | $0.70 +2025-03-10 14:27:41,055 - INFO - OPENED LONG at 2089.96 | Stop loss: 2079.4936142857146 | Take profit: 2121.334278571429 +2025-03-10 14:27:41,077 - INFO - CLOSED long at 2087.0 | PnL: -0.14% | $-0.47 +2025-03-10 14:27:41,077 - INFO - OPENED SHORT at 2087.0 | Stop loss: 2097.4515857142856 | Take profit: 2055.6701214285713 +2025-03-10 14:27:41,381 - INFO - STOP LOSS hit for short at 2097.4515857142856 | PnL: -0.50% | $-1.17 +2025-03-10 14:27:41,401 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.5065357142853 | Take profit: 2068.465271428571 +2025-03-10 14:27:41,865 - INFO - CLOSED short at 2100.0 | PnL: -0.00% | $-0.19 +2025-03-10 14:27:41,904 - INFO - OPENED SHORT at 2102.7 | Stop loss: 2113.2300857142855 | Take profit: 2071.1346214285713 +2025-03-10 14:27:42,198 - INFO - STOP LOSS hit for short at 2113.2300857142855 | PnL: -0.50% | $-1.15 +2025-03-10 14:27:42,225 - INFO - OPENED SHORT at 2113.0 | Stop loss: 2123.581585714286 | Take profit: 2081.2801214285714 +2025-03-10 14:27:42,950 - INFO - STOP LOSS hit for short at 2123.581585714286 | PnL: -0.50% | $-1.14 +2025-03-10 14:27:42,973 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4455357142856 | Take profit: 2095.8482714285715 +2025-03-10 14:27:43,687 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 16.7% in downtrends | Avg Win=$0.73, Avg Loss=$-0.63 +2025-03-10 14:27:43,688 - INFO - Episode 36: Reward=182.85, Balance=$94.35, Win Rate=29.2%, Trades=24, Episode PnL=$-4.20, Total PnL=$-230.20, Max Drawdown=5.7%, Pred Accuracy=99.7% +2025-03-10 14:27:43,688 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:27:43,880 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:27:44,325 - INFO - CLOSED short at 2068.9 | PnL: -0.04% | $-0.28 +2025-03-10 14:27:44,325 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.5389142857143 | Take profit: 2099.958378571429 +2025-03-10 14:27:44,346 - INFO - CLOSED long at 2068.51 | PnL: -0.02% | $-0.24 +2025-03-10 14:27:44,346 - INFO - OPENED SHORT at 2068.51 | Stop loss: 2078.869135714286 | Take profit: 2037.4574714285716 +2025-03-10 14:27:44,477 - INFO - CLOSED short at 2071.39 | PnL: -0.14% | $-0.47 +2025-03-10 14:27:44,477 - INFO - OPENED LONG at 2071.39 | Stop loss: 2061.0164642857144 | Take profit: 2102.4857285714284 +2025-03-10 14:27:44,518 - INFO - CLOSED long at 2071.36 | PnL: -0.00% | $-0.20 +2025-03-10 14:27:44,519 - INFO - OPENED SHORT at 2071.36 | Stop loss: 2081.7333857142858 | Take profit: 2040.2647214285716 +2025-03-10 14:27:45,034 - INFO - CLOSED short at 2063.61 | PnL: 0.37% | $0.54 +2025-03-10 14:27:45,035 - INFO - OPENED LONG at 2063.61 | Stop loss: 2053.275364285714 | Take profit: 2094.5890285714286 +2025-03-10 14:27:45,074 - INFO - CLOSED long at 2065.26 | PnL: 0.08% | $-0.04 +2025-03-10 14:27:45,074 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.602885714286 | Take profit: 2034.2562214285715 +2025-03-10 14:27:46,522 - INFO - CLOSED short at 2061.8 | PnL: 0.17% | $0.13 +2025-03-10 14:27:46,560 - INFO - OPENED SHORT at 2064.7 | Stop loss: 2075.0400857142854 | Take profit: 2033.7046214285713 +2025-03-10 14:27:46,859 - INFO - CLOSED short at 2063.53 | PnL: 0.06% | $-0.09 +2025-03-10 14:27:46,887 - INFO - OPENED SHORT at 2063.0 | Stop loss: 2073.3315857142857 | Take profit: 2032.0301214285714 +2025-03-10 14:27:47,265 - INFO - CLOSED short at 2055.6 | PnL: 0.36% | $0.51 +2025-03-10 14:27:47,265 - INFO - OPENED LONG at 2055.6 | Stop loss: 2045.3054142857143 | Take profit: 2086.4588785714286 +2025-03-10 14:27:47,306 - INFO - CLOSED long at 2054.89 | PnL: -0.03% | $-0.27 +2025-03-10 14:27:47,306 - INFO - OPENED SHORT at 2054.89 | Stop loss: 2065.181035714286 | Take profit: 2024.0417714285713 +2025-03-10 14:27:47,644 - INFO - STOP LOSS hit for short at 2065.181035714286 | PnL: -0.50% | $-1.19 +2025-03-10 14:27:47,672 - INFO - OPENED SHORT at 2066.01 | Stop loss: 2076.356635714286 | Take profit: 2034.9949714285715 +2025-03-10 14:27:47,993 - INFO - CLOSED short at 2069.79 | PnL: -0.18% | $-0.55 +2025-03-10 14:27:47,995 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.4244642857143 | Take profit: 2100.8617285714286 +2025-03-10 14:27:48,017 - INFO - CLOSED long at 2072.0 | PnL: 0.11% | $0.01 +2025-03-10 14:27:48,017 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3765857142857 | Take profit: 2040.8951214285714 +2025-03-10 14:27:48,718 - INFO - CLOSED short at 2065.5 | PnL: 0.31% | $0.41 +2025-03-10 14:27:48,743 - INFO - OPENED SHORT at 2067.53 | Stop loss: 2077.8842357142858 | Take profit: 2036.4921714285717 +2025-03-10 14:27:49,932 - INFO - CLOSED short at 2065.06 | PnL: 0.12% | $0.04 +2025-03-10 14:27:49,953 - INFO - OPENED SHORT at 2064.11 | Stop loss: 2074.447135714286 | Take profit: 2033.1234714285717 +2025-03-10 14:27:50,359 - INFO - CLOSED short at 2063.9 | PnL: 0.01% | $-0.18 +2025-03-10 14:27:50,380 - INFO - OPENED SHORT at 2065.1 | Stop loss: 2075.442085714286 | Take profit: 2034.0986214285713 +2025-03-10 14:27:50,552 - INFO - CLOSED short at 2061.21 | PnL: 0.19% | $0.17 +2025-03-10 14:27:50,577 - INFO - OPENED SHORT at 2059.9 | Stop loss: 2070.216085714286 | Take profit: 2028.9766214285717 +2025-03-10 14:27:50,685 - INFO - STOP LOSS hit for short at 2070.216085714286 | PnL: -0.50% | $-1.17 +2025-03-10 14:27:50,706 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.6077857142855 | Take profit: 2039.1615214285712 +2025-03-10 14:27:50,968 - INFO - STOP LOSS hit for short at 2080.6077857142855 | PnL: -0.50% | $-1.16 +2025-03-10 14:27:50,991 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:27:51,015 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.14 +2025-03-10 14:27:51,039 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:27:51,156 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.13 +2025-03-10 14:27:51,190 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:27:51,630 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.61 +2025-03-10 14:27:51,652 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:27:54,066 - INFO - CLOSED short at 2105.2 | PnL: 0.26% | $0.30 +2025-03-10 14:27:54,107 - INFO - OPENED SHORT at 2103.52 | Stop loss: 2114.0541857142857 | Take profit: 2071.9423214285716 +2025-03-10 14:27:54,541 - INFO - CLOSED short at 2113.7 | PnL: -0.48% | $-1.12 +2025-03-10 14:27:54,542 - INFO - OPENED LONG at 2113.7 | Stop loss: 2103.114914285714 | Take profit: 2145.4303785714283 +2025-03-10 14:27:54,582 - INFO - CLOSED long at 2113.0 | PnL: -0.03% | $-0.25 +2025-03-10 14:27:54,583 - INFO - OPENED SHORT at 2113.0 | Stop loss: 2123.581585714286 | Take profit: 2081.2801214285714 +2025-03-10 14:27:55,272 - INFO - STOP LOSS hit for short at 2123.581585714286 | PnL: -0.50% | $-1.14 +2025-03-10 14:27:55,311 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4455357142856 | Take profit: 2095.8482714285715 +2025-03-10 14:27:55,409 - INFO - CLOSED short at 2136.26 | PnL: -0.40% | $-0.93 +2025-03-10 14:27:55,447 - INFO - OPENED SHORT at 2135.51 | Stop loss: 2146.2041357142857 | Take profit: 2103.4524714285717 +2025-03-10 14:27:55,992 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 23.1% in downtrends | Avg Win=$0.52, Avg Loss=$-0.64 +2025-03-10 14:27:55,993 - INFO - Episode 37: Reward=177.05, Balance=$93.18, Win Rate=33.3%, Trades=27, Episode PnL=$-5.84, Total PnL=$-237.02, Max Drawdown=6.8%, Pred Accuracy=99.8% +2025-03-10 14:27:55,993 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:27:56,285 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:27:56,812 - INFO - CLOSED short at 2069.7 | PnL: -0.08% | $-0.36 +2025-03-10 14:27:56,812 - INFO - OPENED LONG at 2069.7 | Stop loss: 2059.334914285714 | Take profit: 2100.7703785714284 +2025-03-10 14:27:56,839 - INFO - CLOSED long at 2070.4 | PnL: 0.03% | $-0.13 +2025-03-10 14:27:56,840 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.768585714286 | Take profit: 2039.3191214285714 +2025-03-10 14:27:58,556 - INFO - CLOSED short at 2063.59 | PnL: 0.33% | $0.45 +2025-03-10 14:27:58,556 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.2554642857144 | Take profit: 2094.5687285714284 +2025-03-10 14:27:58,600 - INFO - CLOSED long at 2064.96 | PnL: 0.07% | $-0.07 +2025-03-10 14:27:58,600 - INFO - OPENED SHORT at 2064.96 | Stop loss: 2075.3013857142855 | Take profit: 2033.9607214285713 +2025-03-10 14:27:59,227 - INFO - CLOSED short at 2061.13 | PnL: 0.19% | $0.17 +2025-03-10 14:27:59,252 - INFO - OPENED SHORT at 2061.9 | Stop loss: 2072.226085714286 | Take profit: 2030.9466214285717 +2025-03-10 14:28:00,717 - INFO - STOP LOSS hit for short at 2072.226085714286 | PnL: -0.50% | $-1.19 +2025-03-10 14:28:00,761 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.416635714286 | Take profit: 2046.8149714285717 +2025-03-10 14:28:03,003 - INFO - CLOSED short at 2066.33 | PnL: 0.56% | $0.91 +2025-03-10 14:28:03,027 - INFO - OPENED SHORT at 2063.01 | Stop loss: 2073.341635714286 | Take profit: 2032.0399714285716 +2025-03-10 14:28:03,775 - INFO - CLOSED short at 2061.21 | PnL: 0.09% | $-0.03 +2025-03-10 14:28:03,775 - INFO - OPENED LONG at 2061.21 | Stop loss: 2050.8873642857143 | Take profit: 2092.1530285714284 +2025-03-10 14:28:03,799 - INFO - CLOSED long at 2059.9 | PnL: -0.06% | $-0.32 +2025-03-10 14:28:03,800 - INFO - OPENED SHORT at 2059.9 | Stop loss: 2070.216085714286 | Take profit: 2028.9766214285717 +2025-03-10 14:28:03,969 - INFO - STOP LOSS hit for short at 2070.216085714286 | PnL: -0.50% | $-1.19 +2025-03-10 14:28:04,014 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.6077857142855 | Take profit: 2039.1615214285712 +2025-03-10 14:28:04,338 - INFO - STOP LOSS hit for short at 2080.6077857142855 | PnL: -0.50% | $-1.17 +2025-03-10 14:28:04,379 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:28:04,426 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.16 +2025-03-10 14:28:04,467 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:28:04,581 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.14 +2025-03-10 14:28:04,604 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:28:04,889 - INFO - CLOSED short at 2119.93 | PnL: 1.00% | $1.69 +2025-03-10 14:28:04,889 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.313764285714 | Take profit: 2151.753828571428 +2025-03-10 14:28:04,912 - INFO - CLOSED long at 2121.4 | PnL: 0.07% | $-0.06 +2025-03-10 14:28:04,912 - INFO - OPENED SHORT at 2121.4 | Stop loss: 2132.0235857142857 | Take profit: 2089.5541214285713 +2025-03-10 14:28:05,971 - INFO - CLOSED short at 2093.33 | PnL: 1.32% | $2.34 +2025-03-10 14:28:05,972 - INFO - OPENED LONG at 2093.33 | Stop loss: 2082.8467642857145 | Take profit: 2124.754828571429 +2025-03-10 14:28:06,017 - INFO - CLOSED long at 2092.46 | PnL: -0.04% | $-0.28 +2025-03-10 14:28:06,018 - INFO - OPENED SHORT at 2092.46 | Stop loss: 2102.938885714286 | Take profit: 2061.0482214285717 +2025-03-10 14:28:06,628 - INFO - CLOSED short at 2088.1 | PnL: 0.21% | $0.21 +2025-03-10 14:28:06,655 - INFO - OPENED SHORT at 2089.96 | Stop loss: 2100.426385714286 | Take profit: 2058.5857214285716 +2025-03-10 14:28:07,037 - INFO - STOP LOSS hit for short at 2100.426385714286 | PnL: -0.50% | $-1.18 +2025-03-10 14:28:07,059 - INFO - OPENED SHORT at 2097.11 | Stop loss: 2107.6121357142856 | Take profit: 2065.6284714285716 +2025-03-10 14:28:07,718 - INFO - CLOSED short at 2108.0 | PnL: -0.52% | $-1.20 +2025-03-10 14:28:07,718 - INFO - OPENED LONG at 2108.0 | Stop loss: 2097.4434142857144 | Take profit: 2139.6448785714288 +2025-03-10 14:28:07,739 - INFO - CLOSED long at 2112.28 | PnL: 0.20% | $0.20 +2025-03-10 14:28:07,739 - INFO - OPENED SHORT at 2112.28 | Stop loss: 2122.857985714286 | Take profit: 2080.5709214285716 +2025-03-10 14:28:08,502 - INFO - STOP LOSS hit for short at 2122.857985714286 | PnL: -0.50% | $-1.15 +2025-03-10 14:28:08,522 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4455357142856 | Take profit: 2095.8482714285715 +2025-03-10 14:28:09,223 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 23.1% in downtrends | Avg Win=$0.85, Avg Loss=$-0.71 +2025-03-10 14:28:09,224 - INFO - Episode 38: Reward=185.74, Balance=$95.35, Win Rate=31.8%, Trades=22, Episode PnL=$-3.99, Total PnL=$-241.67, Max Drawdown=5.3%, Pred Accuracy=99.6% +2025-03-10 14:28:09,224 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:28:09,455 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:28:09,739 - INFO - CLOSED short at 2066.19 | PnL: 0.09% | $-0.02 +2025-03-10 14:28:09,775 - INFO - OPENED SHORT at 2066.29 | Stop loss: 2076.6380357142857 | Take profit: 2035.2707714285714 +2025-03-10 14:28:11,537 - INFO - CLOSED short at 2067.1 | PnL: -0.04% | $-0.28 +2025-03-10 14:28:11,565 - INFO - OPENED SHORT at 2065.54 | Stop loss: 2075.884285714286 | Take profit: 2034.5320214285714 +2025-03-10 14:28:12,553 - INFO - CLOSED short at 2057.4 | PnL: 0.39% | $0.58 +2025-03-10 14:28:12,554 - INFO - OPENED LONG at 2057.4 | Stop loss: 2047.0964142857144 | Take profit: 2088.285878571429 +2025-03-10 14:28:12,599 - INFO - CLOSED long at 2058.28 | PnL: 0.04% | $-0.11 +2025-03-10 14:28:12,599 - INFO - OPENED SHORT at 2058.28 | Stop loss: 2068.587985714286 | Take profit: 2027.3809214285718 +2025-03-10 14:28:13,203 - INFO - STOP LOSS hit for short at 2068.587985714286 | PnL: -0.50% | $-1.19 +2025-03-10 14:28:13,243 - INFO - OPENED SHORT at 2074.3 | Stop loss: 2084.688085714286 | Take profit: 2043.1606214285716 +2025-03-10 14:28:13,700 - INFO - CLOSED short at 2067.33 | PnL: 0.34% | $0.46 +2025-03-10 14:28:13,700 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.976764285714 | Take profit: 2098.3648285714285 +2025-03-10 14:28:13,748 - INFO - CLOSED long at 2066.38 | PnL: -0.05% | $-0.29 +2025-03-10 14:28:13,748 - INFO - OPENED SHORT at 2066.38 | Stop loss: 2076.728485714286 | Take profit: 2035.3594214285715 +2025-03-10 14:28:14,795 - INFO - STOP LOSS hit for short at 2076.728485714286 | PnL: -0.50% | $-1.18 +2025-03-10 14:28:14,818 - INFO - OPENED SHORT at 2075.61 | Stop loss: 2086.004635714286 | Take profit: 2044.4509714285716 +2025-03-10 14:28:16,390 - INFO - CLOSED short at 2069.34 | PnL: 0.30% | $0.39 +2025-03-10 14:28:16,433 - INFO - OPENED SHORT at 2070.41 | Stop loss: 2080.7786357142854 | Take profit: 2039.3289714285713 +2025-03-10 14:28:16,695 - INFO - STOP LOSS hit for short at 2080.7786357142854 | PnL: -0.50% | $-1.17 +2025-03-10 14:28:16,717 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:28:16,739 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.16 +2025-03-10 14:28:16,764 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:28:16,881 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.14 +2025-03-10 14:28:16,918 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:28:17,341 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.64 +2025-03-10 14:28:17,388 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:28:17,543 - INFO - CLOSED short at 2112.99 | PnL: -0.11% | $-0.41 +2025-03-10 14:28:17,543 - INFO - OPENED LONG at 2112.99 | Stop loss: 2102.408464285714 | Take profit: 2144.709728571428 +2025-03-10 14:28:17,566 - INFO - CLOSED long at 2120.81 | PnL: 0.37% | $0.52 +2025-03-10 14:28:17,566 - INFO - OPENED SHORT at 2120.81 | Stop loss: 2131.4306357142855 | Take profit: 2088.9729714285713 +2025-03-10 14:28:17,675 - INFO - CLOSED short at 2106.49 | PnL: 0.68% | $1.11 +2025-03-10 14:28:17,676 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.940964285714 | Take profit: 2138.112228571428 +2025-03-10 14:28:17,752 - INFO - CLOSED long at 2103.33 | PnL: -0.15% | $-0.49 +2025-03-10 14:28:17,752 - INFO - OPENED SHORT at 2103.33 | Stop loss: 2113.8632357142856 | Take profit: 2071.7551714285714 +2025-03-10 14:28:18,850 - INFO - CLOSED short at 2088.32 | PnL: 0.71% | $1.20 +2025-03-10 14:28:18,850 - INFO - OPENED LONG at 2088.32 | Stop loss: 2077.8618142857144 | Take profit: 2119.6696785714284 +2025-03-10 14:28:18,881 - INFO - CLOSED long at 2088.1 | PnL: -0.01% | $-0.22 +2025-03-10 14:28:18,881 - INFO - OPENED SHORT at 2088.1 | Stop loss: 2098.5570857142857 | Take profit: 2056.7536214285715 +2025-03-10 14:28:19,197 - INFO - CLOSED short at 2091.95 | PnL: -0.18% | $-0.56 +2025-03-10 14:28:19,198 - INFO - OPENED LONG at 2091.95 | Stop loss: 2081.473664285714 | Take profit: 2123.354128571428 +2025-03-10 14:28:19,227 - INFO - CLOSED long at 2094.7 | PnL: 0.13% | $0.06 +2025-03-10 14:28:19,227 - INFO - OPENED SHORT at 2094.7 | Stop loss: 2105.190085714286 | Take profit: 2063.254621428571 +2025-03-10 14:28:19,513 - INFO - STOP LOSS hit for short at 2105.190085714286 | PnL: -0.50% | $-1.18 +2025-03-10 14:28:19,539 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.013985714286 | Take profit: 2071.9029214285715 +2025-03-10 14:28:20,157 - INFO - CLOSED short at 2110.4 | PnL: -0.33% | $-0.83 +2025-03-10 14:28:20,157 - INFO - OPENED LONG at 2110.4 | Stop loss: 2099.8314142857143 | Take profit: 2142.0808785714285 +2025-03-10 14:28:20,199 - INFO - CLOSED long at 2113.7 | PnL: 0.16% | $0.11 +2025-03-10 14:28:20,199 - INFO - OPENED SHORT at 2113.7 | Stop loss: 2124.2850857142853 | Take profit: 2081.9696214285714 +2025-03-10 14:28:20,290 - INFO - CLOSED short at 2113.61 | PnL: 0.00% | $-0.18 +2025-03-10 14:28:20,313 - INFO - OPENED SHORT at 2113.1 | Stop loss: 2123.6820857142857 | Take profit: 2081.3786214285715 +2025-03-10 14:28:20,865 - INFO - STOP LOSS hit for short at 2123.6820857142857 | PnL: -0.50% | $-1.15 +2025-03-10 14:28:20,906 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4455357142856 | Take profit: 2095.8482714285715 +2025-03-10 14:28:21,599 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 33.3% in downtrends | Avg Win=$0.79, Avg Loss=$-0.68 +2025-03-10 14:28:21,600 - INFO - Episode 39: Reward=181.14, Balance=$95.50, Win Rate=34.6%, Trades=26, Episode PnL=$-4.08, Total PnL=$-246.17, Max Drawdown=5.1%, Pred Accuracy=99.7% +2025-03-10 14:28:21,600 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:28:22,586 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:28:23,191 - INFO - CLOSED short at 2072.75 | PnL: -0.23% | $-0.65 +2025-03-10 14:28:23,192 - INFO - OPENED LONG at 2072.75 | Stop loss: 2062.3696642857144 | Take profit: 2103.866128571429 +2025-03-10 14:28:23,239 - INFO - CLOSED long at 2072.7 | PnL: -0.00% | $-0.20 +2025-03-10 14:28:23,240 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.0800857142854 | Take profit: 2041.5846214285714 +2025-03-10 14:28:24,243 - INFO - CLOSED short at 2068.18 | PnL: 0.22% | $0.23 +2025-03-10 14:28:24,244 - INFO - OPENED LONG at 2068.18 | Stop loss: 2057.822514285714 | Take profit: 2099.2275785714282 +2025-03-10 14:28:24,266 - INFO - CLOSED long at 2065.69 | PnL: -0.12% | $-0.43 +2025-03-10 14:28:24,266 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.0350357142856 | Take profit: 2034.6797714285715 +2025-03-10 14:28:24,490 - INFO - CLOSED short at 2063.59 | PnL: 0.10% | $0.00 +2025-03-10 14:28:24,490 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.2554642857144 | Take profit: 2094.5687285714284 +2025-03-10 14:28:24,512 - INFO - CLOSED long at 2064.96 | PnL: 0.07% | $-0.07 +2025-03-10 14:28:24,513 - INFO - OPENED SHORT at 2064.96 | Stop loss: 2075.3013857142855 | Take profit: 2033.9607214285713 +2025-03-10 14:28:24,602 - INFO - CLOSED short at 2066.09 | PnL: -0.05% | $-0.30 +2025-03-10 14:28:24,603 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.742964285714 | Take profit: 2097.1062285714283 +2025-03-10 14:28:24,621 - INFO - CLOSED long at 2064.45 | PnL: -0.08% | $-0.35 +2025-03-10 14:28:24,646 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.4169857142856 | Take profit: 2033.0939214285713 +2025-03-10 14:28:24,769 - INFO - CLOSED short at 2061.6 | PnL: 0.12% | $0.04 +2025-03-10 14:28:24,770 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.2754142857143 | Take profit: 2092.5488785714283 +2025-03-10 14:28:24,798 - INFO - CLOSED long at 2060.9 | PnL: -0.03% | $-0.26 +2025-03-10 14:28:24,798 - INFO - OPENED SHORT at 2060.9 | Stop loss: 2071.221085714286 | Take profit: 2029.9616214285713 +2025-03-10 14:28:25,993 - INFO - STOP LOSS hit for short at 2071.221085714286 | PnL: -0.50% | $-1.17 +2025-03-10 14:28:26,019 - INFO - OPENED SHORT at 2074.3 | Stop loss: 2084.688085714286 | Take profit: 2043.1606214285716 +2025-03-10 14:28:26,474 - INFO - CLOSED short at 2063.95 | PnL: 0.50% | $0.77 +2025-03-10 14:28:26,498 - INFO - OPENED SHORT at 2063.97 | Stop loss: 2074.3064357142853 | Take profit: 2032.9855714285711 +2025-03-10 14:28:26,739 - INFO - CLOSED short at 2071.59 | PnL: -0.37% | $-0.91 +2025-03-10 14:28:26,739 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.2154642857145 | Take profit: 2102.688728571429 +2025-03-10 14:28:26,759 - INFO - CLOSED long at 2070.2 | PnL: -0.07% | $-0.32 +2025-03-10 14:28:26,759 - INFO - OPENED SHORT at 2070.2 | Stop loss: 2080.5675857142855 | Take profit: 2039.122121428571 +2025-03-10 14:28:28,953 - INFO - CLOSED short at 2072.99 | PnL: -0.13% | $-0.45 +2025-03-10 14:28:28,954 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.608464285714 | Take profit: 2104.1097285714286 +2025-03-10 14:28:28,988 - INFO - CLOSED long at 2071.89 | PnL: -0.05% | $-0.29 +2025-03-10 14:28:28,988 - INFO - OPENED SHORT at 2071.89 | Stop loss: 2082.2660357142854 | Take profit: 2040.7867714285715 +2025-03-10 14:28:29,131 - INFO - STOP LOSS hit for short at 2082.2660357142854 | PnL: -0.50% | $-1.14 +2025-03-10 14:28:29,154 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:28:29,176 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.13 +2025-03-10 14:28:29,197 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:28:29,326 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.11 +2025-03-10 14:28:29,368 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:28:29,762 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.57 +2025-03-10 14:28:29,794 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:28:29,856 - INFO - CLOSED short at 2112.09 | PnL: -0.07% | $-0.32 +2025-03-10 14:28:29,879 - INFO - OPENED SHORT at 2112.95 | Stop loss: 2123.531335714286 | Take profit: 2081.2308714285714 +2025-03-10 14:28:31,056 - INFO - CLOSED short at 2080.38 | PnL: 1.54% | $2.70 +2025-03-10 14:28:31,079 - INFO - OPENED SHORT at 2081.25 | Stop loss: 2091.6728357142856 | Take profit: 2050.006371428571 +2025-03-10 14:28:31,539 - INFO - STOP LOSS hit for short at 2091.6728357142856 | PnL: -0.50% | $-1.16 +2025-03-10 14:28:31,559 - INFO - OPENED SHORT at 2094.7 | Stop loss: 2105.190085714286 | Take profit: 2063.254621428571 +2025-03-10 14:28:31,743 - INFO - STOP LOSS hit for short at 2105.190085714286 | PnL: -0.50% | $-1.14 +2025-03-10 14:28:31,765 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.013985714286 | Take profit: 2071.9029214285715 +2025-03-10 14:28:32,306 - INFO - STOP LOSS hit for short at 2114.013985714286 | PnL: -0.50% | $-1.13 +2025-03-10 14:28:32,332 - INFO - OPENED SHORT at 2113.61 | Stop loss: 2124.194635714286 | Take profit: 2081.8809714285717 +2025-03-10 14:28:32,835 - INFO - STOP LOSS hit for short at 2124.194635714286 | PnL: -0.50% | $-1.12 +2025-03-10 14:28:32,855 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4455357142856 | Take profit: 2095.8482714285715 +2025-03-10 14:28:32,996 - INFO - CLOSED short at 2127.79 | PnL: 0.00% | $-0.18 +2025-03-10 14:28:32,996 - INFO - OPENED LONG at 2127.79 | Stop loss: 2117.1344642857143 | Take profit: 2159.7317285714284 +2025-03-10 14:28:33,017 - INFO - CLOSED long at 2124.38 | PnL: -0.16% | $-0.48 +2025-03-10 14:28:33,017 - INFO - OPENED SHORT at 2124.38 | Stop loss: 2135.018485714286 | Take profit: 2092.4894214285714 +2025-03-10 14:28:33,118 - INFO - STOP LOSS hit for short at 2135.018485714286 | PnL: -0.50% | $-1.10 +2025-03-10 14:28:33,139 - INFO - OPENED SHORT at 2131.23 | Stop loss: 2141.902735714286 | Take profit: 2099.2366714285713 +2025-03-10 14:28:33,285 - INFO - CLOSED short at 2117.98 | PnL: 0.62% | $0.94 +2025-03-10 14:28:33,307 - INFO - OPENED SHORT at 2118.8 | Stop loss: 2129.410585714286 | Take profit: 2086.9931214285716 +2025-03-10 14:28:33,433 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 22.2% in downtrends | Avg Win=$1.04, Avg Loss=$-0.67 +2025-03-10 14:28:33,434 - INFO - Episode 40: Reward=172.89, Balance=$91.83, Win Rate=23.3%, Trades=30, Episode PnL=$-6.12, Total PnL=$-254.34, Max Drawdown=9.1%, Pred Accuracy=99.7% +2025-03-10 14:28:33,556 - INFO - Model saved to checkpoints/trading_agent_episode_40.pt +2025-03-10 14:28:33,557 - INFO - Checkpoint saved at episode 40 +2025-03-10 14:28:33,557 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:28:33,618 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 14:28:33,620 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2514, in visualize_training_results + ax1.set_ylabel('Price (USD)') +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 14:28:34,454 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 14:28:34,455 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2514, in visualize_training_results + ax1.set_ylabel('Price (USD)') +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 14:28:34,777 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:28:35,227 - INFO - CLOSED short at 2068.9 | PnL: -0.04% | $-0.28 +2025-03-10 14:28:35,228 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.5389142857143 | Take profit: 2099.958378571429 +2025-03-10 14:28:35,260 - INFO - CLOSED long at 2068.51 | PnL: -0.02% | $-0.24 +2025-03-10 14:28:35,261 - INFO - OPENED SHORT at 2068.51 | Stop loss: 2078.869135714286 | Take profit: 2037.4574714285716 +2025-03-10 14:28:35,529 - INFO - CLOSED short at 2072.15 | PnL: -0.18% | $-0.54 +2025-03-10 14:28:35,571 - INFO - OPENED SHORT at 2074.29 | Stop loss: 2084.6780357142857 | Take profit: 2043.1507714285715 +2025-03-10 14:28:37,376 - INFO - CLOSED short at 2062.61 | PnL: 0.56% | $0.91 +2025-03-10 14:28:37,402 - INFO - OPENED SHORT at 2060.91 | Stop loss: 2071.2311357142858 | Take profit: 2029.9714714285715 +2025-03-10 14:28:37,899 - INFO - CLOSED short at 2059.02 | PnL: 0.09% | $-0.02 +2025-03-10 14:28:37,900 - INFO - OPENED LONG at 2059.02 | Stop loss: 2048.708314285714 | Take profit: 2089.9301785714288 +2025-03-10 14:28:37,936 - INFO - CLOSED long at 2058.89 | PnL: -0.01% | $-0.21 +2025-03-10 14:28:37,936 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.201035714286 | Take profit: 2027.9817714285714 +2025-03-10 14:28:38,394 - INFO - CLOSED short at 2066.36 | PnL: -0.36% | $-0.91 +2025-03-10 14:28:38,395 - INFO - OPENED LONG at 2066.36 | Stop loss: 2056.0116142857146 | Take profit: 2097.380278571429 +2025-03-10 14:28:38,429 - INFO - CLOSED long at 2066.01 | PnL: -0.02% | $-0.23 +2025-03-10 14:28:38,429 - INFO - OPENED SHORT at 2066.01 | Stop loss: 2076.356635714286 | Take profit: 2034.9949714285715 +2025-03-10 14:28:38,589 - INFO - CLOSED short at 2067.01 | PnL: -0.05% | $-0.29 +2025-03-10 14:28:38,615 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.0350357142856 | Take profit: 2034.6797714285715 +2025-03-10 14:28:38,712 - INFO - STOP LOSS hit for short at 2076.0350357142856 | PnL: -0.50% | $-1.17 +2025-03-10 14:28:38,747 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.401635714286 | Take profit: 2043.8599714285717 +2025-03-10 14:28:40,485 - INFO - CLOSED short at 2070.19 | PnL: 0.23% | $0.25 +2025-03-10 14:28:40,512 - INFO - OPENED SHORT at 2070.1 | Stop loss: 2080.4670857142855 | Take profit: 2039.0236214285712 +2025-03-10 14:28:40,959 - INFO - CLOSED short at 2060.7 | PnL: 0.45% | $0.68 +2025-03-10 14:28:40,960 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.379914285714 | Take profit: 2091.635378571428 +2025-03-10 14:28:41,003 - INFO - CLOSED long at 2059.2 | PnL: -0.07% | $-0.34 +2025-03-10 14:28:41,004 - INFO - OPENED SHORT at 2059.2 | Stop loss: 2069.5125857142853 | Take profit: 2028.2871214285713 +2025-03-10 14:28:41,223 - INFO - CLOSED short at 2058.3 | PnL: 0.04% | $-0.11 +2025-03-10 14:28:41,257 - INFO - OPENED SHORT at 2056.85 | Stop loss: 2067.1508357142857 | Take profit: 2025.9723714285713 +2025-03-10 14:28:41,445 - INFO - STOP LOSS hit for short at 2067.1508357142857 | PnL: -0.50% | $-1.16 +2025-03-10 14:28:41,468 - INFO - OPENED SHORT at 2067.49 | Stop loss: 2077.8440357142854 | Take profit: 2036.4527714285712 +2025-03-10 14:28:41,798 - INFO - CLOSED short at 2070.41 | PnL: -0.14% | $-0.46 +2025-03-10 14:28:41,819 - INFO - OPENED SHORT at 2073.49 | Stop loss: 2083.8740357142856 | Take profit: 2042.3627714285712 +2025-03-10 14:28:42,059 - INFO - STOP LOSS hit for short at 2083.8740357142856 | PnL: -0.50% | $-1.14 +2025-03-10 14:28:42,083 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:28:42,105 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.13 +2025-03-10 14:28:42,127 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:28:42,238 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.12 +2025-03-10 14:28:42,296 - INFO - OPENED SHORT at 2142.68 | Stop loss: 2153.4099857142855 | Take profit: 2110.514921428571 +2025-03-10 14:28:42,683 - INFO - TAKE PROFIT hit for short at 2110.514921428571 | PnL: 1.50% | $2.57 +2025-03-10 14:28:42,724 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:28:45,063 - INFO - CLOSED short at 2103.41 | PnL: 0.34% | $0.45 +2025-03-10 14:28:45,105 - INFO - OPENED SHORT at 2104.73 | Stop loss: 2115.2702357142857 | Take profit: 2073.1341714285713 +2025-03-10 14:28:45,327 - INFO - CLOSED short at 2113.0 | PnL: -0.39% | $-0.93 +2025-03-10 14:28:45,327 - INFO - OPENED LONG at 2113.0 | Stop loss: 2102.4184142857143 | Take profit: 2144.7198785714286 +2025-03-10 14:28:45,347 - INFO - CLOSED long at 2115.26 | PnL: 0.11% | $0.01 +2025-03-10 14:28:45,348 - INFO - OPENED SHORT at 2115.26 | Stop loss: 2125.852885714286 | Take profit: 2083.5062214285717 +2025-03-10 14:28:45,543 - INFO - CLOSED short at 2111.19 | PnL: 0.19% | $0.17 +2025-03-10 14:28:45,616 - INFO - OPENED LONG at 2118.72 | Stop loss: 2108.109814285714 | Take profit: 2150.525678571428 +2025-03-10 14:28:45,654 - INFO - CLOSED long at 2117.39 | PnL: -0.06% | $-0.31 +2025-03-10 14:28:45,655 - INFO - OPENED SHORT at 2117.39 | Stop loss: 2127.993535714286 | Take profit: 2085.6042714285713 +2025-03-10 14:28:46,106 - INFO - STOP LOSS hit for short at 2127.993535714286 | PnL: -0.50% | $-1.13 +2025-03-10 14:28:46,132 - INFO - OPENED SHORT at 2135.86 | Stop loss: 2146.5558857142855 | Take profit: 2103.7972214285714 +2025-03-10 14:28:46,464 - INFO - CLOSED short at 2126.43 | PnL: 0.44% | $0.63 +2025-03-10 14:28:46,486 - INFO - OPENED SHORT at 2124.49 | Stop loss: 2135.1290357142852 | Take profit: 2092.597771428571 +2025-03-10 14:28:46,727 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 16.7% in downtrends | Avg Win=$0.71, Avg Loss=$-0.62 +2025-03-10 14:28:46,728 - INFO - Episode 41: Reward=173.15, Balance=$93.97, Win Rate=29.6%, Trades=27, Episode PnL=$-4.72, Total PnL=$-260.36, Max Drawdown=7.5%, Pred Accuracy=99.9% +2025-03-10 14:28:46,728 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:28:47,033 - INFO - OPENED SHORT at 2070.36 | Stop loss: 2080.7283857142857 | Take profit: 2039.2797214285715 +2025-03-10 14:28:47,094 - INFO - CLOSED short at 2069.34 | PnL: 0.05% | $-0.10 +2025-03-10 14:28:47,118 - INFO - OPENED SHORT at 2069.19 | Stop loss: 2079.5525357142856 | Take profit: 2038.1272714285715 +2025-03-10 14:28:48,175 - INFO - CLOSED short at 2069.34 | PnL: -0.01% | $-0.21 +2025-03-10 14:28:48,175 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.9767142857145 | Take profit: 2100.4049785714287 +2025-03-10 14:28:48,248 - INFO - CLOSED long at 2067.59 | PnL: -0.08% | $-0.37 +2025-03-10 14:28:48,248 - INFO - OPENED SHORT at 2067.59 | Stop loss: 2077.944535714286 | Take profit: 2036.5512714285715 +2025-03-10 14:28:49,477 - INFO - CLOSED short at 2060.31 | PnL: 0.35% | $0.50 +2025-03-10 14:28:49,498 - INFO - OPENED LONG at 2061.8 | Stop loss: 2051.4744142857144 | Take profit: 2092.7518785714287 +2025-03-10 14:28:49,520 - INFO - CLOSED long at 2064.7 | PnL: 0.14% | $0.08 +2025-03-10 14:28:49,520 - INFO - OPENED SHORT at 2064.7 | Stop loss: 2075.0400857142854 | Take profit: 2033.7046214285713 +2025-03-10 14:28:50,962 - INFO - STOP LOSS hit for short at 2075.0400857142854 | PnL: -0.50% | $-1.19 +2025-03-10 14:28:51,002 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.401635714286 | Take profit: 2043.8599714285717 +2025-03-10 14:28:52,299 - INFO - CLOSED short at 2071.99 | PnL: 0.15% | $0.09 +2025-03-10 14:28:52,338 - INFO - OPENED SHORT at 2068.19 | Stop loss: 2078.547535714286 | Take profit: 2037.1422714285713 +2025-03-10 14:28:53,343 - INFO - CLOSED short at 2062.34 | PnL: 0.28% | $0.36 +2025-03-10 14:28:53,343 - INFO - OPENED LONG at 2062.34 | Stop loss: 2052.0117142857143 | Take profit: 2093.2999785714287 +2025-03-10 14:28:53,364 - INFO - CLOSED long at 2063.98 | PnL: 0.08% | $-0.04 +2025-03-10 14:28:53,364 - INFO - OPENED SHORT at 2063.98 | Stop loss: 2074.3164857142856 | Take profit: 2032.9954214285715 +2025-03-10 14:28:54,730 - INFO - STOP LOSS hit for short at 2074.3164857142856 | PnL: -0.50% | $-1.18 +2025-03-10 14:28:54,766 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.4769857142855 | Take profit: 2044.9139214285713 +2025-03-10 14:28:54,871 - INFO - STOP LOSS hit for short at 2086.4769857142855 | PnL: -0.50% | $-1.17 +2025-03-10 14:28:54,934 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:28:55,062 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.15 +2025-03-10 14:28:55,100 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:28:55,563 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.66 +2025-03-10 14:28:55,602 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:28:57,330 - INFO - CLOSED short at 2087.47 | PnL: 1.10% | $1.94 +2025-03-10 14:28:57,349 - INFO - OPENED SHORT at 2087.78 | Stop loss: 2098.235485714286 | Take profit: 2056.4384214285715 +2025-03-10 14:28:57,621 - INFO - STOP LOSS hit for short at 2098.235485714286 | PnL: -0.50% | $-1.19 +2025-03-10 14:28:57,654 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1647857142857 | Take profit: 2070.0905214285713 +2025-03-10 14:28:57,694 - INFO - CLOSED short at 2098.49 | PnL: 0.15% | $0.10 +2025-03-10 14:28:57,694 - INFO - OPENED LONG at 2098.49 | Stop loss: 2087.980964285714 | Take profit: 2129.9922285714283 +2025-03-10 14:28:57,717 - INFO - CLOSED long at 2099.89 | PnL: 0.07% | $-0.07 +2025-03-10 14:28:57,717 - INFO - OPENED SHORT at 2099.89 | Stop loss: 2110.4060357142857 | Take profit: 2068.3667714285716 +2025-03-10 14:28:57,893 - INFO - CLOSED short at 2101.5 | PnL: -0.08% | $-0.35 +2025-03-10 14:28:57,928 - INFO - OPENED SHORT at 2105.83 | Stop loss: 2116.3757357142854 | Take profit: 2074.2176714285715 +2025-03-10 14:28:58,685 - INFO - STOP LOSS hit for short at 2116.3757357142854 | PnL: -0.50% | $-1.18 +2025-03-10 14:28:58,723 - INFO - OPENED SHORT at 2117.39 | Stop loss: 2127.993535714286 | Take profit: 2085.6042714285713 +2025-03-10 14:28:59,121 - INFO - STOP LOSS hit for short at 2127.993535714286 | PnL: -0.50% | $-1.16 +2025-03-10 14:28:59,188 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.957885714286 | Take profit: 2104.1912214285717 +2025-03-10 14:28:59,780 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 27.3% in downtrends | Avg Win=$0.82, Avg Loss=$-0.72 +2025-03-10 14:28:59,781 - INFO - Episode 42: Reward=184.36, Balance=$96.36, Win Rate=35.0%, Trades=20, Episode PnL=$-3.24, Total PnL=$-264.00, Max Drawdown=4.4%, Pred Accuracy=99.7% +2025-03-10 14:28:59,781 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:29:00,077 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:29:00,099 - INFO - CLOSED short at 2067.2 | PnL: 0.04% | $-0.12 +2025-03-10 14:29:00,099 - INFO - OPENED LONG at 2067.2 | Stop loss: 2056.847414285714 | Take profit: 2098.2328785714285 +2025-03-10 14:29:00,123 - INFO - CLOSED long at 2070.36 | PnL: 0.15% | $0.10 +2025-03-10 14:29:00,123 - INFO - OPENED SHORT at 2070.36 | Stop loss: 2080.7283857142857 | Take profit: 2039.2797214285715 +2025-03-10 14:29:00,474 - INFO - CLOSED short at 2066.18 | PnL: 0.20% | $0.20 +2025-03-10 14:29:00,497 - INFO - OPENED SHORT at 2068.76 | Stop loss: 2079.120385714286 | Take profit: 2037.7037214285717 +2025-03-10 14:29:05,564 - INFO - CLOSED short at 2067.0 | PnL: 0.09% | $-0.03 +2025-03-10 14:29:05,564 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.6484142857144 | Take profit: 2098.0298785714285 +2025-03-10 14:29:05,604 - INFO - CLOSED long at 2067.9 | PnL: 0.04% | $-0.11 +2025-03-10 14:29:05,604 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.2560857142857 | Take profit: 2036.8566214285713 +2025-03-10 14:29:07,388 - INFO - STOP LOSS hit for short at 2078.2560857142857 | PnL: -0.50% | $-1.19 +2025-03-10 14:29:07,408 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:29:07,435 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.18 +2025-03-10 14:29:07,461 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:29:07,635 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.16 +2025-03-10 14:29:07,661 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:29:07,680 - INFO - CLOSED short at 2142.68 | PnL: -0.06% | $-0.31 +2025-03-10 14:29:07,703 - INFO - OPENED SHORT at 2140.01 | Stop loss: 2150.726635714286 | Take profit: 2107.8849714285716 +2025-03-10 14:29:07,959 - INFO - CLOSED short at 2119.14 | PnL: 0.98% | $1.67 +2025-03-10 14:29:07,959 - INFO - OPENED LONG at 2119.14 | Stop loss: 2108.527714285714 | Take profit: 2150.9519785714283 +2025-03-10 14:29:08,022 - INFO - CLOSED long at 2115.28 | PnL: -0.18% | $-0.55 +2025-03-10 14:29:08,023 - INFO - OPENED SHORT at 2115.28 | Stop loss: 2125.8729857142857 | Take profit: 2083.5259214285716 +2025-03-10 14:29:08,160 - INFO - CLOSED short at 2112.46 | PnL: 0.13% | $0.06 +2025-03-10 14:29:08,182 - INFO - OPENED SHORT at 2113.24 | Stop loss: 2123.8227857142856 | Take profit: 2081.516521428571 +2025-03-10 14:29:08,519 - INFO - CLOSED short at 2098.1 | PnL: 0.72% | $1.19 +2025-03-10 14:29:08,540 - INFO - OPENED SHORT at 2102.19 | Stop loss: 2112.717535714286 | Take profit: 2070.6322714285716 +2025-03-10 14:29:08,641 - INFO - CLOSED short at 2104.83 | PnL: -0.13% | $-0.44 +2025-03-10 14:29:08,641 - INFO - OPENED LONG at 2104.83 | Stop loss: 2094.289264285714 | Take profit: 2136.4273285714285 +2025-03-10 14:29:08,678 - INFO - CLOSED long at 2106.39 | PnL: 0.07% | $-0.05 +2025-03-10 14:29:08,679 - INFO - OPENED SHORT at 2106.39 | Stop loss: 2116.938535714286 | Take profit: 2074.7692714285713 +2025-03-10 14:29:08,883 - INFO - CLOSED short at 2098.39 | PnL: 0.38% | $0.54 +2025-03-10 14:29:08,927 - INFO - OPENED SHORT at 2093.46 | Stop loss: 2103.943885714286 | Take profit: 2062.0332214285713 +2025-03-10 14:29:10,096 - INFO - STOP LOSS hit for short at 2103.943885714286 | PnL: -0.50% | $-1.18 +2025-03-10 14:29:10,117 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.013985714286 | Take profit: 2071.9029214285715 +2025-03-10 14:29:10,753 - INFO - STOP LOSS hit for short at 2114.013985714286 | PnL: -0.50% | $-1.16 +2025-03-10 14:29:10,794 - INFO - OPENED SHORT at 2113.61 | Stop loss: 2124.194635714286 | Take profit: 2081.8809714285717 +2025-03-10 14:29:11,385 - INFO - STOP LOSS hit for short at 2124.194635714286 | PnL: -0.50% | $-1.15 +2025-03-10 14:29:11,409 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4455357142856 | Take profit: 2095.8482714285715 +2025-03-10 14:29:11,880 - INFO - CLOSED short at 2120.0 | PnL: 0.37% | $0.50 +2025-03-10 14:29:11,914 - INFO - OPENED LONG at 2117.98 | Stop loss: 2107.3735142857145 | Take profit: 2149.7745785714287 +2025-03-10 14:29:11,951 - INFO - CLOSED long at 2118.8 | PnL: 0.04% | $-0.12 +2025-03-10 14:29:11,951 - INFO - OPENED SHORT at 2118.8 | Stop loss: 2129.410585714286 | Take profit: 2086.9931214285716 +2025-03-10 14:29:12,131 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 10.0% in downtrends | Avg Win=$0.61, Avg Loss=$-0.63 +2025-03-10 14:29:12,132 - INFO - Episode 43: Reward=183.04, Balance=$95.53, Win Rate=33.3%, Trades=21, Episode PnL=$-3.75, Total PnL=$-268.47, Max Drawdown=5.0%, Pred Accuracy=99.7% +2025-03-10 14:29:12,132 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:29:12,322 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:29:13,334 - INFO - CLOSED short at 2067.0 | PnL: 0.05% | $-0.10 +2025-03-10 14:29:13,376 - INFO - OPENED SHORT at 2067.79 | Stop loss: 2078.145535714286 | Take profit: 2036.7482714285713 +2025-03-10 14:29:15,475 - INFO - CLOSED short at 2059.02 | PnL: 0.42% | $0.64 +2025-03-10 14:29:15,538 - INFO - OPENED SHORT at 2059.46 | Stop loss: 2069.773885714286 | Take profit: 2028.5432214285713 +2025-03-10 14:29:16,211 - INFO - STOP LOSS hit for short at 2069.773885714286 | PnL: -0.50% | $-1.20 +2025-03-10 14:29:16,247 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3765857142857 | Take profit: 2040.8951214285714 +2025-03-10 14:29:17,864 - INFO - CLOSED short at 2072.09 | PnL: -0.00% | $-0.21 +2025-03-10 14:29:17,864 - INFO - OPENED LONG at 2072.09 | Stop loss: 2061.7129642857144 | Take profit: 2103.196228571429 +2025-03-10 14:29:17,905 - INFO - CLOSED long at 2067.7 | PnL: -0.21% | $-0.61 +2025-03-10 14:29:17,905 - INFO - OPENED SHORT at 2067.7 | Stop loss: 2078.0550857142853 | Take profit: 2036.6596214285712 +2025-03-10 14:29:19,076 - INFO - CLOSED short at 2068.33 | PnL: -0.03% | $-0.26 +2025-03-10 14:29:19,189 - INFO - OPENED SHORT at 2059.9 | Stop loss: 2070.216085714286 | Take profit: 2028.9766214285717 +2025-03-10 14:29:19,333 - INFO - STOP LOSS hit for short at 2070.216085714286 | PnL: -0.50% | $-1.17 +2025-03-10 14:29:19,369 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.6077857142855 | Take profit: 2039.1615214285712 +2025-03-10 14:29:19,639 - INFO - STOP LOSS hit for short at 2080.6077857142855 | PnL: -0.50% | $-1.16 +2025-03-10 14:29:19,676 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:29:19,713 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.14 +2025-03-10 14:29:19,748 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:29:19,886 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.13 +2025-03-10 14:29:19,932 - INFO - OPENED SHORT at 2142.68 | Stop loss: 2153.4099857142855 | Take profit: 2110.514921428571 +2025-03-10 14:29:20,310 - INFO - TAKE PROFIT hit for short at 2110.514921428571 | PnL: 1.50% | $2.60 +2025-03-10 14:29:20,465 - INFO - OPENED SHORT at 2112.99 | Stop loss: 2123.5715357142853 | Take profit: 2081.270271428571 +2025-03-10 14:29:20,963 - INFO - CLOSED short at 2106.39 | PnL: 0.31% | $0.41 +2025-03-10 14:29:21,039 - INFO - OPENED SHORT at 2103.86 | Stop loss: 2114.395885714286 | Take profit: 2072.2772214285715 +2025-03-10 14:29:21,593 - INFO - CLOSED short at 2081.25 | PnL: 1.07% | $1.87 +2025-03-10 14:29:21,639 - INFO - OPENED SHORT at 2085.09 | Stop loss: 2095.532035714286 | Take profit: 2053.7887714285716 +2025-03-10 14:29:22,290 - INFO - STOP LOSS hit for short at 2095.532035714286 | PnL: -0.50% | $-1.17 +2025-03-10 14:29:22,364 - INFO - OPENED SHORT at 2097.11 | Stop loss: 2107.6121357142856 | Take profit: 2065.6284714285716 +2025-03-10 14:29:22,493 - INFO - CLOSED short at 2106.15 | PnL: -0.43% | $-1.03 +2025-03-10 14:29:22,493 - INFO - OPENED LONG at 2106.15 | Stop loss: 2095.602664285714 | Take profit: 2137.7671285714287 +2025-03-10 14:29:22,548 - INFO - CLOSED long at 2103.48 | PnL: -0.13% | $-0.43 +2025-03-10 14:29:22,548 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.013985714286 | Take profit: 2071.9029214285715 +2025-03-10 14:29:23,313 - INFO - STOP LOSS hit for short at 2114.013985714286 | PnL: -0.50% | $-1.14 +2025-03-10 14:29:23,354 - INFO - OPENED SHORT at 2113.61 | Stop loss: 2124.194635714286 | Take profit: 2081.8809714285717 +2025-03-10 14:29:23,994 - INFO - STOP LOSS hit for short at 2124.194635714286 | PnL: -0.50% | $-1.13 +2025-03-10 14:29:24,016 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4455357142856 | Take profit: 2095.8482714285715 +2025-03-10 14:29:24,544 - INFO - CLOSED short at 2120.0 | PnL: 0.37% | $0.49 +2025-03-10 14:29:24,650 - INFO - OPENED SHORT at 2116.53 | Stop loss: 2127.1292357142856 | Take profit: 2084.757171428572 +2025-03-10 14:29:24,757 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 9.1% in downtrends | Avg Win=$1.20, Avg Loss=$-0.85 +2025-03-10 14:29:24,758 - INFO - Episode 44: Reward=177.66, Balance=$94.13, Win Rate=26.3%, Trades=19, Episode PnL=$-4.82, Total PnL=$-274.34, Max Drawdown=6.9%, Pred Accuracy=99.7% +2025-03-10 14:29:24,758 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:29:25,881 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:29:26,386 - INFO - CLOSED short at 2068.9 | PnL: -0.04% | $-0.28 +2025-03-10 14:29:26,387 - INFO - OPENED LONG at 2068.9 | Stop loss: 2058.5389142857143 | Take profit: 2099.958378571429 +2025-03-10 14:29:26,429 - INFO - CLOSED long at 2068.51 | PnL: -0.02% | $-0.24 +2025-03-10 14:29:26,429 - INFO - OPENED SHORT at 2068.51 | Stop loss: 2078.869135714286 | Take profit: 2037.4574714285716 +2025-03-10 14:29:28,247 - INFO - CLOSED short at 2066.24 | PnL: 0.11% | $0.02 +2025-03-10 14:29:28,296 - INFO - OPENED SHORT at 2067.1 | Stop loss: 2077.4520857142857 | Take profit: 2036.0686214285715 +2025-03-10 14:29:28,566 - INFO - CLOSED short at 2063.5 | PnL: 0.17% | $0.15 +2025-03-10 14:29:28,691 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.201035714286 | Take profit: 2027.9817714285714 +2025-03-10 14:29:30,308 - INFO - STOP LOSS hit for short at 2069.201035714286 | PnL: -0.50% | $-1.19 +2025-03-10 14:29:30,340 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3765857142857 | Take profit: 2040.8951214285714 +2025-03-10 14:29:30,468 - INFO - CLOSED short at 2071.04 | PnL: 0.05% | $-0.10 +2025-03-10 14:29:30,468 - INFO - OPENED LONG at 2071.04 | Stop loss: 2060.6682142857144 | Take profit: 2102.1304785714287 +2025-03-10 14:29:30,507 - INFO - CLOSED long at 2070.01 | PnL: -0.05% | $-0.29 +2025-03-10 14:29:30,507 - INFO - OPENED SHORT at 2070.01 | Stop loss: 2080.376635714286 | Take profit: 2038.9349714285715 +2025-03-10 14:29:31,159 - INFO - CLOSED short at 2065.5 | PnL: 0.22% | $0.23 +2025-03-10 14:29:31,159 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.155914285714 | Take profit: 2096.5073785714285 +2025-03-10 14:29:31,186 - INFO - CLOSED long at 2067.53 | PnL: 0.10% | $-0.00 +2025-03-10 14:29:31,186 - INFO - OPENED SHORT at 2067.53 | Stop loss: 2077.8842357142858 | Take profit: 2036.4921714285717 +2025-03-10 14:29:31,499 - INFO - CLOSED short at 2070.7 | PnL: -0.15% | $-0.49 +2025-03-10 14:29:31,499 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.329914285714 | Take profit: 2101.7853785714283 +2025-03-10 14:29:31,522 - INFO - CLOSED long at 2070.8 | PnL: 0.00% | $-0.18 +2025-03-10 14:29:31,523 - INFO - OPENED SHORT at 2070.8 | Stop loss: 2081.170585714286 | Take profit: 2039.7131214285716 +2025-03-10 14:29:33,176 - INFO - CLOSED short at 2060.2 | PnL: 0.51% | $0.80 +2025-03-10 14:29:33,272 - INFO - OPENED SHORT at 2056.77 | Stop loss: 2067.070435714286 | Take profit: 2025.8935714285712 +2025-03-10 14:29:33,664 - INFO - STOP LOSS hit for short at 2067.070435714286 | PnL: -0.50% | $-1.17 +2025-03-10 14:29:33,721 - INFO - OPENED SHORT at 2066.59 | Stop loss: 2076.9395357142857 | Take profit: 2035.5662714285716 +2025-03-10 14:29:33,745 - INFO - CLOSED short at 2064.08 | PnL: 0.12% | $0.04 +2025-03-10 14:29:33,746 - INFO - OPENED LONG at 2064.08 | Stop loss: 2053.7430142857143 | Take profit: 2095.0660785714285 +2025-03-10 14:29:33,775 - INFO - CLOSED long at 2061.21 | PnL: -0.14% | $-0.46 +2025-03-10 14:29:33,775 - INFO - OPENED SHORT at 2061.21 | Stop loss: 2071.532635714286 | Take profit: 2030.2669714285714 +2025-03-10 14:29:34,046 - INFO - CLOSED short at 2073.49 | PnL: -0.60% | $-1.34 +2025-03-10 14:29:34,046 - INFO - OPENED LONG at 2073.49 | Stop loss: 2063.105964285714 | Take profit: 2104.6172285714283 +2025-03-10 14:29:34,073 - INFO - CLOSED long at 2074.05 | PnL: 0.03% | $-0.14 +2025-03-10 14:29:34,073 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4368357142857 | Take profit: 2042.9143714285715 +2025-03-10 14:29:34,255 - INFO - STOP LOSS hit for short at 2084.4368357142857 | PnL: -0.50% | $-1.14 +2025-03-10 14:29:34,280 - INFO - OPENED LONG at 2090.49 | Stop loss: 2080.020964285714 | Take profit: 2121.8722285714284 +2025-03-10 14:29:34,331 - INFO - TAKE PROFIT hit for long at 2121.8722285714284 | PnL: 1.50% | $2.62 +2025-03-10 14:29:34,362 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2542857142857 | Take profit: 2107.4220214285715 +2025-03-10 14:29:34,723 - INFO - CLOSED short at 2120.15 | PnL: 0.91% | $1.55 +2025-03-10 14:29:34,724 - INFO - OPENED LONG at 2120.15 | Stop loss: 2109.5326642857144 | Take profit: 2151.9771285714287 +2025-03-10 14:29:34,759 - INFO - CLOSED long at 2117.24 | PnL: -0.14% | $-0.46 +2025-03-10 14:29:34,759 - INFO - OPENED SHORT at 2117.24 | Stop loss: 2127.8427857142856 | Take profit: 2085.4565214285712 +2025-03-10 14:29:35,040 - INFO - CLOSED short at 2112.95 | PnL: 0.20% | $0.20 +2025-03-10 14:29:35,041 - INFO - OPENED LONG at 2112.95 | Stop loss: 2102.368664285714 | Take profit: 2144.6691285714282 +2025-03-10 14:29:35,067 - INFO - CLOSED long at 2112.46 | PnL: -0.02% | $-0.24 +2025-03-10 14:29:35,067 - INFO - OPENED SHORT at 2112.46 | Stop loss: 2123.038885714286 | Take profit: 2080.7482214285715 +2025-03-10 14:29:35,516 - INFO - CLOSED short at 2102.19 | PnL: 0.49% | $0.75 +2025-03-10 14:29:35,539 - INFO - OPENED SHORT at 2102.29 | Stop loss: 2112.8180357142855 | Take profit: 2070.730771428571 +2025-03-10 14:29:38,301 - INFO - STOP LOSS hit for short at 2112.8180357142855 | PnL: -0.50% | $-1.18 +2025-03-10 14:29:38,392 - INFO - OPENED SHORT at 2113.1 | Stop loss: 2123.6820857142857 | Take profit: 2081.3786214285715 +2025-03-10 14:29:39,131 - INFO - STOP LOSS hit for short at 2123.6820857142857 | PnL: -0.50% | $-1.16 +2025-03-10 14:29:39,605 - INFO - OPENED SHORT at 2126.43 | Stop loss: 2137.0787357142854 | Take profit: 2094.5086714285712 +2025-03-10 14:29:39,981 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 35.7% in downtrends | Avg Win=$0.71, Avg Loss=$-0.59 +2025-03-10 14:29:39,982 - INFO - Episode 45: Reward=169.00, Balance=$96.28, Win Rate=34.6%, Trades=26, Episode PnL=$-1.70, Total PnL=$-278.06, Max Drawdown=5.8%, Pred Accuracy=99.8% +2025-03-10 14:29:39,983 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:29:40,308 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:29:40,783 - INFO - CLOSED short at 2068.76 | PnL: -0.04% | $-0.27 +2025-03-10 14:29:40,807 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.261085714286 | Take profit: 2037.8416214285717 +2025-03-10 14:29:41,496 - INFO - CLOSED short at 2067.0 | PnL: 0.09% | $-0.02 +2025-03-10 14:29:41,549 - INFO - OPENED SHORT at 2067.46 | Stop loss: 2077.813885714286 | Take profit: 2036.4232214285714 +2025-03-10 14:29:42,090 - INFO - CLOSED short at 2068.69 | PnL: -0.06% | $-0.32 +2025-03-10 14:29:42,090 - INFO - OPENED LONG at 2068.69 | Stop loss: 2058.329964285714 | Take profit: 2099.745228571429 +2025-03-10 14:29:42,158 - INFO - CLOSED long at 2067.84 | PnL: -0.04% | $-0.28 +2025-03-10 14:29:42,158 - INFO - OPENED SHORT at 2067.84 | Stop loss: 2078.1957857142856 | Take profit: 2036.7975214285716 +2025-03-10 14:29:43,853 - INFO - CLOSED short at 2063.53 | PnL: 0.21% | $0.21 +2025-03-10 14:29:43,908 - INFO - OPENED SHORT at 2062.6 | Stop loss: 2072.9295857142856 | Take profit: 2031.6361214285714 +2025-03-10 14:29:44,115 - INFO - CLOSED short at 2059.16 | PnL: 0.17% | $0.13 +2025-03-10 14:29:44,115 - INFO - OPENED LONG at 2059.16 | Stop loss: 2048.847614285714 | Take profit: 2090.0722785714283 +2025-03-10 14:29:44,211 - INFO - CLOSED long at 2058.89 | PnL: -0.01% | $-0.22 +2025-03-10 14:29:44,211 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.201035714286 | Take profit: 2027.9817714285714 +2025-03-10 14:29:45,144 - INFO - STOP LOSS hit for short at 2069.201035714286 | PnL: -0.50% | $-1.18 +2025-03-10 14:29:45,176 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3765857142857 | Take profit: 2040.8951214285714 +2025-03-10 14:29:45,649 - INFO - CLOSED short at 2069.03 | PnL: 0.14% | $0.08 +2025-03-10 14:29:45,650 - INFO - OPENED LONG at 2069.03 | Stop loss: 2058.6682642857145 | Take profit: 2100.090328571429 +2025-03-10 14:29:45,889 - INFO - CLOSED long at 2066.38 | PnL: -0.13% | $-0.44 +2025-03-10 14:29:45,890 - INFO - OPENED SHORT at 2066.38 | Stop loss: 2076.728485714286 | Take profit: 2035.3594214285715 +2025-03-10 14:29:46,946 - INFO - STOP LOSS hit for short at 2076.728485714286 | PnL: -0.50% | $-1.16 +2025-03-10 14:29:46,995 - INFO - OPENED SHORT at 2075.61 | Stop loss: 2086.004635714286 | Take profit: 2044.4509714285716 +2025-03-10 14:29:48,683 - INFO - CLOSED short at 2060.7 | PnL: 0.72% | $1.18 +2025-03-10 14:29:48,683 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.379914285714 | Take profit: 2091.635378571428 +2025-03-10 14:29:48,813 - INFO - CLOSED long at 2070.24 | PnL: 0.46% | $0.70 +2025-03-10 14:29:48,814 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.6077857142855 | Take profit: 2039.1615214285712 +2025-03-10 14:29:49,191 - INFO - STOP LOSS hit for short at 2080.6077857142855 | PnL: -0.50% | $-1.17 +2025-03-10 14:29:49,218 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:29:49,244 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.16 +2025-03-10 14:29:49,502 - INFO - OPENED SHORT at 2142.68 | Stop loss: 2153.4099857142855 | Take profit: 2110.514921428571 +2025-03-10 14:29:49,953 - INFO - TAKE PROFIT hit for short at 2110.514921428571 | PnL: 1.50% | $2.67 +2025-03-10 14:29:49,977 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1695857142854 | Take profit: 2078.9161214285714 +2025-03-10 14:29:50,828 - INFO - CLOSED short at 2101.51 | PnL: 0.43% | $0.65 +2025-03-10 14:29:50,882 - INFO - OPENED SHORT at 2099.59 | Stop loss: 2110.1045357142857 | Take profit: 2068.071271428572 +2025-03-10 14:29:51,976 - INFO - CLOSED short at 2089.79 | PnL: 0.47% | $0.72 +2025-03-10 14:29:52,019 - INFO - OPENED SHORT at 2089.2 | Stop loss: 2099.662585714286 | Take profit: 2057.837121428571 +2025-03-10 14:29:52,244 - INFO - STOP LOSS hit for short at 2099.662585714286 | PnL: -0.50% | $-1.19 +2025-03-10 14:29:52,293 - INFO - OPENED SHORT at 2097.11 | Stop loss: 2107.6121357142856 | Take profit: 2065.6284714285716 +2025-03-10 14:29:53,088 - INFO - STOP LOSS hit for short at 2107.6121357142856 | PnL: -0.50% | $-1.18 +2025-03-10 14:29:53,194 - INFO - OPENED SHORT at 2113.7 | Stop loss: 2124.2850857142853 | Take profit: 2081.9696214285714 +2025-03-10 14:29:53,969 - INFO - CLOSED short at 2121.77 | PnL: -0.38% | $-0.93 +2025-03-10 14:29:53,969 - INFO - OPENED LONG at 2121.77 | Stop loss: 2111.1445642857143 | Take profit: 2153.621428571428 +2025-03-10 14:29:54,061 - INFO - CLOSED long at 2127.79 | PnL: 0.28% | $0.35 +2025-03-10 14:29:54,061 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4455357142856 | Take profit: 2095.8482714285715 +2025-03-10 14:29:54,938 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 33.3% in downtrends | Avg Win=$0.75, Avg Loss=$-0.73 +2025-03-10 14:29:54,939 - INFO - Episode 46: Reward=174.56, Balance=$97.18, Win Rate=40.9%, Trades=22, Episode PnL=$-2.93, Total PnL=$-280.88, Max Drawdown=3.9%, Pred Accuracy=99.8% +2025-03-10 14:29:54,939 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:29:55,252 - INFO - OPENED SHORT at 2068.02 | Stop loss: 2078.376685714286 | Take profit: 2036.9748214285712 +2025-03-10 14:29:55,405 - INFO - CLOSED short at 2069.34 | PnL: -0.06% | $-0.33 +2025-03-10 14:29:55,405 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.9767142857145 | Take profit: 2100.4049785714287 +2025-03-10 14:29:55,491 - INFO - CLOSED long at 2068.8 | PnL: -0.03% | $-0.25 +2025-03-10 14:29:55,492 - INFO - OPENED SHORT at 2068.8 | Stop loss: 2079.160585714286 | Take profit: 2037.7431214285716 +2025-03-10 14:29:55,885 - INFO - CLOSED short at 2066.18 | PnL: 0.13% | $0.05 +2025-03-10 14:29:55,885 - INFO - OPENED LONG at 2066.18 | Stop loss: 2055.8325142857143 | Take profit: 2097.1975785714285 +2025-03-10 14:29:56,065 - INFO - CLOSED long at 2068.51 | PnL: 0.11% | $0.03 +2025-03-10 14:29:56,066 - INFO - OPENED SHORT at 2068.51 | Stop loss: 2078.869135714286 | Take profit: 2037.4574714285716 +2025-03-10 14:29:56,714 - INFO - CLOSED short at 2067.0 | PnL: 0.07% | $-0.05 +2025-03-10 14:29:56,769 - INFO - OPENED SHORT at 2067.46 | Stop loss: 2077.813885714286 | Take profit: 2036.4232214285714 +2025-03-10 14:30:00,729 - INFO - CLOSED short at 2072.0 | PnL: -0.22% | $-0.63 +2025-03-10 14:30:00,764 - INFO - OPENED SHORT at 2074.3 | Stop loss: 2084.688085714286 | Take profit: 2043.1606214285716 +2025-03-10 14:30:02,242 - INFO - CLOSED short at 2068.19 | PnL: 0.29% | $0.38 +2025-03-10 14:30:02,242 - INFO - OPENED LONG at 2068.19 | Stop loss: 2057.832464285714 | Take profit: 2099.2377285714283 +2025-03-10 14:30:02,267 - INFO - CLOSED long at 2068.67 | PnL: 0.02% | $-0.15 +2025-03-10 14:30:02,267 - INFO - OPENED SHORT at 2068.67 | Stop loss: 2079.029935714286 | Take profit: 2037.6150714285716 +2025-03-10 14:30:02,742 - INFO - CLOSED short at 2072.09 | PnL: -0.17% | $-0.52 +2025-03-10 14:30:02,742 - INFO - OPENED LONG at 2072.09 | Stop loss: 2061.7129642857144 | Take profit: 2103.196228571429 +2025-03-10 14:30:02,963 - INFO - CLOSED long at 2066.4 | PnL: -0.27% | $-0.73 +2025-03-10 14:30:02,963 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.7485857142856 | Take profit: 2035.3791214285716 +2025-03-10 14:30:04,539 - INFO - CLOSED short at 2066.59 | PnL: -0.01% | $-0.21 +2025-03-10 14:30:04,644 - INFO - OPENED SHORT at 2061.21 | Stop loss: 2071.532635714286 | Take profit: 2030.2669714285714 +2025-03-10 14:30:04,729 - INFO - CLOSED short at 2060.7 | PnL: 0.02% | $-0.15 +2025-03-10 14:30:04,731 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.379914285714 | Take profit: 2091.635378571428 +2025-03-10 14:30:04,768 - INFO - CLOSED long at 2061.84 | PnL: 0.06% | $-0.09 +2025-03-10 14:30:04,770 - INFO - OPENED SHORT at 2061.84 | Stop loss: 2072.165785714286 | Take profit: 2030.8875214285715 +2025-03-10 14:30:05,129 - INFO - STOP LOSS hit for short at 2072.165785714286 | PnL: -0.50% | $-1.16 +2025-03-10 14:30:05,173 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4368357142857 | Take profit: 2042.9143714285715 +2025-03-10 14:30:05,409 - INFO - STOP LOSS hit for short at 2084.4368357142857 | PnL: -0.50% | $-1.15 +2025-03-10 14:30:05,435 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:30:05,465 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.13 +2025-03-10 14:30:05,491 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:30:05,638 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.12 +2025-03-10 14:30:05,858 - INFO - OPENED SHORT at 2128.69 | Stop loss: 2139.3500357142857 | Take profit: 2096.7347714285715 +2025-03-10 14:30:06,946 - INFO - TAKE PROFIT hit for short at 2096.7347714285715 | PnL: 1.50% | $2.58 +2025-03-10 14:30:07,090 - INFO - OPENED SHORT at 2102.19 | Stop loss: 2112.717535714286 | Take profit: 2070.6322714285716 +2025-03-10 14:30:10,544 - INFO - STOP LOSS hit for short at 2112.717535714286 | PnL: -0.50% | $-1.14 +2025-03-10 14:30:10,615 - INFO - OPENED SHORT at 2113.0 | Stop loss: 2123.581585714286 | Take profit: 2081.2801214285714 +2025-03-10 14:30:11,656 - INFO - STOP LOSS hit for short at 2123.581585714286 | PnL: -0.50% | $-1.12 +2025-03-10 14:30:11,688 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4455357142856 | Take profit: 2095.8482714285715 +2025-03-10 14:30:12,573 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 25.0% in downtrends | Avg Win=$0.76, Avg Loss=$-0.62 +2025-03-10 14:30:12,574 - INFO - Episode 47: Reward=168.09, Balance=$93.11, Win Rate=20.0%, Trades=20, Episode PnL=$-5.69, Total PnL=$-287.76, Max Drawdown=7.2%, Pred Accuracy=99.9% +2025-03-10 14:30:12,575 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:30:12,951 - INFO - OPENED SHORT at 2070.36 | Stop loss: 2080.7283857142857 | Take profit: 2039.2797214285715 +2025-03-10 14:30:13,089 - INFO - CLOSED short at 2069.19 | PnL: 0.06% | $-0.09 +2025-03-10 14:30:13,225 - INFO - OPENED SHORT at 2067.51 | Stop loss: 2077.864135714286 | Take profit: 2036.4724714285717 +2025-03-10 14:30:14,092 - INFO - CLOSED short at 2069.46 | PnL: -0.09% | $-0.39 +2025-03-10 14:30:14,177 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.3515857142856 | Take profit: 2035.9701214285715 +2025-03-10 14:30:14,458 - INFO - CLOSED short at 2067.89 | PnL: -0.04% | $-0.28 +2025-03-10 14:30:14,459 - INFO - OPENED LONG at 2067.89 | Stop loss: 2057.5339642857143 | Take profit: 2098.9332285714286 +2025-03-10 14:30:14,497 - INFO - CLOSED long at 2068.58 | PnL: 0.03% | $-0.13 +2025-03-10 14:30:14,497 - INFO - OPENED SHORT at 2068.58 | Stop loss: 2078.9394857142856 | Take profit: 2037.5264214285714 +2025-03-10 14:30:14,906 - INFO - CLOSED short at 2068.5 | PnL: 0.00% | $-0.19 +2025-03-10 14:30:14,934 - INFO - OPENED SHORT at 2068.69 | Stop loss: 2079.0500357142855 | Take profit: 2037.6347714285714 +2025-03-10 14:30:16,245 - INFO - CLOSED short at 2060.31 | PnL: 0.41% | $0.60 +2025-03-10 14:30:16,313 - INFO - OPENED SHORT at 2061.8 | Stop loss: 2072.125585714286 | Take profit: 2030.8481214285716 +2025-03-10 14:30:16,599 - INFO - CLOSED short at 2064.33 | PnL: -0.12% | $-0.44 +2025-03-10 14:30:16,599 - INFO - OPENED LONG at 2064.33 | Stop loss: 2053.991764285714 | Take profit: 2095.319828571429 +2025-03-10 14:30:16,625 - INFO - CLOSED long at 2063.39 | PnL: -0.05% | $-0.29 +2025-03-10 14:30:16,626 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.723535714286 | Take profit: 2032.4142714285713 +2025-03-10 14:30:17,748 - INFO - CLOSED short at 2066.36 | PnL: -0.14% | $-0.48 +2025-03-10 14:30:17,802 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.5639142857144 | Take profit: 2094.8833785714287 +2025-03-10 14:30:17,890 - INFO - CLOSED long at 2066.33 | PnL: 0.12% | $0.03 +2025-03-10 14:30:17,890 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6782357142856 | Take profit: 2035.3101714285713 +2025-03-10 14:30:18,277 - INFO - STOP LOSS hit for short at 2076.6782357142856 | PnL: -0.50% | $-1.17 +2025-03-10 14:30:18,379 - INFO - OPENED SHORT at 2071.04 | Stop loss: 2081.4117857142855 | Take profit: 2039.9495214285712 +2025-03-10 14:30:18,807 - INFO - CLOSED short at 2069.87 | PnL: 0.06% | $-0.08 +2025-03-10 14:30:19,110 - INFO - OPENED SHORT at 2063.97 | Stop loss: 2074.3064357142853 | Take profit: 2032.9855714285711 +2025-03-10 14:30:20,358 - INFO - STOP LOSS hit for short at 2074.3064357142853 | PnL: -0.50% | $-1.16 +2025-03-10 14:30:20,386 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.461935714286 | Take profit: 2043.9190714285717 +2025-03-10 14:30:20,708 - INFO - CLOSED short at 2076.9 | PnL: -0.09% | $-0.36 +2025-03-10 14:30:20,709 - INFO - OPENED LONG at 2076.9 | Stop loss: 2066.4989142857144 | Take profit: 2108.078378571429 +2025-03-10 14:30:20,830 - INFO - CLOSED long at 2069.97 | PnL: -0.33% | $-0.82 +2025-03-10 14:30:20,831 - INFO - OPENED SHORT at 2069.97 | Stop loss: 2080.3364357142855 | Take profit: 2038.8955714285712 +2025-03-10 14:30:22,508 - INFO - CLOSED short at 2057.11 | PnL: 0.62% | $0.98 +2025-03-10 14:30:22,650 - INFO - OPENED SHORT at 2065.1 | Stop loss: 2075.442085714286 | Take profit: 2034.0986214285713 +2025-03-10 14:30:23,479 - INFO - STOP LOSS hit for short at 2075.442085714286 | PnL: -0.50% | $-1.14 +2025-03-10 14:30:23,550 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.959035714285 | Take profit: 2059.107771428571 +2025-03-10 14:30:23,577 - INFO - STOP LOSS hit for short at 2100.959035714285 | PnL: -0.50% | $-1.13 +2025-03-10 14:30:23,604 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3700857142853 | Take profit: 2098.7146214285713 +2025-03-10 14:30:23,824 - INFO - STOP LOSS hit for short at 2141.3700857142853 | PnL: -0.50% | $-1.11 +2025-03-10 14:30:23,851 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.023085714286 | Take profit: 2109.1556214285715 +2025-03-10 14:30:24,356 - INFO - TAKE PROFIT hit for short at 2109.1556214285715 | PnL: 1.50% | $2.57 +2025-03-10 14:30:24,485 - INFO - OPENED SHORT at 2112.95 | Stop loss: 2123.531335714286 | Take profit: 2081.2308714285714 +2025-03-10 14:30:25,104 - INFO - CLOSED short at 2102.29 | PnL: 0.50% | $0.76 +2025-03-10 14:30:25,104 - INFO - OPENED LONG at 2102.29 | Stop loss: 2091.7619642857144 | Take profit: 2133.8492285714283 +2025-03-10 14:30:25,159 - INFO - CLOSED long at 2098.9 | PnL: -0.16% | $-0.50 +2025-03-10 14:30:25,159 - INFO - OPENED SHORT at 2098.9 | Stop loss: 2109.4110857142855 | Take profit: 2067.3916214285714 +2025-03-10 14:30:27,616 - INFO - STOP LOSS hit for short at 2109.4110857142855 | PnL: -0.50% | $-1.13 +2025-03-10 14:30:27,760 - INFO - OPENED SHORT at 2113.7 | Stop loss: 2124.2850857142853 | Take profit: 2081.9696214285714 +2025-03-10 14:30:28,789 - INFO - STOP LOSS hit for short at 2124.2850857142853 | PnL: -0.50% | $-1.12 +2025-03-10 14:30:28,823 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4455357142856 | Take profit: 2095.8482714285715 +2025-03-10 14:30:29,495 - INFO - CLOSED short at 2131.23 | PnL: -0.16% | $-0.48 +2025-03-10 14:30:29,495 - INFO - OPENED LONG at 2131.23 | Stop loss: 2120.557264285714 | Take profit: 2163.2233285714287 +2025-03-10 14:30:29,522 - INFO - CLOSED long at 2125.48 | PnL: -0.27% | $-0.68 +2025-03-10 14:30:29,523 - INFO - OPENED SHORT at 2125.48 | Stop loss: 2136.1239857142855 | Take profit: 2093.5729214285716 +2025-03-10 14:30:30,077 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 15.4% in downtrends | Avg Win=$0.99, Avg Loss=$-0.63 +2025-03-10 14:30:30,078 - INFO - Episode 48: Reward=160.87, Balance=$91.77, Win Rate=19.2%, Trades=26, Episode PnL=$-5.85, Total PnL=$-295.99, Max Drawdown=7.6%, Pred Accuracy=99.8% +2025-03-10 14:30:30,079 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:30:30,515 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.703285714286 | Take profit: 2038.2750214285716 +2025-03-10 14:30:30,880 - INFO - CLOSED short at 2068.76 | PnL: 0.03% | $-0.14 +2025-03-10 14:30:30,910 - INFO - OPENED SHORT at 2068.9 | Stop loss: 2079.261085714286 | Take profit: 2037.8416214285717 +2025-03-10 14:30:34,630 - INFO - CLOSED short at 2061.6 | PnL: 0.35% | $0.50 +2025-03-10 14:30:34,880 - INFO - OPENED SHORT at 2064.49 | Stop loss: 2074.8290357142855 | Take profit: 2033.4977714285712 +2025-03-10 14:30:35,164 - INFO - STOP LOSS hit for short at 2074.8290357142855 | PnL: -0.50% | $-1.20 +2025-03-10 14:30:35,235 - INFO - OPENED SHORT at 2072.6 | Stop loss: 2082.979585714286 | Take profit: 2041.4861214285713 +2025-03-10 14:30:35,315 - INFO - CLOSED short at 2071.6 | PnL: 0.05% | $-0.10 +2025-03-10 14:30:35,341 - INFO - OPENED SHORT at 2073.23 | Stop loss: 2083.612735714286 | Take profit: 2042.1066714285714 +2025-03-10 14:30:35,626 - INFO - CLOSED short at 2072.99 | PnL: 0.01% | $-0.17 +2025-03-10 14:30:35,648 - INFO - OPENED SHORT at 2071.49 | Stop loss: 2081.864035714286 | Take profit: 2040.3927714285712 +2025-03-10 14:30:35,861 - INFO - CLOSED short at 2064.5 | PnL: 0.34% | $0.47 +2025-03-10 14:30:35,861 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.160914285714 | Take profit: 2095.4923785714286 +2025-03-10 14:30:35,946 - INFO - CLOSED long at 2064.4 | PnL: -0.00% | $-0.21 +2025-03-10 14:30:35,946 - INFO - OPENED SHORT at 2064.4 | Stop loss: 2074.738585714286 | Take profit: 2033.4091214285716 +2025-03-10 14:30:36,505 - INFO - CLOSED short at 2068.19 | PnL: -0.18% | $-0.56 +2025-03-10 14:30:36,530 - INFO - OPENED SHORT at 2068.67 | Stop loss: 2079.029935714286 | Take profit: 2037.6150714285716 +2025-03-10 14:30:39,116 - INFO - STOP LOSS hit for short at 2079.029935714286 | PnL: -0.50% | $-1.18 +2025-03-10 14:30:39,279 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2542857142857 | Take profit: 2107.4220214285715 +2025-03-10 14:30:40,354 - INFO - TAKE PROFIT hit for short at 2107.4220214285715 | PnL: 1.50% | $2.71 +2025-03-10 14:30:40,405 - INFO - OPENED SHORT at 2108.06 | Stop loss: 2118.6168857142857 | Take profit: 2076.414221428571 +2025-03-10 14:30:41,189 - INFO - CLOSED short at 2094.08 | PnL: 0.66% | $1.12 +2025-03-10 14:30:41,190 - INFO - OPENED LONG at 2094.08 | Stop loss: 2083.593014285714 | Take profit: 2125.5160785714284 +2025-03-10 14:30:41,227 - INFO - CLOSED long at 2088.35 | PnL: -0.27% | $-0.75 +2025-03-10 14:30:41,228 - INFO - OPENED SHORT at 2088.35 | Stop loss: 2098.8083357142855 | Take profit: 2056.999871428571 +2025-03-10 14:30:42,297 - INFO - STOP LOSS hit for short at 2098.8083357142855 | PnL: -0.50% | $-1.20 +2025-03-10 14:30:42,388 - INFO - OPENED SHORT at 2097.11 | Stop loss: 2107.6121357142856 | Take profit: 2065.6284714285716 +2025-03-10 14:30:42,847 - INFO - CLOSED short at 2104.4 | PnL: -0.35% | $-0.88 +2025-03-10 14:30:42,847 - INFO - OPENED LONG at 2104.4 | Stop loss: 2093.8614142857145 | Take profit: 2135.9908785714283 +2025-03-10 14:30:42,872 - INFO - CLOSED long at 2105.21 | PnL: 0.04% | $-0.12 +2025-03-10 14:30:42,872 - INFO - OPENED SHORT at 2105.21 | Stop loss: 2115.752635714286 | Take profit: 2073.6069714285713 +2025-03-10 14:30:42,916 - INFO - CLOSED short at 2100.0 | PnL: 0.25% | $0.29 +2025-03-10 14:30:42,917 - INFO - OPENED LONG at 2100.0 | Stop loss: 2089.4834142857144 | Take profit: 2131.5248785714284 +2025-03-10 14:30:42,961 - INFO - CLOSED long at 2102.0 | PnL: 0.10% | $-0.01 +2025-03-10 14:30:42,961 - INFO - OPENED SHORT at 2102.0 | Stop loss: 2112.5265857142854 | Take profit: 2070.4451214285714 +2025-03-10 14:30:43,286 - INFO - STOP LOSS hit for short at 2112.5265857142854 | PnL: -0.50% | $-1.18 +2025-03-10 14:30:43,322 - INFO - OPENED SHORT at 2113.0 | Stop loss: 2123.581585714286 | Take profit: 2081.2801214285714 +2025-03-10 14:30:43,590 - INFO - CLOSED short at 2112.61 | PnL: 0.02% | $-0.16 +2025-03-10 14:30:43,615 - INFO - OPENED SHORT at 2118.72 | Stop loss: 2129.3301857142856 | Take profit: 2086.914321428571 +2025-03-10 14:30:44,102 - INFO - STOP LOSS hit for short at 2129.3301857142856 | PnL: -0.50% | $-1.16 +2025-03-10 14:30:44,210 - INFO - OPENED SHORT at 2132.83 | Stop loss: 2143.5107357142856 | Take profit: 2100.8126714285713 +2025-03-10 14:30:44,959 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 40.0% in downtrends | Avg Win=$1.02, Avg Loss=$-0.60 +2025-03-10 14:30:44,960 - INFO - Episode 49: Reward=171.64, Balance=$96.08, Win Rate=25.0%, Trades=20, Episode PnL=$-2.84, Total PnL=$-299.91, Max Drawdown=4.3%, Pred Accuracy=99.9% +2025-03-10 14:30:44,961 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:30:44,961 - INFO - Early stopping triggered after 50 episodes without improvement +2025-03-10 14:30:45,119 - INFO - Model saved to models/trading_agent_final.pt +2025-03-10 14:30:45,275 - ERROR - Training failed: 'episode_pnls' +2025-03-10 14:30:45,277 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2044, in train_agent + plot_training_results(stats) + File "main.py", line 2086, in plot_training_results + plt.plot(stats['trade_counts']) # Changed from 'episode_lengths' + ~~~~~^^^^^^^^^^^^^^^^ +KeyError: 'episode_pnls' + +2025-03-10 14:30:45,425 - INFO - Model saved to models/trading_agent_emergency.pt +2025-03-10 14:30:45,426 - INFO - Emergency model saved due to training failure +2025-03-10 14:30:45,427 - INFO - Exchange connection closed +2025-03-10 14:41:56,073 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 14:41:56,092 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 14:41:56,093 - INFO - Fetching initial data for ETH/USDT +2025-03-10 14:41:59,716 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 14:41:59,733 - INFO - Initialized environment with 500 candles +2025-03-10 14:42:01,937 - INFO - Starting training for 1000 episodes... +2025-03-10 14:42:01,938 - INFO - Starting training on device: cuda +2025-03-10 14:42:01,938 - INFO - Loading best model from models/trading_agent_best_pnl.pt to resume training +2025-03-10 14:42:01,938 - INFO - Loading model from models/trading_agent_best_pnl.pt +2025-03-10 14:42:02,092 - INFO - Model loaded successfully with weights_only=True +2025-03-10 14:42:02,093 - INFO - Resumed with best metrics - Reward: 202.74, PnL: $0.26, Win Rate: 44.4% +2025-03-10 14:42:03,115 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7706892857145 | Take profit: 2039.3159660714286 +2025-03-10 14:42:03,118 - INFO - CLOSED short at 2069.96 | PnL: 0.02% | $-0.16 +2025-03-10 14:42:03,122 - INFO - OPENED SHORT at 2071.4 | Stop loss: 2081.7756892857146 | Take profit: 2040.3009660714288 +2025-03-10 14:42:03,124 - INFO - CLOSED short at 2071.39 | PnL: 0.00% | $-0.20 +2025-03-10 14:42:03,127 - INFO - OPENED SHORT at 2071.36 | Stop loss: 2081.7354892857143 | Take profit: 2040.2615660714287 +2025-03-10 14:42:03,131 - INFO - CLOSED short at 2072.75 | PnL: -0.07% | $-0.33 +2025-03-10 14:42:03,134 - INFO - OPENED SHORT at 2073.11 | Stop loss: 2083.4942392857142 | Take profit: 2041.9853160714285 +2025-03-10 14:42:03,140 - INFO - CLOSED short at 2074.29 | PnL: -0.06% | $-0.31 +2025-03-10 14:42:03,145 - INFO - OPENED SHORT at 2071.92 | Stop loss: 2082.2982892857144 | Take profit: 2040.8131660714284 +2025-03-10 14:42:03,148 - INFO - CLOSED short at 2070.4 | PnL: 0.07% | $-0.05 +2025-03-10 14:42:03,154 - INFO - OPENED SHORT at 2069.46 | Stop loss: 2079.825989285714 | Take profit: 2038.3900660714285 +2025-03-10 14:42:03,157 - INFO - CLOSED short at 2069.35 | PnL: 0.01% | $-0.19 +2025-03-10 14:42:03,160 - INFO - OPENED SHORT at 2068.32 | Stop loss: 2078.6802892857145 | Take profit: 2037.2671660714286 +2025-03-10 14:42:03,163 - INFO - CLOSED short at 2067.0 | PnL: 0.06% | $-0.07 +2025-03-10 14:42:03,166 - INFO - OPENED SHORT at 2067.79 | Stop loss: 2078.1476392857144 | Take profit: 2036.7451160714286 +2025-03-10 14:42:03,167 - INFO - CLOSED short at 2067.46 | PnL: 0.02% | $-0.16 +2025-03-10 14:42:03,167 - INFO - OPENED LONG at 2067.46 | Stop loss: 2057.104010714286 | Take profit: 2098.4999339285714 +2025-03-10 14:42:03,170 - INFO - CLOSED long at 2066.8 | PnL: -0.03% | $-0.26 +2025-03-10 14:42:03,174 - INFO - OPENED SHORT at 2065.49 | Stop loss: 2075.836139285714 | Take profit: 2034.4796160714284 +2025-03-10 14:42:03,179 - INFO - CLOSED short at 2063.61 | PnL: 0.09% | $-0.02 +2025-03-10 14:42:03,184 - INFO - OPENED SHORT at 2067.89 | Stop loss: 2078.248139285714 | Take profit: 2036.8436160714286 +2025-03-10 14:42:03,188 - INFO - CLOSED short at 2068.58 | PnL: -0.03% | $-0.26 +2025-03-10 14:42:03,191 - INFO - OPENED SHORT at 2068.8 | Stop loss: 2079.162689285715 | Take profit: 2037.7399660714289 +2025-03-10 14:42:03,200 - INFO - CLOSED short at 2067.86 | PnL: 0.05% | $-0.11 +2025-03-10 14:42:03,204 - INFO - OPENED SHORT at 2067.59 | Stop loss: 2077.9466392857144 | Take profit: 2036.5481160714287 +2025-03-10 14:42:03,212 - INFO - CLOSED short at 2071.59 | PnL: -0.19% | $-0.57 +2025-03-10 14:42:03,223 - INFO - OPENED SHORT at 2068.5 | Stop loss: 2078.861189285714 | Take profit: 2037.4444660714285 +2025-03-10 14:42:03,233 - INFO - CLOSED short at 2067.84 | PnL: 0.03% | $-0.13 +2025-03-10 14:42:03,236 - INFO - OPENED SHORT at 2067.86 | Stop loss: 2078.217989285715 | Take profit: 2036.8140660714287 +2025-03-10 14:42:03,239 - INFO - CLOSED short at 2066.4 | PnL: 0.07% | $-0.06 +2025-03-10 14:42:03,245 - INFO - OPENED SHORT at 2065.28 | Stop loss: 2075.6250892857147 | Take profit: 2034.2727660714286 +2025-03-10 14:42:03,250 - INFO - CLOSED short at 2064.47 | PnL: 0.04% | $-0.12 +2025-03-10 14:42:03,251 - INFO - OPENED SHORT at 2070.04 | Stop loss: 2080.408889285714 | Take profit: 2038.9613660714285 +2025-03-10 14:42:03,254 - INFO - CLOSED short at 2067.8 | PnL: 0.11% | $0.02 +2025-03-10 14:42:03,257 - INFO - OPENED SHORT at 2068.18 | Stop loss: 2078.539589285714 | Take profit: 2037.1292660714282 +2025-03-10 14:42:03,262 - INFO - CLOSED short at 2067.88 | PnL: 0.01% | $-0.16 +2025-03-10 14:42:03,268 - INFO - OPENED LONG at 2065.83 | Stop loss: 2055.482160714286 | Take profit: 2096.845483928571 +2025-03-10 14:42:03,271 - INFO - CLOSED long at 2065.26 | PnL: -0.03% | $-0.24 +2025-03-10 14:42:03,271 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.6049892857145 | Take profit: 2034.2530660714287 +2025-03-10 14:42:03,275 - INFO - CLOSED short at 2062.89 | PnL: 0.11% | $0.03 +2025-03-10 14:42:03,277 - INFO - OPENED SHORT at 2062.65 | Stop loss: 2072.9819392857144 | Take profit: 2031.6822160714287 +2025-03-10 14:42:03,281 - INFO - CLOSED short at 2061.78 | PnL: 0.04% | $-0.11 +2025-03-10 14:42:03,296 - INFO - OPENED SHORT at 2063.59 | Stop loss: 2073.9266392857144 | Take profit: 2032.6081160714286 +2025-03-10 14:42:03,299 - INFO - CLOSED short at 2064.96 | PnL: -0.07% | $-0.32 +2025-03-10 14:42:03,306 - INFO - OPENED SHORT at 2067.1 | Stop loss: 2077.454189285714 | Take profit: 2036.0654660714283 +2025-03-10 14:42:03,893 - INFO - CLOSED short at 2065.89 | PnL: 0.06% | $-0.08 +2025-03-10 14:42:03,913 - INFO - OPENED SHORT at 2063.53 | Stop loss: 2073.8663392857143 | Take profit: 2032.549016071429 +2025-03-10 14:42:04,360 - INFO - CLOSED short at 2061.66 | PnL: 0.09% | $-0.02 +2025-03-10 14:42:04,361 - INFO - OPENED LONG at 2061.66 | Stop loss: 2051.3330107142856 | Take profit: 2092.6129339285712 +2025-03-10 14:42:04,381 - INFO - CLOSED long at 2061.5 | PnL: -0.01% | $-0.21 +2025-03-10 14:42:04,381 - INFO - OPENED SHORT at 2061.5 | Stop loss: 2071.8261892857145 | Take profit: 2030.5494660714285 +2025-03-10 14:42:04,543 - INFO - CLOSED short at 2064.49 | PnL: -0.15% | $-0.47 +2025-03-10 14:42:04,544 - INFO - OPENED LONG at 2064.49 | Stop loss: 2054.1488607142855 | Take profit: 2095.4853839285715 +2025-03-10 14:42:04,565 - INFO - CLOSED long at 2066.33 | PnL: 0.09% | $-0.02 +2025-03-10 14:42:04,566 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.680339285714 | Take profit: 2035.3070160714285 +2025-03-10 14:42:04,745 - INFO - STOP LOSS hit for short at 2076.680339285714 | PnL: -0.50% | $-1.14 +2025-03-10 14:42:04,770 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.4037392857144 | Take profit: 2043.8568160714287 +2025-03-10 14:42:04,897 - INFO - CLOSED short at 2068.15 | PnL: 0.33% | $0.43 +2025-03-10 14:42:04,922 - INFO - OPENED SHORT at 2068.39 | Stop loss: 2078.750639285714 | Take profit: 2037.3361160714285 +2025-03-10 14:42:05,163 - INFO - CLOSED short at 2063.95 | PnL: 0.21% | $0.22 +2025-03-10 14:42:05,163 - INFO - OPENED LONG at 2063.95 | Stop loss: 2053.6115607142856 | Take profit: 2094.937283928571 +2025-03-10 14:42:05,184 - INFO - CLOSED long at 2063.97 | PnL: 0.00% | $-0.19 +2025-03-10 14:42:05,184 - INFO - OPENED SHORT at 2063.97 | Stop loss: 2074.3085392857142 | Take profit: 2032.9824160714284 +2025-03-10 14:42:05,693 - INFO - STOP LOSS hit for short at 2074.3085392857142 | PnL: -0.50% | $-1.13 +2025-03-10 14:42:05,712 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.464039285714 | Take profit: 2043.9159160714287 +2025-03-10 14:42:07,233 - INFO - STOP LOSS hit for short at 2085.464039285714 | PnL: -0.50% | $-1.12 +2025-03-10 14:42:07,257 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.961139285714 | Take profit: 2059.104616071428 +2025-03-10 14:42:07,279 - INFO - STOP LOSS hit for short at 2100.961139285714 | PnL: -0.50% | $-1.10 +2025-03-10 14:42:07,301 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.372189285714 | Take profit: 2098.7114660714283 +2025-03-10 14:42:07,398 - INFO - STOP LOSS hit for short at 2141.372189285714 | PnL: -0.50% | $-1.09 +2025-03-10 14:42:07,420 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.0251892857145 | Take profit: 2109.1524660714285 +2025-03-10 14:42:07,728 - INFO - TAKE PROFIT hit for short at 2109.1524660714285 | PnL: 1.50% | $2.51 +2025-03-10 14:42:07,753 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1716892857144 | Take profit: 2078.9129660714284 +2025-03-10 14:42:08,563 - INFO - CLOSED short at 2094.08 | PnL: 0.78% | $1.26 +2025-03-10 14:42:08,563 - INFO - OPENED LONG at 2094.08 | Stop loss: 2083.5909107142857 | Take profit: 2125.5192339285713 +2025-03-10 14:42:08,585 - INFO - CLOSED long at 2088.35 | PnL: -0.27% | $-0.70 +2025-03-10 14:42:08,586 - INFO - OPENED SHORT at 2088.35 | Stop loss: 2098.8104392857144 | Take profit: 2056.9967160714286 +2025-03-10 14:42:08,833 - INFO - CLOSED short at 2083.59 | PnL: 0.23% | $0.24 +2025-03-10 14:42:08,834 - INFO - OPENED LONG at 2083.59 | Stop loss: 2073.153360714286 | Take profit: 2114.8718839285716 +2025-03-10 14:42:08,858 - INFO - CLOSED long at 2086.57 | PnL: 0.14% | $0.08 +2025-03-10 14:42:08,858 - INFO - OPENED SHORT at 2086.57 | Stop loss: 2097.0215392857144 | Take profit: 2055.243416071429 +2025-03-10 14:42:09,299 - INFO - STOP LOSS hit for short at 2097.0215392857144 | PnL: -0.50% | $-1.12 +2025-03-10 14:42:09,321 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.5086392857143 | Take profit: 2068.462116071428 +2025-03-10 14:42:09,690 - INFO - CLOSED short at 2105.2 | PnL: -0.25% | $-0.64 +2025-03-10 14:42:09,740 - INFO - OPENED SHORT at 2104.4 | Stop loss: 2114.940689285714 | Take profit: 2072.805966071429 +2025-03-10 14:42:09,820 - INFO - CLOSED short at 2100.0 | PnL: 0.21% | $0.20 +2025-03-10 14:42:09,821 - INFO - OPENED LONG at 2100.0 | Stop loss: 2089.481310714286 | Take profit: 2131.5280339285714 +2025-03-10 14:42:09,847 - INFO - CLOSED long at 2102.7 | PnL: 0.13% | $0.05 +2025-03-10 14:42:09,847 - INFO - OPENED SHORT at 2102.7 | Stop loss: 2113.232189285714 | Take profit: 2071.1314660714283 +2025-03-10 14:42:10,089 - INFO - STOP LOSS hit for short at 2113.232189285714 | PnL: -0.50% | $-1.10 +2025-03-10 14:42:10,114 - INFO - OPENED SHORT at 2113.0 | Stop loss: 2123.5836892857146 | Take profit: 2081.2769660714284 +2025-03-10 14:42:10,604 - INFO - CLOSED short at 2119.58 | PnL: -0.31% | $-0.74 +2025-03-10 14:42:10,626 - INFO - OPENED SHORT at 2121.77 | Stop loss: 2132.397539285714 | Take profit: 2089.9154160714284 +2025-03-10 14:42:10,722 - INFO - CLOSED short at 2135.86 | PnL: -0.66% | $-1.37 +2025-03-10 14:42:10,722 - INFO - OPENED LONG at 2135.86 | Stop loss: 2125.1620107142858 | Take profit: 2167.9259339285713 +2025-03-10 14:42:10,743 - INFO - CLOSED long at 2136.26 | PnL: 0.02% | $-0.14 +2025-03-10 14:42:10,743 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.9599892857145 | Take profit: 2104.1880660714287 +2025-03-10 14:42:11,273 - INFO - CLOSED short at 2124.44 | PnL: 0.55% | $0.80 +2025-03-10 14:42:11,274 - INFO - OPENED LONG at 2124.44 | Stop loss: 2113.7991107142857 | Take profit: 2156.3346339285713 +2025-03-10 14:42:11,297 - INFO - CLOSED long at 2124.94 | PnL: 0.02% | $-0.14 +2025-03-10 14:42:11,297 - INFO - OPENED SHORT at 2124.94 | Stop loss: 2135.5833892857145 | Take profit: 2093.0378660714287 +2025-03-10 14:42:11,716 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.53, Avg Loss=$-0.42 +2025-03-10 14:42:11,717 - INFO - Episode 0: Reward=-119.10, Balance=$89.52, Win Rate=22.0%, Trades=50, Episode PnL=$-8.98, Total PnL=$-10.48, Max Drawdown=9.7%, Pred Accuracy=96.6% +2025-03-10 14:42:11,838 - INFO - Model saved to checkpoints/trading_agent_episode_0.pt +2025-03-10 14:42:11,839 - INFO - Checkpoint saved at episode 0 +2025-03-10 14:42:11,951 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 14:42:11,952 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2506, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 14:42:12,688 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 14:42:12,689 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2506, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 14:42:12,807 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7706892857145 | Take profit: 2039.3159660714286 +2025-03-10 14:42:13,123 - INFO - CLOSED short at 2068.32 | PnL: 0.10% | $0.00 +2025-03-10 14:42:13,147 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.353689285714 | Take profit: 2035.9669660714285 +2025-03-10 14:42:14,640 - INFO - CLOSED short at 2063.39 | PnL: 0.17% | $0.15 +2025-03-10 14:42:14,640 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.0543607142854 | Take profit: 2094.3688839285714 +2025-03-10 14:42:14,660 - INFO - CLOSED long at 2064.79 | PnL: 0.07% | $-0.06 +2025-03-10 14:42:14,661 - INFO - OPENED SHORT at 2064.79 | Stop loss: 2075.1326392857145 | Take profit: 2033.7901160714287 +2025-03-10 14:42:14,679 - INFO - CLOSED short at 2065.89 | PnL: -0.05% | $-0.30 +2025-03-10 14:42:14,680 - INFO - OPENED LONG at 2065.89 | Stop loss: 2055.5418607142856 | Take profit: 2096.906383928571 +2025-03-10 14:42:14,705 - INFO - CLOSED long at 2063.53 | PnL: -0.11% | $-0.42 +2025-03-10 14:42:14,706 - INFO - OPENED SHORT at 2063.53 | Stop loss: 2073.8663392857143 | Take profit: 2032.549016071429 +2025-03-10 14:42:14,842 - INFO - CLOSED short at 2059.61 | PnL: 0.19% | $0.18 +2025-03-10 14:42:14,842 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.2932607142857 | Take profit: 2090.5321839285716 +2025-03-10 14:42:14,861 - INFO - CLOSED long at 2059.16 | PnL: -0.02% | $-0.24 +2025-03-10 14:42:14,862 - INFO - OPENED SHORT at 2059.16 | Stop loss: 2069.4744892857143 | Take profit: 2028.2445660714284 +2025-03-10 14:42:15,445 - INFO - STOP LOSS hit for short at 2069.4744892857143 | PnL: -0.50% | $-1.18 +2025-03-10 14:42:15,467 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3786892857142 | Take profit: 2040.8919660714287 +2025-03-10 14:42:15,484 - INFO - CLOSED short at 2074.3 | PnL: -0.11% | $-0.41 +2025-03-10 14:42:15,540 - INFO - OPENED SHORT at 2072.6 | Stop loss: 2082.9816892857143 | Take profit: 2041.4829660714286 +2025-03-10 14:42:15,690 - INFO - CLOSED short at 2069.69 | PnL: 0.14% | $0.08 +2025-03-10 14:42:15,690 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.322860714286 | Take profit: 2100.7633839285713 +2025-03-10 14:42:16,825 - INFO - CLOSED long at 2066.89 | PnL: -0.14% | $-0.46 +2025-03-10 14:42:16,908 - INFO - OPENED LONG at 2069.0 | Stop loss: 2058.6363107142856 | Take profit: 2100.0630339285713 +2025-03-10 14:42:17,335 - INFO - CLOSED long at 2059.2 | PnL: -0.47% | $-1.11 +2025-03-10 14:42:17,336 - INFO - OPENED SHORT at 2059.2 | Stop loss: 2069.5146892857138 | Take profit: 2028.2839660714283 +2025-03-10 14:42:17,887 - INFO - STOP LOSS hit for short at 2069.5146892857138 | PnL: -0.50% | $-1.15 +2025-03-10 14:42:17,956 - INFO - OPENED SHORT at 2069.81 | Stop loss: 2080.1777392857143 | Take profit: 2038.7348160714284 +2025-03-10 14:42:18,022 - INFO - CLOSED short at 2074.05 | PnL: -0.20% | $-0.57 +2025-03-10 14:42:18,023 - INFO - OPENED LONG at 2074.05 | Stop loss: 2063.6610607142857 | Take profit: 2105.1887839285714 +2025-03-10 14:42:18,048 - INFO - CLOSED long at 2072.99 | PnL: -0.05% | $-0.28 +2025-03-10 14:42:18,048 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.373639285714 | Take profit: 2041.8671160714282 +2025-03-10 14:42:18,184 - INFO - STOP LOSS hit for short at 2083.373639285714 | PnL: -0.50% | $-1.12 +2025-03-10 14:42:18,274 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2563892857142 | Take profit: 2107.4188660714285 +2025-03-10 14:42:18,962 - INFO - TAKE PROFIT hit for short at 2107.4188660714285 | PnL: 1.50% | $2.59 +2025-03-10 14:42:19,031 - INFO - OPENED SHORT at 2100.5 | Stop loss: 2111.0211892857146 | Take profit: 2068.9644660714284 +2025-03-10 14:42:19,075 - INFO - CLOSED short at 2099.53 | PnL: 0.05% | $-0.10 +2025-03-10 14:42:19,076 - INFO - OPENED LONG at 2099.53 | Stop loss: 2089.013660714286 | Take profit: 2131.0509839285714 +2025-03-10 14:42:19,124 - INFO - CLOSED long at 2102.19 | PnL: 0.13% | $0.05 +2025-03-10 14:42:19,124 - INFO - OPENED SHORT at 2102.19 | Stop loss: 2112.7196392857145 | Take profit: 2070.6291160714286 +2025-03-10 14:42:20,870 - INFO - STOP LOSS hit for short at 2112.7196392857145 | PnL: -0.50% | $-1.14 +2025-03-10 14:42:21,028 - INFO - OPENED SHORT at 2110.99 | Stop loss: 2121.563639285714 | Take profit: 2079.2971160714283 +2025-03-10 14:42:21,374 - INFO - STOP LOSS hit for short at 2121.563639285714 | PnL: -0.50% | $-1.13 +2025-03-10 14:42:21,455 - INFO - OPENED SHORT at 2129.3 | Stop loss: 2139.9651892857146 | Take profit: 2097.332466071429 +2025-03-10 14:42:22,479 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.51, Avg Loss=$-0.65 +2025-03-10 14:42:22,480 - INFO - Episode 1: Reward=-103.89, Balance=$93.36, Win Rate=28.6%, Trades=21, Episode PnL=$-4.57, Total PnL=$-17.12, Max Drawdown=6.9%, Pred Accuracy=96.7% +2025-03-10 14:42:22,567 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7706892857145 | Take profit: 2039.3159660714286 +2025-03-10 14:42:23,842 - INFO - CLOSED short at 2067.1 | PnL: 0.16% | $0.12 +2025-03-10 14:42:24,132 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.630239285714 | Take profit: 2029.3773160714286 +2025-03-10 14:42:24,454 - INFO - CLOSED short at 2062.6 | PnL: -0.11% | $-0.42 +2025-03-10 14:42:24,559 - INFO - OPENED LONG at 2059.61 | Stop loss: 2049.2932607142857 | Take profit: 2090.5321839285716 +2025-03-10 14:42:24,975 - INFO - CLOSED long at 2059.8 | PnL: 0.01% | $-0.18 +2025-03-10 14:42:24,975 - INFO - OPENED SHORT at 2059.8 | Stop loss: 2070.1176892857143 | Take profit: 2028.8749660714288 +2025-03-10 14:42:25,484 - INFO - STOP LOSS hit for short at 2070.1176892857143 | PnL: -0.50% | $-1.19 +2025-03-10 14:42:25,700 - INFO - OPENED LONG at 2073.23 | Stop loss: 2062.8451607142856 | Take profit: 2104.3564839285714 +2025-03-10 14:42:25,807 - INFO - CLOSED long at 2068.39 | PnL: -0.23% | $-0.65 +2025-03-10 14:42:25,808 - INFO - OPENED SHORT at 2068.39 | Stop loss: 2078.750639285714 | Take profit: 2037.3361160714285 +2025-03-10 14:42:26,489 - INFO - CLOSED short at 2071.59 | PnL: -0.15% | $-0.49 +2025-03-10 14:42:26,489 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.213360714286 | Take profit: 2102.6918839285713 +2025-03-10 14:42:27,839 - INFO - STOP LOSS hit for long at 2061.213360714286 | PnL: -0.50% | $-1.16 +2025-03-10 14:42:27,859 - INFO - OPENED SHORT at 2060.2 | Stop loss: 2070.5196892857143 | Take profit: 2029.2689660714284 +2025-03-10 14:42:27,954 - INFO - CLOSED short at 2053.01 | PnL: 0.35% | $0.47 +2025-03-10 14:42:28,312 - INFO - OPENED SHORT at 2065.12 | Stop loss: 2075.464289285714 | Take profit: 2034.1151660714283 +2025-03-10 14:42:28,643 - INFO - CLOSED short at 2070.31 | PnL: -0.25% | $-0.67 +2025-03-10 14:42:28,665 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.609889285714 | Take profit: 2039.1583660714282 +2025-03-10 14:42:28,850 - INFO - CLOSED short at 2071.8 | PnL: -0.08% | $-0.33 +2025-03-10 14:42:28,961 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2088.0167392857143 | Take profit: 2046.4178160714287 +2025-03-10 14:42:29,022 - INFO - STOP LOSS hit for short at 2088.0167392857143 | PnL: -0.50% | $-1.14 +2025-03-10 14:42:29,109 - INFO - OPENED SHORT at 2131.78 | Stop loss: 2142.457589285714 | Take profit: 2099.775266071429 +2025-03-10 14:42:29,226 - INFO - STOP LOSS hit for short at 2142.457589285714 | PnL: -0.50% | $-1.12 +2025-03-10 14:42:29,420 - INFO - OPENED SHORT at 2120.15 | Stop loss: 2130.7694392857143 | Take profit: 2088.3197160714285 +2025-03-10 14:42:30,674 - INFO - CLOSED short at 2092.46 | PnL: 1.31% | $2.23 +2025-03-10 14:42:30,698 - INFO - OPENED SHORT at 2091.1 | Stop loss: 2101.574189285714 | Take profit: 2059.7054660714284 +2025-03-10 14:42:30,864 - INFO - CLOSED short at 2083.97 | PnL: 0.34% | $0.46 +2025-03-10 14:42:30,864 - INFO - OPENED LONG at 2083.97 | Stop loss: 2073.5314607142855 | Take profit: 2115.257583928571 +2025-03-10 14:42:30,982 - INFO - CLOSED long at 2081.49 | PnL: -0.12% | $-0.42 +2025-03-10 14:42:30,983 - INFO - OPENED SHORT at 2081.49 | Stop loss: 2091.916139285714 | Take profit: 2050.2396160714284 +2025-03-10 14:42:31,053 - INFO - CLOSED short at 2083.41 | PnL: -0.09% | $-0.36 +2025-03-10 14:42:31,078 - INFO - OPENED SHORT at 2085.09 | Stop loss: 2095.5341392857144 | Take profit: 2053.7856160714286 +2025-03-10 14:42:31,627 - INFO - STOP LOSS hit for short at 2095.5341392857144 | PnL: -0.50% | $-1.13 +2025-03-10 14:42:31,664 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.5086392857143 | Take profit: 2068.462116071428 +2025-03-10 14:42:31,758 - INFO - CLOSED short at 2098.49 | PnL: 0.07% | $-0.05 +2025-03-10 14:42:31,812 - INFO - OPENED SHORT at 2100.89 | Stop loss: 2111.4131392857144 | Take profit: 2069.3486160714283 +2025-03-10 14:42:32,077 - INFO - CLOSED short at 2104.4 | PnL: -0.17% | $-0.50 +2025-03-10 14:42:32,078 - INFO - OPENED LONG at 2104.4 | Stop loss: 2093.8593107142856 | Take profit: 2135.9940339285718 +2025-03-10 14:42:32,112 - INFO - CLOSED long at 2105.21 | PnL: 0.04% | $-0.11 +2025-03-10 14:42:32,112 - INFO - OPENED SHORT at 2105.21 | Stop loss: 2115.7547392857145 | Take profit: 2073.603816071429 +2025-03-10 14:42:32,456 - INFO - CLOSED short at 2113.0 | PnL: -0.37% | $-0.87 +2025-03-10 14:42:32,492 - INFO - OPENED LONG at 2115.26 | Stop loss: 2104.665010714286 | Take profit: 2147.0169339285717 +2025-03-10 14:42:32,562 - INFO - CLOSED long at 2113.1 | PnL: -0.10% | $-0.37 +2025-03-10 14:42:32,562 - INFO - OPENED SHORT at 2113.1 | Stop loss: 2123.684189285714 | Take profit: 2081.3754660714285 +2025-03-10 14:42:32,716 - INFO - CLOSED short at 2111.19 | PnL: 0.09% | $-0.02 +2025-03-10 14:42:32,716 - INFO - OPENED LONG at 2111.19 | Stop loss: 2100.6153607142855 | Take profit: 2142.8858839285717 +2025-03-10 14:42:32,748 - INFO - CLOSED long at 2112.61 | PnL: 0.07% | $-0.06 +2025-03-10 14:42:32,749 - INFO - OPENED SHORT at 2112.61 | Stop loss: 2123.1917392857144 | Take profit: 2080.8928160714286 +2025-03-10 14:42:33,134 - INFO - CLOSED short at 2121.77 | PnL: -0.43% | $-0.97 +2025-03-10 14:42:33,134 - INFO - OPENED LONG at 2121.77 | Stop loss: 2111.142460714286 | Take profit: 2153.624583928571 +2025-03-10 14:42:33,241 - INFO - CLOSED long at 2129.3 | PnL: 0.35% | $0.46 +2025-03-10 14:42:33,242 - INFO - OPENED SHORT at 2129.3 | Stop loss: 2139.9651892857146 | Take profit: 2097.332466071429 +2025-03-10 14:42:33,774 - INFO - CLOSED short at 2116.53 | PnL: 0.60% | $0.91 +2025-03-10 14:42:33,857 - INFO - OPENED SHORT at 2121.53 | Stop loss: 2132.1563392857147 | Take profit: 2089.6790160714286 +2025-03-10 14:42:34,000 - INFO - CLOSED short at 2120.84 | PnL: 0.03% | $-0.12 +2025-03-10 14:42:34,000 - INFO - OPENED LONG at 2120.84 | Stop loss: 2110.217110714286 | Take profit: 2152.6806339285718 +2025-03-10 14:42:34,058 - INFO - CLOSED long at 2114.41 | PnL: -0.30% | $-0.74 +2025-03-10 14:42:34,058 - INFO - OPENED SHORT at 2114.41 | Stop loss: 2125.000739285714 | Take profit: 2082.6658160714283 +2025-03-10 14:42:34,453 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.77, Avg Loss=$-0.57 +2025-03-10 14:42:34,454 - INFO - Episode 2: Reward=-113.09, Balance=$91.56, Win Rate=20.7%, Trades=29, Episode PnL=$-6.37, Total PnL=$-25.56, Max Drawdown=7.7%, Pred Accuracy=96.7% +2025-03-10 14:42:34,738 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7706892857145 | Take profit: 2039.3159660714286 +2025-03-10 14:42:34,872 - INFO - CLOSED short at 2073.11 | PnL: -0.13% | $-0.46 +2025-03-10 14:42:34,873 - INFO - OPENED LONG at 2073.11 | Stop loss: 2062.725760714286 | Take profit: 2104.2346839285715 +2025-03-10 14:42:34,893 - INFO - CLOSED long at 2072.7 | PnL: -0.02% | $-0.24 +2025-03-10 14:42:34,893 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.082189285714 | Take profit: 2041.5814660714284 +2025-03-10 14:42:35,385 - INFO - CLOSED short at 2068.8 | PnL: 0.19% | $0.17 +2025-03-10 14:42:35,386 - INFO - OPENED LONG at 2068.8 | Stop loss: 2058.437310714286 | Take profit: 2099.8600339285717 +2025-03-10 14:42:35,467 - INFO - CLOSED long at 2067.86 | PnL: -0.05% | $-0.29 +2025-03-10 14:42:35,467 - INFO - OPENED SHORT at 2067.86 | Stop loss: 2078.217989285715 | Take profit: 2036.8140660714287 +2025-03-10 14:42:37,823 - INFO - CLOSED short at 2062.69 | PnL: 0.25% | $0.29 +2025-03-10 14:42:37,853 - INFO - OPENED LONG at 2063.4 | Stop loss: 2053.064310714286 | Take profit: 2094.3790339285715 +2025-03-10 14:42:37,884 - INFO - CLOSED long at 2066.36 | PnL: 0.14% | $0.09 +2025-03-10 14:42:37,885 - INFO - OPENED SHORT at 2066.36 | Stop loss: 2076.7104892857146 | Take profit: 2035.3365660714287 +2025-03-10 14:42:38,229 - INFO - STOP LOSS hit for short at 2076.7104892857146 | PnL: -0.50% | $-1.19 +2025-03-10 14:42:38,367 - INFO - OPENED SHORT at 2073.23 | Stop loss: 2083.6148392857144 | Take profit: 2042.1035160714287 +2025-03-10 14:42:38,532 - INFO - CLOSED short at 2068.79 | PnL: 0.21% | $0.22 +2025-03-10 14:42:38,533 - INFO - OPENED LONG at 2068.79 | Stop loss: 2058.427360714286 | Take profit: 2099.849883928571 +2025-03-10 14:42:38,651 - INFO - CLOSED long at 2066.38 | PnL: -0.12% | $-0.42 +2025-03-10 14:42:38,651 - INFO - OPENED SHORT at 2066.38 | Stop loss: 2076.7305892857144 | Take profit: 2035.3562660714288 +2025-03-10 14:42:38,838 - INFO - CLOSED short at 2064.31 | PnL: 0.10% | $0.00 +2025-03-10 14:42:38,839 - INFO - OPENED LONG at 2064.31 | Stop loss: 2053.9697607142857 | Take profit: 2095.3026839285712 +2025-03-10 14:42:38,883 - INFO - CLOSED long at 2067.53 | PnL: 0.16% | $0.11 +2025-03-10 14:42:38,883 - INFO - OPENED SHORT at 2067.53 | Stop loss: 2077.8863392857143 | Take profit: 2036.4890160714288 +2025-03-10 14:42:40,238 - INFO - CLOSED short at 2053.01 | PnL: 0.70% | $1.17 +2025-03-10 14:42:40,238 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.726260714286 | Take profit: 2083.8331839285715 +2025-03-10 14:42:40,259 - INFO - CLOSED long at 2049.21 | PnL: -0.19% | $-0.56 +2025-03-10 14:42:40,284 - INFO - OPENED SHORT at 2049.5 | Stop loss: 2059.7661892857145 | Take profit: 2018.7294660714285 +2025-03-10 14:42:40,416 - INFO - STOP LOSS hit for short at 2059.7661892857145 | PnL: -0.50% | $-1.18 +2025-03-10 14:42:40,460 - INFO - OPENED SHORT at 2065.1 | Stop loss: 2075.4441892857144 | Take profit: 2034.0954660714285 +2025-03-10 14:42:40,693 - INFO - CLOSED short at 2061.84 | PnL: 0.16% | $0.11 +2025-03-10 14:42:40,722 - INFO - OPENED SHORT at 2062.54 | Stop loss: 2072.8713892857145 | Take profit: 2031.5738660714287 +2025-03-10 14:42:40,865 - INFO - STOP LOSS hit for short at 2072.8713892857145 | PnL: -0.50% | $-1.17 +2025-03-10 14:42:40,886 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4389392857147 | Take profit: 2042.9112160714287 +2025-03-10 14:42:41,037 - INFO - STOP LOSS hit for short at 2084.4389392857147 | PnL: -0.50% | $-1.15 +2025-03-10 14:42:41,058 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.961139285714 | Take profit: 2059.104616071428 +2025-03-10 14:42:41,082 - INFO - STOP LOSS hit for short at 2100.961139285714 | PnL: -0.50% | $-1.14 +2025-03-10 14:42:41,106 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.372189285714 | Take profit: 2098.7114660714283 +2025-03-10 14:42:41,227 - INFO - CLOSED short at 2141.41 | PnL: -0.50% | $-1.13 +2025-03-10 14:42:41,227 - INFO - OPENED LONG at 2141.41 | Stop loss: 2130.6842607142858 | Take profit: 2173.559183928571 +2025-03-10 14:42:41,255 - INFO - CLOSED long at 2141.3 | PnL: -0.01% | $-0.19 +2025-03-10 14:42:41,256 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.0251892857145 | Take profit: 2109.1524660714285 +2025-03-10 14:42:41,705 - INFO - TAKE PROFIT hit for short at 2109.1524660714285 | PnL: 1.50% | $2.59 +2025-03-10 14:42:41,723 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.0283107142855 | Take profit: 2142.2870339285714 +2025-03-10 14:42:41,748 - INFO - CLOSED long at 2109.05 | PnL: -0.07% | $-0.33 +2025-03-10 14:42:41,749 - INFO - OPENED SHORT at 2109.05 | Stop loss: 2119.6139392857144 | Take profit: 2077.386216071429 +2025-03-10 14:42:41,769 - INFO - CLOSED short at 2112.09 | PnL: -0.14% | $-0.46 +2025-03-10 14:42:41,797 - INFO - OPENED SHORT at 2112.95 | Stop loss: 2123.533439285714 | Take profit: 2081.2277160714284 +2025-03-10 14:42:43,053 - INFO - TAKE PROFIT hit for short at 2081.2277160714284 | PnL: 1.50% | $2.64 +2025-03-10 14:42:43,160 - INFO - OPENED SHORT at 2085.09 | Stop loss: 2095.5341392857144 | Take profit: 2053.7856160714286 +2025-03-10 14:42:43,569 - INFO - CLOSED short at 2085.67 | PnL: -0.03% | $-0.25 +2025-03-10 14:42:44,313 - INFO - OPENED SHORT at 2102.7 | Stop loss: 2113.232189285714 | Take profit: 2071.1314660714283 +2025-03-10 14:42:44,549 - INFO - STOP LOSS hit for short at 2113.232189285714 | PnL: -0.50% | $-1.16 +2025-03-10 14:42:44,723 - INFO - OPENED SHORT at 2112.11 | Stop loss: 2122.6892392857144 | Take profit: 2080.4003160714287 +2025-03-10 14:42:44,844 - INFO - CLOSED short at 2111.19 | PnL: 0.04% | $-0.11 +2025-03-10 14:42:44,923 - INFO - OPENED SHORT at 2115.3 | Stop loss: 2125.8951892857144 | Take profit: 2083.542466071429 +2025-03-10 14:42:45,288 - INFO - STOP LOSS hit for short at 2125.8951892857144 | PnL: -0.50% | $-1.14 +2025-03-10 14:42:45,331 - INFO - OPENED SHORT at 2135.86 | Stop loss: 2146.5579892857145 | Take profit: 2103.794066071429 +2025-03-10 14:42:45,873 - INFO - CLOSED short at 2119.48 | PnL: 0.77% | $1.25 +2025-03-10 14:42:45,915 - INFO - OPENED SHORT at 2121.53 | Stop loss: 2132.1563392857147 | Take profit: 2089.6790160714286 +2025-03-10 14:42:46,541 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.79, Avg Loss=$-0.70 +2025-03-10 14:42:46,542 - INFO - Episode 3: Reward=-99.30, Balance=$96.09, Win Rate=37.9%, Trades=29, Episode PnL=$-2.63, Total PnL=$-29.47, Max Drawdown=5.6%, Pred Accuracy=96.8% +2025-03-10 14:42:46,900 - INFO - OPENED SHORT at 2069.96 | Stop loss: 2080.3284892857146 | Take profit: 2038.8825660714288 +2025-03-10 14:42:47,223 - INFO - CLOSED short at 2070.4 | PnL: -0.02% | $-0.24 +2025-03-10 14:42:47,223 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.0293107142857 | Take profit: 2101.4840339285715 +2025-03-10 14:42:47,260 - INFO - CLOSED long at 2071.11 | PnL: 0.03% | $-0.13 +2025-03-10 14:42:47,260 - INFO - OPENED SHORT at 2071.11 | Stop loss: 2081.4842392857145 | Take profit: 2040.0153160714287 +2025-03-10 14:42:47,755 - INFO - CLOSED short at 2070.4 | PnL: 0.03% | $-0.13 +2025-03-10 14:42:47,755 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.0293107142857 | Take profit: 2101.4840339285715 +2025-03-10 14:42:47,778 - INFO - CLOSED long at 2070.73 | PnL: 0.02% | $-0.17 +2025-03-10 14:42:47,778 - INFO - OPENED SHORT at 2070.73 | Stop loss: 2081.102339285714 | Take profit: 2039.6410160714286 +2025-03-10 14:42:49,717 - INFO - CLOSED short at 2054.83 | PnL: 0.77% | $1.31 +2025-03-10 14:42:49,717 - INFO - OPENED LONG at 2054.83 | Stop loss: 2044.5371607142856 | Take profit: 2085.6804839285714 +2025-03-10 14:42:50,040 - INFO - CLOSED long at 2063.9 | PnL: 0.44% | $0.68 +2025-03-10 14:42:50,040 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.2381892857143 | Take profit: 2032.9134660714287 +2025-03-10 14:42:50,366 - INFO - STOP LOSS hit for short at 2074.2381892857143 | PnL: -0.50% | $-1.21 +2025-03-10 14:42:50,405 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.4187392857148 | Take profit: 2046.811816071429 +2025-03-10 14:42:51,057 - INFO - CLOSED short at 2064.31 | PnL: 0.66% | $1.11 +2025-03-10 14:42:51,128 - INFO - OPENED SHORT at 2067.53 | Stop loss: 2077.8863392857143 | Take profit: 2036.4890160714288 +2025-03-10 14:42:52,825 - INFO - CLOSED short at 2060.7 | PnL: 0.33% | $0.46 +2025-03-10 14:42:52,825 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3778107142857 | Take profit: 2091.638533928571 +2025-03-10 14:42:52,979 - INFO - STOP LOSS hit for long at 2050.3778107142857 | PnL: -0.50% | $-1.21 +2025-03-10 14:42:53,508 - INFO - OPENED SHORT at 2061.21 | Stop loss: 2071.5347392857143 | Take profit: 2030.2638160714287 +2025-03-10 14:42:53,758 - INFO - STOP LOSS hit for short at 2071.5347392857143 | PnL: -0.50% | $-1.20 +2025-03-10 14:42:54,353 - INFO - OPENED SHORT at 2127.3 | Stop loss: 2137.9551892857144 | Take profit: 2095.362466071429 +2025-03-10 14:42:54,901 - INFO - CLOSED short at 2106.49 | PnL: 0.98% | $1.73 +2025-03-10 14:42:54,947 - INFO - OPENED SHORT at 2103.33 | Stop loss: 2113.865339285714 | Take profit: 2071.7520160714284 +2025-03-10 14:42:55,419 - INFO - CLOSED short at 2098.39 | PnL: 0.23% | $0.27 +2025-03-10 14:42:55,419 - INFO - OPENED LONG at 2098.39 | Stop loss: 2087.8793607142857 | Take profit: 2129.893883928571 +2025-03-10 14:42:55,461 - INFO - CLOSED long at 2095.29 | PnL: -0.15% | $-0.50 +2025-03-10 14:42:55,461 - INFO - OPENED SHORT at 2095.29 | Stop loss: 2105.7851392857146 | Take profit: 2063.8326160714287 +2025-03-10 14:42:56,898 - INFO - STOP LOSS hit for short at 2105.7851392857146 | PnL: -0.50% | $-1.20 +2025-03-10 14:42:56,936 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.0160892857143 | Take profit: 2071.8997660714285 +2025-03-10 14:42:57,581 - INFO - STOP LOSS hit for short at 2114.0160892857143 | PnL: -0.50% | $-1.19 +2025-03-10 14:42:57,620 - INFO - OPENED SHORT at 2113.61 | Stop loss: 2124.1967392857146 | Take profit: 2081.8778160714287 +2025-03-10 14:42:58,306 - INFO - STOP LOSS hit for short at 2124.1967392857146 | PnL: -0.50% | $-1.17 +2025-03-10 14:42:58,329 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.447639285714 | Take profit: 2095.8451160714285 +2025-03-10 14:42:58,999 - INFO - CLOSED short at 2122.01 | PnL: 0.27% | $0.33 +2025-03-10 14:42:58,999 - INFO - OPENED LONG at 2122.01 | Stop loss: 2111.381260714286 | Take profit: 2153.868183928572 +2025-03-10 14:42:59,024 - INFO - CLOSED long at 2121.19 | PnL: -0.04% | $-0.27 +2025-03-10 14:42:59,025 - INFO - OPENED SHORT at 2121.19 | Stop loss: 2131.8146392857143 | Take profit: 2089.3441160714287 +2025-03-10 14:42:59,637 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.84, Avg Loss=$-0.72 +2025-03-10 14:42:59,638 - INFO - Episode 4: Reward=-91.75, Balance=$97.29, Win Rate=36.8%, Trades=19, Episode PnL=$-2.33, Total PnL=$-32.18, Max Drawdown=4.0%, Pred Accuracy=96.9% +2025-03-10 14:43:00,643 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7706892857145 | Take profit: 2039.3159660714286 +2025-03-10 14:43:01,099 - INFO - CLOSED short at 2067.46 | PnL: 0.14% | $0.08 +2025-03-10 14:43:01,142 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.152689285714 | Take profit: 2035.7699660714288 +2025-03-10 14:43:01,356 - INFO - CLOSED short at 2069.2 | PnL: -0.12% | $-0.43 +2025-03-10 14:43:01,379 - INFO - OPENED SHORT at 2070.3 | Stop loss: 2080.6701892857145 | Take profit: 2039.2174660714286 +2025-03-10 14:43:03,207 - INFO - CLOSED short at 2059.02 | PnL: 0.54% | $0.88 +2025-03-10 14:43:03,235 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.2031392857143 | Take profit: 2027.9786160714284 +2025-03-10 14:43:03,667 - INFO - CLOSED short at 2066.36 | PnL: -0.36% | $-0.92 +2025-03-10 14:43:03,668 - INFO - OPENED LONG at 2066.36 | Stop loss: 2056.0095107142856 | Take profit: 2097.383433928572 +2025-03-10 14:43:03,703 - INFO - CLOSED long at 2066.01 | PnL: -0.02% | $-0.23 +2025-03-10 14:43:03,704 - INFO - OPENED SHORT at 2066.01 | Stop loss: 2076.358739285715 | Take profit: 2034.9918160714287 +2025-03-10 14:43:04,034 - INFO - STOP LOSS hit for short at 2076.358739285715 | PnL: -0.50% | $-1.18 +2025-03-10 14:43:04,058 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.4037392857144 | Take profit: 2043.8568160714287 +2025-03-10 14:43:04,869 - INFO - CLOSED short at 2066.8 | PnL: 0.40% | $0.58 +2025-03-10 14:43:05,209 - INFO - OPENED SHORT at 2068.19 | Stop loss: 2078.5496392857144 | Take profit: 2037.1391160714288 +2025-03-10 14:43:07,063 - INFO - CLOSED short at 2069.34 | PnL: -0.06% | $-0.30 +2025-03-10 14:43:07,103 - INFO - OPENED SHORT at 2069.81 | Stop loss: 2080.1777392857143 | Take profit: 2038.7348160714284 +2025-03-10 14:43:07,195 - INFO - CLOSED short at 2074.05 | PnL: -0.20% | $-0.59 +2025-03-10 14:43:07,220 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.373639285714 | Take profit: 2041.8671160714282 +2025-03-10 14:43:07,347 - INFO - STOP LOSS hit for short at 2083.373639285714 | PnL: -0.50% | $-1.17 +2025-03-10 14:43:07,391 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.553789285714 | Take profit: 2071.4466660714284 +2025-03-10 14:43:07,430 - INFO - STOP LOSS hit for short at 2113.553789285714 | PnL: -0.50% | $-1.15 +2025-03-10 14:43:07,573 - INFO - OPENED SHORT at 2137.59 | Stop loss: 2148.2966392857143 | Take profit: 2105.4981160714287 +2025-03-10 14:43:07,870 - INFO - CLOSED short at 2121.4 | PnL: 0.76% | $1.25 +2025-03-10 14:43:07,870 - INFO - OPENED LONG at 2121.4 | Stop loss: 2110.774310714286 | Take profit: 2153.249033928572 +2025-03-10 14:43:08,015 - INFO - STOP LOSS hit for long at 2110.774310714286 | PnL: -0.50% | $-1.15 +2025-03-10 14:43:08,317 - INFO - OPENED SHORT at 2106.49 | Stop loss: 2117.041139285714 | Take profit: 2074.8646160714284 +2025-03-10 14:43:08,969 - INFO - CLOSED short at 2083.28 | PnL: 1.10% | $1.90 +2025-03-10 14:43:08,971 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.844910714286 | Take profit: 2114.557233928572 +2025-03-10 14:43:09,063 - INFO - CLOSED long at 2085.3 | PnL: 0.10% | $-0.01 +2025-03-10 14:43:09,063 - INFO - OPENED SHORT at 2085.3 | Stop loss: 2095.745189285715 | Take profit: 2053.9924660714287 +2025-03-10 14:43:09,852 - INFO - STOP LOSS hit for short at 2095.745189285715 | PnL: -0.50% | $-1.16 +2025-03-10 14:43:11,101 - INFO - OPENED LONG at 2115.3 | Stop loss: 2104.704810714286 | Take profit: 2147.0575339285715 +2025-03-10 14:43:11,789 - INFO - CLOSED long at 2124.49 | PnL: 0.43% | $0.64 +2025-03-10 14:43:11,790 - INFO - OPENED SHORT at 2124.49 | Stop loss: 2135.131139285714 | Take profit: 2092.5946160714284 +2025-03-10 14:43:12,256 - INFO - CLOSED short at 2115.45 | PnL: 0.43% | $0.63 +2025-03-10 14:43:12,256 - INFO - OPENED LONG at 2115.45 | Stop loss: 2104.8540607142854 | Take profit: 2147.2097839285716 +2025-03-10 14:43:12,289 - INFO - CLOSED long at 2112.11 | PnL: -0.16% | $-0.50 +2025-03-10 14:43:12,289 - INFO - OPENED SHORT at 2112.11 | Stop loss: 2122.6892392857144 | Take profit: 2080.4003160714287 +2025-03-10 14:43:12,367 - INFO - CLOSED short at 2110.3 | PnL: 0.09% | $-0.03 +2025-03-10 14:43:12,368 - INFO - OPENED LONG at 2110.3 | Stop loss: 2099.729810714286 | Take profit: 2141.9825339285717 +2025-03-10 14:43:12,393 - INFO - CLOSED long at 2112.57 | PnL: 0.11% | $0.01 +2025-03-10 14:43:12,394 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.1515392857145 | Take profit: 2080.853416071429 +2025-03-10 14:43:12,417 - INFO - CLOSED short at 2108.68 | PnL: 0.18% | $0.16 +2025-03-10 14:43:12,418 - INFO - OPENED LONG at 2108.68 | Stop loss: 2098.1179107142852 | Take profit: 2140.3382339285713 +2025-03-10 14:43:12,538 - INFO - CLOSED long at 2114.71 | PnL: 0.29% | $0.36 +2025-03-10 14:43:12,539 - INFO - OPENED SHORT at 2114.71 | Stop loss: 2125.302239285714 | Take profit: 2082.9613160714284 +2025-03-10 14:43:12,646 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.65, Avg Loss=$-0.68 +2025-03-10 14:43:12,647 - INFO - Episode 5: Reward=-92.09, Balance=$97.65, Win Rate=43.5%, Trades=23, Episode PnL=$-2.62, Total PnL=$-34.52, Max Drawdown=5.0%, Pred Accuracy=96.9% +2025-03-10 14:43:12,930 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.0293107142857 | Take profit: 2101.4840339285715 +2025-03-10 14:43:12,983 - INFO - CLOSED long at 2071.4 | PnL: 0.05% | $-0.10 +2025-03-10 14:43:12,983 - INFO - OPENED SHORT at 2071.4 | Stop loss: 2081.7756892857146 | Take profit: 2040.3009660714288 +2025-03-10 14:43:13,058 - INFO - CLOSED short at 2072.75 | PnL: -0.07% | $-0.33 +2025-03-10 14:43:13,058 - INFO - OPENED LONG at 2072.75 | Stop loss: 2062.3675607142854 | Take profit: 2103.8692839285713 +2025-03-10 14:43:13,120 - INFO - CLOSED long at 2072.7 | PnL: -0.00% | $-0.20 +2025-03-10 14:43:13,120 - INFO - OPENED SHORT at 2072.7 | Stop loss: 2083.082189285714 | Take profit: 2041.5814660714284 +2025-03-10 14:43:13,141 - INFO - CLOSED short at 2072.15 | PnL: 0.03% | $-0.14 +2025-03-10 14:43:13,141 - INFO - OPENED LONG at 2072.15 | Stop loss: 2061.7705607142857 | Take profit: 2103.2602839285714 +2025-03-10 14:43:13,167 - INFO - CLOSED long at 2074.29 | PnL: 0.10% | $0.01 +2025-03-10 14:43:13,168 - INFO - OPENED SHORT at 2074.29 | Stop loss: 2084.680139285714 | Take profit: 2043.1476160714287 +2025-03-10 14:43:13,222 - INFO - CLOSED short at 2071.92 | PnL: 0.11% | $0.03 +2025-03-10 14:43:13,222 - INFO - OPENED LONG at 2071.92 | Stop loss: 2061.5417107142857 | Take profit: 2103.0268339285717 +2025-03-10 14:43:13,245 - INFO - CLOSED long at 2070.4 | PnL: -0.07% | $-0.34 +2025-03-10 14:43:13,246 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7706892857145 | Take profit: 2039.3159660714286 +2025-03-10 14:43:13,272 - INFO - CLOSED short at 2071.11 | PnL: -0.03% | $-0.26 +2025-03-10 14:43:13,272 - INFO - OPENED LONG at 2071.11 | Stop loss: 2060.735760714286 | Take profit: 2102.2046839285713 +2025-03-10 14:43:13,295 - INFO - CLOSED long at 2069.46 | PnL: -0.08% | $-0.35 +2025-03-10 14:43:13,296 - INFO - OPENED SHORT at 2069.46 | Stop loss: 2079.825989285714 | Take profit: 2038.3900660714285 +2025-03-10 14:43:13,530 - INFO - CLOSED short at 2063.61 | PnL: 0.28% | $0.36 +2025-03-10 14:43:13,574 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.6049892857145 | Take profit: 2034.2530660714287 +2025-03-10 14:43:13,620 - INFO - CLOSED short at 2068.58 | PnL: -0.16% | $-0.51 +2025-03-10 14:43:13,620 - INFO - OPENED LONG at 2068.58 | Stop loss: 2058.2184107142857 | Take profit: 2099.6367339285716 +2025-03-10 14:43:13,703 - INFO - CLOSED long at 2067.59 | PnL: -0.05% | $-0.29 +2025-03-10 14:43:13,703 - INFO - OPENED SHORT at 2067.59 | Stop loss: 2077.9466392857144 | Take profit: 2036.5481160714287 +2025-03-10 14:43:13,726 - INFO - CLOSED short at 2069.2 | PnL: -0.08% | $-0.35 +2025-03-10 14:43:13,726 - INFO - OPENED LONG at 2069.2 | Stop loss: 2058.8353107142857 | Take profit: 2100.2660339285712 +2025-03-10 14:43:13,770 - INFO - CLOSED long at 2071.59 | PnL: 0.12% | $0.03 +2025-03-10 14:43:13,771 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.966639285715 | Take profit: 2040.4881160714287 +2025-03-10 14:43:13,837 - INFO - CLOSED short at 2070.4 | PnL: 0.06% | $-0.08 +2025-03-10 14:43:13,837 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.0293107142857 | Take profit: 2101.4840339285715 +2025-03-10 14:43:13,944 - INFO - CLOSED long at 2068.69 | PnL: -0.08% | $-0.35 +2025-03-10 14:43:13,944 - INFO - OPENED SHORT at 2068.69 | Stop loss: 2079.0521392857145 | Take profit: 2037.6316160714287 +2025-03-10 14:43:14,088 - INFO - CLOSED short at 2065.28 | PnL: 0.16% | $0.12 +2025-03-10 14:43:14,089 - INFO - OPENED LONG at 2065.28 | Stop loss: 2054.9349107142857 | Take profit: 2096.287233928572 +2025-03-10 14:43:14,234 - INFO - CLOSED long at 2068.18 | PnL: 0.14% | $0.08 +2025-03-10 14:43:14,234 - INFO - OPENED SHORT at 2068.18 | Stop loss: 2078.539589285714 | Take profit: 2037.1292660714282 +2025-03-10 14:43:14,347 - INFO - CLOSED short at 2064.99 | PnL: 0.15% | $0.10 +2025-03-10 14:43:14,347 - INFO - OPENED LONG at 2064.99 | Stop loss: 2054.6463607142855 | Take profit: 2095.9928839285712 +2025-03-10 14:43:14,567 - INFO - CLOSED long at 2064.96 | PnL: -0.00% | $-0.20 +2025-03-10 14:43:14,568 - INFO - OPENED SHORT at 2064.96 | Stop loss: 2075.3034892857145 | Take profit: 2033.9575660714286 +2025-03-10 14:43:14,670 - INFO - CLOSED short at 2065.54 | PnL: -0.03% | $-0.25 +2025-03-10 14:43:14,671 - INFO - OPENED LONG at 2065.54 | Stop loss: 2055.1936107142856 | Take profit: 2096.5511339285713 +2025-03-10 14:43:14,954 - INFO - CLOSED long at 2059.3 | PnL: -0.30% | $-0.77 +2025-03-10 14:43:14,954 - INFO - OPENED SHORT at 2059.3 | Stop loss: 2069.615189285714 | Take profit: 2028.3824660714286 +2025-03-10 14:43:15,011 - INFO - CLOSED short at 2061.8 | PnL: -0.12% | $-0.42 +2025-03-10 14:43:15,011 - INFO - OPENED LONG at 2061.8 | Stop loss: 2051.472310714286 | Take profit: 2092.7550339285717 +2025-03-10 14:43:15,056 - INFO - CLOSED long at 2064.7 | PnL: 0.14% | $0.08 +2025-03-10 14:43:15,056 - INFO - OPENED SHORT at 2064.7 | Stop loss: 2075.042189285714 | Take profit: 2033.7014660714285 +2025-03-10 14:43:15,125 - INFO - CLOSED short at 2060.91 | PnL: 0.18% | $0.16 +2025-03-10 14:43:15,125 - INFO - OPENED LONG at 2060.91 | Stop loss: 2050.5867607142854 | Take profit: 2091.851683928571 +2025-03-10 14:43:15,249 - INFO - CLOSED long at 2064.1 | PnL: 0.15% | $0.10 +2025-03-10 14:43:15,250 - INFO - OPENED SHORT at 2064.1 | Stop loss: 2074.4391892857143 | Take profit: 2033.1104660714284 +2025-03-10 14:43:15,523 - INFO - CLOSED short at 2061.89 | PnL: 0.11% | $0.01 +2025-03-10 14:43:15,524 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.5618607142856 | Take profit: 2092.8463839285714 +2025-03-10 14:43:16,074 - INFO - CLOSED long at 2061.3 | PnL: -0.03% | $-0.25 +2025-03-10 14:43:16,074 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.6251892857144 | Take profit: 2030.3524660714288 +2025-03-10 14:43:16,122 - INFO - CLOSED short at 2063.4 | PnL: -0.10% | $-0.38 +2025-03-10 14:43:16,123 - INFO - OPENED LONG at 2063.4 | Stop loss: 2053.064310714286 | Take profit: 2094.3790339285715 +2025-03-10 14:43:16,754 - INFO - CLOSED long at 2069.69 | PnL: 0.30% | $0.39 +2025-03-10 14:43:16,754 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.057139285714 | Take profit: 2038.6166160714286 +2025-03-10 14:43:16,810 - INFO - CLOSED short at 2067.44 | PnL: 0.11% | $0.02 +2025-03-10 14:43:16,811 - INFO - OPENED LONG at 2067.44 | Stop loss: 2057.084110714286 | Take profit: 2098.4796339285717 +2025-03-10 14:43:16,830 - INFO - CLOSED long at 2068.79 | PnL: 0.07% | $-0.07 +2025-03-10 14:43:16,830 - INFO - OPENED SHORT at 2068.79 | Stop loss: 2079.152639285714 | Take profit: 2037.7301160714285 +2025-03-10 14:43:16,852 - INFO - CLOSED short at 2072.99 | PnL: -0.20% | $-0.58 +2025-03-10 14:43:16,854 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6063607142855 | Take profit: 2104.112883928571 +2025-03-10 14:43:17,020 - INFO - CLOSED long at 2063.95 | PnL: -0.44% | $-1.01 +2025-03-10 14:43:17,020 - INFO - OPENED SHORT at 2063.95 | Stop loss: 2074.288439285714 | Take profit: 2032.9627160714283 +2025-03-10 14:43:17,064 - INFO - CLOSED short at 2063.97 | PnL: -0.00% | $-0.19 +2025-03-10 14:43:17,064 - INFO - OPENED LONG at 2063.97 | Stop loss: 2053.6314607142854 | Take profit: 2094.9575839285712 +2025-03-10 14:43:17,185 - INFO - CLOSED long at 2064.4 | PnL: 0.02% | $-0.15 +2025-03-10 14:43:17,185 - INFO - OPENED SHORT at 2064.4 | Stop loss: 2074.7406892857143 | Take profit: 2033.4059660714288 +2025-03-10 14:43:17,239 - INFO - CLOSED short at 2065.5 | PnL: -0.05% | $-0.29 +2025-03-10 14:43:17,239 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.1538107142856 | Take profit: 2096.5105339285715 +2025-03-10 14:43:17,270 - INFO - CLOSED long at 2067.53 | PnL: 0.10% | $-0.00 +2025-03-10 14:43:17,271 - INFO - OPENED SHORT at 2067.53 | Stop loss: 2077.8863392857143 | Take profit: 2036.4890160714288 +2025-03-10 14:43:17,296 - INFO - CLOSED short at 2065.29 | PnL: 0.11% | $0.02 +2025-03-10 14:43:17,296 - INFO - OPENED LONG at 2065.29 | Stop loss: 2054.9448607142854 | Take profit: 2096.2973839285714 +2025-03-10 14:43:17,418 - INFO - CLOSED long at 2068.59 | PnL: 0.16% | $0.11 +2025-03-10 14:43:17,419 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.9516392857145 | Take profit: 2037.5331160714286 +2025-03-10 14:43:17,587 - INFO - CLOSED short at 2070.9 | PnL: -0.11% | $-0.39 +2025-03-10 14:43:17,587 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.5268107142856 | Take profit: 2101.9915339285717 +2025-03-10 14:43:17,685 - INFO - CLOSED long at 2070.35 | PnL: -0.03% | $-0.23 +2025-03-10 14:43:17,685 - INFO - OPENED SHORT at 2070.35 | Stop loss: 2080.7204392857143 | Take profit: 2039.2667160714284 +2025-03-10 14:43:17,714 - INFO - CLOSED short at 2070.61 | PnL: -0.01% | $-0.21 +2025-03-10 14:43:17,715 - INFO - OPENED LONG at 2070.61 | Stop loss: 2060.238260714286 | Take profit: 2101.6971839285716 +2025-03-10 14:43:17,736 - INFO - CLOSED long at 2071.99 | PnL: 0.07% | $-0.06 +2025-03-10 14:43:17,736 - INFO - OPENED SHORT at 2071.99 | Stop loss: 2082.368639285714 | Take profit: 2040.8821160714283 +2025-03-10 14:43:17,767 - INFO - CLOSED short at 2068.19 | PnL: 0.18% | $0.15 +2025-03-10 14:43:17,767 - INFO - OPENED LONG at 2068.19 | Stop loss: 2057.8303607142857 | Take profit: 2099.2408839285717 +2025-03-10 14:43:17,816 - INFO - CLOSED long at 2068.67 | PnL: 0.02% | $-0.14 +2025-03-10 14:43:17,816 - INFO - OPENED SHORT at 2068.67 | Stop loss: 2079.0320392857143 | Take profit: 2037.6119160714286 +2025-03-10 14:43:17,866 - INFO - CLOSED short at 2070.67 | PnL: -0.10% | $-0.36 +2025-03-10 14:43:17,866 - INFO - OPENED LONG at 2070.67 | Stop loss: 2060.2979607142856 | Take profit: 2101.7580839285715 +2025-03-10 14:43:17,986 - INFO - CLOSED long at 2074.37 | PnL: 0.18% | $0.14 +2025-03-10 14:43:17,987 - INFO - OPENED SHORT at 2074.37 | Stop loss: 2084.760539285714 | Take profit: 2043.2264160714283 +2025-03-10 14:43:18,042 - INFO - CLOSED short at 2074.35 | PnL: 0.00% | $-0.18 +2025-03-10 14:43:18,043 - INFO - OPENED LONG at 2074.35 | Stop loss: 2063.9595607142855 | Take profit: 2105.4932839285716 +2025-03-10 14:43:18,303 - INFO - CLOSED long at 2072.09 | PnL: -0.11% | $-0.38 +2025-03-10 14:43:18,345 - INFO - OPENED LONG at 2069.97 | Stop loss: 2059.6014607142856 | Take profit: 2101.0475839285714 +2025-03-10 14:43:18,478 - INFO - CLOSED long at 2066.89 | PnL: -0.15% | $-0.45 +2025-03-10 14:43:18,479 - INFO - OPENED SHORT at 2066.89 | Stop loss: 2077.2431392857143 | Take profit: 2035.8586160714285 +2025-03-10 14:43:18,502 - INFO - CLOSED short at 2067.88 | PnL: -0.05% | $-0.27 +2025-03-10 14:43:18,503 - INFO - OPENED LONG at 2067.88 | Stop loss: 2057.5219107142857 | Take profit: 2098.9262339285715 +2025-03-10 14:43:19,284 - INFO - STOP LOSS hit for long at 2057.5219107142857 | PnL: -0.50% | $-1.09 +2025-03-10 14:43:19,307 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.726260714286 | Take profit: 2083.8331839285715 +2025-03-10 14:43:19,386 - INFO - CLOSED long at 2051.99 | PnL: -0.05% | $-0.27 +2025-03-10 14:43:19,386 - INFO - OPENED SHORT at 2051.99 | Stop loss: 2062.268639285714 | Take profit: 2021.1821160714283 +2025-03-10 14:43:19,458 - INFO - CLOSED short at 2058.3 | PnL: -0.31% | $-0.73 +2025-03-10 14:43:19,459 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9898107142858 | Take profit: 2089.2025339285715 +2025-03-10 14:43:19,619 - INFO - CLOSED long at 2062.83 | PnL: 0.22% | $0.21 +2025-03-10 14:43:19,619 - INFO - OPENED SHORT at 2062.83 | Stop loss: 2073.162839285714 | Take profit: 2031.8595160714285 +2025-03-10 14:43:19,642 - INFO - CLOSED short at 2063.9 | PnL: -0.05% | $-0.27 +2025-03-10 14:43:19,643 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.561810714286 | Take profit: 2094.886533928571 +2025-03-10 14:43:19,977 - INFO - CLOSED long at 2061.84 | PnL: -0.10% | $-0.35 +2025-03-10 14:43:19,978 - INFO - OPENED SHORT at 2061.84 | Stop loss: 2072.1678892857144 | Take profit: 2030.8843660714288 +2025-03-10 14:43:20,004 - INFO - CLOSED short at 2062.54 | PnL: -0.03% | $-0.24 +2025-03-10 14:43:20,005 - INFO - OPENED LONG at 2062.54 | Stop loss: 2052.208610714286 | Take profit: 2093.5061339285717 +2025-03-10 14:43:20,440 - INFO - TAKE PROFIT hit for long at 2093.5061339285717 | PnL: 1.50% | $2.46 +2025-03-10 14:43:20,462 - INFO - OPENED LONG at 2130.7 | Stop loss: 2120.0278107142854 | Take profit: 2162.6885339285714 +2025-03-10 14:43:20,853 - INFO - STOP LOSS hit for long at 2120.0278107142854 | PnL: -0.50% | $-1.09 +2025-03-10 14:43:20,896 - INFO - OPENED SHORT at 2121.4 | Stop loss: 2132.0256892857146 | Take profit: 2089.550966071429 +2025-03-10 14:43:20,942 - INFO - CLOSED short at 2119.14 | PnL: 0.11% | $0.01 +2025-03-10 14:43:20,942 - INFO - OPENED LONG at 2119.14 | Stop loss: 2108.5256107142854 | Take profit: 2150.9551339285717 +2025-03-10 14:43:21,042 - INFO - STOP LOSS hit for long at 2108.5256107142854 | PnL: -0.50% | $-1.07 +2025-03-10 14:43:21,082 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.0283107142855 | Take profit: 2142.2870339285714 +2025-03-10 14:43:21,151 - INFO - CLOSED long at 2112.09 | PnL: 0.07% | $-0.05 +2025-03-10 14:43:21,152 - INFO - OPENED SHORT at 2112.09 | Stop loss: 2122.669139285714 | Take profit: 2080.380616071429 +2025-03-10 14:43:21,230 - INFO - CLOSED short at 2113.24 | PnL: -0.05% | $-0.27 +2025-03-10 14:43:21,230 - INFO - OPENED LONG at 2113.24 | Stop loss: 2102.6551107142855 | Take profit: 2144.9666339285714 +2025-03-10 14:43:21,255 - INFO - CLOSED long at 2112.99 | PnL: -0.01% | $-0.20 +2025-03-10 14:43:21,255 - INFO - OPENED SHORT at 2112.99 | Stop loss: 2123.5736392857143 | Take profit: 2081.2671160714285 +2025-03-10 14:43:21,277 - INFO - CLOSED short at 2120.81 | PnL: -0.37% | $-0.82 +2025-03-10 14:43:21,278 - INFO - OPENED LONG at 2120.81 | Stop loss: 2110.187260714286 | Take profit: 2152.6501839285716 +2025-03-10 14:43:21,361 - INFO - CLOSED long at 2108.71 | PnL: -0.57% | $-1.16 +2025-03-10 14:43:21,362 - INFO - OPENED SHORT at 2108.71 | Stop loss: 2119.2722392857145 | Take profit: 2077.0513160714286 +2025-03-10 14:43:21,479 - INFO - CLOSED short at 2100.5 | PnL: 0.39% | $0.50 +2025-03-10 14:43:21,480 - INFO - OPENED LONG at 2100.5 | Stop loss: 2089.978810714286 | Take profit: 2132.035533928571 +2025-03-10 14:43:21,668 - INFO - CLOSED long at 2099.25 | PnL: -0.06% | $-0.27 +2025-03-10 14:43:21,669 - INFO - OPENED SHORT at 2099.25 | Stop loss: 2109.7649392857143 | Take profit: 2067.7332160714286 +2025-03-10 14:43:21,694 - INFO - CLOSED short at 2098.9 | PnL: 0.02% | $-0.14 +2025-03-10 14:43:21,694 - INFO - OPENED LONG at 2098.9 | Stop loss: 2088.3868107142857 | Take profit: 2130.4115339285718 +2025-03-10 14:43:21,810 - INFO - CLOSED long at 2103.86 | PnL: 0.24% | $0.23 +2025-03-10 14:43:21,810 - INFO - OPENED SHORT at 2103.86 | Stop loss: 2114.3979892857146 | Take profit: 2072.274066071429 +2025-03-10 14:43:21,849 - INFO - CLOSED short at 2104.68 | PnL: -0.04% | $-0.24 +2025-03-10 14:43:21,849 - INFO - OPENED LONG at 2104.68 | Stop loss: 2094.1379107142857 | Take profit: 2136.2782339285714 +2025-03-10 14:43:22,008 - INFO - CLOSED long at 2098.39 | PnL: -0.30% | $-0.68 +2025-03-10 14:43:22,009 - INFO - OPENED SHORT at 2098.39 | Stop loss: 2108.900639285714 | Take profit: 2066.8861160714287 +2025-03-10 14:43:22,038 - INFO - CLOSED short at 2095.29 | PnL: 0.15% | $0.08 +2025-03-10 14:43:22,038 - INFO - OPENED LONG at 2095.29 | Stop loss: 2084.7948607142857 | Take profit: 2126.7473839285717 +2025-03-10 14:43:22,089 - INFO - CLOSED long at 2093.33 | PnL: -0.09% | $-0.33 +2025-03-10 14:43:22,089 - INFO - OPENED SHORT at 2093.33 | Stop loss: 2103.8153392857143 | Take profit: 2061.9020160714285 +2025-03-10 14:43:22,310 - INFO - CLOSED short at 2088.44 | PnL: 0.23% | $0.23 +2025-03-10 14:43:22,310 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.979110714286 | Take profit: 2119.794633928572 +2025-03-10 14:43:22,390 - INFO - CLOSED long at 2085.3 | PnL: -0.15% | $-0.43 +2025-03-10 14:43:22,391 - INFO - OPENED SHORT at 2085.3 | Stop loss: 2095.745189285715 | Take profit: 2053.9924660714287 +2025-03-10 14:43:22,414 - INFO - CLOSED short at 2082.44 | PnL: 0.14% | $0.06 +2025-03-10 14:43:22,414 - INFO - OPENED LONG at 2082.44 | Stop loss: 2072.0091107142857 | Take profit: 2113.7046339285716 +2025-03-10 14:43:22,561 - INFO - CLOSED long at 2083.59 | PnL: 0.06% | $-0.08 +2025-03-10 14:43:22,562 - INFO - OPENED SHORT at 2083.59 | Stop loss: 2094.0266392857143 | Take profit: 2052.3081160714287 +2025-03-10 14:43:22,703 - INFO - CLOSED short at 2085.83 | PnL: -0.11% | $-0.35 +2025-03-10 14:43:22,703 - INFO - OPENED LONG at 2085.83 | Stop loss: 2075.382160714286 | Take profit: 2117.1454839285716 +2025-03-10 14:43:22,943 - INFO - CLOSED long at 2086.81 | PnL: 0.05% | $-0.09 +2025-03-10 14:43:22,944 - INFO - OPENED SHORT at 2086.81 | Stop loss: 2097.262739285714 | Take profit: 2055.4798160714286 +2025-03-10 14:43:22,976 - INFO - CLOSED short at 2089.79 | PnL: -0.14% | $-0.41 +2025-03-10 14:43:22,977 - INFO - OPENED LONG at 2089.79 | Stop loss: 2079.3223607142854 | Take profit: 2121.1648839285717 +2025-03-10 14:43:23,095 - INFO - CLOSED long at 2089.2 | PnL: -0.03% | $-0.21 +2025-03-10 14:43:23,095 - INFO - OPENED SHORT at 2089.2 | Stop loss: 2099.6646892857143 | Take profit: 2057.8339660714287 +2025-03-10 14:43:23,145 - INFO - CLOSED short at 2091.05 | PnL: -0.09% | $-0.32 +2025-03-10 14:43:23,145 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.576060714286 | Take profit: 2122.4437839285715 +2025-03-10 14:43:23,179 - INFO - CLOSED long at 2091.05 | PnL: 0.00% | $-0.17 +2025-03-10 14:43:23,179 - INFO - OPENED SHORT at 2091.05 | Stop loss: 2101.5239392857147 | Take profit: 2059.656216071429 +2025-03-10 14:43:23,205 - INFO - CLOSED short at 2091.95 | PnL: -0.04% | $-0.24 +2025-03-10 14:43:23,205 - INFO - OPENED LONG at 2091.95 | Stop loss: 2081.4715607142853 | Take profit: 2123.357283928571 +2025-03-10 14:43:23,253 - INFO - CLOSED long at 2097.8 | PnL: 0.28% | $0.30 +2025-03-10 14:43:23,253 - INFO - OPENED SHORT at 2097.8 | Stop loss: 2108.3076892857143 | Take profit: 2066.3049660714287 +2025-03-10 14:43:23,300 - INFO - CLOSED short at 2101.64 | PnL: -0.18% | $-0.47 +2025-03-10 14:43:23,300 - INFO - OPENED LONG at 2101.64 | Stop loss: 2091.1131107142855 | Take profit: 2133.1926339285715 +2025-03-10 14:43:23,460 - INFO - CLOSED long at 2099.73 | PnL: -0.09% | $-0.32 +2025-03-10 14:43:23,461 - INFO - OPENED SHORT at 2099.73 | Stop loss: 2110.2473392857146 | Take profit: 2068.2060160714286 +2025-03-10 14:43:23,506 - INFO - CLOSED short at 2106.15 | PnL: -0.31% | $-0.67 +2025-03-10 14:43:23,506 - INFO - OPENED LONG at 2106.15 | Stop loss: 2095.6005607142856 | Take profit: 2137.7702839285716 +2025-03-10 14:43:23,554 - INFO - CLOSED long at 2103.48 | PnL: -0.13% | $-0.37 +2025-03-10 14:43:23,554 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.0160892857143 | Take profit: 2071.8997660714285 +2025-03-10 14:43:23,585 - INFO - CLOSED short at 2104.93 | PnL: -0.07% | $-0.27 +2025-03-10 14:43:23,585 - INFO - OPENED LONG at 2104.93 | Stop loss: 2094.3866607142854 | Take profit: 2136.531983928571 +2025-03-10 14:43:23,642 - INFO - CLOSED long at 2103.07 | PnL: -0.09% | $-0.31 +2025-03-10 14:43:23,643 - INFO - OPENED SHORT at 2103.07 | Stop loss: 2113.6040392857144 | Take profit: 2071.495916071429 +2025-03-10 14:43:23,667 - INFO - CLOSED short at 2101.5 | PnL: 0.07% | $-0.04 +2025-03-10 14:43:23,668 - INFO - OPENED LONG at 2101.5 | Stop loss: 2090.9738107142857 | Take profit: 2133.0505339285714 +2025-03-10 14:43:23,907 - INFO - CLOSED long at 2102.7 | PnL: 0.06% | $-0.07 +2025-03-10 14:43:23,907 - INFO - OPENED SHORT at 2102.7 | Stop loss: 2113.232189285714 | Take profit: 2071.1314660714283 +2025-03-10 14:43:23,982 - INFO - CLOSED short at 2103.41 | PnL: -0.03% | $-0.22 +2025-03-10 14:43:23,982 - INFO - OPENED LONG at 2103.41 | Stop loss: 2092.874260714286 | Take profit: 2134.9891839285715 +2025-03-10 14:43:24,013 - INFO - CLOSED long at 2104.73 | PnL: 0.06% | $-0.06 +2025-03-10 14:43:24,013 - INFO - OPENED SHORT at 2104.73 | Stop loss: 2115.272339285714 | Take profit: 2073.1310160714283 +2025-03-10 14:43:24,063 - INFO - CLOSED short at 2106.28 | PnL: -0.07% | $-0.28 +2025-03-10 14:43:24,064 - INFO - OPENED LONG at 2106.28 | Stop loss: 2095.729910714286 | Take profit: 2137.9022339285716 +2025-03-10 14:43:24,085 - INFO - CLOSED long at 2108.0 | PnL: 0.08% | $-0.03 +2025-03-10 14:43:24,085 - INFO - OPENED SHORT at 2108.0 | Stop loss: 2118.5586892857145 | Take profit: 2076.3519660714287 +2025-03-10 14:43:24,163 - INFO - CLOSED short at 2110.4 | PnL: -0.11% | $-0.34 +2025-03-10 14:43:24,164 - INFO - OPENED LONG at 2110.4 | Stop loss: 2099.829310714286 | Take profit: 2142.084033928572 +2025-03-10 14:43:24,205 - INFO - CLOSED long at 2113.7 | PnL: 0.16% | $0.09 +2025-03-10 14:43:24,206 - INFO - OPENED SHORT at 2113.7 | Stop loss: 2124.2871892857142 | Take profit: 2081.9664660714284 +2025-03-10 14:43:24,291 - INFO - CLOSED short at 2115.26 | PnL: -0.07% | $-0.28 +2025-03-10 14:43:24,291 - INFO - OPENED LONG at 2115.26 | Stop loss: 2104.665010714286 | Take profit: 2147.0169339285717 +2025-03-10 14:43:24,470 - INFO - CLOSED long at 2110.99 | PnL: -0.20% | $-0.48 +2025-03-10 14:43:24,471 - INFO - OPENED SHORT at 2110.99 | Stop loss: 2121.563639285714 | Take profit: 2079.2971160714283 +2025-03-10 14:43:24,518 - INFO - CLOSED short at 2111.19 | PnL: -0.01% | $-0.17 +2025-03-10 14:43:24,518 - INFO - OPENED LONG at 2111.19 | Stop loss: 2100.6153607142855 | Take profit: 2142.8858839285717 +2025-03-10 14:43:24,541 - INFO - CLOSED long at 2112.61 | PnL: 0.07% | $-0.05 +2025-03-10 14:43:24,541 - INFO - OPENED SHORT at 2112.61 | Stop loss: 2123.1917392857144 | Take profit: 2080.8928160714286 +2025-03-10 14:43:24,640 - INFO - CLOSED short at 2115.3 | PnL: -0.13% | $-0.36 +2025-03-10 14:43:24,641 - INFO - OPENED LONG at 2115.3 | Stop loss: 2104.704810714286 | Take profit: 2147.0575339285715 +2025-03-10 14:43:24,725 - INFO - CLOSED long at 2116.81 | PnL: 0.07% | $-0.04 +2025-03-10 14:43:24,726 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.412739285714 | Take profit: 2085.0298160714283 +2025-03-10 14:43:24,819 - INFO - CLOSED short at 2117.6 | PnL: -0.04% | $-0.22 +2025-03-10 14:43:24,819 - INFO - OPENED LONG at 2117.6 | Stop loss: 2106.9933107142856 | Take profit: 2149.3920339285714 +2025-03-10 14:43:25,176 - INFO - CLOSED long at 2135.86 | PnL: 0.86% | $1.19 +2025-03-10 14:43:25,201 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.9599892857145 | Take profit: 2104.1880660714287 +2025-03-10 14:43:25,224 - INFO - CLOSED short at 2135.51 | PnL: 0.04% | $-0.10 +2025-03-10 14:43:25,225 - INFO - OPENED LONG at 2135.51 | Stop loss: 2124.8137607142858 | Take profit: 2167.5706839285717 +2025-03-10 14:43:25,338 - INFO - CLOSED long at 2124.38 | PnL: -0.52% | $-0.99 +2025-03-10 14:43:25,338 - INFO - OPENED SHORT at 2124.38 | Stop loss: 2135.0205892857143 | Take profit: 2092.4862660714284 +2025-03-10 14:43:25,454 - INFO - CLOSED short at 2129.51 | PnL: -0.24% | $-0.54 +2025-03-10 14:43:25,455 - INFO - OPENED LONG at 2129.51 | Stop loss: 2118.843760714286 | Take profit: 2161.4806839285716 +2025-03-10 14:43:25,691 - INFO - CLOSED long at 2120.0 | PnL: -0.45% | $-0.85 +2025-03-10 14:43:25,692 - INFO - OPENED SHORT at 2120.0 | Stop loss: 2130.618689285714 | Take profit: 2088.1719660714284 +2025-03-10 14:43:25,739 - INFO - CLOSED short at 2118.8 | PnL: 0.06% | $-0.07 +2025-03-10 14:43:25,740 - INFO - OPENED LONG at 2118.8 | Stop loss: 2108.187310714286 | Take profit: 2150.6100339285717 +2025-03-10 14:43:26,085 - INFO - CLOSED long at 2120.84 | PnL: 0.10% | $-0.01 +2025-03-10 14:43:26,085 - INFO - OPENED SHORT at 2120.84 | Stop loss: 2131.462889285714 | Take profit: 2088.9993660714285 +2025-03-10 14:43:26,117 - INFO - CLOSED short at 2114.41 | PnL: 0.30% | $0.31 +2025-03-10 14:43:26,118 - INFO - OPENED LONG at 2114.41 | Stop loss: 2103.8192607142855 | Take profit: 2146.1541839285715 +2025-03-10 14:43:26,573 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.26, Avg Loss=$-0.34 +2025-03-10 14:43:26,574 - INFO - Episode 6: Reward=-176.71, Balance=$77.89, Win Rate=24.8%, Trades=117, Episode PnL=$-11.05, Total PnL=$-56.63, Max Drawdown=19.9%, Pred Accuracy=97.0% +2025-03-10 14:43:26,997 - INFO - OPENED SHORT at 2071.4 | Stop loss: 2081.7756892857146 | Take profit: 2040.3009660714288 +2025-03-10 14:43:27,398 - INFO - CLOSED short at 2068.32 | PnL: 0.15% | $0.10 +2025-03-10 14:43:27,399 - INFO - OPENED LONG at 2068.32 | Stop loss: 2057.959710714286 | Take profit: 2099.3728339285713 +2025-03-10 14:43:27,938 - INFO - CLOSED long at 2068.5 | PnL: 0.01% | $-0.18 +2025-03-10 14:43:28,055 - INFO - OPENED SHORT at 2067.11 | Stop loss: 2077.4642392857145 | Take profit: 2036.075316071429 +2025-03-10 14:43:29,889 - INFO - CLOSED short at 2057.4 | PnL: 0.47% | $0.73 +2025-03-10 14:43:30,311 - INFO - OPENED SHORT at 2063.4 | Stop loss: 2073.7356892857147 | Take profit: 2032.4209660714287 +2025-03-10 14:43:30,670 - INFO - STOP LOSS hit for short at 2073.7356892857147 | PnL: -0.50% | $-1.20 +2025-03-10 14:43:30,935 - INFO - OPENED SHORT at 2068.15 | Stop loss: 2078.509439285714 | Take profit: 2037.0997160714287 +2025-03-10 14:43:33,295 - INFO - CLOSED short at 2049.21 | PnL: 0.92% | $1.61 +2025-03-10 14:43:33,506 - INFO - OPENED SHORT at 2062.83 | Stop loss: 2073.162839285714 | Take profit: 2031.8595160714285 +2025-03-10 14:43:34,194 - INFO - STOP LOSS hit for short at 2073.162839285714 | PnL: -0.50% | $-1.20 +2025-03-10 14:43:34,334 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.479089285714 | Take profit: 2044.9107660714285 +2025-03-10 14:43:34,382 - INFO - CLOSED short at 2085.56 | PnL: -0.46% | $-1.10 +2025-03-10 14:43:34,382 - INFO - OPENED LONG at 2085.56 | Stop loss: 2075.113510714286 | Take profit: 2116.8714339285716 +2025-03-10 14:43:34,431 - INFO - CLOSED long at 2090.49 | PnL: 0.24% | $0.27 +2025-03-10 14:43:34,432 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.961139285714 | Take profit: 2059.104616071428 +2025-03-10 14:43:34,478 - INFO - STOP LOSS hit for short at 2100.961139285714 | PnL: -0.50% | $-1.18 +2025-03-10 14:43:34,995 - INFO - OPENED SHORT at 2120.15 | Stop loss: 2130.7694392857143 | Take profit: 2088.3197160714285 +2025-03-10 14:43:35,512 - INFO - CLOSED short at 2116.48 | PnL: 0.17% | $0.14 +2025-03-10 14:43:35,512 - INFO - OPENED LONG at 2116.48 | Stop loss: 2105.8789107142857 | Take profit: 2148.255233928571 +2025-03-10 14:43:35,705 - INFO - STOP LOSS hit for long at 2105.8789107142857 | PnL: -0.50% | $-1.17 +2025-03-10 14:43:35,787 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.5313107142856 | Take profit: 2121.3780339285718 +2025-03-10 14:43:36,057 - INFO - CLOSED long at 2106.39 | PnL: 0.78% | $1.31 +2025-03-10 14:43:36,057 - INFO - OPENED SHORT at 2106.39 | Stop loss: 2116.940639285714 | Take profit: 2074.7661160714283 +2025-03-10 14:43:38,040 - INFO - CLOSED short at 2102.0 | PnL: 0.21% | $0.21 +2025-03-10 14:43:38,041 - INFO - OPENED LONG at 2102.0 | Stop loss: 2091.4713107142857 | Take profit: 2133.558033928571 +2025-03-10 14:43:38,084 - INFO - CLOSED long at 2103.41 | PnL: 0.07% | $-0.06 +2025-03-10 14:43:39,198 - INFO - OPENED SHORT at 2135.86 | Stop loss: 2146.5579892857145 | Take profit: 2103.794066071429 +2025-03-10 14:43:39,491 - INFO - CLOSED short at 2129.51 | PnL: 0.30% | $0.38 +2025-03-10 14:43:39,657 - INFO - OPENED SHORT at 2123.37 | Stop loss: 2134.0055392857143 | Take profit: 2091.4914160714284 +2025-03-10 14:43:39,828 - INFO - CLOSED short at 2116.53 | PnL: 0.32% | $0.43 +2025-03-10 14:43:39,828 - INFO - OPENED LONG at 2116.53 | Stop loss: 2105.928660714286 | Take profit: 2148.3059839285715 +2025-03-10 14:43:40,626 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.58, Avg Loss=$-0.87 +2025-03-10 14:43:40,627 - INFO - Episode 7: Reward=-89.27, Balance=$99.09, Win Rate=56.2%, Trades=16, Episode PnL=$-2.49, Total PnL=$-57.54, Max Drawdown=4.2%, Pred Accuracy=97.1% +2025-03-10 14:43:40,763 - INFO - Model saved to models/trading_agent_best_winrate.pt +2025-03-10 14:43:40,764 - INFO - New best win rate model saved: 56.2% +2025-03-10 14:43:42,113 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.750689285714 | Take profit: 2035.3759660714286 +2025-03-10 14:43:42,282 - INFO - CLOSED short at 2068.18 | PnL: -0.09% | $-0.37 +2025-03-10 14:43:42,283 - INFO - OPENED LONG at 2068.18 | Stop loss: 2057.8204107142856 | Take profit: 2099.230733928571 +2025-03-10 14:43:43,020 - INFO - CLOSED long at 2060.9 | PnL: -0.35% | $-0.89 +2025-03-10 14:43:43,020 - INFO - OPENED SHORT at 2060.9 | Stop loss: 2071.2231892857144 | Take profit: 2029.9584660714286 +2025-03-10 14:43:44,601 - INFO - CLOSED short at 2069.79 | PnL: -0.43% | $-1.04 +2025-03-10 14:43:44,601 - INFO - OPENED LONG at 2069.79 | Stop loss: 2059.422360714286 | Take profit: 2100.8648839285715 +2025-03-10 14:43:44,673 - INFO - CLOSED long at 2078.01 | PnL: 0.40% | $0.58 +2025-03-10 14:43:44,673 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.4187392857148 | Take profit: 2046.811816071429 +2025-03-10 14:43:47,673 - INFO - CLOSED short at 2057.11 | PnL: 1.01% | $1.76 +2025-03-10 14:43:48,462 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2088.0167392857143 | Take profit: 2046.4178160714287 +2025-03-10 14:43:48,482 - INFO - CLOSED short at 2085.56 | PnL: -0.38% | $-0.96 +2025-03-10 14:43:48,753 - INFO - OPENED LONG at 2134.78 | Stop loss: 2124.087410714286 | Take profit: 2166.8297339285714 +2025-03-10 14:43:48,858 - INFO - STOP LOSS hit for long at 2124.087410714286 | PnL: -0.50% | $-1.18 +2025-03-10 14:43:49,037 - INFO - OPENED SHORT at 2115.28 | Stop loss: 2125.8750892857147 | Take profit: 2083.5227660714286 +2025-03-10 14:43:49,501 - INFO - CLOSED short at 2090.0 | PnL: 1.20% | $2.13 +2025-03-10 14:43:49,844 - INFO - OPENED SHORT at 2104.68 | Stop loss: 2115.222089285714 | Take profit: 2073.0817660714283 +2025-03-10 14:43:51,385 - INFO - CLOSED short at 2100.89 | PnL: 0.18% | $0.16 +2025-03-10 14:43:51,562 - INFO - OPENED LONG at 2101.5 | Stop loss: 2090.9738107142857 | Take profit: 2133.0505339285714 +2025-03-10 14:43:52,318 - INFO - CLOSED long at 2112.28 | PnL: 0.51% | $0.82 +2025-03-10 14:43:52,319 - INFO - OPENED SHORT at 2112.28 | Stop loss: 2122.8600892857144 | Take profit: 2080.5677660714287 +2025-03-10 14:43:52,741 - INFO - CLOSED short at 2117.6 | PnL: -0.25% | $-0.70 +2025-03-10 14:43:52,765 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.8047392857143 | Take profit: 2083.4538160714287 +2025-03-10 14:43:53,039 - INFO - STOP LOSS hit for short at 2125.8047392857143 | PnL: -0.50% | $-1.19 +2025-03-10 14:43:53,115 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.9599892857145 | Take profit: 2104.1880660714287 +2025-03-10 14:43:53,492 - INFO - CLOSED short at 2126.43 | PnL: 0.46% | $0.71 +2025-03-10 14:43:53,948 - INFO - OPENED SHORT at 2120.84 | Stop loss: 2131.462889285714 | Take profit: 2088.9993660714285 +2025-03-10 14:43:54,188 - INFO - CLOSED short at 2113.04 | PnL: 0.37% | $0.53 +2025-03-10 14:43:54,388 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.95, Avg Loss=$-0.91 +2025-03-10 14:43:54,389 - INFO - Episode 8: Reward=-95.62, Balance=$100.34, Win Rate=50.0%, Trades=14, Episode PnL=$-0.16, Total PnL=$-57.20, Max Drawdown=2.1%, Pred Accuracy=97.2% +2025-03-10 14:43:55,081 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.646310714286 | Take profit: 2098.033033928571 +2025-03-10 14:43:55,277 - INFO - CLOSED long at 2068.58 | PnL: 0.08% | $-0.05 +2025-03-10 14:43:55,278 - INFO - OPENED SHORT at 2068.58 | Stop loss: 2078.941589285714 | Take profit: 2037.5232660714287 +2025-03-10 14:43:55,642 - INFO - CLOSED short at 2067.11 | PnL: 0.07% | $-0.06 +2025-03-10 14:43:56,293 - INFO - OPENED SHORT at 2065.54 | Stop loss: 2075.886389285714 | Take profit: 2034.5288660714286 +2025-03-10 14:43:56,810 - INFO - CLOSED short at 2060.3 | PnL: 0.25% | $0.30 +2025-03-10 14:43:56,811 - INFO - OPENED LONG at 2060.3 | Stop loss: 2049.979810714286 | Take profit: 2091.2325339285717 +2025-03-10 14:43:57,389 - INFO - CLOSED long at 2059.46 | PnL: -0.04% | $-0.28 +2025-03-10 14:43:57,708 - INFO - OPENED SHORT at 2062.69 | Stop loss: 2073.0221392857143 | Take profit: 2031.7216160714286 +2025-03-10 14:43:58,074 - INFO - CLOSED short at 2069.79 | PnL: -0.34% | $-0.88 +2025-03-10 14:43:58,543 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.9746607142856 | Take profit: 2098.3679839285714 +2025-03-10 14:43:58,746 - INFO - CLOSED long at 2065.5 | PnL: -0.09% | $-0.37 +2025-03-10 14:43:58,747 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.8461892857144 | Take profit: 2034.4894660714285 +2025-03-10 14:43:59,327 - INFO - STOP LOSS hit for short at 2075.8461892857144 | PnL: -0.50% | $-1.18 +2025-03-10 14:43:59,468 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.2581892857143 | Take profit: 2036.8534660714286 +2025-03-10 14:44:00,828 - INFO - STOP LOSS hit for short at 2078.2581892857143 | PnL: -0.50% | $-1.16 +2025-03-10 14:44:00,893 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.372189285714 | Take profit: 2098.7114660714283 +2025-03-10 14:44:00,974 - INFO - CLOSED short at 2137.59 | PnL: -0.32% | $-0.81 +2025-03-10 14:44:01,000 - INFO - OPENED SHORT at 2141.41 | Stop loss: 2152.1357392857144 | Take profit: 2109.2608160714285 +2025-03-10 14:44:01,107 - INFO - CLOSED short at 2126.99 | PnL: 0.67% | $1.09 +2025-03-10 14:44:01,152 - INFO - OPENED SHORT at 2128.69 | Stop loss: 2139.352139285714 | Take profit: 2096.7316160714286 +2025-03-10 14:44:01,791 - INFO - TAKE PROFIT hit for short at 2096.7316160714286 | PnL: 1.50% | $2.68 +2025-03-10 14:44:01,841 - INFO - OPENED SHORT at 2099.53 | Stop loss: 2110.0463392857146 | Take profit: 2068.009016071429 +2025-03-10 14:44:04,124 - INFO - CLOSED short at 2108.0 | PnL: -0.40% | $-0.99 +2025-03-10 14:44:04,154 - INFO - OPENED SHORT at 2112.28 | Stop loss: 2122.8600892857144 | Take profit: 2080.5677660714287 +2025-03-10 14:44:05,074 - INFO - STOP LOSS hit for short at 2122.8600892857144 | PnL: -0.50% | $-1.17 +2025-03-10 14:44:05,102 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.447639285714 | Take profit: 2095.8451160714285 +2025-03-10 14:44:06,460 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.36, Avg Loss=$-0.69 +2025-03-10 14:44:06,461 - INFO - Episode 9: Reward=-104.05, Balance=$97.13, Win Rate=23.1%, Trades=13, Episode PnL=$-2.45, Total PnL=$-60.06, Max Drawdown=4.5%, Pred Accuracy=97.4% +2025-03-10 14:44:07,479 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7706892857145 | Take profit: 2039.3159660714286 +2025-03-10 14:44:08,156 - INFO - CLOSED short at 2067.46 | PnL: 0.14% | $0.08 +2025-03-10 14:44:08,157 - INFO - OPENED LONG at 2067.46 | Stop loss: 2057.104010714286 | Take profit: 2098.4999339285714 +2025-03-10 14:44:08,430 - INFO - CLOSED long at 2067.59 | PnL: 0.01% | $-0.19 +2025-03-10 14:44:08,430 - INFO - OPENED SHORT at 2067.59 | Stop loss: 2077.9466392857144 | Take profit: 2036.5481160714287 +2025-03-10 14:44:08,595 - INFO - CLOSED short at 2070.7 | PnL: -0.15% | $-0.50 +2025-03-10 14:44:08,647 - INFO - OPENED SHORT at 2070.73 | Stop loss: 2081.102339285714 | Take profit: 2039.6410160714286 +2025-03-10 14:44:10,480 - INFO - CLOSED short at 2065.89 | PnL: 0.23% | $0.26 +2025-03-10 14:44:11,543 - INFO - OPENED SHORT at 2063.4 | Stop loss: 2073.7356892857147 | Take profit: 2032.4209660714287 +2025-03-10 14:44:12,064 - INFO - STOP LOSS hit for short at 2073.7356892857147 | PnL: -0.50% | $-1.19 +2025-03-10 14:44:12,231 - INFO - OPENED SHORT at 2071.04 | Stop loss: 2081.413889285714 | Take profit: 2039.9463660714284 +2025-03-10 14:44:12,606 - INFO - CLOSED short at 2068.79 | PnL: 0.11% | $0.02 +2025-03-10 14:44:12,907 - INFO - OPENED SHORT at 2063.97 | Stop loss: 2074.3085392857142 | Take profit: 2032.9824160714284 +2025-03-10 14:44:13,833 - INFO - STOP LOSS hit for short at 2074.3085392857142 | PnL: -0.50% | $-1.17 +2025-03-10 14:44:13,889 - INFO - OPENED SHORT at 2074.35 | Stop loss: 2084.7404392857143 | Take profit: 2043.2067160714284 +2025-03-10 14:44:14,229 - INFO - CLOSED short at 2069.97 | PnL: 0.21% | $0.21 +2025-03-10 14:44:14,229 - INFO - OPENED LONG at 2069.97 | Stop loss: 2059.6014607142856 | Take profit: 2101.0475839285714 +2025-03-10 14:44:14,258 - INFO - CLOSED long at 2067.7 | PnL: -0.11% | $-0.41 +2025-03-10 14:44:14,258 - INFO - OPENED SHORT at 2067.7 | Stop loss: 2078.057189285714 | Take profit: 2036.6564660714282 +2025-03-10 14:44:14,282 - INFO - CLOSED short at 2067.0 | PnL: 0.03% | $-0.13 +2025-03-10 14:44:14,306 - INFO - OPENED SHORT at 2067.9 | Stop loss: 2078.2581892857143 | Take profit: 2036.8534660714286 +2025-03-10 14:44:15,089 - INFO - CLOSED short at 2058.09 | PnL: 0.47% | $0.72 +2025-03-10 14:44:15,090 - INFO - OPENED LONG at 2058.09 | Stop loss: 2047.7808607142858 | Take profit: 2088.989383928572 +2025-03-10 14:44:15,181 - INFO - CLOSED long at 2053.01 | PnL: -0.25% | $-0.67 +2025-03-10 14:44:15,181 - INFO - OPENED SHORT at 2053.01 | Stop loss: 2063.2937392857143 | Take profit: 2022.1868160714287 +2025-03-10 14:44:15,305 - INFO - CLOSED short at 2056.85 | PnL: -0.19% | $-0.55 +2025-03-10 14:44:15,306 - INFO - OPENED LONG at 2056.85 | Stop loss: 2046.5470607142856 | Take profit: 2087.7307839285713 +2025-03-10 14:44:15,399 - INFO - CLOSED long at 2063.9 | PnL: 0.34% | $0.46 +2025-03-10 14:44:15,399 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.2381892857143 | Take profit: 2032.9134660714287 +2025-03-10 14:44:16,014 - INFO - STOP LOSS hit for short at 2074.2381892857143 | PnL: -0.50% | $-1.15 +2025-03-10 14:44:16,043 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.479089285714 | Take profit: 2044.9107660714285 +2025-03-10 14:44:16,124 - INFO - STOP LOSS hit for short at 2086.479089285714 | PnL: -0.50% | $-1.14 +2025-03-10 14:44:16,175 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.372189285714 | Take profit: 2098.7114660714283 +2025-03-10 14:44:16,313 - INFO - STOP LOSS hit for short at 2141.372189285714 | PnL: -0.50% | $-1.13 +2025-03-10 14:44:16,366 - INFO - OPENED SHORT at 2142.68 | Stop loss: 2153.412089285714 | Take profit: 2110.5117660714286 +2025-03-10 14:44:16,788 - INFO - TAKE PROFIT hit for short at 2110.5117660714286 | PnL: 1.50% | $2.60 +2025-03-10 14:44:16,816 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1716892857144 | Take profit: 2078.9129660714284 +2025-03-10 14:44:19,592 - INFO - CLOSED short at 2104.93 | PnL: 0.27% | $0.32 +2025-03-10 14:44:19,678 - INFO - OPENED SHORT at 2103.81 | Stop loss: 2114.347739285714 | Take profit: 2072.2248160714284 +2025-03-10 14:44:20,725 - INFO - STOP LOSS hit for short at 2114.347739285714 | PnL: -0.50% | $-1.15 +2025-03-10 14:44:20,751 - INFO - OPENED SHORT at 2113.61 | Stop loss: 2124.1967392857146 | Take profit: 2081.8778160714287 +2025-03-10 14:44:21,233 - INFO - CLOSED short at 2117.6 | PnL: -0.19% | $-0.55 +2025-03-10 14:44:21,234 - INFO - OPENED LONG at 2117.6 | Stop loss: 2106.9933107142856 | Take profit: 2149.3920339285714 +2025-03-10 14:44:21,540 - INFO - CLOSED long at 2121.2 | PnL: 0.17% | $0.13 +2025-03-10 14:44:22,762 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.6387392857146 | Take profit: 2090.151816071429 +2025-03-10 14:44:22,915 - INFO - CLOSED short at 2121.17 | PnL: 0.04% | $-0.11 +2025-03-10 14:44:23,457 - INFO - OPENED LONG at 2117.92 | Stop loss: 2107.3117107142857 | Take profit: 2149.7168339285713 +2025-03-10 14:44:23,559 - INFO - CLOSED long at 2120.56 | PnL: 0.12% | $0.05 +2025-03-10 14:44:23,559 - INFO - OPENED SHORT at 2120.56 | Stop loss: 2131.181489285714 | Take profit: 2088.7235660714286 +2025-03-10 14:44:23,582 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.49, Avg Loss=$-0.72 +2025-03-10 14:44:23,583 - INFO - Episode 10: Reward=-96.40, Balance=$94.83, Win Rate=41.7%, Trades=24, Episode PnL=$-4.42, Total PnL=$-65.23, Max Drawdown=6.5%, Pred Accuracy=97.7% +2025-03-10 14:44:23,728 - INFO - Model saved to checkpoints/trading_agent_episode_10.pt +2025-03-10 14:44:23,730 - INFO - Checkpoint saved at episode 10 +2025-03-10 14:44:23,810 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 14:44:23,811 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2506, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 14:44:24,752 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 14:44:24,753 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2506, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 14:44:25,071 - INFO - OPENED SHORT at 2072.75 | Stop loss: 2083.132439285714 | Take profit: 2041.6307160714287 +2025-03-10 14:44:27,450 - INFO - CLOSED short at 2059.3 | PnL: 0.65% | $1.09 +2025-03-10 14:44:28,698 - INFO - OPENED LONG at 2061.66 | Stop loss: 2051.3330107142856 | Take profit: 2092.6129339285712 +2025-03-10 14:44:30,392 - INFO - CLOSED long at 2068.59 | PnL: 0.34% | $0.47 +2025-03-10 14:44:30,488 - INFO - OPENED SHORT at 2071.59 | Stop loss: 2081.966639285715 | Take profit: 2040.4881160714287 +2025-03-10 14:44:32,626 - INFO - CLOSED short at 2067.49 | PnL: 0.20% | $0.20 +2025-03-10 14:44:33,052 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4389392857147 | Take profit: 2042.9112160714287 +2025-03-10 14:44:33,317 - INFO - STOP LOSS hit for short at 2084.4389392857147 | PnL: -0.50% | $-1.21 +2025-03-10 14:44:33,433 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2563892857142 | Take profit: 2107.4188660714285 +2025-03-10 14:44:34,463 - INFO - TAKE PROFIT hit for short at 2107.4188660714285 | PnL: 1.50% | $2.79 +2025-03-10 14:44:34,647 - INFO - OPENED SHORT at 2098.1 | Stop loss: 2108.6091892857144 | Take profit: 2066.6004660714284 +2025-03-10 14:44:36,666 - INFO - CLOSED short at 2106.15 | PnL: -0.38% | $-0.99 +2025-03-10 14:44:36,667 - INFO - OPENED LONG at 2106.15 | Stop loss: 2095.6005607142856 | Take profit: 2137.7702839285716 +2025-03-10 14:44:36,864 - INFO - CLOSED long at 2105.83 | PnL: -0.02% | $-0.23 +2025-03-10 14:44:36,864 - INFO - OPENED SHORT at 2105.83 | Stop loss: 2116.377839285714 | Take profit: 2074.2145160714285 +2025-03-10 14:44:36,983 - INFO - CLOSED short at 2103.52 | PnL: 0.11% | $0.02 +2025-03-10 14:44:38,733 - INFO - OPENED LONG at 2121.73 | Stop loss: 2111.102660714286 | Take profit: 2153.5839839285713 +2025-03-10 14:44:39,267 - INFO - STOP LOSS hit for long at 2111.102660714286 | PnL: -0.50% | $-1.22 +2025-03-10 14:44:39,586 - INFO - OPENED LONG at 2120.56 | Stop loss: 2109.9385107142857 | Take profit: 2152.3964339285712 +2025-03-10 14:44:39,625 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.91, Avg Loss=$-0.91 +2025-03-10 14:44:39,626 - INFO - Episode 11: Reward=-2.34, Balance=$100.92, Win Rate=55.6%, Trades=9, Episode PnL=$1.15, Total PnL=$-64.31, Max Drawdown=2.3%, Pred Accuracy=98.0% +2025-03-10 14:44:39,761 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 14:44:39,761 - INFO - New best PnL model saved: $1.15 +2025-03-10 14:44:40,638 - INFO - OPENED SHORT at 2067.46 | Stop loss: 2077.8159892857143 | Take profit: 2036.4200660714287 +2025-03-10 14:44:40,826 - INFO - CLOSED short at 2068.8 | PnL: -0.06% | $-0.33 +2025-03-10 14:44:40,869 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.7053892857143 | Take profit: 2038.2718660714286 +2025-03-10 14:44:42,595 - INFO - CLOSED short at 2064.33 | PnL: 0.24% | $0.28 +2025-03-10 14:44:42,675 - INFO - OPENED SHORT at 2065.89 | Stop loss: 2076.238139285714 | Take profit: 2034.8736160714284 +2025-03-10 14:44:43,358 - INFO - CLOSED short at 2059.8 | PnL: 0.29% | $0.39 +2025-03-10 14:44:43,386 - INFO - OPENED SHORT at 2061.66 | Stop loss: 2071.986989285714 | Take profit: 2030.7070660714282 +2025-03-10 14:44:43,811 - INFO - STOP LOSS hit for short at 2071.986989285714 | PnL: -0.50% | $-1.20 +2025-03-10 14:44:43,896 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.4037392857144 | Take profit: 2043.8568160714287 +2025-03-10 14:44:45,285 - INFO - CLOSED short at 2074.37 | PnL: 0.03% | $-0.14 +2025-03-10 14:44:45,286 - INFO - OPENED LONG at 2074.37 | Stop loss: 2063.979460714286 | Take profit: 2105.5135839285713 +2025-03-10 14:44:45,878 - INFO - CLOSED long at 2070.19 | PnL: -0.20% | $-0.59 +2025-03-10 14:44:45,880 - INFO - OPENED SHORT at 2070.19 | Stop loss: 2080.5596392857146 | Take profit: 2039.1091160714286 +2025-03-10 14:44:47,692 - INFO - STOP LOSS hit for short at 2080.5596392857146 | PnL: -0.50% | $-1.17 +2025-03-10 14:44:47,910 - INFO - OPENED SHORT at 2137.59 | Stop loss: 2148.2966392857143 | Take profit: 2105.4981160714287 +2025-03-10 14:44:48,934 - INFO - TAKE PROFIT hit for short at 2105.4981160714287 | PnL: 1.50% | $2.70 +2025-03-10 14:44:50,780 - INFO - OPENED SHORT at 2100.89 | Stop loss: 2111.4131392857144 | Take profit: 2069.3486160714283 +2025-03-10 14:44:51,411 - INFO - STOP LOSS hit for short at 2111.4131392857144 | PnL: -0.50% | $-1.19 +2025-03-10 14:44:51,949 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.412739285714 | Take profit: 2085.0298160714283 +2025-03-10 14:44:52,031 - INFO - CLOSED short at 2117.6 | PnL: -0.04% | $-0.27 +2025-03-10 14:44:53,547 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.12, Avg Loss=$-0.70 +2025-03-10 14:44:53,548 - INFO - Episode 12: Reward=-6.26, Balance=$98.49, Win Rate=30.0%, Trades=10, Episode PnL=$-0.92, Total PnL=$-65.83, Max Drawdown=3.1%, Pred Accuracy=98.5% +2025-03-10 14:44:54,184 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7706892857145 | Take profit: 2039.3159660714286 +2025-03-10 14:44:54,236 - INFO - CLOSED short at 2071.11 | PnL: -0.03% | $-0.27 +2025-03-10 14:44:54,236 - INFO - OPENED LONG at 2071.11 | Stop loss: 2060.735760714286 | Take profit: 2102.2046839285713 +2025-03-10 14:44:54,507 - INFO - CLOSED long at 2063.61 | PnL: -0.36% | $-0.91 +2025-03-10 14:44:54,507 - INFO - OPENED SHORT at 2063.61 | Stop loss: 2073.9467392857146 | Take profit: 2032.6278160714287 +2025-03-10 14:44:54,534 - INFO - CLOSED short at 2065.26 | PnL: -0.08% | $-0.35 +2025-03-10 14:44:54,535 - INFO - OPENED LONG at 2065.26 | Stop loss: 2054.915010714286 | Take profit: 2096.2669339285717 +2025-03-10 14:44:56,941 - INFO - STOP LOSS hit for long at 2054.915010714286 | PnL: -0.50% | $-1.17 +2025-03-10 14:44:58,642 - INFO - OPENED LONG at 2070.2 | Stop loss: 2059.8303107142856 | Take profit: 2101.281033928571 +2025-03-10 14:44:59,702 - INFO - CLOSED long at 2065.7 | PnL: -0.22% | $-0.61 +2025-03-10 14:44:59,702 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.047189285714 | Take profit: 2034.6864660714284 +2025-03-10 14:44:59,728 - INFO - CLOSED short at 2065.8 | PnL: -0.00% | $-0.20 +2025-03-10 14:44:59,729 - INFO - OPENED LONG at 2065.8 | Stop loss: 2055.452310714286 | Take profit: 2096.8150339285717 +2025-03-10 14:45:00,285 - INFO - STOP LOSS hit for long at 2055.452310714286 | PnL: -0.50% | $-1.15 +2025-03-10 14:45:01,376 - INFO - OPENED LONG at 2085.56 | Stop loss: 2075.113510714286 | Take profit: 2116.8714339285716 +2025-03-10 14:45:01,507 - INFO - TAKE PROFIT hit for long at 2116.8714339285716 | PnL: 1.50% | $2.65 +2025-03-10 14:45:04,051 - INFO - OPENED LONG at 2089.79 | Stop loss: 2079.3223607142854 | Take profit: 2121.1648839285717 +2025-03-10 14:45:04,780 - INFO - CLOSED long at 2103.52 | PnL: 0.66% | $1.08 +2025-03-10 14:45:04,780 - INFO - OPENED SHORT at 2103.52 | Stop loss: 2114.0562892857142 | Take profit: 2071.9391660714286 +2025-03-10 14:45:04,973 - INFO - CLOSED short at 2102.7 | PnL: 0.04% | $-0.12 +2025-03-10 14:45:04,974 - INFO - OPENED LONG at 2102.7 | Stop loss: 2092.167810714285 | Take profit: 2134.2685339285713 +2025-03-10 14:45:05,930 - INFO - CLOSED long at 2118.88 | PnL: 0.77% | $1.31 +2025-03-10 14:45:06,552 - INFO - OPENED LONG at 2131.23 | Stop loss: 2120.5551607142856 | Take profit: 2163.2264839285713 +2025-03-10 14:45:06,700 - INFO - STOP LOSS hit for long at 2120.5551607142856 | PnL: -0.50% | $-1.19 +2025-03-10 14:45:07,673 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.68, Avg Loss=$-0.66 +2025-03-10 14:45:07,674 - INFO - Episode 13: Reward=-9.92, Balance=$99.06, Win Rate=25.0%, Trades=12, Episode PnL=$-0.49, Total PnL=$-66.76, Max Drawdown=4.7%, Pred Accuracy=99.0% +2025-03-10 14:45:10,773 - INFO - OPENED LONG at 2059.02 | Stop loss: 2048.7062107142856 | Take profit: 2089.9333339285713 +2025-03-10 14:45:11,855 - INFO - CLOSED long at 2072.6 | PnL: 0.66% | $1.11 +2025-03-10 14:45:13,173 - INFO - OPENED LONG at 2075.07 | Stop loss: 2064.675960714286 | Take profit: 2106.2240839285714 +2025-03-10 14:45:13,355 - INFO - CLOSED long at 2075.29 | PnL: 0.01% | $-0.18 +2025-03-10 14:45:13,355 - INFO - OPENED SHORT at 2075.29 | Stop loss: 2085.6851392857143 | Take profit: 2044.1326160714284 +2025-03-10 14:45:14,540 - INFO - CLOSED short at 2049.21 | PnL: 1.26% | $2.31 +2025-03-10 14:45:14,541 - INFO - OPENED LONG at 2049.21 | Stop loss: 2038.9452607142857 | Take profit: 2079.9761839285716 +2025-03-10 14:45:15,436 - INFO - TAKE PROFIT hit for long at 2079.9761839285716 | PnL: 1.50% | $2.87 +2025-03-10 14:45:16,771 - INFO - OPENED SHORT at 2102.29 | Stop loss: 2112.8201392857145 | Take profit: 2070.7276160714287 +2025-03-10 14:45:17,319 - INFO - CLOSED short at 2094.72 | PnL: 0.36% | $0.55 +2025-03-10 14:45:17,320 - INFO - OPENED LONG at 2094.72 | Stop loss: 2084.2277107142854 | Take profit: 2126.168833928571 +2025-03-10 14:45:17,399 - INFO - STOP LOSS hit for long at 2084.2277107142854 | PnL: -0.50% | $-1.27 +2025-03-10 14:45:17,654 - INFO - OPENED SHORT at 2081.25 | Stop loss: 2091.6749392857146 | Take profit: 2050.0032160714286 +2025-03-10 14:45:18,300 - INFO - STOP LOSS hit for short at 2091.6749392857146 | PnL: -0.50% | $-1.26 +2025-03-10 14:45:19,250 - INFO - OPENED SHORT at 2112.28 | Stop loss: 2122.8600892857144 | Take profit: 2080.5677660714287 +2025-03-10 14:45:20,069 - INFO - STOP LOSS hit for short at 2122.8600892857144 | PnL: -0.50% | $-1.24 +2025-03-10 14:45:21,537 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.71, Avg Loss=$-0.99 +2025-03-10 14:45:21,538 - INFO - Episode 14: Reward=0.19, Balance=$102.89, Win Rate=50.0%, Trades=8, Episode PnL=$3.07, Total PnL=$-63.87, Max Drawdown=3.0%, Pred Accuracy=98.8% +2025-03-10 14:45:21,664 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 14:45:21,665 - INFO - New best PnL model saved: $3.07 +2025-03-10 14:45:23,008 - INFO - OPENED SHORT at 2073.9 | Stop loss: 2084.2881892857145 | Take profit: 2042.7634660714286 +2025-03-10 14:45:24,216 - INFO - CLOSED short at 2065.83 | PnL: 0.39% | $0.57 +2025-03-10 14:45:25,394 - INFO - OPENED LONG at 2063.0 | Stop loss: 2052.666310714286 | Take profit: 2093.9730339285716 +2025-03-10 14:45:27,501 - INFO - CLOSED long at 2071.59 | PnL: 0.42% | $0.63 +2025-03-10 14:45:30,177 - INFO - OPENED SHORT at 2071.89 | Stop loss: 2082.268139285714 | Take profit: 2040.7836160714285 +2025-03-10 14:45:30,286 - INFO - STOP LOSS hit for short at 2082.268139285714 | PnL: -0.50% | $-1.21 +2025-03-10 14:45:30,329 - INFO - OPENED LONG at 2103.02 | Stop loss: 2092.486210714286 | Take profit: 2134.593333928571 +2025-03-10 14:45:30,390 - INFO - TAKE PROFIT hit for long at 2134.593333928571 | PnL: 1.50% | $2.78 +2025-03-10 14:45:31,763 - INFO - OPENED LONG at 2104.83 | Stop loss: 2094.2871607142856 | Take profit: 2136.4304839285714 +2025-03-10 14:45:32,003 - INFO - STOP LOSS hit for long at 2094.2871607142856 | PnL: -0.50% | $-1.22 +2025-03-10 14:45:32,813 - INFO - OPENED SHORT at 2087.47 | Stop loss: 2097.926039285714 | Take profit: 2056.1299160714284 +2025-03-10 14:45:33,002 - INFO - CLOSED short at 2091.95 | PnL: -0.21% | $-0.63 +2025-03-10 14:45:36,348 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.33, Avg Loss=$-1.02 +2025-03-10 14:45:36,349 - INFO - Episode 15: Reward=-3.64, Balance=$100.92, Win Rate=50.0%, Trades=6, Episode PnL=$0.92, Total PnL=$-62.95, Max Drawdown=1.8%, Pred Accuracy=98.6% +2025-03-10 14:45:36,681 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7706892857145 | Take profit: 2039.3159660714286 +2025-03-10 14:45:36,994 - INFO - CLOSED short at 2070.4 | PnL: 0.00% | $-0.20 +2025-03-10 14:45:36,994 - INFO - OPENED LONG at 2070.4 | Stop loss: 2060.0293107142857 | Take profit: 2101.4840339285715 +2025-03-10 14:45:37,608 - INFO - CLOSED long at 2070.7 | PnL: 0.01% | $-0.17 +2025-03-10 14:45:37,609 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.072189285714 | Take profit: 2039.6114660714284 +2025-03-10 14:45:37,801 - INFO - CLOSED short at 2067.11 | PnL: 0.17% | $0.14 +2025-03-10 14:45:40,408 - INFO - OPENED LONG at 2068.39 | Stop loss: 2058.0293607142858 | Take profit: 2099.4438839285717 +2025-03-10 14:45:42,303 - INFO - CLOSED long at 2063.01 | PnL: -0.26% | $-0.71 +2025-03-10 14:45:42,303 - INFO - OPENED SHORT at 2063.01 | Stop loss: 2073.3437392857145 | Take profit: 2032.0368160714288 +2025-03-10 14:45:42,564 - INFO - CLOSED short at 2049.5 | PnL: 0.65% | $1.09 +2025-03-10 14:45:44,992 - INFO - OPENED SHORT at 2102.29 | Stop loss: 2112.8201392857145 | Take profit: 2070.7276160714287 +2025-03-10 14:45:45,306 - INFO - CLOSED short at 2098.39 | PnL: 0.19% | $0.17 +2025-03-10 14:45:45,307 - INFO - OPENED LONG at 2098.39 | Stop loss: 2087.8793607142857 | Take profit: 2129.893883928571 +2025-03-10 14:45:45,508 - INFO - STOP LOSS hit for long at 2087.8793607142857 | PnL: -0.50% | $-1.20 +2025-03-10 14:45:46,960 - INFO - OPENED SHORT at 2106.28 | Stop loss: 2116.8300892857146 | Take profit: 2074.657766071429 +2025-03-10 14:45:47,355 - INFO - CLOSED short at 2111.19 | PnL: -0.23% | $-0.65 +2025-03-10 14:45:47,355 - INFO - OPENED LONG at 2111.19 | Stop loss: 2100.6153607142855 | Take profit: 2142.8858839285717 +2025-03-10 14:45:49,256 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.47, Avg Loss=$-0.59 +2025-03-10 14:45:49,257 - INFO - Episode 16: Reward=-6.35, Balance=$98.47, Win Rate=37.5%, Trades=8, Episode PnL=$-0.64, Total PnL=$-64.48, Max Drawdown=1.0%, Pred Accuracy=98.5% +2025-03-10 14:45:49,735 - INFO - OPENED LONG at 2074.29 | Stop loss: 2063.8998607142858 | Take profit: 2105.4323839285717 +2025-03-10 14:45:50,069 - INFO - STOP LOSS hit for long at 2063.8998607142858 | PnL: -0.50% | $-1.19 +2025-03-10 14:45:51,056 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.6165107142856 | Take profit: 2095.9624339285715 +2025-03-10 14:45:51,288 - INFO - CLOSED long at 2063.5 | PnL: -0.07% | $-0.33 +2025-03-10 14:45:52,031 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.2031392857143 | Take profit: 2027.9786160714284 +2025-03-10 14:45:52,764 - INFO - STOP LOSS hit for short at 2069.2031392857143 | PnL: -0.50% | $-1.17 +2025-03-10 14:45:55,532 - INFO - OPENED LONG at 2062.55 | Stop loss: 2052.218560714286 | Take profit: 2093.5162839285717 +2025-03-10 14:45:56,053 - INFO - CLOSED long at 2074.9 | PnL: 0.60% | $0.96 +2025-03-10 14:45:56,092 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2088.0167392857143 | Take profit: 2046.4178160714287 +2025-03-10 14:45:56,139 - INFO - STOP LOSS hit for short at 2088.0167392857143 | PnL: -0.50% | $-1.17 +2025-03-10 14:45:56,597 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3116607142856 | Take profit: 2151.756983928571 +2025-03-10 14:45:56,730 - INFO - CLOSED long at 2119.07 | PnL: -0.04% | $-0.27 +2025-03-10 14:45:56,962 - INFO - OPENED LONG at 2116.48 | Stop loss: 2105.8789107142857 | Take profit: 2148.255233928571 +2025-03-10 14:45:57,151 - INFO - STOP LOSS hit for long at 2105.8789107142857 | PnL: -0.50% | $-1.15 +2025-03-10 14:45:58,135 - INFO - OPENED SHORT at 2085.83 | Stop loss: 2096.2778392857144 | Take profit: 2054.5145160714287 +2025-03-10 14:45:58,572 - INFO - STOP LOSS hit for short at 2096.2778392857144 | PnL: -0.50% | $-1.14 +2025-03-10 14:45:59,160 - INFO - OPENED SHORT at 2102.0 | Stop loss: 2112.5286892857143 | Take profit: 2070.4419660714284 +2025-03-10 14:45:59,376 - INFO - STOP LOSS hit for short at 2112.5286892857143 | PnL: -0.50% | $-1.13 +2025-03-10 14:46:01,333 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.96, Avg Loss=$-0.94 +2025-03-10 14:46:01,334 - INFO - Episode 17: Reward=-5.70, Balance=$93.40, Win Rate=11.1%, Trades=9, Episode PnL=$-6.60, Total PnL=$-71.08, Max Drawdown=6.6%, Pred Accuracy=98.6% +2025-03-10 14:46:01,879 - INFO - OPENED SHORT at 2071.92 | Stop loss: 2082.2982892857144 | Take profit: 2040.8131660714284 +2025-03-10 14:46:04,153 - INFO - CLOSED short at 2059.16 | PnL: 0.62% | $1.02 +2025-03-10 14:46:04,797 - INFO - OPENED LONG at 2066.34 | Stop loss: 2055.989610714286 | Take profit: 2097.3631339285716 +2025-03-10 14:46:04,933 - INFO - CLOSED long at 2065.69 | PnL: -0.03% | $-0.26 +2025-03-10 14:46:04,934 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.037139285714 | Take profit: 2034.6766160714287 +2025-03-10 14:46:05,033 - INFO - STOP LOSS hit for short at 2076.037139285714 | PnL: -0.50% | $-1.20 +2025-03-10 14:46:05,817 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.152689285714 | Take profit: 2035.7699660714288 +2025-03-10 14:46:05,859 - INFO - CLOSED short at 2068.59 | PnL: -0.09% | $-0.37 +2025-03-10 14:46:06,427 - INFO - OPENED LONG at 2075.29 | Stop loss: 2064.8948607142856 | Take profit: 2106.447383928571 +2025-03-10 14:46:06,780 - INFO - CLOSED long at 2069.0 | PnL: -0.30% | $-0.79 +2025-03-10 14:46:08,216 - INFO - OPENED SHORT at 2071.8 | Stop loss: 2082.177689285714 | Take profit: 2040.6949660714288 +2025-03-10 14:46:08,302 - INFO - STOP LOSS hit for short at 2082.177689285714 | PnL: -0.50% | $-1.17 +2025-03-10 14:46:11,975 - INFO - OPENED LONG at 2118.72 | Stop loss: 2108.1077107142855 | Take profit: 2150.528833928571 +2025-03-10 14:46:12,518 - INFO - CLOSED long at 2132.83 | PnL: 0.67% | $1.09 +2025-03-10 14:46:12,518 - INFO - OPENED SHORT at 2132.83 | Stop loss: 2143.512839285714 | Take profit: 2100.8095160714283 +2025-03-10 14:46:12,535 - INFO - CLOSED short at 2127.79 | PnL: 0.24% | $0.27 +2025-03-10 14:46:12,535 - INFO - OPENED LONG at 2127.79 | Stop loss: 2117.1323607142854 | Take profit: 2159.7348839285714 +2025-03-10 14:46:12,921 - INFO - STOP LOSS hit for long at 2117.1323607142854 | PnL: -0.50% | $-1.17 +2025-03-10 14:46:13,641 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.79, Avg Loss=$-0.83 +2025-03-10 14:46:13,641 - INFO - Episode 18: Reward=-4.41, Balance=$97.41, Win Rate=33.3%, Trades=9, Episode PnL=$-3.42, Total PnL=$-73.67, Max Drawdown=3.8%, Pred Accuracy=98.8% +2025-03-10 14:46:14,591 - INFO - OPENED LONG at 2067.86 | Stop loss: 2057.502010714286 | Take profit: 2098.9059339285714 +2025-03-10 14:46:14,724 - INFO - CLOSED long at 2071.59 | PnL: 0.18% | $0.16 +2025-03-10 14:46:14,765 - INFO - OPENED SHORT at 2070.4 | Stop loss: 2080.7706892857145 | Take profit: 2039.3159660714286 +2025-03-10 14:46:14,844 - INFO - CLOSED short at 2067.84 | PnL: 0.12% | $0.05 +2025-03-10 14:46:16,204 - INFO - OPENED SHORT at 2062.6 | Stop loss: 2072.931689285714 | Take profit: 2031.6329660714287 +2025-03-10 14:46:16,535 - INFO - CLOSED short at 2055.6 | PnL: 0.34% | $0.48 +2025-03-10 14:46:16,535 - INFO - OPENED LONG at 2055.6 | Stop loss: 2045.3033107142855 | Take profit: 2086.4620339285716 +2025-03-10 14:46:18,239 - INFO - CLOSED long at 2071.99 | PnL: 0.80% | $1.39 +2025-03-10 14:46:19,132 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.4391392857146 | Take profit: 2035.0706160714287 +2025-03-10 14:46:19,877 - INFO - CLOSED short at 2065.12 | PnL: 0.05% | $-0.11 +2025-03-10 14:46:19,877 - INFO - OPENED LONG at 2065.12 | Stop loss: 2054.7757107142857 | Take profit: 2096.124833928571 +2025-03-10 14:46:20,514 - INFO - TAKE PROFIT hit for long at 2096.124833928571 | PnL: 1.50% | $2.83 +2025-03-10 14:46:21,470 - INFO - OPENED LONG at 2108.06 | Stop loss: 2097.5010107142857 | Take profit: 2139.7089339285712 +2025-03-10 14:46:21,551 - INFO - STOP LOSS hit for long at 2097.5010107142857 | PnL: -0.50% | $-1.25 +2025-03-10 14:46:21,676 - INFO - OPENED SHORT at 2098.9 | Stop loss: 2109.4131892857145 | Take profit: 2067.388466071429 +2025-03-10 14:46:21,933 - INFO - CLOSED short at 2100.02 | PnL: -0.05% | $-0.31 +2025-03-10 14:46:22,933 - INFO - OPENED LONG at 2099.99 | Stop loss: 2089.4713607142853 | Take profit: 2131.5178839285713 +2025-03-10 14:46:23,725 - INFO - CLOSED long at 2113.0 | PnL: 0.62% | $1.06 +2025-03-10 14:46:24,310 - INFO - OPENED LONG at 2118.88 | Stop loss: 2108.266910714286 | Take profit: 2150.691233928572 +2025-03-10 14:46:24,462 - INFO - CLOSED long at 2135.86 | PnL: 0.80% | $1.45 +2025-03-10 14:46:24,462 - INFO - OPENED SHORT at 2135.86 | Stop loss: 2146.5579892857145 | Take profit: 2103.794066071429 +2025-03-10 14:46:24,872 - INFO - CLOSED short at 2120.0 | PnL: 0.74% | $1.35 +2025-03-10 14:46:24,873 - INFO - OPENED LONG at 2120.0 | Stop loss: 2109.381310714286 | Take profit: 2151.8280339285716 +2025-03-10 14:46:25,402 - INFO - STOP LOSS hit for long at 2109.381310714286 | PnL: -0.50% | $-1.28 +2025-03-10 14:46:25,652 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.10, Avg Loss=$-0.74 +2025-03-10 14:46:25,652 - INFO - Episode 19: Reward=4.00, Balance=$105.82, Win Rate=66.7%, Trades=12, Episode PnL=$4.37, Total PnL=$-67.85, Max Drawdown=1.5%, Pred Accuracy=98.8% +2025-03-10 14:46:25,788 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 14:46:25,789 - INFO - New best PnL model saved: $4.37 +2025-03-10 14:46:25,917 - INFO - Model saved to models/trading_agent_best_winrate.pt +2025-03-10 14:46:25,917 - INFO - New best win rate model saved: 66.7% +2025-03-10 14:46:29,068 - INFO - OPENED SHORT at 2060.91 | Stop loss: 2071.2332392857143 | Take profit: 2029.9683160714283 +2025-03-10 14:46:30,285 - INFO - STOP LOSS hit for short at 2071.2332392857143 | PnL: -0.50% | $-1.19 +2025-03-10 14:46:31,828 - INFO - OPENED LONG at 2072.09 | Stop loss: 2061.710860714286 | Take profit: 2103.1993839285715 +2025-03-10 14:46:32,551 - INFO - STOP LOSS hit for long at 2061.710860714286 | PnL: -0.50% | $-1.18 +2025-03-10 14:46:32,611 - INFO - OPENED LONG at 2058.09 | Stop loss: 2047.7808607142858 | Take profit: 2088.989383928572 +2025-03-10 14:46:33,639 - INFO - TAKE PROFIT hit for long at 2088.989383928572 | PnL: 1.50% | $2.71 +2025-03-10 14:46:35,788 - INFO - OPENED SHORT at 2088.32 | Stop loss: 2098.7802892857144 | Take profit: 2056.9671660714284 +2025-03-10 14:46:35,896 - INFO - CLOSED short at 2087.78 | PnL: 0.03% | $-0.15 +2025-03-10 14:46:38,943 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$2.71, Avg Loss=$-0.84 +2025-03-10 14:46:38,943 - INFO - Episode 20: Reward=-5.87, Balance=$100.20, Win Rate=25.0%, Trades=4, Episode PnL=$0.20, Total PnL=$-67.65, Max Drawdown=2.4%, Pred Accuracy=98.9% +2025-03-10 14:46:39,078 - INFO - Model saved to checkpoints/trading_agent_episode_20.pt +2025-03-10 14:46:39,079 - INFO - Checkpoint saved at episode 20 +2025-03-10 14:46:39,079 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:46:39,145 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 14:46:39,145 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2506, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 14:46:39,897 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 14:46:39,897 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2506, in visualize_training_results + from mplfinance.original_flavor import candlestick_ohlc +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 14:46:40,121 - INFO - OPENED SHORT at 2071.4 | Stop loss: 2081.7756892857146 | Take profit: 2040.3009660714288 +2025-03-10 14:46:41,821 - INFO - CLOSED short at 2064.5 | PnL: 0.33% | $0.46 +2025-03-10 14:46:47,453 - INFO - OPENED SHORT at 2112.99 | Stop loss: 2123.5736392857143 | Take profit: 2081.2671160714285 +2025-03-10 14:46:47,875 - INFO - CLOSED short at 2100.69 | PnL: 0.58% | $0.96 +2025-03-10 14:46:47,876 - INFO - OPENED LONG at 2100.69 | Stop loss: 2090.167860714286 | Take profit: 2132.2283839285715 +2025-03-10 14:46:48,303 - INFO - STOP LOSS hit for long at 2090.167860714286 | PnL: -0.50% | $-1.21 +2025-03-10 14:46:48,428 - INFO - OPENED SHORT at 2085.3 | Stop loss: 2095.745189285715 | Take profit: 2053.9924660714287 +2025-03-10 14:46:49,116 - INFO - STOP LOSS hit for short at 2095.745189285715 | PnL: -0.50% | $-1.19 +2025-03-10 14:46:49,276 - INFO - OPENED SHORT at 2098.49 | Stop loss: 2109.001139285714 | Take profit: 2066.9846160714283 +2025-03-10 14:46:49,902 - INFO - STOP LOSS hit for short at 2109.001139285714 | PnL: -0.50% | $-1.18 +2025-03-10 14:46:50,270 - INFO - OPENED SHORT at 2112.61 | Stop loss: 2123.1917392857144 | Take profit: 2080.8928160714286 +2025-03-10 14:46:50,666 - INFO - STOP LOSS hit for short at 2123.1917392857144 | PnL: -0.50% | $-1.17 +2025-03-10 14:46:50,940 - INFO - OPENED SHORT at 2123.23 | Stop loss: 2133.864839285714 | Take profit: 2091.3535160714287 +2025-03-10 14:46:51,003 - INFO - STOP LOSS hit for short at 2133.864839285714 | PnL: -0.50% | $-1.15 +2025-03-10 14:46:51,138 - INFO - OPENED LONG at 2121.73 | Stop loss: 2111.102660714286 | Take profit: 2153.5839839285713 +2025-03-10 14:46:51,249 - INFO - CLOSED long at 2118.8 | PnL: -0.14% | $-0.45 +2025-03-10 14:46:51,249 - INFO - OPENED SHORT at 2118.8 | Stop loss: 2129.4126892857144 | Take profit: 2086.9899660714286 +2025-03-10 14:46:51,289 - INFO - CLOSED short at 2116.53 | PnL: 0.11% | $0.01 +2025-03-10 14:46:51,911 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.48, Avg Loss=$-1.06 +2025-03-10 14:46:51,912 - INFO - Episode 21: Reward=-1.29, Balance=$95.09, Win Rate=33.3%, Trades=9, Episode PnL=$-4.46, Total PnL=$-72.56, Max Drawdown=5.4%, Pred Accuracy=98.9% +2025-03-10 14:46:51,913 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:46:52,789 - INFO - OPENED LONG at 2067.89 | Stop loss: 2057.5318607142854 | Take profit: 2098.9363839285716 +2025-03-10 14:46:52,887 - INFO - CLOSED long at 2069.34 | PnL: 0.07% | $-0.06 +2025-03-10 14:46:53,981 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.273310714286 | Take profit: 2092.5520339285713 +2025-03-10 14:46:56,231 - INFO - CLOSED long at 2065.29 | PnL: 0.18% | $0.16 +2025-03-10 14:47:00,384 - INFO - OPENED LONG at 2091.1 | Stop loss: 2080.6258107142858 | Take profit: 2122.4945339285714 +2025-03-10 14:47:00,640 - INFO - STOP LOSS hit for long at 2080.6258107142858 | PnL: -0.50% | $-1.19 +2025-03-10 14:47:01,520 - INFO - OPENED LONG at 2104.93 | Stop loss: 2094.3866607142854 | Take profit: 2136.531983928571 +2025-03-10 14:47:02,780 - INFO - CLOSED long at 2129.3 | PnL: 1.16% | $2.07 +2025-03-10 14:47:02,781 - INFO - OPENED SHORT at 2129.3 | Stop loss: 2139.9651892857146 | Take profit: 2097.332466071429 +2025-03-10 14:47:03,250 - INFO - CLOSED short at 2120.0 | PnL: 0.44% | $0.67 +2025-03-10 14:47:03,250 - INFO - OPENED LONG at 2120.0 | Stop loss: 2109.381310714286 | Take profit: 2151.8280339285716 +2025-03-10 14:47:03,765 - INFO - STOP LOSS hit for long at 2109.381310714286 | PnL: -0.50% | $-1.21 +2025-03-10 14:47:03,939 - INFO - OPENED LONG at 2114.71 | Stop loss: 2104.117760714286 | Take profit: 2146.458683928571 +2025-03-10 14:47:04,024 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.97, Avg Loss=$-0.82 +2025-03-10 14:47:04,025 - INFO - Episode 22: Reward=-1.46, Balance=$100.44, Win Rate=50.0%, Trades=6, Episode PnL=$-1.63, Total PnL=$-72.12, Max Drawdown=1.2%, Pred Accuracy=99.0% +2025-03-10 14:47:04,025 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:47:06,525 - INFO - OPENED SHORT at 2064.33 | Stop loss: 2074.6703392857144 | Take profit: 2033.3370160714285 +2025-03-10 14:47:06,744 - INFO - CLOSED short at 2061.89 | PnL: 0.12% | $0.04 +2025-03-10 14:47:06,744 - INFO - OPENED LONG at 2061.89 | Stop loss: 2051.5618607142856 | Take profit: 2092.8463839285714 +2025-03-10 14:47:07,170 - INFO - CLOSED long at 2058.15 | PnL: -0.18% | $-0.56 +2025-03-10 14:47:07,272 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.273310714286 | Take profit: 2092.5520339285713 +2025-03-10 14:47:08,250 - INFO - CLOSED long at 2063.95 | PnL: 0.11% | $0.03 +2025-03-10 14:47:10,758 - INFO - OPENED LONG at 2073.49 | Stop loss: 2063.1038607142855 | Take profit: 2104.6203839285713 +2025-03-10 14:47:11,047 - INFO - TAKE PROFIT hit for long at 2104.6203839285713 | PnL: 1.50% | $2.76 +2025-03-10 14:47:11,458 - INFO - OPENED SHORT at 2119.93 | Stop loss: 2130.548339285714 | Take profit: 2088.103016071428 +2025-03-10 14:47:11,713 - INFO - CLOSED short at 2112.95 | PnL: 0.33% | $0.46 +2025-03-10 14:47:13,540 - INFO - OPENED LONG at 2089.79 | Stop loss: 2079.3223607142854 | Take profit: 2121.1648839285717 +2025-03-10 14:47:13,745 - INFO - CLOSED long at 2099.99 | PnL: 0.49% | $0.79 +2025-03-10 14:47:14,458 - INFO - OPENED SHORT at 2107.25 | Stop loss: 2117.804939285714 | Take profit: 2075.6132160714287 +2025-03-10 14:47:14,911 - INFO - STOP LOSS hit for short at 2117.804939285714 | PnL: -0.50% | $-1.23 +2025-03-10 14:47:15,572 - INFO - OPENED SHORT at 2123.23 | Stop loss: 2133.864839285714 | Take profit: 2091.3535160714287 +2025-03-10 14:47:15,634 - INFO - STOP LOSS hit for short at 2133.864839285714 | PnL: -0.50% | $-1.22 +2025-03-10 14:47:16,080 - INFO - OPENED LONG at 2121.17 | Stop loss: 2110.545460714286 | Take profit: 2153.0155839285717 +2025-03-10 14:47:16,276 - INFO - STOP LOSS hit for long at 2110.545460714286 | PnL: -0.50% | $-1.20 +2025-03-10 14:47:16,350 - INFO - OPENED LONG at 2113.04 | Stop loss: 2102.456110714286 | Take profit: 2144.7636339285714 +2025-03-10 14:47:16,392 - INFO - CLOSED long at 2107.42 | PnL: -0.27% | $-0.72 +2025-03-10 14:47:16,563 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.82, Avg Loss=$-0.99 +2025-03-10 14:47:16,564 - INFO - Episode 23: Reward=-3.11, Balance=$99.14, Win Rate=50.0%, Trades=10, Episode PnL=$-0.86, Total PnL=$-72.98, Max Drawdown=4.2%, Pred Accuracy=99.1% +2025-03-10 14:47:16,564 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:47:17,107 - INFO - OPENED LONG at 2071.11 | Stop loss: 2060.735760714286 | Take profit: 2102.2046839285713 +2025-03-10 14:47:17,171 - INFO - CLOSED long at 2069.35 | PnL: -0.08% | $-0.37 +2025-03-10 14:47:17,753 - INFO - OPENED LONG at 2067.84 | Stop loss: 2057.4821107142857 | Take profit: 2098.8856339285717 +2025-03-10 14:47:17,916 - INFO - CLOSED long at 2064.47 | PnL: -0.16% | $-0.52 +2025-03-10 14:47:17,916 - INFO - OPENED SHORT at 2064.47 | Stop loss: 2074.8110392857143 | Take profit: 2033.4749160714284 +2025-03-10 14:47:20,228 - INFO - STOP LOSS hit for short at 2074.8110392857143 | PnL: -0.50% | $-1.18 +2025-03-10 14:47:21,451 - INFO - OPENED SHORT at 2074.37 | Stop loss: 2084.760539285714 | Take profit: 2043.2264160714283 +2025-03-10 14:47:21,497 - INFO - CLOSED short at 2074.35 | PnL: 0.00% | $-0.19 +2025-03-10 14:47:22,164 - INFO - OPENED LONG at 2065.07 | Stop loss: 2054.725960714286 | Take profit: 2096.0740839285713 +2025-03-10 14:47:22,655 - INFO - STOP LOSS hit for long at 2054.725960714286 | PnL: -0.50% | $-1.16 +2025-03-10 14:47:23,982 - INFO - OPENED SHORT at 2140.01 | Stop loss: 2150.7287392857143 | Take profit: 2107.8818160714286 +2025-03-10 14:47:24,334 - INFO - TAKE PROFIT hit for short at 2107.8818160714286 | PnL: 1.50% | $2.68 +2025-03-10 14:47:25,308 - INFO - OPENED SHORT at 2093.46 | Stop loss: 2103.945989285714 | Take profit: 2062.0300660714283 +2025-03-10 14:47:26,428 - INFO - CLOSED short at 2100.89 | PnL: -0.35% | $-0.90 +2025-03-10 14:47:28,407 - INFO - OPENED LONG at 2118.1 | Stop loss: 2107.4908107142855 | Take profit: 2149.899533928571 +2025-03-10 14:47:28,689 - INFO - CLOSED long at 2115.45 | PnL: -0.13% | $-0.44 +2025-03-10 14:47:28,690 - INFO - OPENED SHORT at 2115.45 | Stop loss: 2126.045939285714 | Take profit: 2083.6902160714285 +2025-03-10 14:47:28,766 - INFO - CLOSED short at 2110.66 | PnL: 0.23% | $0.25 +2025-03-10 14:47:29,097 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.46, Avg Loss=$-0.68 +2025-03-10 14:47:29,099 - INFO - Episode 24: Reward=-10.90, Balance=$98.17, Win Rate=22.2%, Trades=9, Episode PnL=$-0.87, Total PnL=$-74.81, Max Drawdown=3.4%, Pred Accuracy=99.2% +2025-03-10 14:47:29,099 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:47:30,505 - INFO - OPENED SHORT at 2072.15 | Stop loss: 2082.5294392857145 | Take profit: 2041.0397160714285 +2025-03-10 14:47:31,312 - INFO - CLOSED short at 2067.84 | PnL: 0.21% | $0.21 +2025-03-10 14:47:31,363 - INFO - OPENED SHORT at 2067.86 | Stop loss: 2078.217989285715 | Take profit: 2036.8140660714287 +2025-03-10 14:47:31,630 - INFO - CLOSED short at 2068.18 | PnL: -0.02% | $-0.23 +2025-03-10 14:47:35,009 - INFO - OPENED SHORT at 2069.87 | Stop loss: 2080.238039285714 | Take profit: 2038.7939160714284 +2025-03-10 14:47:35,096 - INFO - CLOSED short at 2065.7 | PnL: 0.20% | $0.20 +2025-03-10 14:47:35,887 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3278107142855 | Take profit: 2101.7885339285713 +2025-03-10 14:47:35,976 - INFO - CLOSED long at 2070.35 | PnL: -0.02% | $-0.23 +2025-03-10 14:47:39,351 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.372189285714 | Take profit: 2098.7114660714283 +2025-03-10 14:47:39,404 - INFO - CLOSED short at 2131.78 | PnL: -0.05% | $-0.30 +2025-03-10 14:47:39,404 - INFO - OPENED LONG at 2131.78 | Stop loss: 2121.1024107142857 | Take profit: 2163.7847339285718 +2025-03-10 14:47:39,791 - INFO - STOP LOSS hit for long at 2121.1024107142857 | PnL: -0.50% | $-1.19 +2025-03-10 14:47:39,966 - INFO - OPENED SHORT at 2118.52 | Stop loss: 2129.1312892857145 | Take profit: 2086.7141660714287 +2025-03-10 14:47:40,402 - INFO - CLOSED short at 2120.81 | PnL: -0.11% | $-0.41 +2025-03-10 14:47:40,524 - INFO - OPENED LONG at 2110.9 | Stop loss: 2100.326810714286 | Take profit: 2142.5915339285716 +2025-03-10 14:47:40,678 - INFO - STOP LOSS hit for long at 2100.326810714286 | PnL: -0.50% | $-1.17 +2025-03-10 14:47:40,791 - INFO - OPENED LONG at 2098.1 | Stop loss: 2087.5908107142855 | Take profit: 2129.5995339285714 +2025-03-10 14:47:40,908 - INFO - CLOSED long at 2102.29 | PnL: 0.20% | $0.19 +2025-03-10 14:47:41,870 - INFO - OPENED SHORT at 2081.25 | Stop loss: 2091.6749392857146 | Take profit: 2050.0032160714286 +2025-03-10 14:47:42,159 - INFO - CLOSED short at 2085.85 | PnL: -0.22% | $-0.62 +2025-03-10 14:47:42,159 - INFO - OPENED LONG at 2085.85 | Stop loss: 2075.4020607142857 | Take profit: 2117.1657839285717 +2025-03-10 14:47:42,419 - INFO - CLOSED long at 2089.79 | PnL: 0.19% | $0.17 +2025-03-10 14:47:43,549 - INFO - OPENED SHORT at 2107.25 | Stop loss: 2117.804939285714 | Take profit: 2075.6132160714287 +2025-03-10 14:47:43,733 - INFO - CLOSED short at 2110.87 | PnL: -0.17% | $-0.52 +2025-03-10 14:47:43,755 - INFO - OPENED LONG at 2110.4 | Stop loss: 2099.829310714286 | Take profit: 2142.084033928572 +2025-03-10 14:47:44,535 - INFO - CLOSED long at 2119.58 | PnL: 0.43% | $0.64 +2025-03-10 14:47:45,311 - INFO - OPENED SHORT at 2118.8 | Stop loss: 2129.4126892857144 | Take profit: 2086.9899660714286 +2025-03-10 14:47:45,576 - INFO - CLOSED short at 2124.44 | PnL: -0.27% | $-0.70 +2025-03-10 14:47:46,160 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.28, Avg Loss=$-0.60 +2025-03-10 14:47:46,162 - INFO - Episode 25: Reward=-8.24, Balance=$96.05, Win Rate=35.7%, Trades=14, Episode PnL=$-3.95, Total PnL=$-78.75, Max Drawdown=4.2%, Pred Accuracy=99.3% +2025-03-10 14:47:46,163 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:47:46,533 - INFO - OPENED SHORT at 2071.39 | Stop loss: 2081.7656392857143 | Take profit: 2040.2911160714286 +2025-03-10 14:47:46,645 - INFO - CLOSED short at 2072.15 | PnL: -0.04% | $-0.27 +2025-03-10 14:47:47,829 - INFO - OPENED LONG at 2065.83 | Stop loss: 2055.482160714286 | Take profit: 2096.845483928571 +2025-03-10 14:47:48,702 - INFO - CLOSED long at 2064.1 | PnL: -0.08% | $-0.36 +2025-03-10 14:47:49,003 - INFO - OPENED LONG at 2061.7 | Stop loss: 2051.3728107142856 | Take profit: 2092.653533928571 +2025-03-10 14:47:49,333 - INFO - CLOSED long at 2056.28 | PnL: -0.26% | $-0.71 +2025-03-10 14:47:49,596 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.6251892857144 | Take profit: 2030.3524660714288 +2025-03-10 14:47:49,955 - INFO - STOP LOSS hit for short at 2071.6251892857144 | PnL: -0.50% | $-1.17 +2025-03-10 14:47:50,064 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.4037392857144 | Take profit: 2043.8568160714287 +2025-03-10 14:47:50,187 - INFO - CLOSED short at 2073.23 | PnL: 0.09% | $-0.03 +2025-03-10 14:47:50,231 - INFO - OPENED SHORT at 2068.15 | Stop loss: 2078.509439285714 | Take profit: 2037.0997160714287 +2025-03-10 14:47:51,541 - INFO - CLOSED short at 2074.37 | PnL: -0.30% | $-0.77 +2025-03-10 14:47:51,721 - INFO - OPENED SHORT at 2075.61 | Stop loss: 2086.0067392857145 | Take profit: 2044.4478160714286 +2025-03-10 14:47:51,828 - INFO - CLOSED short at 2069.97 | PnL: 0.27% | $0.33 +2025-03-10 14:47:52,952 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9898107142858 | Take profit: 2089.2025339285715 +2025-03-10 14:47:53,045 - INFO - CLOSED long at 2057.11 | PnL: -0.06% | $-0.30 +2025-03-10 14:47:53,323 - INFO - OPENED LONG at 2066.59 | Stop loss: 2056.238360714286 | Take profit: 2097.6168839285715 +2025-03-10 14:47:53,488 - INFO - CLOSED long at 2060.7 | PnL: -0.29% | $-0.74 +2025-03-10 14:47:53,689 - INFO - OPENED LONG at 2070.41 | Stop loss: 2060.039260714286 | Take profit: 2101.4941839285716 +2025-03-10 14:47:53,940 - INFO - CLOSED long at 2076.08 | PnL: 0.27% | $0.33 +2025-03-10 14:47:55,158 - INFO - OPENED SHORT at 2100.5 | Stop loss: 2111.0211892857146 | Take profit: 2068.9644660714284 +2025-03-10 14:47:55,179 - INFO - CLOSED short at 2090.0 | PnL: 0.50% | $0.76 +2025-03-10 14:47:55,461 - INFO - OPENED LONG at 2100.74 | Stop loss: 2090.2176107142855 | Take profit: 2132.2791339285714 +2025-03-10 14:47:55,518 - INFO - CLOSED long at 2104.68 | PnL: 0.19% | $0.17 +2025-03-10 14:47:56,846 - INFO - OPENED LONG at 2091.95 | Stop loss: 2081.4715607142853 | Take profit: 2123.357283928571 +2025-03-10 14:47:56,942 - INFO - CLOSED long at 2099.99 | PnL: 0.38% | $0.55 +2025-03-10 14:47:57,901 - INFO - OPENED LONG at 2112.28 | Stop loss: 2101.699910714286 | Take profit: 2143.9922339285717 +2025-03-10 14:47:57,956 - INFO - CLOSED long at 2110.4 | PnL: -0.09% | $-0.37 +2025-03-10 14:47:59,097 - INFO - OPENED LONG at 2132.83 | Stop loss: 2122.1471607142857 | Take profit: 2164.850483928571 +2025-03-10 14:47:59,130 - INFO - CLOSED long at 2127.79 | PnL: -0.24% | $-0.65 +2025-03-10 14:47:59,890 - INFO - OPENED LONG at 2114.41 | Stop loss: 2103.8192607142855 | Take profit: 2146.1541839285715 +2025-03-10 14:47:59,912 - INFO - CLOSED long at 2115.45 | PnL: 0.05% | $-0.10 +2025-03-10 14:48:00,331 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.43, Avg Loss=$-0.50 +2025-03-10 14:48:00,332 - INFO - Episode 26: Reward=-12.22, Balance=$96.66, Win Rate=31.2%, Trades=16, Episode PnL=$-3.34, Total PnL=$-82.09, Max Drawdown=4.0%, Pred Accuracy=99.5% +2025-03-10 14:48:00,333 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:48:02,048 - INFO - OPENED SHORT at 2064.99 | Stop loss: 2075.333639285714 | Take profit: 2033.9871160714283 +2025-03-10 14:48:02,097 - INFO - CLOSED short at 2065.83 | PnL: -0.04% | $-0.28 +2025-03-10 14:48:04,051 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.561810714286 | Take profit: 2094.886533928571 +2025-03-10 14:48:04,095 - INFO - CLOSED long at 2064.49 | PnL: 0.03% | $-0.14 +2025-03-10 14:48:04,786 - INFO - OPENED SHORT at 2067.44 | Stop loss: 2077.795889285714 | Take profit: 2036.4003660714286 +2025-03-10 14:48:04,838 - INFO - CLOSED short at 2068.79 | PnL: -0.07% | $-0.33 +2025-03-10 14:48:05,789 - INFO - OPENED SHORT at 2071.99 | Stop loss: 2082.368639285714 | Take profit: 2040.8821160714283 +2025-03-10 14:48:05,818 - INFO - CLOSED short at 2068.19 | PnL: 0.18% | $0.16 +2025-03-10 14:48:06,761 - INFO - OPENED LONG at 2065.8 | Stop loss: 2055.452310714286 | Take profit: 2096.8150339285717 +2025-03-10 14:48:06,803 - INFO - CLOSED long at 2065.07 | PnL: -0.04% | $-0.27 +2025-03-10 14:48:07,363 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9898107142858 | Take profit: 2089.2025339285715 +2025-03-10 14:48:07,385 - INFO - CLOSED long at 2056.85 | PnL: -0.07% | $-0.33 +2025-03-10 14:48:07,737 - INFO - OPENED SHORT at 2061.21 | Stop loss: 2071.5347392857143 | Take profit: 2030.2638160714287 +2025-03-10 14:48:07,759 - INFO - CLOSED short at 2059.9 | PnL: 0.06% | $-0.07 +2025-03-10 14:48:08,335 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.372189285714 | Take profit: 2098.7114660714283 +2025-03-10 14:48:08,376 - INFO - CLOSED short at 2139.54 | PnL: -0.41% | $-1.01 +2025-03-10 14:48:08,708 - INFO - OPENED LONG at 2121.09 | Stop loss: 2110.465860714286 | Take profit: 2152.9343839285716 +2025-03-10 14:48:08,790 - INFO - CLOSED long at 2117.24 | PnL: -0.18% | $-0.55 +2025-03-10 14:48:09,320 - INFO - OPENED SHORT at 2106.49 | Stop loss: 2117.041139285714 | Take profit: 2074.8646160714284 +2025-03-10 14:48:09,342 - INFO - CLOSED short at 2108.06 | PnL: -0.07% | $-0.34 +2025-03-10 14:48:12,242 - INFO - OPENED LONG at 2117.39 | Stop loss: 2106.784360714286 | Take profit: 2149.178883928571 +2025-03-10 14:48:12,287 - INFO - CLOSED long at 2115.3 | PnL: -0.10% | $-0.38 +2025-03-10 14:48:12,541 - INFO - OPENED SHORT at 2119.58 | Stop loss: 2130.1965892857143 | Take profit: 2087.758266071429 +2025-03-10 14:48:12,579 - INFO - CLOSED short at 2121.77 | PnL: -0.10% | $-0.39 +2025-03-10 14:48:12,847 - INFO - OPENED LONG at 2136.09 | Stop loss: 2125.3908607142857 | Take profit: 2168.1593839285715 +2025-03-10 14:48:12,916 - INFO - CLOSED long at 2127.79 | PnL: -0.39% | $-0.93 +2025-03-10 14:48:14,066 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.16, Avg Loss=$-0.42 +2025-03-10 14:48:14,068 - INFO - Episode 27: Reward=-16.25, Balance=$95.15, Win Rate=7.7%, Trades=13, Episode PnL=$-4.85, Total PnL=$-86.94, Max Drawdown=4.8%, Pred Accuracy=99.5% +2025-03-10 14:48:14,068 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:48:15,718 - INFO - OPENED SHORT at 2070.04 | Stop loss: 2080.408889285714 | Take profit: 2038.9613660714285 +2025-03-10 14:48:15,736 - INFO - CLOSED short at 2067.8 | PnL: 0.11% | $0.02 +2025-03-10 14:48:15,737 - INFO - OPENED LONG at 2067.8 | Stop loss: 2057.442310714286 | Take profit: 2098.8450339285714 +2025-03-10 14:48:15,762 - INFO - CLOSED long at 2068.18 | PnL: 0.02% | $-0.16 +2025-03-10 14:48:16,011 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.4524107142856 | Take profit: 2092.7347339285716 +2025-03-10 14:48:16,069 - INFO - CLOSED long at 2059.59 | PnL: -0.11% | $-0.41 +2025-03-10 14:48:20,005 - INFO - OPENED SHORT at 2067.88 | Stop loss: 2078.2380892857145 | Take profit: 2036.8337660714287 +2025-03-10 14:48:20,032 - INFO - CLOSED short at 2065.45 | PnL: 0.12% | $0.03 +2025-03-10 14:48:22,268 - INFO - OPENED SHORT at 2126.99 | Stop loss: 2137.643639285714 | Take profit: 2095.057116071428 +2025-03-10 14:48:22,445 - INFO - CLOSED short at 2121.09 | PnL: 0.28% | $0.35 +2025-03-10 14:48:22,533 - INFO - OPENED LONG at 2119.93 | Stop loss: 2109.3116607142856 | Take profit: 2151.756983928571 +2025-03-10 14:48:22,556 - INFO - CLOSED long at 2121.4 | PnL: 0.07% | $-0.06 +2025-03-10 14:48:23,112 - INFO - OPENED LONG at 2106.49 | Stop loss: 2095.9388607142855 | Take profit: 2138.115383928571 +2025-03-10 14:48:23,251 - INFO - CLOSED long at 2103.33 | PnL: -0.15% | $-0.49 +2025-03-10 14:48:23,886 - INFO - OPENED LONG at 2091.1 | Stop loss: 2080.6258107142858 | Take profit: 2122.4945339285714 +2025-03-10 14:48:23,928 - INFO - CLOSED long at 2094.72 | PnL: 0.17% | $0.14 +2025-03-10 14:48:25,121 - INFO - OPENED SHORT at 2106.15 | Stop loss: 2116.6994392857146 | Take profit: 2074.5297160714285 +2025-03-10 14:48:25,160 - INFO - CLOSED short at 2103.48 | PnL: 0.13% | $0.05 +2025-03-10 14:48:26,210 - INFO - OPENED SHORT at 2117.39 | Stop loss: 2127.9956392857143 | Take profit: 2085.6011160714284 +2025-03-10 14:48:26,240 - INFO - CLOSED short at 2115.3 | PnL: 0.10% | $-0.00 +2025-03-10 14:48:27,144 - INFO - OPENED LONG at 2118.1 | Stop loss: 2107.4908107142855 | Take profit: 2149.899533928571 +2025-03-10 14:48:27,171 - INFO - CLOSED long at 2119.48 | PnL: 0.07% | $-0.07 +2025-03-10 14:48:27,358 - INFO - OPENED LONG at 2120.84 | Stop loss: 2110.217110714286 | Take profit: 2152.6806339285718 +2025-03-10 14:48:27,383 - INFO - CLOSED long at 2114.41 | PnL: -0.30% | $-0.79 +2025-03-10 14:48:27,427 - INFO - OPENED LONG at 2112.11 | Stop loss: 2101.530760714286 | Take profit: 2143.8196839285715 +2025-03-10 14:48:27,450 - INFO - CLOSED long at 2110.66 | PnL: -0.07% | $-0.33 +2025-03-10 14:48:27,711 - INFO - OPENED SHORT at 2118.35 | Stop loss: 2128.960439285714 | Take profit: 2086.5467160714284 +2025-03-10 14:48:27,735 - INFO - CLOSED short at 2120.56 | PnL: -0.10% | $-0.40 +2025-03-10 14:48:27,758 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.12, Avg Loss=$-0.30 +2025-03-10 14:48:27,759 - INFO - Episode 28: Reward=-6.76, Balance=$97.88, Win Rate=35.7%, Trades=14, Episode PnL=$-2.12, Total PnL=$-89.06, Max Drawdown=2.1%, Pred Accuracy=99.6% +2025-03-10 14:48:27,760 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:48:31,184 - INFO - OPENED LONG at 2061.66 | Stop loss: 2051.3330107142856 | Take profit: 2092.6129339285712 +2025-03-10 14:48:31,234 - INFO - CLOSED long at 2061.5 | PnL: -0.01% | $-0.21 +2025-03-10 14:48:31,635 - INFO - OPENED LONG at 2066.79 | Stop loss: 2056.4373607142857 | Take profit: 2097.8198839285715 +2025-03-10 14:48:31,684 - INFO - CLOSED long at 2067.33 | PnL: 0.03% | $-0.15 +2025-03-10 14:48:33,385 - INFO - OPENED LONG at 2071.61 | Stop loss: 2061.2332607142857 | Take profit: 2102.7121839285714 +2025-03-10 14:48:33,415 - INFO - CLOSED long at 2074.37 | PnL: 0.13% | $0.07 +2025-03-10 14:48:33,601 - INFO - OPENED LONG at 2075.32 | Stop loss: 2064.924710714286 | Take profit: 2106.4778339285717 +2025-03-10 14:48:33,653 - INFO - CLOSED long at 2075.29 | PnL: -0.00% | $-0.20 +2025-03-10 14:48:34,143 - INFO - OPENED SHORT at 2065.45 | Stop loss: 2075.795939285714 | Take profit: 2034.4402160714283 +2025-03-10 14:48:34,170 - INFO - CLOSED short at 2068.1 | PnL: -0.13% | $-0.45 +2025-03-10 14:48:35,697 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.974610714286 | Take profit: 2100.4081339285717 +2025-03-10 14:48:35,726 - INFO - CLOSED long at 2069.81 | PnL: 0.02% | $-0.15 +2025-03-10 14:48:38,303 - INFO - OPENED SHORT at 2087.47 | Stop loss: 2097.926039285714 | Take profit: 2056.1299160714284 +2025-03-10 14:48:38,379 - INFO - CLOSED short at 2086.81 | PnL: 0.03% | $-0.13 +2025-03-10 14:48:38,526 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.576060714286 | Take profit: 2122.4437839285715 +2025-03-10 14:48:38,549 - INFO - CLOSED long at 2091.95 | PnL: 0.04% | $-0.11 +2025-03-10 14:48:39,321 - INFO - OPENED SHORT at 2102.0 | Stop loss: 2112.5286892857143 | Take profit: 2070.4419660714284 +2025-03-10 14:48:39,343 - INFO - CLOSED short at 2103.41 | PnL: -0.07% | $-0.33 +2025-03-10 14:48:39,705 - INFO - OPENED LONG at 2112.28 | Stop loss: 2101.699910714286 | Take profit: 2143.9922339285717 +2025-03-10 14:48:39,728 - INFO - CLOSED long at 2112.11 | PnL: -0.01% | $-0.21 +2025-03-10 14:48:41,556 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.07, Avg Loss=$-0.22 +2025-03-10 14:48:41,557 - INFO - Episode 29: Reward=-11.45, Balance=$98.12, Win Rate=10.0%, Trades=10, Episode PnL=$-1.88, Total PnL=$-90.94, Max Drawdown=1.9%, Pred Accuracy=99.7% +2025-03-10 14:48:41,557 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:48:43,988 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.4524107142856 | Take profit: 2092.7347339285716 +2025-03-10 14:48:44,020 - INFO - CLOSED long at 2059.59 | PnL: -0.11% | $-0.41 +2025-03-10 14:48:45,018 - INFO - OPENED SHORT at 2062.6 | Stop loss: 2072.931689285714 | Take profit: 2031.6329660714287 +2025-03-10 14:48:45,063 - INFO - CLOSED short at 2061.89 | PnL: 0.03% | $-0.13 +2025-03-10 14:48:45,922 - INFO - OPENED LONG at 2067.01 | Stop loss: 2056.656260714286 | Take profit: 2098.0431839285716 +2025-03-10 14:48:45,946 - INFO - CLOSED long at 2065.69 | PnL: -0.06% | $-0.32 +2025-03-10 14:48:47,116 - INFO - OPENED SHORT at 2070.35 | Stop loss: 2080.7204392857143 | Take profit: 2039.2667160714284 +2025-03-10 14:48:47,140 - INFO - CLOSED short at 2070.61 | PnL: -0.01% | $-0.22 +2025-03-10 14:48:47,947 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.1538107142856 | Take profit: 2096.5105339285715 +2025-03-10 14:48:47,973 - INFO - CLOSED long at 2065.7 | PnL: 0.01% | $-0.18 +2025-03-10 14:48:48,788 - INFO - OPENED SHORT at 2065.12 | Stop loss: 2075.464289285714 | Take profit: 2034.1151660714283 +2025-03-10 14:48:48,809 - INFO - CLOSED short at 2068.33 | PnL: -0.16% | $-0.50 +2025-03-10 14:48:49,298 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.6063607142855 | Take profit: 2104.112883928571 +2025-03-10 14:48:49,341 - INFO - CLOSED long at 2071.89 | PnL: -0.05% | $-0.30 +2025-03-10 14:48:49,665 - INFO - OPENED SHORT at 2133.95 | Stop loss: 2144.6384392857144 | Take profit: 2101.9127160714283 +2025-03-10 14:48:49,714 - INFO - CLOSED short at 2137.59 | PnL: -0.17% | $-0.53 +2025-03-10 14:48:49,793 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.0251892857145 | Take profit: 2109.1524660714285 +2025-03-10 14:48:49,831 - INFO - CLOSED short at 2142.68 | PnL: -0.06% | $-0.32 +2025-03-10 14:48:52,417 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.0160892857143 | Take profit: 2071.8997660714285 +2025-03-10 14:48:52,443 - INFO - CLOSED short at 2104.93 | PnL: -0.07% | $-0.33 +2025-03-10 14:48:52,605 - INFO - OPENED LONG at 2103.64 | Stop loss: 2093.103110714286 | Take profit: 2135.222633928571 +2025-03-10 14:48:52,676 - INFO - CLOSED long at 2103.52 | PnL: -0.01% | $-0.20 +2025-03-10 14:48:53,944 - INFO - OPENED LONG at 2135.51 | Stop loss: 2124.8137607142858 | Take profit: 2167.5706839285717 +2025-03-10 14:48:53,968 - INFO - CLOSED long at 2136.09 | PnL: 0.03% | $-0.14 +2025-03-10 14:48:55,190 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.00, Avg Loss=$-0.30 +2025-03-10 14:48:55,191 - INFO - Episode 30: Reward=-16.18, Balance=$96.43, Win Rate=0.0%, Trades=12, Episode PnL=$-3.57, Total PnL=$-94.51, Max Drawdown=3.6%, Pred Accuracy=99.6% +2025-03-10 14:48:55,317 - INFO - Model saved to checkpoints/trading_agent_episode_30.pt +2025-03-10 14:48:55,318 - INFO - Checkpoint saved at episode 30 +2025-03-10 14:48:55,318 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:48:55,382 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 14:48:55,383 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2506, in visualize_training_results + ax1.set_title(f'Training Visualization - Episode {episode_num}') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 14:48:56,344 - ERROR - Error creating visualization: No module named 'mplfinance' +2025-03-10 14:48:56,345 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2506, in visualize_training_results + ax1.set_title(f'Training Visualization - Episode {episode_num}') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +ModuleNotFoundError: No module named 'mplfinance' + +2025-03-10 14:48:56,807 - INFO - OPENED LONG at 2071.92 | Stop loss: 2061.5417107142857 | Take profit: 2103.0268339285717 +2025-03-10 14:48:56,832 - INFO - CLOSED long at 2070.4 | PnL: -0.07% | $-0.34 +2025-03-10 14:48:56,852 - INFO - OPENED LONG at 2071.11 | Stop loss: 2060.735760714286 | Take profit: 2102.2046839285713 +2025-03-10 14:48:56,877 - INFO - CLOSED long at 2069.46 | PnL: -0.08% | $-0.35 +2025-03-10 14:48:58,076 - INFO - OPENED LONG at 2061.78 | Stop loss: 2051.4524107142856 | Take profit: 2092.7347339285716 +2025-03-10 14:48:58,113 - INFO - CLOSED long at 2059.59 | PnL: -0.11% | $-0.41 +2025-03-10 14:48:59,581 - INFO - OPENED LONG at 2061.66 | Stop loss: 2051.3330107142856 | Take profit: 2092.6129339285712 +2025-03-10 14:48:59,612 - INFO - CLOSED long at 2061.5 | PnL: -0.01% | $-0.21 +2025-03-10 14:49:02,293 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.4391392857146 | Take profit: 2035.0706160714287 +2025-03-10 14:49:02,345 - INFO - CLOSED short at 2062.34 | PnL: 0.18% | $0.16 +2025-03-10 14:49:03,984 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.0251892857145 | Take profit: 2109.1524660714285 +2025-03-10 14:49:04,009 - INFO - CLOSED short at 2142.68 | PnL: -0.06% | $-0.32 +2025-03-10 14:49:08,416 - INFO - OPENED LONG at 2129.3 | Stop loss: 2118.634810714286 | Take profit: 2161.2675339285715 +2025-03-10 14:49:08,460 - INFO - CLOSED long at 2136.26 | PnL: 0.33% | $0.44 +2025-03-10 14:49:08,703 - INFO - OPENED SHORT at 2127.47 | Stop loss: 2138.126039285714 | Take profit: 2095.5299160714285 +2025-03-10 14:49:08,743 - INFO - CLOSED short at 2135.55 | PnL: -0.38% | $-0.94 +2025-03-10 14:49:09,581 - INFO - OPENED LONG at 2114.71 | Stop loss: 2104.117760714286 | Take profit: 2146.458683928571 +2025-03-10 14:49:09,605 - INFO - CLOSED long at 2117.92 | PnL: 0.15% | $0.10 +2025-03-10 14:49:09,667 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.23, Avg Loss=$-0.43 +2025-03-10 14:49:09,668 - INFO - Episode 31: Reward=-6.17, Balance=$98.12, Win Rate=33.3%, Trades=9, Episode PnL=$-1.88, Total PnL=$-96.38, Max Drawdown=2.0%, Pred Accuracy=99.6% +2025-03-10 14:49:09,668 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:49:10,059 - INFO - OPENED SHORT at 2071.39 | Stop loss: 2081.7656392857143 | Take profit: 2040.2911160714286 +2025-03-10 14:49:10,082 - INFO - CLOSED short at 2071.36 | PnL: 0.00% | $-0.20 +2025-03-10 14:49:10,691 - INFO - OPENED SHORT at 2068.8 | Stop loss: 2079.162689285715 | Take profit: 2037.7399660714289 +2025-03-10 14:49:10,730 - INFO - CLOSED short at 2069.34 | PnL: -0.03% | $-0.25 +2025-03-10 14:49:11,194 - INFO - OPENED LONG at 2064.47 | Stop loss: 2054.1289607142853 | Take profit: 2095.4650839285714 +2025-03-10 14:49:11,238 - INFO - CLOSED long at 2070.04 | PnL: 0.27% | $0.34 +2025-03-10 14:49:11,918 - INFO - OPENED SHORT at 2063.5 | Stop loss: 2073.836189285714 | Take profit: 2032.5194660714285 +2025-03-10 14:49:11,955 - INFO - CLOSED short at 2061.6 | PnL: 0.09% | $-0.02 +2025-03-10 14:49:12,040 - INFO - OPENED SHORT at 2060.65 | Stop loss: 2070.9719392857146 | Take profit: 2029.7122160714287 +2025-03-10 14:49:12,076 - INFO - CLOSED short at 2058.89 | PnL: 0.09% | $-0.03 +2025-03-10 14:49:15,702 - INFO - OPENED LONG at 2068.1 | Stop loss: 2057.7408107142855 | Take profit: 2099.149533928571 +2025-03-10 14:49:15,734 - INFO - CLOSED long at 2069.0 | PnL: 0.04% | $-0.11 +2025-03-10 14:49:16,266 - INFO - OPENED LONG at 2063.01 | Stop loss: 2052.676260714286 | Take profit: 2093.9831839285716 +2025-03-10 14:49:16,312 - INFO - CLOSED long at 2060.7 | PnL: -0.11% | $-0.42 +2025-03-10 14:49:16,312 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0221892857144 | Take profit: 2029.7614660714282 +2025-03-10 14:49:16,363 - INFO - CLOSED short at 2060.2 | PnL: 0.02% | $-0.15 +2025-03-10 14:49:16,404 - INFO - OPENED LONG at 2059.2 | Stop loss: 2048.8853107142854 | Take profit: 2090.116033928571 +2025-03-10 14:49:16,446 - INFO - CLOSED long at 2058.09 | PnL: -0.05% | $-0.30 +2025-03-10 14:49:17,304 - INFO - OPENED LONG at 2070.31 | Stop loss: 2059.9397607142855 | Take profit: 2101.3926839285714 +2025-03-10 14:49:17,326 - INFO - CLOSED long at 2070.24 | PnL: -0.00% | $-0.20 +2025-03-10 14:49:20,381 - INFO - OPENED LONG at 2091.95 | Stop loss: 2081.4715607142853 | Take profit: 2123.357283928571 +2025-03-10 14:49:20,406 - INFO - CLOSED long at 2094.7 | PnL: 0.13% | $0.06 +2025-03-10 14:49:20,903 - INFO - OPENED LONG at 2105.21 | Stop loss: 2094.665260714286 | Take profit: 2136.8161839285713 +2025-03-10 14:49:20,928 - INFO - CLOSED long at 2103.9 | PnL: -0.06% | $-0.32 +2025-03-10 14:49:22,106 - INFO - OPENED LONG at 2126.43 | Stop loss: 2115.779160714286 | Take profit: 2158.3544839285714 +2025-03-10 14:49:22,127 - INFO - CLOSED long at 2124.49 | PnL: -0.09% | $-0.37 +2025-03-10 14:49:22,540 - INFO - OPENED LONG at 2115.45 | Stop loss: 2104.8540607142854 | Take profit: 2147.2097839285716 +2025-03-10 14:49:22,562 - INFO - CLOSED long at 2112.11 | PnL: -0.16% | $-0.50 +2025-03-10 14:49:22,877 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.20, Avg Loss=$-0.24 +2025-03-10 14:49:22,878 - INFO - Episode 32: Reward=-14.36, Balance=$97.53, Win Rate=14.3%, Trades=14, Episode PnL=$-2.05, Total PnL=$-98.85, Max Drawdown=2.5%, Pred Accuracy=99.7% +2025-03-10 14:49:22,878 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:49:23,392 - INFO - OPENED SHORT at 2069.35 | Stop loss: 2079.715439285714 | Take profit: 2038.2817160714285 +2025-03-10 14:49:23,426 - INFO - CLOSED short at 2068.32 | PnL: 0.05% | $-0.10 +2025-03-10 14:49:23,471 - INFO - OPENED SHORT at 2067.0 | Stop loss: 2077.353689285714 | Take profit: 2035.9669660714285 +2025-03-10 14:49:23,520 - INFO - CLOSED short at 2067.79 | PnL: -0.04% | $-0.27 +2025-03-10 14:49:23,594 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.152689285714 | Take profit: 2035.7699660714288 +2025-03-10 14:49:23,668 - INFO - CLOSED short at 2063.61 | PnL: 0.15% | $0.11 +2025-03-10 14:49:27,179 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.047189285714 | Take profit: 2034.6864660714284 +2025-03-10 14:49:27,216 - INFO - CLOSED short at 2065.66 | PnL: 0.00% | $-0.19 +2025-03-10 14:49:27,965 - INFO - OPENED SHORT at 2074.37 | Stop loss: 2084.760539285714 | Take profit: 2043.2264160714283 +2025-03-10 14:49:28,007 - INFO - CLOSED short at 2075.07 | PnL: -0.03% | $-0.26 +2025-03-10 14:49:29,874 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4389392857147 | Take profit: 2042.9112160714287 +2025-03-10 14:49:29,967 - INFO - CLOSED short at 2071.8 | PnL: 0.11% | $0.02 +2025-03-10 14:49:30,691 - INFO - OPENED SHORT at 2119.07 | Stop loss: 2129.6840392857143 | Take profit: 2087.2559160714286 +2025-03-10 14:49:30,726 - INFO - CLOSED short at 2115.28 | PnL: 0.18% | $0.16 +2025-03-10 14:49:31,204 - INFO - OPENED SHORT at 2090.0 | Stop loss: 2100.4686892857144 | Take profit: 2058.6219660714287 +2025-03-10 14:49:31,269 - INFO - CLOSED short at 2098.1 | PnL: -0.39% | $-0.96 +2025-03-10 14:49:31,345 - INFO - OPENED SHORT at 2099.25 | Stop loss: 2109.7649392857143 | Take profit: 2067.7332160714286 +2025-03-10 14:49:31,371 - INFO - CLOSED short at 2098.9 | PnL: 0.02% | $-0.16 +2025-03-10 14:49:32,287 - INFO - OPENED SHORT at 2088.66 | Stop loss: 2099.1219892857143 | Take profit: 2057.3020660714287 +2025-03-10 14:49:32,324 - INFO - CLOSED short at 2088.32 | PnL: 0.02% | $-0.16 +2025-03-10 14:49:32,903 - INFO - OPENED LONG at 2106.15 | Stop loss: 2095.6005607142856 | Take profit: 2137.7702839285716 +2025-03-10 14:49:32,928 - INFO - CLOSED long at 2103.48 | PnL: -0.13% | $-0.44 +2025-03-10 14:49:33,109 - INFO - OPENED LONG at 2103.52 | Stop loss: 2092.9837107142857 | Take profit: 2135.100833928572 +2025-03-10 14:49:33,143 - INFO - CLOSED long at 2104.4 | PnL: 0.04% | $-0.11 +2025-03-10 14:49:35,543 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.09, Avg Loss=$-0.30 +2025-03-10 14:49:35,544 - INFO - Episode 33: Reward=-9.59, Balance=$97.61, Win Rate=25.0%, Trades=12, Episode PnL=$-2.39, Total PnL=$-101.25, Max Drawdown=2.4%, Pred Accuracy=99.5% +2025-03-10 14:49:35,545 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:49:40,311 - INFO - OPENED LONG at 2070.8 | Stop loss: 2060.427310714286 | Take profit: 2101.890033928572 +2025-03-10 14:49:40,333 - INFO - CLOSED long at 2070.35 | PnL: -0.02% | $-0.24 +2025-03-10 14:49:40,910 - INFO - OPENED SHORT at 2066.4 | Stop loss: 2076.750689285714 | Take profit: 2035.3759660714286 +2025-03-10 14:49:40,957 - INFO - CLOSED short at 2066.89 | PnL: -0.02% | $-0.24 +2025-03-10 14:49:41,561 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0221892857144 | Take profit: 2029.7614660714282 +2025-03-10 14:49:41,583 - INFO - CLOSED short at 2060.2 | PnL: 0.02% | $-0.15 +2025-03-10 14:49:42,354 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.609889285714 | Take profit: 2039.1583660714282 +2025-03-10 14:49:42,399 - INFO - CLOSED short at 2069.81 | PnL: 0.02% | $-0.16 +2025-03-10 14:49:48,022 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.00, Avg Loss=$-0.20 +2025-03-10 14:49:48,023 - INFO - Episode 34: Reward=-5.69, Balance=$99.21, Win Rate=0.0%, Trades=4, Episode PnL=$-0.79, Total PnL=$-102.04, Max Drawdown=0.8%, Pred Accuracy=99.7% +2025-03-10 14:49:48,023 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:49:50,581 - INFO - OPENED LONG at 2062.65 | Stop loss: 2052.318060714286 | Take profit: 2093.6177839285715 +2025-03-10 14:49:50,624 - INFO - CLOSED long at 2059.59 | PnL: -0.15% | $-0.49 +2025-03-10 14:49:50,901 - INFO - OPENED SHORT at 2062.71 | Stop loss: 2073.0422392857145 | Take profit: 2031.7413160714286 +2025-03-10 14:49:50,925 - INFO - CLOSED short at 2062.89 | PnL: -0.01% | $-0.21 +2025-03-10 14:49:51,102 - INFO - OPENED SHORT at 2060.31 | Stop loss: 2070.630239285714 | Take profit: 2029.3773160714286 +2025-03-10 14:49:51,134 - INFO - CLOSED short at 2061.8 | PnL: -0.07% | $-0.34 +2025-03-10 14:49:51,723 - INFO - OPENED SHORT at 2059.02 | Stop loss: 2069.3337892857144 | Take profit: 2028.1066660714284 +2025-03-10 14:49:51,764 - INFO - CLOSED short at 2059.96 | PnL: -0.05% | $-0.29 +2025-03-10 14:49:53,318 - INFO - OPENED LONG at 2063.97 | Stop loss: 2053.6314607142854 | Take profit: 2094.9575839285712 +2025-03-10 14:49:53,347 - INFO - CLOSED long at 2064.5 | PnL: 0.03% | $-0.15 +2025-03-10 14:49:53,411 - INFO - OPENED SHORT at 2064.31 | Stop loss: 2074.650239285714 | Take profit: 2033.3173160714286 +2025-03-10 14:49:53,436 - INFO - CLOSED short at 2065.5 | PnL: -0.06% | $-0.31 +2025-03-10 14:49:53,718 - INFO - OPENED LONG at 2071.35 | Stop loss: 2060.974560714286 | Take profit: 2102.4482839285715 +2025-03-10 14:49:53,743 - INFO - CLOSED long at 2070.9 | PnL: -0.02% | $-0.24 +2025-03-10 14:49:55,289 - INFO - OPENED LONG at 2060.2 | Stop loss: 2049.8803107142853 | Take profit: 2091.1310339285715 +2025-03-10 14:49:55,313 - INFO - CLOSED long at 2059.2 | PnL: -0.05% | $-0.29 +2025-03-10 14:49:55,850 - INFO - OPENED SHORT at 2066.59 | Stop loss: 2076.9416392857142 | Take profit: 2035.5631160714286 +2025-03-10 14:49:55,888 - INFO - CLOSED short at 2064.08 | PnL: 0.12% | $0.04 +2025-03-10 14:49:56,853 - INFO - OPENED LONG at 2126.99 | Stop loss: 2116.3363607142855 | Take profit: 2158.922883928571 +2025-03-10 14:49:56,873 - INFO - CLOSED long at 2127.3 | PnL: 0.01% | $-0.17 +2025-03-10 14:49:56,874 - INFO - OPENED SHORT at 2127.3 | Stop loss: 2137.9551892857144 | Take profit: 2095.362466071429 +2025-03-10 14:49:56,894 - INFO - CLOSED short at 2128.69 | PnL: -0.07% | $-0.32 +2025-03-10 14:49:57,639 - INFO - OPENED LONG at 2098.1 | Stop loss: 2087.5908107142855 | Take profit: 2129.5995339285714 +2025-03-10 14:49:57,663 - INFO - CLOSED long at 2102.19 | PnL: 0.19% | $0.18 +2025-03-10 14:50:00,716 - INFO - OPENED LONG at 2135.55 | Stop loss: 2124.853560714286 | Take profit: 2167.6112839285715 +2025-03-10 14:50:00,744 - INFO - CLOSED long at 2131.23 | PnL: -0.20% | $-0.58 +2025-03-10 14:50:01,444 - INFO - OPENED LONG at 2107.42 | Stop loss: 2096.864210714286 | Take profit: 2139.0593339285715 +2025-03-10 14:50:01,476 - INFO - CLOSED long at 2110.34 | PnL: 0.14% | $0.07 +2025-03-10 14:50:01,666 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.10, Avg Loss=$-0.31 +2025-03-10 14:50:01,667 - INFO - Episode 35: Reward=-12.56, Balance=$96.92, Win Rate=21.4%, Trades=14, Episode PnL=$-2.92, Total PnL=$-105.12, Max Drawdown=3.2%, Pred Accuracy=99.5% +2025-03-10 14:50:01,667 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:50:02,291 - INFO - OPENED LONG at 2067.0 | Stop loss: 2056.646310714286 | Take profit: 2098.033033928571 +2025-03-10 14:50:02,313 - INFO - CLOSED long at 2067.79 | PnL: 0.04% | $-0.12 +2025-03-10 14:50:03,102 - INFO - OPENED LONG at 2067.8 | Stop loss: 2057.442310714286 | Take profit: 2098.8450339285714 +2025-03-10 14:50:03,123 - INFO - CLOSED long at 2068.18 | PnL: 0.02% | $-0.16 +2025-03-10 14:50:03,260 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.6049892857145 | Take profit: 2034.2530660714287 +2025-03-10 14:50:03,305 - INFO - CLOSED short at 2062.89 | PnL: 0.11% | $0.03 +2025-03-10 14:50:04,609 - INFO - OPENED LONG at 2059.46 | Stop loss: 2049.1440107142857 | Take profit: 2090.379933928571 +2025-03-10 14:50:04,647 - INFO - CLOSED long at 2057.4 | PnL: -0.10% | $-0.40 +2025-03-10 14:50:04,900 - INFO - OPENED SHORT at 2061.6 | Stop loss: 2071.926689285714 | Take profit: 2030.6479660714285 +2025-03-10 14:50:04,934 - INFO - CLOSED short at 2061.3 | PnL: 0.01% | $-0.17 +2025-03-10 14:50:04,966 - INFO - OPENED SHORT at 2062.69 | Stop loss: 2073.0221392857143 | Take profit: 2031.7216160714286 +2025-03-10 14:50:05,002 - INFO - CLOSED short at 2063.4 | PnL: -0.03% | $-0.26 +2025-03-10 14:50:09,423 - INFO - OPENED LONG at 2141.3 | Stop loss: 2130.574810714286 | Take profit: 2173.447533928572 +2025-03-10 14:50:09,444 - INFO - CLOSED long at 2142.68 | PnL: 0.06% | $-0.07 +2025-03-10 14:50:09,543 - INFO - OPENED SHORT at 2126.99 | Stop loss: 2137.643639285714 | Take profit: 2095.057116071428 +2025-03-10 14:50:09,638 - INFO - CLOSED short at 2128.69 | PnL: -0.08% | $-0.35 +2025-03-10 14:50:10,654 - INFO - OPENED LONG at 2091.1 | Stop loss: 2080.6258107142858 | Take profit: 2122.4945339285714 +2025-03-10 14:50:10,737 - INFO - CLOSED long at 2083.28 | PnL: -0.37% | $-0.93 +2025-03-10 14:50:10,911 - INFO - OPENED LONG at 2085.09 | Stop loss: 2074.645860714286 | Take profit: 2116.3943839285716 +2025-03-10 14:50:10,932 - INFO - CLOSED long at 2083.59 | PnL: -0.07% | $-0.33 +2025-03-10 14:50:13,968 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.03, Avg Loss=$-0.31 +2025-03-10 14:50:13,968 - INFO - Episode 36: Reward=-11.96, Balance=$97.24, Win Rate=10.0%, Trades=10, Episode PnL=$-2.76, Total PnL=$-107.88, Max Drawdown=2.8%, Pred Accuracy=99.5% +2025-03-10 14:50:13,970 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:50:17,413 - INFO - OPENED SHORT at 2063.4 | Stop loss: 2073.7356892857147 | Take profit: 2032.4209660714287 +2025-03-10 14:50:17,446 - INFO - CLOSED short at 2066.36 | PnL: -0.14% | $-0.48 +2025-03-10 14:50:17,857 - INFO - OPENED SHORT at 2071.04 | Stop loss: 2081.413889285714 | Take profit: 2039.9463660714284 +2025-03-10 14:50:17,882 - INFO - CLOSED short at 2070.01 | PnL: 0.05% | $-0.10 +2025-03-10 14:50:18,400 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.8411892857143 | Take profit: 2033.5044660714286 +2025-03-10 14:50:18,430 - INFO - CLOSED short at 2065.3 | PnL: -0.04% | $-0.27 +2025-03-10 14:50:18,760 - INFO - OPENED SHORT at 2071.35 | Stop loss: 2081.725439285714 | Take profit: 2040.2517160714285 +2025-03-10 14:50:18,780 - INFO - CLOSED short at 2070.9 | PnL: 0.02% | $-0.15 +2025-03-10 14:50:22,303 - INFO - OPENED SHORT at 2113.24 | Stop loss: 2123.824889285714 | Take profit: 2081.513366071428 +2025-03-10 14:50:22,326 - INFO - CLOSED short at 2112.99 | PnL: 0.01% | $-0.17 +2025-03-10 14:50:23,098 - INFO - OPENED SHORT at 2095.29 | Stop loss: 2105.7851392857146 | Take profit: 2063.8326160714287 +2025-03-10 14:50:23,120 - INFO - CLOSED short at 2093.46 | PnL: 0.09% | $-0.02 +2025-03-10 14:50:23,142 - INFO - OPENED LONG at 2093.33 | Stop loss: 2082.8446607142855 | Take profit: 2124.7579839285713 +2025-03-10 14:50:23,196 - INFO - CLOSED long at 2091.1 | PnL: -0.11% | $-0.40 +2025-03-10 14:50:23,343 - INFO - OPENED LONG at 2088.44 | Stop loss: 2077.979110714286 | Take profit: 2119.794633928572 +2025-03-10 14:50:23,379 - INFO - CLOSED long at 2083.97 | PnL: -0.21% | $-0.61 +2025-03-10 14:50:24,737 - INFO - OPENED LONG at 2104.73 | Stop loss: 2094.187660714286 | Take profit: 2136.3289839285717 +2025-03-10 14:50:24,761 - INFO - CLOSED long at 2107.25 | PnL: 0.12% | $0.04 +2025-03-10 14:50:26,094 - INFO - OPENED LONG at 2126.43 | Stop loss: 2115.779160714286 | Take profit: 2158.3544839285714 +2025-03-10 14:50:26,129 - INFO - CLOSED long at 2124.49 | PnL: -0.09% | $-0.37 +2025-03-10 14:50:27,035 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.04, Avg Loss=$-0.29 +2025-03-10 14:50:27,035 - INFO - Episode 37: Reward=-10.92, Balance=$97.44, Win Rate=10.0%, Trades=10, Episode PnL=$-2.56, Total PnL=$-110.44, Max Drawdown=2.6%, Pred Accuracy=99.6% +2025-03-10 14:50:27,035 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:50:28,853 - INFO - OPENED LONG at 2066.24 | Stop loss: 2055.8901107142856 | Take profit: 2097.2616339285714 +2025-03-10 14:50:28,877 - INFO - CLOSED long at 2067.1 | PnL: 0.04% | $-0.12 +2025-03-10 14:50:29,115 - INFO - OPENED LONG at 2060.9 | Stop loss: 2050.576810714286 | Take profit: 2091.8415339285716 +2025-03-10 14:50:29,151 - INFO - CLOSED long at 2060.65 | PnL: -0.01% | $-0.22 +2025-03-10 14:50:30,996 - INFO - OPENED SHORT at 2074.3 | Stop loss: 2084.690189285714 | Take profit: 2043.1574660714286 +2025-03-10 14:50:31,054 - INFO - CLOSED short at 2075.01 | PnL: -0.03% | $-0.27 +2025-03-10 14:50:31,741 - INFO - OPENED SHORT at 2065.3 | Stop loss: 2075.645189285715 | Take profit: 2034.2924660714286 +2025-03-10 14:50:31,784 - INFO - CLOSED short at 2064.31 | PnL: 0.05% | $-0.10 +2025-03-10 14:50:32,230 - INFO - OPENED LONG at 2068.19 | Stop loss: 2057.8303607142857 | Take profit: 2099.2408839285717 +2025-03-10 14:50:32,292 - INFO - CLOSED long at 2070.67 | PnL: 0.12% | $0.04 +2025-03-10 14:50:33,444 - INFO - OPENED LONG at 2058.09 | Stop loss: 2047.7808607142858 | Take profit: 2088.989383928572 +2025-03-10 14:50:33,495 - INFO - CLOSED long at 2056.77 | PnL: -0.06% | $-0.32 +2025-03-10 14:50:34,223 - INFO - OPENED SHORT at 2069.81 | Stop loss: 2080.1777392857143 | Take profit: 2038.7348160714284 +2025-03-10 14:50:34,251 - INFO - CLOSED short at 2070.41 | PnL: -0.03% | $-0.25 +2025-03-10 14:50:35,199 - INFO - OPENED LONG at 2119.14 | Stop loss: 2108.5256107142854 | Take profit: 2150.9551339285717 +2025-03-10 14:50:35,263 - INFO - STOP LOSS hit for long at 2108.5256107142854 | PnL: -0.50% | $-1.18 +2025-03-10 14:50:36,814 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.576060714286 | Take profit: 2122.4437839285715 +2025-03-10 14:50:36,836 - INFO - CLOSED long at 2091.95 | PnL: 0.04% | $-0.11 +2025-03-10 14:50:37,052 - INFO - OPENED LONG at 2099.89 | Stop loss: 2089.3718607142855 | Take profit: 2131.416383928571 +2025-03-10 14:50:37,077 - INFO - CLOSED long at 2100.89 | PnL: 0.05% | $-0.10 +2025-03-10 14:50:38,243 - INFO - OPENED SHORT at 2117.6 | Stop loss: 2128.206689285714 | Take profit: 2085.8079660714284 +2025-03-10 14:50:38,270 - INFO - CLOSED short at 2115.21 | PnL: 0.11% | $0.02 +2025-03-10 14:50:39,195 - INFO - OPENED LONG at 2121.19 | Stop loss: 2110.565360714286 | Take profit: 2153.035883928572 +2025-03-10 14:50:39,223 - INFO - CLOSED long at 2124.14 | PnL: 0.14% | $0.08 +2025-03-10 14:50:39,556 - INFO - OPENED LONG at 2113.04 | Stop loss: 2102.456110714286 | Take profit: 2144.7636339285714 +2025-03-10 14:50:39,578 - INFO - CLOSED long at 2108.73 | PnL: -0.20% | $-0.59 +2025-03-10 14:50:39,818 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.05, Avg Loss=$-0.33 +2025-03-10 14:50:39,819 - INFO - Episode 38: Reward=-9.56, Balance=$96.88, Win Rate=23.1%, Trades=13, Episode PnL=$-3.12, Total PnL=$-113.56, Max Drawdown=3.1%, Pred Accuracy=99.6% +2025-03-10 14:50:39,820 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:50:42,415 - INFO - OPENED LONG at 2060.9 | Stop loss: 2050.576810714286 | Take profit: 2091.8415339285716 +2025-03-10 14:50:42,451 - INFO - CLOSED long at 2060.65 | PnL: -0.01% | $-0.22 +2025-03-10 14:50:43,660 - INFO - OPENED LONG at 2058.15 | Stop loss: 2047.8405607142859 | Take profit: 2089.0502839285714 +2025-03-10 14:50:43,685 - INFO - CLOSED long at 2059.8 | PnL: 0.08% | $-0.04 +2025-03-10 14:50:43,704 - INFO - OPENED LONG at 2061.66 | Stop loss: 2051.3330107142856 | Take profit: 2092.6129339285712 +2025-03-10 14:50:43,729 - INFO - CLOSED long at 2061.5 | PnL: -0.01% | $-0.21 +2025-03-10 14:50:48,841 - INFO - OPENED SHORT at 2103.33 | Stop loss: 2113.865339285714 | Take profit: 2071.7520160714284 +2025-03-10 14:50:48,865 - INFO - CLOSED short at 2100.5 | PnL: 0.13% | $0.07 +2025-03-10 14:50:48,946 - INFO - OPENED LONG at 2102.19 | Stop loss: 2091.6603607142856 | Take profit: 2133.7508839285715 +2025-03-10 14:50:48,988 - INFO - CLOSED long at 2099.25 | PnL: -0.14% | $-0.47 +2025-03-10 14:50:49,028 - INFO - OPENED LONG at 2100.69 | Stop loss: 2090.167860714286 | Take profit: 2132.2283839285715 +2025-03-10 14:50:49,062 - INFO - CLOSED long at 2104.83 | PnL: 0.20% | $0.19 +2025-03-10 14:50:50,942 - INFO - OPENED LONG at 2102.0 | Stop loss: 2091.4713107142857 | Take profit: 2133.558033928571 +2025-03-10 14:50:50,963 - INFO - CLOSED long at 2103.41 | PnL: 0.07% | $-0.06 +2025-03-10 14:50:53,491 - INFO - OPENED LONG at 2113.34 | Stop loss: 2102.7546107142857 | Take profit: 2145.0681339285716 +2025-03-10 14:50:53,515 - INFO - CLOSED long at 2114.71 | PnL: 0.06% | $-0.07 +2025-03-10 14:50:53,596 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.13, Avg Loss=$-0.18 +2025-03-10 14:50:53,597 - INFO - Episode 39: Reward=-6.80, Balance=$99.18, Win Rate=25.0%, Trades=8, Episode PnL=$-0.82, Total PnL=$-114.38, Max Drawdown=0.9%, Pred Accuracy=99.7% +2025-03-10 14:50:53,597 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:50:56,853 - INFO - OPENED LONG at 2059.02 | Stop loss: 2048.7062107142856 | Take profit: 2089.9333339285713 +2025-03-10 14:50:56,875 - INFO - CLOSED long at 2058.89 | PnL: -0.01% | $-0.21 +2025-03-10 14:50:57,419 - INFO - OPENED LONG at 2067.01 | Stop loss: 2056.656260714286 | Take profit: 2098.0431839285716 +2025-03-10 14:50:57,439 - INFO - CLOSED long at 2065.69 | PnL: -0.06% | $-0.32 +2025-03-10 14:50:57,843 - INFO - OPENED SHORT at 2069.87 | Stop loss: 2080.238039285714 | Take profit: 2038.7939160714284 +2025-03-10 14:50:57,864 - INFO - CLOSED short at 2067.33 | PnL: 0.12% | $0.04 +2025-03-10 14:50:58,396 - INFO - OPENED SHORT at 2070.35 | Stop loss: 2080.7204392857143 | Take profit: 2039.2667160714284 +2025-03-10 14:50:58,427 - INFO - CLOSED short at 2070.61 | PnL: -0.01% | $-0.22 +2025-03-10 14:50:59,463 - INFO - OPENED LONG at 2065.7 | Stop loss: 2055.3528107142856 | Take profit: 2096.7135339285715 +2025-03-10 14:50:59,499 - INFO - CLOSED long at 2065.8 | PnL: 0.00% | $-0.19 +2025-03-10 14:51:00,518 - INFO - OPENED LONG at 2062.55 | Stop loss: 2052.218560714286 | Take profit: 2093.5162839285717 +2025-03-10 14:51:00,554 - INFO - CLOSED long at 2065.12 | PnL: 0.12% | $0.05 +2025-03-10 14:51:02,699 - INFO - OPENED SHORT at 2090.0 | Stop loss: 2100.4686892857144 | Take profit: 2058.6219660714287 +2025-03-10 14:51:02,736 - INFO - CLOSED short at 2099.53 | PnL: -0.46% | $-1.09 +2025-03-10 14:51:03,824 - INFO - OPENED SHORT at 2085.8 | Stop loss: 2096.247689285715 | Take profit: 2054.484966071429 +2025-03-10 14:51:03,864 - INFO - CLOSED short at 2084.72 | PnL: 0.05% | $-0.09 +2025-03-10 14:51:04,995 - INFO - OPENED LONG at 2103.52 | Stop loss: 2092.9837107142857 | Take profit: 2135.100833928572 +2025-03-10 14:51:05,019 - INFO - CLOSED long at 2104.4 | PnL: 0.04% | $-0.11 +2025-03-10 14:51:05,638 - INFO - OPENED LONG at 2113.1 | Stop loss: 2102.5158107142856 | Take profit: 2144.8245339285713 +2025-03-10 14:51:05,687 - INFO - CLOSED long at 2112.11 | PnL: -0.05% | $-0.28 +2025-03-10 14:51:06,074 - INFO - OPENED LONG at 2114.71 | Stop loss: 2104.117760714286 | Take profit: 2146.458683928571 +2025-03-10 14:51:06,100 - INFO - CLOSED long at 2117.6 | PnL: 0.14% | $0.07 +2025-03-10 14:51:08,097 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.05, Avg Loss=$-0.32 +2025-03-10 14:51:08,099 - INFO - Episode 40: Reward=-9.02, Balance=$97.64, Win Rate=27.3%, Trades=11, Episode PnL=$-2.36, Total PnL=$-116.74, Max Drawdown=2.4%, Pred Accuracy=99.7% +2025-03-10 14:51:08,255 - INFO - Model saved to checkpoints/trading_agent_episode_40.pt +2025-03-10 14:51:08,256 - INFO - Checkpoint saved at episode 40 +2025-03-10 14:51:08,256 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:51:09,348 - INFO - Visualization saved for episode 40 +2025-03-10 14:51:10,978 - INFO - Visualization saved for episode 40 +2025-03-10 14:51:11,487 - INFO - OPENED LONG at 2071.36 | Stop loss: 2060.9845107142855 | Take profit: 2102.4584339285716 +2025-03-10 14:51:11,513 - INFO - CLOSED long at 2072.75 | PnL: 0.07% | $-0.07 +2025-03-10 14:51:12,385 - INFO - OPENED SHORT at 2067.11 | Stop loss: 2077.4642392857145 | Take profit: 2036.075316071429 +2025-03-10 14:51:12,406 - INFO - CLOSED short at 2067.86 | PnL: -0.04% | $-0.27 +2025-03-10 14:51:12,802 - INFO - OPENED LONG at 2064.99 | Stop loss: 2054.6463607142855 | Take profit: 2095.9928839285712 +2025-03-10 14:51:12,839 - INFO - CLOSED long at 2065.83 | PnL: 0.04% | $-0.12 +2025-03-10 14:51:15,464 - INFO - OPENED LONG at 2073.23 | Stop loss: 2062.8451607142856 | Take profit: 2104.3564839285714 +2025-03-10 14:51:15,492 - INFO - CLOSED long at 2070.0 | PnL: -0.16% | $-0.50 +2025-03-10 14:51:16,280 - INFO - OPENED SHORT at 2071.35 | Stop loss: 2081.725439285714 | Take profit: 2040.2517160714285 +2025-03-10 14:51:16,304 - INFO - CLOSED short at 2070.9 | PnL: 0.02% | $-0.15 +2025-03-10 14:51:16,861 - INFO - OPENED LONG at 2069.97 | Stop loss: 2059.6014607142856 | Take profit: 2101.0475839285714 +2025-03-10 14:51:16,893 - INFO - CLOSED long at 2067.7 | PnL: -0.11% | $-0.41 +2025-03-10 14:51:17,095 - INFO - OPENED SHORT at 2068.1 | Stop loss: 2078.4591892857143 | Take profit: 2037.0504660714284 +2025-03-10 14:51:17,121 - INFO - CLOSED short at 2069.0 | PnL: -0.04% | $-0.28 +2025-03-10 14:51:17,753 - INFO - OPENED LONG at 2058.65 | Stop loss: 2048.338060714286 | Take profit: 2089.5577839285716 +2025-03-10 14:51:17,788 - INFO - CLOSED long at 2056.77 | PnL: -0.09% | $-0.37 +2025-03-10 14:51:17,999 - INFO - OPENED SHORT at 2051.99 | Stop loss: 2062.268639285714 | Take profit: 2021.1821160714283 +2025-03-10 14:51:18,069 - INFO - CLOSED short at 2056.85 | PnL: -0.24% | $-0.65 +2025-03-10 14:51:18,929 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.479089285714 | Take profit: 2044.9107660714285 +2025-03-10 14:51:18,950 - INFO - CLOSED short at 2077.61 | PnL: -0.07% | $-0.33 +2025-03-10 14:51:19,605 - INFO - OPENED SHORT at 2107.43 | Stop loss: 2117.985839285714 | Take profit: 2075.790516071428 +2025-03-10 14:51:19,632 - INFO - CLOSED short at 2110.6 | PnL: -0.15% | $-0.48 +2025-03-10 14:51:20,933 - INFO - OPENED LONG at 2085.8 | Stop loss: 2075.352310714286 | Take profit: 2117.1150339285714 +2025-03-10 14:51:20,956 - INFO - CLOSED long at 2084.72 | PnL: -0.05% | $-0.29 +2025-03-10 14:51:21,617 - INFO - OPENED SHORT at 2099.73 | Stop loss: 2110.2473392857146 | Take profit: 2068.2060160714286 +2025-03-10 14:51:21,640 - INFO - CLOSED short at 2106.15 | PnL: -0.31% | $-0.77 +2025-03-10 14:51:21,950 - INFO - OPENED LONG at 2100.0 | Stop loss: 2089.481310714286 | Take profit: 2131.5280339285714 +2025-03-10 14:51:22,039 - INFO - CLOSED long at 2103.41 | PnL: 0.16% | $0.12 +2025-03-10 14:51:23,069 - INFO - OPENED SHORT at 2135.51 | Stop loss: 2146.206239285714 | Take profit: 2103.4493160714287 +2025-03-10 14:51:23,105 - INFO - CLOSED short at 2136.09 | PnL: -0.03% | $-0.24 +2025-03-10 14:51:23,253 - INFO - OPENED LONG at 2127.47 | Stop loss: 2116.8139607142853 | Take profit: 2159.410083928571 +2025-03-10 14:51:23,277 - INFO - CLOSED long at 2129.51 | PnL: 0.10% | $-0.01 +2025-03-10 14:51:23,857 - INFO - OPENED SHORT at 2124.44 | Stop loss: 2135.0808892857144 | Take profit: 2092.545366071429 +2025-03-10 14:51:23,884 - INFO - CLOSED short at 2124.94 | PnL: -0.02% | $-0.23 +2025-03-10 14:51:24,374 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.12, Avg Loss=$-0.32 +2025-03-10 14:51:24,375 - INFO - Episode 41: Reward=-21.31, Balance=$94.93, Win Rate=5.9%, Trades=17, Episode PnL=$-5.07, Total PnL=$-121.81, Max Drawdown=5.1%, Pred Accuracy=99.6% +2025-03-10 14:51:24,375 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:51:29,772 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.1538107142856 | Take profit: 2096.5105339285715 +2025-03-10 14:51:29,849 - INFO - CLOSED long at 2065.07 | PnL: -0.02% | $-0.24 +2025-03-10 14:51:30,182 - INFO - OPENED LONG at 2058.09 | Stop loss: 2047.7808607142858 | Take profit: 2088.989383928572 +2025-03-10 14:51:30,215 - INFO - CLOSED long at 2058.65 | PnL: 0.03% | $-0.14 +2025-03-10 14:51:34,841 - INFO - OPENED LONG at 2118.19 | Stop loss: 2107.5803607142857 | Take profit: 2149.9908839285717 +2025-03-10 14:51:34,887 - INFO - CLOSED long at 2118.2 | PnL: 0.00% | $-0.20 +2025-03-10 14:51:36,371 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.00, Avg Loss=$-0.19 +2025-03-10 14:51:36,372 - INFO - Episode 42: Reward=-5.20, Balance=$99.42, Win Rate=0.0%, Trades=3, Episode PnL=$-0.58, Total PnL=$-122.39, Max Drawdown=0.6%, Pred Accuracy=99.6% +2025-03-10 14:51:36,372 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:51:37,659 - INFO - OPENED LONG at 2067.84 | Stop loss: 2057.4821107142857 | Take profit: 2098.8856339285717 +2025-03-10 14:51:37,694 - INFO - CLOSED long at 2067.11 | PnL: -0.04% | $-0.27 +2025-03-10 14:51:39,582 - INFO - OPENED LONG at 2058.15 | Stop loss: 2047.8405607142859 | Take profit: 2089.0502839285714 +2025-03-10 14:51:39,664 - INFO - CLOSED long at 2061.5 | PnL: 0.16% | $0.12 +2025-03-10 14:51:43,032 - INFO - OPENED SHORT at 2065.72 | Stop loss: 2076.067289285714 | Take profit: 2034.7061660714282 +2025-03-10 14:51:43,056 - INFO - CLOSED short at 2070.31 | PnL: -0.22% | $-0.64 +2025-03-10 14:51:43,257 - INFO - OPENED SHORT at 2071.8 | Stop loss: 2082.177689285714 | Take profit: 2040.6949660714288 +2025-03-10 14:51:43,289 - INFO - CLOSED short at 2074.9 | PnL: -0.15% | $-0.49 +2025-03-10 14:51:43,623 - INFO - OPENED LONG at 2140.01 | Stop loss: 2129.291260714286 | Take profit: 2172.138183928572 +2025-03-10 14:51:43,655 - INFO - CLOSED long at 2134.78 | PnL: -0.24% | $-0.67 +2025-03-10 14:51:44,000 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.0283107142855 | Take profit: 2142.2870339285714 +2025-03-10 14:51:44,023 - INFO - CLOSED long at 2109.05 | PnL: -0.07% | $-0.34 +2025-03-10 14:51:44,307 - INFO - OPENED SHORT at 2108.71 | Stop loss: 2119.2722392857145 | Take profit: 2077.0513160714286 +2025-03-10 14:51:44,332 - INFO - CLOSED short at 2106.49 | PnL: 0.11% | $0.01 +2025-03-10 14:51:44,665 - INFO - OPENED LONG at 2106.39 | Stop loss: 2095.8393607142857 | Take profit: 2138.013883928571 +2025-03-10 14:51:44,687 - INFO - CLOSED long at 2100.74 | PnL: -0.27% | $-0.71 +2025-03-10 14:51:44,726 - INFO - OPENED LONG at 2104.68 | Stop loss: 2094.1379107142857 | Take profit: 2136.2782339285714 +2025-03-10 14:51:44,748 - INFO - CLOSED long at 2101.51 | PnL: -0.15% | $-0.48 +2025-03-10 14:51:45,013 - INFO - OPENED SHORT at 2094.08 | Stop loss: 2104.569089285714 | Take profit: 2062.6407660714285 +2025-03-10 14:51:45,035 - INFO - CLOSED short at 2088.35 | PnL: 0.27% | $0.33 +2025-03-10 14:51:45,490 - INFO - OPENED SHORT at 2088.1 | Stop loss: 2098.559189285714 | Take profit: 2056.7504660714285 +2025-03-10 14:51:45,512 - INFO - CLOSED short at 2089.96 | PnL: -0.09% | $-0.36 +2025-03-10 14:51:45,979 - INFO - OPENED LONG at 2099.73 | Stop loss: 2089.2126607142854 | Take profit: 2131.253983928572 +2025-03-10 14:51:46,005 - INFO - CLOSED long at 2106.15 | PnL: 0.31% | $0.39 +2025-03-10 14:51:47,709 - INFO - OPENED LONG at 2126.43 | Stop loss: 2115.779160714286 | Take profit: 2158.3544839285714 +2025-03-10 14:51:47,742 - INFO - CLOSED long at 2124.49 | PnL: -0.09% | $-0.37 +2025-03-10 14:51:48,562 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.22, Avg Loss=$-0.48 +2025-03-10 14:51:48,563 - INFO - Episode 43: Reward=-10.32, Balance=$96.53, Win Rate=30.8%, Trades=13, Episode PnL=$-3.47, Total PnL=$-125.87, Max Drawdown=3.5%, Pred Accuracy=99.6% +2025-03-10 14:51:48,564 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:51:49,691 - INFO - OPENED LONG at 2068.69 | Stop loss: 2058.327860714286 | Take profit: 2099.7483839285715 +2025-03-10 14:51:49,713 - INFO - CLOSED long at 2067.84 | PnL: -0.04% | $-0.28 +2025-03-10 14:51:50,099 - INFO - OPENED SHORT at 2066.15 | Stop loss: 2076.4994392857143 | Take profit: 2035.1297160714287 +2025-03-10 14:51:50,120 - INFO - CLOSED short at 2065.26 | PnL: 0.04% | $-0.11 +2025-03-10 14:51:50,983 - INFO - OPENED SHORT at 2063.39 | Stop loss: 2073.7256392857144 | Take profit: 2032.4111160714285 +2025-03-10 14:51:51,009 - INFO - CLOSED short at 2064.79 | PnL: -0.07% | $-0.33 +2025-03-10 14:51:51,353 - INFO - OPENED LONG at 2059.96 | Stop loss: 2049.6415107142857 | Take profit: 2090.887433928571 +2025-03-10 14:51:51,375 - INFO - CLOSED long at 2059.46 | PnL: -0.02% | $-0.24 +2025-03-10 14:51:52,695 - INFO - OPENED LONG at 2063.97 | Stop loss: 2053.6314607142854 | Take profit: 2094.9575839285712 +2025-03-10 14:51:52,721 - INFO - CLOSED long at 2064.5 | PnL: 0.03% | $-0.15 +2025-03-10 14:51:53,876 - INFO - OPENED LONG at 2067.19 | Stop loss: 2056.835360714286 | Take profit: 2098.2258839285714 +2025-03-10 14:51:53,902 - INFO - CLOSED long at 2065.5 | PnL: -0.08% | $-0.36 +2025-03-10 14:51:54,415 - INFO - OPENED LONG at 2051.99 | Stop loss: 2041.7113607142855 | Take profit: 2082.797883928571 +2025-03-10 14:51:54,458 - INFO - CLOSED long at 2056.85 | PnL: 0.24% | $0.27 +2025-03-10 14:51:56,363 - INFO - OPENED SHORT at 2100.69 | Stop loss: 2111.2121392857143 | Take profit: 2069.1516160714286 +2025-03-10 14:51:56,388 - INFO - CLOSED short at 2104.83 | PnL: -0.20% | $-0.58 +2025-03-10 14:51:59,118 - INFO - OPENED SHORT at 2113.7 | Stop loss: 2124.2871892857142 | Take profit: 2081.9664660714284 +2025-03-10 14:51:59,140 - INFO - CLOSED short at 2113.0 | PnL: 0.03% | $-0.13 +2025-03-10 14:51:59,162 - INFO - OPENED LONG at 2115.26 | Stop loss: 2104.665010714286 | Take profit: 2147.0169339285717 +2025-03-10 14:51:59,184 - INFO - CLOSED long at 2113.61 | PnL: -0.08% | $-0.35 +2025-03-10 14:51:59,720 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.8047392857143 | Take profit: 2083.4538160714287 +2025-03-10 14:51:59,756 - INFO - CLOSED short at 2118.19 | PnL: -0.14% | $-0.47 +2025-03-10 14:51:59,971 - INFO - OPENED LONG at 2129.3 | Stop loss: 2118.634810714286 | Take profit: 2161.2675339285715 +2025-03-10 14:52:00,023 - INFO - CLOSED long at 2136.26 | PnL: 0.33% | $0.44 +2025-03-10 14:52:01,020 - INFO - OPENED SHORT at 2110.3 | Stop loss: 2120.8701892857143 | Take profit: 2078.6174660714287 +2025-03-10 14:52:01,070 - INFO - CLOSED short at 2108.68 | PnL: 0.08% | $-0.05 +2025-03-10 14:52:01,418 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.35, Avg Loss=$-0.28 +2025-03-10 14:52:01,419 - INFO - Episode 44: Reward=-12.93, Balance=$97.66, Win Rate=15.4%, Trades=13, Episode PnL=$-2.34, Total PnL=$-128.20, Max Drawdown=2.7%, Pred Accuracy=99.7% +2025-03-10 14:52:01,419 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:52:06,239 - INFO - OPENED LONG at 2075.01 | Stop loss: 2064.616260714286 | Take profit: 2106.1631839285715 +2025-03-10 14:52:06,267 - INFO - CLOSED long at 2072.6 | PnL: -0.12% | $-0.43 +2025-03-10 14:52:06,774 - INFO - OPENED SHORT at 2066.38 | Stop loss: 2076.7305892857144 | Take profit: 2035.3562660714288 +2025-03-10 14:52:06,921 - INFO - CLOSED short at 2063.95 | PnL: 0.12% | $0.03 +2025-03-10 14:52:08,666 - INFO - OPENED LONG at 2065.06 | Stop loss: 2054.7160107142854 | Take profit: 2096.0639339285713 +2025-03-10 14:52:08,688 - INFO - CLOSED long at 2064.11 | PnL: -0.05% | $-0.29 +2025-03-10 14:52:10,255 - INFO - OPENED SHORT at 2140.01 | Stop loss: 2150.7287392857143 | Take profit: 2107.8818160714286 +2025-03-10 14:52:10,291 - INFO - CLOSED short at 2134.78 | PnL: 0.24% | $0.28 +2025-03-10 14:52:10,494 - INFO - OPENED SHORT at 2117.24 | Stop loss: 2127.844889285714 | Take profit: 2085.4533660714283 +2025-03-10 14:52:10,524 - INFO - CLOSED short at 2119.93 | PnL: -0.13% | $-0.45 +2025-03-10 14:52:10,723 - INFO - OPENED LONG at 2110.6 | Stop loss: 2100.0283107142855 | Take profit: 2142.2870339285714 +2025-03-10 14:52:10,749 - INFO - CLOSED long at 2109.05 | PnL: -0.07% | $-0.34 +2025-03-10 14:52:10,906 - INFO - OPENED LONG at 2112.99 | Stop loss: 2102.4063607142853 | Take profit: 2144.712883928571 +2025-03-10 14:52:10,950 - INFO - CLOSED long at 2120.81 | PnL: 0.37% | $0.53 +2025-03-10 14:52:11,047 - INFO - OPENED LONG at 2110.9 | Stop loss: 2100.326810714286 | Take profit: 2142.5915339285716 +2025-03-10 14:52:11,075 - INFO - CLOSED long at 2108.71 | PnL: -0.10% | $-0.40 +2025-03-10 14:52:11,529 - INFO - OPENED LONG at 2100.74 | Stop loss: 2090.2176107142855 | Take profit: 2132.2791339285714 +2025-03-10 14:52:11,553 - INFO - CLOSED long at 2103.86 | PnL: 0.15% | $0.10 +2025-03-10 14:52:12,303 - INFO - OPENED LONG at 2083.41 | Stop loss: 2072.9742607142857 | Take profit: 2114.6891839285713 +2025-03-10 14:52:12,328 - INFO - CLOSED long at 2085.09 | PnL: 0.08% | $-0.04 +2025-03-10 14:52:13,823 - INFO - OPENED LONG at 2110.87 | Stop loss: 2100.2969607142854 | Take profit: 2142.5610839285714 +2025-03-10 14:52:13,846 - INFO - CLOSED long at 2110.4 | PnL: -0.02% | $-0.24 +2025-03-10 14:52:14,653 - INFO - OPENED LONG at 2121.2 | Stop loss: 2110.5753107142855 | Take profit: 2153.0460339285714 +2025-03-10 14:52:14,678 - INFO - CLOSED long at 2125.11 | PnL: 0.18% | $0.17 +2025-03-10 14:52:16,042 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.22, Avg Loss=$-0.31 +2025-03-10 14:52:16,042 - INFO - Episode 45: Reward=-5.25, Balance=$98.92, Win Rate=41.7%, Trades=12, Episode PnL=$-1.08, Total PnL=$-129.28, Max Drawdown=1.2%, Pred Accuracy=99.7% +2025-03-10 14:52:16,043 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:52:16,928 - INFO - OPENED SHORT at 2065.26 | Stop loss: 2075.6049892857145 | Take profit: 2034.2530660714287 +2025-03-10 14:52:16,949 - INFO - CLOSED short at 2067.89 | PnL: -0.13% | $-0.45 +2025-03-10 14:52:17,488 - INFO - OPENED SHORT at 2066.1 | Stop loss: 2076.4491892857145 | Take profit: 2035.0804660714284 +2025-03-10 14:52:17,531 - INFO - CLOSED short at 2065.28 | PnL: 0.04% | $-0.12 +2025-03-10 14:52:17,708 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.037139285714 | Take profit: 2034.6766160714287 +2025-03-10 14:52:17,731 - INFO - CLOSED short at 2067.88 | PnL: -0.11% | $-0.41 +2025-03-10 14:52:18,038 - INFO - OPENED SHORT at 2063.59 | Stop loss: 2073.9266392857144 | Take profit: 2032.6081160714286 +2025-03-10 14:52:18,061 - INFO - CLOSED short at 2064.96 | PnL: -0.07% | $-0.33 +2025-03-10 14:52:18,600 - INFO - OPENED LONG at 2060.91 | Stop loss: 2050.5867607142854 | Take profit: 2091.851683928571 +2025-03-10 14:52:18,681 - INFO - CLOSED long at 2061.13 | PnL: 0.01% | $-0.17 +2025-03-10 14:52:20,650 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.057139285714 | Take profit: 2038.6166160714286 +2025-03-10 14:52:20,698 - INFO - CLOSED short at 2070.8 | PnL: -0.05% | $-0.30 +2025-03-10 14:52:21,246 - INFO - OPENED LONG at 2066.89 | Stop loss: 2056.5368607142855 | Take profit: 2097.9213839285712 +2025-03-10 14:52:21,272 - INFO - CLOSED long at 2067.88 | PnL: 0.05% | $-0.10 +2025-03-10 14:52:21,681 - INFO - OPENED LONG at 2064.5 | Stop loss: 2054.1588107142857 | Take profit: 2095.4955339285716 +2025-03-10 14:52:21,707 - INFO - CLOSED long at 2066.33 | PnL: 0.09% | $-0.02 +2025-03-10 14:52:24,351 - INFO - OPENED LONG at 2100.02 | Stop loss: 2089.5012107142857 | Take profit: 2131.5483339285715 +2025-03-10 14:52:24,372 - INFO - CLOSED long at 2098.39 | PnL: -0.08% | $-0.35 +2025-03-10 14:52:25,126 - INFO - OPENED LONG at 2088.1 | Stop loss: 2077.6408107142856 | Take profit: 2119.4495339285713 +2025-03-10 14:52:25,148 - INFO - CLOSED long at 2089.96 | PnL: 0.09% | $-0.02 +2025-03-10 14:52:26,318 - INFO - OPENED SHORT at 2110.4 | Stop loss: 2120.9706892857143 | Take profit: 2078.7159660714287 +2025-03-10 14:52:26,363 - INFO - CLOSED short at 2113.0 | PnL: -0.12% | $-0.43 +2025-03-10 14:52:27,809 - INFO - OPENED SHORT at 2119.48 | Stop loss: 2130.0960892857142 | Take profit: 2087.6597660714283 +2025-03-10 14:52:27,840 - INFO - CLOSED short at 2121.53 | PnL: -0.10% | $-0.38 +2025-03-10 14:52:28,051 - INFO - OPENED LONG at 2120.84 | Stop loss: 2110.217110714286 | Take profit: 2152.6806339285718 +2025-03-10 14:52:28,151 - INFO - CLOSED long at 2115.45 | PnL: -0.25% | $-0.68 +2025-03-10 14:52:28,608 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.00, Avg Loss=$-0.29 +2025-03-10 14:52:28,609 - INFO - Episode 46: Reward=76.01, Balance=$96.24, Win Rate=0.0%, Trades=13, Episode PnL=$-3.76, Total PnL=$-133.04, Max Drawdown=3.8%, Pred Accuracy=99.8% +2025-03-10 14:52:28,609 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:52:29,279 - INFO - OPENED SHORT at 2067.79 | Stop loss: 2078.1476392857144 | Take profit: 2036.7451160714286 +2025-03-10 14:52:29,303 - INFO - CLOSED short at 2067.46 | PnL: 0.02% | $-0.17 +2025-03-10 14:52:30,251 - INFO - OPENED SHORT at 2065.83 | Stop loss: 2076.177839285714 | Take profit: 2034.8145160714284 +2025-03-10 14:52:30,306 - INFO - CLOSED short at 2066.15 | PnL: -0.02% | $-0.23 +2025-03-10 14:52:32,359 - INFO - OPENED LONG at 2066.36 | Stop loss: 2056.0095107142856 | Take profit: 2097.383433928572 +2025-03-10 14:52:32,402 - INFO - CLOSED long at 2066.01 | PnL: -0.02% | $-0.23 +2025-03-10 14:52:32,533 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.6853392857142 | Take profit: 2036.2920160714286 +2025-03-10 14:52:32,559 - INFO - CLOSED short at 2067.01 | PnL: 0.02% | $-0.17 +2025-03-10 14:52:33,115 - INFO - OPENED SHORT at 2071.49 | Stop loss: 2081.866139285714 | Take profit: 2040.3896160714282 +2025-03-10 14:52:33,156 - INFO - CLOSED short at 2069.87 | PnL: 0.08% | $-0.04 +2025-03-10 14:52:33,683 - INFO - OPENED SHORT at 2066.5 | Stop loss: 2076.8511892857146 | Take profit: 2035.4744660714287 +2025-03-10 14:52:33,709 - INFO - CLOSED short at 2068.59 | PnL: -0.10% | $-0.40 +2025-03-10 14:52:34,112 - INFO - OPENED LONG at 2070.67 | Stop loss: 2060.2979607142856 | Take profit: 2101.7580839285715 +2025-03-10 14:52:34,141 - INFO - CLOSED long at 2069.78 | PnL: -0.04% | $-0.28 +2025-03-10 14:52:35,989 - INFO - OPENED LONG at 2065.12 | Stop loss: 2054.7757107142857 | Take profit: 2096.124833928571 +2025-03-10 14:52:36,022 - INFO - CLOSED long at 2068.33 | PnL: 0.16% | $0.11 +2025-03-10 14:52:38,140 - INFO - OPENED LONG at 2108.71 | Stop loss: 2098.1477607142856 | Take profit: 2140.3686839285715 +2025-03-10 14:52:38,166 - INFO - CLOSED long at 2106.49 | PnL: -0.11% | $-0.40 +2025-03-10 14:52:38,849 - INFO - OPENED LONG at 2099.59 | Stop loss: 2089.0733607142856 | Take profit: 2131.1118839285714 +2025-03-10 14:52:38,870 - INFO - CLOSED long at 2100.02 | PnL: 0.02% | $-0.15 +2025-03-10 14:52:38,870 - INFO - OPENED SHORT at 2100.02 | Stop loss: 2110.5387892857143 | Take profit: 2068.491666071429 +2025-03-10 14:52:38,894 - INFO - CLOSED short at 2098.39 | PnL: 0.08% | $-0.04 +2025-03-10 14:52:39,338 - INFO - OPENED LONG at 2081.49 | Stop loss: 2071.0638607142855 | Take profit: 2112.740383928571 +2025-03-10 14:52:39,364 - INFO - CLOSED long at 2080.38 | PnL: -0.05% | $-0.30 +2025-03-10 14:52:40,156 - INFO - OPENED LONG at 2094.7 | Stop loss: 2084.2078107142856 | Take profit: 2126.1485339285714 +2025-03-10 14:52:40,187 - INFO - CLOSED long at 2097.8 | PnL: 0.15% | $0.09 +2025-03-10 14:52:41,432 - INFO - OPENED SHORT at 2113.7 | Stop loss: 2124.2871892857142 | Take profit: 2081.9664660714284 +2025-03-10 14:52:41,464 - INFO - CLOSED short at 2113.0 | PnL: 0.03% | $-0.13 +2025-03-10 14:52:41,581 - INFO - OPENED SHORT at 2112.28 | Stop loss: 2122.8600892857144 | Take profit: 2080.5677660714287 +2025-03-10 14:52:41,676 - INFO - CLOSED short at 2112.26 | PnL: 0.00% | $-0.19 +2025-03-10 14:52:41,892 - INFO - OPENED LONG at 2117.39 | Stop loss: 2106.784360714286 | Take profit: 2149.178883928571 +2025-03-10 14:52:41,918 - INFO - CLOSED long at 2115.3 | PnL: -0.10% | $-0.38 +2025-03-10 14:52:43,926 - INFO - OPENED LONG at 2120.56 | Stop loss: 2109.9385107142857 | Take profit: 2152.3964339285712 +2025-03-10 14:52:43,950 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.10, Avg Loss=$-0.22 +2025-03-10 14:52:43,950 - INFO - Episode 47: Reward=78.17, Balance=$97.09, Win Rate=12.5%, Trades=16, Episode PnL=$-2.76, Total PnL=$-135.95, Max Drawdown=2.9%, Pred Accuracy=99.7% +2025-03-10 14:52:43,951 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:52:44,630 - INFO - OPENED LONG at 2073.9 | Stop loss: 2063.5118107142857 | Take profit: 2105.0365339285713 +2025-03-10 14:52:44,665 - INFO - CLOSED long at 2071.92 | PnL: -0.10% | $-0.39 +2025-03-10 14:52:45,629 - INFO - OPENED LONG at 2067.84 | Stop loss: 2057.4821107142857 | Take profit: 2098.8856339285717 +2025-03-10 14:52:45,657 - INFO - CLOSED long at 2067.11 | PnL: -0.04% | $-0.27 +2025-03-10 14:52:45,929 - INFO - OPENED SHORT at 2068.18 | Stop loss: 2078.539589285714 | Take profit: 2037.1292660714282 +2025-03-10 14:52:46,007 - INFO - CLOSED short at 2067.88 | PnL: 0.01% | $-0.17 +2025-03-10 14:52:46,800 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.2031392857143 | Take profit: 2027.9786160714284 +2025-03-10 14:52:46,831 - INFO - CLOSED short at 2059.3 | PnL: -0.02% | $-0.24 +2025-03-10 14:52:50,054 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3278107142855 | Take profit: 2101.7885339285713 +2025-03-10 14:52:50,078 - INFO - CLOSED long at 2070.8 | PnL: 0.00% | $-0.19 +2025-03-10 14:52:50,382 - INFO - OPENED LONG at 2075.07 | Stop loss: 2064.675960714286 | Take profit: 2106.2240839285714 +2025-03-10 14:52:50,409 - INFO - CLOSED long at 2074.35 | PnL: -0.03% | $-0.26 +2025-03-10 14:52:50,524 - INFO - OPENED SHORT at 2076.9 | Stop loss: 2087.3031892857143 | Take profit: 2045.7184660714286 +2025-03-10 14:52:50,547 - INFO - CLOSED short at 2075.61 | PnL: 0.06% | $-0.07 +2025-03-10 14:52:52,151 - INFO - OPENED LONG at 2060.7 | Stop loss: 2050.3778107142857 | Take profit: 2091.638533928571 +2025-03-10 14:52:52,193 - INFO - CLOSED long at 2062.54 | PnL: 0.09% | $-0.02 +2025-03-10 14:52:52,341 - INFO - OPENED LONG at 2069.34 | Stop loss: 2058.974610714286 | Take profit: 2100.4081339285717 +2025-03-10 14:52:52,377 - INFO - CLOSED long at 2069.81 | PnL: 0.02% | $-0.15 +2025-03-10 14:52:52,500 - INFO - OPENED SHORT at 2071.89 | Stop loss: 2082.268139285714 | Take profit: 2040.7836160714285 +2025-03-10 14:52:52,522 - INFO - CLOSED short at 2071.8 | PnL: 0.00% | $-0.19 +2025-03-10 14:52:53,033 - INFO - OPENED SHORT at 2126.99 | Stop loss: 2137.643639285714 | Take profit: 2095.057116071428 +2025-03-10 14:52:53,083 - INFO - CLOSED short at 2127.3 | PnL: -0.01% | $-0.22 +2025-03-10 14:52:55,998 - INFO - OPENED SHORT at 2106.15 | Stop loss: 2116.6994392857146 | Take profit: 2074.5297160714285 +2025-03-10 14:52:56,025 - INFO - CLOSED short at 2103.48 | PnL: 0.13% | $0.05 +2025-03-10 14:52:56,879 - INFO - OPENED LONG at 2112.26 | Stop loss: 2101.680010714286 | Take profit: 2143.9719339285716 +2025-03-10 14:52:56,904 - INFO - CLOSED long at 2110.99 | PnL: -0.06% | $-0.31 +2025-03-10 14:52:56,967 - INFO - OPENED LONG at 2112.61 | Stop loss: 2102.028260714286 | Take profit: 2144.3271839285717 +2025-03-10 14:52:56,989 - INFO - CLOSED long at 2118.72 | PnL: 0.29% | $0.37 +2025-03-10 14:52:57,685 - INFO - OPENED LONG at 2127.79 | Stop loss: 2117.1323607142854 | Take profit: 2159.7348839285714 +2025-03-10 14:52:57,710 - INFO - CLOSED long at 2124.38 | PnL: -0.16% | $-0.51 +2025-03-10 14:52:58,069 - INFO - OPENED SHORT at 2121.73 | Stop loss: 2132.3573392857143 | Take profit: 2089.8760160714287 +2025-03-10 14:52:58,097 - INFO - CLOSED short at 2120.0 | PnL: 0.08% | $-0.04 +2025-03-10 14:52:58,460 - INFO - OPENED SHORT at 2124.94 | Stop loss: 2135.5833892857145 | Take profit: 2093.0378660714287 +2025-03-10 14:52:58,490 - INFO - CLOSED short at 2121.17 | PnL: 0.18% | $0.15 +2025-03-10 14:52:58,938 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.19, Avg Loss=$-0.22 +2025-03-10 14:52:58,939 - INFO - Episode 48: Reward=-14.68, Balance=$97.55, Win Rate=17.6%, Trades=17, Episode PnL=$-2.45, Total PnL=$-138.40, Max Drawdown=2.6%, Pred Accuracy=99.6% +2025-03-10 14:52:58,940 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:53:00,886 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.273310714286 | Take profit: 2092.5520339285713 +2025-03-10 14:53:00,912 - INFO - CLOSED long at 2060.9 | PnL: -0.03% | $-0.27 +2025-03-10 14:53:01,022 - INFO - OPENED LONG at 2061.8 | Stop loss: 2051.472310714286 | Take profit: 2092.7550339285717 +2025-03-10 14:53:01,049 - INFO - CLOSED long at 2064.7 | PnL: 0.14% | $0.08 +2025-03-10 14:53:02,277 - INFO - OPENED SHORT at 2066.36 | Stop loss: 2076.7104892857146 | Take profit: 2035.3365660714287 +2025-03-10 14:53:02,326 - INFO - CLOSED short at 2066.01 | PnL: 0.02% | $-0.16 +2025-03-10 14:53:03,601 - INFO - OPENED SHORT at 2066.8 | Stop loss: 2077.152689285714 | Take profit: 2035.7699660714288 +2025-03-10 14:53:03,626 - INFO - CLOSED short at 2066.5 | PnL: 0.01% | $-0.17 +2025-03-10 14:53:04,133 - INFO - OPENED LONG at 2074.35 | Stop loss: 2063.9595607142855 | Take profit: 2105.4932839285716 +2025-03-10 14:53:04,157 - INFO - CLOSED long at 2073.27 | PnL: -0.05% | $-0.30 +2025-03-10 14:53:04,527 - INFO - OPENED SHORT at 2066.89 | Stop loss: 2077.2431392857143 | Take profit: 2035.8586160714285 +2025-03-10 14:53:04,550 - INFO - CLOSED short at 2067.88 | PnL: -0.05% | $-0.29 +2025-03-10 14:53:06,487 - INFO - OPENED LONG at 2139.54 | Stop loss: 2128.8236107142857 | Take profit: 2171.6611339285714 +2025-03-10 14:53:06,510 - INFO - CLOSED long at 2131.78 | PnL: -0.36% | $-0.91 +2025-03-10 14:53:07,148 - INFO - OPENED SHORT at 2107.43 | Stop loss: 2117.985839285714 | Take profit: 2075.790516071428 +2025-03-10 14:53:07,191 - INFO - CLOSED short at 2110.6 | PnL: -0.15% | $-0.49 +2025-03-10 14:53:08,752 - INFO - OPENED LONG at 2085.85 | Stop loss: 2075.4020607142857 | Take profit: 2117.1657839285717 +2025-03-10 14:53:08,788 - INFO - CLOSED long at 2088.66 | PnL: 0.13% | $0.07 +2025-03-10 14:53:09,740 - INFO - OPENED SHORT at 2102.0 | Stop loss: 2112.5286892857143 | Take profit: 2070.4419660714284 +2025-03-10 14:53:09,763 - INFO - CLOSED short at 2103.41 | PnL: -0.07% | $-0.32 +2025-03-10 14:53:10,512 - INFO - OPENED LONG at 2117.6 | Stop loss: 2106.9933107142856 | Take profit: 2149.3920339285714 +2025-03-10 14:53:10,535 - INFO - CLOSED long at 2117.6 | PnL: 0.00% | $-0.19 +2025-03-10 14:53:10,950 - INFO - OPENED SHORT at 2132.83 | Stop loss: 2143.512839285714 | Take profit: 2100.8095160714283 +2025-03-10 14:53:10,971 - INFO - CLOSED short at 2127.79 | PnL: 0.24% | $0.26 +2025-03-10 14:53:11,141 - INFO - OPENED SHORT at 2135.55 | Stop loss: 2146.246439285714 | Take profit: 2103.488716071429 +2025-03-10 14:53:11,180 - INFO - CLOSED short at 2131.23 | PnL: 0.20% | $0.20 +2025-03-10 14:53:12,158 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.15, Avg Loss=$-0.34 +2025-03-10 14:53:12,159 - INFO - Episode 49: Reward=-8.08, Balance=$97.51, Win Rate=30.8%, Trades=13, Episode PnL=$-2.49, Total PnL=$-140.89, Max Drawdown=3.0%, Pred Accuracy=99.6% +2025-03-10 14:53:12,160 - INFO - Reducing learning rate to 0.000010 +2025-03-10 14:53:12,160 - INFO - Early stopping triggered after 50 episodes without improvement +2025-03-10 14:53:12,310 - INFO - Model saved to models/trading_agent_final.pt +2025-03-10 14:53:13,422 - INFO - Exchange connection closed +2025-03-10 14:54:25,445 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 14:54:25,467 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 14:54:25,467 - INFO - Fetching initial data for ETH/USDT +2025-03-10 14:54:29,324 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 14:54:29,325 - ERROR - Error: TradingEnvironment.__init__() got an unexpected keyword argument 'data' +2025-03-10 14:54:29,325 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2424, in main + env = TradingEnvironment( + ^^^^^^^^^^^^^^^^^^^ +TypeError: TradingEnvironment.__init__() got an unexpected keyword argument 'data' + +2025-03-10 14:54:29,326 - WARNING - Could not properly close exchange connection: 'mexc' object has no attribute 'client' +2025-03-10 15:29:43,247 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 15:29:43,273 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 15:29:43,273 - INFO - Fetching initial data for ETH/USDT +2025-03-10 15:29:43,274 - INFO - Fetching initial data for ETH/USDT +2025-03-10 15:29:46,980 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 15:29:46,997 - INFO - Initialized environment with 500 candles +2025-03-10 15:29:49,408 - INFO - Starting training for 10000 episodes... +2025-03-10 15:29:49,409 - INFO - Starting training on device: cuda +2025-03-10 15:29:49,409 - INFO - Loading best model from models/trading_agent_best_pnl.pt to resume training +2025-03-10 15:29:49,410 - INFO - Loading model from models/trading_agent_best_pnl.pt +2025-03-10 15:29:49,592 - INFO - Model loaded successfully with weights_only=True +2025-03-10 15:29:49,593 - INFO - Resumed with best metrics - Reward: 202.74, PnL: $4.37, Win Rate: 66.7% +2025-03-10 15:29:49,596 - ERROR - Error in episode 0: name 'args' is not defined +2025-03-10 15:29:49,600 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,600 - ERROR - Error in episode 1: name 'args' is not defined +2025-03-10 15:29:49,602 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,603 - ERROR - Error in episode 2: name 'args' is not defined +2025-03-10 15:29:49,606 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,606 - ERROR - Error in episode 3: name 'args' is not defined +2025-03-10 15:29:49,609 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,609 - ERROR - Error in episode 4: name 'args' is not defined +2025-03-10 15:29:49,612 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,612 - ERROR - Error in episode 5: name 'args' is not defined +2025-03-10 15:29:49,615 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,616 - ERROR - Error in episode 6: name 'args' is not defined +2025-03-10 15:29:49,619 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,620 - ERROR - Error in episode 7: name 'args' is not defined +2025-03-10 15:29:49,622 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,623 - ERROR - Error in episode 8: name 'args' is not defined +2025-03-10 15:29:49,626 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,626 - ERROR - Error in episode 9: name 'args' is not defined +2025-03-10 15:29:49,629 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,629 - ERROR - Error in episode 10: name 'args' is not defined +2025-03-10 15:29:49,632 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,633 - ERROR - Error in episode 11: name 'args' is not defined +2025-03-10 15:29:49,636 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,636 - ERROR - Error in episode 12: name 'args' is not defined +2025-03-10 15:29:49,639 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,639 - ERROR - Error in episode 13: name 'args' is not defined +2025-03-10 15:29:49,642 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,642 - ERROR - Error in episode 14: name 'args' is not defined +2025-03-10 15:29:49,645 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,645 - ERROR - Error in episode 15: name 'args' is not defined +2025-03-10 15:29:49,649 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,649 - ERROR - Error in episode 16: name 'args' is not defined +2025-03-10 15:29:49,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,653 - ERROR - Error in episode 17: name 'args' is not defined +2025-03-10 15:29:49,655 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,655 - ERROR - Error in episode 18: name 'args' is not defined +2025-03-10 15:29:49,659 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,659 - ERROR - Error in episode 19: name 'args' is not defined +2025-03-10 15:29:49,662 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,662 - ERROR - Error in episode 20: name 'args' is not defined +2025-03-10 15:29:49,664 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,665 - ERROR - Error in episode 21: name 'args' is not defined +2025-03-10 15:29:49,668 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,668 - ERROR - Error in episode 22: name 'args' is not defined +2025-03-10 15:29:49,670 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,671 - ERROR - Error in episode 23: name 'args' is not defined +2025-03-10 15:29:49,673 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,673 - ERROR - Error in episode 24: name 'args' is not defined +2025-03-10 15:29:49,676 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,676 - ERROR - Error in episode 25: name 'args' is not defined +2025-03-10 15:29:49,679 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,679 - ERROR - Error in episode 26: name 'args' is not defined +2025-03-10 15:29:49,682 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,682 - ERROR - Error in episode 27: name 'args' is not defined +2025-03-10 15:29:49,684 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,685 - ERROR - Error in episode 28: name 'args' is not defined +2025-03-10 15:29:49,687 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,687 - ERROR - Error in episode 29: name 'args' is not defined +2025-03-10 15:29:49,690 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,690 - ERROR - Error in episode 30: name 'args' is not defined +2025-03-10 15:29:49,693 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,694 - ERROR - Error in episode 31: name 'args' is not defined +2025-03-10 15:29:49,696 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,697 - ERROR - Error in episode 32: name 'args' is not defined +2025-03-10 15:29:49,700 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,700 - ERROR - Error in episode 33: name 'args' is not defined +2025-03-10 15:29:49,703 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,703 - ERROR - Error in episode 34: name 'args' is not defined +2025-03-10 15:29:49,705 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,706 - ERROR - Error in episode 35: name 'args' is not defined +2025-03-10 15:29:49,708 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,708 - ERROR - Error in episode 36: name 'args' is not defined +2025-03-10 15:29:49,711 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,712 - ERROR - Error in episode 37: name 'args' is not defined +2025-03-10 15:29:49,715 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,716 - ERROR - Error in episode 38: name 'args' is not defined +2025-03-10 15:29:49,718 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,718 - ERROR - Error in episode 39: name 'args' is not defined +2025-03-10 15:29:49,721 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,721 - ERROR - Error in episode 40: name 'args' is not defined +2025-03-10 15:29:49,724 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,724 - ERROR - Error in episode 41: name 'args' is not defined +2025-03-10 15:29:49,726 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,727 - ERROR - Error in episode 42: name 'args' is not defined +2025-03-10 15:29:49,730 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,730 - ERROR - Error in episode 43: name 'args' is not defined +2025-03-10 15:29:49,733 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,733 - ERROR - Error in episode 44: name 'args' is not defined +2025-03-10 15:29:49,736 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,736 - ERROR - Error in episode 45: name 'args' is not defined +2025-03-10 15:29:49,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,739 - ERROR - Error in episode 46: name 'args' is not defined +2025-03-10 15:29:49,742 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,742 - ERROR - Error in episode 47: name 'args' is not defined +2025-03-10 15:29:49,744 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,745 - ERROR - Error in episode 48: name 'args' is not defined +2025-03-10 15:29:49,747 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,748 - ERROR - Error in episode 49: name 'args' is not defined +2025-03-10 15:29:49,750 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,750 - ERROR - Error in episode 50: name 'args' is not defined +2025-03-10 15:29:49,753 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,753 - ERROR - Error in episode 51: name 'args' is not defined +2025-03-10 15:29:49,756 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,756 - ERROR - Error in episode 52: name 'args' is not defined +2025-03-10 15:29:49,759 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,759 - ERROR - Error in episode 53: name 'args' is not defined +2025-03-10 15:29:49,762 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,762 - ERROR - Error in episode 54: name 'args' is not defined +2025-03-10 15:29:49,764 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,765 - ERROR - Error in episode 55: name 'args' is not defined +2025-03-10 15:29:49,768 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,768 - ERROR - Error in episode 56: name 'args' is not defined +2025-03-10 15:29:49,771 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,771 - ERROR - Error in episode 57: name 'args' is not defined +2025-03-10 15:29:49,774 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,774 - ERROR - Error in episode 58: name 'args' is not defined +2025-03-10 15:29:49,777 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,777 - ERROR - Error in episode 59: name 'args' is not defined +2025-03-10 15:29:49,780 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,780 - ERROR - Error in episode 60: name 'args' is not defined +2025-03-10 15:29:49,783 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,783 - ERROR - Error in episode 61: name 'args' is not defined +2025-03-10 15:29:49,785 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,786 - ERROR - Error in episode 62: name 'args' is not defined +2025-03-10 15:29:49,789 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,789 - ERROR - Error in episode 63: name 'args' is not defined +2025-03-10 15:29:49,792 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,792 - ERROR - Error in episode 64: name 'args' is not defined +2025-03-10 15:29:49,794 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,795 - ERROR - Error in episode 65: name 'args' is not defined +2025-03-10 15:29:49,797 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,797 - ERROR - Error in episode 66: name 'args' is not defined +2025-03-10 15:29:49,801 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,801 - ERROR - Error in episode 67: name 'args' is not defined +2025-03-10 15:29:49,803 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,804 - ERROR - Error in episode 68: name 'args' is not defined +2025-03-10 15:29:49,806 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,807 - ERROR - Error in episode 69: name 'args' is not defined +2025-03-10 15:29:49,810 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,810 - ERROR - Error in episode 70: name 'args' is not defined +2025-03-10 15:29:49,813 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,813 - ERROR - Error in episode 71: name 'args' is not defined +2025-03-10 15:29:49,815 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,815 - ERROR - Error in episode 72: name 'args' is not defined +2025-03-10 15:29:49,818 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,818 - ERROR - Error in episode 73: name 'args' is not defined +2025-03-10 15:29:49,821 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,821 - ERROR - Error in episode 74: name 'args' is not defined +2025-03-10 15:29:49,824 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,825 - ERROR - Error in episode 75: name 'args' is not defined +2025-03-10 15:29:49,827 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,827 - ERROR - Error in episode 76: name 'args' is not defined +2025-03-10 15:29:49,831 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,831 - ERROR - Error in episode 77: name 'args' is not defined +2025-03-10 15:29:49,835 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,835 - ERROR - Error in episode 78: name 'args' is not defined +2025-03-10 15:29:49,838 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,838 - ERROR - Error in episode 79: name 'args' is not defined +2025-03-10 15:29:49,840 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,840 - ERROR - Error in episode 80: name 'args' is not defined +2025-03-10 15:29:49,843 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,844 - ERROR - Error in episode 81: name 'args' is not defined +2025-03-10 15:29:49,846 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,847 - ERROR - Error in episode 82: name 'args' is not defined +2025-03-10 15:29:49,849 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,850 - ERROR - Error in episode 83: name 'args' is not defined +2025-03-10 15:29:49,852 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,852 - ERROR - Error in episode 84: name 'args' is not defined +2025-03-10 15:29:49,855 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,855 - ERROR - Error in episode 85: name 'args' is not defined +2025-03-10 15:29:49,858 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,858 - ERROR - Error in episode 86: name 'args' is not defined +2025-03-10 15:29:49,861 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,861 - ERROR - Error in episode 87: name 'args' is not defined +2025-03-10 15:29:49,863 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,864 - ERROR - Error in episode 88: name 'args' is not defined +2025-03-10 15:29:49,866 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,867 - ERROR - Error in episode 89: name 'args' is not defined +2025-03-10 15:29:49,869 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,869 - ERROR - Error in episode 90: name 'args' is not defined +2025-03-10 15:29:49,872 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,872 - ERROR - Error in episode 91: name 'args' is not defined +2025-03-10 15:29:49,875 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,876 - ERROR - Error in episode 92: name 'args' is not defined +2025-03-10 15:29:49,878 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,878 - ERROR - Error in episode 93: name 'args' is not defined +2025-03-10 15:29:49,881 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,881 - ERROR - Error in episode 94: name 'args' is not defined +2025-03-10 15:29:49,884 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,885 - ERROR - Error in episode 95: name 'args' is not defined +2025-03-10 15:29:49,887 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,887 - ERROR - Error in episode 96: name 'args' is not defined +2025-03-10 15:29:49,890 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,890 - ERROR - Error in episode 97: name 'args' is not defined +2025-03-10 15:29:49,893 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,893 - ERROR - Error in episode 98: name 'args' is not defined +2025-03-10 15:29:49,896 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,897 - ERROR - Error in episode 99: name 'args' is not defined +2025-03-10 15:29:49,900 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,900 - INFO - Moving to curriculum stage 2: risk_factor=0.75, exploration=0.2 +2025-03-10 15:29:49,900 - ERROR - Error in episode 100: name 'args' is not defined +2025-03-10 15:29:49,903 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,903 - ERROR - Error in episode 101: name 'args' is not defined +2025-03-10 15:29:49,906 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,906 - ERROR - Error in episode 102: name 'args' is not defined +2025-03-10 15:29:49,909 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,909 - ERROR - Error in episode 103: name 'args' is not defined +2025-03-10 15:29:49,912 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,912 - ERROR - Error in episode 104: name 'args' is not defined +2025-03-10 15:29:49,914 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,915 - ERROR - Error in episode 105: name 'args' is not defined +2025-03-10 15:29:49,917 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,917 - ERROR - Error in episode 106: name 'args' is not defined +2025-03-10 15:29:49,920 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,920 - ERROR - Error in episode 107: name 'args' is not defined +2025-03-10 15:29:49,923 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,923 - ERROR - Error in episode 108: name 'args' is not defined +2025-03-10 15:29:49,926 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,926 - ERROR - Error in episode 109: name 'args' is not defined +2025-03-10 15:29:49,928 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,929 - ERROR - Error in episode 110: name 'args' is not defined +2025-03-10 15:29:49,931 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,932 - ERROR - Error in episode 111: name 'args' is not defined +2025-03-10 15:29:49,934 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,935 - ERROR - Error in episode 112: name 'args' is not defined +2025-03-10 15:29:49,937 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,938 - ERROR - Error in episode 113: name 'args' is not defined +2025-03-10 15:29:49,940 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,941 - ERROR - Error in episode 114: name 'args' is not defined +2025-03-10 15:29:49,944 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,944 - ERROR - Error in episode 115: name 'args' is not defined +2025-03-10 15:29:49,946 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,947 - ERROR - Error in episode 116: name 'args' is not defined +2025-03-10 15:29:49,950 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,950 - ERROR - Error in episode 117: name 'args' is not defined +2025-03-10 15:29:49,953 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,953 - ERROR - Error in episode 118: name 'args' is not defined +2025-03-10 15:29:49,955 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,956 - ERROR - Error in episode 119: name 'args' is not defined +2025-03-10 15:29:49,958 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,958 - ERROR - Error in episode 120: name 'args' is not defined +2025-03-10 15:29:49,961 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,961 - ERROR - Error in episode 121: name 'args' is not defined +2025-03-10 15:29:49,964 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,964 - ERROR - Error in episode 122: name 'args' is not defined +2025-03-10 15:29:49,968 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,968 - ERROR - Error in episode 123: name 'args' is not defined +2025-03-10 15:29:49,970 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,970 - ERROR - Error in episode 124: name 'args' is not defined +2025-03-10 15:29:49,973 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,973 - ERROR - Error in episode 125: name 'args' is not defined +2025-03-10 15:29:49,976 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,976 - ERROR - Error in episode 126: name 'args' is not defined +2025-03-10 15:29:49,978 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,979 - ERROR - Error in episode 127: name 'args' is not defined +2025-03-10 15:29:49,982 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,982 - ERROR - Error in episode 128: name 'args' is not defined +2025-03-10 15:29:49,984 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,985 - ERROR - Error in episode 129: name 'args' is not defined +2025-03-10 15:29:49,988 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,988 - ERROR - Error in episode 130: name 'args' is not defined +2025-03-10 15:29:49,991 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,991 - ERROR - Error in episode 131: name 'args' is not defined +2025-03-10 15:29:49,993 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,994 - ERROR - Error in episode 132: name 'args' is not defined +2025-03-10 15:29:49,997 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:49,998 - ERROR - Error in episode 133: name 'args' is not defined +2025-03-10 15:29:50,000 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,000 - ERROR - Error in episode 134: name 'args' is not defined +2025-03-10 15:29:50,003 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,003 - ERROR - Error in episode 135: name 'args' is not defined +2025-03-10 15:29:50,006 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,006 - ERROR - Error in episode 136: name 'args' is not defined +2025-03-10 15:29:50,009 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,009 - ERROR - Error in episode 137: name 'args' is not defined +2025-03-10 15:29:50,011 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,012 - ERROR - Error in episode 138: name 'args' is not defined +2025-03-10 15:29:50,014 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,015 - ERROR - Error in episode 139: name 'args' is not defined +2025-03-10 15:29:50,017 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,018 - ERROR - Error in episode 140: name 'args' is not defined +2025-03-10 15:29:50,021 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,022 - ERROR - Error in episode 141: name 'args' is not defined +2025-03-10 15:29:50,024 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,024 - ERROR - Error in episode 142: name 'args' is not defined +2025-03-10 15:29:50,027 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,027 - ERROR - Error in episode 143: name 'args' is not defined +2025-03-10 15:29:50,030 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,030 - ERROR - Error in episode 144: name 'args' is not defined +2025-03-10 15:29:50,033 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,033 - ERROR - Error in episode 145: name 'args' is not defined +2025-03-10 15:29:50,036 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,036 - ERROR - Error in episode 146: name 'args' is not defined +2025-03-10 15:29:50,039 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,040 - ERROR - Error in episode 147: name 'args' is not defined +2025-03-10 15:29:50,042 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,042 - ERROR - Error in episode 148: name 'args' is not defined +2025-03-10 15:29:50,044 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,044 - ERROR - Error in episode 149: name 'args' is not defined +2025-03-10 15:29:50,047 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,047 - ERROR - Error in episode 150: name 'args' is not defined +2025-03-10 15:29:50,050 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,050 - ERROR - Error in episode 151: name 'args' is not defined +2025-03-10 15:29:50,052 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,053 - ERROR - Error in episode 152: name 'args' is not defined +2025-03-10 15:29:50,055 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,056 - ERROR - Error in episode 153: name 'args' is not defined +2025-03-10 15:29:50,059 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,059 - ERROR - Error in episode 154: name 'args' is not defined +2025-03-10 15:29:50,062 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,062 - ERROR - Error in episode 155: name 'args' is not defined +2025-03-10 15:29:50,065 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,065 - ERROR - Error in episode 156: name 'args' is not defined +2025-03-10 15:29:50,068 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,068 - ERROR - Error in episode 157: name 'args' is not defined +2025-03-10 15:29:50,070 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,071 - ERROR - Error in episode 158: name 'args' is not defined +2025-03-10 15:29:50,073 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,074 - ERROR - Error in episode 159: name 'args' is not defined +2025-03-10 15:29:50,076 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,076 - ERROR - Error in episode 160: name 'args' is not defined +2025-03-10 15:29:50,079 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,079 - ERROR - Error in episode 161: name 'args' is not defined +2025-03-10 15:29:50,082 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,082 - ERROR - Error in episode 162: name 'args' is not defined +2025-03-10 15:29:50,085 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,085 - ERROR - Error in episode 163: name 'args' is not defined +2025-03-10 15:29:50,088 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,088 - ERROR - Error in episode 164: name 'args' is not defined +2025-03-10 15:29:50,090 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,091 - ERROR - Error in episode 165: name 'args' is not defined +2025-03-10 15:29:50,093 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,094 - ERROR - Error in episode 166: name 'args' is not defined +2025-03-10 15:29:50,096 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,097 - ERROR - Error in episode 167: name 'args' is not defined +2025-03-10 15:29:50,099 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,099 - ERROR - Error in episode 168: name 'args' is not defined +2025-03-10 15:29:50,102 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,102 - ERROR - Error in episode 169: name 'args' is not defined +2025-03-10 15:29:50,105 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,105 - ERROR - Error in episode 170: name 'args' is not defined +2025-03-10 15:29:50,107 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,108 - ERROR - Error in episode 171: name 'args' is not defined +2025-03-10 15:29:50,110 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,111 - ERROR - Error in episode 172: name 'args' is not defined +2025-03-10 15:29:50,114 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,114 - ERROR - Error in episode 173: name 'args' is not defined +2025-03-10 15:29:50,116 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,117 - ERROR - Error in episode 174: name 'args' is not defined +2025-03-10 15:29:50,119 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,119 - ERROR - Error in episode 175: name 'args' is not defined +2025-03-10 15:29:50,123 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,123 - ERROR - Error in episode 176: name 'args' is not defined +2025-03-10 15:29:50,126 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,126 - ERROR - Error in episode 177: name 'args' is not defined +2025-03-10 15:29:50,128 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,129 - ERROR - Error in episode 178: name 'args' is not defined +2025-03-10 15:29:50,131 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,132 - ERROR - Error in episode 179: name 'args' is not defined +2025-03-10 15:29:50,134 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,135 - ERROR - Error in episode 180: name 'args' is not defined +2025-03-10 15:29:50,137 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,138 - ERROR - Error in episode 181: name 'args' is not defined +2025-03-10 15:29:50,140 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,140 - ERROR - Error in episode 182: name 'args' is not defined +2025-03-10 15:29:50,143 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,143 - ERROR - Error in episode 183: name 'args' is not defined +2025-03-10 15:29:50,146 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,146 - ERROR - Error in episode 184: name 'args' is not defined +2025-03-10 15:29:50,149 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,149 - ERROR - Error in episode 185: name 'args' is not defined +2025-03-10 15:29:50,152 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,152 - ERROR - Error in episode 186: name 'args' is not defined +2025-03-10 15:29:50,155 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,155 - ERROR - Error in episode 187: name 'args' is not defined +2025-03-10 15:29:50,158 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,158 - ERROR - Error in episode 188: name 'args' is not defined +2025-03-10 15:29:50,161 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,161 - ERROR - Error in episode 189: name 'args' is not defined +2025-03-10 15:29:50,164 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,164 - ERROR - Error in episode 190: name 'args' is not defined +2025-03-10 15:29:50,167 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,167 - ERROR - Error in episode 191: name 'args' is not defined +2025-03-10 15:29:50,170 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,171 - ERROR - Error in episode 192: name 'args' is not defined +2025-03-10 15:29:50,173 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,174 - ERROR - Error in episode 193: name 'args' is not defined +2025-03-10 15:29:50,176 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,176 - ERROR - Error in episode 194: name 'args' is not defined +2025-03-10 15:29:50,179 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,180 - ERROR - Error in episode 195: name 'args' is not defined +2025-03-10 15:29:50,182 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,183 - ERROR - Error in episode 196: name 'args' is not defined +2025-03-10 15:29:50,186 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,186 - ERROR - Error in episode 197: name 'args' is not defined +2025-03-10 15:29:50,188 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,188 - ERROR - Error in episode 198: name 'args' is not defined +2025-03-10 15:29:50,191 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,191 - ERROR - Error in episode 199: name 'args' is not defined +2025-03-10 15:29:50,194 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,195 - INFO - Moving to curriculum stage 3: risk_factor=1.0, exploration=0.1 +2025-03-10 15:29:50,195 - ERROR - Error in episode 200: name 'args' is not defined +2025-03-10 15:29:50,198 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,198 - ERROR - Error in episode 201: name 'args' is not defined +2025-03-10 15:29:50,201 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,201 - ERROR - Error in episode 202: name 'args' is not defined +2025-03-10 15:29:50,204 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,205 - ERROR - Error in episode 203: name 'args' is not defined +2025-03-10 15:29:50,207 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,208 - ERROR - Error in episode 204: name 'args' is not defined +2025-03-10 15:29:50,211 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,211 - ERROR - Error in episode 205: name 'args' is not defined +2025-03-10 15:29:50,213 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,214 - ERROR - Error in episode 206: name 'args' is not defined +2025-03-10 15:29:50,216 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,217 - ERROR - Error in episode 207: name 'args' is not defined +2025-03-10 15:29:50,219 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,219 - ERROR - Error in episode 208: name 'args' is not defined +2025-03-10 15:29:50,222 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,223 - ERROR - Error in episode 209: name 'args' is not defined +2025-03-10 15:29:50,226 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,226 - ERROR - Error in episode 210: name 'args' is not defined +2025-03-10 15:29:50,230 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,230 - ERROR - Error in episode 211: name 'args' is not defined +2025-03-10 15:29:50,233 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,234 - ERROR - Error in episode 212: name 'args' is not defined +2025-03-10 15:29:50,236 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,236 - ERROR - Error in episode 213: name 'args' is not defined +2025-03-10 15:29:50,239 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,239 - ERROR - Error in episode 214: name 'args' is not defined +2025-03-10 15:29:50,242 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,242 - ERROR - Error in episode 215: name 'args' is not defined +2025-03-10 15:29:50,245 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,246 - ERROR - Error in episode 216: name 'args' is not defined +2025-03-10 15:29:50,248 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,249 - ERROR - Error in episode 217: name 'args' is not defined +2025-03-10 15:29:50,252 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,252 - ERROR - Error in episode 218: name 'args' is not defined +2025-03-10 15:29:50,254 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,255 - ERROR - Error in episode 219: name 'args' is not defined +2025-03-10 15:29:50,257 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,258 - ERROR - Error in episode 220: name 'args' is not defined +2025-03-10 15:29:50,260 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,260 - ERROR - Error in episode 221: name 'args' is not defined +2025-03-10 15:29:50,263 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,263 - ERROR - Error in episode 222: name 'args' is not defined +2025-03-10 15:29:50,266 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,266 - ERROR - Error in episode 223: name 'args' is not defined +2025-03-10 15:29:50,269 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,270 - ERROR - Error in episode 224: name 'args' is not defined +2025-03-10 15:29:50,272 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,272 - ERROR - Error in episode 225: name 'args' is not defined +2025-03-10 15:29:50,275 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,276 - ERROR - Error in episode 226: name 'args' is not defined +2025-03-10 15:29:50,278 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,279 - ERROR - Error in episode 227: name 'args' is not defined +2025-03-10 15:29:50,281 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,281 - ERROR - Error in episode 228: name 'args' is not defined +2025-03-10 15:29:50,284 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,285 - ERROR - Error in episode 229: name 'args' is not defined +2025-03-10 15:29:50,287 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,287 - ERROR - Error in episode 230: name 'args' is not defined +2025-03-10 15:29:50,290 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,290 - ERROR - Error in episode 231: name 'args' is not defined +2025-03-10 15:29:50,293 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,293 - ERROR - Error in episode 232: name 'args' is not defined +2025-03-10 15:29:50,296 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,296 - ERROR - Error in episode 233: name 'args' is not defined +2025-03-10 15:29:50,298 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,299 - ERROR - Error in episode 234: name 'args' is not defined +2025-03-10 15:29:50,302 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,302 - ERROR - Error in episode 235: name 'args' is not defined +2025-03-10 15:29:50,304 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,304 - ERROR - Error in episode 236: name 'args' is not defined +2025-03-10 15:29:50,307 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,307 - ERROR - Error in episode 237: name 'args' is not defined +2025-03-10 15:29:50,310 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,310 - ERROR - Error in episode 238: name 'args' is not defined +2025-03-10 15:29:50,313 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,313 - ERROR - Error in episode 239: name 'args' is not defined +2025-03-10 15:29:50,315 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,316 - ERROR - Error in episode 240: name 'args' is not defined +2025-03-10 15:29:50,318 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,319 - ERROR - Error in episode 241: name 'args' is not defined +2025-03-10 15:29:50,321 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,322 - ERROR - Error in episode 242: name 'args' is not defined +2025-03-10 15:29:50,324 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,325 - ERROR - Error in episode 243: name 'args' is not defined +2025-03-10 15:29:50,327 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,328 - ERROR - Error in episode 244: name 'args' is not defined +2025-03-10 15:29:50,330 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,331 - ERROR - Error in episode 245: name 'args' is not defined +2025-03-10 15:29:50,333 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,333 - ERROR - Error in episode 246: name 'args' is not defined +2025-03-10 15:29:50,336 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,337 - ERROR - Error in episode 247: name 'args' is not defined +2025-03-10 15:29:50,339 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,340 - ERROR - Error in episode 248: name 'args' is not defined +2025-03-10 15:29:50,342 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,342 - ERROR - Error in episode 249: name 'args' is not defined +2025-03-10 15:29:50,345 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,345 - ERROR - Error in episode 250: name 'args' is not defined +2025-03-10 15:29:50,348 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,348 - ERROR - Error in episode 251: name 'args' is not defined +2025-03-10 15:29:50,351 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,351 - ERROR - Error in episode 252: name 'args' is not defined +2025-03-10 15:29:50,353 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,354 - ERROR - Error in episode 253: name 'args' is not defined +2025-03-10 15:29:50,356 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,357 - ERROR - Error in episode 254: name 'args' is not defined +2025-03-10 15:29:50,359 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,359 - ERROR - Error in episode 255: name 'args' is not defined +2025-03-10 15:29:50,362 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,362 - ERROR - Error in episode 256: name 'args' is not defined +2025-03-10 15:29:50,365 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,365 - ERROR - Error in episode 257: name 'args' is not defined +2025-03-10 15:29:50,367 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,368 - ERROR - Error in episode 258: name 'args' is not defined +2025-03-10 15:29:50,371 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,371 - ERROR - Error in episode 259: name 'args' is not defined +2025-03-10 15:29:50,374 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,374 - ERROR - Error in episode 260: name 'args' is not defined +2025-03-10 15:29:50,377 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,377 - ERROR - Error in episode 261: name 'args' is not defined +2025-03-10 15:29:50,380 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,380 - ERROR - Error in episode 262: name 'args' is not defined +2025-03-10 15:29:50,383 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,383 - ERROR - Error in episode 263: name 'args' is not defined +2025-03-10 15:29:50,385 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,385 - ERROR - Error in episode 264: name 'args' is not defined +2025-03-10 15:29:50,388 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,388 - ERROR - Error in episode 265: name 'args' is not defined +2025-03-10 15:29:50,391 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,391 - ERROR - Error in episode 266: name 'args' is not defined +2025-03-10 15:29:50,393 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,394 - ERROR - Error in episode 267: name 'args' is not defined +2025-03-10 15:29:50,396 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,396 - ERROR - Error in episode 268: name 'args' is not defined +2025-03-10 15:29:50,399 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,399 - ERROR - Error in episode 269: name 'args' is not defined +2025-03-10 15:29:50,402 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,402 - ERROR - Error in episode 270: name 'args' is not defined +2025-03-10 15:29:50,405 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,406 - ERROR - Error in episode 271: name 'args' is not defined +2025-03-10 15:29:50,408 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,409 - ERROR - Error in episode 272: name 'args' is not defined +2025-03-10 15:29:50,412 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,413 - ERROR - Error in episode 273: name 'args' is not defined +2025-03-10 15:29:50,416 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,416 - ERROR - Error in episode 274: name 'args' is not defined +2025-03-10 15:29:50,418 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,418 - ERROR - Error in episode 275: name 'args' is not defined +2025-03-10 15:29:50,421 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,421 - ERROR - Error in episode 276: name 'args' is not defined +2025-03-10 15:29:50,424 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,424 - ERROR - Error in episode 277: name 'args' is not defined +2025-03-10 15:29:50,427 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,428 - ERROR - Error in episode 278: name 'args' is not defined +2025-03-10 15:29:50,431 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,431 - ERROR - Error in episode 279: name 'args' is not defined +2025-03-10 15:29:50,434 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,434 - ERROR - Error in episode 280: name 'args' is not defined +2025-03-10 15:29:50,437 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,437 - ERROR - Error in episode 281: name 'args' is not defined +2025-03-10 15:29:50,439 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,440 - ERROR - Error in episode 282: name 'args' is not defined +2025-03-10 15:29:50,442 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,442 - ERROR - Error in episode 283: name 'args' is not defined +2025-03-10 15:29:50,445 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,445 - ERROR - Error in episode 284: name 'args' is not defined +2025-03-10 15:29:50,448 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,448 - ERROR - Error in episode 285: name 'args' is not defined +2025-03-10 15:29:50,450 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,451 - ERROR - Error in episode 286: name 'args' is not defined +2025-03-10 15:29:50,453 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,453 - ERROR - Error in episode 287: name 'args' is not defined +2025-03-10 15:29:50,456 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,457 - ERROR - Error in episode 288: name 'args' is not defined +2025-03-10 15:29:50,459 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,459 - ERROR - Error in episode 289: name 'args' is not defined +2025-03-10 15:29:50,462 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,463 - ERROR - Error in episode 290: name 'args' is not defined +2025-03-10 15:29:50,466 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,466 - ERROR - Error in episode 291: name 'args' is not defined +2025-03-10 15:29:50,468 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,469 - ERROR - Error in episode 292: name 'args' is not defined +2025-03-10 15:29:50,471 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,472 - ERROR - Error in episode 293: name 'args' is not defined +2025-03-10 15:29:50,474 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,474 - ERROR - Error in episode 294: name 'args' is not defined +2025-03-10 15:29:50,476 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,477 - ERROR - Error in episode 295: name 'args' is not defined +2025-03-10 15:29:50,480 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,480 - ERROR - Error in episode 296: name 'args' is not defined +2025-03-10 15:29:50,482 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,483 - ERROR - Error in episode 297: name 'args' is not defined +2025-03-10 15:29:50,485 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,486 - ERROR - Error in episode 298: name 'args' is not defined +2025-03-10 15:29:50,488 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,488 - ERROR - Error in episode 299: name 'args' is not defined +2025-03-10 15:29:50,491 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,491 - INFO - Moving to curriculum stage 4: risk_factor=1.25, exploration=0.05 +2025-03-10 15:29:50,492 - ERROR - Error in episode 300: name 'args' is not defined +2025-03-10 15:29:50,494 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,494 - ERROR - Error in episode 301: name 'args' is not defined +2025-03-10 15:29:50,497 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,498 - ERROR - Error in episode 302: name 'args' is not defined +2025-03-10 15:29:50,500 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,500 - ERROR - Error in episode 303: name 'args' is not defined +2025-03-10 15:29:50,503 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,503 - ERROR - Error in episode 304: name 'args' is not defined +2025-03-10 15:29:50,505 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,506 - ERROR - Error in episode 305: name 'args' is not defined +2025-03-10 15:29:50,508 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,508 - ERROR - Error in episode 306: name 'args' is not defined +2025-03-10 15:29:50,511 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,511 - ERROR - Error in episode 307: name 'args' is not defined +2025-03-10 15:29:50,514 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,514 - ERROR - Error in episode 308: name 'args' is not defined +2025-03-10 15:29:50,517 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,517 - ERROR - Error in episode 309: name 'args' is not defined +2025-03-10 15:29:50,519 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,519 - ERROR - Error in episode 310: name 'args' is not defined +2025-03-10 15:29:50,522 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,522 - ERROR - Error in episode 311: name 'args' is not defined +2025-03-10 15:29:50,524 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,524 - ERROR - Error in episode 312: name 'args' is not defined +2025-03-10 15:29:50,528 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,528 - ERROR - Error in episode 313: name 'args' is not defined +2025-03-10 15:29:50,531 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,531 - ERROR - Error in episode 314: name 'args' is not defined +2025-03-10 15:29:50,533 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,534 - ERROR - Error in episode 315: name 'args' is not defined +2025-03-10 15:29:50,536 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,536 - ERROR - Error in episode 316: name 'args' is not defined +2025-03-10 15:29:50,540 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,540 - ERROR - Error in episode 317: name 'args' is not defined +2025-03-10 15:29:50,542 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,543 - ERROR - Error in episode 318: name 'args' is not defined +2025-03-10 15:29:50,545 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,545 - ERROR - Error in episode 319: name 'args' is not defined +2025-03-10 15:29:50,548 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,548 - ERROR - Error in episode 320: name 'args' is not defined +2025-03-10 15:29:50,551 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,551 - ERROR - Error in episode 321: name 'args' is not defined +2025-03-10 15:29:50,554 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,554 - ERROR - Error in episode 322: name 'args' is not defined +2025-03-10 15:29:50,557 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,557 - ERROR - Error in episode 323: name 'args' is not defined +2025-03-10 15:29:50,559 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,560 - ERROR - Error in episode 324: name 'args' is not defined +2025-03-10 15:29:50,562 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,562 - ERROR - Error in episode 325: name 'args' is not defined +2025-03-10 15:29:50,565 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,565 - ERROR - Error in episode 326: name 'args' is not defined +2025-03-10 15:29:50,568 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,568 - ERROR - Error in episode 327: name 'args' is not defined +2025-03-10 15:29:50,571 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,571 - ERROR - Error in episode 328: name 'args' is not defined +2025-03-10 15:29:50,573 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,574 - ERROR - Error in episode 329: name 'args' is not defined +2025-03-10 15:29:50,576 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,576 - ERROR - Error in episode 330: name 'args' is not defined +2025-03-10 15:29:50,579 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,579 - ERROR - Error in episode 331: name 'args' is not defined +2025-03-10 15:29:50,582 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,582 - ERROR - Error in episode 332: name 'args' is not defined +2025-03-10 15:29:50,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,585 - ERROR - Error in episode 333: name 'args' is not defined +2025-03-10 15:29:50,587 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,587 - ERROR - Error in episode 334: name 'args' is not defined +2025-03-10 15:29:50,589 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,590 - ERROR - Error in episode 335: name 'args' is not defined +2025-03-10 15:29:50,593 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,593 - ERROR - Error in episode 336: name 'args' is not defined +2025-03-10 15:29:50,596 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,596 - ERROR - Error in episode 337: name 'args' is not defined +2025-03-10 15:29:50,599 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,599 - ERROR - Error in episode 338: name 'args' is not defined +2025-03-10 15:29:50,602 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,602 - ERROR - Error in episode 339: name 'args' is not defined +2025-03-10 15:29:50,605 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,605 - ERROR - Error in episode 340: name 'args' is not defined +2025-03-10 15:29:50,608 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,608 - ERROR - Error in episode 341: name 'args' is not defined +2025-03-10 15:29:50,611 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,611 - ERROR - Error in episode 342: name 'args' is not defined +2025-03-10 15:29:50,615 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,615 - ERROR - Error in episode 343: name 'args' is not defined +2025-03-10 15:29:50,617 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,617 - ERROR - Error in episode 344: name 'args' is not defined +2025-03-10 15:29:50,620 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,620 - ERROR - Error in episode 345: name 'args' is not defined +2025-03-10 15:29:50,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,623 - ERROR - Error in episode 346: name 'args' is not defined +2025-03-10 15:29:50,626 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,626 - ERROR - Error in episode 347: name 'args' is not defined +2025-03-10 15:29:50,629 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,629 - ERROR - Error in episode 348: name 'args' is not defined +2025-03-10 15:29:50,632 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,632 - ERROR - Error in episode 349: name 'args' is not defined +2025-03-10 15:29:50,634 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,635 - ERROR - Error in episode 350: name 'args' is not defined +2025-03-10 15:29:50,638 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,638 - ERROR - Error in episode 351: name 'args' is not defined +2025-03-10 15:29:50,641 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,641 - ERROR - Error in episode 352: name 'args' is not defined +2025-03-10 15:29:50,644 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,644 - ERROR - Error in episode 353: name 'args' is not defined +2025-03-10 15:29:50,647 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,648 - ERROR - Error in episode 354: name 'args' is not defined +2025-03-10 15:29:50,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,652 - ERROR - Error in episode 355: name 'args' is not defined +2025-03-10 15:29:50,654 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,655 - ERROR - Error in episode 356: name 'args' is not defined +2025-03-10 15:29:50,658 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,658 - ERROR - Error in episode 357: name 'args' is not defined +2025-03-10 15:29:50,660 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,660 - ERROR - Error in episode 358: name 'args' is not defined +2025-03-10 15:29:50,663 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,663 - ERROR - Error in episode 359: name 'args' is not defined +2025-03-10 15:29:50,666 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,666 - ERROR - Error in episode 360: name 'args' is not defined +2025-03-10 15:29:50,669 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,669 - ERROR - Error in episode 361: name 'args' is not defined +2025-03-10 15:29:50,672 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,672 - ERROR - Error in episode 362: name 'args' is not defined +2025-03-10 15:29:50,674 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,675 - ERROR - Error in episode 363: name 'args' is not defined +2025-03-10 15:29:50,677 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,678 - ERROR - Error in episode 364: name 'args' is not defined +2025-03-10 15:29:50,681 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,681 - ERROR - Error in episode 365: name 'args' is not defined +2025-03-10 15:29:50,684 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,685 - ERROR - Error in episode 366: name 'args' is not defined +2025-03-10 15:29:50,687 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,687 - ERROR - Error in episode 367: name 'args' is not defined +2025-03-10 15:29:50,690 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,691 - ERROR - Error in episode 368: name 'args' is not defined +2025-03-10 15:29:50,693 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,693 - ERROR - Error in episode 369: name 'args' is not defined +2025-03-10 15:29:50,696 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,696 - ERROR - Error in episode 370: name 'args' is not defined +2025-03-10 15:29:50,699 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,699 - ERROR - Error in episode 371: name 'args' is not defined +2025-03-10 15:29:50,701 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,702 - ERROR - Error in episode 372: name 'args' is not defined +2025-03-10 15:29:50,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,705 - ERROR - Error in episode 373: name 'args' is not defined +2025-03-10 15:29:50,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,707 - ERROR - Error in episode 374: name 'args' is not defined +2025-03-10 15:29:50,709 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,710 - ERROR - Error in episode 375: name 'args' is not defined +2025-03-10 15:29:50,712 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,713 - ERROR - Error in episode 376: name 'args' is not defined +2025-03-10 15:29:50,716 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,716 - ERROR - Error in episode 377: name 'args' is not defined +2025-03-10 15:29:50,719 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,719 - ERROR - Error in episode 378: name 'args' is not defined +2025-03-10 15:29:50,721 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,722 - ERROR - Error in episode 379: name 'args' is not defined +2025-03-10 15:29:50,724 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,724 - ERROR - Error in episode 380: name 'args' is not defined +2025-03-10 15:29:50,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,727 - ERROR - Error in episode 381: name 'args' is not defined +2025-03-10 15:29:50,730 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,730 - ERROR - Error in episode 382: name 'args' is not defined +2025-03-10 15:29:50,732 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,733 - ERROR - Error in episode 383: name 'args' is not defined +2025-03-10 15:29:50,735 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,736 - ERROR - Error in episode 384: name 'args' is not defined +2025-03-10 15:29:50,738 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,738 - ERROR - Error in episode 385: name 'args' is not defined +2025-03-10 15:29:50,741 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,741 - ERROR - Error in episode 386: name 'args' is not defined +2025-03-10 15:29:50,745 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,745 - ERROR - Error in episode 387: name 'args' is not defined +2025-03-10 15:29:50,748 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,748 - ERROR - Error in episode 388: name 'args' is not defined +2025-03-10 15:29:50,750 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,751 - ERROR - Error in episode 389: name 'args' is not defined +2025-03-10 15:29:50,753 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,753 - ERROR - Error in episode 390: name 'args' is not defined +2025-03-10 15:29:50,756 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,756 - ERROR - Error in episode 391: name 'args' is not defined +2025-03-10 15:29:50,758 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,759 - ERROR - Error in episode 392: name 'args' is not defined +2025-03-10 15:29:50,761 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,762 - ERROR - Error in episode 393: name 'args' is not defined +2025-03-10 15:29:50,764 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,764 - ERROR - Error in episode 394: name 'args' is not defined +2025-03-10 15:29:50,767 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,768 - ERROR - Error in episode 395: name 'args' is not defined +2025-03-10 15:29:50,770 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,770 - ERROR - Error in episode 396: name 'args' is not defined +2025-03-10 15:29:50,773 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,773 - ERROR - Error in episode 397: name 'args' is not defined +2025-03-10 15:29:50,776 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,776 - ERROR - Error in episode 398: name 'args' is not defined +2025-03-10 15:29:50,779 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,779 - ERROR - Error in episode 399: name 'args' is not defined +2025-03-10 15:29:50,781 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,782 - ERROR - Error in episode 400: name 'args' is not defined +2025-03-10 15:29:50,785 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,785 - ERROR - Error in episode 401: name 'args' is not defined +2025-03-10 15:29:50,787 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,787 - ERROR - Error in episode 402: name 'args' is not defined +2025-03-10 15:29:50,790 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,790 - ERROR - Error in episode 403: name 'args' is not defined +2025-03-10 15:29:50,792 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,793 - ERROR - Error in episode 404: name 'args' is not defined +2025-03-10 15:29:50,795 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,796 - ERROR - Error in episode 405: name 'args' is not defined +2025-03-10 15:29:50,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,798 - ERROR - Error in episode 406: name 'args' is not defined +2025-03-10 15:29:50,801 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,802 - ERROR - Error in episode 407: name 'args' is not defined +2025-03-10 15:29:50,804 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,804 - ERROR - Error in episode 408: name 'args' is not defined +2025-03-10 15:29:50,807 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,807 - ERROR - Error in episode 409: name 'args' is not defined +2025-03-10 15:29:50,809 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,809 - ERROR - Error in episode 410: name 'args' is not defined +2025-03-10 15:29:50,812 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,812 - ERROR - Error in episode 411: name 'args' is not defined +2025-03-10 15:29:50,815 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,815 - ERROR - Error in episode 412: name 'args' is not defined +2025-03-10 15:29:50,818 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,819 - ERROR - Error in episode 413: name 'args' is not defined +2025-03-10 15:29:50,821 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,822 - ERROR - Error in episode 414: name 'args' is not defined +2025-03-10 15:29:50,824 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,824 - ERROR - Error in episode 415: name 'args' is not defined +2025-03-10 15:29:50,827 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,827 - ERROR - Error in episode 416: name 'args' is not defined +2025-03-10 15:29:50,829 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,830 - ERROR - Error in episode 417: name 'args' is not defined +2025-03-10 15:29:50,832 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,833 - ERROR - Error in episode 418: name 'args' is not defined +2025-03-10 15:29:50,835 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,836 - ERROR - Error in episode 419: name 'args' is not defined +2025-03-10 15:29:50,839 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,839 - ERROR - Error in episode 420: name 'args' is not defined +2025-03-10 15:29:50,841 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,842 - ERROR - Error in episode 421: name 'args' is not defined +2025-03-10 15:29:50,844 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,845 - ERROR - Error in episode 422: name 'args' is not defined +2025-03-10 15:29:50,848 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,848 - ERROR - Error in episode 423: name 'args' is not defined +2025-03-10 15:29:50,850 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,851 - ERROR - Error in episode 424: name 'args' is not defined +2025-03-10 15:29:50,853 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,853 - ERROR - Error in episode 425: name 'args' is not defined +2025-03-10 15:29:50,856 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,856 - ERROR - Error in episode 426: name 'args' is not defined +2025-03-10 15:29:50,858 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,859 - ERROR - Error in episode 427: name 'args' is not defined +2025-03-10 15:29:50,861 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,861 - ERROR - Error in episode 428: name 'args' is not defined +2025-03-10 15:29:50,864 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,864 - ERROR - Error in episode 429: name 'args' is not defined +2025-03-10 15:29:50,867 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,867 - ERROR - Error in episode 430: name 'args' is not defined +2025-03-10 15:29:50,869 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,870 - ERROR - Error in episode 431: name 'args' is not defined +2025-03-10 15:29:50,872 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,873 - ERROR - Error in episode 432: name 'args' is not defined +2025-03-10 15:29:50,875 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,875 - ERROR - Error in episode 433: name 'args' is not defined +2025-03-10 15:29:50,878 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,878 - ERROR - Error in episode 434: name 'args' is not defined +2025-03-10 15:29:50,881 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,881 - ERROR - Error in episode 435: name 'args' is not defined +2025-03-10 15:29:50,884 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,885 - ERROR - Error in episode 436: name 'args' is not defined +2025-03-10 15:29:50,887 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,888 - ERROR - Error in episode 437: name 'args' is not defined +2025-03-10 15:29:50,890 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,891 - ERROR - Error in episode 438: name 'args' is not defined +2025-03-10 15:29:50,893 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,893 - ERROR - Error in episode 439: name 'args' is not defined +2025-03-10 15:29:50,896 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,896 - ERROR - Error in episode 440: name 'args' is not defined +2025-03-10 15:29:50,899 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,899 - ERROR - Error in episode 441: name 'args' is not defined +2025-03-10 15:29:50,902 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,902 - ERROR - Error in episode 442: name 'args' is not defined +2025-03-10 15:29:50,905 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,906 - ERROR - Error in episode 443: name 'args' is not defined +2025-03-10 15:29:50,908 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,908 - ERROR - Error in episode 444: name 'args' is not defined +2025-03-10 15:29:50,911 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,911 - ERROR - Error in episode 445: name 'args' is not defined +2025-03-10 15:29:50,913 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,914 - ERROR - Error in episode 446: name 'args' is not defined +2025-03-10 15:29:50,916 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,916 - ERROR - Error in episode 447: name 'args' is not defined +2025-03-10 15:29:50,920 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,920 - ERROR - Error in episode 448: name 'args' is not defined +2025-03-10 15:29:50,923 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,923 - ERROR - Error in episode 449: name 'args' is not defined +2025-03-10 15:29:50,925 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,925 - ERROR - Error in episode 450: name 'args' is not defined +2025-03-10 15:29:50,928 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,929 - ERROR - Error in episode 451: name 'args' is not defined +2025-03-10 15:29:50,932 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,932 - ERROR - Error in episode 452: name 'args' is not defined +2025-03-10 15:29:50,934 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,935 - ERROR - Error in episode 453: name 'args' is not defined +2025-03-10 15:29:50,937 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,938 - ERROR - Error in episode 454: name 'args' is not defined +2025-03-10 15:29:50,941 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,941 - ERROR - Error in episode 455: name 'args' is not defined +2025-03-10 15:29:50,944 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,944 - ERROR - Error in episode 456: name 'args' is not defined +2025-03-10 15:29:50,947 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,947 - ERROR - Error in episode 457: name 'args' is not defined +2025-03-10 15:29:50,950 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,950 - ERROR - Error in episode 458: name 'args' is not defined +2025-03-10 15:29:50,952 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,953 - ERROR - Error in episode 459: name 'args' is not defined +2025-03-10 15:29:50,956 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,956 - ERROR - Error in episode 460: name 'args' is not defined +2025-03-10 15:29:50,958 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,958 - ERROR - Error in episode 461: name 'args' is not defined +2025-03-10 15:29:50,961 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,961 - ERROR - Error in episode 462: name 'args' is not defined +2025-03-10 15:29:50,964 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,964 - ERROR - Error in episode 463: name 'args' is not defined +2025-03-10 15:29:50,966 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,967 - ERROR - Error in episode 464: name 'args' is not defined +2025-03-10 15:29:50,969 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,969 - ERROR - Error in episode 465: name 'args' is not defined +2025-03-10 15:29:50,972 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,972 - ERROR - Error in episode 466: name 'args' is not defined +2025-03-10 15:29:50,975 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,975 - ERROR - Error in episode 467: name 'args' is not defined +2025-03-10 15:29:50,977 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,978 - ERROR - Error in episode 468: name 'args' is not defined +2025-03-10 15:29:50,980 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,980 - ERROR - Error in episode 469: name 'args' is not defined +2025-03-10 15:29:50,983 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,983 - ERROR - Error in episode 470: name 'args' is not defined +2025-03-10 15:29:50,986 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,986 - ERROR - Error in episode 471: name 'args' is not defined +2025-03-10 15:29:50,989 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,989 - ERROR - Error in episode 472: name 'args' is not defined +2025-03-10 15:29:50,992 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,992 - ERROR - Error in episode 473: name 'args' is not defined +2025-03-10 15:29:50,995 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,995 - ERROR - Error in episode 474: name 'args' is not defined +2025-03-10 15:29:50,998 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:50,998 - ERROR - Error in episode 475: name 'args' is not defined +2025-03-10 15:29:51,000 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,001 - ERROR - Error in episode 476: name 'args' is not defined +2025-03-10 15:29:51,003 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,003 - ERROR - Error in episode 477: name 'args' is not defined +2025-03-10 15:29:51,006 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,006 - ERROR - Error in episode 478: name 'args' is not defined +2025-03-10 15:29:51,010 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,010 - ERROR - Error in episode 479: name 'args' is not defined +2025-03-10 15:29:51,012 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,012 - ERROR - Error in episode 480: name 'args' is not defined +2025-03-10 15:29:51,016 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,016 - ERROR - Error in episode 481: name 'args' is not defined +2025-03-10 15:29:51,019 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,019 - ERROR - Error in episode 482: name 'args' is not defined +2025-03-10 15:29:51,022 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,022 - ERROR - Error in episode 483: name 'args' is not defined +2025-03-10 15:29:51,025 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,026 - ERROR - Error in episode 484: name 'args' is not defined +2025-03-10 15:29:51,028 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,028 - ERROR - Error in episode 485: name 'args' is not defined +2025-03-10 15:29:51,031 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,031 - ERROR - Error in episode 486: name 'args' is not defined +2025-03-10 15:29:51,033 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,034 - ERROR - Error in episode 487: name 'args' is not defined +2025-03-10 15:29:51,036 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,037 - ERROR - Error in episode 488: name 'args' is not defined +2025-03-10 15:29:51,040 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,040 - ERROR - Error in episode 489: name 'args' is not defined +2025-03-10 15:29:51,042 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,043 - ERROR - Error in episode 490: name 'args' is not defined +2025-03-10 15:29:51,045 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,046 - ERROR - Error in episode 491: name 'args' is not defined +2025-03-10 15:29:51,048 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,049 - ERROR - Error in episode 492: name 'args' is not defined +2025-03-10 15:29:51,051 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,052 - ERROR - Error in episode 493: name 'args' is not defined +2025-03-10 15:29:51,054 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,055 - ERROR - Error in episode 494: name 'args' is not defined +2025-03-10 15:29:51,058 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,059 - ERROR - Error in episode 495: name 'args' is not defined +2025-03-10 15:29:51,061 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,061 - ERROR - Error in episode 496: name 'args' is not defined +2025-03-10 15:29:51,064 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,064 - ERROR - Error in episode 497: name 'args' is not defined +2025-03-10 15:29:51,067 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,067 - ERROR - Error in episode 498: name 'args' is not defined +2025-03-10 15:29:51,069 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,070 - ERROR - Error in episode 499: name 'args' is not defined +2025-03-10 15:29:51,072 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,073 - ERROR - Error in episode 500: name 'args' is not defined +2025-03-10 15:29:51,075 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,075 - ERROR - Error in episode 501: name 'args' is not defined +2025-03-10 15:29:51,078 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,078 - ERROR - Error in episode 502: name 'args' is not defined +2025-03-10 15:29:51,082 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,082 - ERROR - Error in episode 503: name 'args' is not defined +2025-03-10 15:29:51,084 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,085 - ERROR - Error in episode 504: name 'args' is not defined +2025-03-10 15:29:51,087 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,087 - ERROR - Error in episode 505: name 'args' is not defined +2025-03-10 15:29:51,090 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,090 - ERROR - Error in episode 506: name 'args' is not defined +2025-03-10 15:29:51,092 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,093 - ERROR - Error in episode 507: name 'args' is not defined +2025-03-10 15:29:51,095 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,096 - ERROR - Error in episode 508: name 'args' is not defined +2025-03-10 15:29:51,099 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,099 - ERROR - Error in episode 509: name 'args' is not defined +2025-03-10 15:29:51,101 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,102 - ERROR - Error in episode 510: name 'args' is not defined +2025-03-10 15:29:51,105 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,105 - ERROR - Error in episode 511: name 'args' is not defined +2025-03-10 15:29:51,107 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,108 - ERROR - Error in episode 512: name 'args' is not defined +2025-03-10 15:29:51,110 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,111 - ERROR - Error in episode 513: name 'args' is not defined +2025-03-10 15:29:51,113 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,114 - ERROR - Error in episode 514: name 'args' is not defined +2025-03-10 15:29:51,116 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,116 - ERROR - Error in episode 515: name 'args' is not defined +2025-03-10 15:29:51,118 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,118 - ERROR - Error in episode 516: name 'args' is not defined +2025-03-10 15:29:51,122 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,122 - ERROR - Error in episode 517: name 'args' is not defined +2025-03-10 15:29:51,125 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,125 - ERROR - Error in episode 518: name 'args' is not defined +2025-03-10 15:29:51,128 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,128 - ERROR - Error in episode 519: name 'args' is not defined +2025-03-10 15:29:51,131 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,131 - ERROR - Error in episode 520: name 'args' is not defined +2025-03-10 15:29:51,134 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,134 - ERROR - Error in episode 521: name 'args' is not defined +2025-03-10 15:29:51,136 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,137 - ERROR - Error in episode 522: name 'args' is not defined +2025-03-10 15:29:51,140 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,140 - ERROR - Error in episode 523: name 'args' is not defined +2025-03-10 15:29:51,142 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,143 - ERROR - Error in episode 524: name 'args' is not defined +2025-03-10 15:29:51,145 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,145 - ERROR - Error in episode 525: name 'args' is not defined +2025-03-10 15:29:51,148 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,149 - ERROR - Error in episode 526: name 'args' is not defined +2025-03-10 15:29:51,151 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,152 - ERROR - Error in episode 527: name 'args' is not defined +2025-03-10 15:29:51,154 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,154 - ERROR - Error in episode 528: name 'args' is not defined +2025-03-10 15:29:51,157 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,157 - ERROR - Error in episode 529: name 'args' is not defined +2025-03-10 15:29:51,160 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,160 - ERROR - Error in episode 530: name 'args' is not defined +2025-03-10 15:29:51,163 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,163 - ERROR - Error in episode 531: name 'args' is not defined +2025-03-10 15:29:51,166 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,166 - ERROR - Error in episode 532: name 'args' is not defined +2025-03-10 15:29:51,168 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,169 - ERROR - Error in episode 533: name 'args' is not defined +2025-03-10 15:29:51,172 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,172 - ERROR - Error in episode 534: name 'args' is not defined +2025-03-10 15:29:51,174 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,175 - ERROR - Error in episode 535: name 'args' is not defined +2025-03-10 15:29:51,177 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,177 - ERROR - Error in episode 536: name 'args' is not defined +2025-03-10 15:29:51,180 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,180 - ERROR - Error in episode 537: name 'args' is not defined +2025-03-10 15:29:51,182 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,183 - ERROR - Error in episode 538: name 'args' is not defined +2025-03-10 15:29:51,185 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,186 - ERROR - Error in episode 539: name 'args' is not defined +2025-03-10 15:29:51,188 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,188 - ERROR - Error in episode 540: name 'args' is not defined +2025-03-10 15:29:51,190 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,191 - ERROR - Error in episode 541: name 'args' is not defined +2025-03-10 15:29:51,193 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,194 - ERROR - Error in episode 542: name 'args' is not defined +2025-03-10 15:29:51,197 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,198 - ERROR - Error in episode 543: name 'args' is not defined +2025-03-10 15:29:51,201 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,201 - ERROR - Error in episode 544: name 'args' is not defined +2025-03-10 15:29:51,204 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,204 - ERROR - Error in episode 545: name 'args' is not defined +2025-03-10 15:29:51,207 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,208 - ERROR - Error in episode 546: name 'args' is not defined +2025-03-10 15:29:51,210 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,211 - ERROR - Error in episode 547: name 'args' is not defined +2025-03-10 15:29:51,214 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,214 - ERROR - Error in episode 548: name 'args' is not defined +2025-03-10 15:29:51,217 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,218 - ERROR - Error in episode 549: name 'args' is not defined +2025-03-10 15:29:51,220 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,220 - ERROR - Error in episode 550: name 'args' is not defined +2025-03-10 15:29:51,223 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,223 - ERROR - Error in episode 551: name 'args' is not defined +2025-03-10 15:29:51,226 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,226 - ERROR - Error in episode 552: name 'args' is not defined +2025-03-10 15:29:51,229 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,229 - ERROR - Error in episode 553: name 'args' is not defined +2025-03-10 15:29:51,232 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,232 - ERROR - Error in episode 554: name 'args' is not defined +2025-03-10 15:29:51,235 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,235 - ERROR - Error in episode 555: name 'args' is not defined +2025-03-10 15:29:51,238 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,238 - ERROR - Error in episode 556: name 'args' is not defined +2025-03-10 15:29:51,241 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,242 - ERROR - Error in episode 557: name 'args' is not defined +2025-03-10 15:29:51,244 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,244 - ERROR - Error in episode 558: name 'args' is not defined +2025-03-10 15:29:51,248 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,248 - ERROR - Error in episode 559: name 'args' is not defined +2025-03-10 15:29:51,250 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,250 - ERROR - Error in episode 560: name 'args' is not defined +2025-03-10 15:29:51,253 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,253 - ERROR - Error in episode 561: name 'args' is not defined +2025-03-10 15:29:51,256 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,256 - ERROR - Error in episode 562: name 'args' is not defined +2025-03-10 15:29:51,259 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,259 - ERROR - Error in episode 563: name 'args' is not defined +2025-03-10 15:29:51,261 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,262 - ERROR - Error in episode 564: name 'args' is not defined +2025-03-10 15:29:51,264 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,264 - ERROR - Error in episode 565: name 'args' is not defined +2025-03-10 15:29:51,267 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,267 - ERROR - Error in episode 566: name 'args' is not defined +2025-03-10 15:29:51,269 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,270 - ERROR - Error in episode 567: name 'args' is not defined +2025-03-10 15:29:51,273 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,274 - ERROR - Error in episode 568: name 'args' is not defined +2025-03-10 15:29:51,276 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,276 - ERROR - Error in episode 569: name 'args' is not defined +2025-03-10 15:29:51,279 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,279 - ERROR - Error in episode 570: name 'args' is not defined +2025-03-10 15:29:51,282 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,282 - ERROR - Error in episode 571: name 'args' is not defined +2025-03-10 15:29:51,284 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,285 - ERROR - Error in episode 572: name 'args' is not defined +2025-03-10 15:29:51,287 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,287 - ERROR - Error in episode 573: name 'args' is not defined +2025-03-10 15:29:51,290 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,291 - ERROR - Error in episode 574: name 'args' is not defined +2025-03-10 15:29:51,293 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,293 - ERROR - Error in episode 575: name 'args' is not defined +2025-03-10 15:29:51,295 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,296 - ERROR - Error in episode 576: name 'args' is not defined +2025-03-10 15:29:51,299 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,299 - ERROR - Error in episode 577: name 'args' is not defined +2025-03-10 15:29:51,301 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,302 - ERROR - Error in episode 578: name 'args' is not defined +2025-03-10 15:29:51,304 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,305 - ERROR - Error in episode 579: name 'args' is not defined +2025-03-10 15:29:51,307 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,308 - ERROR - Error in episode 580: name 'args' is not defined +2025-03-10 15:29:51,310 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,311 - ERROR - Error in episode 581: name 'args' is not defined +2025-03-10 15:29:51,313 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,313 - ERROR - Error in episode 582: name 'args' is not defined +2025-03-10 15:29:51,316 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,316 - ERROR - Error in episode 583: name 'args' is not defined +2025-03-10 15:29:51,319 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,319 - ERROR - Error in episode 584: name 'args' is not defined +2025-03-10 15:29:51,321 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,321 - ERROR - Error in episode 585: name 'args' is not defined +2025-03-10 15:29:51,324 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,324 - ERROR - Error in episode 586: name 'args' is not defined +2025-03-10 15:29:51,328 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,328 - ERROR - Error in episode 587: name 'args' is not defined +2025-03-10 15:29:51,331 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,331 - ERROR - Error in episode 588: name 'args' is not defined +2025-03-10 15:29:51,334 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,334 - ERROR - Error in episode 589: name 'args' is not defined +2025-03-10 15:29:51,336 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,336 - ERROR - Error in episode 590: name 'args' is not defined +2025-03-10 15:29:51,339 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,340 - ERROR - Error in episode 591: name 'args' is not defined +2025-03-10 15:29:51,342 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,344 - ERROR - Error in episode 592: name 'args' is not defined +2025-03-10 15:29:51,346 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,347 - ERROR - Error in episode 593: name 'args' is not defined +2025-03-10 15:29:51,349 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,350 - ERROR - Error in episode 594: name 'args' is not defined +2025-03-10 15:29:51,353 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,353 - ERROR - Error in episode 595: name 'args' is not defined +2025-03-10 15:29:51,356 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,356 - ERROR - Error in episode 596: name 'args' is not defined +2025-03-10 15:29:51,359 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,359 - ERROR - Error in episode 597: name 'args' is not defined +2025-03-10 15:29:51,361 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,362 - ERROR - Error in episode 598: name 'args' is not defined +2025-03-10 15:29:51,364 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,365 - ERROR - Error in episode 599: name 'args' is not defined +2025-03-10 15:29:51,367 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,368 - ERROR - Error in episode 600: name 'args' is not defined +2025-03-10 15:29:51,370 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,371 - ERROR - Error in episode 601: name 'args' is not defined +2025-03-10 15:29:51,374 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,374 - ERROR - Error in episode 602: name 'args' is not defined +2025-03-10 15:29:51,376 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,377 - ERROR - Error in episode 603: name 'args' is not defined +2025-03-10 15:29:51,379 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,379 - ERROR - Error in episode 604: name 'args' is not defined +2025-03-10 15:29:51,382 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,382 - ERROR - Error in episode 605: name 'args' is not defined +2025-03-10 15:29:51,385 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,386 - ERROR - Error in episode 606: name 'args' is not defined +2025-03-10 15:29:51,388 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,389 - ERROR - Error in episode 607: name 'args' is not defined +2025-03-10 15:29:51,391 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,391 - ERROR - Error in episode 608: name 'args' is not defined +2025-03-10 15:29:51,393 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,394 - ERROR - Error in episode 609: name 'args' is not defined +2025-03-10 15:29:51,396 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,396 - ERROR - Error in episode 610: name 'args' is not defined +2025-03-10 15:29:51,398 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,399 - ERROR - Error in episode 611: name 'args' is not defined +2025-03-10 15:29:51,401 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,402 - ERROR - Error in episode 612: name 'args' is not defined +2025-03-10 15:29:51,404 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,404 - ERROR - Error in episode 613: name 'args' is not defined +2025-03-10 15:29:51,407 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,407 - ERROR - Error in episode 614: name 'args' is not defined +2025-03-10 15:29:51,409 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,410 - ERROR - Error in episode 615: name 'args' is not defined +2025-03-10 15:29:51,412 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,412 - ERROR - Error in episode 616: name 'args' is not defined +2025-03-10 15:29:51,414 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,415 - ERROR - Error in episode 617: name 'args' is not defined +2025-03-10 15:29:51,417 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,417 - ERROR - Error in episode 618: name 'args' is not defined +2025-03-10 15:29:51,420 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,421 - ERROR - Error in episode 619: name 'args' is not defined +2025-03-10 15:29:51,424 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,424 - ERROR - Error in episode 620: name 'args' is not defined +2025-03-10 15:29:51,426 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,427 - ERROR - Error in episode 621: name 'args' is not defined +2025-03-10 15:29:51,429 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,429 - ERROR - Error in episode 622: name 'args' is not defined +2025-03-10 15:29:51,432 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,432 - ERROR - Error in episode 623: name 'args' is not defined +2025-03-10 15:29:51,434 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,435 - ERROR - Error in episode 624: name 'args' is not defined +2025-03-10 15:29:51,437 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,437 - ERROR - Error in episode 625: name 'args' is not defined +2025-03-10 15:29:51,440 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,441 - ERROR - Error in episode 626: name 'args' is not defined +2025-03-10 15:29:51,443 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,444 - ERROR - Error in episode 627: name 'args' is not defined +2025-03-10 15:29:51,446 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,446 - ERROR - Error in episode 628: name 'args' is not defined +2025-03-10 15:29:51,449 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,449 - ERROR - Error in episode 629: name 'args' is not defined +2025-03-10 15:29:51,452 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,452 - ERROR - Error in episode 630: name 'args' is not defined +2025-03-10 15:29:51,455 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,455 - ERROR - Error in episode 631: name 'args' is not defined +2025-03-10 15:29:51,458 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,459 - ERROR - Error in episode 632: name 'args' is not defined +2025-03-10 15:29:51,462 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,462 - ERROR - Error in episode 633: name 'args' is not defined +2025-03-10 15:29:51,464 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,465 - ERROR - Error in episode 634: name 'args' is not defined +2025-03-10 15:29:51,467 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,468 - ERROR - Error in episode 635: name 'args' is not defined +2025-03-10 15:29:51,470 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,470 - ERROR - Error in episode 636: name 'args' is not defined +2025-03-10 15:29:51,473 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,473 - ERROR - Error in episode 637: name 'args' is not defined +2025-03-10 15:29:51,476 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,476 - ERROR - Error in episode 638: name 'args' is not defined +2025-03-10 15:29:51,479 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,479 - ERROR - Error in episode 639: name 'args' is not defined +2025-03-10 15:29:51,482 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,482 - ERROR - Error in episode 640: name 'args' is not defined +2025-03-10 15:29:51,485 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,485 - ERROR - Error in episode 641: name 'args' is not defined +2025-03-10 15:29:51,489 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,489 - ERROR - Error in episode 642: name 'args' is not defined +2025-03-10 15:29:51,492 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,492 - ERROR - Error in episode 643: name 'args' is not defined +2025-03-10 15:29:51,494 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,495 - ERROR - Error in episode 644: name 'args' is not defined +2025-03-10 15:29:51,498 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,498 - ERROR - Error in episode 645: name 'args' is not defined +2025-03-10 15:29:51,500 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,501 - ERROR - Error in episode 646: name 'args' is not defined +2025-03-10 15:29:51,504 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,504 - ERROR - Error in episode 647: name 'args' is not defined +2025-03-10 15:29:51,507 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,508 - ERROR - Error in episode 648: name 'args' is not defined +2025-03-10 15:29:51,510 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,511 - ERROR - Error in episode 649: name 'args' is not defined +2025-03-10 15:29:51,513 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,513 - ERROR - Error in episode 650: name 'args' is not defined +2025-03-10 15:29:51,516 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,517 - ERROR - Error in episode 651: name 'args' is not defined +2025-03-10 15:29:51,519 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,520 - ERROR - Error in episode 652: name 'args' is not defined +2025-03-10 15:29:51,523 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,523 - ERROR - Error in episode 653: name 'args' is not defined +2025-03-10 15:29:51,526 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,526 - ERROR - Error in episode 654: name 'args' is not defined +2025-03-10 15:29:51,529 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,529 - ERROR - Error in episode 655: name 'args' is not defined +2025-03-10 15:29:51,532 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,532 - ERROR - Error in episode 656: name 'args' is not defined +2025-03-10 15:29:51,535 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,535 - ERROR - Error in episode 657: name 'args' is not defined +2025-03-10 15:29:51,537 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,537 - ERROR - Error in episode 658: name 'args' is not defined +2025-03-10 15:29:51,540 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,541 - ERROR - Error in episode 659: name 'args' is not defined +2025-03-10 15:29:51,543 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,543 - ERROR - Error in episode 660: name 'args' is not defined +2025-03-10 15:29:51,546 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,547 - ERROR - Error in episode 661: name 'args' is not defined +2025-03-10 15:29:51,549 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,549 - ERROR - Error in episode 662: name 'args' is not defined +2025-03-10 15:29:51,553 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,553 - ERROR - Error in episode 663: name 'args' is not defined +2025-03-10 15:29:51,556 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,557 - ERROR - Error in episode 664: name 'args' is not defined +2025-03-10 15:29:51,560 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,560 - ERROR - Error in episode 665: name 'args' is not defined +2025-03-10 15:29:51,562 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,563 - ERROR - Error in episode 666: name 'args' is not defined +2025-03-10 15:29:51,566 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,567 - ERROR - Error in episode 667: name 'args' is not defined +2025-03-10 15:29:51,570 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,570 - ERROR - Error in episode 668: name 'args' is not defined +2025-03-10 15:29:51,574 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,574 - ERROR - Error in episode 669: name 'args' is not defined +2025-03-10 15:29:51,576 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,577 - ERROR - Error in episode 670: name 'args' is not defined +2025-03-10 15:29:51,579 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,579 - ERROR - Error in episode 671: name 'args' is not defined +2025-03-10 15:29:51,582 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,582 - ERROR - Error in episode 672: name 'args' is not defined +2025-03-10 15:29:51,585 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,586 - ERROR - Error in episode 673: name 'args' is not defined +2025-03-10 15:29:51,588 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,588 - ERROR - Error in episode 674: name 'args' is not defined +2025-03-10 15:29:51,591 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,592 - ERROR - Error in episode 675: name 'args' is not defined +2025-03-10 15:29:51,594 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,595 - ERROR - Error in episode 676: name 'args' is not defined +2025-03-10 15:29:51,598 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,598 - ERROR - Error in episode 677: name 'args' is not defined +2025-03-10 15:29:51,601 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,601 - ERROR - Error in episode 678: name 'args' is not defined +2025-03-10 15:29:51,603 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,604 - ERROR - Error in episode 679: name 'args' is not defined +2025-03-10 15:29:51,606 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,607 - ERROR - Error in episode 680: name 'args' is not defined +2025-03-10 15:29:51,609 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,610 - ERROR - Error in episode 681: name 'args' is not defined +2025-03-10 15:29:51,612 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,612 - ERROR - Error in episode 682: name 'args' is not defined +2025-03-10 15:29:51,615 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,616 - ERROR - Error in episode 683: name 'args' is not defined +2025-03-10 15:29:51,618 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,619 - ERROR - Error in episode 684: name 'args' is not defined +2025-03-10 15:29:51,621 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,621 - ERROR - Error in episode 685: name 'args' is not defined +2025-03-10 15:29:51,624 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,624 - ERROR - Error in episode 686: name 'args' is not defined +2025-03-10 15:29:51,627 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,627 - ERROR - Error in episode 687: name 'args' is not defined +2025-03-10 15:29:51,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,631 - ERROR - Error in episode 688: name 'args' is not defined +2025-03-10 15:29:51,634 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,634 - ERROR - Error in episode 689: name 'args' is not defined +2025-03-10 15:29:51,637 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,637 - ERROR - Error in episode 690: name 'args' is not defined +2025-03-10 15:29:51,640 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,641 - ERROR - Error in episode 691: name 'args' is not defined +2025-03-10 15:29:51,643 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,644 - ERROR - Error in episode 692: name 'args' is not defined +2025-03-10 15:29:51,646 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,647 - ERROR - Error in episode 693: name 'args' is not defined +2025-03-10 15:29:51,649 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,650 - ERROR - Error in episode 694: name 'args' is not defined +2025-03-10 15:29:51,653 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,654 - ERROR - Error in episode 695: name 'args' is not defined +2025-03-10 15:29:51,657 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,658 - ERROR - Error in episode 696: name 'args' is not defined +2025-03-10 15:29:51,660 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,661 - ERROR - Error in episode 697: name 'args' is not defined +2025-03-10 15:29:51,663 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,663 - ERROR - Error in episode 698: name 'args' is not defined +2025-03-10 15:29:51,666 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,667 - ERROR - Error in episode 699: name 'args' is not defined +2025-03-10 15:29:51,669 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,670 - ERROR - Error in episode 700: name 'args' is not defined +2025-03-10 15:29:51,672 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,673 - ERROR - Error in episode 701: name 'args' is not defined +2025-03-10 15:29:51,675 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,676 - ERROR - Error in episode 702: name 'args' is not defined +2025-03-10 15:29:51,678 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,679 - ERROR - Error in episode 703: name 'args' is not defined +2025-03-10 15:29:51,681 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,681 - ERROR - Error in episode 704: name 'args' is not defined +2025-03-10 15:29:51,684 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,684 - ERROR - Error in episode 705: name 'args' is not defined +2025-03-10 15:29:51,687 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,687 - ERROR - Error in episode 706: name 'args' is not defined +2025-03-10 15:29:51,690 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,691 - ERROR - Error in episode 707: name 'args' is not defined +2025-03-10 15:29:51,693 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,694 - ERROR - Error in episode 708: name 'args' is not defined +2025-03-10 15:29:51,696 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,696 - ERROR - Error in episode 709: name 'args' is not defined +2025-03-10 15:29:51,700 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,700 - ERROR - Error in episode 710: name 'args' is not defined +2025-03-10 15:29:51,703 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,704 - ERROR - Error in episode 711: name 'args' is not defined +2025-03-10 15:29:51,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,707 - ERROR - Error in episode 712: name 'args' is not defined +2025-03-10 15:29:51,709 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,710 - ERROR - Error in episode 713: name 'args' is not defined +2025-03-10 15:29:51,712 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,713 - ERROR - Error in episode 714: name 'args' is not defined +2025-03-10 15:29:51,715 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,716 - ERROR - Error in episode 715: name 'args' is not defined +2025-03-10 15:29:51,718 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,719 - ERROR - Error in episode 716: name 'args' is not defined +2025-03-10 15:29:51,721 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,721 - ERROR - Error in episode 717: name 'args' is not defined +2025-03-10 15:29:51,725 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,725 - ERROR - Error in episode 718: name 'args' is not defined +2025-03-10 15:29:51,728 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,728 - ERROR - Error in episode 719: name 'args' is not defined +2025-03-10 15:29:51,731 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,731 - ERROR - Error in episode 720: name 'args' is not defined +2025-03-10 15:29:51,734 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,735 - ERROR - Error in episode 721: name 'args' is not defined +2025-03-10 15:29:51,737 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,738 - ERROR - Error in episode 722: name 'args' is not defined +2025-03-10 15:29:51,741 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,741 - ERROR - Error in episode 723: name 'args' is not defined +2025-03-10 15:29:51,744 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,745 - ERROR - Error in episode 724: name 'args' is not defined +2025-03-10 15:29:51,748 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,748 - ERROR - Error in episode 725: name 'args' is not defined +2025-03-10 15:29:51,751 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,752 - ERROR - Error in episode 726: name 'args' is not defined +2025-03-10 15:29:51,755 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,755 - ERROR - Error in episode 727: name 'args' is not defined +2025-03-10 15:29:51,758 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,758 - ERROR - Error in episode 728: name 'args' is not defined +2025-03-10 15:29:51,761 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,762 - ERROR - Error in episode 729: name 'args' is not defined +2025-03-10 15:29:51,764 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,765 - ERROR - Error in episode 730: name 'args' is not defined +2025-03-10 15:29:51,767 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,768 - ERROR - Error in episode 731: name 'args' is not defined +2025-03-10 15:29:51,770 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,770 - ERROR - Error in episode 732: name 'args' is not defined +2025-03-10 15:29:51,773 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,774 - ERROR - Error in episode 733: name 'args' is not defined +2025-03-10 15:29:51,776 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,777 - ERROR - Error in episode 734: name 'args' is not defined +2025-03-10 15:29:51,780 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,780 - ERROR - Error in episode 735: name 'args' is not defined +2025-03-10 15:29:51,783 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,783 - ERROR - Error in episode 736: name 'args' is not defined +2025-03-10 15:29:51,786 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,786 - ERROR - Error in episode 737: name 'args' is not defined +2025-03-10 15:29:51,789 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,789 - ERROR - Error in episode 738: name 'args' is not defined +2025-03-10 15:29:51,792 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,793 - ERROR - Error in episode 739: name 'args' is not defined +2025-03-10 15:29:51,795 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,795 - ERROR - Error in episode 740: name 'args' is not defined +2025-03-10 15:29:51,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,799 - ERROR - Error in episode 741: name 'args' is not defined +2025-03-10 15:29:51,801 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,802 - ERROR - Error in episode 742: name 'args' is not defined +2025-03-10 15:29:51,804 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,804 - ERROR - Error in episode 743: name 'args' is not defined +2025-03-10 15:29:51,807 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,808 - ERROR - Error in episode 744: name 'args' is not defined +2025-03-10 15:29:51,810 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,811 - ERROR - Error in episode 745: name 'args' is not defined +2025-03-10 15:29:51,814 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,814 - ERROR - Error in episode 746: name 'args' is not defined +2025-03-10 15:29:51,818 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,818 - ERROR - Error in episode 747: name 'args' is not defined +2025-03-10 15:29:51,820 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,820 - ERROR - Error in episode 748: name 'args' is not defined +2025-03-10 15:29:51,824 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,824 - ERROR - Error in episode 749: name 'args' is not defined +2025-03-10 15:29:51,826 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,827 - ERROR - Error in episode 750: name 'args' is not defined +2025-03-10 15:29:51,829 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,829 - ERROR - Error in episode 751: name 'args' is not defined +2025-03-10 15:29:51,832 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,833 - ERROR - Error in episode 752: name 'args' is not defined +2025-03-10 15:29:51,835 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,836 - ERROR - Error in episode 753: name 'args' is not defined +2025-03-10 15:29:51,839 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,839 - ERROR - Error in episode 754: name 'args' is not defined +2025-03-10 15:29:51,841 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,842 - ERROR - Error in episode 755: name 'args' is not defined +2025-03-10 15:29:51,845 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,845 - ERROR - Error in episode 756: name 'args' is not defined +2025-03-10 15:29:51,849 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,850 - ERROR - Error in episode 757: name 'args' is not defined +2025-03-10 15:29:51,853 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,853 - ERROR - Error in episode 758: name 'args' is not defined +2025-03-10 15:29:51,855 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,856 - ERROR - Error in episode 759: name 'args' is not defined +2025-03-10 15:29:51,858 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,859 - ERROR - Error in episode 760: name 'args' is not defined +2025-03-10 15:29:51,861 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,862 - ERROR - Error in episode 761: name 'args' is not defined +2025-03-10 15:29:51,864 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,864 - ERROR - Error in episode 762: name 'args' is not defined +2025-03-10 15:29:51,867 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,867 - ERROR - Error in episode 763: name 'args' is not defined +2025-03-10 15:29:51,870 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,870 - ERROR - Error in episode 764: name 'args' is not defined +2025-03-10 15:29:51,873 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,874 - ERROR - Error in episode 765: name 'args' is not defined +2025-03-10 15:29:51,878 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,878 - ERROR - Error in episode 766: name 'args' is not defined +2025-03-10 15:29:51,880 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,881 - ERROR - Error in episode 767: name 'args' is not defined +2025-03-10 15:29:51,884 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,884 - ERROR - Error in episode 768: name 'args' is not defined +2025-03-10 15:29:51,887 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,887 - ERROR - Error in episode 769: name 'args' is not defined +2025-03-10 15:29:51,890 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,890 - ERROR - Error in episode 770: name 'args' is not defined +2025-03-10 15:29:51,893 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,894 - ERROR - Error in episode 771: name 'args' is not defined +2025-03-10 15:29:51,896 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,896 - ERROR - Error in episode 772: name 'args' is not defined +2025-03-10 15:29:51,899 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,899 - ERROR - Error in episode 773: name 'args' is not defined +2025-03-10 15:29:51,902 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,903 - ERROR - Error in episode 774: name 'args' is not defined +2025-03-10 15:29:51,905 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,905 - ERROR - Error in episode 775: name 'args' is not defined +2025-03-10 15:29:51,908 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,908 - ERROR - Error in episode 776: name 'args' is not defined +2025-03-10 15:29:51,911 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,911 - ERROR - Error in episode 777: name 'args' is not defined +2025-03-10 15:29:51,914 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,915 - ERROR - Error in episode 778: name 'args' is not defined +2025-03-10 15:29:51,917 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,918 - ERROR - Error in episode 779: name 'args' is not defined +2025-03-10 15:29:51,921 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,921 - ERROR - Error in episode 780: name 'args' is not defined +2025-03-10 15:29:51,924 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,924 - ERROR - Error in episode 781: name 'args' is not defined +2025-03-10 15:29:51,926 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,927 - ERROR - Error in episode 782: name 'args' is not defined +2025-03-10 15:29:51,929 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,929 - ERROR - Error in episode 783: name 'args' is not defined +2025-03-10 15:29:51,933 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,933 - ERROR - Error in episode 784: name 'args' is not defined +2025-03-10 15:29:51,936 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,936 - ERROR - Error in episode 785: name 'args' is not defined +2025-03-10 15:29:51,939 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,940 - ERROR - Error in episode 786: name 'args' is not defined +2025-03-10 15:29:51,943 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,943 - ERROR - Error in episode 787: name 'args' is not defined +2025-03-10 15:29:51,946 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,946 - ERROR - Error in episode 788: name 'args' is not defined +2025-03-10 15:29:51,949 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,949 - ERROR - Error in episode 789: name 'args' is not defined +2025-03-10 15:29:51,952 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,952 - ERROR - Error in episode 790: name 'args' is not defined +2025-03-10 15:29:51,954 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,955 - ERROR - Error in episode 791: name 'args' is not defined +2025-03-10 15:29:51,958 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,958 - ERROR - Error in episode 792: name 'args' is not defined +2025-03-10 15:29:51,960 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,961 - ERROR - Error in episode 793: name 'args' is not defined +2025-03-10 15:29:51,964 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,964 - ERROR - Error in episode 794: name 'args' is not defined +2025-03-10 15:29:51,967 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,967 - ERROR - Error in episode 795: name 'args' is not defined +2025-03-10 15:29:51,970 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,970 - ERROR - Error in episode 796: name 'args' is not defined +2025-03-10 15:29:51,974 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,974 - ERROR - Error in episode 797: name 'args' is not defined +2025-03-10 15:29:51,977 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,977 - ERROR - Error in episode 798: name 'args' is not defined +2025-03-10 15:29:51,979 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,980 - ERROR - Error in episode 799: name 'args' is not defined +2025-03-10 15:29:51,983 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,983 - ERROR - Error in episode 800: name 'args' is not defined +2025-03-10 15:29:51,986 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,986 - ERROR - Error in episode 801: name 'args' is not defined +2025-03-10 15:29:51,989 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,989 - ERROR - Error in episode 802: name 'args' is not defined +2025-03-10 15:29:51,992 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,992 - ERROR - Error in episode 803: name 'args' is not defined +2025-03-10 15:29:51,996 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:51,996 - ERROR - Error in episode 804: name 'args' is not defined +2025-03-10 15:29:51,999 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,000 - ERROR - Error in episode 805: name 'args' is not defined +2025-03-10 15:29:52,002 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,002 - ERROR - Error in episode 806: name 'args' is not defined +2025-03-10 15:29:52,005 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,005 - ERROR - Error in episode 807: name 'args' is not defined +2025-03-10 15:29:52,008 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,008 - ERROR - Error in episode 808: name 'args' is not defined +2025-03-10 15:29:52,011 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,011 - ERROR - Error in episode 809: name 'args' is not defined +2025-03-10 15:29:52,014 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,014 - ERROR - Error in episode 810: name 'args' is not defined +2025-03-10 15:29:52,017 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,018 - ERROR - Error in episode 811: name 'args' is not defined +2025-03-10 15:29:52,020 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,020 - ERROR - Error in episode 812: name 'args' is not defined +2025-03-10 15:29:52,023 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,024 - ERROR - Error in episode 813: name 'args' is not defined +2025-03-10 15:29:52,026 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,026 - ERROR - Error in episode 814: name 'args' is not defined +2025-03-10 15:29:52,029 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,029 - ERROR - Error in episode 815: name 'args' is not defined +2025-03-10 15:29:52,032 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,033 - ERROR - Error in episode 816: name 'args' is not defined +2025-03-10 15:29:52,035 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,036 - ERROR - Error in episode 817: name 'args' is not defined +2025-03-10 15:29:52,038 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,039 - ERROR - Error in episode 818: name 'args' is not defined +2025-03-10 15:29:52,041 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,042 - ERROR - Error in episode 819: name 'args' is not defined +2025-03-10 15:29:52,044 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,045 - ERROR - Error in episode 820: name 'args' is not defined +2025-03-10 15:29:52,048 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,048 - ERROR - Error in episode 821: name 'args' is not defined +2025-03-10 15:29:52,051 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,051 - ERROR - Error in episode 822: name 'args' is not defined +2025-03-10 15:29:52,053 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,054 - ERROR - Error in episode 823: name 'args' is not defined +2025-03-10 15:29:52,057 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,057 - ERROR - Error in episode 824: name 'args' is not defined +2025-03-10 15:29:52,060 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,060 - ERROR - Error in episode 825: name 'args' is not defined +2025-03-10 15:29:52,063 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,063 - ERROR - Error in episode 826: name 'args' is not defined +2025-03-10 15:29:52,066 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,067 - ERROR - Error in episode 827: name 'args' is not defined +2025-03-10 15:29:52,069 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,070 - ERROR - Error in episode 828: name 'args' is not defined +2025-03-10 15:29:52,072 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,072 - ERROR - Error in episode 829: name 'args' is not defined +2025-03-10 15:29:52,074 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,075 - ERROR - Error in episode 830: name 'args' is not defined +2025-03-10 15:29:52,078 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,078 - ERROR - Error in episode 831: name 'args' is not defined +2025-03-10 15:29:52,081 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,082 - ERROR - Error in episode 832: name 'args' is not defined +2025-03-10 15:29:52,084 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,084 - ERROR - Error in episode 833: name 'args' is not defined +2025-03-10 15:29:52,087 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,087 - ERROR - Error in episode 834: name 'args' is not defined +2025-03-10 15:29:52,090 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,090 - ERROR - Error in episode 835: name 'args' is not defined +2025-03-10 15:29:52,093 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,093 - ERROR - Error in episode 836: name 'args' is not defined +2025-03-10 15:29:52,096 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,096 - ERROR - Error in episode 837: name 'args' is not defined +2025-03-10 15:29:52,099 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,099 - ERROR - Error in episode 838: name 'args' is not defined +2025-03-10 15:29:52,101 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,102 - ERROR - Error in episode 839: name 'args' is not defined +2025-03-10 15:29:52,104 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,104 - ERROR - Error in episode 840: name 'args' is not defined +2025-03-10 15:29:52,107 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,107 - ERROR - Error in episode 841: name 'args' is not defined +2025-03-10 15:29:52,110 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,110 - ERROR - Error in episode 842: name 'args' is not defined +2025-03-10 15:29:52,112 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,113 - ERROR - Error in episode 843: name 'args' is not defined +2025-03-10 15:29:52,116 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,116 - ERROR - Error in episode 844: name 'args' is not defined +2025-03-10 15:29:52,119 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,119 - ERROR - Error in episode 845: name 'args' is not defined +2025-03-10 15:29:52,122 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,122 - ERROR - Error in episode 846: name 'args' is not defined +2025-03-10 15:29:52,125 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,125 - ERROR - Error in episode 847: name 'args' is not defined +2025-03-10 15:29:52,128 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,128 - ERROR - Error in episode 848: name 'args' is not defined +2025-03-10 15:29:52,131 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,131 - ERROR - Error in episode 849: name 'args' is not defined +2025-03-10 15:29:52,134 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,134 - ERROR - Error in episode 850: name 'args' is not defined +2025-03-10 15:29:52,136 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,137 - ERROR - Error in episode 851: name 'args' is not defined +2025-03-10 15:29:52,139 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,139 - ERROR - Error in episode 852: name 'args' is not defined +2025-03-10 15:29:52,142 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,143 - ERROR - Error in episode 853: name 'args' is not defined +2025-03-10 15:29:52,146 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,146 - ERROR - Error in episode 854: name 'args' is not defined +2025-03-10 15:29:52,149 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,149 - ERROR - Error in episode 855: name 'args' is not defined +2025-03-10 15:29:52,152 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,152 - ERROR - Error in episode 856: name 'args' is not defined +2025-03-10 15:29:52,155 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,155 - ERROR - Error in episode 857: name 'args' is not defined +2025-03-10 15:29:52,158 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,158 - ERROR - Error in episode 858: name 'args' is not defined +2025-03-10 15:29:52,161 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,161 - ERROR - Error in episode 859: name 'args' is not defined +2025-03-10 15:29:52,164 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,164 - ERROR - Error in episode 860: name 'args' is not defined +2025-03-10 15:29:52,167 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,168 - ERROR - Error in episode 861: name 'args' is not defined +2025-03-10 15:29:52,170 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,170 - ERROR - Error in episode 862: name 'args' is not defined +2025-03-10 15:29:52,173 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,173 - ERROR - Error in episode 863: name 'args' is not defined +2025-03-10 15:29:52,176 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,176 - ERROR - Error in episode 864: name 'args' is not defined +2025-03-10 15:29:52,178 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,179 - ERROR - Error in episode 865: name 'args' is not defined +2025-03-10 15:29:52,181 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,182 - ERROR - Error in episode 866: name 'args' is not defined +2025-03-10 15:29:52,184 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,184 - ERROR - Error in episode 867: name 'args' is not defined +2025-03-10 15:29:52,187 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,187 - ERROR - Error in episode 868: name 'args' is not defined +2025-03-10 15:29:52,191 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,191 - ERROR - Error in episode 869: name 'args' is not defined +2025-03-10 15:29:52,194 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,194 - ERROR - Error in episode 870: name 'args' is not defined +2025-03-10 15:29:52,196 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,197 - ERROR - Error in episode 871: name 'args' is not defined +2025-03-10 15:29:52,199 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,200 - ERROR - Error in episode 872: name 'args' is not defined +2025-03-10 15:29:52,202 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,203 - ERROR - Error in episode 873: name 'args' is not defined +2025-03-10 15:29:52,206 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,206 - ERROR - Error in episode 874: name 'args' is not defined +2025-03-10 15:29:52,208 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,209 - ERROR - Error in episode 875: name 'args' is not defined +2025-03-10 15:29:52,211 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,211 - ERROR - Error in episode 876: name 'args' is not defined +2025-03-10 15:29:52,214 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,214 - ERROR - Error in episode 877: name 'args' is not defined +2025-03-10 15:29:52,217 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,217 - ERROR - Error in episode 878: name 'args' is not defined +2025-03-10 15:29:52,219 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,220 - ERROR - Error in episode 879: name 'args' is not defined +2025-03-10 15:29:52,223 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,223 - ERROR - Error in episode 880: name 'args' is not defined +2025-03-10 15:29:52,225 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,225 - ERROR - Error in episode 881: name 'args' is not defined +2025-03-10 15:29:52,228 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,228 - ERROR - Error in episode 882: name 'args' is not defined +2025-03-10 15:29:52,231 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,231 - ERROR - Error in episode 883: name 'args' is not defined +2025-03-10 15:29:52,234 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,234 - ERROR - Error in episode 884: name 'args' is not defined +2025-03-10 15:29:52,236 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,237 - ERROR - Error in episode 885: name 'args' is not defined +2025-03-10 15:29:52,239 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,240 - ERROR - Error in episode 886: name 'args' is not defined +2025-03-10 15:29:52,242 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,243 - ERROR - Error in episode 887: name 'args' is not defined +2025-03-10 15:29:52,246 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,246 - ERROR - Error in episode 888: name 'args' is not defined +2025-03-10 15:29:52,249 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,249 - ERROR - Error in episode 889: name 'args' is not defined +2025-03-10 15:29:52,252 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,252 - ERROR - Error in episode 890: name 'args' is not defined +2025-03-10 15:29:52,255 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,255 - ERROR - Error in episode 891: name 'args' is not defined +2025-03-10 15:29:52,258 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,258 - ERROR - Error in episode 892: name 'args' is not defined +2025-03-10 15:29:52,260 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,261 - ERROR - Error in episode 893: name 'args' is not defined +2025-03-10 15:29:52,264 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,264 - ERROR - Error in episode 894: name 'args' is not defined +2025-03-10 15:29:52,267 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,268 - ERROR - Error in episode 895: name 'args' is not defined +2025-03-10 15:29:52,270 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,271 - ERROR - Error in episode 896: name 'args' is not defined +2025-03-10 15:29:52,274 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,274 - ERROR - Error in episode 897: name 'args' is not defined +2025-03-10 15:29:52,277 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,277 - ERROR - Error in episode 898: name 'args' is not defined +2025-03-10 15:29:52,279 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,280 - ERROR - Error in episode 899: name 'args' is not defined +2025-03-10 15:29:52,283 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,283 - ERROR - Error in episode 900: name 'args' is not defined +2025-03-10 15:29:52,286 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,286 - ERROR - Error in episode 901: name 'args' is not defined +2025-03-10 15:29:52,288 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,289 - ERROR - Error in episode 902: name 'args' is not defined +2025-03-10 15:29:52,291 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,292 - ERROR - Error in episode 903: name 'args' is not defined +2025-03-10 15:29:52,295 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,295 - ERROR - Error in episode 904: name 'args' is not defined +2025-03-10 15:29:52,298 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,299 - ERROR - Error in episode 905: name 'args' is not defined +2025-03-10 15:29:52,301 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,301 - ERROR - Error in episode 906: name 'args' is not defined +2025-03-10 15:29:52,304 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,304 - ERROR - Error in episode 907: name 'args' is not defined +2025-03-10 15:29:52,307 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,307 - ERROR - Error in episode 908: name 'args' is not defined +2025-03-10 15:29:52,310 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,310 - ERROR - Error in episode 909: name 'args' is not defined +2025-03-10 15:29:52,313 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,314 - ERROR - Error in episode 910: name 'args' is not defined +2025-03-10 15:29:52,317 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,317 - ERROR - Error in episode 911: name 'args' is not defined +2025-03-10 15:29:52,319 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,319 - ERROR - Error in episode 912: name 'args' is not defined +2025-03-10 15:29:52,322 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,322 - ERROR - Error in episode 913: name 'args' is not defined +2025-03-10 15:29:52,324 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,325 - ERROR - Error in episode 914: name 'args' is not defined +2025-03-10 15:29:52,328 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,328 - ERROR - Error in episode 915: name 'args' is not defined +2025-03-10 15:29:52,331 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,331 - ERROR - Error in episode 916: name 'args' is not defined +2025-03-10 15:29:52,334 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,334 - ERROR - Error in episode 917: name 'args' is not defined +2025-03-10 15:29:52,337 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,337 - ERROR - Error in episode 918: name 'args' is not defined +2025-03-10 15:29:52,339 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,340 - ERROR - Error in episode 919: name 'args' is not defined +2025-03-10 15:29:52,342 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,343 - ERROR - Error in episode 920: name 'args' is not defined +2025-03-10 15:29:52,345 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,346 - ERROR - Error in episode 921: name 'args' is not defined +2025-03-10 15:29:52,349 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,349 - ERROR - Error in episode 922: name 'args' is not defined +2025-03-10 15:29:52,351 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,352 - ERROR - Error in episode 923: name 'args' is not defined +2025-03-10 15:29:52,354 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,355 - ERROR - Error in episode 924: name 'args' is not defined +2025-03-10 15:29:52,358 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,358 - ERROR - Error in episode 925: name 'args' is not defined +2025-03-10 15:29:52,360 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,361 - ERROR - Error in episode 926: name 'args' is not defined +2025-03-10 15:29:52,363 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,363 - ERROR - Error in episode 927: name 'args' is not defined +2025-03-10 15:29:52,366 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,366 - ERROR - Error in episode 928: name 'args' is not defined +2025-03-10 15:29:52,369 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,369 - ERROR - Error in episode 929: name 'args' is not defined +2025-03-10 15:29:52,372 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,373 - ERROR - Error in episode 930: name 'args' is not defined +2025-03-10 15:29:52,375 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,375 - ERROR - Error in episode 931: name 'args' is not defined +2025-03-10 15:29:52,378 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,379 - ERROR - Error in episode 932: name 'args' is not defined +2025-03-10 15:29:52,382 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,382 - ERROR - Error in episode 933: name 'args' is not defined +2025-03-10 15:29:52,384 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,385 - ERROR - Error in episode 934: name 'args' is not defined +2025-03-10 15:29:52,387 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,387 - ERROR - Error in episode 935: name 'args' is not defined +2025-03-10 15:29:52,390 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,391 - ERROR - Error in episode 936: name 'args' is not defined +2025-03-10 15:29:52,393 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,394 - ERROR - Error in episode 937: name 'args' is not defined +2025-03-10 15:29:52,396 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,396 - ERROR - Error in episode 938: name 'args' is not defined +2025-03-10 15:29:52,399 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,399 - ERROR - Error in episode 939: name 'args' is not defined +2025-03-10 15:29:52,402 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,402 - ERROR - Error in episode 940: name 'args' is not defined +2025-03-10 15:29:52,405 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,405 - ERROR - Error in episode 941: name 'args' is not defined +2025-03-10 15:29:52,408 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,408 - ERROR - Error in episode 942: name 'args' is not defined +2025-03-10 15:29:52,410 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,411 - ERROR - Error in episode 943: name 'args' is not defined +2025-03-10 15:29:52,413 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,413 - ERROR - Error in episode 944: name 'args' is not defined +2025-03-10 15:29:52,416 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,416 - ERROR - Error in episode 945: name 'args' is not defined +2025-03-10 15:29:52,419 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,419 - ERROR - Error in episode 946: name 'args' is not defined +2025-03-10 15:29:52,422 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,422 - ERROR - Error in episode 947: name 'args' is not defined +2025-03-10 15:29:52,425 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,425 - ERROR - Error in episode 948: name 'args' is not defined +2025-03-10 15:29:52,428 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,428 - ERROR - Error in episode 949: name 'args' is not defined +2025-03-10 15:29:52,431 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,431 - ERROR - Error in episode 950: name 'args' is not defined +2025-03-10 15:29:52,434 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,434 - ERROR - Error in episode 951: name 'args' is not defined +2025-03-10 15:29:52,436 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,437 - ERROR - Error in episode 952: name 'args' is not defined +2025-03-10 15:29:52,439 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,439 - ERROR - Error in episode 953: name 'args' is not defined +2025-03-10 15:29:52,442 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,442 - ERROR - Error in episode 954: name 'args' is not defined +2025-03-10 15:29:52,444 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,445 - ERROR - Error in episode 955: name 'args' is not defined +2025-03-10 15:29:52,447 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,448 - ERROR - Error in episode 956: name 'args' is not defined +2025-03-10 15:29:52,450 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,450 - ERROR - Error in episode 957: name 'args' is not defined +2025-03-10 15:29:52,453 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,454 - ERROR - Error in episode 958: name 'args' is not defined +2025-03-10 15:29:52,456 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,456 - ERROR - Error in episode 959: name 'args' is not defined +2025-03-10 15:29:52,459 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,459 - ERROR - Error in episode 960: name 'args' is not defined +2025-03-10 15:29:52,461 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,461 - ERROR - Error in episode 961: name 'args' is not defined +2025-03-10 15:29:52,465 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,465 - ERROR - Error in episode 962: name 'args' is not defined +2025-03-10 15:29:52,467 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,467 - ERROR - Error in episode 963: name 'args' is not defined +2025-03-10 15:29:52,470 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,470 - ERROR - Error in episode 964: name 'args' is not defined +2025-03-10 15:29:52,474 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,474 - ERROR - Error in episode 965: name 'args' is not defined +2025-03-10 15:29:52,476 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,477 - ERROR - Error in episode 966: name 'args' is not defined +2025-03-10 15:29:52,479 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,479 - ERROR - Error in episode 967: name 'args' is not defined +2025-03-10 15:29:52,482 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,482 - ERROR - Error in episode 968: name 'args' is not defined +2025-03-10 15:29:52,485 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,485 - ERROR - Error in episode 969: name 'args' is not defined +2025-03-10 15:29:52,487 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,488 - ERROR - Error in episode 970: name 'args' is not defined +2025-03-10 15:29:52,490 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,491 - ERROR - Error in episode 971: name 'args' is not defined +2025-03-10 15:29:52,493 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,493 - ERROR - Error in episode 972: name 'args' is not defined +2025-03-10 15:29:52,496 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,496 - ERROR - Error in episode 973: name 'args' is not defined +2025-03-10 15:29:52,499 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,499 - ERROR - Error in episode 974: name 'args' is not defined +2025-03-10 15:29:52,501 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,502 - ERROR - Error in episode 975: name 'args' is not defined +2025-03-10 15:29:52,504 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,505 - ERROR - Error in episode 976: name 'args' is not defined +2025-03-10 15:29:52,507 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,507 - ERROR - Error in episode 977: name 'args' is not defined +2025-03-10 15:29:52,510 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,510 - ERROR - Error in episode 978: name 'args' is not defined +2025-03-10 15:29:52,512 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,513 - ERROR - Error in episode 979: name 'args' is not defined +2025-03-10 15:29:52,516 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,516 - ERROR - Error in episode 980: name 'args' is not defined +2025-03-10 15:29:52,519 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,519 - ERROR - Error in episode 981: name 'args' is not defined +2025-03-10 15:29:52,522 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,522 - ERROR - Error in episode 982: name 'args' is not defined +2025-03-10 15:29:52,525 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,525 - ERROR - Error in episode 983: name 'args' is not defined +2025-03-10 15:29:52,528 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,528 - ERROR - Error in episode 984: name 'args' is not defined +2025-03-10 15:29:52,531 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,531 - ERROR - Error in episode 985: name 'args' is not defined +2025-03-10 15:29:52,534 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,534 - ERROR - Error in episode 986: name 'args' is not defined +2025-03-10 15:29:52,536 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,537 - ERROR - Error in episode 987: name 'args' is not defined +2025-03-10 15:29:52,539 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,539 - ERROR - Error in episode 988: name 'args' is not defined +2025-03-10 15:29:52,542 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,542 - ERROR - Error in episode 989: name 'args' is not defined +2025-03-10 15:29:52,545 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,545 - ERROR - Error in episode 990: name 'args' is not defined +2025-03-10 15:29:52,548 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,548 - ERROR - Error in episode 991: name 'args' is not defined +2025-03-10 15:29:52,551 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,551 - ERROR - Error in episode 992: name 'args' is not defined +2025-03-10 15:29:52,554 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,554 - ERROR - Error in episode 993: name 'args' is not defined +2025-03-10 15:29:52,557 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,558 - ERROR - Error in episode 994: name 'args' is not defined +2025-03-10 15:29:52,560 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,561 - ERROR - Error in episode 995: name 'args' is not defined +2025-03-10 15:29:52,564 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,564 - ERROR - Error in episode 996: name 'args' is not defined +2025-03-10 15:29:52,567 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,567 - ERROR - Error in episode 997: name 'args' is not defined +2025-03-10 15:29:52,569 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,570 - ERROR - Error in episode 998: name 'args' is not defined +2025-03-10 15:29:52,572 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,572 - ERROR - Error in episode 999: name 'args' is not defined +2025-03-10 15:29:52,575 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,575 - ERROR - Error in episode 1000: name 'args' is not defined +2025-03-10 15:29:52,578 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,578 - ERROR - Error in episode 1001: name 'args' is not defined +2025-03-10 15:29:52,582 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,582 - ERROR - Error in episode 1002: name 'args' is not defined +2025-03-10 15:29:52,585 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,585 - ERROR - Error in episode 1003: name 'args' is not defined +2025-03-10 15:29:52,588 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,588 - ERROR - Error in episode 1004: name 'args' is not defined +2025-03-10 15:29:52,591 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,591 - ERROR - Error in episode 1005: name 'args' is not defined +2025-03-10 15:29:52,593 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,594 - ERROR - Error in episode 1006: name 'args' is not defined +2025-03-10 15:29:52,596 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,597 - ERROR - Error in episode 1007: name 'args' is not defined +2025-03-10 15:29:52,600 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,600 - ERROR - Error in episode 1008: name 'args' is not defined +2025-03-10 15:29:52,602 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,602 - ERROR - Error in episode 1009: name 'args' is not defined +2025-03-10 15:29:52,605 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,605 - ERROR - Error in episode 1010: name 'args' is not defined +2025-03-10 15:29:52,608 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,608 - ERROR - Error in episode 1011: name 'args' is not defined +2025-03-10 15:29:52,610 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,611 - ERROR - Error in episode 1012: name 'args' is not defined +2025-03-10 15:29:52,613 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,614 - ERROR - Error in episode 1013: name 'args' is not defined +2025-03-10 15:29:52,616 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,617 - ERROR - Error in episode 1014: name 'args' is not defined +2025-03-10 15:29:52,619 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,619 - ERROR - Error in episode 1015: name 'args' is not defined +2025-03-10 15:29:52,621 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,622 - ERROR - Error in episode 1016: name 'args' is not defined +2025-03-10 15:29:52,625 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,625 - ERROR - Error in episode 1017: name 'args' is not defined +2025-03-10 15:29:52,627 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,628 - ERROR - Error in episode 1018: name 'args' is not defined +2025-03-10 15:29:52,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,630 - ERROR - Error in episode 1019: name 'args' is not defined +2025-03-10 15:29:52,634 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,635 - ERROR - Error in episode 1020: name 'args' is not defined +2025-03-10 15:29:52,638 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,638 - ERROR - Error in episode 1021: name 'args' is not defined +2025-03-10 15:29:52,641 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,641 - ERROR - Error in episode 1022: name 'args' is not defined +2025-03-10 15:29:52,644 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,644 - ERROR - Error in episode 1023: name 'args' is not defined +2025-03-10 15:29:52,647 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,648 - ERROR - Error in episode 1024: name 'args' is not defined +2025-03-10 15:29:52,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,651 - ERROR - Error in episode 1025: name 'args' is not defined +2025-03-10 15:29:52,654 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,654 - ERROR - Error in episode 1026: name 'args' is not defined +2025-03-10 15:29:52,657 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,658 - ERROR - Error in episode 1027: name 'args' is not defined +2025-03-10 15:29:52,660 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,661 - ERROR - Error in episode 1028: name 'args' is not defined +2025-03-10 15:29:52,663 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,663 - ERROR - Error in episode 1029: name 'args' is not defined +2025-03-10 15:29:52,666 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,666 - ERROR - Error in episode 1030: name 'args' is not defined +2025-03-10 15:29:52,669 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,669 - ERROR - Error in episode 1031: name 'args' is not defined +2025-03-10 15:29:52,671 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,672 - ERROR - Error in episode 1032: name 'args' is not defined +2025-03-10 15:29:52,675 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,675 - ERROR - Error in episode 1033: name 'args' is not defined +2025-03-10 15:29:52,677 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,678 - ERROR - Error in episode 1034: name 'args' is not defined +2025-03-10 15:29:52,680 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,681 - ERROR - Error in episode 1035: name 'args' is not defined +2025-03-10 15:29:52,683 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,684 - ERROR - Error in episode 1036: name 'args' is not defined +2025-03-10 15:29:52,686 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,686 - ERROR - Error in episode 1037: name 'args' is not defined +2025-03-10 15:29:52,689 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,689 - ERROR - Error in episode 1038: name 'args' is not defined +2025-03-10 15:29:52,692 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,692 - ERROR - Error in episode 1039: name 'args' is not defined +2025-03-10 15:29:52,695 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,695 - ERROR - Error in episode 1040: name 'args' is not defined +2025-03-10 15:29:52,698 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,699 - ERROR - Error in episode 1041: name 'args' is not defined +2025-03-10 15:29:52,701 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,701 - ERROR - Error in episode 1042: name 'args' is not defined +2025-03-10 15:29:52,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,704 - ERROR - Error in episode 1043: name 'args' is not defined +2025-03-10 15:29:52,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,707 - ERROR - Error in episode 1044: name 'args' is not defined +2025-03-10 15:29:52,709 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,710 - ERROR - Error in episode 1045: name 'args' is not defined +2025-03-10 15:29:52,712 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,712 - ERROR - Error in episode 1046: name 'args' is not defined +2025-03-10 15:29:52,715 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,716 - ERROR - Error in episode 1047: name 'args' is not defined +2025-03-10 15:29:52,718 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,719 - ERROR - Error in episode 1048: name 'args' is not defined +2025-03-10 15:29:52,721 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,721 - ERROR - Error in episode 1049: name 'args' is not defined +2025-03-10 15:29:52,724 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,724 - ERROR - Error in episode 1050: name 'args' is not defined +2025-03-10 15:29:52,726 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,727 - ERROR - Error in episode 1051: name 'args' is not defined +2025-03-10 15:29:52,729 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,729 - ERROR - Error in episode 1052: name 'args' is not defined +2025-03-10 15:29:52,732 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,732 - ERROR - Error in episode 1053: name 'args' is not defined +2025-03-10 15:29:52,735 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,735 - ERROR - Error in episode 1054: name 'args' is not defined +2025-03-10 15:29:52,737 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,738 - ERROR - Error in episode 1055: name 'args' is not defined +2025-03-10 15:29:52,741 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,741 - ERROR - Error in episode 1056: name 'args' is not defined +2025-03-10 15:29:52,743 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,744 - ERROR - Error in episode 1057: name 'args' is not defined +2025-03-10 15:29:52,746 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,746 - ERROR - Error in episode 1058: name 'args' is not defined +2025-03-10 15:29:52,749 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,749 - ERROR - Error in episode 1059: name 'args' is not defined +2025-03-10 15:29:52,752 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,752 - ERROR - Error in episode 1060: name 'args' is not defined +2025-03-10 15:29:52,755 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,756 - ERROR - Error in episode 1061: name 'args' is not defined +2025-03-10 15:29:52,758 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,759 - ERROR - Error in episode 1062: name 'args' is not defined +2025-03-10 15:29:52,761 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,762 - ERROR - Error in episode 1063: name 'args' is not defined +2025-03-10 15:29:52,764 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,765 - ERROR - Error in episode 1064: name 'args' is not defined +2025-03-10 15:29:52,767 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,767 - ERROR - Error in episode 1065: name 'args' is not defined +2025-03-10 15:29:52,770 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,770 - ERROR - Error in episode 1066: name 'args' is not defined +2025-03-10 15:29:52,773 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,773 - ERROR - Error in episode 1067: name 'args' is not defined +2025-03-10 15:29:52,775 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,776 - ERROR - Error in episode 1068: name 'args' is not defined +2025-03-10 15:29:52,778 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,779 - ERROR - Error in episode 1069: name 'args' is not defined +2025-03-10 15:29:52,782 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,782 - ERROR - Error in episode 1070: name 'args' is not defined +2025-03-10 15:29:52,785 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,785 - ERROR - Error in episode 1071: name 'args' is not defined +2025-03-10 15:29:52,788 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,788 - ERROR - Error in episode 1072: name 'args' is not defined +2025-03-10 15:29:52,791 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,791 - ERROR - Error in episode 1073: name 'args' is not defined +2025-03-10 15:29:52,794 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,794 - ERROR - Error in episode 1074: name 'args' is not defined +2025-03-10 15:29:52,796 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,797 - ERROR - Error in episode 1075: name 'args' is not defined +2025-03-10 15:29:52,799 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,800 - ERROR - Error in episode 1076: name 'args' is not defined +2025-03-10 15:29:52,802 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,802 - ERROR - Error in episode 1077: name 'args' is not defined +2025-03-10 15:29:52,804 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,805 - ERROR - Error in episode 1078: name 'args' is not defined +2025-03-10 15:29:52,808 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,808 - ERROR - Error in episode 1079: name 'args' is not defined +2025-03-10 15:29:52,810 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,810 - ERROR - Error in episode 1080: name 'args' is not defined +2025-03-10 15:29:52,814 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,814 - ERROR - Error in episode 1081: name 'args' is not defined +2025-03-10 15:29:52,817 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,817 - ERROR - Error in episode 1082: name 'args' is not defined +2025-03-10 15:29:52,819 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,820 - ERROR - Error in episode 1083: name 'args' is not defined +2025-03-10 15:29:52,822 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,822 - ERROR - Error in episode 1084: name 'args' is not defined +2025-03-10 15:29:52,825 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,825 - ERROR - Error in episode 1085: name 'args' is not defined +2025-03-10 15:29:52,827 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,828 - ERROR - Error in episode 1086: name 'args' is not defined +2025-03-10 15:29:52,830 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,830 - ERROR - Error in episode 1087: name 'args' is not defined +2025-03-10 15:29:52,833 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,833 - ERROR - Error in episode 1088: name 'args' is not defined +2025-03-10 15:29:52,835 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,836 - ERROR - Error in episode 1089: name 'args' is not defined +2025-03-10 15:29:52,838 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,838 - ERROR - Error in episode 1090: name 'args' is not defined +2025-03-10 15:29:52,841 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,841 - ERROR - Error in episode 1091: name 'args' is not defined +2025-03-10 15:29:52,844 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,845 - ERROR - Error in episode 1092: name 'args' is not defined +2025-03-10 15:29:52,847 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,847 - ERROR - Error in episode 1093: name 'args' is not defined +2025-03-10 15:29:52,850 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,850 - ERROR - Error in episode 1094: name 'args' is not defined +2025-03-10 15:29:52,854 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,854 - ERROR - Error in episode 1095: name 'args' is not defined +2025-03-10 15:29:52,857 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,857 - ERROR - Error in episode 1096: name 'args' is not defined +2025-03-10 15:29:52,860 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,860 - ERROR - Error in episode 1097: name 'args' is not defined +2025-03-10 15:29:52,863 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,863 - ERROR - Error in episode 1098: name 'args' is not defined +2025-03-10 15:29:52,866 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,866 - ERROR - Error in episode 1099: name 'args' is not defined +2025-03-10 15:29:52,868 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,869 - ERROR - Error in episode 1100: name 'args' is not defined +2025-03-10 15:29:52,871 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,871 - ERROR - Error in episode 1101: name 'args' is not defined +2025-03-10 15:29:52,875 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,875 - ERROR - Error in episode 1102: name 'args' is not defined +2025-03-10 15:29:52,877 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,878 - ERROR - Error in episode 1103: name 'args' is not defined +2025-03-10 15:29:52,880 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,880 - ERROR - Error in episode 1104: name 'args' is not defined +2025-03-10 15:29:52,883 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,883 - ERROR - Error in episode 1105: name 'args' is not defined +2025-03-10 15:29:52,886 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,886 - ERROR - Error in episode 1106: name 'args' is not defined +2025-03-10 15:29:52,888 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,889 - ERROR - Error in episode 1107: name 'args' is not defined +2025-03-10 15:29:52,891 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,892 - ERROR - Error in episode 1108: name 'args' is not defined +2025-03-10 15:29:52,894 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,895 - ERROR - Error in episode 1109: name 'args' is not defined +2025-03-10 15:29:52,897 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,897 - ERROR - Error in episode 1110: name 'args' is not defined +2025-03-10 15:29:52,900 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,900 - ERROR - Error in episode 1111: name 'args' is not defined +2025-03-10 15:29:52,903 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,903 - ERROR - Error in episode 1112: name 'args' is not defined +2025-03-10 15:29:52,905 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,906 - ERROR - Error in episode 1113: name 'args' is not defined +2025-03-10 15:29:52,909 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,909 - ERROR - Error in episode 1114: name 'args' is not defined +2025-03-10 15:29:52,912 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,912 - ERROR - Error in episode 1115: name 'args' is not defined +2025-03-10 15:29:52,914 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,915 - ERROR - Error in episode 1116: name 'args' is not defined +2025-03-10 15:29:52,917 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,918 - ERROR - Error in episode 1117: name 'args' is not defined +2025-03-10 15:29:52,921 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,922 - ERROR - Error in episode 1118: name 'args' is not defined +2025-03-10 15:29:52,925 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,925 - ERROR - Error in episode 1119: name 'args' is not defined +2025-03-10 15:29:52,927 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,928 - ERROR - Error in episode 1120: name 'args' is not defined +2025-03-10 15:29:52,930 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,930 - ERROR - Error in episode 1121: name 'args' is not defined +2025-03-10 15:29:52,933 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,934 - ERROR - Error in episode 1122: name 'args' is not defined +2025-03-10 15:29:52,936 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,936 - ERROR - Error in episode 1123: name 'args' is not defined +2025-03-10 15:29:52,939 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,939 - ERROR - Error in episode 1124: name 'args' is not defined +2025-03-10 15:29:52,942 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,943 - ERROR - Error in episode 1125: name 'args' is not defined +2025-03-10 15:29:52,945 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,945 - ERROR - Error in episode 1126: name 'args' is not defined +2025-03-10 15:29:52,948 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,948 - ERROR - Error in episode 1127: name 'args' is not defined +2025-03-10 15:29:52,951 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,951 - ERROR - Error in episode 1128: name 'args' is not defined +2025-03-10 15:29:52,953 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,954 - ERROR - Error in episode 1129: name 'args' is not defined +2025-03-10 15:29:52,956 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,957 - ERROR - Error in episode 1130: name 'args' is not defined +2025-03-10 15:29:52,959 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,960 - ERROR - Error in episode 1131: name 'args' is not defined +2025-03-10 15:29:52,962 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,963 - ERROR - Error in episode 1132: name 'args' is not defined +2025-03-10 15:29:52,966 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,966 - ERROR - Error in episode 1133: name 'args' is not defined +2025-03-10 15:29:52,969 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,969 - ERROR - Error in episode 1134: name 'args' is not defined +2025-03-10 15:29:52,971 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,972 - ERROR - Error in episode 1135: name 'args' is not defined +2025-03-10 15:29:52,974 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,975 - ERROR - Error in episode 1136: name 'args' is not defined +2025-03-10 15:29:52,977 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,977 - ERROR - Error in episode 1137: name 'args' is not defined +2025-03-10 15:29:52,980 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,980 - ERROR - Error in episode 1138: name 'args' is not defined +2025-03-10 15:29:52,983 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,983 - ERROR - Error in episode 1139: name 'args' is not defined +2025-03-10 15:29:52,985 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,986 - ERROR - Error in episode 1140: name 'args' is not defined +2025-03-10 15:29:52,988 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,988 - ERROR - Error in episode 1141: name 'args' is not defined +2025-03-10 15:29:52,991 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,991 - ERROR - Error in episode 1142: name 'args' is not defined +2025-03-10 15:29:52,994 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,994 - ERROR - Error in episode 1143: name 'args' is not defined +2025-03-10 15:29:52,996 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:52,997 - ERROR - Error in episode 1144: name 'args' is not defined +2025-03-10 15:29:52,999 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,000 - ERROR - Error in episode 1145: name 'args' is not defined +2025-03-10 15:29:53,002 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,002 - ERROR - Error in episode 1146: name 'args' is not defined +2025-03-10 15:29:53,005 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,005 - ERROR - Error in episode 1147: name 'args' is not defined +2025-03-10 15:29:53,008 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,008 - ERROR - Error in episode 1148: name 'args' is not defined +2025-03-10 15:29:53,011 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,011 - ERROR - Error in episode 1149: name 'args' is not defined +2025-03-10 15:29:53,014 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,014 - ERROR - Error in episode 1150: name 'args' is not defined +2025-03-10 15:29:53,017 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,018 - ERROR - Error in episode 1151: name 'args' is not defined +2025-03-10 15:29:53,021 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,021 - ERROR - Error in episode 1152: name 'args' is not defined +2025-03-10 15:29:53,024 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,024 - ERROR - Error in episode 1153: name 'args' is not defined +2025-03-10 15:29:53,027 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,027 - ERROR - Error in episode 1154: name 'args' is not defined +2025-03-10 15:29:53,029 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,030 - ERROR - Error in episode 1155: name 'args' is not defined +2025-03-10 15:29:53,033 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,033 - ERROR - Error in episode 1156: name 'args' is not defined +2025-03-10 15:29:53,035 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,036 - ERROR - Error in episode 1157: name 'args' is not defined +2025-03-10 15:29:53,038 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,038 - ERROR - Error in episode 1158: name 'args' is not defined +2025-03-10 15:29:53,041 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,041 - ERROR - Error in episode 1159: name 'args' is not defined +2025-03-10 15:29:53,044 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,044 - ERROR - Error in episode 1160: name 'args' is not defined +2025-03-10 15:29:53,046 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,048 - ERROR - Error in episode 1161: name 'args' is not defined +2025-03-10 15:29:53,050 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,051 - ERROR - Error in episode 1162: name 'args' is not defined +2025-03-10 15:29:53,053 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,054 - ERROR - Error in episode 1163: name 'args' is not defined +2025-03-10 15:29:53,057 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,057 - ERROR - Error in episode 1164: name 'args' is not defined +2025-03-10 15:29:53,060 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,060 - ERROR - Error in episode 1165: name 'args' is not defined +2025-03-10 15:29:53,062 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,063 - ERROR - Error in episode 1166: name 'args' is not defined +2025-03-10 15:29:53,066 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,066 - ERROR - Error in episode 1167: name 'args' is not defined +2025-03-10 15:29:53,068 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,069 - ERROR - Error in episode 1168: name 'args' is not defined +2025-03-10 15:29:53,071 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,071 - ERROR - Error in episode 1169: name 'args' is not defined +2025-03-10 15:29:53,074 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,074 - ERROR - Error in episode 1170: name 'args' is not defined +2025-03-10 15:29:53,077 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,077 - ERROR - Error in episode 1171: name 'args' is not defined +2025-03-10 15:29:53,080 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,080 - ERROR - Error in episode 1172: name 'args' is not defined +2025-03-10 15:29:53,083 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,083 - ERROR - Error in episode 1173: name 'args' is not defined +2025-03-10 15:29:53,086 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,086 - ERROR - Error in episode 1174: name 'args' is not defined +2025-03-10 15:29:53,088 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,089 - ERROR - Error in episode 1175: name 'args' is not defined +2025-03-10 15:29:53,091 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,091 - ERROR - Error in episode 1176: name 'args' is not defined +2025-03-10 15:29:53,095 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,096 - ERROR - Error in episode 1177: name 'args' is not defined +2025-03-10 15:29:53,098 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,098 - ERROR - Error in episode 1178: name 'args' is not defined +2025-03-10 15:29:53,101 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,101 - ERROR - Error in episode 1179: name 'args' is not defined +2025-03-10 15:29:53,104 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,105 - ERROR - Error in episode 1180: name 'args' is not defined +2025-03-10 15:29:53,107 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,107 - ERROR - Error in episode 1181: name 'args' is not defined +2025-03-10 15:29:53,110 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,110 - ERROR - Error in episode 1182: name 'args' is not defined +2025-03-10 15:29:53,113 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,113 - ERROR - Error in episode 1183: name 'args' is not defined +2025-03-10 15:29:53,116 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,116 - ERROR - Error in episode 1184: name 'args' is not defined +2025-03-10 15:29:53,118 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,119 - ERROR - Error in episode 1185: name 'args' is not defined +2025-03-10 15:29:53,121 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,121 - ERROR - Error in episode 1186: name 'args' is not defined +2025-03-10 15:29:53,124 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,124 - ERROR - Error in episode 1187: name 'args' is not defined +2025-03-10 15:29:53,127 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,127 - ERROR - Error in episode 1188: name 'args' is not defined +2025-03-10 15:29:53,129 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,130 - ERROR - Error in episode 1189: name 'args' is not defined +2025-03-10 15:29:53,132 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,133 - ERROR - Error in episode 1190: name 'args' is not defined +2025-03-10 15:29:53,135 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,136 - ERROR - Error in episode 1191: name 'args' is not defined +2025-03-10 15:29:53,139 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,139 - ERROR - Error in episode 1192: name 'args' is not defined +2025-03-10 15:29:53,142 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,142 - ERROR - Error in episode 1193: name 'args' is not defined +2025-03-10 15:29:53,145 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,146 - ERROR - Error in episode 1194: name 'args' is not defined +2025-03-10 15:29:53,148 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,148 - ERROR - Error in episode 1195: name 'args' is not defined +2025-03-10 15:29:53,151 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,151 - ERROR - Error in episode 1196: name 'args' is not defined +2025-03-10 15:29:53,155 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,155 - ERROR - Error in episode 1197: name 'args' is not defined +2025-03-10 15:29:53,159 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,159 - ERROR - Error in episode 1198: name 'args' is not defined +2025-03-10 15:29:53,162 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,163 - ERROR - Error in episode 1199: name 'args' is not defined +2025-03-10 15:29:53,166 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,166 - ERROR - Error in episode 1200: name 'args' is not defined +2025-03-10 15:29:53,169 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,169 - ERROR - Error in episode 1201: name 'args' is not defined +2025-03-10 15:29:53,172 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,172 - ERROR - Error in episode 1202: name 'args' is not defined +2025-03-10 15:29:53,176 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,176 - ERROR - Error in episode 1203: name 'args' is not defined +2025-03-10 15:29:53,180 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,180 - ERROR - Error in episode 1204: name 'args' is not defined +2025-03-10 15:29:53,184 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,185 - ERROR - Error in episode 1205: name 'args' is not defined +2025-03-10 15:29:53,188 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,189 - ERROR - Error in episode 1206: name 'args' is not defined +2025-03-10 15:29:53,193 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,193 - ERROR - Error in episode 1207: name 'args' is not defined +2025-03-10 15:29:53,197 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,198 - ERROR - Error in episode 1208: name 'args' is not defined +2025-03-10 15:29:53,201 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,201 - ERROR - Error in episode 1209: name 'args' is not defined +2025-03-10 15:29:53,206 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,206 - ERROR - Error in episode 1210: name 'args' is not defined +2025-03-10 15:29:53,210 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,210 - ERROR - Error in episode 1211: name 'args' is not defined +2025-03-10 15:29:53,212 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,213 - ERROR - Error in episode 1212: name 'args' is not defined +2025-03-10 15:29:53,216 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,216 - ERROR - Error in episode 1213: name 'args' is not defined +2025-03-10 15:29:53,219 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,219 - ERROR - Error in episode 1214: name 'args' is not defined +2025-03-10 15:29:53,224 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,224 - ERROR - Error in episode 1215: name 'args' is not defined +2025-03-10 15:29:53,228 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,229 - ERROR - Error in episode 1216: name 'args' is not defined +2025-03-10 15:29:53,231 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,232 - ERROR - Error in episode 1217: name 'args' is not defined +2025-03-10 15:29:53,234 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,235 - ERROR - Error in episode 1218: name 'args' is not defined +2025-03-10 15:29:53,239 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,239 - ERROR - Error in episode 1219: name 'args' is not defined +2025-03-10 15:29:53,242 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,242 - ERROR - Error in episode 1220: name 'args' is not defined +2025-03-10 15:29:53,245 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,245 - ERROR - Error in episode 1221: name 'args' is not defined +2025-03-10 15:29:53,248 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,248 - ERROR - Error in episode 1222: name 'args' is not defined +2025-03-10 15:29:53,251 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,251 - ERROR - Error in episode 1223: name 'args' is not defined +2025-03-10 15:29:53,254 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,254 - ERROR - Error in episode 1224: name 'args' is not defined +2025-03-10 15:29:53,257 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,257 - ERROR - Error in episode 1225: name 'args' is not defined +2025-03-10 15:29:53,260 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,260 - ERROR - Error in episode 1226: name 'args' is not defined +2025-03-10 15:29:53,262 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,263 - ERROR - Error in episode 1227: name 'args' is not defined +2025-03-10 15:29:53,265 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,266 - ERROR - Error in episode 1228: name 'args' is not defined +2025-03-10 15:29:53,268 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,269 - ERROR - Error in episode 1229: name 'args' is not defined +2025-03-10 15:29:53,271 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,272 - ERROR - Error in episode 1230: name 'args' is not defined +2025-03-10 15:29:53,275 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,275 - ERROR - Error in episode 1231: name 'args' is not defined +2025-03-10 15:29:53,278 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,278 - ERROR - Error in episode 1232: name 'args' is not defined +2025-03-10 15:29:53,281 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,281 - ERROR - Error in episode 1233: name 'args' is not defined +2025-03-10 15:29:53,284 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,284 - ERROR - Error in episode 1234: name 'args' is not defined +2025-03-10 15:29:53,286 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,287 - ERROR - Error in episode 1235: name 'args' is not defined +2025-03-10 15:29:53,289 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,290 - ERROR - Error in episode 1236: name 'args' is not defined +2025-03-10 15:29:53,292 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,293 - ERROR - Error in episode 1237: name 'args' is not defined +2025-03-10 15:29:53,295 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,296 - ERROR - Error in episode 1238: name 'args' is not defined +2025-03-10 15:29:53,298 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,298 - ERROR - Error in episode 1239: name 'args' is not defined +2025-03-10 15:29:53,301 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,301 - ERROR - Error in episode 1240: name 'args' is not defined +2025-03-10 15:29:53,304 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,305 - ERROR - Error in episode 1241: name 'args' is not defined +2025-03-10 15:29:53,307 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,308 - ERROR - Error in episode 1242: name 'args' is not defined +2025-03-10 15:29:53,310 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,311 - ERROR - Error in episode 1243: name 'args' is not defined +2025-03-10 15:29:53,313 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,313 - ERROR - Error in episode 1244: name 'args' is not defined +2025-03-10 15:29:53,315 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,316 - ERROR - Error in episode 1245: name 'args' is not defined +2025-03-10 15:29:53,318 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,318 - ERROR - Error in episode 1246: name 'args' is not defined +2025-03-10 15:29:53,322 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,322 - ERROR - Error in episode 1247: name 'args' is not defined +2025-03-10 15:29:53,325 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,325 - ERROR - Error in episode 1248: name 'args' is not defined +2025-03-10 15:29:53,328 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,328 - ERROR - Error in episode 1249: name 'args' is not defined +2025-03-10 15:29:53,331 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,331 - ERROR - Error in episode 1250: name 'args' is not defined +2025-03-10 15:29:53,334 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,334 - ERROR - Error in episode 1251: name 'args' is not defined +2025-03-10 15:29:53,337 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,337 - ERROR - Error in episode 1252: name 'args' is not defined +2025-03-10 15:29:53,340 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,340 - ERROR - Error in episode 1253: name 'args' is not defined +2025-03-10 15:29:53,343 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,343 - ERROR - Error in episode 1254: name 'args' is not defined +2025-03-10 15:29:53,346 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,346 - ERROR - Error in episode 1255: name 'args' is not defined +2025-03-10 15:29:53,349 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,349 - ERROR - Error in episode 1256: name 'args' is not defined +2025-03-10 15:29:53,352 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,352 - ERROR - Error in episode 1257: name 'args' is not defined +2025-03-10 15:29:53,354 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,355 - ERROR - Error in episode 1258: name 'args' is not defined +2025-03-10 15:29:53,357 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,357 - ERROR - Error in episode 1259: name 'args' is not defined +2025-03-10 15:29:53,360 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,360 - ERROR - Error in episode 1260: name 'args' is not defined +2025-03-10 15:29:53,362 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,363 - ERROR - Error in episode 1261: name 'args' is not defined +2025-03-10 15:29:53,365 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,365 - ERROR - Error in episode 1262: name 'args' is not defined +2025-03-10 15:29:53,368 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,369 - ERROR - Error in episode 1263: name 'args' is not defined +2025-03-10 15:29:53,372 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,372 - ERROR - Error in episode 1264: name 'args' is not defined +2025-03-10 15:29:53,375 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,375 - ERROR - Error in episode 1265: name 'args' is not defined +2025-03-10 15:29:53,378 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,378 - ERROR - Error in episode 1266: name 'args' is not defined +2025-03-10 15:29:53,380 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,380 - ERROR - Error in episode 1267: name 'args' is not defined +2025-03-10 15:29:53,383 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,383 - ERROR - Error in episode 1268: name 'args' is not defined +2025-03-10 15:29:53,386 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,386 - ERROR - Error in episode 1269: name 'args' is not defined +2025-03-10 15:29:53,388 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,389 - ERROR - Error in episode 1270: name 'args' is not defined +2025-03-10 15:29:53,391 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,393 - ERROR - Error in episode 1271: name 'args' is not defined +2025-03-10 15:29:53,395 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,396 - ERROR - Error in episode 1272: name 'args' is not defined +2025-03-10 15:29:53,399 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,399 - ERROR - Error in episode 1273: name 'args' is not defined +2025-03-10 15:29:53,402 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,402 - ERROR - Error in episode 1274: name 'args' is not defined +2025-03-10 15:29:53,405 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,405 - ERROR - Error in episode 1275: name 'args' is not defined +2025-03-10 15:29:53,408 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,409 - ERROR - Error in episode 1276: name 'args' is not defined +2025-03-10 15:29:53,411 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,412 - ERROR - Error in episode 1277: name 'args' is not defined +2025-03-10 15:29:53,414 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,414 - ERROR - Error in episode 1278: name 'args' is not defined +2025-03-10 15:29:53,417 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,417 - ERROR - Error in episode 1279: name 'args' is not defined +2025-03-10 15:29:53,420 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,420 - ERROR - Error in episode 1280: name 'args' is not defined +2025-03-10 15:29:53,422 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,423 - ERROR - Error in episode 1281: name 'args' is not defined +2025-03-10 15:29:53,425 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,425 - ERROR - Error in episode 1282: name 'args' is not defined +2025-03-10 15:29:53,429 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,429 - ERROR - Error in episode 1283: name 'args' is not defined +2025-03-10 15:29:53,431 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,432 - ERROR - Error in episode 1284: name 'args' is not defined +2025-03-10 15:29:53,434 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,435 - ERROR - Error in episode 1285: name 'args' is not defined +2025-03-10 15:29:53,437 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,438 - ERROR - Error in episode 1286: name 'args' is not defined +2025-03-10 15:29:53,440 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,440 - ERROR - Error in episode 1287: name 'args' is not defined +2025-03-10 15:29:53,443 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,444 - ERROR - Error in episode 1288: name 'args' is not defined +2025-03-10 15:29:53,446 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,447 - ERROR - Error in episode 1289: name 'args' is not defined +2025-03-10 15:29:53,450 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,450 - ERROR - Error in episode 1290: name 'args' is not defined +2025-03-10 15:29:53,453 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,454 - ERROR - Error in episode 1291: name 'args' is not defined +2025-03-10 15:29:53,456 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,457 - ERROR - Error in episode 1292: name 'args' is not defined +2025-03-10 15:29:53,459 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,460 - ERROR - Error in episode 1293: name 'args' is not defined +2025-03-10 15:29:53,462 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,463 - ERROR - Error in episode 1294: name 'args' is not defined +2025-03-10 15:29:53,466 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,466 - ERROR - Error in episode 1295: name 'args' is not defined +2025-03-10 15:29:53,468 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,469 - ERROR - Error in episode 1296: name 'args' is not defined +2025-03-10 15:29:53,471 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,471 - ERROR - Error in episode 1297: name 'args' is not defined +2025-03-10 15:29:53,474 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,474 - ERROR - Error in episode 1298: name 'args' is not defined +2025-03-10 15:29:53,477 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,477 - ERROR - Error in episode 1299: name 'args' is not defined +2025-03-10 15:29:53,480 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,480 - ERROR - Error in episode 1300: name 'args' is not defined +2025-03-10 15:29:53,483 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,483 - ERROR - Error in episode 1301: name 'args' is not defined +2025-03-10 15:29:53,485 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,486 - ERROR - Error in episode 1302: name 'args' is not defined +2025-03-10 15:29:53,488 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,488 - ERROR - Error in episode 1303: name 'args' is not defined +2025-03-10 15:29:53,491 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,492 - ERROR - Error in episode 1304: name 'args' is not defined +2025-03-10 15:29:53,494 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,495 - ERROR - Error in episode 1305: name 'args' is not defined +2025-03-10 15:29:53,497 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,498 - ERROR - Error in episode 1306: name 'args' is not defined +2025-03-10 15:29:53,501 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,501 - ERROR - Error in episode 1307: name 'args' is not defined +2025-03-10 15:29:53,503 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,504 - ERROR - Error in episode 1308: name 'args' is not defined +2025-03-10 15:29:53,507 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,508 - ERROR - Error in episode 1309: name 'args' is not defined +2025-03-10 15:29:53,510 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,511 - ERROR - Error in episode 1310: name 'args' is not defined +2025-03-10 15:29:53,513 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,513 - ERROR - Error in episode 1311: name 'args' is not defined +2025-03-10 15:29:53,516 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,516 - ERROR - Error in episode 1312: name 'args' is not defined +2025-03-10 15:29:53,518 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,519 - ERROR - Error in episode 1313: name 'args' is not defined +2025-03-10 15:29:53,520 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,521 - ERROR - Error in episode 1314: name 'args' is not defined +2025-03-10 15:29:53,523 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,524 - ERROR - Error in episode 1315: name 'args' is not defined +2025-03-10 15:29:53,526 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,527 - ERROR - Error in episode 1316: name 'args' is not defined +2025-03-10 15:29:53,529 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,529 - ERROR - Error in episode 1317: name 'args' is not defined +2025-03-10 15:29:53,533 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,533 - ERROR - Error in episode 1318: name 'args' is not defined +2025-03-10 15:29:53,536 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,536 - ERROR - Error in episode 1319: name 'args' is not defined +2025-03-10 15:29:53,539 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,539 - ERROR - Error in episode 1320: name 'args' is not defined +2025-03-10 15:29:53,542 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,542 - ERROR - Error in episode 1321: name 'args' is not defined +2025-03-10 15:29:53,544 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,545 - ERROR - Error in episode 1322: name 'args' is not defined +2025-03-10 15:29:53,547 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,548 - ERROR - Error in episode 1323: name 'args' is not defined +2025-03-10 15:29:53,550 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,551 - ERROR - Error in episode 1324: name 'args' is not defined +2025-03-10 15:29:53,553 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,553 - ERROR - Error in episode 1325: name 'args' is not defined +2025-03-10 15:29:53,556 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,556 - ERROR - Error in episode 1326: name 'args' is not defined +2025-03-10 15:29:53,559 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,559 - ERROR - Error in episode 1327: name 'args' is not defined +2025-03-10 15:29:53,562 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,563 - ERROR - Error in episode 1328: name 'args' is not defined +2025-03-10 15:29:53,565 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,566 - ERROR - Error in episode 1329: name 'args' is not defined +2025-03-10 15:29:53,568 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,569 - ERROR - Error in episode 1330: name 'args' is not defined +2025-03-10 15:29:53,571 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,571 - ERROR - Error in episode 1331: name 'args' is not defined +2025-03-10 15:29:53,574 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,575 - ERROR - Error in episode 1332: name 'args' is not defined +2025-03-10 15:29:53,576 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,577 - ERROR - Error in episode 1333: name 'args' is not defined +2025-03-10 15:29:53,580 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,580 - ERROR - Error in episode 1334: name 'args' is not defined +2025-03-10 15:29:53,583 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,583 - ERROR - Error in episode 1335: name 'args' is not defined +2025-03-10 15:29:53,586 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,586 - ERROR - Error in episode 1336: name 'args' is not defined +2025-03-10 15:29:53,589 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,589 - ERROR - Error in episode 1337: name 'args' is not defined +2025-03-10 15:29:53,593 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,593 - ERROR - Error in episode 1338: name 'args' is not defined +2025-03-10 15:29:53,595 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,596 - ERROR - Error in episode 1339: name 'args' is not defined +2025-03-10 15:29:53,598 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,599 - ERROR - Error in episode 1340: name 'args' is not defined +2025-03-10 15:29:53,601 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,602 - ERROR - Error in episode 1341: name 'args' is not defined +2025-03-10 15:29:53,605 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,605 - ERROR - Error in episode 1342: name 'args' is not defined +2025-03-10 15:29:53,608 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,609 - ERROR - Error in episode 1343: name 'args' is not defined +2025-03-10 15:29:53,611 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,611 - ERROR - Error in episode 1344: name 'args' is not defined +2025-03-10 15:29:53,614 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,614 - ERROR - Error in episode 1345: name 'args' is not defined +2025-03-10 15:29:53,617 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,617 - ERROR - Error in episode 1346: name 'args' is not defined +2025-03-10 15:29:53,620 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,620 - ERROR - Error in episode 1347: name 'args' is not defined +2025-03-10 15:29:53,622 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,623 - ERROR - Error in episode 1348: name 'args' is not defined +2025-03-10 15:29:53,625 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,626 - ERROR - Error in episode 1349: name 'args' is not defined +2025-03-10 15:29:53,629 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,629 - ERROR - Error in episode 1350: name 'args' is not defined +2025-03-10 15:29:53,632 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,632 - ERROR - Error in episode 1351: name 'args' is not defined +2025-03-10 15:29:53,636 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,636 - ERROR - Error in episode 1352: name 'args' is not defined +2025-03-10 15:29:53,638 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,638 - ERROR - Error in episode 1353: name 'args' is not defined +2025-03-10 15:29:53,641 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,642 - ERROR - Error in episode 1354: name 'args' is not defined +2025-03-10 15:29:53,644 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,645 - ERROR - Error in episode 1355: name 'args' is not defined +2025-03-10 15:29:53,647 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,648 - ERROR - Error in episode 1356: name 'args' is not defined +2025-03-10 15:29:53,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,652 - ERROR - Error in episode 1357: name 'args' is not defined +2025-03-10 15:29:53,655 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,655 - ERROR - Error in episode 1358: name 'args' is not defined +2025-03-10 15:29:53,658 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,658 - ERROR - Error in episode 1359: name 'args' is not defined +2025-03-10 15:29:53,662 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,662 - ERROR - Error in episode 1360: name 'args' is not defined +2025-03-10 15:29:53,665 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,666 - ERROR - Error in episode 1361: name 'args' is not defined +2025-03-10 15:29:53,668 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,668 - ERROR - Error in episode 1362: name 'args' is not defined +2025-03-10 15:29:53,671 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,671 - ERROR - Error in episode 1363: name 'args' is not defined +2025-03-10 15:29:53,674 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,674 - ERROR - Error in episode 1364: name 'args' is not defined +2025-03-10 15:29:53,677 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,677 - ERROR - Error in episode 1365: name 'args' is not defined +2025-03-10 15:29:53,680 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,680 - ERROR - Error in episode 1366: name 'args' is not defined +2025-03-10 15:29:53,683 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,684 - ERROR - Error in episode 1367: name 'args' is not defined +2025-03-10 15:29:53,687 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,687 - ERROR - Error in episode 1368: name 'args' is not defined +2025-03-10 15:29:53,690 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,690 - ERROR - Error in episode 1369: name 'args' is not defined +2025-03-10 15:29:53,693 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,693 - ERROR - Error in episode 1370: name 'args' is not defined +2025-03-10 15:29:53,695 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,696 - ERROR - Error in episode 1371: name 'args' is not defined +2025-03-10 15:29:53,698 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,698 - ERROR - Error in episode 1372: name 'args' is not defined +2025-03-10 15:29:53,701 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,702 - ERROR - Error in episode 1373: name 'args' is not defined +2025-03-10 15:29:53,705 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,705 - ERROR - Error in episode 1374: name 'args' is not defined +2025-03-10 15:29:53,708 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,708 - ERROR - Error in episode 1375: name 'args' is not defined +2025-03-10 15:29:53,710 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,711 - ERROR - Error in episode 1376: name 'args' is not defined +2025-03-10 15:29:53,713 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,713 - ERROR - Error in episode 1377: name 'args' is not defined +2025-03-10 15:29:53,716 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,717 - ERROR - Error in episode 1378: name 'args' is not defined +2025-03-10 15:29:53,719 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,719 - ERROR - Error in episode 1379: name 'args' is not defined +2025-03-10 15:29:53,722 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,723 - ERROR - Error in episode 1380: name 'args' is not defined +2025-03-10 15:29:53,725 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,726 - ERROR - Error in episode 1381: name 'args' is not defined +2025-03-10 15:29:53,728 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,729 - ERROR - Error in episode 1382: name 'args' is not defined +2025-03-10 15:29:53,731 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,731 - ERROR - Error in episode 1383: name 'args' is not defined +2025-03-10 15:29:53,734 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,735 - ERROR - Error in episode 1384: name 'args' is not defined +2025-03-10 15:29:53,737 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,737 - ERROR - Error in episode 1385: name 'args' is not defined +2025-03-10 15:29:53,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,740 - ERROR - Error in episode 1386: name 'args' is not defined +2025-03-10 15:29:53,742 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,743 - ERROR - Error in episode 1387: name 'args' is not defined +2025-03-10 15:29:53,745 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,745 - ERROR - Error in episode 1388: name 'args' is not defined +2025-03-10 15:29:53,748 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,748 - ERROR - Error in episode 1389: name 'args' is not defined +2025-03-10 15:29:53,751 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,751 - ERROR - Error in episode 1390: name 'args' is not defined +2025-03-10 15:29:53,753 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,754 - ERROR - Error in episode 1391: name 'args' is not defined +2025-03-10 15:29:53,757 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,757 - ERROR - Error in episode 1392: name 'args' is not defined +2025-03-10 15:29:53,760 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,760 - ERROR - Error in episode 1393: name 'args' is not defined +2025-03-10 15:29:53,763 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,763 - ERROR - Error in episode 1394: name 'args' is not defined +2025-03-10 15:29:53,766 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,766 - ERROR - Error in episode 1395: name 'args' is not defined +2025-03-10 15:29:53,768 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,769 - ERROR - Error in episode 1396: name 'args' is not defined +2025-03-10 15:29:53,772 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,772 - ERROR - Error in episode 1397: name 'args' is not defined +2025-03-10 15:29:53,775 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,775 - ERROR - Error in episode 1398: name 'args' is not defined +2025-03-10 15:29:53,778 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,778 - ERROR - Error in episode 1399: name 'args' is not defined +2025-03-10 15:29:53,781 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,781 - ERROR - Error in episode 1400: name 'args' is not defined +2025-03-10 15:29:53,784 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,785 - ERROR - Error in episode 1401: name 'args' is not defined +2025-03-10 15:29:53,788 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,788 - ERROR - Error in episode 1402: name 'args' is not defined +2025-03-10 15:29:53,791 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,791 - ERROR - Error in episode 1403: name 'args' is not defined +2025-03-10 15:29:53,794 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,795 - ERROR - Error in episode 1404: name 'args' is not defined +2025-03-10 15:29:53,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,798 - ERROR - Error in episode 1405: name 'args' is not defined +2025-03-10 15:29:53,801 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,801 - ERROR - Error in episode 1406: name 'args' is not defined +2025-03-10 15:29:53,805 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,805 - ERROR - Error in episode 1407: name 'args' is not defined +2025-03-10 15:29:53,808 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,809 - ERROR - Error in episode 1408: name 'args' is not defined +2025-03-10 15:29:53,812 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,812 - ERROR - Error in episode 1409: name 'args' is not defined +2025-03-10 15:29:53,814 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,814 - ERROR - Error in episode 1410: name 'args' is not defined +2025-03-10 15:29:53,817 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,818 - ERROR - Error in episode 1411: name 'args' is not defined +2025-03-10 15:29:53,821 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,821 - ERROR - Error in episode 1412: name 'args' is not defined +2025-03-10 15:29:53,825 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,825 - ERROR - Error in episode 1413: name 'args' is not defined +2025-03-10 15:29:53,827 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,828 - ERROR - Error in episode 1414: name 'args' is not defined +2025-03-10 15:29:53,830 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,830 - ERROR - Error in episode 1415: name 'args' is not defined +2025-03-10 15:29:53,833 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,834 - ERROR - Error in episode 1416: name 'args' is not defined +2025-03-10 15:29:53,836 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,836 - ERROR - Error in episode 1417: name 'args' is not defined +2025-03-10 15:29:53,839 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,839 - ERROR - Error in episode 1418: name 'args' is not defined +2025-03-10 15:29:53,842 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,842 - ERROR - Error in episode 1419: name 'args' is not defined +2025-03-10 15:29:53,844 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,844 - ERROR - Error in episode 1420: name 'args' is not defined +2025-03-10 15:29:53,847 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,847 - ERROR - Error in episode 1421: name 'args' is not defined +2025-03-10 15:29:53,850 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,850 - ERROR - Error in episode 1422: name 'args' is not defined +2025-03-10 15:29:53,852 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,853 - ERROR - Error in episode 1423: name 'args' is not defined +2025-03-10 15:29:53,856 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,857 - ERROR - Error in episode 1424: name 'args' is not defined +2025-03-10 15:29:53,859 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,860 - ERROR - Error in episode 1425: name 'args' is not defined +2025-03-10 15:29:53,863 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,863 - ERROR - Error in episode 1426: name 'args' is not defined +2025-03-10 15:29:53,866 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,866 - ERROR - Error in episode 1427: name 'args' is not defined +2025-03-10 15:29:53,869 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,869 - ERROR - Error in episode 1428: name 'args' is not defined +2025-03-10 15:29:53,871 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,872 - ERROR - Error in episode 1429: name 'args' is not defined +2025-03-10 15:29:53,874 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,874 - ERROR - Error in episode 1430: name 'args' is not defined +2025-03-10 15:29:53,877 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,877 - ERROR - Error in episode 1431: name 'args' is not defined +2025-03-10 15:29:53,880 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,880 - ERROR - Error in episode 1432: name 'args' is not defined +2025-03-10 15:29:53,883 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,883 - ERROR - Error in episode 1433: name 'args' is not defined +2025-03-10 15:29:53,886 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,886 - ERROR - Error in episode 1434: name 'args' is not defined +2025-03-10 15:29:53,889 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,889 - ERROR - Error in episode 1435: name 'args' is not defined +2025-03-10 15:29:53,893 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,893 - ERROR - Error in episode 1436: name 'args' is not defined +2025-03-10 15:29:53,895 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,896 - ERROR - Error in episode 1437: name 'args' is not defined +2025-03-10 15:29:53,899 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,899 - ERROR - Error in episode 1438: name 'args' is not defined +2025-03-10 15:29:53,901 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,902 - ERROR - Error in episode 1439: name 'args' is not defined +2025-03-10 15:29:53,904 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,905 - ERROR - Error in episode 1440: name 'args' is not defined +2025-03-10 15:29:53,908 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,908 - ERROR - Error in episode 1441: name 'args' is not defined +2025-03-10 15:29:53,911 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,911 - ERROR - Error in episode 1442: name 'args' is not defined +2025-03-10 15:29:53,914 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,915 - ERROR - Error in episode 1443: name 'args' is not defined +2025-03-10 15:29:53,917 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,917 - ERROR - Error in episode 1444: name 'args' is not defined +2025-03-10 15:29:53,920 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,920 - ERROR - Error in episode 1445: name 'args' is not defined +2025-03-10 15:29:53,922 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,922 - ERROR - Error in episode 1446: name 'args' is not defined +2025-03-10 15:29:53,924 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,925 - ERROR - Error in episode 1447: name 'args' is not defined +2025-03-10 15:29:53,927 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,927 - ERROR - Error in episode 1448: name 'args' is not defined +2025-03-10 15:29:53,930 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,930 - ERROR - Error in episode 1449: name 'args' is not defined +2025-03-10 15:29:53,933 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,933 - ERROR - Error in episode 1450: name 'args' is not defined +2025-03-10 15:29:53,935 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,936 - ERROR - Error in episode 1451: name 'args' is not defined +2025-03-10 15:29:53,939 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,939 - ERROR - Error in episode 1452: name 'args' is not defined +2025-03-10 15:29:53,942 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,942 - ERROR - Error in episode 1453: name 'args' is not defined +2025-03-10 15:29:53,944 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,945 - ERROR - Error in episode 1454: name 'args' is not defined +2025-03-10 15:29:53,948 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,948 - ERROR - Error in episode 1455: name 'args' is not defined +2025-03-10 15:29:53,950 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,951 - ERROR - Error in episode 1456: name 'args' is not defined +2025-03-10 15:29:53,953 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,954 - ERROR - Error in episode 1457: name 'args' is not defined +2025-03-10 15:29:53,956 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,957 - ERROR - Error in episode 1458: name 'args' is not defined +2025-03-10 15:29:53,959 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,960 - ERROR - Error in episode 1459: name 'args' is not defined +2025-03-10 15:29:53,963 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,963 - ERROR - Error in episode 1460: name 'args' is not defined +2025-03-10 15:29:53,965 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,966 - ERROR - Error in episode 1461: name 'args' is not defined +2025-03-10 15:29:53,969 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,969 - ERROR - Error in episode 1462: name 'args' is not defined +2025-03-10 15:29:53,972 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,973 - ERROR - Error in episode 1463: name 'args' is not defined +2025-03-10 15:29:53,976 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,976 - ERROR - Error in episode 1464: name 'args' is not defined +2025-03-10 15:29:53,979 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,979 - ERROR - Error in episode 1465: name 'args' is not defined +2025-03-10 15:29:53,981 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,982 - ERROR - Error in episode 1466: name 'args' is not defined +2025-03-10 15:29:53,984 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,985 - ERROR - Error in episode 1467: name 'args' is not defined +2025-03-10 15:29:53,988 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,988 - ERROR - Error in episode 1468: name 'args' is not defined +2025-03-10 15:29:53,990 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,990 - ERROR - Error in episode 1469: name 'args' is not defined +2025-03-10 15:29:53,993 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,993 - ERROR - Error in episode 1470: name 'args' is not defined +2025-03-10 15:29:53,996 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,996 - ERROR - Error in episode 1471: name 'args' is not defined +2025-03-10 15:29:53,998 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:53,998 - ERROR - Error in episode 1472: name 'args' is not defined +2025-03-10 15:29:54,001 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,001 - ERROR - Error in episode 1473: name 'args' is not defined +2025-03-10 15:29:54,004 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,004 - ERROR - Error in episode 1474: name 'args' is not defined +2025-03-10 15:29:54,007 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,007 - ERROR - Error in episode 1475: name 'args' is not defined +2025-03-10 15:29:54,010 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,010 - ERROR - Error in episode 1476: name 'args' is not defined +2025-03-10 15:29:54,013 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,013 - ERROR - Error in episode 1477: name 'args' is not defined +2025-03-10 15:29:54,016 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,016 - ERROR - Error in episode 1478: name 'args' is not defined +2025-03-10 15:29:54,018 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,019 - ERROR - Error in episode 1479: name 'args' is not defined +2025-03-10 15:29:54,022 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,022 - ERROR - Error in episode 1480: name 'args' is not defined +2025-03-10 15:29:54,024 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,024 - ERROR - Error in episode 1481: name 'args' is not defined +2025-03-10 15:29:54,027 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,027 - ERROR - Error in episode 1482: name 'args' is not defined +2025-03-10 15:29:54,030 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,030 - ERROR - Error in episode 1483: name 'args' is not defined +2025-03-10 15:29:54,033 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,033 - ERROR - Error in episode 1484: name 'args' is not defined +2025-03-10 15:29:54,035 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,036 - ERROR - Error in episode 1485: name 'args' is not defined +2025-03-10 15:29:54,038 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,038 - ERROR - Error in episode 1486: name 'args' is not defined +2025-03-10 15:29:54,041 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,041 - ERROR - Error in episode 1487: name 'args' is not defined +2025-03-10 15:29:54,044 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,044 - ERROR - Error in episode 1488: name 'args' is not defined +2025-03-10 15:29:54,047 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,047 - ERROR - Error in episode 1489: name 'args' is not defined +2025-03-10 15:29:54,050 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,050 - ERROR - Error in episode 1490: name 'args' is not defined +2025-03-10 15:29:54,052 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,052 - ERROR - Error in episode 1491: name 'args' is not defined +2025-03-10 15:29:54,055 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,055 - ERROR - Error in episode 1492: name 'args' is not defined +2025-03-10 15:29:54,058 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,059 - ERROR - Error in episode 1493: name 'args' is not defined +2025-03-10 15:29:54,062 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,062 - ERROR - Error in episode 1494: name 'args' is not defined +2025-03-10 15:29:54,064 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,065 - ERROR - Error in episode 1495: name 'args' is not defined +2025-03-10 15:29:54,068 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,068 - ERROR - Error in episode 1496: name 'args' is not defined +2025-03-10 15:29:54,071 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,071 - ERROR - Error in episode 1497: name 'args' is not defined +2025-03-10 15:29:54,074 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,074 - ERROR - Error in episode 1498: name 'args' is not defined +2025-03-10 15:29:54,076 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,077 - ERROR - Error in episode 1499: name 'args' is not defined +2025-03-10 15:29:54,079 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,079 - ERROR - Error in episode 1500: name 'args' is not defined +2025-03-10 15:29:54,082 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,082 - ERROR - Error in episode 1501: name 'args' is not defined +2025-03-10 15:29:54,085 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,085 - ERROR - Error in episode 1502: name 'args' is not defined +2025-03-10 15:29:54,088 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,088 - ERROR - Error in episode 1503: name 'args' is not defined +2025-03-10 15:29:54,091 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,091 - ERROR - Error in episode 1504: name 'args' is not defined +2025-03-10 15:29:54,093 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,094 - ERROR - Error in episode 1505: name 'args' is not defined +2025-03-10 15:29:54,096 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,097 - ERROR - Error in episode 1506: name 'args' is not defined +2025-03-10 15:29:54,099 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,099 - ERROR - Error in episode 1507: name 'args' is not defined +2025-03-10 15:29:54,102 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,102 - ERROR - Error in episode 1508: name 'args' is not defined +2025-03-10 15:29:54,105 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,105 - ERROR - Error in episode 1509: name 'args' is not defined +2025-03-10 15:29:54,108 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,108 - ERROR - Error in episode 1510: name 'args' is not defined +2025-03-10 15:29:54,110 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,111 - ERROR - Error in episode 1511: name 'args' is not defined +2025-03-10 15:29:54,113 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,113 - ERROR - Error in episode 1512: name 'args' is not defined +2025-03-10 15:29:54,116 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,116 - ERROR - Error in episode 1513: name 'args' is not defined +2025-03-10 15:29:54,119 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,119 - ERROR - Error in episode 1514: name 'args' is not defined +2025-03-10 15:29:54,122 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,122 - ERROR - Error in episode 1515: name 'args' is not defined +2025-03-10 15:29:54,125 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,125 - ERROR - Error in episode 1516: name 'args' is not defined +2025-03-10 15:29:54,127 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,128 - ERROR - Error in episode 1517: name 'args' is not defined +2025-03-10 15:29:54,130 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,131 - ERROR - Error in episode 1518: name 'args' is not defined +2025-03-10 15:29:54,133 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,134 - ERROR - Error in episode 1519: name 'args' is not defined +2025-03-10 15:29:54,136 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,136 - ERROR - Error in episode 1520: name 'args' is not defined +2025-03-10 15:29:54,139 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,140 - ERROR - Error in episode 1521: name 'args' is not defined +2025-03-10 15:29:54,142 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,142 - ERROR - Error in episode 1522: name 'args' is not defined +2025-03-10 15:29:54,145 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,145 - ERROR - Error in episode 1523: name 'args' is not defined +2025-03-10 15:29:54,148 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,148 - ERROR - Error in episode 1524: name 'args' is not defined +2025-03-10 15:29:54,151 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,151 - ERROR - Error in episode 1525: name 'args' is not defined +2025-03-10 15:29:54,155 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,156 - ERROR - Error in episode 1526: name 'args' is not defined +2025-03-10 15:29:54,159 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,159 - ERROR - Error in episode 1527: name 'args' is not defined +2025-03-10 15:29:54,163 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,163 - ERROR - Error in episode 1528: name 'args' is not defined +2025-03-10 15:29:54,166 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,167 - ERROR - Error in episode 1529: name 'args' is not defined +2025-03-10 15:29:54,170 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,171 - ERROR - Error in episode 1530: name 'args' is not defined +2025-03-10 15:29:54,174 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,175 - ERROR - Error in episode 1531: name 'args' is not defined +2025-03-10 15:29:54,178 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,179 - ERROR - Error in episode 1532: name 'args' is not defined +2025-03-10 15:29:54,182 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,182 - ERROR - Error in episode 1533: name 'args' is not defined +2025-03-10 15:29:54,185 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,186 - ERROR - Error in episode 1534: name 'args' is not defined +2025-03-10 15:29:54,189 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,189 - ERROR - Error in episode 1535: name 'args' is not defined +2025-03-10 15:29:54,193 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,193 - ERROR - Error in episode 1536: name 'args' is not defined +2025-03-10 15:29:54,196 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,197 - ERROR - Error in episode 1537: name 'args' is not defined +2025-03-10 15:29:54,200 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,200 - ERROR - Error in episode 1538: name 'args' is not defined +2025-03-10 15:29:54,204 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,204 - ERROR - Error in episode 1539: name 'args' is not defined +2025-03-10 15:29:54,207 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,208 - ERROR - Error in episode 1540: name 'args' is not defined +2025-03-10 15:29:54,210 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,211 - ERROR - Error in episode 1541: name 'args' is not defined +2025-03-10 15:29:54,214 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,214 - ERROR - Error in episode 1542: name 'args' is not defined +2025-03-10 15:29:54,216 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,216 - ERROR - Error in episode 1543: name 'args' is not defined +2025-03-10 15:29:54,219 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,220 - ERROR - Error in episode 1544: name 'args' is not defined +2025-03-10 15:29:54,223 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,223 - ERROR - Error in episode 1545: name 'args' is not defined +2025-03-10 15:29:54,225 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,226 - ERROR - Error in episode 1546: name 'args' is not defined +2025-03-10 15:29:54,228 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,228 - ERROR - Error in episode 1547: name 'args' is not defined +2025-03-10 15:29:54,231 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,232 - ERROR - Error in episode 1548: name 'args' is not defined +2025-03-10 15:29:54,234 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,234 - ERROR - Error in episode 1549: name 'args' is not defined +2025-03-10 15:29:54,237 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,237 - ERROR - Error in episode 1550: name 'args' is not defined +2025-03-10 15:29:54,240 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,240 - ERROR - Error in episode 1551: name 'args' is not defined +2025-03-10 15:29:54,242 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,243 - ERROR - Error in episode 1552: name 'args' is not defined +2025-03-10 15:29:54,246 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,246 - ERROR - Error in episode 1553: name 'args' is not defined +2025-03-10 15:29:54,248 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,249 - ERROR - Error in episode 1554: name 'args' is not defined +2025-03-10 15:29:54,251 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,251 - ERROR - Error in episode 1555: name 'args' is not defined +2025-03-10 15:29:54,254 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,254 - ERROR - Error in episode 1556: name 'args' is not defined +2025-03-10 15:29:54,257 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,258 - ERROR - Error in episode 1557: name 'args' is not defined +2025-03-10 15:29:54,260 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,260 - ERROR - Error in episode 1558: name 'args' is not defined +2025-03-10 15:29:54,263 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,264 - ERROR - Error in episode 1559: name 'args' is not defined +2025-03-10 15:29:54,267 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,267 - ERROR - Error in episode 1560: name 'args' is not defined +2025-03-10 15:29:54,270 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,270 - ERROR - Error in episode 1561: name 'args' is not defined +2025-03-10 15:29:54,273 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,273 - ERROR - Error in episode 1562: name 'args' is not defined +2025-03-10 15:29:54,276 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,276 - ERROR - Error in episode 1563: name 'args' is not defined +2025-03-10 15:29:54,280 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,280 - ERROR - Error in episode 1564: name 'args' is not defined +2025-03-10 15:29:54,282 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,283 - ERROR - Error in episode 1565: name 'args' is not defined +2025-03-10 15:29:54,285 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,286 - ERROR - Error in episode 1566: name 'args' is not defined +2025-03-10 15:29:54,288 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,289 - ERROR - Error in episode 1567: name 'args' is not defined +2025-03-10 15:29:54,291 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,292 - ERROR - Error in episode 1568: name 'args' is not defined +2025-03-10 15:29:54,294 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,295 - ERROR - Error in episode 1569: name 'args' is not defined +2025-03-10 15:29:54,297 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,297 - ERROR - Error in episode 1570: name 'args' is not defined +2025-03-10 15:29:54,300 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,300 - ERROR - Error in episode 1571: name 'args' is not defined +2025-03-10 15:29:54,303 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,303 - ERROR - Error in episode 1572: name 'args' is not defined +2025-03-10 15:29:54,306 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,306 - ERROR - Error in episode 1573: name 'args' is not defined +2025-03-10 15:29:54,309 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,309 - ERROR - Error in episode 1574: name 'args' is not defined +2025-03-10 15:29:54,313 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,313 - ERROR - Error in episode 1575: name 'args' is not defined +2025-03-10 15:29:54,315 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,316 - ERROR - Error in episode 1576: name 'args' is not defined +2025-03-10 15:29:54,318 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,318 - ERROR - Error in episode 1577: name 'args' is not defined +2025-03-10 15:29:54,321 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,321 - ERROR - Error in episode 1578: name 'args' is not defined +2025-03-10 15:29:54,323 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,323 - ERROR - Error in episode 1579: name 'args' is not defined +2025-03-10 15:29:54,326 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,327 - ERROR - Error in episode 1580: name 'args' is not defined +2025-03-10 15:29:54,329 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,330 - ERROR - Error in episode 1581: name 'args' is not defined +2025-03-10 15:29:54,332 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,332 - ERROR - Error in episode 1582: name 'args' is not defined +2025-03-10 15:29:54,335 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,335 - ERROR - Error in episode 1583: name 'args' is not defined +2025-03-10 15:29:54,338 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,338 - ERROR - Error in episode 1584: name 'args' is not defined +2025-03-10 15:29:54,340 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,340 - ERROR - Error in episode 1585: name 'args' is not defined +2025-03-10 15:29:54,343 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,343 - ERROR - Error in episode 1586: name 'args' is not defined +2025-03-10 15:29:54,346 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,347 - ERROR - Error in episode 1587: name 'args' is not defined +2025-03-10 15:29:54,349 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,349 - ERROR - Error in episode 1588: name 'args' is not defined +2025-03-10 15:29:54,352 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,352 - ERROR - Error in episode 1589: name 'args' is not defined +2025-03-10 15:29:54,355 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,355 - ERROR - Error in episode 1590: name 'args' is not defined +2025-03-10 15:29:54,358 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,358 - ERROR - Error in episode 1591: name 'args' is not defined +2025-03-10 15:29:54,361 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,361 - ERROR - Error in episode 1592: name 'args' is not defined +2025-03-10 15:29:54,364 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,365 - ERROR - Error in episode 1593: name 'args' is not defined +2025-03-10 15:29:54,368 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,369 - ERROR - Error in episode 1594: name 'args' is not defined +2025-03-10 15:29:54,371 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,373 - ERROR - Error in episode 1595: name 'args' is not defined +2025-03-10 15:29:54,375 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,376 - ERROR - Error in episode 1596: name 'args' is not defined +2025-03-10 15:29:54,379 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,379 - ERROR - Error in episode 1597: name 'args' is not defined +2025-03-10 15:29:54,382 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,382 - ERROR - Error in episode 1598: name 'args' is not defined +2025-03-10 15:29:54,385 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,385 - ERROR - Error in episode 1599: name 'args' is not defined +2025-03-10 15:29:54,389 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,389 - ERROR - Error in episode 1600: name 'args' is not defined +2025-03-10 15:29:54,392 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,393 - ERROR - Error in episode 1601: name 'args' is not defined +2025-03-10 15:29:54,396 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,396 - ERROR - Error in episode 1602: name 'args' is not defined +2025-03-10 15:29:54,400 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,400 - ERROR - Error in episode 1603: name 'args' is not defined +2025-03-10 15:29:54,403 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,404 - ERROR - Error in episode 1604: name 'args' is not defined +2025-03-10 15:29:54,406 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,407 - ERROR - Error in episode 1605: name 'args' is not defined +2025-03-10 15:29:54,410 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,411 - ERROR - Error in episode 1606: name 'args' is not defined +2025-03-10 15:29:54,414 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,414 - ERROR - Error in episode 1607: name 'args' is not defined +2025-03-10 15:29:54,417 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,417 - ERROR - Error in episode 1608: name 'args' is not defined +2025-03-10 15:29:54,421 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,421 - ERROR - Error in episode 1609: name 'args' is not defined +2025-03-10 15:29:54,423 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,424 - ERROR - Error in episode 1610: name 'args' is not defined +2025-03-10 15:29:54,426 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,427 - ERROR - Error in episode 1611: name 'args' is not defined +2025-03-10 15:29:54,430 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,430 - ERROR - Error in episode 1612: name 'args' is not defined +2025-03-10 15:29:54,433 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,433 - ERROR - Error in episode 1613: name 'args' is not defined +2025-03-10 15:29:54,436 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,436 - ERROR - Error in episode 1614: name 'args' is not defined +2025-03-10 15:29:54,439 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,440 - ERROR - Error in episode 1615: name 'args' is not defined +2025-03-10 15:29:54,442 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,443 - ERROR - Error in episode 1616: name 'args' is not defined +2025-03-10 15:29:54,446 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,446 - ERROR - Error in episode 1617: name 'args' is not defined +2025-03-10 15:29:54,449 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,449 - ERROR - Error in episode 1618: name 'args' is not defined +2025-03-10 15:29:54,452 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,452 - ERROR - Error in episode 1619: name 'args' is not defined +2025-03-10 15:29:54,455 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,456 - ERROR - Error in episode 1620: name 'args' is not defined +2025-03-10 15:29:54,458 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,458 - ERROR - Error in episode 1621: name 'args' is not defined +2025-03-10 15:29:54,461 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,461 - ERROR - Error in episode 1622: name 'args' is not defined +2025-03-10 15:29:54,464 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,464 - ERROR - Error in episode 1623: name 'args' is not defined +2025-03-10 15:29:54,467 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,467 - ERROR - Error in episode 1624: name 'args' is not defined +2025-03-10 15:29:54,470 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,470 - ERROR - Error in episode 1625: name 'args' is not defined +2025-03-10 15:29:54,473 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,474 - ERROR - Error in episode 1626: name 'args' is not defined +2025-03-10 15:29:54,476 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,476 - ERROR - Error in episode 1627: name 'args' is not defined +2025-03-10 15:29:54,479 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,480 - ERROR - Error in episode 1628: name 'args' is not defined +2025-03-10 15:29:54,482 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,483 - ERROR - Error in episode 1629: name 'args' is not defined +2025-03-10 15:29:54,485 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,486 - ERROR - Error in episode 1630: name 'args' is not defined +2025-03-10 15:29:54,489 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,489 - ERROR - Error in episode 1631: name 'args' is not defined +2025-03-10 15:29:54,491 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,492 - ERROR - Error in episode 1632: name 'args' is not defined +2025-03-10 15:29:54,495 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,495 - ERROR - Error in episode 1633: name 'args' is not defined +2025-03-10 15:29:54,499 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,499 - ERROR - Error in episode 1634: name 'args' is not defined +2025-03-10 15:29:54,502 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,502 - ERROR - Error in episode 1635: name 'args' is not defined +2025-03-10 15:29:54,505 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,506 - ERROR - Error in episode 1636: name 'args' is not defined +2025-03-10 15:29:54,509 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,509 - ERROR - Error in episode 1637: name 'args' is not defined +2025-03-10 15:29:54,512 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,513 - ERROR - Error in episode 1638: name 'args' is not defined +2025-03-10 15:29:54,515 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,515 - ERROR - Error in episode 1639: name 'args' is not defined +2025-03-10 15:29:54,518 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,518 - ERROR - Error in episode 1640: name 'args' is not defined +2025-03-10 15:29:54,522 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,522 - ERROR - Error in episode 1641: name 'args' is not defined +2025-03-10 15:29:54,524 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,525 - ERROR - Error in episode 1642: name 'args' is not defined +2025-03-10 15:29:54,527 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,528 - ERROR - Error in episode 1643: name 'args' is not defined +2025-03-10 15:29:54,531 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,531 - ERROR - Error in episode 1644: name 'args' is not defined +2025-03-10 15:29:54,533 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,534 - ERROR - Error in episode 1645: name 'args' is not defined +2025-03-10 15:29:54,537 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,538 - ERROR - Error in episode 1646: name 'args' is not defined +2025-03-10 15:29:54,540 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,541 - ERROR - Error in episode 1647: name 'args' is not defined +2025-03-10 15:29:54,544 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,545 - ERROR - Error in episode 1648: name 'args' is not defined +2025-03-10 15:29:54,548 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,548 - ERROR - Error in episode 1649: name 'args' is not defined +2025-03-10 15:29:54,551 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,552 - ERROR - Error in episode 1650: name 'args' is not defined +2025-03-10 15:29:54,555 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,555 - ERROR - Error in episode 1651: name 'args' is not defined +2025-03-10 15:29:54,558 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,558 - ERROR - Error in episode 1652: name 'args' is not defined +2025-03-10 15:29:54,562 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,562 - ERROR - Error in episode 1653: name 'args' is not defined +2025-03-10 15:29:54,566 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,566 - ERROR - Error in episode 1654: name 'args' is not defined +2025-03-10 15:29:54,569 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,570 - ERROR - Error in episode 1655: name 'args' is not defined +2025-03-10 15:29:54,572 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,573 - ERROR - Error in episode 1656: name 'args' is not defined +2025-03-10 15:29:54,575 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,576 - ERROR - Error in episode 1657: name 'args' is not defined +2025-03-10 15:29:54,578 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,579 - ERROR - Error in episode 1658: name 'args' is not defined +2025-03-10 15:29:54,581 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,581 - ERROR - Error in episode 1659: name 'args' is not defined +2025-03-10 15:29:54,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,585 - ERROR - Error in episode 1660: name 'args' is not defined +2025-03-10 15:29:54,587 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,587 - ERROR - Error in episode 1661: name 'args' is not defined +2025-03-10 15:29:54,590 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,590 - ERROR - Error in episode 1662: name 'args' is not defined +2025-03-10 15:29:54,593 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,594 - ERROR - Error in episode 1663: name 'args' is not defined +2025-03-10 15:29:54,596 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,596 - ERROR - Error in episode 1664: name 'args' is not defined +2025-03-10 15:29:54,599 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,599 - ERROR - Error in episode 1665: name 'args' is not defined +2025-03-10 15:29:54,602 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,602 - ERROR - Error in episode 1666: name 'args' is not defined +2025-03-10 15:29:54,605 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,605 - ERROR - Error in episode 1667: name 'args' is not defined +2025-03-10 15:29:54,608 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,608 - ERROR - Error in episode 1668: name 'args' is not defined +2025-03-10 15:29:54,611 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,611 - ERROR - Error in episode 1669: name 'args' is not defined +2025-03-10 15:29:54,614 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,614 - ERROR - Error in episode 1670: name 'args' is not defined +2025-03-10 15:29:54,617 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,617 - ERROR - Error in episode 1671: name 'args' is not defined +2025-03-10 15:29:54,620 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,620 - ERROR - Error in episode 1672: name 'args' is not defined +2025-03-10 15:29:54,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,623 - ERROR - Error in episode 1673: name 'args' is not defined +2025-03-10 15:29:54,626 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,627 - ERROR - Error in episode 1674: name 'args' is not defined +2025-03-10 15:29:54,629 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,629 - ERROR - Error in episode 1675: name 'args' is not defined +2025-03-10 15:29:54,632 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,632 - ERROR - Error in episode 1676: name 'args' is not defined +2025-03-10 15:29:54,635 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,635 - ERROR - Error in episode 1677: name 'args' is not defined +2025-03-10 15:29:54,638 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,638 - ERROR - Error in episode 1678: name 'args' is not defined +2025-03-10 15:29:54,641 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,641 - ERROR - Error in episode 1679: name 'args' is not defined +2025-03-10 15:29:54,644 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,644 - ERROR - Error in episode 1680: name 'args' is not defined +2025-03-10 15:29:54,647 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,647 - ERROR - Error in episode 1681: name 'args' is not defined +2025-03-10 15:29:54,650 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,651 - ERROR - Error in episode 1682: name 'args' is not defined +2025-03-10 15:29:54,653 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,654 - ERROR - Error in episode 1683: name 'args' is not defined +2025-03-10 15:29:54,657 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,657 - ERROR - Error in episode 1684: name 'args' is not defined +2025-03-10 15:29:54,661 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,661 - ERROR - Error in episode 1685: name 'args' is not defined +2025-03-10 15:29:54,664 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,664 - ERROR - Error in episode 1686: name 'args' is not defined +2025-03-10 15:29:54,667 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,668 - ERROR - Error in episode 1687: name 'args' is not defined +2025-03-10 15:29:54,670 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,671 - ERROR - Error in episode 1688: name 'args' is not defined +2025-03-10 15:29:54,673 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,673 - ERROR - Error in episode 1689: name 'args' is not defined +2025-03-10 15:29:54,676 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,676 - ERROR - Error in episode 1690: name 'args' is not defined +2025-03-10 15:29:54,679 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,679 - ERROR - Error in episode 1691: name 'args' is not defined +2025-03-10 15:29:54,681 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,682 - ERROR - Error in episode 1692: name 'args' is not defined +2025-03-10 15:29:54,685 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,685 - ERROR - Error in episode 1693: name 'args' is not defined +2025-03-10 15:29:54,688 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,688 - ERROR - Error in episode 1694: name 'args' is not defined +2025-03-10 15:29:54,690 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,691 - ERROR - Error in episode 1695: name 'args' is not defined +2025-03-10 15:29:54,693 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,694 - ERROR - Error in episode 1696: name 'args' is not defined +2025-03-10 15:29:54,696 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,696 - ERROR - Error in episode 1697: name 'args' is not defined +2025-03-10 15:29:54,699 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,699 - ERROR - Error in episode 1698: name 'args' is not defined +2025-03-10 15:29:54,702 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,702 - ERROR - Error in episode 1699: name 'args' is not defined +2025-03-10 15:29:54,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,705 - ERROR - Error in episode 1700: name 'args' is not defined +2025-03-10 15:29:54,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,707 - ERROR - Error in episode 1701: name 'args' is not defined +2025-03-10 15:29:54,710 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,710 - ERROR - Error in episode 1702: name 'args' is not defined +2025-03-10 15:29:54,713 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,713 - ERROR - Error in episode 1703: name 'args' is not defined +2025-03-10 15:29:54,716 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,716 - ERROR - Error in episode 1704: name 'args' is not defined +2025-03-10 15:29:54,719 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,719 - ERROR - Error in episode 1705: name 'args' is not defined +2025-03-10 15:29:54,721 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,722 - ERROR - Error in episode 1706: name 'args' is not defined +2025-03-10 15:29:54,724 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,724 - ERROR - Error in episode 1707: name 'args' is not defined +2025-03-10 15:29:54,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,727 - ERROR - Error in episode 1708: name 'args' is not defined +2025-03-10 15:29:54,730 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,730 - ERROR - Error in episode 1709: name 'args' is not defined +2025-03-10 15:29:54,734 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,734 - ERROR - Error in episode 1710: name 'args' is not defined +2025-03-10 15:29:54,736 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,737 - ERROR - Error in episode 1711: name 'args' is not defined +2025-03-10 15:29:54,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,739 - ERROR - Error in episode 1712: name 'args' is not defined +2025-03-10 15:29:54,742 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,742 - ERROR - Error in episode 1713: name 'args' is not defined +2025-03-10 15:29:54,745 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,746 - ERROR - Error in episode 1714: name 'args' is not defined +2025-03-10 15:29:54,748 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,749 - ERROR - Error in episode 1715: name 'args' is not defined +2025-03-10 15:29:54,751 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,752 - ERROR - Error in episode 1716: name 'args' is not defined +2025-03-10 15:29:54,754 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,755 - ERROR - Error in episode 1717: name 'args' is not defined +2025-03-10 15:29:54,757 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,757 - ERROR - Error in episode 1718: name 'args' is not defined +2025-03-10 15:29:54,760 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,761 - ERROR - Error in episode 1719: name 'args' is not defined +2025-03-10 15:29:54,763 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,764 - ERROR - Error in episode 1720: name 'args' is not defined +2025-03-10 15:29:54,766 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,767 - ERROR - Error in episode 1721: name 'args' is not defined +2025-03-10 15:29:54,769 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,769 - ERROR - Error in episode 1722: name 'args' is not defined +2025-03-10 15:29:54,772 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,772 - ERROR - Error in episode 1723: name 'args' is not defined +2025-03-10 15:29:54,774 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,775 - ERROR - Error in episode 1724: name 'args' is not defined +2025-03-10 15:29:54,778 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,778 - ERROR - Error in episode 1725: name 'args' is not defined +2025-03-10 15:29:54,781 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,781 - ERROR - Error in episode 1726: name 'args' is not defined +2025-03-10 15:29:54,783 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,784 - ERROR - Error in episode 1727: name 'args' is not defined +2025-03-10 15:29:54,787 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,787 - ERROR - Error in episode 1728: name 'args' is not defined +2025-03-10 15:29:54,790 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,790 - ERROR - Error in episode 1729: name 'args' is not defined +2025-03-10 15:29:54,793 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,793 - ERROR - Error in episode 1730: name 'args' is not defined +2025-03-10 15:29:54,795 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,796 - ERROR - Error in episode 1731: name 'args' is not defined +2025-03-10 15:29:54,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,798 - ERROR - Error in episode 1732: name 'args' is not defined +2025-03-10 15:29:54,801 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,802 - ERROR - Error in episode 1733: name 'args' is not defined +2025-03-10 15:29:54,804 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,804 - ERROR - Error in episode 1734: name 'args' is not defined +2025-03-10 15:29:54,807 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,807 - ERROR - Error in episode 1735: name 'args' is not defined +2025-03-10 15:29:54,810 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,810 - ERROR - Error in episode 1736: name 'args' is not defined +2025-03-10 15:29:54,812 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,813 - ERROR - Error in episode 1737: name 'args' is not defined +2025-03-10 15:29:54,815 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,815 - ERROR - Error in episode 1738: name 'args' is not defined +2025-03-10 15:29:54,818 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,819 - ERROR - Error in episode 1739: name 'args' is not defined +2025-03-10 15:29:54,821 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,821 - ERROR - Error in episode 1740: name 'args' is not defined +2025-03-10 15:29:54,824 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,824 - ERROR - Error in episode 1741: name 'args' is not defined +2025-03-10 15:29:54,827 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,828 - ERROR - Error in episode 1742: name 'args' is not defined +2025-03-10 15:29:54,830 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,831 - ERROR - Error in episode 1743: name 'args' is not defined +2025-03-10 15:29:54,833 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,833 - ERROR - Error in episode 1744: name 'args' is not defined +2025-03-10 15:29:54,836 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,836 - ERROR - Error in episode 1745: name 'args' is not defined +2025-03-10 15:29:54,839 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,839 - ERROR - Error in episode 1746: name 'args' is not defined +2025-03-10 15:29:54,842 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,843 - ERROR - Error in episode 1747: name 'args' is not defined +2025-03-10 15:29:54,845 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,846 - ERROR - Error in episode 1748: name 'args' is not defined +2025-03-10 15:29:54,848 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,849 - ERROR - Error in episode 1749: name 'args' is not defined +2025-03-10 15:29:54,852 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,852 - ERROR - Error in episode 1750: name 'args' is not defined +2025-03-10 15:29:54,855 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,855 - ERROR - Error in episode 1751: name 'args' is not defined +2025-03-10 15:29:54,858 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,858 - ERROR - Error in episode 1752: name 'args' is not defined +2025-03-10 15:29:54,861 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,861 - ERROR - Error in episode 1753: name 'args' is not defined +2025-03-10 15:29:54,863 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,864 - ERROR - Error in episode 1754: name 'args' is not defined +2025-03-10 15:29:54,866 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,867 - ERROR - Error in episode 1755: name 'args' is not defined +2025-03-10 15:29:54,869 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,869 - ERROR - Error in episode 1756: name 'args' is not defined +2025-03-10 15:29:54,872 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,872 - ERROR - Error in episode 1757: name 'args' is not defined +2025-03-10 15:29:54,874 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,875 - ERROR - Error in episode 1758: name 'args' is not defined +2025-03-10 15:29:54,878 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,878 - ERROR - Error in episode 1759: name 'args' is not defined +2025-03-10 15:29:54,880 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,881 - ERROR - Error in episode 1760: name 'args' is not defined +2025-03-10 15:29:54,883 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,884 - ERROR - Error in episode 1761: name 'args' is not defined +2025-03-10 15:29:54,886 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,887 - ERROR - Error in episode 1762: name 'args' is not defined +2025-03-10 15:29:54,889 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,889 - ERROR - Error in episode 1763: name 'args' is not defined +2025-03-10 15:29:54,893 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,893 - ERROR - Error in episode 1764: name 'args' is not defined +2025-03-10 15:29:54,895 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,895 - ERROR - Error in episode 1765: name 'args' is not defined +2025-03-10 15:29:54,898 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,898 - ERROR - Error in episode 1766: name 'args' is not defined +2025-03-10 15:29:54,901 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,902 - ERROR - Error in episode 1767: name 'args' is not defined +2025-03-10 15:29:54,904 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,904 - ERROR - Error in episode 1768: name 'args' is not defined +2025-03-10 15:29:54,907 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,907 - ERROR - Error in episode 1769: name 'args' is not defined +2025-03-10 15:29:54,910 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,910 - ERROR - Error in episode 1770: name 'args' is not defined +2025-03-10 15:29:54,913 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,913 - ERROR - Error in episode 1771: name 'args' is not defined +2025-03-10 15:29:54,915 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,916 - ERROR - Error in episode 1772: name 'args' is not defined +2025-03-10 15:29:54,918 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,919 - ERROR - Error in episode 1773: name 'args' is not defined +2025-03-10 15:29:54,921 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,921 - ERROR - Error in episode 1774: name 'args' is not defined +2025-03-10 15:29:54,923 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,923 - ERROR - Error in episode 1775: name 'args' is not defined +2025-03-10 15:29:54,926 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,926 - ERROR - Error in episode 1776: name 'args' is not defined +2025-03-10 15:29:54,929 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,929 - ERROR - Error in episode 1777: name 'args' is not defined +2025-03-10 15:29:54,932 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,932 - ERROR - Error in episode 1778: name 'args' is not defined +2025-03-10 15:29:54,935 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,935 - ERROR - Error in episode 1779: name 'args' is not defined +2025-03-10 15:29:54,938 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,938 - ERROR - Error in episode 1780: name 'args' is not defined +2025-03-10 15:29:54,940 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,941 - ERROR - Error in episode 1781: name 'args' is not defined +2025-03-10 15:29:54,943 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,944 - ERROR - Error in episode 1782: name 'args' is not defined +2025-03-10 15:29:54,946 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,946 - ERROR - Error in episode 1783: name 'args' is not defined +2025-03-10 15:29:54,949 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,950 - ERROR - Error in episode 1784: name 'args' is not defined +2025-03-10 15:29:54,953 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,953 - ERROR - Error in episode 1785: name 'args' is not defined +2025-03-10 15:29:54,956 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,956 - ERROR - Error in episode 1786: name 'args' is not defined +2025-03-10 15:29:54,959 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,959 - ERROR - Error in episode 1787: name 'args' is not defined +2025-03-10 15:29:54,962 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,962 - ERROR - Error in episode 1788: name 'args' is not defined +2025-03-10 15:29:54,965 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,965 - ERROR - Error in episode 1789: name 'args' is not defined +2025-03-10 15:29:54,968 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,968 - ERROR - Error in episode 1790: name 'args' is not defined +2025-03-10 15:29:54,971 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,971 - ERROR - Error in episode 1791: name 'args' is not defined +2025-03-10 15:29:54,974 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,974 - ERROR - Error in episode 1792: name 'args' is not defined +2025-03-10 15:29:54,977 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,977 - ERROR - Error in episode 1793: name 'args' is not defined +2025-03-10 15:29:54,980 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,980 - ERROR - Error in episode 1794: name 'args' is not defined +2025-03-10 15:29:54,983 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,983 - ERROR - Error in episode 1795: name 'args' is not defined +2025-03-10 15:29:54,985 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,986 - ERROR - Error in episode 1796: name 'args' is not defined +2025-03-10 15:29:54,988 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,989 - ERROR - Error in episode 1797: name 'args' is not defined +2025-03-10 15:29:54,991 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,991 - ERROR - Error in episode 1798: name 'args' is not defined +2025-03-10 15:29:54,994 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,995 - ERROR - Error in episode 1799: name 'args' is not defined +2025-03-10 15:29:54,997 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:54,998 - ERROR - Error in episode 1800: name 'args' is not defined +2025-03-10 15:29:55,000 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,001 - ERROR - Error in episode 1801: name 'args' is not defined +2025-03-10 15:29:55,003 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,003 - ERROR - Error in episode 1802: name 'args' is not defined +2025-03-10 15:29:55,006 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,006 - ERROR - Error in episode 1803: name 'args' is not defined +2025-03-10 15:29:55,009 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,010 - ERROR - Error in episode 1804: name 'args' is not defined +2025-03-10 15:29:55,012 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,012 - ERROR - Error in episode 1805: name 'args' is not defined +2025-03-10 15:29:55,015 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,015 - ERROR - Error in episode 1806: name 'args' is not defined +2025-03-10 15:29:55,018 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,018 - ERROR - Error in episode 1807: name 'args' is not defined +2025-03-10 15:29:55,020 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,021 - ERROR - Error in episode 1808: name 'args' is not defined +2025-03-10 15:29:55,024 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,024 - ERROR - Error in episode 1809: name 'args' is not defined +2025-03-10 15:29:55,027 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,027 - ERROR - Error in episode 1810: name 'args' is not defined +2025-03-10 15:29:55,030 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,030 - ERROR - Error in episode 1811: name 'args' is not defined +2025-03-10 15:29:55,032 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,033 - ERROR - Error in episode 1812: name 'args' is not defined +2025-03-10 15:29:55,036 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,036 - ERROR - Error in episode 1813: name 'args' is not defined +2025-03-10 15:29:55,039 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,039 - ERROR - Error in episode 1814: name 'args' is not defined +2025-03-10 15:29:55,042 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,042 - ERROR - Error in episode 1815: name 'args' is not defined +2025-03-10 15:29:55,045 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,045 - ERROR - Error in episode 1816: name 'args' is not defined +2025-03-10 15:29:55,048 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,049 - ERROR - Error in episode 1817: name 'args' is not defined +2025-03-10 15:29:55,051 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,052 - ERROR - Error in episode 1818: name 'args' is not defined +2025-03-10 15:29:55,054 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,054 - ERROR - Error in episode 1819: name 'args' is not defined +2025-03-10 15:29:55,057 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,057 - ERROR - Error in episode 1820: name 'args' is not defined +2025-03-10 15:29:55,059 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,060 - ERROR - Error in episode 1821: name 'args' is not defined +2025-03-10 15:29:55,062 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,063 - ERROR - Error in episode 1822: name 'args' is not defined +2025-03-10 15:29:55,065 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,065 - ERROR - Error in episode 1823: name 'args' is not defined +2025-03-10 15:29:55,068 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,068 - ERROR - Error in episode 1824: name 'args' is not defined +2025-03-10 15:29:55,071 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,071 - ERROR - Error in episode 1825: name 'args' is not defined +2025-03-10 15:29:55,074 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,074 - ERROR - Error in episode 1826: name 'args' is not defined +2025-03-10 15:29:55,077 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,077 - ERROR - Error in episode 1827: name 'args' is not defined +2025-03-10 15:29:55,080 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,080 - ERROR - Error in episode 1828: name 'args' is not defined +2025-03-10 15:29:55,083 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,083 - ERROR - Error in episode 1829: name 'args' is not defined +2025-03-10 15:29:55,085 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,086 - ERROR - Error in episode 1830: name 'args' is not defined +2025-03-10 15:29:55,088 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,089 - ERROR - Error in episode 1831: name 'args' is not defined +2025-03-10 15:29:55,091 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,091 - ERROR - Error in episode 1832: name 'args' is not defined +2025-03-10 15:29:55,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,094 - ERROR - Error in episode 1833: name 'args' is not defined +2025-03-10 15:29:55,097 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,097 - ERROR - Error in episode 1834: name 'args' is not defined +2025-03-10 15:29:55,099 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,100 - ERROR - Error in episode 1835: name 'args' is not defined +2025-03-10 15:29:55,102 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,102 - ERROR - Error in episode 1836: name 'args' is not defined +2025-03-10 15:29:55,105 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,105 - ERROR - Error in episode 1837: name 'args' is not defined +2025-03-10 15:29:55,108 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,109 - ERROR - Error in episode 1838: name 'args' is not defined +2025-03-10 15:29:55,111 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,111 - ERROR - Error in episode 1839: name 'args' is not defined +2025-03-10 15:29:55,114 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,115 - ERROR - Error in episode 1840: name 'args' is not defined +2025-03-10 15:29:55,117 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,117 - ERROR - Error in episode 1841: name 'args' is not defined +2025-03-10 15:29:55,120 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,120 - ERROR - Error in episode 1842: name 'args' is not defined +2025-03-10 15:29:55,124 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,124 - ERROR - Error in episode 1843: name 'args' is not defined +2025-03-10 15:29:55,127 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,127 - ERROR - Error in episode 1844: name 'args' is not defined +2025-03-10 15:29:55,129 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,130 - ERROR - Error in episode 1845: name 'args' is not defined +2025-03-10 15:29:55,133 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,133 - ERROR - Error in episode 1846: name 'args' is not defined +2025-03-10 15:29:55,136 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,136 - ERROR - Error in episode 1847: name 'args' is not defined +2025-03-10 15:29:55,139 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,139 - ERROR - Error in episode 1848: name 'args' is not defined +2025-03-10 15:29:55,141 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,141 - ERROR - Error in episode 1849: name 'args' is not defined +2025-03-10 15:29:55,144 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,144 - ERROR - Error in episode 1850: name 'args' is not defined +2025-03-10 15:29:55,147 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,147 - ERROR - Error in episode 1851: name 'args' is not defined +2025-03-10 15:29:55,149 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,150 - ERROR - Error in episode 1852: name 'args' is not defined +2025-03-10 15:29:55,152 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,152 - ERROR - Error in episode 1853: name 'args' is not defined +2025-03-10 15:29:55,155 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,155 - ERROR - Error in episode 1854: name 'args' is not defined +2025-03-10 15:29:55,158 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,158 - ERROR - Error in episode 1855: name 'args' is not defined +2025-03-10 15:29:55,160 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,161 - ERROR - Error in episode 1856: name 'args' is not defined +2025-03-10 15:29:55,164 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,164 - ERROR - Error in episode 1857: name 'args' is not defined +2025-03-10 15:29:55,166 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,166 - ERROR - Error in episode 1858: name 'args' is not defined +2025-03-10 15:29:55,169 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,169 - ERROR - Error in episode 1859: name 'args' is not defined +2025-03-10 15:29:55,172 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,173 - ERROR - Error in episode 1860: name 'args' is not defined +2025-03-10 15:29:55,176 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,176 - ERROR - Error in episode 1861: name 'args' is not defined +2025-03-10 15:29:55,179 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,179 - ERROR - Error in episode 1862: name 'args' is not defined +2025-03-10 15:29:55,182 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,182 - ERROR - Error in episode 1863: name 'args' is not defined +2025-03-10 15:29:55,185 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,185 - ERROR - Error in episode 1864: name 'args' is not defined +2025-03-10 15:29:55,188 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,188 - ERROR - Error in episode 1865: name 'args' is not defined +2025-03-10 15:29:55,190 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,191 - ERROR - Error in episode 1866: name 'args' is not defined +2025-03-10 15:29:55,193 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,194 - ERROR - Error in episode 1867: name 'args' is not defined +2025-03-10 15:29:55,196 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,197 - ERROR - Error in episode 1868: name 'args' is not defined +2025-03-10 15:29:55,199 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,200 - ERROR - Error in episode 1869: name 'args' is not defined +2025-03-10 15:29:55,202 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,203 - ERROR - Error in episode 1870: name 'args' is not defined +2025-03-10 15:29:55,206 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,206 - ERROR - Error in episode 1871: name 'args' is not defined +2025-03-10 15:29:55,208 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,209 - ERROR - Error in episode 1872: name 'args' is not defined +2025-03-10 15:29:55,211 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,211 - ERROR - Error in episode 1873: name 'args' is not defined +2025-03-10 15:29:55,214 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,215 - ERROR - Error in episode 1874: name 'args' is not defined +2025-03-10 15:29:55,218 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,218 - ERROR - Error in episode 1875: name 'args' is not defined +2025-03-10 15:29:55,221 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,221 - ERROR - Error in episode 1876: name 'args' is not defined +2025-03-10 15:29:55,224 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,224 - ERROR - Error in episode 1877: name 'args' is not defined +2025-03-10 15:29:55,226 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,227 - ERROR - Error in episode 1878: name 'args' is not defined +2025-03-10 15:29:55,229 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,230 - ERROR - Error in episode 1879: name 'args' is not defined +2025-03-10 15:29:55,232 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,232 - ERROR - Error in episode 1880: name 'args' is not defined +2025-03-10 15:29:55,235 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,235 - ERROR - Error in episode 1881: name 'args' is not defined +2025-03-10 15:29:55,238 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,238 - ERROR - Error in episode 1882: name 'args' is not defined +2025-03-10 15:29:55,241 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,241 - ERROR - Error in episode 1883: name 'args' is not defined +2025-03-10 15:29:55,243 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,244 - ERROR - Error in episode 1884: name 'args' is not defined +2025-03-10 15:29:55,246 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,247 - ERROR - Error in episode 1885: name 'args' is not defined +2025-03-10 15:29:55,249 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,249 - ERROR - Error in episode 1886: name 'args' is not defined +2025-03-10 15:29:55,252 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,252 - ERROR - Error in episode 1887: name 'args' is not defined +2025-03-10 15:29:55,255 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,255 - ERROR - Error in episode 1888: name 'args' is not defined +2025-03-10 15:29:55,257 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,258 - ERROR - Error in episode 1889: name 'args' is not defined +2025-03-10 15:29:55,260 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,260 - ERROR - Error in episode 1890: name 'args' is not defined +2025-03-10 15:29:55,263 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,264 - ERROR - Error in episode 1891: name 'args' is not defined +2025-03-10 15:29:55,266 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,266 - ERROR - Error in episode 1892: name 'args' is not defined +2025-03-10 15:29:55,269 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,269 - ERROR - Error in episode 1893: name 'args' is not defined +2025-03-10 15:29:55,272 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,272 - ERROR - Error in episode 1894: name 'args' is not defined +2025-03-10 15:29:55,275 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,275 - ERROR - Error in episode 1895: name 'args' is not defined +2025-03-10 15:29:55,278 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,278 - ERROR - Error in episode 1896: name 'args' is not defined +2025-03-10 15:29:55,281 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,281 - ERROR - Error in episode 1897: name 'args' is not defined +2025-03-10 15:29:55,284 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,284 - ERROR - Error in episode 1898: name 'args' is not defined +2025-03-10 15:29:55,287 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,287 - ERROR - Error in episode 1899: name 'args' is not defined +2025-03-10 15:29:55,291 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,291 - ERROR - Error in episode 1900: name 'args' is not defined +2025-03-10 15:29:55,293 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,293 - ERROR - Error in episode 1901: name 'args' is not defined +2025-03-10 15:29:55,296 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,296 - ERROR - Error in episode 1902: name 'args' is not defined +2025-03-10 15:29:55,299 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,299 - ERROR - Error in episode 1903: name 'args' is not defined +2025-03-10 15:29:55,302 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,302 - ERROR - Error in episode 1904: name 'args' is not defined +2025-03-10 15:29:55,305 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,305 - ERROR - Error in episode 1905: name 'args' is not defined +2025-03-10 15:29:55,308 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,308 - ERROR - Error in episode 1906: name 'args' is not defined +2025-03-10 15:29:55,310 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,311 - ERROR - Error in episode 1907: name 'args' is not defined +2025-03-10 15:29:55,313 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,314 - ERROR - Error in episode 1908: name 'args' is not defined +2025-03-10 15:29:55,317 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,317 - ERROR - Error in episode 1909: name 'args' is not defined +2025-03-10 15:29:55,319 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,320 - ERROR - Error in episode 1910: name 'args' is not defined +2025-03-10 15:29:55,323 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,324 - ERROR - Error in episode 1911: name 'args' is not defined +2025-03-10 15:29:55,326 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,327 - ERROR - Error in episode 1912: name 'args' is not defined +2025-03-10 15:29:55,330 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,330 - ERROR - Error in episode 1913: name 'args' is not defined +2025-03-10 15:29:55,333 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,333 - ERROR - Error in episode 1914: name 'args' is not defined +2025-03-10 15:29:55,335 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,336 - ERROR - Error in episode 1915: name 'args' is not defined +2025-03-10 15:29:55,338 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,339 - ERROR - Error in episode 1916: name 'args' is not defined +2025-03-10 15:29:55,342 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,342 - ERROR - Error in episode 1917: name 'args' is not defined +2025-03-10 15:29:55,344 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,345 - ERROR - Error in episode 1918: name 'args' is not defined +2025-03-10 15:29:55,348 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,348 - ERROR - Error in episode 1919: name 'args' is not defined +2025-03-10 15:29:55,350 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,351 - ERROR - Error in episode 1920: name 'args' is not defined +2025-03-10 15:29:55,353 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,354 - ERROR - Error in episode 1921: name 'args' is not defined +2025-03-10 15:29:55,357 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,357 - ERROR - Error in episode 1922: name 'args' is not defined +2025-03-10 15:29:55,359 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,360 - ERROR - Error in episode 1923: name 'args' is not defined +2025-03-10 15:29:55,362 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,362 - ERROR - Error in episode 1924: name 'args' is not defined +2025-03-10 15:29:55,365 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,365 - ERROR - Error in episode 1925: name 'args' is not defined +2025-03-10 15:29:55,368 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,368 - ERROR - Error in episode 1926: name 'args' is not defined +2025-03-10 15:29:55,371 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,371 - ERROR - Error in episode 1927: name 'args' is not defined +2025-03-10 15:29:55,374 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,374 - ERROR - Error in episode 1928: name 'args' is not defined +2025-03-10 15:29:55,376 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,377 - ERROR - Error in episode 1929: name 'args' is not defined +2025-03-10 15:29:55,379 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,379 - ERROR - Error in episode 1930: name 'args' is not defined +2025-03-10 15:29:55,382 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,382 - ERROR - Error in episode 1931: name 'args' is not defined +2025-03-10 15:29:55,385 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,385 - ERROR - Error in episode 1932: name 'args' is not defined +2025-03-10 15:29:55,388 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,388 - ERROR - Error in episode 1933: name 'args' is not defined +2025-03-10 15:29:55,392 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,392 - ERROR - Error in episode 1934: name 'args' is not defined +2025-03-10 15:29:55,396 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,396 - ERROR - Error in episode 1935: name 'args' is not defined +2025-03-10 15:29:55,400 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,400 - ERROR - Error in episode 1936: name 'args' is not defined +2025-03-10 15:29:55,404 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,404 - ERROR - Error in episode 1937: name 'args' is not defined +2025-03-10 15:29:55,408 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,408 - ERROR - Error in episode 1938: name 'args' is not defined +2025-03-10 15:29:55,411 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,412 - ERROR - Error in episode 1939: name 'args' is not defined +2025-03-10 15:29:55,416 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,417 - ERROR - Error in episode 1940: name 'args' is not defined +2025-03-10 15:29:55,420 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,421 - ERROR - Error in episode 1941: name 'args' is not defined +2025-03-10 15:29:55,424 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,424 - ERROR - Error in episode 1942: name 'args' is not defined +2025-03-10 15:29:55,427 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,428 - ERROR - Error in episode 1943: name 'args' is not defined +2025-03-10 15:29:55,431 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,431 - ERROR - Error in episode 1944: name 'args' is not defined +2025-03-10 15:29:55,434 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,434 - ERROR - Error in episode 1945: name 'args' is not defined +2025-03-10 15:29:55,437 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,438 - ERROR - Error in episode 1946: name 'args' is not defined +2025-03-10 15:29:55,441 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,441 - ERROR - Error in episode 1947: name 'args' is not defined +2025-03-10 15:29:55,444 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,444 - ERROR - Error in episode 1948: name 'args' is not defined +2025-03-10 15:29:55,447 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,447 - ERROR - Error in episode 1949: name 'args' is not defined +2025-03-10 15:29:55,450 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,451 - ERROR - Error in episode 1950: name 'args' is not defined +2025-03-10 15:29:55,453 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,454 - ERROR - Error in episode 1951: name 'args' is not defined +2025-03-10 15:29:55,457 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,457 - ERROR - Error in episode 1952: name 'args' is not defined +2025-03-10 15:29:55,460 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,460 - ERROR - Error in episode 1953: name 'args' is not defined +2025-03-10 15:29:55,463 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,464 - ERROR - Error in episode 1954: name 'args' is not defined +2025-03-10 15:29:55,467 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,467 - ERROR - Error in episode 1955: name 'args' is not defined +2025-03-10 15:29:55,470 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,470 - ERROR - Error in episode 1956: name 'args' is not defined +2025-03-10 15:29:55,474 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,474 - ERROR - Error in episode 1957: name 'args' is not defined +2025-03-10 15:29:55,478 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,478 - ERROR - Error in episode 1958: name 'args' is not defined +2025-03-10 15:29:55,481 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,482 - ERROR - Error in episode 1959: name 'args' is not defined +2025-03-10 15:29:55,485 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,486 - ERROR - Error in episode 1960: name 'args' is not defined +2025-03-10 15:29:55,488 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,489 - ERROR - Error in episode 1961: name 'args' is not defined +2025-03-10 15:29:55,492 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,492 - ERROR - Error in episode 1962: name 'args' is not defined +2025-03-10 15:29:55,495 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,497 - ERROR - Error in episode 1963: name 'args' is not defined +2025-03-10 15:29:55,501 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,501 - ERROR - Error in episode 1964: name 'args' is not defined +2025-03-10 15:29:55,504 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,505 - ERROR - Error in episode 1965: name 'args' is not defined +2025-03-10 15:29:55,508 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,508 - ERROR - Error in episode 1966: name 'args' is not defined +2025-03-10 15:29:55,512 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,512 - ERROR - Error in episode 1967: name 'args' is not defined +2025-03-10 15:29:55,515 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,516 - ERROR - Error in episode 1968: name 'args' is not defined +2025-03-10 15:29:55,520 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,520 - ERROR - Error in episode 1969: name 'args' is not defined +2025-03-10 15:29:55,523 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,523 - ERROR - Error in episode 1970: name 'args' is not defined +2025-03-10 15:29:55,527 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,527 - ERROR - Error in episode 1971: name 'args' is not defined +2025-03-10 15:29:55,531 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,531 - ERROR - Error in episode 1972: name 'args' is not defined +2025-03-10 15:29:55,534 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,534 - ERROR - Error in episode 1973: name 'args' is not defined +2025-03-10 15:29:55,538 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,538 - ERROR - Error in episode 1974: name 'args' is not defined +2025-03-10 15:29:55,542 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,542 - ERROR - Error in episode 1975: name 'args' is not defined +2025-03-10 15:29:55,546 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,546 - ERROR - Error in episode 1976: name 'args' is not defined +2025-03-10 15:29:55,550 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,550 - ERROR - Error in episode 1977: name 'args' is not defined +2025-03-10 15:29:55,553 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,554 - ERROR - Error in episode 1978: name 'args' is not defined +2025-03-10 15:29:55,557 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,557 - ERROR - Error in episode 1979: name 'args' is not defined +2025-03-10 15:29:55,561 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,561 - ERROR - Error in episode 1980: name 'args' is not defined +2025-03-10 15:29:55,564 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,564 - ERROR - Error in episode 1981: name 'args' is not defined +2025-03-10 15:29:55,567 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,568 - ERROR - Error in episode 1982: name 'args' is not defined +2025-03-10 15:29:55,571 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,571 - ERROR - Error in episode 1983: name 'args' is not defined +2025-03-10 15:29:55,574 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,575 - ERROR - Error in episode 1984: name 'args' is not defined +2025-03-10 15:29:55,578 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,578 - ERROR - Error in episode 1985: name 'args' is not defined +2025-03-10 15:29:55,581 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,581 - ERROR - Error in episode 1986: name 'args' is not defined +2025-03-10 15:29:55,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,585 - ERROR - Error in episode 1987: name 'args' is not defined +2025-03-10 15:29:55,588 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,588 - ERROR - Error in episode 1988: name 'args' is not defined +2025-03-10 15:29:55,591 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,592 - ERROR - Error in episode 1989: name 'args' is not defined +2025-03-10 15:29:55,595 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,596 - ERROR - Error in episode 1990: name 'args' is not defined +2025-03-10 15:29:55,599 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,599 - ERROR - Error in episode 1991: name 'args' is not defined +2025-03-10 15:29:55,603 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,603 - ERROR - Error in episode 1992: name 'args' is not defined +2025-03-10 15:29:55,607 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,607 - ERROR - Error in episode 1993: name 'args' is not defined +2025-03-10 15:29:55,610 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,611 - ERROR - Error in episode 1994: name 'args' is not defined +2025-03-10 15:29:55,614 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,614 - ERROR - Error in episode 1995: name 'args' is not defined +2025-03-10 15:29:55,618 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,618 - ERROR - Error in episode 1996: name 'args' is not defined +2025-03-10 15:29:55,621 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,621 - ERROR - Error in episode 1997: name 'args' is not defined +2025-03-10 15:29:55,624 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,624 - ERROR - Error in episode 1998: name 'args' is not defined +2025-03-10 15:29:55,628 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,628 - ERROR - Error in episode 1999: name 'args' is not defined +2025-03-10 15:29:55,631 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,631 - ERROR - Error in episode 2000: name 'args' is not defined +2025-03-10 15:29:55,635 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,635 - ERROR - Error in episode 2001: name 'args' is not defined +2025-03-10 15:29:55,639 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,639 - ERROR - Error in episode 2002: name 'args' is not defined +2025-03-10 15:29:55,642 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,642 - ERROR - Error in episode 2003: name 'args' is not defined +2025-03-10 15:29:55,645 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,646 - ERROR - Error in episode 2004: name 'args' is not defined +2025-03-10 15:29:55,649 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,650 - ERROR - Error in episode 2005: name 'args' is not defined +2025-03-10 15:29:55,652 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,652 - ERROR - Error in episode 2006: name 'args' is not defined +2025-03-10 15:29:55,655 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,655 - ERROR - Error in episode 2007: name 'args' is not defined +2025-03-10 15:29:55,658 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,658 - ERROR - Error in episode 2008: name 'args' is not defined +2025-03-10 15:29:55,662 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,662 - ERROR - Error in episode 2009: name 'args' is not defined +2025-03-10 15:29:55,665 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,665 - ERROR - Error in episode 2010: name 'args' is not defined +2025-03-10 15:29:55,669 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,669 - ERROR - Error in episode 2011: name 'args' is not defined +2025-03-10 15:29:55,673 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,674 - ERROR - Error in episode 2012: name 'args' is not defined +2025-03-10 15:29:55,676 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,677 - ERROR - Error in episode 2013: name 'args' is not defined +2025-03-10 15:29:55,680 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,680 - ERROR - Error in episode 2014: name 'args' is not defined +2025-03-10 15:29:55,683 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,683 - ERROR - Error in episode 2015: name 'args' is not defined +2025-03-10 15:29:55,686 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,687 - ERROR - Error in episode 2016: name 'args' is not defined +2025-03-10 15:29:55,690 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,690 - ERROR - Error in episode 2017: name 'args' is not defined +2025-03-10 15:29:55,692 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,693 - ERROR - Error in episode 2018: name 'args' is not defined +2025-03-10 15:29:55,696 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,696 - ERROR - Error in episode 2019: name 'args' is not defined +2025-03-10 15:29:55,699 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,699 - ERROR - Error in episode 2020: name 'args' is not defined +2025-03-10 15:29:55,701 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,702 - ERROR - Error in episode 2021: name 'args' is not defined +2025-03-10 15:29:55,705 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,705 - ERROR - Error in episode 2022: name 'args' is not defined +2025-03-10 15:29:55,708 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,708 - ERROR - Error in episode 2023: name 'args' is not defined +2025-03-10 15:29:55,711 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,711 - ERROR - Error in episode 2024: name 'args' is not defined +2025-03-10 15:29:55,713 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,715 - ERROR - Error in episode 2025: name 'args' is not defined +2025-03-10 15:29:55,717 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,718 - ERROR - Error in episode 2026: name 'args' is not defined +2025-03-10 15:29:55,720 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,720 - ERROR - Error in episode 2027: name 'args' is not defined +2025-03-10 15:29:55,722 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,723 - ERROR - Error in episode 2028: name 'args' is not defined +2025-03-10 15:29:55,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,727 - ERROR - Error in episode 2029: name 'args' is not defined +2025-03-10 15:29:55,729 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,730 - ERROR - Error in episode 2030: name 'args' is not defined +2025-03-10 15:29:55,733 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,733 - ERROR - Error in episode 2031: name 'args' is not defined +2025-03-10 15:29:55,736 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,736 - ERROR - Error in episode 2032: name 'args' is not defined +2025-03-10 15:29:55,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,739 - ERROR - Error in episode 2033: name 'args' is not defined +2025-03-10 15:29:55,742 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,742 - ERROR - Error in episode 2034: name 'args' is not defined +2025-03-10 15:29:55,745 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,745 - ERROR - Error in episode 2035: name 'args' is not defined +2025-03-10 15:29:55,748 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,748 - ERROR - Error in episode 2036: name 'args' is not defined +2025-03-10 15:29:55,751 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,751 - ERROR - Error in episode 2037: name 'args' is not defined +2025-03-10 15:29:55,753 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,753 - ERROR - Error in episode 2038: name 'args' is not defined +2025-03-10 15:29:55,756 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,756 - ERROR - Error in episode 2039: name 'args' is not defined +2025-03-10 15:29:55,759 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,759 - ERROR - Error in episode 2040: name 'args' is not defined +2025-03-10 15:29:55,762 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,762 - ERROR - Error in episode 2041: name 'args' is not defined +2025-03-10 15:29:55,765 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,766 - ERROR - Error in episode 2042: name 'args' is not defined +2025-03-10 15:29:55,768 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,769 - ERROR - Error in episode 2043: name 'args' is not defined +2025-03-10 15:29:55,771 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,772 - ERROR - Error in episode 2044: name 'args' is not defined +2025-03-10 15:29:55,774 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,774 - ERROR - Error in episode 2045: name 'args' is not defined +2025-03-10 15:29:55,777 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,777 - ERROR - Error in episode 2046: name 'args' is not defined +2025-03-10 15:29:55,780 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,780 - ERROR - Error in episode 2047: name 'args' is not defined +2025-03-10 15:29:55,784 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,784 - ERROR - Error in episode 2048: name 'args' is not defined +2025-03-10 15:29:55,787 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,787 - ERROR - Error in episode 2049: name 'args' is not defined +2025-03-10 15:29:55,790 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,790 - ERROR - Error in episode 2050: name 'args' is not defined +2025-03-10 15:29:55,792 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,793 - ERROR - Error in episode 2051: name 'args' is not defined +2025-03-10 15:29:55,795 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,795 - ERROR - Error in episode 2052: name 'args' is not defined +2025-03-10 15:29:55,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,799 - ERROR - Error in episode 2053: name 'args' is not defined +2025-03-10 15:29:55,801 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,801 - ERROR - Error in episode 2054: name 'args' is not defined +2025-03-10 15:29:55,804 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,805 - ERROR - Error in episode 2055: name 'args' is not defined +2025-03-10 15:29:55,808 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,808 - ERROR - Error in episode 2056: name 'args' is not defined +2025-03-10 15:29:55,810 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,811 - ERROR - Error in episode 2057: name 'args' is not defined +2025-03-10 15:29:55,813 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,814 - ERROR - Error in episode 2058: name 'args' is not defined +2025-03-10 15:29:55,816 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,816 - ERROR - Error in episode 2059: name 'args' is not defined +2025-03-10 15:29:55,819 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,819 - ERROR - Error in episode 2060: name 'args' is not defined +2025-03-10 15:29:55,822 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,822 - ERROR - Error in episode 2061: name 'args' is not defined +2025-03-10 15:29:55,825 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,826 - ERROR - Error in episode 2062: name 'args' is not defined +2025-03-10 15:29:55,828 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,828 - ERROR - Error in episode 2063: name 'args' is not defined +2025-03-10 15:29:55,831 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,831 - ERROR - Error in episode 2064: name 'args' is not defined +2025-03-10 15:29:55,834 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,834 - ERROR - Error in episode 2065: name 'args' is not defined +2025-03-10 15:29:55,837 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,837 - ERROR - Error in episode 2066: name 'args' is not defined +2025-03-10 15:29:55,840 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,840 - ERROR - Error in episode 2067: name 'args' is not defined +2025-03-10 15:29:55,844 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,844 - ERROR - Error in episode 2068: name 'args' is not defined +2025-03-10 15:29:55,847 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,848 - ERROR - Error in episode 2069: name 'args' is not defined +2025-03-10 15:29:55,851 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,851 - ERROR - Error in episode 2070: name 'args' is not defined +2025-03-10 15:29:55,853 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,853 - ERROR - Error in episode 2071: name 'args' is not defined +2025-03-10 15:29:55,857 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,857 - ERROR - Error in episode 2072: name 'args' is not defined +2025-03-10 15:29:55,860 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,860 - ERROR - Error in episode 2073: name 'args' is not defined +2025-03-10 15:29:55,862 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,863 - ERROR - Error in episode 2074: name 'args' is not defined +2025-03-10 15:29:55,866 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,866 - ERROR - Error in episode 2075: name 'args' is not defined +2025-03-10 15:29:55,868 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,869 - ERROR - Error in episode 2076: name 'args' is not defined +2025-03-10 15:29:55,871 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,871 - ERROR - Error in episode 2077: name 'args' is not defined +2025-03-10 15:29:55,874 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,875 - ERROR - Error in episode 2078: name 'args' is not defined +2025-03-10 15:29:55,877 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,878 - ERROR - Error in episode 2079: name 'args' is not defined +2025-03-10 15:29:55,880 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,881 - ERROR - Error in episode 2080: name 'args' is not defined +2025-03-10 15:29:55,883 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,884 - ERROR - Error in episode 2081: name 'args' is not defined +2025-03-10 15:29:55,886 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,886 - ERROR - Error in episode 2082: name 'args' is not defined +2025-03-10 15:29:55,889 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,890 - ERROR - Error in episode 2083: name 'args' is not defined +2025-03-10 15:29:55,892 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,892 - ERROR - Error in episode 2084: name 'args' is not defined +2025-03-10 15:29:55,895 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,895 - ERROR - Error in episode 2085: name 'args' is not defined +2025-03-10 15:29:55,898 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,898 - ERROR - Error in episode 2086: name 'args' is not defined +2025-03-10 15:29:55,901 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,901 - ERROR - Error in episode 2087: name 'args' is not defined +2025-03-10 15:29:55,904 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,904 - ERROR - Error in episode 2088: name 'args' is not defined +2025-03-10 15:29:55,907 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,908 - ERROR - Error in episode 2089: name 'args' is not defined +2025-03-10 15:29:55,910 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,910 - ERROR - Error in episode 2090: name 'args' is not defined +2025-03-10 15:29:55,913 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,913 - ERROR - Error in episode 2091: name 'args' is not defined +2025-03-10 15:29:55,916 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,916 - ERROR - Error in episode 2092: name 'args' is not defined +2025-03-10 15:29:55,918 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,919 - ERROR - Error in episode 2093: name 'args' is not defined +2025-03-10 15:29:55,921 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,922 - ERROR - Error in episode 2094: name 'args' is not defined +2025-03-10 15:29:55,925 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,925 - ERROR - Error in episode 2095: name 'args' is not defined +2025-03-10 15:29:55,928 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,928 - ERROR - Error in episode 2096: name 'args' is not defined +2025-03-10 15:29:55,931 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,931 - ERROR - Error in episode 2097: name 'args' is not defined +2025-03-10 15:29:55,934 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,934 - ERROR - Error in episode 2098: name 'args' is not defined +2025-03-10 15:29:55,936 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,937 - ERROR - Error in episode 2099: name 'args' is not defined +2025-03-10 15:29:55,939 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,940 - ERROR - Error in episode 2100: name 'args' is not defined +2025-03-10 15:29:55,942 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,943 - ERROR - Error in episode 2101: name 'args' is not defined +2025-03-10 15:29:55,945 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,945 - ERROR - Error in episode 2102: name 'args' is not defined +2025-03-10 15:29:55,948 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,949 - ERROR - Error in episode 2103: name 'args' is not defined +2025-03-10 15:29:55,951 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,951 - ERROR - Error in episode 2104: name 'args' is not defined +2025-03-10 15:29:55,954 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,954 - ERROR - Error in episode 2105: name 'args' is not defined +2025-03-10 15:29:55,957 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,957 - ERROR - Error in episode 2106: name 'args' is not defined +2025-03-10 15:29:55,959 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,959 - ERROR - Error in episode 2107: name 'args' is not defined +2025-03-10 15:29:55,962 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,962 - ERROR - Error in episode 2108: name 'args' is not defined +2025-03-10 15:29:55,965 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,965 - ERROR - Error in episode 2109: name 'args' is not defined +2025-03-10 15:29:55,968 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,968 - ERROR - Error in episode 2110: name 'args' is not defined +2025-03-10 15:29:55,971 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,971 - ERROR - Error in episode 2111: name 'args' is not defined +2025-03-10 15:29:55,974 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,974 - ERROR - Error in episode 2112: name 'args' is not defined +2025-03-10 15:29:55,978 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,978 - ERROR - Error in episode 2113: name 'args' is not defined +2025-03-10 15:29:55,981 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,982 - ERROR - Error in episode 2114: name 'args' is not defined +2025-03-10 15:29:55,984 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,984 - ERROR - Error in episode 2115: name 'args' is not defined +2025-03-10 15:29:55,987 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,987 - ERROR - Error in episode 2116: name 'args' is not defined +2025-03-10 15:29:55,990 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,990 - ERROR - Error in episode 2117: name 'args' is not defined +2025-03-10 15:29:55,993 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,993 - ERROR - Error in episode 2118: name 'args' is not defined +2025-03-10 15:29:55,995 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,996 - ERROR - Error in episode 2119: name 'args' is not defined +2025-03-10 15:29:55,999 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:55,999 - ERROR - Error in episode 2120: name 'args' is not defined +2025-03-10 15:29:56,001 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,002 - ERROR - Error in episode 2121: name 'args' is not defined +2025-03-10 15:29:56,004 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,004 - ERROR - Error in episode 2122: name 'args' is not defined +2025-03-10 15:29:56,008 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,008 - ERROR - Error in episode 2123: name 'args' is not defined +2025-03-10 15:29:56,011 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,011 - ERROR - Error in episode 2124: name 'args' is not defined +2025-03-10 15:29:56,014 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,014 - ERROR - Error in episode 2125: name 'args' is not defined +2025-03-10 15:29:56,017 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,017 - ERROR - Error in episode 2126: name 'args' is not defined +2025-03-10 15:29:56,019 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,020 - ERROR - Error in episode 2127: name 'args' is not defined +2025-03-10 15:29:56,023 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,024 - ERROR - Error in episode 2128: name 'args' is not defined +2025-03-10 15:29:56,026 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,026 - ERROR - Error in episode 2129: name 'args' is not defined +2025-03-10 15:29:56,029 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,029 - ERROR - Error in episode 2130: name 'args' is not defined +2025-03-10 15:29:56,032 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,032 - ERROR - Error in episode 2131: name 'args' is not defined +2025-03-10 15:29:56,035 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,035 - ERROR - Error in episode 2132: name 'args' is not defined +2025-03-10 15:29:56,037 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,038 - ERROR - Error in episode 2133: name 'args' is not defined +2025-03-10 15:29:56,040 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,041 - ERROR - Error in episode 2134: name 'args' is not defined +2025-03-10 15:29:56,043 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,043 - ERROR - Error in episode 2135: name 'args' is not defined +2025-03-10 15:29:56,046 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,047 - ERROR - Error in episode 2136: name 'args' is not defined +2025-03-10 15:29:56,049 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,049 - ERROR - Error in episode 2137: name 'args' is not defined +2025-03-10 15:29:56,052 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,052 - ERROR - Error in episode 2138: name 'args' is not defined +2025-03-10 15:29:56,055 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,056 - ERROR - Error in episode 2139: name 'args' is not defined +2025-03-10 15:29:56,058 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,058 - ERROR - Error in episode 2140: name 'args' is not defined +2025-03-10 15:29:56,061 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,061 - ERROR - Error in episode 2141: name 'args' is not defined +2025-03-10 15:29:56,064 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,064 - ERROR - Error in episode 2142: name 'args' is not defined +2025-03-10 15:29:56,066 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,067 - ERROR - Error in episode 2143: name 'args' is not defined +2025-03-10 15:29:56,070 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,070 - ERROR - Error in episode 2144: name 'args' is not defined +2025-03-10 15:29:56,073 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,074 - ERROR - Error in episode 2145: name 'args' is not defined +2025-03-10 15:29:56,077 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,077 - ERROR - Error in episode 2146: name 'args' is not defined +2025-03-10 15:29:56,080 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,080 - ERROR - Error in episode 2147: name 'args' is not defined +2025-03-10 15:29:56,082 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,083 - ERROR - Error in episode 2148: name 'args' is not defined +2025-03-10 15:29:56,086 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,086 - ERROR - Error in episode 2149: name 'args' is not defined +2025-03-10 15:29:56,090 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,090 - ERROR - Error in episode 2150: name 'args' is not defined +2025-03-10 15:29:56,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,094 - ERROR - Error in episode 2151: name 'args' is not defined +2025-03-10 15:29:56,097 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,097 - ERROR - Error in episode 2152: name 'args' is not defined +2025-03-10 15:29:56,100 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,100 - ERROR - Error in episode 2153: name 'args' is not defined +2025-03-10 15:29:56,102 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,103 - ERROR - Error in episode 2154: name 'args' is not defined +2025-03-10 15:29:56,105 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,106 - ERROR - Error in episode 2155: name 'args' is not defined +2025-03-10 15:29:56,108 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,108 - ERROR - Error in episode 2156: name 'args' is not defined +2025-03-10 15:29:56,110 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,111 - ERROR - Error in episode 2157: name 'args' is not defined +2025-03-10 15:29:56,113 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,114 - ERROR - Error in episode 2158: name 'args' is not defined +2025-03-10 15:29:56,116 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,117 - ERROR - Error in episode 2159: name 'args' is not defined +2025-03-10 15:29:56,119 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,119 - ERROR - Error in episode 2160: name 'args' is not defined +2025-03-10 15:29:56,122 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,122 - ERROR - Error in episode 2161: name 'args' is not defined +2025-03-10 15:29:56,125 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,126 - ERROR - Error in episode 2162: name 'args' is not defined +2025-03-10 15:29:56,128 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,129 - ERROR - Error in episode 2163: name 'args' is not defined +2025-03-10 15:29:56,131 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,132 - ERROR - Error in episode 2164: name 'args' is not defined +2025-03-10 15:29:56,134 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,134 - ERROR - Error in episode 2165: name 'args' is not defined +2025-03-10 15:29:56,137 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,137 - ERROR - Error in episode 2166: name 'args' is not defined +2025-03-10 15:29:56,140 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,140 - ERROR - Error in episode 2167: name 'args' is not defined +2025-03-10 15:29:56,143 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,143 - ERROR - Error in episode 2168: name 'args' is not defined +2025-03-10 15:29:56,145 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,146 - ERROR - Error in episode 2169: name 'args' is not defined +2025-03-10 15:29:56,148 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,149 - ERROR - Error in episode 2170: name 'args' is not defined +2025-03-10 15:29:56,151 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,151 - ERROR - Error in episode 2171: name 'args' is not defined +2025-03-10 15:29:56,154 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,155 - ERROR - Error in episode 2172: name 'args' is not defined +2025-03-10 15:29:56,158 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,158 - ERROR - Error in episode 2173: name 'args' is not defined +2025-03-10 15:29:56,160 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,161 - ERROR - Error in episode 2174: name 'args' is not defined +2025-03-10 15:29:56,163 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,164 - ERROR - Error in episode 2175: name 'args' is not defined +2025-03-10 15:29:56,166 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,167 - ERROR - Error in episode 2176: name 'args' is not defined +2025-03-10 15:29:56,169 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,169 - ERROR - Error in episode 2177: name 'args' is not defined +2025-03-10 15:29:56,172 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,172 - ERROR - Error in episode 2178: name 'args' is not defined +2025-03-10 15:29:56,175 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,175 - ERROR - Error in episode 2179: name 'args' is not defined +2025-03-10 15:29:56,178 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,178 - ERROR - Error in episode 2180: name 'args' is not defined +2025-03-10 15:29:56,182 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,182 - ERROR - Error in episode 2181: name 'args' is not defined +2025-03-10 15:29:56,185 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,185 - ERROR - Error in episode 2182: name 'args' is not defined +2025-03-10 15:29:56,188 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,188 - ERROR - Error in episode 2183: name 'args' is not defined +2025-03-10 15:29:56,191 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,191 - ERROR - Error in episode 2184: name 'args' is not defined +2025-03-10 15:29:56,194 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,194 - ERROR - Error in episode 2185: name 'args' is not defined +2025-03-10 15:29:56,197 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,197 - ERROR - Error in episode 2186: name 'args' is not defined +2025-03-10 15:29:56,199 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,200 - ERROR - Error in episode 2187: name 'args' is not defined +2025-03-10 15:29:56,202 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,203 - ERROR - Error in episode 2188: name 'args' is not defined +2025-03-10 15:29:56,206 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,206 - ERROR - Error in episode 2189: name 'args' is not defined +2025-03-10 15:29:56,210 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,210 - ERROR - Error in episode 2190: name 'args' is not defined +2025-03-10 15:29:56,212 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,213 - ERROR - Error in episode 2191: name 'args' is not defined +2025-03-10 15:29:56,216 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,216 - ERROR - Error in episode 2192: name 'args' is not defined +2025-03-10 15:29:56,220 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,220 - ERROR - Error in episode 2193: name 'args' is not defined +2025-03-10 15:29:56,223 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,224 - ERROR - Error in episode 2194: name 'args' is not defined +2025-03-10 15:29:56,225 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,226 - ERROR - Error in episode 2195: name 'args' is not defined +2025-03-10 15:29:56,228 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,228 - ERROR - Error in episode 2196: name 'args' is not defined +2025-03-10 15:29:56,231 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,231 - ERROR - Error in episode 2197: name 'args' is not defined +2025-03-10 15:29:56,234 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,234 - ERROR - Error in episode 2198: name 'args' is not defined +2025-03-10 15:29:56,237 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,237 - ERROR - Error in episode 2199: name 'args' is not defined +2025-03-10 15:29:56,241 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,241 - ERROR - Error in episode 2200: name 'args' is not defined +2025-03-10 15:29:56,243 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,244 - ERROR - Error in episode 2201: name 'args' is not defined +2025-03-10 15:29:56,246 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,247 - ERROR - Error in episode 2202: name 'args' is not defined +2025-03-10 15:29:56,249 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,250 - ERROR - Error in episode 2203: name 'args' is not defined +2025-03-10 15:29:56,252 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,252 - ERROR - Error in episode 2204: name 'args' is not defined +2025-03-10 15:29:56,255 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,255 - ERROR - Error in episode 2205: name 'args' is not defined +2025-03-10 15:29:56,258 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,259 - ERROR - Error in episode 2206: name 'args' is not defined +2025-03-10 15:29:56,261 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,261 - ERROR - Error in episode 2207: name 'args' is not defined +2025-03-10 15:29:56,264 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,264 - ERROR - Error in episode 2208: name 'args' is not defined +2025-03-10 15:29:56,267 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,267 - ERROR - Error in episode 2209: name 'args' is not defined +2025-03-10 15:29:56,270 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,270 - ERROR - Error in episode 2210: name 'args' is not defined +2025-03-10 15:29:56,273 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,273 - ERROR - Error in episode 2211: name 'args' is not defined +2025-03-10 15:29:56,276 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,276 - ERROR - Error in episode 2212: name 'args' is not defined +2025-03-10 15:29:56,278 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,279 - ERROR - Error in episode 2213: name 'args' is not defined +2025-03-10 15:29:56,282 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,282 - ERROR - Error in episode 2214: name 'args' is not defined +2025-03-10 15:29:56,284 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,285 - ERROR - Error in episode 2215: name 'args' is not defined +2025-03-10 15:29:56,287 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,288 - ERROR - Error in episode 2216: name 'args' is not defined +2025-03-10 15:29:56,290 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,291 - ERROR - Error in episode 2217: name 'args' is not defined +2025-03-10 15:29:56,293 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,293 - ERROR - Error in episode 2218: name 'args' is not defined +2025-03-10 15:29:56,296 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,296 - ERROR - Error in episode 2219: name 'args' is not defined +2025-03-10 15:29:56,299 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,299 - ERROR - Error in episode 2220: name 'args' is not defined +2025-03-10 15:29:56,301 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,302 - ERROR - Error in episode 2221: name 'args' is not defined +2025-03-10 15:29:56,304 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,305 - ERROR - Error in episode 2222: name 'args' is not defined +2025-03-10 15:29:56,307 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,308 - ERROR - Error in episode 2223: name 'args' is not defined +2025-03-10 15:29:56,310 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,311 - ERROR - Error in episode 2224: name 'args' is not defined +2025-03-10 15:29:56,313 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,313 - ERROR - Error in episode 2225: name 'args' is not defined +2025-03-10 15:29:56,316 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,316 - ERROR - Error in episode 2226: name 'args' is not defined +2025-03-10 15:29:56,318 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,319 - ERROR - Error in episode 2227: name 'args' is not defined +2025-03-10 15:29:56,321 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,322 - ERROR - Error in episode 2228: name 'args' is not defined +2025-03-10 15:29:56,325 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,325 - ERROR - Error in episode 2229: name 'args' is not defined +2025-03-10 15:29:56,328 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,328 - ERROR - Error in episode 2230: name 'args' is not defined +2025-03-10 15:29:56,331 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,332 - ERROR - Error in episode 2231: name 'args' is not defined +2025-03-10 15:29:56,334 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,334 - ERROR - Error in episode 2232: name 'args' is not defined +2025-03-10 15:29:56,337 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,337 - ERROR - Error in episode 2233: name 'args' is not defined +2025-03-10 15:29:56,340 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,341 - ERROR - Error in episode 2234: name 'args' is not defined +2025-03-10 15:29:56,343 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,344 - ERROR - Error in episode 2235: name 'args' is not defined +2025-03-10 15:29:56,346 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,346 - ERROR - Error in episode 2236: name 'args' is not defined +2025-03-10 15:29:56,349 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,349 - ERROR - Error in episode 2237: name 'args' is not defined +2025-03-10 15:29:56,352 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,352 - ERROR - Error in episode 2238: name 'args' is not defined +2025-03-10 15:29:56,355 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,355 - ERROR - Error in episode 2239: name 'args' is not defined +2025-03-10 15:29:56,358 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,358 - ERROR - Error in episode 2240: name 'args' is not defined +2025-03-10 15:29:56,361 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,361 - ERROR - Error in episode 2241: name 'args' is not defined +2025-03-10 15:29:56,363 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,363 - ERROR - Error in episode 2242: name 'args' is not defined +2025-03-10 15:29:56,366 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,366 - ERROR - Error in episode 2243: name 'args' is not defined +2025-03-10 15:29:56,369 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,370 - ERROR - Error in episode 2244: name 'args' is not defined +2025-03-10 15:29:56,372 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,373 - ERROR - Error in episode 2245: name 'args' is not defined +2025-03-10 15:29:56,375 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,376 - ERROR - Error in episode 2246: name 'args' is not defined +2025-03-10 15:29:56,379 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,380 - ERROR - Error in episode 2247: name 'args' is not defined +2025-03-10 15:29:56,383 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,383 - ERROR - Error in episode 2248: name 'args' is not defined +2025-03-10 15:29:56,386 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,386 - ERROR - Error in episode 2249: name 'args' is not defined +2025-03-10 15:29:56,388 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,389 - ERROR - Error in episode 2250: name 'args' is not defined +2025-03-10 15:29:56,392 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,392 - ERROR - Error in episode 2251: name 'args' is not defined +2025-03-10 15:29:56,395 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,395 - ERROR - Error in episode 2252: name 'args' is not defined +2025-03-10 15:29:56,398 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,398 - ERROR - Error in episode 2253: name 'args' is not defined +2025-03-10 15:29:56,401 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,401 - ERROR - Error in episode 2254: name 'args' is not defined +2025-03-10 15:29:56,403 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,404 - ERROR - Error in episode 2255: name 'args' is not defined +2025-03-10 15:29:56,406 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,407 - ERROR - Error in episode 2256: name 'args' is not defined +2025-03-10 15:29:56,409 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,409 - ERROR - Error in episode 2257: name 'args' is not defined +2025-03-10 15:29:56,412 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,412 - ERROR - Error in episode 2258: name 'args' is not defined +2025-03-10 15:29:56,415 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,415 - ERROR - Error in episode 2259: name 'args' is not defined +2025-03-10 15:29:56,418 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,418 - ERROR - Error in episode 2260: name 'args' is not defined +2025-03-10 15:29:56,421 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,421 - ERROR - Error in episode 2261: name 'args' is not defined +2025-03-10 15:29:56,423 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,424 - ERROR - Error in episode 2262: name 'args' is not defined +2025-03-10 15:29:56,426 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,426 - ERROR - Error in episode 2263: name 'args' is not defined +2025-03-10 15:29:56,429 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,429 - ERROR - Error in episode 2264: name 'args' is not defined +2025-03-10 15:29:56,432 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,433 - ERROR - Error in episode 2265: name 'args' is not defined +2025-03-10 15:29:56,435 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,435 - ERROR - Error in episode 2266: name 'args' is not defined +2025-03-10 15:29:56,438 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,438 - ERROR - Error in episode 2267: name 'args' is not defined +2025-03-10 15:29:56,441 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,441 - ERROR - Error in episode 2268: name 'args' is not defined +2025-03-10 15:29:56,443 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,444 - ERROR - Error in episode 2269: name 'args' is not defined +2025-03-10 15:29:56,446 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,446 - ERROR - Error in episode 2270: name 'args' is not defined +2025-03-10 15:29:56,449 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,449 - ERROR - Error in episode 2271: name 'args' is not defined +2025-03-10 15:29:56,452 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,452 - ERROR - Error in episode 2272: name 'args' is not defined +2025-03-10 15:29:56,455 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,455 - ERROR - Error in episode 2273: name 'args' is not defined +2025-03-10 15:29:56,459 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,459 - ERROR - Error in episode 2274: name 'args' is not defined +2025-03-10 15:29:56,461 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,461 - ERROR - Error in episode 2275: name 'args' is not defined +2025-03-10 15:29:56,465 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,465 - ERROR - Error in episode 2276: name 'args' is not defined +2025-03-10 15:29:56,467 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,468 - ERROR - Error in episode 2277: name 'args' is not defined +2025-03-10 15:29:56,470 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,471 - ERROR - Error in episode 2278: name 'args' is not defined +2025-03-10 15:29:56,473 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,474 - ERROR - Error in episode 2279: name 'args' is not defined +2025-03-10 15:29:56,477 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,477 - ERROR - Error in episode 2280: name 'args' is not defined +2025-03-10 15:29:56,479 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,480 - ERROR - Error in episode 2281: name 'args' is not defined +2025-03-10 15:29:56,482 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,483 - ERROR - Error in episode 2282: name 'args' is not defined +2025-03-10 15:29:56,485 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,486 - ERROR - Error in episode 2283: name 'args' is not defined +2025-03-10 15:29:56,488 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,488 - ERROR - Error in episode 2284: name 'args' is not defined +2025-03-10 15:29:56,491 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,491 - ERROR - Error in episode 2285: name 'args' is not defined +2025-03-10 15:29:56,493 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,493 - ERROR - Error in episode 2286: name 'args' is not defined +2025-03-10 15:29:56,496 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,496 - ERROR - Error in episode 2287: name 'args' is not defined +2025-03-10 15:29:56,499 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,499 - ERROR - Error in episode 2288: name 'args' is not defined +2025-03-10 15:29:56,502 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,502 - ERROR - Error in episode 2289: name 'args' is not defined +2025-03-10 15:29:56,505 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,505 - ERROR - Error in episode 2290: name 'args' is not defined +2025-03-10 15:29:56,508 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,508 - ERROR - Error in episode 2291: name 'args' is not defined +2025-03-10 15:29:56,511 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,511 - ERROR - Error in episode 2292: name 'args' is not defined +2025-03-10 15:29:56,515 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,515 - ERROR - Error in episode 2293: name 'args' is not defined +2025-03-10 15:29:56,517 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,518 - ERROR - Error in episode 2294: name 'args' is not defined +2025-03-10 15:29:56,520 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,521 - ERROR - Error in episode 2295: name 'args' is not defined +2025-03-10 15:29:56,524 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,524 - ERROR - Error in episode 2296: name 'args' is not defined +2025-03-10 15:29:56,527 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,527 - ERROR - Error in episode 2297: name 'args' is not defined +2025-03-10 15:29:56,530 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,530 - ERROR - Error in episode 2298: name 'args' is not defined +2025-03-10 15:29:56,533 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,533 - ERROR - Error in episode 2299: name 'args' is not defined +2025-03-10 15:29:56,535 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,536 - ERROR - Error in episode 2300: name 'args' is not defined +2025-03-10 15:29:56,538 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,539 - ERROR - Error in episode 2301: name 'args' is not defined +2025-03-10 15:29:56,541 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,542 - ERROR - Error in episode 2302: name 'args' is not defined +2025-03-10 15:29:56,544 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,545 - ERROR - Error in episode 2303: name 'args' is not defined +2025-03-10 15:29:56,547 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,548 - ERROR - Error in episode 2304: name 'args' is not defined +2025-03-10 15:29:56,551 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,551 - ERROR - Error in episode 2305: name 'args' is not defined +2025-03-10 15:29:56,553 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,554 - ERROR - Error in episode 2306: name 'args' is not defined +2025-03-10 15:29:56,556 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,557 - ERROR - Error in episode 2307: name 'args' is not defined +2025-03-10 15:29:56,559 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,560 - ERROR - Error in episode 2308: name 'args' is not defined +2025-03-10 15:29:56,562 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,562 - ERROR - Error in episode 2309: name 'args' is not defined +2025-03-10 15:29:56,566 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,566 - ERROR - Error in episode 2310: name 'args' is not defined +2025-03-10 15:29:56,569 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,569 - ERROR - Error in episode 2311: name 'args' is not defined +2025-03-10 15:29:56,572 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,573 - ERROR - Error in episode 2312: name 'args' is not defined +2025-03-10 15:29:56,575 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,576 - ERROR - Error in episode 2313: name 'args' is not defined +2025-03-10 15:29:56,578 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,579 - ERROR - Error in episode 2314: name 'args' is not defined +2025-03-10 15:29:56,582 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,582 - ERROR - Error in episode 2315: name 'args' is not defined +2025-03-10 15:29:56,585 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,585 - ERROR - Error in episode 2316: name 'args' is not defined +2025-03-10 15:29:56,588 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,588 - ERROR - Error in episode 2317: name 'args' is not defined +2025-03-10 15:29:56,591 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,592 - ERROR - Error in episode 2318: name 'args' is not defined +2025-03-10 15:29:56,595 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,595 - ERROR - Error in episode 2319: name 'args' is not defined +2025-03-10 15:29:56,598 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,598 - ERROR - Error in episode 2320: name 'args' is not defined +2025-03-10 15:29:56,601 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,602 - ERROR - Error in episode 2321: name 'args' is not defined +2025-03-10 15:29:56,605 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,605 - ERROR - Error in episode 2322: name 'args' is not defined +2025-03-10 15:29:56,610 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,610 - ERROR - Error in episode 2323: name 'args' is not defined +2025-03-10 15:29:56,613 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,613 - ERROR - Error in episode 2324: name 'args' is not defined +2025-03-10 15:29:56,616 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,617 - ERROR - Error in episode 2325: name 'args' is not defined +2025-03-10 15:29:56,619 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,619 - ERROR - Error in episode 2326: name 'args' is not defined +2025-03-10 15:29:56,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,623 - ERROR - Error in episode 2327: name 'args' is not defined +2025-03-10 15:29:56,626 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,627 - ERROR - Error in episode 2328: name 'args' is not defined +2025-03-10 15:29:56,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,630 - ERROR - Error in episode 2329: name 'args' is not defined +2025-03-10 15:29:56,634 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,635 - ERROR - Error in episode 2330: name 'args' is not defined +2025-03-10 15:29:56,638 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,639 - ERROR - Error in episode 2331: name 'args' is not defined +2025-03-10 15:29:56,641 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,642 - ERROR - Error in episode 2332: name 'args' is not defined +2025-03-10 15:29:56,644 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,645 - ERROR - Error in episode 2333: name 'args' is not defined +2025-03-10 15:29:56,648 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,648 - ERROR - Error in episode 2334: name 'args' is not defined +2025-03-10 15:29:56,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,652 - ERROR - Error in episode 2335: name 'args' is not defined +2025-03-10 15:29:56,655 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,655 - ERROR - Error in episode 2336: name 'args' is not defined +2025-03-10 15:29:56,659 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,659 - ERROR - Error in episode 2337: name 'args' is not defined +2025-03-10 15:29:56,663 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,663 - ERROR - Error in episode 2338: name 'args' is not defined +2025-03-10 15:29:56,666 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,666 - ERROR - Error in episode 2339: name 'args' is not defined +2025-03-10 15:29:56,669 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,669 - ERROR - Error in episode 2340: name 'args' is not defined +2025-03-10 15:29:56,672 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,672 - ERROR - Error in episode 2341: name 'args' is not defined +2025-03-10 15:29:56,675 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,675 - ERROR - Error in episode 2342: name 'args' is not defined +2025-03-10 15:29:56,678 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,678 - ERROR - Error in episode 2343: name 'args' is not defined +2025-03-10 15:29:56,682 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,682 - ERROR - Error in episode 2344: name 'args' is not defined +2025-03-10 15:29:56,685 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,686 - ERROR - Error in episode 2345: name 'args' is not defined +2025-03-10 15:29:56,689 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,689 - ERROR - Error in episode 2346: name 'args' is not defined +2025-03-10 15:29:56,692 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,693 - ERROR - Error in episode 2347: name 'args' is not defined +2025-03-10 15:29:56,695 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,696 - ERROR - Error in episode 2348: name 'args' is not defined +2025-03-10 15:29:56,700 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,701 - ERROR - Error in episode 2349: name 'args' is not defined +2025-03-10 15:29:56,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,704 - ERROR - Error in episode 2350: name 'args' is not defined +2025-03-10 15:29:56,706 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,707 - ERROR - Error in episode 2351: name 'args' is not defined +2025-03-10 15:29:56,709 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,710 - ERROR - Error in episode 2352: name 'args' is not defined +2025-03-10 15:29:56,712 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,712 - ERROR - Error in episode 2353: name 'args' is not defined +2025-03-10 15:29:56,715 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,715 - ERROR - Error in episode 2354: name 'args' is not defined +2025-03-10 15:29:56,718 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,718 - ERROR - Error in episode 2355: name 'args' is not defined +2025-03-10 15:29:56,720 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,721 - ERROR - Error in episode 2356: name 'args' is not defined +2025-03-10 15:29:56,723 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,724 - ERROR - Error in episode 2357: name 'args' is not defined +2025-03-10 15:29:56,726 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,726 - ERROR - Error in episode 2358: name 'args' is not defined +2025-03-10 15:29:56,728 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,729 - ERROR - Error in episode 2359: name 'args' is not defined +2025-03-10 15:29:56,732 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,733 - ERROR - Error in episode 2360: name 'args' is not defined +2025-03-10 15:29:56,735 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,736 - ERROR - Error in episode 2361: name 'args' is not defined +2025-03-10 15:29:56,738 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,739 - ERROR - Error in episode 2362: name 'args' is not defined +2025-03-10 15:29:56,741 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,742 - ERROR - Error in episode 2363: name 'args' is not defined +2025-03-10 15:29:56,744 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,745 - ERROR - Error in episode 2364: name 'args' is not defined +2025-03-10 15:29:56,747 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,747 - ERROR - Error in episode 2365: name 'args' is not defined +2025-03-10 15:29:56,750 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,750 - ERROR - Error in episode 2366: name 'args' is not defined +2025-03-10 15:29:56,753 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,753 - ERROR - Error in episode 2367: name 'args' is not defined +2025-03-10 15:29:56,756 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,756 - ERROR - Error in episode 2368: name 'args' is not defined +2025-03-10 15:29:56,758 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,759 - ERROR - Error in episode 2369: name 'args' is not defined +2025-03-10 15:29:56,761 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,761 - ERROR - Error in episode 2370: name 'args' is not defined +2025-03-10 15:29:56,764 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,765 - ERROR - Error in episode 2371: name 'args' is not defined +2025-03-10 15:29:56,767 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,767 - ERROR - Error in episode 2372: name 'args' is not defined +2025-03-10 15:29:56,770 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,770 - ERROR - Error in episode 2373: name 'args' is not defined +2025-03-10 15:29:56,773 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,774 - ERROR - Error in episode 2374: name 'args' is not defined +2025-03-10 15:29:56,776 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,777 - ERROR - Error in episode 2375: name 'args' is not defined +2025-03-10 15:29:56,779 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,780 - ERROR - Error in episode 2376: name 'args' is not defined +2025-03-10 15:29:56,782 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,783 - ERROR - Error in episode 2377: name 'args' is not defined +2025-03-10 15:29:56,786 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,786 - ERROR - Error in episode 2378: name 'args' is not defined +2025-03-10 15:29:56,789 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,789 - ERROR - Error in episode 2379: name 'args' is not defined +2025-03-10 15:29:56,791 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,792 - ERROR - Error in episode 2380: name 'args' is not defined +2025-03-10 15:29:56,794 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,795 - ERROR - Error in episode 2381: name 'args' is not defined +2025-03-10 15:29:56,797 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,797 - ERROR - Error in episode 2382: name 'args' is not defined +2025-03-10 15:29:56,800 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,800 - ERROR - Error in episode 2383: name 'args' is not defined +2025-03-10 15:29:56,803 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,804 - ERROR - Error in episode 2384: name 'args' is not defined +2025-03-10 15:29:56,807 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,807 - ERROR - Error in episode 2385: name 'args' is not defined +2025-03-10 15:29:56,810 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,810 - ERROR - Error in episode 2386: name 'args' is not defined +2025-03-10 15:29:56,813 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,813 - ERROR - Error in episode 2387: name 'args' is not defined +2025-03-10 15:29:56,816 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,817 - ERROR - Error in episode 2388: name 'args' is not defined +2025-03-10 15:29:56,820 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,820 - ERROR - Error in episode 2389: name 'args' is not defined +2025-03-10 15:29:56,822 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,823 - ERROR - Error in episode 2390: name 'args' is not defined +2025-03-10 15:29:56,825 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,825 - ERROR - Error in episode 2391: name 'args' is not defined +2025-03-10 15:29:56,828 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,829 - ERROR - Error in episode 2392: name 'args' is not defined +2025-03-10 15:29:56,832 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,832 - ERROR - Error in episode 2393: name 'args' is not defined +2025-03-10 15:29:56,834 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,835 - ERROR - Error in episode 2394: name 'args' is not defined +2025-03-10 15:29:56,837 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,837 - ERROR - Error in episode 2395: name 'args' is not defined +2025-03-10 15:29:56,840 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,841 - ERROR - Error in episode 2396: name 'args' is not defined +2025-03-10 15:29:56,843 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,843 - ERROR - Error in episode 2397: name 'args' is not defined +2025-03-10 15:29:56,846 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,846 - ERROR - Error in episode 2398: name 'args' is not defined +2025-03-10 15:29:56,849 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,849 - ERROR - Error in episode 2399: name 'args' is not defined +2025-03-10 15:29:56,851 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,852 - ERROR - Error in episode 2400: name 'args' is not defined +2025-03-10 15:29:56,854 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,854 - ERROR - Error in episode 2401: name 'args' is not defined +2025-03-10 15:29:56,857 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,857 - ERROR - Error in episode 2402: name 'args' is not defined +2025-03-10 15:29:56,859 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,860 - ERROR - Error in episode 2403: name 'args' is not defined +2025-03-10 15:29:56,862 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,862 - ERROR - Error in episode 2404: name 'args' is not defined +2025-03-10 15:29:56,865 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,866 - ERROR - Error in episode 2405: name 'args' is not defined +2025-03-10 15:29:56,868 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,868 - ERROR - Error in episode 2406: name 'args' is not defined +2025-03-10 15:29:56,871 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,871 - ERROR - Error in episode 2407: name 'args' is not defined +2025-03-10 15:29:56,873 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,874 - ERROR - Error in episode 2408: name 'args' is not defined +2025-03-10 15:29:56,876 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,877 - ERROR - Error in episode 2409: name 'args' is not defined +2025-03-10 15:29:56,879 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,879 - ERROR - Error in episode 2410: name 'args' is not defined +2025-03-10 15:29:56,883 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,883 - ERROR - Error in episode 2411: name 'args' is not defined +2025-03-10 15:29:56,886 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,886 - ERROR - Error in episode 2412: name 'args' is not defined +2025-03-10 15:29:56,888 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,889 - ERROR - Error in episode 2413: name 'args' is not defined +2025-03-10 15:29:56,891 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,892 - ERROR - Error in episode 2414: name 'args' is not defined +2025-03-10 15:29:56,894 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,894 - ERROR - Error in episode 2415: name 'args' is not defined +2025-03-10 15:29:56,897 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,898 - ERROR - Error in episode 2416: name 'args' is not defined +2025-03-10 15:29:56,900 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,900 - ERROR - Error in episode 2417: name 'args' is not defined +2025-03-10 15:29:56,903 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,903 - ERROR - Error in episode 2418: name 'args' is not defined +2025-03-10 15:29:56,906 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,906 - ERROR - Error in episode 2419: name 'args' is not defined +2025-03-10 15:29:56,909 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,910 - ERROR - Error in episode 2420: name 'args' is not defined +2025-03-10 15:29:56,912 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,912 - ERROR - Error in episode 2421: name 'args' is not defined +2025-03-10 15:29:56,915 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,916 - ERROR - Error in episode 2422: name 'args' is not defined +2025-03-10 15:29:56,918 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,919 - ERROR - Error in episode 2423: name 'args' is not defined +2025-03-10 15:29:56,921 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,921 - ERROR - Error in episode 2424: name 'args' is not defined +2025-03-10 15:29:56,924 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,925 - ERROR - Error in episode 2425: name 'args' is not defined +2025-03-10 15:29:56,927 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,928 - ERROR - Error in episode 2426: name 'args' is not defined +2025-03-10 15:29:56,930 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,931 - ERROR - Error in episode 2427: name 'args' is not defined +2025-03-10 15:29:56,933 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,934 - ERROR - Error in episode 2428: name 'args' is not defined +2025-03-10 15:29:56,936 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,937 - ERROR - Error in episode 2429: name 'args' is not defined +2025-03-10 15:29:56,940 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,940 - ERROR - Error in episode 2430: name 'args' is not defined +2025-03-10 15:29:56,942 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,942 - ERROR - Error in episode 2431: name 'args' is not defined +2025-03-10 15:29:56,945 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,945 - ERROR - Error in episode 2432: name 'args' is not defined +2025-03-10 15:29:56,948 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,949 - ERROR - Error in episode 2433: name 'args' is not defined +2025-03-10 15:29:56,951 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,951 - ERROR - Error in episode 2434: name 'args' is not defined +2025-03-10 15:29:56,954 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,954 - ERROR - Error in episode 2435: name 'args' is not defined +2025-03-10 15:29:56,957 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,957 - ERROR - Error in episode 2436: name 'args' is not defined +2025-03-10 15:29:56,959 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,959 - ERROR - Error in episode 2437: name 'args' is not defined +2025-03-10 15:29:56,962 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,962 - ERROR - Error in episode 2438: name 'args' is not defined +2025-03-10 15:29:56,965 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,965 - ERROR - Error in episode 2439: name 'args' is not defined +2025-03-10 15:29:56,968 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,968 - ERROR - Error in episode 2440: name 'args' is not defined +2025-03-10 15:29:56,971 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,971 - ERROR - Error in episode 2441: name 'args' is not defined +2025-03-10 15:29:56,974 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,974 - ERROR - Error in episode 2442: name 'args' is not defined +2025-03-10 15:29:56,977 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,977 - ERROR - Error in episode 2443: name 'args' is not defined +2025-03-10 15:29:56,979 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,980 - ERROR - Error in episode 2444: name 'args' is not defined +2025-03-10 15:29:56,983 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,983 - ERROR - Error in episode 2445: name 'args' is not defined +2025-03-10 15:29:56,986 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,986 - ERROR - Error in episode 2446: name 'args' is not defined +2025-03-10 15:29:56,989 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,989 - ERROR - Error in episode 2447: name 'args' is not defined +2025-03-10 15:29:56,992 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,992 - ERROR - Error in episode 2448: name 'args' is not defined +2025-03-10 15:29:56,994 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,995 - ERROR - Error in episode 2449: name 'args' is not defined +2025-03-10 15:29:56,997 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:56,998 - ERROR - Error in episode 2450: name 'args' is not defined +2025-03-10 15:29:57,000 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,000 - ERROR - Error in episode 2451: name 'args' is not defined +2025-03-10 15:29:57,003 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,003 - ERROR - Error in episode 2452: name 'args' is not defined +2025-03-10 15:29:57,006 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,006 - ERROR - Error in episode 2453: name 'args' is not defined +2025-03-10 15:29:57,009 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,009 - ERROR - Error in episode 2454: name 'args' is not defined +2025-03-10 15:29:57,012 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,012 - ERROR - Error in episode 2455: name 'args' is not defined +2025-03-10 15:29:57,015 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,015 - ERROR - Error in episode 2456: name 'args' is not defined +2025-03-10 15:29:57,018 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,018 - ERROR - Error in episode 2457: name 'args' is not defined +2025-03-10 15:29:57,021 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,021 - ERROR - Error in episode 2458: name 'args' is not defined +2025-03-10 15:29:57,024 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,024 - ERROR - Error in episode 2459: name 'args' is not defined +2025-03-10 15:29:57,027 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,027 - ERROR - Error in episode 2460: name 'args' is not defined +2025-03-10 15:29:57,029 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,029 - ERROR - Error in episode 2461: name 'args' is not defined +2025-03-10 15:29:57,032 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,032 - ERROR - Error in episode 2462: name 'args' is not defined +2025-03-10 15:29:57,035 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,035 - ERROR - Error in episode 2463: name 'args' is not defined +2025-03-10 15:29:57,038 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,038 - ERROR - Error in episode 2464: name 'args' is not defined +2025-03-10 15:29:57,041 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,041 - ERROR - Error in episode 2465: name 'args' is not defined +2025-03-10 15:29:57,043 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,043 - ERROR - Error in episode 2466: name 'args' is not defined +2025-03-10 15:29:57,046 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,046 - ERROR - Error in episode 2467: name 'args' is not defined +2025-03-10 15:29:57,049 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,049 - ERROR - Error in episode 2468: name 'args' is not defined +2025-03-10 15:29:57,052 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,052 - ERROR - Error in episode 2469: name 'args' is not defined +2025-03-10 15:29:57,054 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,055 - ERROR - Error in episode 2470: name 'args' is not defined +2025-03-10 15:29:57,057 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,058 - ERROR - Error in episode 2471: name 'args' is not defined +2025-03-10 15:29:57,060 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,060 - ERROR - Error in episode 2472: name 'args' is not defined +2025-03-10 15:29:57,063 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,063 - ERROR - Error in episode 2473: name 'args' is not defined +2025-03-10 15:29:57,066 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,066 - ERROR - Error in episode 2474: name 'args' is not defined +2025-03-10 15:29:57,069 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,069 - ERROR - Error in episode 2475: name 'args' is not defined +2025-03-10 15:29:57,071 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,071 - ERROR - Error in episode 2476: name 'args' is not defined +2025-03-10 15:29:57,075 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,075 - ERROR - Error in episode 2477: name 'args' is not defined +2025-03-10 15:29:57,078 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,078 - ERROR - Error in episode 2478: name 'args' is not defined +2025-03-10 15:29:57,081 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,081 - ERROR - Error in episode 2479: name 'args' is not defined +2025-03-10 15:29:57,084 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,085 - ERROR - Error in episode 2480: name 'args' is not defined +2025-03-10 15:29:57,087 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,087 - ERROR - Error in episode 2481: name 'args' is not defined +2025-03-10 15:29:57,092 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,092 - ERROR - Error in episode 2482: name 'args' is not defined +2025-03-10 15:29:57,095 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,096 - ERROR - Error in episode 2483: name 'args' is not defined +2025-03-10 15:29:57,098 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,099 - ERROR - Error in episode 2484: name 'args' is not defined +2025-03-10 15:29:57,101 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,102 - ERROR - Error in episode 2485: name 'args' is not defined +2025-03-10 15:29:57,104 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,104 - ERROR - Error in episode 2486: name 'args' is not defined +2025-03-10 15:29:57,107 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,107 - ERROR - Error in episode 2487: name 'args' is not defined +2025-03-10 15:29:57,109 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,110 - ERROR - Error in episode 2488: name 'args' is not defined +2025-03-10 15:29:57,112 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,112 - ERROR - Error in episode 2489: name 'args' is not defined +2025-03-10 15:29:57,115 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,115 - ERROR - Error in episode 2490: name 'args' is not defined +2025-03-10 15:29:57,118 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,118 - ERROR - Error in episode 2491: name 'args' is not defined +2025-03-10 15:29:57,120 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,121 - ERROR - Error in episode 2492: name 'args' is not defined +2025-03-10 15:29:57,123 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,123 - ERROR - Error in episode 2493: name 'args' is not defined +2025-03-10 15:29:57,126 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,126 - ERROR - Error in episode 2494: name 'args' is not defined +2025-03-10 15:29:57,129 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,129 - ERROR - Error in episode 2495: name 'args' is not defined +2025-03-10 15:29:57,132 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,133 - ERROR - Error in episode 2496: name 'args' is not defined +2025-03-10 15:29:57,136 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,137 - ERROR - Error in episode 2497: name 'args' is not defined +2025-03-10 15:29:57,139 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,141 - ERROR - Error in episode 2498: name 'args' is not defined +2025-03-10 15:29:57,143 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,143 - ERROR - Error in episode 2499: name 'args' is not defined +2025-03-10 15:29:57,146 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,146 - ERROR - Error in episode 2500: name 'args' is not defined +2025-03-10 15:29:57,148 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,149 - ERROR - Error in episode 2501: name 'args' is not defined +2025-03-10 15:29:57,151 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,151 - ERROR - Error in episode 2502: name 'args' is not defined +2025-03-10 15:29:57,153 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,153 - ERROR - Error in episode 2503: name 'args' is not defined +2025-03-10 15:29:57,156 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,157 - ERROR - Error in episode 2504: name 'args' is not defined +2025-03-10 15:29:57,159 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,159 - ERROR - Error in episode 2505: name 'args' is not defined +2025-03-10 15:29:57,162 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,162 - ERROR - Error in episode 2506: name 'args' is not defined +2025-03-10 15:29:57,166 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,166 - ERROR - Error in episode 2507: name 'args' is not defined +2025-03-10 15:29:57,168 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,169 - ERROR - Error in episode 2508: name 'args' is not defined +2025-03-10 15:29:57,171 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,172 - ERROR - Error in episode 2509: name 'args' is not defined +2025-03-10 15:29:57,175 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,176 - ERROR - Error in episode 2510: name 'args' is not defined +2025-03-10 15:29:57,178 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,178 - ERROR - Error in episode 2511: name 'args' is not defined +2025-03-10 15:29:57,180 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,181 - ERROR - Error in episode 2512: name 'args' is not defined +2025-03-10 15:29:57,183 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,184 - ERROR - Error in episode 2513: name 'args' is not defined +2025-03-10 15:29:57,187 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,187 - ERROR - Error in episode 2514: name 'args' is not defined +2025-03-10 15:29:57,190 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,191 - ERROR - Error in episode 2515: name 'args' is not defined +2025-03-10 15:29:57,193 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,193 - ERROR - Error in episode 2516: name 'args' is not defined +2025-03-10 15:29:57,196 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,196 - ERROR - Error in episode 2517: name 'args' is not defined +2025-03-10 15:29:57,199 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,199 - ERROR - Error in episode 2518: name 'args' is not defined +2025-03-10 15:29:57,202 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,202 - ERROR - Error in episode 2519: name 'args' is not defined +2025-03-10 15:29:57,204 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,205 - ERROR - Error in episode 2520: name 'args' is not defined +2025-03-10 15:29:57,207 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,208 - ERROR - Error in episode 2521: name 'args' is not defined +2025-03-10 15:29:57,210 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,210 - ERROR - Error in episode 2522: name 'args' is not defined +2025-03-10 15:29:57,213 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,213 - ERROR - Error in episode 2523: name 'args' is not defined +2025-03-10 15:29:57,216 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,216 - ERROR - Error in episode 2524: name 'args' is not defined +2025-03-10 15:29:57,218 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,218 - ERROR - Error in episode 2525: name 'args' is not defined +2025-03-10 15:29:57,221 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,221 - ERROR - Error in episode 2526: name 'args' is not defined +2025-03-10 15:29:57,224 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,225 - ERROR - Error in episode 2527: name 'args' is not defined +2025-03-10 15:29:57,227 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,227 - ERROR - Error in episode 2528: name 'args' is not defined +2025-03-10 15:29:57,230 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,230 - ERROR - Error in episode 2529: name 'args' is not defined +2025-03-10 15:29:57,233 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,233 - ERROR - Error in episode 2530: name 'args' is not defined +2025-03-10 15:29:57,236 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,236 - ERROR - Error in episode 2531: name 'args' is not defined +2025-03-10 15:29:57,238 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,239 - ERROR - Error in episode 2532: name 'args' is not defined +2025-03-10 15:29:57,241 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,242 - ERROR - Error in episode 2533: name 'args' is not defined +2025-03-10 15:29:57,244 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,245 - ERROR - Error in episode 2534: name 'args' is not defined +2025-03-10 15:29:57,247 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,247 - ERROR - Error in episode 2535: name 'args' is not defined +2025-03-10 15:29:57,250 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,251 - ERROR - Error in episode 2536: name 'args' is not defined +2025-03-10 15:29:57,253 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,253 - ERROR - Error in episode 2537: name 'args' is not defined +2025-03-10 15:29:57,256 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,256 - ERROR - Error in episode 2538: name 'args' is not defined +2025-03-10 15:29:57,258 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,259 - ERROR - Error in episode 2539: name 'args' is not defined +2025-03-10 15:29:57,261 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,261 - ERROR - Error in episode 2540: name 'args' is not defined +2025-03-10 15:29:57,264 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,264 - ERROR - Error in episode 2541: name 'args' is not defined +2025-03-10 15:29:57,268 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,268 - ERROR - Error in episode 2542: name 'args' is not defined +2025-03-10 15:29:57,270 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,270 - ERROR - Error in episode 2543: name 'args' is not defined +2025-03-10 15:29:57,273 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,273 - ERROR - Error in episode 2544: name 'args' is not defined +2025-03-10 15:29:57,276 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,276 - ERROR - Error in episode 2545: name 'args' is not defined +2025-03-10 15:29:57,279 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,280 - ERROR - Error in episode 2546: name 'args' is not defined +2025-03-10 15:29:57,283 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,283 - ERROR - Error in episode 2547: name 'args' is not defined +2025-03-10 15:29:57,286 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,286 - ERROR - Error in episode 2548: name 'args' is not defined +2025-03-10 15:29:57,289 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,290 - ERROR - Error in episode 2549: name 'args' is not defined +2025-03-10 15:29:57,292 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,293 - ERROR - Error in episode 2550: name 'args' is not defined +2025-03-10 15:29:57,295 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,296 - ERROR - Error in episode 2551: name 'args' is not defined +2025-03-10 15:29:57,299 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,299 - ERROR - Error in episode 2552: name 'args' is not defined +2025-03-10 15:29:57,302 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,302 - ERROR - Error in episode 2553: name 'args' is not defined +2025-03-10 15:29:57,305 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,305 - ERROR - Error in episode 2554: name 'args' is not defined +2025-03-10 15:29:57,308 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,308 - ERROR - Error in episode 2555: name 'args' is not defined +2025-03-10 15:29:57,311 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,311 - ERROR - Error in episode 2556: name 'args' is not defined +2025-03-10 15:29:57,314 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,314 - ERROR - Error in episode 2557: name 'args' is not defined +2025-03-10 15:29:57,317 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,317 - ERROR - Error in episode 2558: name 'args' is not defined +2025-03-10 15:29:57,320 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,321 - ERROR - Error in episode 2559: name 'args' is not defined +2025-03-10 15:29:57,323 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,323 - ERROR - Error in episode 2560: name 'args' is not defined +2025-03-10 15:29:57,326 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,326 - ERROR - Error in episode 2561: name 'args' is not defined +2025-03-10 15:29:57,328 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,329 - ERROR - Error in episode 2562: name 'args' is not defined +2025-03-10 15:29:57,331 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,333 - ERROR - Error in episode 2563: name 'args' is not defined +2025-03-10 15:29:57,335 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,335 - ERROR - Error in episode 2564: name 'args' is not defined +2025-03-10 15:29:57,339 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,339 - ERROR - Error in episode 2565: name 'args' is not defined +2025-03-10 15:29:57,342 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,343 - ERROR - Error in episode 2566: name 'args' is not defined +2025-03-10 15:29:57,345 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,345 - ERROR - Error in episode 2567: name 'args' is not defined +2025-03-10 15:29:57,348 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,348 - ERROR - Error in episode 2568: name 'args' is not defined +2025-03-10 15:29:57,351 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,351 - ERROR - Error in episode 2569: name 'args' is not defined +2025-03-10 15:29:57,354 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,354 - ERROR - Error in episode 2570: name 'args' is not defined +2025-03-10 15:29:57,356 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,356 - ERROR - Error in episode 2571: name 'args' is not defined +2025-03-10 15:29:57,359 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,360 - ERROR - Error in episode 2572: name 'args' is not defined +2025-03-10 15:29:57,363 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,363 - ERROR - Error in episode 2573: name 'args' is not defined +2025-03-10 15:29:57,366 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,366 - ERROR - Error in episode 2574: name 'args' is not defined +2025-03-10 15:29:57,369 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,369 - ERROR - Error in episode 2575: name 'args' is not defined +2025-03-10 15:29:57,372 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,372 - ERROR - Error in episode 2576: name 'args' is not defined +2025-03-10 15:29:57,375 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,375 - ERROR - Error in episode 2577: name 'args' is not defined +2025-03-10 15:29:57,377 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,378 - ERROR - Error in episode 2578: name 'args' is not defined +2025-03-10 15:29:57,380 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,381 - ERROR - Error in episode 2579: name 'args' is not defined +2025-03-10 15:29:57,384 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,384 - ERROR - Error in episode 2580: name 'args' is not defined +2025-03-10 15:29:57,386 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,387 - ERROR - Error in episode 2581: name 'args' is not defined +2025-03-10 15:29:57,389 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,389 - ERROR - Error in episode 2582: name 'args' is not defined +2025-03-10 15:29:57,392 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,392 - ERROR - Error in episode 2583: name 'args' is not defined +2025-03-10 15:29:57,394 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,395 - ERROR - Error in episode 2584: name 'args' is not defined +2025-03-10 15:29:57,397 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,397 - ERROR - Error in episode 2585: name 'args' is not defined +2025-03-10 15:29:57,400 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,400 - ERROR - Error in episode 2586: name 'args' is not defined +2025-03-10 15:29:57,403 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,403 - ERROR - Error in episode 2587: name 'args' is not defined +2025-03-10 15:29:57,405 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,405 - ERROR - Error in episode 2588: name 'args' is not defined +2025-03-10 15:29:57,408 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,408 - ERROR - Error in episode 2589: name 'args' is not defined +2025-03-10 15:29:57,410 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,411 - ERROR - Error in episode 2590: name 'args' is not defined +2025-03-10 15:29:57,413 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,413 - ERROR - Error in episode 2591: name 'args' is not defined +2025-03-10 15:29:57,416 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,416 - ERROR - Error in episode 2592: name 'args' is not defined +2025-03-10 15:29:57,419 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,419 - ERROR - Error in episode 2593: name 'args' is not defined +2025-03-10 15:29:57,422 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,422 - ERROR - Error in episode 2594: name 'args' is not defined +2025-03-10 15:29:57,426 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,426 - ERROR - Error in episode 2595: name 'args' is not defined +2025-03-10 15:29:57,428 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,429 - ERROR - Error in episode 2596: name 'args' is not defined +2025-03-10 15:29:57,431 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,432 - ERROR - Error in episode 2597: name 'args' is not defined +2025-03-10 15:29:57,434 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,435 - ERROR - Error in episode 2598: name 'args' is not defined +2025-03-10 15:29:57,437 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,438 - ERROR - Error in episode 2599: name 'args' is not defined +2025-03-10 15:29:57,440 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,441 - ERROR - Error in episode 2600: name 'args' is not defined +2025-03-10 15:29:57,443 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,443 - ERROR - Error in episode 2601: name 'args' is not defined +2025-03-10 15:29:57,446 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,446 - ERROR - Error in episode 2602: name 'args' is not defined +2025-03-10 15:29:57,449 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,449 - ERROR - Error in episode 2603: name 'args' is not defined +2025-03-10 15:29:57,451 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,452 - ERROR - Error in episode 2604: name 'args' is not defined +2025-03-10 15:29:57,454 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,454 - ERROR - Error in episode 2605: name 'args' is not defined +2025-03-10 15:29:57,457 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,457 - ERROR - Error in episode 2606: name 'args' is not defined +2025-03-10 15:29:57,460 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,460 - ERROR - Error in episode 2607: name 'args' is not defined +2025-03-10 15:29:57,464 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,464 - ERROR - Error in episode 2608: name 'args' is not defined +2025-03-10 15:29:57,469 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,469 - ERROR - Error in episode 2609: name 'args' is not defined +2025-03-10 15:29:57,471 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,472 - ERROR - Error in episode 2610: name 'args' is not defined +2025-03-10 15:29:57,474 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,475 - ERROR - Error in episode 2611: name 'args' is not defined +2025-03-10 15:29:57,477 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,478 - ERROR - Error in episode 2612: name 'args' is not defined +2025-03-10 15:29:57,481 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,481 - ERROR - Error in episode 2613: name 'args' is not defined +2025-03-10 15:29:57,484 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,484 - ERROR - Error in episode 2614: name 'args' is not defined +2025-03-10 15:29:57,488 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,488 - ERROR - Error in episode 2615: name 'args' is not defined +2025-03-10 15:29:57,492 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,493 - ERROR - Error in episode 2616: name 'args' is not defined +2025-03-10 15:29:57,496 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,497 - ERROR - Error in episode 2617: name 'args' is not defined +2025-03-10 15:29:57,500 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,500 - ERROR - Error in episode 2618: name 'args' is not defined +2025-03-10 15:29:57,503 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,503 - ERROR - Error in episode 2619: name 'args' is not defined +2025-03-10 15:29:57,508 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,509 - ERROR - Error in episode 2620: name 'args' is not defined +2025-03-10 15:29:57,511 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,512 - ERROR - Error in episode 2621: name 'args' is not defined +2025-03-10 15:29:57,515 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,515 - ERROR - Error in episode 2622: name 'args' is not defined +2025-03-10 15:29:57,518 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,519 - ERROR - Error in episode 2623: name 'args' is not defined +2025-03-10 15:29:57,521 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,522 - ERROR - Error in episode 2624: name 'args' is not defined +2025-03-10 15:29:57,525 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,526 - ERROR - Error in episode 2625: name 'args' is not defined +2025-03-10 15:29:57,529 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,530 - ERROR - Error in episode 2626: name 'args' is not defined +2025-03-10 15:29:57,532 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,533 - ERROR - Error in episode 2627: name 'args' is not defined +2025-03-10 15:29:57,536 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,536 - ERROR - Error in episode 2628: name 'args' is not defined +2025-03-10 15:29:57,540 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,541 - ERROR - Error in episode 2629: name 'args' is not defined +2025-03-10 15:29:57,544 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,545 - ERROR - Error in episode 2630: name 'args' is not defined +2025-03-10 15:29:57,548 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,548 - ERROR - Error in episode 2631: name 'args' is not defined +2025-03-10 15:29:57,552 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,552 - ERROR - Error in episode 2632: name 'args' is not defined +2025-03-10 15:29:57,555 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,556 - ERROR - Error in episode 2633: name 'args' is not defined +2025-03-10 15:29:57,559 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,560 - ERROR - Error in episode 2634: name 'args' is not defined +2025-03-10 15:29:57,563 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,563 - ERROR - Error in episode 2635: name 'args' is not defined +2025-03-10 15:29:57,566 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,567 - ERROR - Error in episode 2636: name 'args' is not defined +2025-03-10 15:29:57,572 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,573 - ERROR - Error in episode 2637: name 'args' is not defined +2025-03-10 15:29:57,576 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,576 - ERROR - Error in episode 2638: name 'args' is not defined +2025-03-10 15:29:57,580 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,581 - ERROR - Error in episode 2639: name 'args' is not defined +2025-03-10 15:29:57,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,584 - ERROR - Error in episode 2640: name 'args' is not defined +2025-03-10 15:29:57,587 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,588 - ERROR - Error in episode 2641: name 'args' is not defined +2025-03-10 15:29:57,591 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,591 - ERROR - Error in episode 2642: name 'args' is not defined +2025-03-10 15:29:57,594 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,595 - ERROR - Error in episode 2643: name 'args' is not defined +2025-03-10 15:29:57,599 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,600 - ERROR - Error in episode 2644: name 'args' is not defined +2025-03-10 15:29:57,602 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,603 - ERROR - Error in episode 2645: name 'args' is not defined +2025-03-10 15:29:57,606 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,606 - ERROR - Error in episode 2646: name 'args' is not defined +2025-03-10 15:29:57,609 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,609 - ERROR - Error in episode 2647: name 'args' is not defined +2025-03-10 15:29:57,613 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,613 - ERROR - Error in episode 2648: name 'args' is not defined +2025-03-10 15:29:57,617 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,617 - ERROR - Error in episode 2649: name 'args' is not defined +2025-03-10 15:29:57,621 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,621 - ERROR - Error in episode 2650: name 'args' is not defined +2025-03-10 15:29:57,625 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,625 - ERROR - Error in episode 2651: name 'args' is not defined +2025-03-10 15:29:57,628 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,629 - ERROR - Error in episode 2652: name 'args' is not defined +2025-03-10 15:29:57,633 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,633 - ERROR - Error in episode 2653: name 'args' is not defined +2025-03-10 15:29:57,637 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,637 - ERROR - Error in episode 2654: name 'args' is not defined +2025-03-10 15:29:57,641 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,641 - ERROR - Error in episode 2655: name 'args' is not defined +2025-03-10 15:29:57,644 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,645 - ERROR - Error in episode 2656: name 'args' is not defined +2025-03-10 15:29:57,648 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,649 - ERROR - Error in episode 2657: name 'args' is not defined +2025-03-10 15:29:57,652 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,652 - ERROR - Error in episode 2658: name 'args' is not defined +2025-03-10 15:29:57,655 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,655 - ERROR - Error in episode 2659: name 'args' is not defined +2025-03-10 15:29:57,659 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,660 - ERROR - Error in episode 2660: name 'args' is not defined +2025-03-10 15:29:57,663 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,664 - ERROR - Error in episode 2661: name 'args' is not defined +2025-03-10 15:29:57,667 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,668 - ERROR - Error in episode 2662: name 'args' is not defined +2025-03-10 15:29:57,671 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,671 - ERROR - Error in episode 2663: name 'args' is not defined +2025-03-10 15:29:57,675 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,675 - ERROR - Error in episode 2664: name 'args' is not defined +2025-03-10 15:29:57,679 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,680 - ERROR - Error in episode 2665: name 'args' is not defined +2025-03-10 15:29:57,683 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,683 - ERROR - Error in episode 2666: name 'args' is not defined +2025-03-10 15:29:57,687 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,687 - ERROR - Error in episode 2667: name 'args' is not defined +2025-03-10 15:29:57,690 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,691 - ERROR - Error in episode 2668: name 'args' is not defined +2025-03-10 15:29:57,694 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,694 - ERROR - Error in episode 2669: name 'args' is not defined +2025-03-10 15:29:57,697 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,698 - ERROR - Error in episode 2670: name 'args' is not defined +2025-03-10 15:29:57,702 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,703 - ERROR - Error in episode 2671: name 'args' is not defined +2025-03-10 15:29:57,706 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,706 - ERROR - Error in episode 2672: name 'args' is not defined +2025-03-10 15:29:57,710 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,710 - ERROR - Error in episode 2673: name 'args' is not defined +2025-03-10 15:29:57,713 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,714 - ERROR - Error in episode 2674: name 'args' is not defined +2025-03-10 15:29:57,718 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,719 - ERROR - Error in episode 2675: name 'args' is not defined +2025-03-10 15:29:57,722 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,722 - ERROR - Error in episode 2676: name 'args' is not defined +2025-03-10 15:29:57,726 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,727 - ERROR - Error in episode 2677: name 'args' is not defined +2025-03-10 15:29:57,729 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,731 - ERROR - Error in episode 2678: name 'args' is not defined +2025-03-10 15:29:57,734 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,735 - ERROR - Error in episode 2679: name 'args' is not defined +2025-03-10 15:29:57,737 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,738 - ERROR - Error in episode 2680: name 'args' is not defined +2025-03-10 15:29:57,740 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,741 - ERROR - Error in episode 2681: name 'args' is not defined +2025-03-10 15:29:57,744 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,745 - ERROR - Error in episode 2682: name 'args' is not defined +2025-03-10 15:29:57,748 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,748 - ERROR - Error in episode 2683: name 'args' is not defined +2025-03-10 15:29:57,751 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,751 - ERROR - Error in episode 2684: name 'args' is not defined +2025-03-10 15:29:57,754 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,755 - ERROR - Error in episode 2685: name 'args' is not defined +2025-03-10 15:29:57,758 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,759 - ERROR - Error in episode 2686: name 'args' is not defined +2025-03-10 15:29:57,762 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,762 - ERROR - Error in episode 2687: name 'args' is not defined +2025-03-10 15:29:57,765 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,765 - ERROR - Error in episode 2688: name 'args' is not defined +2025-03-10 15:29:57,769 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,769 - ERROR - Error in episode 2689: name 'args' is not defined +2025-03-10 15:29:57,773 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,773 - ERROR - Error in episode 2690: name 'args' is not defined +2025-03-10 15:29:57,777 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,777 - ERROR - Error in episode 2691: name 'args' is not defined +2025-03-10 15:29:57,781 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,781 - ERROR - Error in episode 2692: name 'args' is not defined +2025-03-10 15:29:57,785 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,785 - ERROR - Error in episode 2693: name 'args' is not defined +2025-03-10 15:29:57,789 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,789 - ERROR - Error in episode 2694: name 'args' is not defined +2025-03-10 15:29:57,792 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,792 - ERROR - Error in episode 2695: name 'args' is not defined +2025-03-10 15:29:57,795 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,796 - ERROR - Error in episode 2696: name 'args' is not defined +2025-03-10 15:29:57,799 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,799 - ERROR - Error in episode 2697: name 'args' is not defined +2025-03-10 15:29:57,802 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,802 - ERROR - Error in episode 2698: name 'args' is not defined +2025-03-10 15:29:57,805 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,805 - ERROR - Error in episode 2699: name 'args' is not defined +2025-03-10 15:29:57,808 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,808 - ERROR - Error in episode 2700: name 'args' is not defined +2025-03-10 15:29:57,811 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,811 - ERROR - Error in episode 2701: name 'args' is not defined +2025-03-10 15:29:57,815 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,815 - ERROR - Error in episode 2702: name 'args' is not defined +2025-03-10 15:29:57,818 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,819 - ERROR - Error in episode 2703: name 'args' is not defined +2025-03-10 15:29:57,821 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,821 - ERROR - Error in episode 2704: name 'args' is not defined +2025-03-10 15:29:57,826 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,826 - ERROR - Error in episode 2705: name 'args' is not defined +2025-03-10 15:29:57,829 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,830 - ERROR - Error in episode 2706: name 'args' is not defined +2025-03-10 15:29:57,834 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,834 - ERROR - Error in episode 2707: name 'args' is not defined +2025-03-10 15:29:57,838 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,838 - ERROR - Error in episode 2708: name 'args' is not defined +2025-03-10 15:29:57,841 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,841 - ERROR - Error in episode 2709: name 'args' is not defined +2025-03-10 15:29:57,844 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,845 - ERROR - Error in episode 2710: name 'args' is not defined +2025-03-10 15:29:57,848 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,848 - ERROR - Error in episode 2711: name 'args' is not defined +2025-03-10 15:29:57,852 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,853 - ERROR - Error in episode 2712: name 'args' is not defined +2025-03-10 15:29:57,856 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,856 - ERROR - Error in episode 2713: name 'args' is not defined +2025-03-10 15:29:57,860 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,861 - ERROR - Error in episode 2714: name 'args' is not defined +2025-03-10 15:29:57,864 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,865 - ERROR - Error in episode 2715: name 'args' is not defined +2025-03-10 15:29:57,868 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,869 - ERROR - Error in episode 2716: name 'args' is not defined +2025-03-10 15:29:57,872 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,872 - ERROR - Error in episode 2717: name 'args' is not defined +2025-03-10 15:29:57,876 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,877 - ERROR - Error in episode 2718: name 'args' is not defined +2025-03-10 15:29:57,879 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,879 - ERROR - Error in episode 2719: name 'args' is not defined +2025-03-10 15:29:57,884 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,884 - ERROR - Error in episode 2720: name 'args' is not defined +2025-03-10 15:29:57,887 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,887 - ERROR - Error in episode 2721: name 'args' is not defined +2025-03-10 15:29:57,891 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,891 - ERROR - Error in episode 2722: name 'args' is not defined +2025-03-10 15:29:57,893 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,894 - ERROR - Error in episode 2723: name 'args' is not defined +2025-03-10 15:29:57,896 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,897 - ERROR - Error in episode 2724: name 'args' is not defined +2025-03-10 15:29:57,899 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,899 - ERROR - Error in episode 2725: name 'args' is not defined +2025-03-10 15:29:57,901 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,902 - ERROR - Error in episode 2726: name 'args' is not defined +2025-03-10 15:29:57,904 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,905 - ERROR - Error in episode 2727: name 'args' is not defined +2025-03-10 15:29:57,907 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,907 - ERROR - Error in episode 2728: name 'args' is not defined +2025-03-10 15:29:57,910 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,910 - ERROR - Error in episode 2729: name 'args' is not defined +2025-03-10 15:29:57,913 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,914 - ERROR - Error in episode 2730: name 'args' is not defined +2025-03-10 15:29:57,917 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,917 - ERROR - Error in episode 2731: name 'args' is not defined +2025-03-10 15:29:57,919 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,921 - ERROR - Error in episode 2732: name 'args' is not defined +2025-03-10 15:29:57,923 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,923 - ERROR - Error in episode 2733: name 'args' is not defined +2025-03-10 15:29:57,926 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,926 - ERROR - Error in episode 2734: name 'args' is not defined +2025-03-10 15:29:57,929 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,929 - ERROR - Error in episode 2735: name 'args' is not defined +2025-03-10 15:29:57,933 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,933 - ERROR - Error in episode 2736: name 'args' is not defined +2025-03-10 15:29:57,936 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,936 - ERROR - Error in episode 2737: name 'args' is not defined +2025-03-10 15:29:57,939 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,939 - ERROR - Error in episode 2738: name 'args' is not defined +2025-03-10 15:29:57,941 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,942 - ERROR - Error in episode 2739: name 'args' is not defined +2025-03-10 15:29:57,944 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,944 - ERROR - Error in episode 2740: name 'args' is not defined +2025-03-10 15:29:57,947 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,948 - ERROR - Error in episode 2741: name 'args' is not defined +2025-03-10 15:29:57,950 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,951 - ERROR - Error in episode 2742: name 'args' is not defined +2025-03-10 15:29:57,953 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,953 - ERROR - Error in episode 2743: name 'args' is not defined +2025-03-10 15:29:57,956 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,956 - ERROR - Error in episode 2744: name 'args' is not defined +2025-03-10 15:29:57,959 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,959 - ERROR - Error in episode 2745: name 'args' is not defined +2025-03-10 15:29:57,962 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,962 - ERROR - Error in episode 2746: name 'args' is not defined +2025-03-10 15:29:57,965 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,965 - ERROR - Error in episode 2747: name 'args' is not defined +2025-03-10 15:29:57,968 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,968 - ERROR - Error in episode 2748: name 'args' is not defined +2025-03-10 15:29:57,971 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,971 - ERROR - Error in episode 2749: name 'args' is not defined +2025-03-10 15:29:57,974 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,974 - ERROR - Error in episode 2750: name 'args' is not defined +2025-03-10 15:29:57,977 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,977 - ERROR - Error in episode 2751: name 'args' is not defined +2025-03-10 15:29:57,980 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,980 - ERROR - Error in episode 2752: name 'args' is not defined +2025-03-10 15:29:57,982 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,983 - ERROR - Error in episode 2753: name 'args' is not defined +2025-03-10 15:29:57,985 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,985 - ERROR - Error in episode 2754: name 'args' is not defined +2025-03-10 15:29:57,988 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,988 - ERROR - Error in episode 2755: name 'args' is not defined +2025-03-10 15:29:57,991 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,991 - ERROR - Error in episode 2756: name 'args' is not defined +2025-03-10 15:29:57,994 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,995 - ERROR - Error in episode 2757: name 'args' is not defined +2025-03-10 15:29:57,997 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:57,997 - ERROR - Error in episode 2758: name 'args' is not defined +2025-03-10 15:29:58,000 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,000 - ERROR - Error in episode 2759: name 'args' is not defined +2025-03-10 15:29:58,003 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,003 - ERROR - Error in episode 2760: name 'args' is not defined +2025-03-10 15:29:58,005 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,006 - ERROR - Error in episode 2761: name 'args' is not defined +2025-03-10 15:29:58,008 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,008 - ERROR - Error in episode 2762: name 'args' is not defined +2025-03-10 15:29:58,011 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,011 - ERROR - Error in episode 2763: name 'args' is not defined +2025-03-10 15:29:58,014 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,014 - ERROR - Error in episode 2764: name 'args' is not defined +2025-03-10 15:29:58,017 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,017 - ERROR - Error in episode 2765: name 'args' is not defined +2025-03-10 15:29:58,019 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,020 - ERROR - Error in episode 2766: name 'args' is not defined +2025-03-10 15:29:58,021 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,022 - ERROR - Error in episode 2767: name 'args' is not defined +2025-03-10 15:29:58,024 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,024 - ERROR - Error in episode 2768: name 'args' is not defined +2025-03-10 15:29:58,027 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,028 - ERROR - Error in episode 2769: name 'args' is not defined +2025-03-10 15:29:58,030 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,030 - ERROR - Error in episode 2770: name 'args' is not defined +2025-03-10 15:29:58,033 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,034 - ERROR - Error in episode 2771: name 'args' is not defined +2025-03-10 15:29:58,036 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,037 - ERROR - Error in episode 2772: name 'args' is not defined +2025-03-10 15:29:58,039 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,040 - ERROR - Error in episode 2773: name 'args' is not defined +2025-03-10 15:29:58,043 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,043 - ERROR - Error in episode 2774: name 'args' is not defined +2025-03-10 15:29:58,045 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,046 - ERROR - Error in episode 2775: name 'args' is not defined +2025-03-10 15:29:58,049 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,049 - ERROR - Error in episode 2776: name 'args' is not defined +2025-03-10 15:29:58,052 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,052 - ERROR - Error in episode 2777: name 'args' is not defined +2025-03-10 15:29:58,055 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,055 - ERROR - Error in episode 2778: name 'args' is not defined +2025-03-10 15:29:58,058 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,058 - ERROR - Error in episode 2779: name 'args' is not defined +2025-03-10 15:29:58,060 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,060 - ERROR - Error in episode 2780: name 'args' is not defined +2025-03-10 15:29:58,064 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,064 - ERROR - Error in episode 2781: name 'args' is not defined +2025-03-10 15:29:58,066 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,067 - ERROR - Error in episode 2782: name 'args' is not defined +2025-03-10 15:29:58,069 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,069 - ERROR - Error in episode 2783: name 'args' is not defined +2025-03-10 15:29:58,072 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,072 - ERROR - Error in episode 2784: name 'args' is not defined +2025-03-10 15:29:58,074 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,074 - ERROR - Error in episode 2785: name 'args' is not defined +2025-03-10 15:29:58,077 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,077 - ERROR - Error in episode 2786: name 'args' is not defined +2025-03-10 15:29:58,080 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,080 - ERROR - Error in episode 2787: name 'args' is not defined +2025-03-10 15:29:58,082 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,083 - ERROR - Error in episode 2788: name 'args' is not defined +2025-03-10 15:29:58,086 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,087 - ERROR - Error in episode 2789: name 'args' is not defined +2025-03-10 15:29:58,089 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,090 - ERROR - Error in episode 2790: name 'args' is not defined +2025-03-10 15:29:58,092 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,093 - ERROR - Error in episode 2791: name 'args' is not defined +2025-03-10 15:29:58,096 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,096 - ERROR - Error in episode 2792: name 'args' is not defined +2025-03-10 15:29:58,099 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,099 - ERROR - Error in episode 2793: name 'args' is not defined +2025-03-10 15:29:58,102 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,102 - ERROR - Error in episode 2794: name 'args' is not defined +2025-03-10 15:29:58,105 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,105 - ERROR - Error in episode 2795: name 'args' is not defined +2025-03-10 15:29:58,107 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,108 - ERROR - Error in episode 2796: name 'args' is not defined +2025-03-10 15:29:58,111 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,111 - ERROR - Error in episode 2797: name 'args' is not defined +2025-03-10 15:29:58,114 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,114 - ERROR - Error in episode 2798: name 'args' is not defined +2025-03-10 15:29:58,116 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,117 - ERROR - Error in episode 2799: name 'args' is not defined +2025-03-10 15:29:58,119 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,119 - ERROR - Error in episode 2800: name 'args' is not defined +2025-03-10 15:29:58,123 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,123 - ERROR - Error in episode 2801: name 'args' is not defined +2025-03-10 15:29:58,125 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,126 - ERROR - Error in episode 2802: name 'args' is not defined +2025-03-10 15:29:58,129 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,129 - ERROR - Error in episode 2803: name 'args' is not defined +2025-03-10 15:29:58,133 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,133 - ERROR - Error in episode 2804: name 'args' is not defined +2025-03-10 15:29:58,136 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,136 - ERROR - Error in episode 2805: name 'args' is not defined +2025-03-10 15:29:58,139 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,139 - ERROR - Error in episode 2806: name 'args' is not defined +2025-03-10 15:29:58,142 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,142 - ERROR - Error in episode 2807: name 'args' is not defined +2025-03-10 15:29:58,145 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,145 - ERROR - Error in episode 2808: name 'args' is not defined +2025-03-10 15:29:58,148 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,148 - ERROR - Error in episode 2809: name 'args' is not defined +2025-03-10 15:29:58,151 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,151 - ERROR - Error in episode 2810: name 'args' is not defined +2025-03-10 15:29:58,154 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,154 - ERROR - Error in episode 2811: name 'args' is not defined +2025-03-10 15:29:58,157 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,157 - ERROR - Error in episode 2812: name 'args' is not defined +2025-03-10 15:29:58,159 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,160 - ERROR - Error in episode 2813: name 'args' is not defined +2025-03-10 15:29:58,163 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,163 - ERROR - Error in episode 2814: name 'args' is not defined +2025-03-10 15:29:58,166 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,166 - ERROR - Error in episode 2815: name 'args' is not defined +2025-03-10 15:29:58,169 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,169 - ERROR - Error in episode 2816: name 'args' is not defined +2025-03-10 15:29:58,172 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,172 - ERROR - Error in episode 2817: name 'args' is not defined +2025-03-10 15:29:58,175 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,175 - ERROR - Error in episode 2818: name 'args' is not defined +2025-03-10 15:29:58,177 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,177 - ERROR - Error in episode 2819: name 'args' is not defined +2025-03-10 15:29:58,181 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,182 - ERROR - Error in episode 2820: name 'args' is not defined +2025-03-10 15:29:58,184 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,185 - ERROR - Error in episode 2821: name 'args' is not defined +2025-03-10 15:29:58,187 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,187 - ERROR - Error in episode 2822: name 'args' is not defined +2025-03-10 15:29:58,190 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,190 - ERROR - Error in episode 2823: name 'args' is not defined +2025-03-10 15:29:58,193 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,193 - ERROR - Error in episode 2824: name 'args' is not defined +2025-03-10 15:29:58,195 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,196 - ERROR - Error in episode 2825: name 'args' is not defined +2025-03-10 15:29:58,198 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,199 - ERROR - Error in episode 2826: name 'args' is not defined +2025-03-10 15:29:58,202 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,202 - ERROR - Error in episode 2827: name 'args' is not defined +2025-03-10 15:29:58,205 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,205 - ERROR - Error in episode 2828: name 'args' is not defined +2025-03-10 15:29:58,208 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,208 - ERROR - Error in episode 2829: name 'args' is not defined +2025-03-10 15:29:58,211 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,211 - ERROR - Error in episode 2830: name 'args' is not defined +2025-03-10 15:29:58,214 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,214 - ERROR - Error in episode 2831: name 'args' is not defined +2025-03-10 15:29:58,216 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,217 - ERROR - Error in episode 2832: name 'args' is not defined +2025-03-10 15:29:58,220 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,220 - ERROR - Error in episode 2833: name 'args' is not defined +2025-03-10 15:29:58,222 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,223 - ERROR - Error in episode 2834: name 'args' is not defined +2025-03-10 15:29:58,226 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,227 - ERROR - Error in episode 2835: name 'args' is not defined +2025-03-10 15:29:58,229 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,229 - ERROR - Error in episode 2836: name 'args' is not defined +2025-03-10 15:29:58,232 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,232 - ERROR - Error in episode 2837: name 'args' is not defined +2025-03-10 15:29:58,235 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,235 - ERROR - Error in episode 2838: name 'args' is not defined +2025-03-10 15:29:58,237 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,238 - ERROR - Error in episode 2839: name 'args' is not defined +2025-03-10 15:29:58,240 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,240 - ERROR - Error in episode 2840: name 'args' is not defined +2025-03-10 15:29:58,243 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,243 - ERROR - Error in episode 2841: name 'args' is not defined +2025-03-10 15:29:58,246 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,246 - ERROR - Error in episode 2842: name 'args' is not defined +2025-03-10 15:29:58,249 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,249 - ERROR - Error in episode 2843: name 'args' is not defined +2025-03-10 15:29:58,251 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,251 - ERROR - Error in episode 2844: name 'args' is not defined +2025-03-10 15:29:58,254 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,254 - ERROR - Error in episode 2845: name 'args' is not defined +2025-03-10 15:29:58,256 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,258 - ERROR - Error in episode 2846: name 'args' is not defined +2025-03-10 15:29:58,260 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,261 - ERROR - Error in episode 2847: name 'args' is not defined +2025-03-10 15:29:58,263 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,263 - ERROR - Error in episode 2848: name 'args' is not defined +2025-03-10 15:29:58,266 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,266 - ERROR - Error in episode 2849: name 'args' is not defined +2025-03-10 15:29:58,269 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,269 - ERROR - Error in episode 2850: name 'args' is not defined +2025-03-10 15:29:58,271 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,272 - ERROR - Error in episode 2851: name 'args' is not defined +2025-03-10 15:29:58,274 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,275 - ERROR - Error in episode 2852: name 'args' is not defined +2025-03-10 15:29:58,278 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,278 - ERROR - Error in episode 2853: name 'args' is not defined +2025-03-10 15:29:58,281 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,281 - ERROR - Error in episode 2854: name 'args' is not defined +2025-03-10 15:29:58,283 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,283 - ERROR - Error in episode 2855: name 'args' is not defined +2025-03-10 15:29:58,286 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,286 - ERROR - Error in episode 2856: name 'args' is not defined +2025-03-10 15:29:58,289 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,289 - ERROR - Error in episode 2857: name 'args' is not defined +2025-03-10 15:29:58,292 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,292 - ERROR - Error in episode 2858: name 'args' is not defined +2025-03-10 15:29:58,295 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,295 - ERROR - Error in episode 2859: name 'args' is not defined +2025-03-10 15:29:58,298 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,299 - ERROR - Error in episode 2860: name 'args' is not defined +2025-03-10 15:29:58,301 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,302 - ERROR - Error in episode 2861: name 'args' is not defined +2025-03-10 15:29:58,305 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,305 - ERROR - Error in episode 2862: name 'args' is not defined +2025-03-10 15:29:58,308 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,308 - ERROR - Error in episode 2863: name 'args' is not defined +2025-03-10 15:29:58,311 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,311 - ERROR - Error in episode 2864: name 'args' is not defined +2025-03-10 15:29:58,315 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,315 - ERROR - Error in episode 2865: name 'args' is not defined +2025-03-10 15:29:58,318 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,318 - ERROR - Error in episode 2866: name 'args' is not defined +2025-03-10 15:29:58,321 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,321 - ERROR - Error in episode 2867: name 'args' is not defined +2025-03-10 15:29:58,324 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,324 - ERROR - Error in episode 2868: name 'args' is not defined +2025-03-10 15:29:58,326 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,327 - ERROR - Error in episode 2869: name 'args' is not defined +2025-03-10 15:29:58,330 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,330 - ERROR - Error in episode 2870: name 'args' is not defined +2025-03-10 15:29:58,332 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,334 - ERROR - Error in episode 2871: name 'args' is not defined +2025-03-10 15:29:58,336 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,337 - ERROR - Error in episode 2872: name 'args' is not defined +2025-03-10 15:29:58,340 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,340 - ERROR - Error in episode 2873: name 'args' is not defined +2025-03-10 15:29:58,343 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,343 - ERROR - Error in episode 2874: name 'args' is not defined +2025-03-10 15:29:58,345 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,346 - ERROR - Error in episode 2875: name 'args' is not defined +2025-03-10 15:29:58,348 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,348 - ERROR - Error in episode 2876: name 'args' is not defined +2025-03-10 15:29:58,351 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,351 - ERROR - Error in episode 2877: name 'args' is not defined +2025-03-10 15:29:58,353 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,353 - ERROR - Error in episode 2878: name 'args' is not defined +2025-03-10 15:29:58,356 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,357 - ERROR - Error in episode 2879: name 'args' is not defined +2025-03-10 15:29:58,360 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,360 - ERROR - Error in episode 2880: name 'args' is not defined +2025-03-10 15:29:58,362 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,362 - ERROR - Error in episode 2881: name 'args' is not defined +2025-03-10 15:29:58,364 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,365 - ERROR - Error in episode 2882: name 'args' is not defined +2025-03-10 15:29:58,368 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,369 - ERROR - Error in episode 2883: name 'args' is not defined +2025-03-10 15:29:58,371 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,372 - ERROR - Error in episode 2884: name 'args' is not defined +2025-03-10 15:29:58,374 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,374 - ERROR - Error in episode 2885: name 'args' is not defined +2025-03-10 15:29:58,376 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,376 - ERROR - Error in episode 2886: name 'args' is not defined +2025-03-10 15:29:58,379 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,379 - ERROR - Error in episode 2887: name 'args' is not defined +2025-03-10 15:29:58,382 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,382 - ERROR - Error in episode 2888: name 'args' is not defined +2025-03-10 15:29:58,385 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,385 - ERROR - Error in episode 2889: name 'args' is not defined +2025-03-10 15:29:58,387 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,388 - ERROR - Error in episode 2890: name 'args' is not defined +2025-03-10 15:29:58,390 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,390 - ERROR - Error in episode 2891: name 'args' is not defined +2025-03-10 15:29:58,393 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,394 - ERROR - Error in episode 2892: name 'args' is not defined +2025-03-10 15:29:58,397 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,397 - ERROR - Error in episode 2893: name 'args' is not defined +2025-03-10 15:29:58,401 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,401 - ERROR - Error in episode 2894: name 'args' is not defined +2025-03-10 15:29:58,405 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,405 - ERROR - Error in episode 2895: name 'args' is not defined +2025-03-10 15:29:58,407 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,408 - ERROR - Error in episode 2896: name 'args' is not defined +2025-03-10 15:29:58,410 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,410 - ERROR - Error in episode 2897: name 'args' is not defined +2025-03-10 15:29:58,413 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,413 - ERROR - Error in episode 2898: name 'args' is not defined +2025-03-10 15:29:58,416 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,416 - ERROR - Error in episode 2899: name 'args' is not defined +2025-03-10 15:29:58,418 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,419 - ERROR - Error in episode 2900: name 'args' is not defined +2025-03-10 15:29:58,421 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,422 - ERROR - Error in episode 2901: name 'args' is not defined +2025-03-10 15:29:58,424 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,424 - ERROR - Error in episode 2902: name 'args' is not defined +2025-03-10 15:29:58,427 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,428 - ERROR - Error in episode 2903: name 'args' is not defined +2025-03-10 15:29:58,430 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,430 - ERROR - Error in episode 2904: name 'args' is not defined +2025-03-10 15:29:58,433 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,433 - ERROR - Error in episode 2905: name 'args' is not defined +2025-03-10 15:29:58,436 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,437 - ERROR - Error in episode 2906: name 'args' is not defined +2025-03-10 15:29:58,439 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,440 - ERROR - Error in episode 2907: name 'args' is not defined +2025-03-10 15:29:58,442 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,443 - ERROR - Error in episode 2908: name 'args' is not defined +2025-03-10 15:29:58,445 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,446 - ERROR - Error in episode 2909: name 'args' is not defined +2025-03-10 15:29:58,448 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,448 - ERROR - Error in episode 2910: name 'args' is not defined +2025-03-10 15:29:58,451 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,451 - ERROR - Error in episode 2911: name 'args' is not defined +2025-03-10 15:29:58,454 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,454 - ERROR - Error in episode 2912: name 'args' is not defined +2025-03-10 15:29:58,457 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,457 - ERROR - Error in episode 2913: name 'args' is not defined +2025-03-10 15:29:58,460 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,460 - ERROR - Error in episode 2914: name 'args' is not defined +2025-03-10 15:29:58,463 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,463 - ERROR - Error in episode 2915: name 'args' is not defined +2025-03-10 15:29:58,466 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,466 - ERROR - Error in episode 2916: name 'args' is not defined +2025-03-10 15:29:58,469 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,469 - ERROR - Error in episode 2917: name 'args' is not defined +2025-03-10 15:29:58,471 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,472 - ERROR - Error in episode 2918: name 'args' is not defined +2025-03-10 15:29:58,474 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,474 - ERROR - Error in episode 2919: name 'args' is not defined +2025-03-10 15:29:58,478 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,478 - ERROR - Error in episode 2920: name 'args' is not defined +2025-03-10 15:29:58,481 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,481 - ERROR - Error in episode 2921: name 'args' is not defined +2025-03-10 15:29:58,484 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,484 - ERROR - Error in episode 2922: name 'args' is not defined +2025-03-10 15:29:58,486 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,487 - ERROR - Error in episode 2923: name 'args' is not defined +2025-03-10 15:29:58,489 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,489 - ERROR - Error in episode 2924: name 'args' is not defined +2025-03-10 15:29:58,492 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,493 - ERROR - Error in episode 2925: name 'args' is not defined +2025-03-10 15:29:58,496 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,496 - ERROR - Error in episode 2926: name 'args' is not defined +2025-03-10 15:29:58,499 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,499 - ERROR - Error in episode 2927: name 'args' is not defined +2025-03-10 15:29:58,502 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,502 - ERROR - Error in episode 2928: name 'args' is not defined +2025-03-10 15:29:58,505 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,505 - ERROR - Error in episode 2929: name 'args' is not defined +2025-03-10 15:29:58,508 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,509 - ERROR - Error in episode 2930: name 'args' is not defined +2025-03-10 15:29:58,512 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,512 - ERROR - Error in episode 2931: name 'args' is not defined +2025-03-10 15:29:58,514 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,515 - ERROR - Error in episode 2932: name 'args' is not defined +2025-03-10 15:29:58,518 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,518 - ERROR - Error in episode 2933: name 'args' is not defined +2025-03-10 15:29:58,520 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,521 - ERROR - Error in episode 2934: name 'args' is not defined +2025-03-10 15:29:58,523 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,524 - ERROR - Error in episode 2935: name 'args' is not defined +2025-03-10 15:29:58,527 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,527 - ERROR - Error in episode 2936: name 'args' is not defined +2025-03-10 15:29:58,531 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,531 - ERROR - Error in episode 2937: name 'args' is not defined +2025-03-10 15:29:58,534 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,534 - ERROR - Error in episode 2938: name 'args' is not defined +2025-03-10 15:29:58,537 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,537 - ERROR - Error in episode 2939: name 'args' is not defined +2025-03-10 15:29:58,539 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,540 - ERROR - Error in episode 2940: name 'args' is not defined +2025-03-10 15:29:58,542 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,542 - ERROR - Error in episode 2941: name 'args' is not defined +2025-03-10 15:29:58,545 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,545 - ERROR - Error in episode 2942: name 'args' is not defined +2025-03-10 15:29:58,547 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,548 - ERROR - Error in episode 2943: name 'args' is not defined +2025-03-10 15:29:58,551 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,551 - ERROR - Error in episode 2944: name 'args' is not defined +2025-03-10 15:29:58,554 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,554 - ERROR - Error in episode 2945: name 'args' is not defined +2025-03-10 15:29:58,556 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,556 - ERROR - Error in episode 2946: name 'args' is not defined +2025-03-10 15:29:58,559 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,560 - ERROR - Error in episode 2947: name 'args' is not defined +2025-03-10 15:29:58,562 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,562 - ERROR - Error in episode 2948: name 'args' is not defined +2025-03-10 15:29:58,565 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,565 - ERROR - Error in episode 2949: name 'args' is not defined +2025-03-10 15:29:58,568 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,568 - ERROR - Error in episode 2950: name 'args' is not defined +2025-03-10 15:29:58,571 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,571 - ERROR - Error in episode 2951: name 'args' is not defined +2025-03-10 15:29:58,574 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,574 - ERROR - Error in episode 2952: name 'args' is not defined +2025-03-10 15:29:58,578 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,578 - ERROR - Error in episode 2953: name 'args' is not defined +2025-03-10 15:29:58,581 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,581 - ERROR - Error in episode 2954: name 'args' is not defined +2025-03-10 15:29:58,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,584 - ERROR - Error in episode 2955: name 'args' is not defined +2025-03-10 15:29:58,587 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,588 - ERROR - Error in episode 2956: name 'args' is not defined +2025-03-10 15:29:58,590 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,591 - ERROR - Error in episode 2957: name 'args' is not defined +2025-03-10 15:29:58,593 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,593 - ERROR - Error in episode 2958: name 'args' is not defined +2025-03-10 15:29:58,597 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,597 - ERROR - Error in episode 2959: name 'args' is not defined +2025-03-10 15:29:58,599 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,600 - ERROR - Error in episode 2960: name 'args' is not defined +2025-03-10 15:29:58,603 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,603 - ERROR - Error in episode 2961: name 'args' is not defined +2025-03-10 15:29:58,606 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,606 - ERROR - Error in episode 2962: name 'args' is not defined +2025-03-10 15:29:58,608 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,609 - ERROR - Error in episode 2963: name 'args' is not defined +2025-03-10 15:29:58,611 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,612 - ERROR - Error in episode 2964: name 'args' is not defined +2025-03-10 15:29:58,614 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,614 - ERROR - Error in episode 2965: name 'args' is not defined +2025-03-10 15:29:58,617 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,617 - ERROR - Error in episode 2966: name 'args' is not defined +2025-03-10 15:29:58,620 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,620 - ERROR - Error in episode 2967: name 'args' is not defined +2025-03-10 15:29:58,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,623 - ERROR - Error in episode 2968: name 'args' is not defined +2025-03-10 15:29:58,626 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,627 - ERROR - Error in episode 2969: name 'args' is not defined +2025-03-10 15:29:58,629 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,630 - ERROR - Error in episode 2970: name 'args' is not defined +2025-03-10 15:29:58,632 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,632 - ERROR - Error in episode 2971: name 'args' is not defined +2025-03-10 15:29:58,635 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,635 - ERROR - Error in episode 2972: name 'args' is not defined +2025-03-10 15:29:58,639 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,639 - ERROR - Error in episode 2973: name 'args' is not defined +2025-03-10 15:29:58,641 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,642 - ERROR - Error in episode 2974: name 'args' is not defined +2025-03-10 15:29:58,644 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,644 - ERROR - Error in episode 2975: name 'args' is not defined +2025-03-10 15:29:58,647 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,648 - ERROR - Error in episode 2976: name 'args' is not defined +2025-03-10 15:29:58,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,651 - ERROR - Error in episode 2977: name 'args' is not defined +2025-03-10 15:29:58,653 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,653 - ERROR - Error in episode 2978: name 'args' is not defined +2025-03-10 15:29:58,657 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,658 - ERROR - Error in episode 2979: name 'args' is not defined +2025-03-10 15:29:58,660 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,661 - ERROR - Error in episode 2980: name 'args' is not defined +2025-03-10 15:29:58,663 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,663 - ERROR - Error in episode 2981: name 'args' is not defined +2025-03-10 15:29:58,667 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,667 - ERROR - Error in episode 2982: name 'args' is not defined +2025-03-10 15:29:58,670 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,670 - ERROR - Error in episode 2983: name 'args' is not defined +2025-03-10 15:29:58,673 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,673 - ERROR - Error in episode 2984: name 'args' is not defined +2025-03-10 15:29:58,676 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,676 - ERROR - Error in episode 2985: name 'args' is not defined +2025-03-10 15:29:58,678 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,679 - ERROR - Error in episode 2986: name 'args' is not defined +2025-03-10 15:29:58,681 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,682 - ERROR - Error in episode 2987: name 'args' is not defined +2025-03-10 15:29:58,685 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,685 - ERROR - Error in episode 2988: name 'args' is not defined +2025-03-10 15:29:58,688 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,688 - ERROR - Error in episode 2989: name 'args' is not defined +2025-03-10 15:29:58,690 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,692 - ERROR - Error in episode 2990: name 'args' is not defined +2025-03-10 15:29:58,694 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,694 - ERROR - Error in episode 2991: name 'args' is not defined +2025-03-10 15:29:58,697 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,697 - ERROR - Error in episode 2992: name 'args' is not defined +2025-03-10 15:29:58,699 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,700 - ERROR - Error in episode 2993: name 'args' is not defined +2025-03-10 15:29:58,702 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,703 - ERROR - Error in episode 2994: name 'args' is not defined +2025-03-10 15:29:58,705 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,706 - ERROR - Error in episode 2995: name 'args' is not defined +2025-03-10 15:29:58,708 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,709 - ERROR - Error in episode 2996: name 'args' is not defined +2025-03-10 15:29:58,711 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,711 - ERROR - Error in episode 2997: name 'args' is not defined +2025-03-10 15:29:58,714 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,714 - ERROR - Error in episode 2998: name 'args' is not defined +2025-03-10 15:29:58,716 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,717 - ERROR - Error in episode 2999: name 'args' is not defined +2025-03-10 15:29:58,720 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,720 - ERROR - Error in episode 3000: name 'args' is not defined +2025-03-10 15:29:58,723 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,723 - ERROR - Error in episode 3001: name 'args' is not defined +2025-03-10 15:29:58,726 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,726 - ERROR - Error in episode 3002: name 'args' is not defined +2025-03-10 15:29:58,729 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,729 - ERROR - Error in episode 3003: name 'args' is not defined +2025-03-10 15:29:58,731 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,732 - ERROR - Error in episode 3004: name 'args' is not defined +2025-03-10 15:29:58,734 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,734 - ERROR - Error in episode 3005: name 'args' is not defined +2025-03-10 15:29:58,737 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,738 - ERROR - Error in episode 3006: name 'args' is not defined +2025-03-10 15:29:58,740 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,741 - ERROR - Error in episode 3007: name 'args' is not defined +2025-03-10 15:29:58,743 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,744 - ERROR - Error in episode 3008: name 'args' is not defined +2025-03-10 15:29:58,747 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,747 - ERROR - Error in episode 3009: name 'args' is not defined +2025-03-10 15:29:58,750 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,750 - ERROR - Error in episode 3010: name 'args' is not defined +2025-03-10 15:29:58,752 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,753 - ERROR - Error in episode 3011: name 'args' is not defined +2025-03-10 15:29:58,756 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,756 - ERROR - Error in episode 3012: name 'args' is not defined +2025-03-10 15:29:58,758 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,758 - ERROR - Error in episode 3013: name 'args' is not defined +2025-03-10 15:29:58,761 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,761 - ERROR - Error in episode 3014: name 'args' is not defined +2025-03-10 15:29:58,763 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,764 - ERROR - Error in episode 3015: name 'args' is not defined +2025-03-10 15:29:58,767 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,767 - ERROR - Error in episode 3016: name 'args' is not defined +2025-03-10 15:29:58,770 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,770 - ERROR - Error in episode 3017: name 'args' is not defined +2025-03-10 15:29:58,773 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,773 - ERROR - Error in episode 3018: name 'args' is not defined +2025-03-10 15:29:58,776 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,776 - ERROR - Error in episode 3019: name 'args' is not defined +2025-03-10 15:29:58,779 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,779 - ERROR - Error in episode 3020: name 'args' is not defined +2025-03-10 15:29:58,781 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,782 - ERROR - Error in episode 3021: name 'args' is not defined +2025-03-10 15:29:58,784 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,785 - ERROR - Error in episode 3022: name 'args' is not defined +2025-03-10 15:29:58,787 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,787 - ERROR - Error in episode 3023: name 'args' is not defined +2025-03-10 15:29:58,790 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,790 - ERROR - Error in episode 3024: name 'args' is not defined +2025-03-10 15:29:58,793 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,793 - ERROR - Error in episode 3025: name 'args' is not defined +2025-03-10 15:29:58,796 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,797 - ERROR - Error in episode 3026: name 'args' is not defined +2025-03-10 15:29:58,799 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,799 - ERROR - Error in episode 3027: name 'args' is not defined +2025-03-10 15:29:58,802 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,802 - ERROR - Error in episode 3028: name 'args' is not defined +2025-03-10 15:29:58,805 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,805 - ERROR - Error in episode 3029: name 'args' is not defined +2025-03-10 15:29:58,808 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,808 - ERROR - Error in episode 3030: name 'args' is not defined +2025-03-10 15:29:58,810 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,811 - ERROR - Error in episode 3031: name 'args' is not defined +2025-03-10 15:29:58,814 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,814 - ERROR - Error in episode 3032: name 'args' is not defined +2025-03-10 15:29:58,816 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,817 - ERROR - Error in episode 3033: name 'args' is not defined +2025-03-10 15:29:58,820 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,820 - ERROR - Error in episode 3034: name 'args' is not defined +2025-03-10 15:29:58,823 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,823 - ERROR - Error in episode 3035: name 'args' is not defined +2025-03-10 15:29:58,826 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,826 - ERROR - Error in episode 3036: name 'args' is not defined +2025-03-10 15:29:58,829 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,829 - ERROR - Error in episode 3037: name 'args' is not defined +2025-03-10 15:29:58,832 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,832 - ERROR - Error in episode 3038: name 'args' is not defined +2025-03-10 15:29:58,834 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,835 - ERROR - Error in episode 3039: name 'args' is not defined +2025-03-10 15:29:58,838 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,838 - ERROR - Error in episode 3040: name 'args' is not defined +2025-03-10 15:29:58,840 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,841 - ERROR - Error in episode 3041: name 'args' is not defined +2025-03-10 15:29:58,843 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,844 - ERROR - Error in episode 3042: name 'args' is not defined +2025-03-10 15:29:58,847 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,847 - ERROR - Error in episode 3043: name 'args' is not defined +2025-03-10 15:29:58,850 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,851 - ERROR - Error in episode 3044: name 'args' is not defined +2025-03-10 15:29:58,853 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,853 - ERROR - Error in episode 3045: name 'args' is not defined +2025-03-10 15:29:58,856 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,856 - ERROR - Error in episode 3046: name 'args' is not defined +2025-03-10 15:29:58,858 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,858 - ERROR - Error in episode 3047: name 'args' is not defined +2025-03-10 15:29:58,861 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,861 - ERROR - Error in episode 3048: name 'args' is not defined +2025-03-10 15:29:58,865 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,865 - ERROR - Error in episode 3049: name 'args' is not defined +2025-03-10 15:29:58,867 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,868 - ERROR - Error in episode 3050: name 'args' is not defined +2025-03-10 15:29:58,870 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,870 - ERROR - Error in episode 3051: name 'args' is not defined +2025-03-10 15:29:58,873 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,873 - ERROR - Error in episode 3052: name 'args' is not defined +2025-03-10 15:29:58,876 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,876 - ERROR - Error in episode 3053: name 'args' is not defined +2025-03-10 15:29:58,878 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,879 - ERROR - Error in episode 3054: name 'args' is not defined +2025-03-10 15:29:58,881 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,881 - ERROR - Error in episode 3055: name 'args' is not defined +2025-03-10 15:29:58,885 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,885 - ERROR - Error in episode 3056: name 'args' is not defined +2025-03-10 15:29:58,888 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,888 - ERROR - Error in episode 3057: name 'args' is not defined +2025-03-10 15:29:58,891 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,891 - ERROR - Error in episode 3058: name 'args' is not defined +2025-03-10 15:29:58,893 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,894 - ERROR - Error in episode 3059: name 'args' is not defined +2025-03-10 15:29:58,896 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,897 - ERROR - Error in episode 3060: name 'args' is not defined +2025-03-10 15:29:58,899 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,900 - ERROR - Error in episode 3061: name 'args' is not defined +2025-03-10 15:29:58,902 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,903 - ERROR - Error in episode 3062: name 'args' is not defined +2025-03-10 15:29:58,905 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,905 - ERROR - Error in episode 3063: name 'args' is not defined +2025-03-10 15:29:58,908 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,908 - ERROR - Error in episode 3064: name 'args' is not defined +2025-03-10 15:29:58,910 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,911 - ERROR - Error in episode 3065: name 'args' is not defined +2025-03-10 15:29:58,913 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,914 - ERROR - Error in episode 3066: name 'args' is not defined +2025-03-10 15:29:58,917 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,917 - ERROR - Error in episode 3067: name 'args' is not defined +2025-03-10 15:29:58,920 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,921 - ERROR - Error in episode 3068: name 'args' is not defined +2025-03-10 15:29:58,923 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,924 - ERROR - Error in episode 3069: name 'args' is not defined +2025-03-10 15:29:58,926 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,926 - ERROR - Error in episode 3070: name 'args' is not defined +2025-03-10 15:29:58,929 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,930 - ERROR - Error in episode 3071: name 'args' is not defined +2025-03-10 15:29:58,932 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,933 - ERROR - Error in episode 3072: name 'args' is not defined +2025-03-10 15:29:58,935 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,935 - ERROR - Error in episode 3073: name 'args' is not defined +2025-03-10 15:29:58,938 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,939 - ERROR - Error in episode 3074: name 'args' is not defined +2025-03-10 15:29:58,941 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,941 - ERROR - Error in episode 3075: name 'args' is not defined +2025-03-10 15:29:58,944 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,944 - ERROR - Error in episode 3076: name 'args' is not defined +2025-03-10 15:29:58,947 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,947 - ERROR - Error in episode 3077: name 'args' is not defined +2025-03-10 15:29:58,950 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,950 - ERROR - Error in episode 3078: name 'args' is not defined +2025-03-10 15:29:58,952 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,953 - ERROR - Error in episode 3079: name 'args' is not defined +2025-03-10 15:29:58,955 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,956 - ERROR - Error in episode 3080: name 'args' is not defined +2025-03-10 15:29:58,958 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,958 - ERROR - Error in episode 3081: name 'args' is not defined +2025-03-10 15:29:58,960 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,961 - ERROR - Error in episode 3082: name 'args' is not defined +2025-03-10 15:29:58,964 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,964 - ERROR - Error in episode 3083: name 'args' is not defined +2025-03-10 15:29:58,967 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,967 - ERROR - Error in episode 3084: name 'args' is not defined +2025-03-10 15:29:58,970 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,970 - ERROR - Error in episode 3085: name 'args' is not defined +2025-03-10 15:29:58,974 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,974 - ERROR - Error in episode 3086: name 'args' is not defined +2025-03-10 15:29:58,977 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,977 - ERROR - Error in episode 3087: name 'args' is not defined +2025-03-10 15:29:58,980 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,980 - ERROR - Error in episode 3088: name 'args' is not defined +2025-03-10 15:29:58,982 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,983 - ERROR - Error in episode 3089: name 'args' is not defined +2025-03-10 15:29:58,985 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,985 - ERROR - Error in episode 3090: name 'args' is not defined +2025-03-10 15:29:58,988 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,988 - ERROR - Error in episode 3091: name 'args' is not defined +2025-03-10 15:29:58,990 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,991 - ERROR - Error in episode 3092: name 'args' is not defined +2025-03-10 15:29:58,993 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,993 - ERROR - Error in episode 3093: name 'args' is not defined +2025-03-10 15:29:58,996 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:58,996 - ERROR - Error in episode 3094: name 'args' is not defined +2025-03-10 15:29:58,999 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,000 - ERROR - Error in episode 3095: name 'args' is not defined +2025-03-10 15:29:59,002 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,002 - ERROR - Error in episode 3096: name 'args' is not defined +2025-03-10 15:29:59,004 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,005 - ERROR - Error in episode 3097: name 'args' is not defined +2025-03-10 15:29:59,008 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,009 - ERROR - Error in episode 3098: name 'args' is not defined +2025-03-10 15:29:59,011 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,011 - ERROR - Error in episode 3099: name 'args' is not defined +2025-03-10 15:29:59,014 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,014 - ERROR - Error in episode 3100: name 'args' is not defined +2025-03-10 15:29:59,017 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,017 - ERROR - Error in episode 3101: name 'args' is not defined +2025-03-10 15:29:59,020 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,020 - ERROR - Error in episode 3102: name 'args' is not defined +2025-03-10 15:29:59,022 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,023 - ERROR - Error in episode 3103: name 'args' is not defined +2025-03-10 15:29:59,025 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,025 - ERROR - Error in episode 3104: name 'args' is not defined +2025-03-10 15:29:59,028 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,028 - ERROR - Error in episode 3105: name 'args' is not defined +2025-03-10 15:29:59,031 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,031 - ERROR - Error in episode 3106: name 'args' is not defined +2025-03-10 15:29:59,033 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,034 - ERROR - Error in episode 3107: name 'args' is not defined +2025-03-10 15:29:59,036 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,036 - ERROR - Error in episode 3108: name 'args' is not defined +2025-03-10 15:29:59,039 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,039 - ERROR - Error in episode 3109: name 'args' is not defined +2025-03-10 15:29:59,042 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,042 - ERROR - Error in episode 3110: name 'args' is not defined +2025-03-10 15:29:59,044 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,045 - ERROR - Error in episode 3111: name 'args' is not defined +2025-03-10 15:29:59,048 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,048 - ERROR - Error in episode 3112: name 'args' is not defined +2025-03-10 15:29:59,051 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,051 - ERROR - Error in episode 3113: name 'args' is not defined +2025-03-10 15:29:59,053 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,054 - ERROR - Error in episode 3114: name 'args' is not defined +2025-03-10 15:29:59,057 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,057 - ERROR - Error in episode 3115: name 'args' is not defined +2025-03-10 15:29:59,060 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,060 - ERROR - Error in episode 3116: name 'args' is not defined +2025-03-10 15:29:59,063 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,063 - ERROR - Error in episode 3117: name 'args' is not defined +2025-03-10 15:29:59,066 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,066 - ERROR - Error in episode 3118: name 'args' is not defined +2025-03-10 15:29:59,069 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,069 - ERROR - Error in episode 3119: name 'args' is not defined +2025-03-10 15:29:59,072 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,072 - ERROR - Error in episode 3120: name 'args' is not defined +2025-03-10 15:29:59,074 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,075 - ERROR - Error in episode 3121: name 'args' is not defined +2025-03-10 15:29:59,077 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,077 - ERROR - Error in episode 3122: name 'args' is not defined +2025-03-10 15:29:59,079 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,080 - ERROR - Error in episode 3123: name 'args' is not defined +2025-03-10 15:29:59,082 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,082 - ERROR - Error in episode 3124: name 'args' is not defined +2025-03-10 15:29:59,085 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,085 - ERROR - Error in episode 3125: name 'args' is not defined +2025-03-10 15:29:59,087 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,088 - ERROR - Error in episode 3126: name 'args' is not defined +2025-03-10 15:29:59,090 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,090 - ERROR - Error in episode 3127: name 'args' is not defined +2025-03-10 15:29:59,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,094 - ERROR - Error in episode 3128: name 'args' is not defined +2025-03-10 15:29:59,097 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,097 - ERROR - Error in episode 3129: name 'args' is not defined +2025-03-10 15:29:59,100 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,101 - ERROR - Error in episode 3130: name 'args' is not defined +2025-03-10 15:29:59,103 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,103 - ERROR - Error in episode 3131: name 'args' is not defined +2025-03-10 15:29:59,106 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,106 - ERROR - Error in episode 3132: name 'args' is not defined +2025-03-10 15:29:59,109 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,109 - ERROR - Error in episode 3133: name 'args' is not defined +2025-03-10 15:29:59,111 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,111 - ERROR - Error in episode 3134: name 'args' is not defined +2025-03-10 15:29:59,113 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,114 - ERROR - Error in episode 3135: name 'args' is not defined +2025-03-10 15:29:59,116 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,117 - ERROR - Error in episode 3136: name 'args' is not defined +2025-03-10 15:29:59,119 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,119 - ERROR - Error in episode 3137: name 'args' is not defined +2025-03-10 15:29:59,122 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,122 - ERROR - Error in episode 3138: name 'args' is not defined +2025-03-10 15:29:59,125 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,125 - ERROR - Error in episode 3139: name 'args' is not defined +2025-03-10 15:29:59,128 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,128 - ERROR - Error in episode 3140: name 'args' is not defined +2025-03-10 15:29:59,131 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,132 - ERROR - Error in episode 3141: name 'args' is not defined +2025-03-10 15:29:59,135 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,135 - ERROR - Error in episode 3142: name 'args' is not defined +2025-03-10 15:29:59,137 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,138 - ERROR - Error in episode 3143: name 'args' is not defined +2025-03-10 15:29:59,140 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,141 - ERROR - Error in episode 3144: name 'args' is not defined +2025-03-10 15:29:59,144 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,144 - ERROR - Error in episode 3145: name 'args' is not defined +2025-03-10 15:29:59,146 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,147 - ERROR - Error in episode 3146: name 'args' is not defined +2025-03-10 15:29:59,149 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,150 - ERROR - Error in episode 3147: name 'args' is not defined +2025-03-10 15:29:59,153 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,153 - ERROR - Error in episode 3148: name 'args' is not defined +2025-03-10 15:29:59,156 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,156 - ERROR - Error in episode 3149: name 'args' is not defined +2025-03-10 15:29:59,159 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,159 - ERROR - Error in episode 3150: name 'args' is not defined +2025-03-10 15:29:59,161 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,162 - ERROR - Error in episode 3151: name 'args' is not defined +2025-03-10 15:29:59,164 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,165 - ERROR - Error in episode 3152: name 'args' is not defined +2025-03-10 15:29:59,168 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,168 - ERROR - Error in episode 3153: name 'args' is not defined +2025-03-10 15:29:59,170 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,171 - ERROR - Error in episode 3154: name 'args' is not defined +2025-03-10 15:29:59,173 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,173 - ERROR - Error in episode 3155: name 'args' is not defined +2025-03-10 15:29:59,176 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,176 - ERROR - Error in episode 3156: name 'args' is not defined +2025-03-10 15:29:59,178 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,179 - ERROR - Error in episode 3157: name 'args' is not defined +2025-03-10 15:29:59,181 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,181 - ERROR - Error in episode 3158: name 'args' is not defined +2025-03-10 15:29:59,184 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,185 - ERROR - Error in episode 3159: name 'args' is not defined +2025-03-10 15:29:59,187 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,187 - ERROR - Error in episode 3160: name 'args' is not defined +2025-03-10 15:29:59,189 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,190 - ERROR - Error in episode 3161: name 'args' is not defined +2025-03-10 15:29:59,192 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,193 - ERROR - Error in episode 3162: name 'args' is not defined +2025-03-10 15:29:59,195 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,196 - ERROR - Error in episode 3163: name 'args' is not defined +2025-03-10 15:29:59,198 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,198 - ERROR - Error in episode 3164: name 'args' is not defined +2025-03-10 15:29:59,201 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,201 - ERROR - Error in episode 3165: name 'args' is not defined +2025-03-10 15:29:59,204 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,204 - ERROR - Error in episode 3166: name 'args' is not defined +2025-03-10 15:29:59,206 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,207 - ERROR - Error in episode 3167: name 'args' is not defined +2025-03-10 15:29:59,210 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,210 - ERROR - Error in episode 3168: name 'args' is not defined +2025-03-10 15:29:59,213 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,214 - ERROR - Error in episode 3169: name 'args' is not defined +2025-03-10 15:29:59,216 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,216 - ERROR - Error in episode 3170: name 'args' is not defined +2025-03-10 15:29:59,219 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,219 - ERROR - Error in episode 3171: name 'args' is not defined +2025-03-10 15:29:59,222 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,222 - ERROR - Error in episode 3172: name 'args' is not defined +2025-03-10 15:29:59,224 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,224 - ERROR - Error in episode 3173: name 'args' is not defined +2025-03-10 15:29:59,226 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,227 - ERROR - Error in episode 3174: name 'args' is not defined +2025-03-10 15:29:59,229 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,230 - ERROR - Error in episode 3175: name 'args' is not defined +2025-03-10 15:29:59,233 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,233 - ERROR - Error in episode 3176: name 'args' is not defined +2025-03-10 15:29:59,236 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,236 - ERROR - Error in episode 3177: name 'args' is not defined +2025-03-10 15:29:59,239 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,239 - ERROR - Error in episode 3178: name 'args' is not defined +2025-03-10 15:29:59,242 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,242 - ERROR - Error in episode 3179: name 'args' is not defined +2025-03-10 15:29:59,245 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,245 - ERROR - Error in episode 3180: name 'args' is not defined +2025-03-10 15:29:59,247 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,248 - ERROR - Error in episode 3181: name 'args' is not defined +2025-03-10 15:29:59,250 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,251 - ERROR - Error in episode 3182: name 'args' is not defined +2025-03-10 15:29:59,253 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,253 - ERROR - Error in episode 3183: name 'args' is not defined +2025-03-10 15:29:59,256 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,257 - ERROR - Error in episode 3184: name 'args' is not defined +2025-03-10 15:29:59,260 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,260 - ERROR - Error in episode 3185: name 'args' is not defined +2025-03-10 15:29:59,262 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,264 - ERROR - Error in episode 3186: name 'args' is not defined +2025-03-10 15:29:59,266 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,266 - ERROR - Error in episode 3187: name 'args' is not defined +2025-03-10 15:29:59,268 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,269 - ERROR - Error in episode 3188: name 'args' is not defined +2025-03-10 15:29:59,272 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,272 - ERROR - Error in episode 3189: name 'args' is not defined +2025-03-10 15:29:59,275 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,275 - ERROR - Error in episode 3190: name 'args' is not defined +2025-03-10 15:29:59,277 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,278 - ERROR - Error in episode 3191: name 'args' is not defined +2025-03-10 15:29:59,281 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,281 - ERROR - Error in episode 3192: name 'args' is not defined +2025-03-10 15:29:59,283 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,283 - ERROR - Error in episode 3193: name 'args' is not defined +2025-03-10 15:29:59,287 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,287 - ERROR - Error in episode 3194: name 'args' is not defined +2025-03-10 15:29:59,290 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,290 - ERROR - Error in episode 3195: name 'args' is not defined +2025-03-10 15:29:59,293 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,294 - ERROR - Error in episode 3196: name 'args' is not defined +2025-03-10 15:29:59,296 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,297 - ERROR - Error in episode 3197: name 'args' is not defined +2025-03-10 15:29:59,300 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,300 - ERROR - Error in episode 3198: name 'args' is not defined +2025-03-10 15:29:59,303 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,303 - ERROR - Error in episode 3199: name 'args' is not defined +2025-03-10 15:29:59,306 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,306 - ERROR - Error in episode 3200: name 'args' is not defined +2025-03-10 15:29:59,309 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,309 - ERROR - Error in episode 3201: name 'args' is not defined +2025-03-10 15:29:59,312 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,312 - ERROR - Error in episode 3202: name 'args' is not defined +2025-03-10 15:29:59,315 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,315 - ERROR - Error in episode 3203: name 'args' is not defined +2025-03-10 15:29:59,318 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,318 - ERROR - Error in episode 3204: name 'args' is not defined +2025-03-10 15:29:59,321 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,321 - ERROR - Error in episode 3205: name 'args' is not defined +2025-03-10 15:29:59,324 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,324 - ERROR - Error in episode 3206: name 'args' is not defined +2025-03-10 15:29:59,326 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,326 - ERROR - Error in episode 3207: name 'args' is not defined +2025-03-10 15:29:59,329 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,329 - ERROR - Error in episode 3208: name 'args' is not defined +2025-03-10 15:29:59,332 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,332 - ERROR - Error in episode 3209: name 'args' is not defined +2025-03-10 15:29:59,334 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,335 - ERROR - Error in episode 3210: name 'args' is not defined +2025-03-10 15:29:59,337 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,337 - ERROR - Error in episode 3211: name 'args' is not defined +2025-03-10 15:29:59,341 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,341 - ERROR - Error in episode 3212: name 'args' is not defined +2025-03-10 15:29:59,344 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,344 - ERROR - Error in episode 3213: name 'args' is not defined +2025-03-10 15:29:59,347 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,347 - ERROR - Error in episode 3214: name 'args' is not defined +2025-03-10 15:29:59,349 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,349 - ERROR - Error in episode 3215: name 'args' is not defined +2025-03-10 15:29:59,352 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,352 - ERROR - Error in episode 3216: name 'args' is not defined +2025-03-10 15:29:59,355 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,355 - ERROR - Error in episode 3217: name 'args' is not defined +2025-03-10 15:29:59,358 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,359 - ERROR - Error in episode 3218: name 'args' is not defined +2025-03-10 15:29:59,362 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,363 - ERROR - Error in episode 3219: name 'args' is not defined +2025-03-10 15:29:59,365 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,366 - ERROR - Error in episode 3220: name 'args' is not defined +2025-03-10 15:29:59,369 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,370 - ERROR - Error in episode 3221: name 'args' is not defined +2025-03-10 15:29:59,373 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,373 - ERROR - Error in episode 3222: name 'args' is not defined +2025-03-10 15:29:59,376 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,376 - ERROR - Error in episode 3223: name 'args' is not defined +2025-03-10 15:29:59,380 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,381 - ERROR - Error in episode 3224: name 'args' is not defined +2025-03-10 15:29:59,383 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,384 - ERROR - Error in episode 3225: name 'args' is not defined +2025-03-10 15:29:59,387 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,387 - ERROR - Error in episode 3226: name 'args' is not defined +2025-03-10 15:29:59,392 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,392 - ERROR - Error in episode 3227: name 'args' is not defined +2025-03-10 15:29:59,396 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,397 - ERROR - Error in episode 3228: name 'args' is not defined +2025-03-10 15:29:59,399 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,400 - ERROR - Error in episode 3229: name 'args' is not defined +2025-03-10 15:29:59,403 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,403 - ERROR - Error in episode 3230: name 'args' is not defined +2025-03-10 15:29:59,407 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,407 - ERROR - Error in episode 3231: name 'args' is not defined +2025-03-10 15:29:59,412 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,412 - ERROR - Error in episode 3232: name 'args' is not defined +2025-03-10 15:29:59,415 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,416 - ERROR - Error in episode 3233: name 'args' is not defined +2025-03-10 15:29:59,418 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,418 - ERROR - Error in episode 3234: name 'args' is not defined +2025-03-10 15:29:59,422 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,423 - ERROR - Error in episode 3235: name 'args' is not defined +2025-03-10 15:29:59,425 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,425 - ERROR - Error in episode 3236: name 'args' is not defined +2025-03-10 15:29:59,428 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,429 - ERROR - Error in episode 3237: name 'args' is not defined +2025-03-10 15:29:59,432 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,433 - ERROR - Error in episode 3238: name 'args' is not defined +2025-03-10 15:29:59,435 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,435 - ERROR - Error in episode 3239: name 'args' is not defined +2025-03-10 15:29:59,438 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,438 - ERROR - Error in episode 3240: name 'args' is not defined +2025-03-10 15:29:59,442 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,442 - ERROR - Error in episode 3241: name 'args' is not defined +2025-03-10 15:29:59,445 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,445 - ERROR - Error in episode 3242: name 'args' is not defined +2025-03-10 15:29:59,447 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,448 - ERROR - Error in episode 3243: name 'args' is not defined +2025-03-10 15:29:59,450 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,451 - ERROR - Error in episode 3244: name 'args' is not defined +2025-03-10 15:29:59,454 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,454 - ERROR - Error in episode 3245: name 'args' is not defined +2025-03-10 15:29:59,458 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,458 - ERROR - Error in episode 3246: name 'args' is not defined +2025-03-10 15:29:59,461 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,461 - ERROR - Error in episode 3247: name 'args' is not defined +2025-03-10 15:29:59,464 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,465 - ERROR - Error in episode 3248: name 'args' is not defined +2025-03-10 15:29:59,468 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,468 - ERROR - Error in episode 3249: name 'args' is not defined +2025-03-10 15:29:59,471 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,471 - ERROR - Error in episode 3250: name 'args' is not defined +2025-03-10 15:29:59,474 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,474 - ERROR - Error in episode 3251: name 'args' is not defined +2025-03-10 15:29:59,477 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,477 - ERROR - Error in episode 3252: name 'args' is not defined +2025-03-10 15:29:59,480 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,480 - ERROR - Error in episode 3253: name 'args' is not defined +2025-03-10 15:29:59,484 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,484 - ERROR - Error in episode 3254: name 'args' is not defined +2025-03-10 15:29:59,487 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,487 - ERROR - Error in episode 3255: name 'args' is not defined +2025-03-10 15:29:59,490 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,491 - ERROR - Error in episode 3256: name 'args' is not defined +2025-03-10 15:29:59,494 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,494 - ERROR - Error in episode 3257: name 'args' is not defined +2025-03-10 15:29:59,497 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,497 - ERROR - Error in episode 3258: name 'args' is not defined +2025-03-10 15:29:59,499 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,500 - ERROR - Error in episode 3259: name 'args' is not defined +2025-03-10 15:29:59,502 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,503 - ERROR - Error in episode 3260: name 'args' is not defined +2025-03-10 15:29:59,505 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,506 - ERROR - Error in episode 3261: name 'args' is not defined +2025-03-10 15:29:59,509 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,509 - ERROR - Error in episode 3262: name 'args' is not defined +2025-03-10 15:29:59,512 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,512 - ERROR - Error in episode 3263: name 'args' is not defined +2025-03-10 15:29:59,515 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,515 - ERROR - Error in episode 3264: name 'args' is not defined +2025-03-10 15:29:59,518 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,518 - ERROR - Error in episode 3265: name 'args' is not defined +2025-03-10 15:29:59,521 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,521 - ERROR - Error in episode 3266: name 'args' is not defined +2025-03-10 15:29:59,523 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,523 - ERROR - Error in episode 3267: name 'args' is not defined +2025-03-10 15:29:59,527 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,527 - ERROR - Error in episode 3268: name 'args' is not defined +2025-03-10 15:29:59,530 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,531 - ERROR - Error in episode 3269: name 'args' is not defined +2025-03-10 15:29:59,533 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,533 - ERROR - Error in episode 3270: name 'args' is not defined +2025-03-10 15:29:59,536 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,537 - ERROR - Error in episode 3271: name 'args' is not defined +2025-03-10 15:29:59,539 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,540 - ERROR - Error in episode 3272: name 'args' is not defined +2025-03-10 15:29:59,542 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,542 - ERROR - Error in episode 3273: name 'args' is not defined +2025-03-10 15:29:59,546 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,546 - ERROR - Error in episode 3274: name 'args' is not defined +2025-03-10 15:29:59,548 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,549 - ERROR - Error in episode 3275: name 'args' is not defined +2025-03-10 15:29:59,552 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,552 - ERROR - Error in episode 3276: name 'args' is not defined +2025-03-10 15:29:59,554 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,555 - ERROR - Error in episode 3277: name 'args' is not defined +2025-03-10 15:29:59,557 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,558 - ERROR - Error in episode 3278: name 'args' is not defined +2025-03-10 15:29:59,561 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,562 - ERROR - Error in episode 3279: name 'args' is not defined +2025-03-10 15:29:59,565 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,565 - ERROR - Error in episode 3280: name 'args' is not defined +2025-03-10 15:29:59,568 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,568 - ERROR - Error in episode 3281: name 'args' is not defined +2025-03-10 15:29:59,570 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,570 - ERROR - Error in episode 3282: name 'args' is not defined +2025-03-10 15:29:59,573 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,573 - ERROR - Error in episode 3283: name 'args' is not defined +2025-03-10 15:29:59,576 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,576 - ERROR - Error in episode 3284: name 'args' is not defined +2025-03-10 15:29:59,580 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,580 - ERROR - Error in episode 3285: name 'args' is not defined +2025-03-10 15:29:59,583 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,583 - ERROR - Error in episode 3286: name 'args' is not defined +2025-03-10 15:29:59,586 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,586 - ERROR - Error in episode 3287: name 'args' is not defined +2025-03-10 15:29:59,588 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,589 - ERROR - Error in episode 3288: name 'args' is not defined +2025-03-10 15:29:59,591 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,591 - ERROR - Error in episode 3289: name 'args' is not defined +2025-03-10 15:29:59,594 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,595 - ERROR - Error in episode 3290: name 'args' is not defined +2025-03-10 15:29:59,597 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,597 - ERROR - Error in episode 3291: name 'args' is not defined +2025-03-10 15:29:59,600 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,601 - ERROR - Error in episode 3292: name 'args' is not defined +2025-03-10 15:29:59,603 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,604 - ERROR - Error in episode 3293: name 'args' is not defined +2025-03-10 15:29:59,606 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,607 - ERROR - Error in episode 3294: name 'args' is not defined +2025-03-10 15:29:59,609 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,610 - ERROR - Error in episode 3295: name 'args' is not defined +2025-03-10 15:29:59,612 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,612 - ERROR - Error in episode 3296: name 'args' is not defined +2025-03-10 15:29:59,615 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,615 - ERROR - Error in episode 3297: name 'args' is not defined +2025-03-10 15:29:59,619 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,619 - ERROR - Error in episode 3298: name 'args' is not defined +2025-03-10 15:29:59,622 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,622 - ERROR - Error in episode 3299: name 'args' is not defined +2025-03-10 15:29:59,624 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,625 - ERROR - Error in episode 3300: name 'args' is not defined +2025-03-10 15:29:59,627 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,627 - ERROR - Error in episode 3301: name 'args' is not defined +2025-03-10 15:29:59,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,630 - ERROR - Error in episode 3302: name 'args' is not defined +2025-03-10 15:29:59,632 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,633 - ERROR - Error in episode 3303: name 'args' is not defined +2025-03-10 15:29:59,636 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,636 - ERROR - Error in episode 3304: name 'args' is not defined +2025-03-10 15:29:59,638 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,639 - ERROR - Error in episode 3305: name 'args' is not defined +2025-03-10 15:29:59,641 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,642 - ERROR - Error in episode 3306: name 'args' is not defined +2025-03-10 15:29:59,644 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,645 - ERROR - Error in episode 3307: name 'args' is not defined +2025-03-10 15:29:59,647 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,647 - ERROR - Error in episode 3308: name 'args' is not defined +2025-03-10 15:29:59,650 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,650 - ERROR - Error in episode 3309: name 'args' is not defined +2025-03-10 15:29:59,653 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,653 - ERROR - Error in episode 3310: name 'args' is not defined +2025-03-10 15:29:59,656 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,657 - ERROR - Error in episode 3311: name 'args' is not defined +2025-03-10 15:29:59,660 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,660 - ERROR - Error in episode 3312: name 'args' is not defined +2025-03-10 15:29:59,663 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,664 - ERROR - Error in episode 3313: name 'args' is not defined +2025-03-10 15:29:59,667 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,667 - ERROR - Error in episode 3314: name 'args' is not defined +2025-03-10 15:29:59,671 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,671 - ERROR - Error in episode 3315: name 'args' is not defined +2025-03-10 15:29:59,674 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,675 - ERROR - Error in episode 3316: name 'args' is not defined +2025-03-10 15:29:59,678 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,678 - ERROR - Error in episode 3317: name 'args' is not defined +2025-03-10 15:29:59,681 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,681 - ERROR - Error in episode 3318: name 'args' is not defined +2025-03-10 15:29:59,684 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,685 - ERROR - Error in episode 3319: name 'args' is not defined +2025-03-10 15:29:59,687 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,688 - ERROR - Error in episode 3320: name 'args' is not defined +2025-03-10 15:29:59,691 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,691 - ERROR - Error in episode 3321: name 'args' is not defined +2025-03-10 15:29:59,694 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,694 - ERROR - Error in episode 3322: name 'args' is not defined +2025-03-10 15:29:59,697 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,698 - ERROR - Error in episode 3323: name 'args' is not defined +2025-03-10 15:29:59,700 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,701 - ERROR - Error in episode 3324: name 'args' is not defined +2025-03-10 15:29:59,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,704 - ERROR - Error in episode 3325: name 'args' is not defined +2025-03-10 15:29:59,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,707 - ERROR - Error in episode 3326: name 'args' is not defined +2025-03-10 15:29:59,711 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,711 - ERROR - Error in episode 3327: name 'args' is not defined +2025-03-10 15:29:59,714 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,714 - ERROR - Error in episode 3328: name 'args' is not defined +2025-03-10 15:29:59,717 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,717 - ERROR - Error in episode 3329: name 'args' is not defined +2025-03-10 15:29:59,720 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,721 - ERROR - Error in episode 3330: name 'args' is not defined +2025-03-10 15:29:59,723 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,724 - ERROR - Error in episode 3331: name 'args' is not defined +2025-03-10 15:29:59,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,727 - ERROR - Error in episode 3332: name 'args' is not defined +2025-03-10 15:29:59,730 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,730 - ERROR - Error in episode 3333: name 'args' is not defined +2025-03-10 15:29:59,733 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,734 - ERROR - Error in episode 3334: name 'args' is not defined +2025-03-10 15:29:59,736 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,737 - ERROR - Error in episode 3335: name 'args' is not defined +2025-03-10 15:29:59,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,740 - ERROR - Error in episode 3336: name 'args' is not defined +2025-03-10 15:29:59,742 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,742 - ERROR - Error in episode 3337: name 'args' is not defined +2025-03-10 15:29:59,745 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,745 - ERROR - Error in episode 3338: name 'args' is not defined +2025-03-10 15:29:59,747 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,748 - ERROR - Error in episode 3339: name 'args' is not defined +2025-03-10 15:29:59,750 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,751 - ERROR - Error in episode 3340: name 'args' is not defined +2025-03-10 15:29:59,753 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,754 - ERROR - Error in episode 3341: name 'args' is not defined +2025-03-10 15:29:59,757 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,757 - ERROR - Error in episode 3342: name 'args' is not defined +2025-03-10 15:29:59,759 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,761 - ERROR - Error in episode 3343: name 'args' is not defined +2025-03-10 15:29:59,763 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,763 - ERROR - Error in episode 3344: name 'args' is not defined +2025-03-10 15:29:59,766 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,766 - ERROR - Error in episode 3345: name 'args' is not defined +2025-03-10 15:29:59,769 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,770 - ERROR - Error in episode 3346: name 'args' is not defined +2025-03-10 15:29:59,773 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,773 - ERROR - Error in episode 3347: name 'args' is not defined +2025-03-10 15:29:59,776 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,776 - ERROR - Error in episode 3348: name 'args' is not defined +2025-03-10 15:29:59,779 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,780 - ERROR - Error in episode 3349: name 'args' is not defined +2025-03-10 15:29:59,782 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,783 - ERROR - Error in episode 3350: name 'args' is not defined +2025-03-10 15:29:59,785 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,786 - ERROR - Error in episode 3351: name 'args' is not defined +2025-03-10 15:29:59,788 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,788 - ERROR - Error in episode 3352: name 'args' is not defined +2025-03-10 15:29:59,791 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,791 - ERROR - Error in episode 3353: name 'args' is not defined +2025-03-10 15:29:59,794 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,794 - ERROR - Error in episode 3354: name 'args' is not defined +2025-03-10 15:29:59,797 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,797 - ERROR - Error in episode 3355: name 'args' is not defined +2025-03-10 15:29:59,800 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,800 - ERROR - Error in episode 3356: name 'args' is not defined +2025-03-10 15:29:59,803 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,804 - ERROR - Error in episode 3357: name 'args' is not defined +2025-03-10 15:29:59,806 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,807 - ERROR - Error in episode 3358: name 'args' is not defined +2025-03-10 15:29:59,810 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,810 - ERROR - Error in episode 3359: name 'args' is not defined +2025-03-10 15:29:59,813 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,813 - ERROR - Error in episode 3360: name 'args' is not defined +2025-03-10 15:29:59,816 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,816 - ERROR - Error in episode 3361: name 'args' is not defined +2025-03-10 15:29:59,819 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,819 - ERROR - Error in episode 3362: name 'args' is not defined +2025-03-10 15:29:59,821 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,822 - ERROR - Error in episode 3363: name 'args' is not defined +2025-03-10 15:29:59,824 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,824 - ERROR - Error in episode 3364: name 'args' is not defined +2025-03-10 15:29:59,828 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,828 - ERROR - Error in episode 3365: name 'args' is not defined +2025-03-10 15:29:59,830 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,831 - ERROR - Error in episode 3366: name 'args' is not defined +2025-03-10 15:29:59,833 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,834 - ERROR - Error in episode 3367: name 'args' is not defined +2025-03-10 15:29:59,836 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,837 - ERROR - Error in episode 3368: name 'args' is not defined +2025-03-10 15:29:59,839 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,840 - ERROR - Error in episode 3369: name 'args' is not defined +2025-03-10 15:29:59,842 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,842 - ERROR - Error in episode 3370: name 'args' is not defined +2025-03-10 15:29:59,845 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,845 - ERROR - Error in episode 3371: name 'args' is not defined +2025-03-10 15:29:59,848 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,848 - ERROR - Error in episode 3372: name 'args' is not defined +2025-03-10 15:29:59,851 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,851 - ERROR - Error in episode 3373: name 'args' is not defined +2025-03-10 15:29:59,853 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,854 - ERROR - Error in episode 3374: name 'args' is not defined +2025-03-10 15:29:59,856 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,857 - ERROR - Error in episode 3375: name 'args' is not defined +2025-03-10 15:29:59,859 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,859 - ERROR - Error in episode 3376: name 'args' is not defined +2025-03-10 15:29:59,862 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,862 - ERROR - Error in episode 3377: name 'args' is not defined +2025-03-10 15:29:59,865 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,865 - ERROR - Error in episode 3378: name 'args' is not defined +2025-03-10 15:29:59,868 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,868 - ERROR - Error in episode 3379: name 'args' is not defined +2025-03-10 15:29:59,870 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,871 - ERROR - Error in episode 3380: name 'args' is not defined +2025-03-10 15:29:59,873 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,873 - ERROR - Error in episode 3381: name 'args' is not defined +2025-03-10 15:29:59,876 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,877 - ERROR - Error in episode 3382: name 'args' is not defined +2025-03-10 15:29:59,879 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,880 - ERROR - Error in episode 3383: name 'args' is not defined +2025-03-10 15:29:59,882 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,882 - ERROR - Error in episode 3384: name 'args' is not defined +2025-03-10 15:29:59,885 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,885 - ERROR - Error in episode 3385: name 'args' is not defined +2025-03-10 15:29:59,888 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,888 - ERROR - Error in episode 3386: name 'args' is not defined +2025-03-10 15:29:59,890 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,891 - ERROR - Error in episode 3387: name 'args' is not defined +2025-03-10 15:29:59,893 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,893 - ERROR - Error in episode 3388: name 'args' is not defined +2025-03-10 15:29:59,897 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,897 - ERROR - Error in episode 3389: name 'args' is not defined +2025-03-10 15:29:59,899 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,900 - ERROR - Error in episode 3390: name 'args' is not defined +2025-03-10 15:29:59,902 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,903 - ERROR - Error in episode 3391: name 'args' is not defined +2025-03-10 15:29:59,905 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,906 - ERROR - Error in episode 3392: name 'args' is not defined +2025-03-10 15:29:59,909 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,909 - ERROR - Error in episode 3393: name 'args' is not defined +2025-03-10 15:29:59,912 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,912 - ERROR - Error in episode 3394: name 'args' is not defined +2025-03-10 15:29:59,915 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,915 - ERROR - Error in episode 3395: name 'args' is not defined +2025-03-10 15:29:59,918 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,918 - ERROR - Error in episode 3396: name 'args' is not defined +2025-03-10 15:29:59,920 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,920 - ERROR - Error in episode 3397: name 'args' is not defined +2025-03-10 15:29:59,922 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,923 - ERROR - Error in episode 3398: name 'args' is not defined +2025-03-10 15:29:59,925 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,927 - ERROR - Error in episode 3399: name 'args' is not defined +2025-03-10 15:29:59,929 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,929 - ERROR - Error in episode 3400: name 'args' is not defined +2025-03-10 15:29:59,932 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,932 - ERROR - Error in episode 3401: name 'args' is not defined +2025-03-10 15:29:59,935 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,935 - ERROR - Error in episode 3402: name 'args' is not defined +2025-03-10 15:29:59,938 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,938 - ERROR - Error in episode 3403: name 'args' is not defined +2025-03-10 15:29:59,941 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,941 - ERROR - Error in episode 3404: name 'args' is not defined +2025-03-10 15:29:59,944 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,945 - ERROR - Error in episode 3405: name 'args' is not defined +2025-03-10 15:29:59,947 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,947 - ERROR - Error in episode 3406: name 'args' is not defined +2025-03-10 15:29:59,950 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,951 - ERROR - Error in episode 3407: name 'args' is not defined +2025-03-10 15:29:59,953 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,954 - ERROR - Error in episode 3408: name 'args' is not defined +2025-03-10 15:29:59,956 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,957 - ERROR - Error in episode 3409: name 'args' is not defined +2025-03-10 15:29:59,959 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,960 - ERROR - Error in episode 3410: name 'args' is not defined +2025-03-10 15:29:59,962 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,962 - ERROR - Error in episode 3411: name 'args' is not defined +2025-03-10 15:29:59,965 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,965 - ERROR - Error in episode 3412: name 'args' is not defined +2025-03-10 15:29:59,967 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,968 - ERROR - Error in episode 3413: name 'args' is not defined +2025-03-10 15:29:59,970 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,971 - ERROR - Error in episode 3414: name 'args' is not defined +2025-03-10 15:29:59,974 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,974 - ERROR - Error in episode 3415: name 'args' is not defined +2025-03-10 15:29:59,977 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,978 - ERROR - Error in episode 3416: name 'args' is not defined +2025-03-10 15:29:59,980 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,980 - ERROR - Error in episode 3417: name 'args' is not defined +2025-03-10 15:29:59,983 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,983 - ERROR - Error in episode 3418: name 'args' is not defined +2025-03-10 15:29:59,987 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,987 - ERROR - Error in episode 3419: name 'args' is not defined +2025-03-10 15:29:59,990 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,991 - ERROR - Error in episode 3420: name 'args' is not defined +2025-03-10 15:29:59,994 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,994 - ERROR - Error in episode 3421: name 'args' is not defined +2025-03-10 15:29:59,997 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:29:59,997 - ERROR - Error in episode 3422: name 'args' is not defined +2025-03-10 15:29:59,999 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,000 - ERROR - Error in episode 3423: name 'args' is not defined +2025-03-10 15:30:00,004 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,004 - ERROR - Error in episode 3424: name 'args' is not defined +2025-03-10 15:30:00,007 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,007 - ERROR - Error in episode 3425: name 'args' is not defined +2025-03-10 15:30:00,011 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,011 - ERROR - Error in episode 3426: name 'args' is not defined +2025-03-10 15:30:00,014 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,015 - ERROR - Error in episode 3427: name 'args' is not defined +2025-03-10 15:30:00,018 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,019 - ERROR - Error in episode 3428: name 'args' is not defined +2025-03-10 15:30:00,021 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,022 - ERROR - Error in episode 3429: name 'args' is not defined +2025-03-10 15:30:00,026 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,026 - ERROR - Error in episode 3430: name 'args' is not defined +2025-03-10 15:30:00,030 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,030 - ERROR - Error in episode 3431: name 'args' is not defined +2025-03-10 15:30:00,034 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,035 - ERROR - Error in episode 3432: name 'args' is not defined +2025-03-10 15:30:00,038 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,038 - ERROR - Error in episode 3433: name 'args' is not defined +2025-03-10 15:30:00,041 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,041 - ERROR - Error in episode 3434: name 'args' is not defined +2025-03-10 15:30:00,045 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,046 - ERROR - Error in episode 3435: name 'args' is not defined +2025-03-10 15:30:00,048 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,049 - ERROR - Error in episode 3436: name 'args' is not defined +2025-03-10 15:30:00,052 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,052 - ERROR - Error in episode 3437: name 'args' is not defined +2025-03-10 15:30:00,054 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,055 - ERROR - Error in episode 3438: name 'args' is not defined +2025-03-10 15:30:00,057 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,058 - ERROR - Error in episode 3439: name 'args' is not defined +2025-03-10 15:30:00,060 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,061 - ERROR - Error in episode 3440: name 'args' is not defined +2025-03-10 15:30:00,063 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,063 - ERROR - Error in episode 3441: name 'args' is not defined +2025-03-10 15:30:00,066 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,066 - ERROR - Error in episode 3442: name 'args' is not defined +2025-03-10 15:30:00,069 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,070 - ERROR - Error in episode 3443: name 'args' is not defined +2025-03-10 15:30:00,072 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,072 - ERROR - Error in episode 3444: name 'args' is not defined +2025-03-10 15:30:00,075 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,075 - ERROR - Error in episode 3445: name 'args' is not defined +2025-03-10 15:30:00,079 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,079 - ERROR - Error in episode 3446: name 'args' is not defined +2025-03-10 15:30:00,081 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,082 - ERROR - Error in episode 3447: name 'args' is not defined +2025-03-10 15:30:00,085 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,085 - ERROR - Error in episode 3448: name 'args' is not defined +2025-03-10 15:30:00,088 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,088 - ERROR - Error in episode 3449: name 'args' is not defined +2025-03-10 15:30:00,091 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,091 - ERROR - Error in episode 3450: name 'args' is not defined +2025-03-10 15:30:00,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,094 - ERROR - Error in episode 3451: name 'args' is not defined +2025-03-10 15:30:00,097 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,097 - ERROR - Error in episode 3452: name 'args' is not defined +2025-03-10 15:30:00,100 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,100 - ERROR - Error in episode 3453: name 'args' is not defined +2025-03-10 15:30:00,103 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,103 - ERROR - Error in episode 3454: name 'args' is not defined +2025-03-10 15:30:00,105 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,106 - ERROR - Error in episode 3455: name 'args' is not defined +2025-03-10 15:30:00,108 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,109 - ERROR - Error in episode 3456: name 'args' is not defined +2025-03-10 15:30:00,111 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,112 - ERROR - Error in episode 3457: name 'args' is not defined +2025-03-10 15:30:00,114 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,115 - ERROR - Error in episode 3458: name 'args' is not defined +2025-03-10 15:30:00,117 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,117 - ERROR - Error in episode 3459: name 'args' is not defined +2025-03-10 15:30:00,120 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,120 - ERROR - Error in episode 3460: name 'args' is not defined +2025-03-10 15:30:00,123 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,123 - ERROR - Error in episode 3461: name 'args' is not defined +2025-03-10 15:30:00,126 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,127 - ERROR - Error in episode 3462: name 'args' is not defined +2025-03-10 15:30:00,129 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,129 - ERROR - Error in episode 3463: name 'args' is not defined +2025-03-10 15:30:00,132 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,132 - ERROR - Error in episode 3464: name 'args' is not defined +2025-03-10 15:30:00,135 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,135 - ERROR - Error in episode 3465: name 'args' is not defined +2025-03-10 15:30:00,137 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,138 - ERROR - Error in episode 3466: name 'args' is not defined +2025-03-10 15:30:00,140 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,140 - ERROR - Error in episode 3467: name 'args' is not defined +2025-03-10 15:30:00,143 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,143 - ERROR - Error in episode 3468: name 'args' is not defined +2025-03-10 15:30:00,146 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,146 - ERROR - Error in episode 3469: name 'args' is not defined +2025-03-10 15:30:00,149 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,149 - ERROR - Error in episode 3470: name 'args' is not defined +2025-03-10 15:30:00,152 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,152 - ERROR - Error in episode 3471: name 'args' is not defined +2025-03-10 15:30:00,155 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,155 - ERROR - Error in episode 3472: name 'args' is not defined +2025-03-10 15:30:00,159 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,159 - ERROR - Error in episode 3473: name 'args' is not defined +2025-03-10 15:30:00,162 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,162 - ERROR - Error in episode 3474: name 'args' is not defined +2025-03-10 15:30:00,164 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,165 - ERROR - Error in episode 3475: name 'args' is not defined +2025-03-10 15:30:00,167 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,168 - ERROR - Error in episode 3476: name 'args' is not defined +2025-03-10 15:30:00,170 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,170 - ERROR - Error in episode 3477: name 'args' is not defined +2025-03-10 15:30:00,172 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,173 - ERROR - Error in episode 3478: name 'args' is not defined +2025-03-10 15:30:00,175 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,176 - ERROR - Error in episode 3479: name 'args' is not defined +2025-03-10 15:30:00,179 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,179 - ERROR - Error in episode 3480: name 'args' is not defined +2025-03-10 15:30:00,181 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,182 - ERROR - Error in episode 3481: name 'args' is not defined +2025-03-10 15:30:00,184 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,184 - ERROR - Error in episode 3482: name 'args' is not defined +2025-03-10 15:30:00,187 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,187 - ERROR - Error in episode 3483: name 'args' is not defined +2025-03-10 15:30:00,190 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,190 - ERROR - Error in episode 3484: name 'args' is not defined +2025-03-10 15:30:00,193 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,194 - ERROR - Error in episode 3485: name 'args' is not defined +2025-03-10 15:30:00,196 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,196 - ERROR - Error in episode 3486: name 'args' is not defined +2025-03-10 15:30:00,199 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,199 - ERROR - Error in episode 3487: name 'args' is not defined +2025-03-10 15:30:00,203 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,204 - ERROR - Error in episode 3488: name 'args' is not defined +2025-03-10 15:30:00,207 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,207 - ERROR - Error in episode 3489: name 'args' is not defined +2025-03-10 15:30:00,211 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,211 - ERROR - Error in episode 3490: name 'args' is not defined +2025-03-10 15:30:00,214 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,214 - ERROR - Error in episode 3491: name 'args' is not defined +2025-03-10 15:30:00,217 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,217 - ERROR - Error in episode 3492: name 'args' is not defined +2025-03-10 15:30:00,221 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,221 - ERROR - Error in episode 3493: name 'args' is not defined +2025-03-10 15:30:00,223 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,224 - ERROR - Error in episode 3494: name 'args' is not defined +2025-03-10 15:30:00,227 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,227 - ERROR - Error in episode 3495: name 'args' is not defined +2025-03-10 15:30:00,229 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,230 - ERROR - Error in episode 3496: name 'args' is not defined +2025-03-10 15:30:00,234 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,235 - ERROR - Error in episode 3497: name 'args' is not defined +2025-03-10 15:30:00,238 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,239 - ERROR - Error in episode 3498: name 'args' is not defined +2025-03-10 15:30:00,242 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,243 - ERROR - Error in episode 3499: name 'args' is not defined +2025-03-10 15:30:00,245 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,246 - ERROR - Error in episode 3500: name 'args' is not defined +2025-03-10 15:30:00,249 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,249 - ERROR - Error in episode 3501: name 'args' is not defined +2025-03-10 15:30:00,253 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,253 - ERROR - Error in episode 3502: name 'args' is not defined +2025-03-10 15:30:00,257 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,257 - ERROR - Error in episode 3503: name 'args' is not defined +2025-03-10 15:30:00,260 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,261 - ERROR - Error in episode 3504: name 'args' is not defined +2025-03-10 15:30:00,263 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,263 - ERROR - Error in episode 3505: name 'args' is not defined +2025-03-10 15:30:00,266 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,267 - ERROR - Error in episode 3506: name 'args' is not defined +2025-03-10 15:30:00,269 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,270 - ERROR - Error in episode 3507: name 'args' is not defined +2025-03-10 15:30:00,273 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,273 - ERROR - Error in episode 3508: name 'args' is not defined +2025-03-10 15:30:00,276 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,277 - ERROR - Error in episode 3509: name 'args' is not defined +2025-03-10 15:30:00,279 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,279 - ERROR - Error in episode 3510: name 'args' is not defined +2025-03-10 15:30:00,283 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,283 - ERROR - Error in episode 3511: name 'args' is not defined +2025-03-10 15:30:00,286 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,287 - ERROR - Error in episode 3512: name 'args' is not defined +2025-03-10 15:30:00,289 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,290 - ERROR - Error in episode 3513: name 'args' is not defined +2025-03-10 15:30:00,292 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,292 - ERROR - Error in episode 3514: name 'args' is not defined +2025-03-10 15:30:00,296 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,296 - ERROR - Error in episode 3515: name 'args' is not defined +2025-03-10 15:30:00,299 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,299 - ERROR - Error in episode 3516: name 'args' is not defined +2025-03-10 15:30:00,303 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,303 - ERROR - Error in episode 3517: name 'args' is not defined +2025-03-10 15:30:00,307 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,308 - ERROR - Error in episode 3518: name 'args' is not defined +2025-03-10 15:30:00,311 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,312 - ERROR - Error in episode 3519: name 'args' is not defined +2025-03-10 15:30:00,315 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,315 - ERROR - Error in episode 3520: name 'args' is not defined +2025-03-10 15:30:00,318 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,319 - ERROR - Error in episode 3521: name 'args' is not defined +2025-03-10 15:30:00,322 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,322 - ERROR - Error in episode 3522: name 'args' is not defined +2025-03-10 15:30:00,325 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,325 - ERROR - Error in episode 3523: name 'args' is not defined +2025-03-10 15:30:00,328 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,329 - ERROR - Error in episode 3524: name 'args' is not defined +2025-03-10 15:30:00,332 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,333 - ERROR - Error in episode 3525: name 'args' is not defined +2025-03-10 15:30:00,336 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,336 - ERROR - Error in episode 3526: name 'args' is not defined +2025-03-10 15:30:00,339 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,339 - ERROR - Error in episode 3527: name 'args' is not defined +2025-03-10 15:30:00,342 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,343 - ERROR - Error in episode 3528: name 'args' is not defined +2025-03-10 15:30:00,345 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,346 - ERROR - Error in episode 3529: name 'args' is not defined +2025-03-10 15:30:00,350 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,350 - ERROR - Error in episode 3530: name 'args' is not defined +2025-03-10 15:30:00,353 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,354 - ERROR - Error in episode 3531: name 'args' is not defined +2025-03-10 15:30:00,357 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,357 - ERROR - Error in episode 3532: name 'args' is not defined +2025-03-10 15:30:00,361 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,362 - ERROR - Error in episode 3533: name 'args' is not defined +2025-03-10 15:30:00,364 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,364 - ERROR - Error in episode 3534: name 'args' is not defined +2025-03-10 15:30:00,367 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,367 - ERROR - Error in episode 3535: name 'args' is not defined +2025-03-10 15:30:00,371 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,372 - ERROR - Error in episode 3536: name 'args' is not defined +2025-03-10 15:30:00,374 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,375 - ERROR - Error in episode 3537: name 'args' is not defined +2025-03-10 15:30:00,378 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,378 - ERROR - Error in episode 3538: name 'args' is not defined +2025-03-10 15:30:00,381 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,382 - ERROR - Error in episode 3539: name 'args' is not defined +2025-03-10 15:30:00,384 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,385 - ERROR - Error in episode 3540: name 'args' is not defined +2025-03-10 15:30:00,388 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,389 - ERROR - Error in episode 3541: name 'args' is not defined +2025-03-10 15:30:00,392 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,392 - ERROR - Error in episode 3542: name 'args' is not defined +2025-03-10 15:30:00,396 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,396 - ERROR - Error in episode 3543: name 'args' is not defined +2025-03-10 15:30:00,399 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,400 - ERROR - Error in episode 3544: name 'args' is not defined +2025-03-10 15:30:00,402 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,402 - ERROR - Error in episode 3545: name 'args' is not defined +2025-03-10 15:30:00,405 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,405 - ERROR - Error in episode 3546: name 'args' is not defined +2025-03-10 15:30:00,409 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,409 - ERROR - Error in episode 3547: name 'args' is not defined +2025-03-10 15:30:00,412 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,412 - ERROR - Error in episode 3548: name 'args' is not defined +2025-03-10 15:30:00,416 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,416 - ERROR - Error in episode 3549: name 'args' is not defined +2025-03-10 15:30:00,419 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,419 - ERROR - Error in episode 3550: name 'args' is not defined +2025-03-10 15:30:00,423 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,423 - ERROR - Error in episode 3551: name 'args' is not defined +2025-03-10 15:30:00,426 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,426 - ERROR - Error in episode 3552: name 'args' is not defined +2025-03-10 15:30:00,430 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,430 - ERROR - Error in episode 3553: name 'args' is not defined +2025-03-10 15:30:00,434 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,434 - ERROR - Error in episode 3554: name 'args' is not defined +2025-03-10 15:30:00,437 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,437 - ERROR - Error in episode 3555: name 'args' is not defined +2025-03-10 15:30:00,440 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,440 - ERROR - Error in episode 3556: name 'args' is not defined +2025-03-10 15:30:00,443 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,444 - ERROR - Error in episode 3557: name 'args' is not defined +2025-03-10 15:30:00,447 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,447 - ERROR - Error in episode 3558: name 'args' is not defined +2025-03-10 15:30:00,450 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,451 - ERROR - Error in episode 3559: name 'args' is not defined +2025-03-10 15:30:00,453 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,453 - ERROR - Error in episode 3560: name 'args' is not defined +2025-03-10 15:30:00,456 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,457 - ERROR - Error in episode 3561: name 'args' is not defined +2025-03-10 15:30:00,460 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,460 - ERROR - Error in episode 3562: name 'args' is not defined +2025-03-10 15:30:00,463 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,464 - ERROR - Error in episode 3563: name 'args' is not defined +2025-03-10 15:30:00,467 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,467 - ERROR - Error in episode 3564: name 'args' is not defined +2025-03-10 15:30:00,469 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,470 - ERROR - Error in episode 3565: name 'args' is not defined +2025-03-10 15:30:00,473 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,473 - ERROR - Error in episode 3566: name 'args' is not defined +2025-03-10 15:30:00,476 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,477 - ERROR - Error in episode 3567: name 'args' is not defined +2025-03-10 15:30:00,479 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,480 - ERROR - Error in episode 3568: name 'args' is not defined +2025-03-10 15:30:00,483 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,484 - ERROR - Error in episode 3569: name 'args' is not defined +2025-03-10 15:30:00,487 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,487 - ERROR - Error in episode 3570: name 'args' is not defined +2025-03-10 15:30:00,490 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,490 - ERROR - Error in episode 3571: name 'args' is not defined +2025-03-10 15:30:00,493 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,493 - ERROR - Error in episode 3572: name 'args' is not defined +2025-03-10 15:30:00,497 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,497 - ERROR - Error in episode 3573: name 'args' is not defined +2025-03-10 15:30:00,500 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,501 - ERROR - Error in episode 3574: name 'args' is not defined +2025-03-10 15:30:00,504 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,504 - ERROR - Error in episode 3575: name 'args' is not defined +2025-03-10 15:30:00,507 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,507 - ERROR - Error in episode 3576: name 'args' is not defined +2025-03-10 15:30:00,509 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,510 - ERROR - Error in episode 3577: name 'args' is not defined +2025-03-10 15:30:00,513 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,513 - ERROR - Error in episode 3578: name 'args' is not defined +2025-03-10 15:30:00,517 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,517 - ERROR - Error in episode 3579: name 'args' is not defined +2025-03-10 15:30:00,520 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,520 - ERROR - Error in episode 3580: name 'args' is not defined +2025-03-10 15:30:00,523 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,523 - ERROR - Error in episode 3581: name 'args' is not defined +2025-03-10 15:30:00,525 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,526 - ERROR - Error in episode 3582: name 'args' is not defined +2025-03-10 15:30:00,529 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,529 - ERROR - Error in episode 3583: name 'args' is not defined +2025-03-10 15:30:00,532 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,532 - ERROR - Error in episode 3584: name 'args' is not defined +2025-03-10 15:30:00,535 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,535 - ERROR - Error in episode 3585: name 'args' is not defined +2025-03-10 15:30:00,538 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,538 - ERROR - Error in episode 3586: name 'args' is not defined +2025-03-10 15:30:00,541 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,541 - ERROR - Error in episode 3587: name 'args' is not defined +2025-03-10 15:30:00,543 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,543 - ERROR - Error in episode 3588: name 'args' is not defined +2025-03-10 15:30:00,546 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,546 - ERROR - Error in episode 3589: name 'args' is not defined +2025-03-10 15:30:00,550 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,550 - ERROR - Error in episode 3590: name 'args' is not defined +2025-03-10 15:30:00,553 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,553 - ERROR - Error in episode 3591: name 'args' is not defined +2025-03-10 15:30:00,556 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,556 - ERROR - Error in episode 3592: name 'args' is not defined +2025-03-10 15:30:00,558 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,559 - ERROR - Error in episode 3593: name 'args' is not defined +2025-03-10 15:30:00,562 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,562 - ERROR - Error in episode 3594: name 'args' is not defined +2025-03-10 15:30:00,566 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,566 - ERROR - Error in episode 3595: name 'args' is not defined +2025-03-10 15:30:00,568 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,569 - ERROR - Error in episode 3596: name 'args' is not defined +2025-03-10 15:30:00,571 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,572 - ERROR - Error in episode 3597: name 'args' is not defined +2025-03-10 15:30:00,574 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,575 - ERROR - Error in episode 3598: name 'args' is not defined +2025-03-10 15:30:00,577 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,578 - ERROR - Error in episode 3599: name 'args' is not defined +2025-03-10 15:30:00,580 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,580 - ERROR - Error in episode 3600: name 'args' is not defined +2025-03-10 15:30:00,583 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,583 - ERROR - Error in episode 3601: name 'args' is not defined +2025-03-10 15:30:00,586 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,587 - ERROR - Error in episode 3602: name 'args' is not defined +2025-03-10 15:30:00,589 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,590 - ERROR - Error in episode 3603: name 'args' is not defined +2025-03-10 15:30:00,592 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,592 - ERROR - Error in episode 3604: name 'args' is not defined +2025-03-10 15:30:00,595 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,595 - ERROR - Error in episode 3605: name 'args' is not defined +2025-03-10 15:30:00,599 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,599 - ERROR - Error in episode 3606: name 'args' is not defined +2025-03-10 15:30:00,601 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,602 - ERROR - Error in episode 3607: name 'args' is not defined +2025-03-10 15:30:00,605 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,606 - ERROR - Error in episode 3608: name 'args' is not defined +2025-03-10 15:30:00,608 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,609 - ERROR - Error in episode 3609: name 'args' is not defined +2025-03-10 15:30:00,611 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,612 - ERROR - Error in episode 3610: name 'args' is not defined +2025-03-10 15:30:00,614 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,615 - ERROR - Error in episode 3611: name 'args' is not defined +2025-03-10 15:30:00,617 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,617 - ERROR - Error in episode 3612: name 'args' is not defined +2025-03-10 15:30:00,620 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,620 - ERROR - Error in episode 3613: name 'args' is not defined +2025-03-10 15:30:00,624 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,624 - ERROR - Error in episode 3614: name 'args' is not defined +2025-03-10 15:30:00,627 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,627 - ERROR - Error in episode 3615: name 'args' is not defined +2025-03-10 15:30:00,629 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,629 - ERROR - Error in episode 3616: name 'args' is not defined +2025-03-10 15:30:00,632 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,632 - ERROR - Error in episode 3617: name 'args' is not defined +2025-03-10 15:30:00,635 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,635 - ERROR - Error in episode 3618: name 'args' is not defined +2025-03-10 15:30:00,638 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,638 - ERROR - Error in episode 3619: name 'args' is not defined +2025-03-10 15:30:00,641 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,642 - ERROR - Error in episode 3620: name 'args' is not defined +2025-03-10 15:30:00,644 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,645 - ERROR - Error in episode 3621: name 'args' is not defined +2025-03-10 15:30:00,648 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,648 - ERROR - Error in episode 3622: name 'args' is not defined +2025-03-10 15:30:00,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,651 - ERROR - Error in episode 3623: name 'args' is not defined +2025-03-10 15:30:00,654 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,654 - ERROR - Error in episode 3624: name 'args' is not defined +2025-03-10 15:30:00,657 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,657 - ERROR - Error in episode 3625: name 'args' is not defined +2025-03-10 15:30:00,661 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,661 - ERROR - Error in episode 3626: name 'args' is not defined +2025-03-10 15:30:00,664 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,664 - ERROR - Error in episode 3627: name 'args' is not defined +2025-03-10 15:30:00,667 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,667 - ERROR - Error in episode 3628: name 'args' is not defined +2025-03-10 15:30:00,670 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,670 - ERROR - Error in episode 3629: name 'args' is not defined +2025-03-10 15:30:00,673 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,673 - ERROR - Error in episode 3630: name 'args' is not defined +2025-03-10 15:30:00,676 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,676 - ERROR - Error in episode 3631: name 'args' is not defined +2025-03-10 15:30:00,679 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,679 - ERROR - Error in episode 3632: name 'args' is not defined +2025-03-10 15:30:00,682 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,683 - ERROR - Error in episode 3633: name 'args' is not defined +2025-03-10 15:30:00,685 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,685 - ERROR - Error in episode 3634: name 'args' is not defined +2025-03-10 15:30:00,688 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,688 - ERROR - Error in episode 3635: name 'args' is not defined +2025-03-10 15:30:00,691 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,692 - ERROR - Error in episode 3636: name 'args' is not defined +2025-03-10 15:30:00,694 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,694 - ERROR - Error in episode 3637: name 'args' is not defined +2025-03-10 15:30:00,697 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,697 - ERROR - Error in episode 3638: name 'args' is not defined +2025-03-10 15:30:00,700 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,700 - ERROR - Error in episode 3639: name 'args' is not defined +2025-03-10 15:30:00,703 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,703 - ERROR - Error in episode 3640: name 'args' is not defined +2025-03-10 15:30:00,706 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,706 - ERROR - Error in episode 3641: name 'args' is not defined +2025-03-10 15:30:00,709 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,709 - ERROR - Error in episode 3642: name 'args' is not defined +2025-03-10 15:30:00,712 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,712 - ERROR - Error in episode 3643: name 'args' is not defined +2025-03-10 15:30:00,715 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,715 - ERROR - Error in episode 3644: name 'args' is not defined +2025-03-10 15:30:00,717 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,717 - ERROR - Error in episode 3645: name 'args' is not defined +2025-03-10 15:30:00,721 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,721 - ERROR - Error in episode 3646: name 'args' is not defined +2025-03-10 15:30:00,724 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,724 - ERROR - Error in episode 3647: name 'args' is not defined +2025-03-10 15:30:00,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,727 - ERROR - Error in episode 3648: name 'args' is not defined +2025-03-10 15:30:00,730 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,730 - ERROR - Error in episode 3649: name 'args' is not defined +2025-03-10 15:30:00,733 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,733 - ERROR - Error in episode 3650: name 'args' is not defined +2025-03-10 15:30:00,736 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,736 - ERROR - Error in episode 3651: name 'args' is not defined +2025-03-10 15:30:00,738 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,739 - ERROR - Error in episode 3652: name 'args' is not defined +2025-03-10 15:30:00,741 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,742 - ERROR - Error in episode 3653: name 'args' is not defined +2025-03-10 15:30:00,744 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,744 - ERROR - Error in episode 3654: name 'args' is not defined +2025-03-10 15:30:00,747 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,747 - ERROR - Error in episode 3655: name 'args' is not defined +2025-03-10 15:30:00,750 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,751 - ERROR - Error in episode 3656: name 'args' is not defined +2025-03-10 15:30:00,753 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,753 - ERROR - Error in episode 3657: name 'args' is not defined +2025-03-10 15:30:00,756 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,756 - ERROR - Error in episode 3658: name 'args' is not defined +2025-03-10 15:30:00,759 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,759 - ERROR - Error in episode 3659: name 'args' is not defined +2025-03-10 15:30:00,761 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,762 - ERROR - Error in episode 3660: name 'args' is not defined +2025-03-10 15:30:00,765 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,765 - ERROR - Error in episode 3661: name 'args' is not defined +2025-03-10 15:30:00,768 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,768 - ERROR - Error in episode 3662: name 'args' is not defined +2025-03-10 15:30:00,771 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,771 - ERROR - Error in episode 3663: name 'args' is not defined +2025-03-10 15:30:00,774 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,774 - ERROR - Error in episode 3664: name 'args' is not defined +2025-03-10 15:30:00,777 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,777 - ERROR - Error in episode 3665: name 'args' is not defined +2025-03-10 15:30:00,779 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,779 - ERROR - Error in episode 3666: name 'args' is not defined +2025-03-10 15:30:00,783 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,783 - ERROR - Error in episode 3667: name 'args' is not defined +2025-03-10 15:30:00,786 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,786 - ERROR - Error in episode 3668: name 'args' is not defined +2025-03-10 15:30:00,789 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,789 - ERROR - Error in episode 3669: name 'args' is not defined +2025-03-10 15:30:00,792 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,792 - ERROR - Error in episode 3670: name 'args' is not defined +2025-03-10 15:30:00,795 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,795 - ERROR - Error in episode 3671: name 'args' is not defined +2025-03-10 15:30:00,797 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,798 - ERROR - Error in episode 3672: name 'args' is not defined +2025-03-10 15:30:00,800 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,801 - ERROR - Error in episode 3673: name 'args' is not defined +2025-03-10 15:30:00,803 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,804 - ERROR - Error in episode 3674: name 'args' is not defined +2025-03-10 15:30:00,807 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,807 - ERROR - Error in episode 3675: name 'args' is not defined +2025-03-10 15:30:00,810 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,810 - ERROR - Error in episode 3676: name 'args' is not defined +2025-03-10 15:30:00,813 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,814 - ERROR - Error in episode 3677: name 'args' is not defined +2025-03-10 15:30:00,816 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,817 - ERROR - Error in episode 3678: name 'args' is not defined +2025-03-10 15:30:00,820 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,820 - ERROR - Error in episode 3679: name 'args' is not defined +2025-03-10 15:30:00,823 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,823 - ERROR - Error in episode 3680: name 'args' is not defined +2025-03-10 15:30:00,826 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,826 - ERROR - Error in episode 3681: name 'args' is not defined +2025-03-10 15:30:00,828 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,828 - ERROR - Error in episode 3682: name 'args' is not defined +2025-03-10 15:30:00,831 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,831 - ERROR - Error in episode 3683: name 'args' is not defined +2025-03-10 15:30:00,834 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,834 - ERROR - Error in episode 3684: name 'args' is not defined +2025-03-10 15:30:00,837 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,837 - ERROR - Error in episode 3685: name 'args' is not defined +2025-03-10 15:30:00,840 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,840 - ERROR - Error in episode 3686: name 'args' is not defined +2025-03-10 15:30:00,843 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,843 - ERROR - Error in episode 3687: name 'args' is not defined +2025-03-10 15:30:00,845 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,846 - ERROR - Error in episode 3688: name 'args' is not defined +2025-03-10 15:30:00,849 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,849 - ERROR - Error in episode 3689: name 'args' is not defined +2025-03-10 15:30:00,851 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,852 - ERROR - Error in episode 3690: name 'args' is not defined +2025-03-10 15:30:00,854 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,854 - ERROR - Error in episode 3691: name 'args' is not defined +2025-03-10 15:30:00,857 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,857 - ERROR - Error in episode 3692: name 'args' is not defined +2025-03-10 15:30:00,859 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,860 - ERROR - Error in episode 3693: name 'args' is not defined +2025-03-10 15:30:00,862 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,862 - ERROR - Error in episode 3694: name 'args' is not defined +2025-03-10 15:30:00,865 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,865 - ERROR - Error in episode 3695: name 'args' is not defined +2025-03-10 15:30:00,869 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,869 - ERROR - Error in episode 3696: name 'args' is not defined +2025-03-10 15:30:00,871 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,872 - ERROR - Error in episode 3697: name 'args' is not defined +2025-03-10 15:30:00,874 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,875 - ERROR - Error in episode 3698: name 'args' is not defined +2025-03-10 15:30:00,877 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,877 - ERROR - Error in episode 3699: name 'args' is not defined +2025-03-10 15:30:00,879 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,880 - ERROR - Error in episode 3700: name 'args' is not defined +2025-03-10 15:30:00,883 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,883 - ERROR - Error in episode 3701: name 'args' is not defined +2025-03-10 15:30:00,886 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,886 - ERROR - Error in episode 3702: name 'args' is not defined +2025-03-10 15:30:00,888 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,889 - ERROR - Error in episode 3703: name 'args' is not defined +2025-03-10 15:30:00,891 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,892 - ERROR - Error in episode 3704: name 'args' is not defined +2025-03-10 15:30:00,894 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,894 - ERROR - Error in episode 3705: name 'args' is not defined +2025-03-10 15:30:00,897 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,897 - ERROR - Error in episode 3706: name 'args' is not defined +2025-03-10 15:30:00,900 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,900 - ERROR - Error in episode 3707: name 'args' is not defined +2025-03-10 15:30:00,903 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,903 - ERROR - Error in episode 3708: name 'args' is not defined +2025-03-10 15:30:00,905 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,906 - ERROR - Error in episode 3709: name 'args' is not defined +2025-03-10 15:30:00,908 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,908 - ERROR - Error in episode 3710: name 'args' is not defined +2025-03-10 15:30:00,911 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,912 - ERROR - Error in episode 3711: name 'args' is not defined +2025-03-10 15:30:00,914 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,915 - ERROR - Error in episode 3712: name 'args' is not defined +2025-03-10 15:30:00,918 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,918 - ERROR - Error in episode 3713: name 'args' is not defined +2025-03-10 15:30:00,921 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,921 - ERROR - Error in episode 3714: name 'args' is not defined +2025-03-10 15:30:00,924 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,924 - ERROR - Error in episode 3715: name 'args' is not defined +2025-03-10 15:30:00,928 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,928 - ERROR - Error in episode 3716: name 'args' is not defined +2025-03-10 15:30:00,930 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,930 - ERROR - Error in episode 3717: name 'args' is not defined +2025-03-10 15:30:00,933 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,933 - ERROR - Error in episode 3718: name 'args' is not defined +2025-03-10 15:30:00,936 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,936 - ERROR - Error in episode 3719: name 'args' is not defined +2025-03-10 15:30:00,939 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,939 - ERROR - Error in episode 3720: name 'args' is not defined +2025-03-10 15:30:00,942 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,942 - ERROR - Error in episode 3721: name 'args' is not defined +2025-03-10 15:30:00,945 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,945 - ERROR - Error in episode 3722: name 'args' is not defined +2025-03-10 15:30:00,947 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,948 - ERROR - Error in episode 3723: name 'args' is not defined +2025-03-10 15:30:00,950 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,950 - ERROR - Error in episode 3724: name 'args' is not defined +2025-03-10 15:30:00,953 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,953 - ERROR - Error in episode 3725: name 'args' is not defined +2025-03-10 15:30:00,956 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,956 - ERROR - Error in episode 3726: name 'args' is not defined +2025-03-10 15:30:00,958 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,959 - ERROR - Error in episode 3727: name 'args' is not defined +2025-03-10 15:30:00,961 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,961 - ERROR - Error in episode 3728: name 'args' is not defined +2025-03-10 15:30:00,963 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,964 - ERROR - Error in episode 3729: name 'args' is not defined +2025-03-10 15:30:00,966 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,966 - ERROR - Error in episode 3730: name 'args' is not defined +2025-03-10 15:30:00,970 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,970 - ERROR - Error in episode 3731: name 'args' is not defined +2025-03-10 15:30:00,972 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,973 - ERROR - Error in episode 3732: name 'args' is not defined +2025-03-10 15:30:00,975 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,976 - ERROR - Error in episode 3733: name 'args' is not defined +2025-03-10 15:30:00,978 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,979 - ERROR - Error in episode 3734: name 'args' is not defined +2025-03-10 15:30:00,981 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,981 - ERROR - Error in episode 3735: name 'args' is not defined +2025-03-10 15:30:00,984 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,984 - ERROR - Error in episode 3736: name 'args' is not defined +2025-03-10 15:30:00,987 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,987 - ERROR - Error in episode 3737: name 'args' is not defined +2025-03-10 15:30:00,989 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,990 - ERROR - Error in episode 3738: name 'args' is not defined +2025-03-10 15:30:00,992 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,993 - ERROR - Error in episode 3739: name 'args' is not defined +2025-03-10 15:30:00,995 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,995 - ERROR - Error in episode 3740: name 'args' is not defined +2025-03-10 15:30:00,998 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:00,998 - ERROR - Error in episode 3741: name 'args' is not defined +2025-03-10 15:30:01,001 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,001 - ERROR - Error in episode 3742: name 'args' is not defined +2025-03-10 15:30:01,003 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,004 - ERROR - Error in episode 3743: name 'args' is not defined +2025-03-10 15:30:01,006 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,006 - ERROR - Error in episode 3744: name 'args' is not defined +2025-03-10 15:30:01,009 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,010 - ERROR - Error in episode 3745: name 'args' is not defined +2025-03-10 15:30:01,012 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,013 - ERROR - Error in episode 3746: name 'args' is not defined +2025-03-10 15:30:01,015 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,016 - ERROR - Error in episode 3747: name 'args' is not defined +2025-03-10 15:30:01,019 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,019 - ERROR - Error in episode 3748: name 'args' is not defined +2025-03-10 15:30:01,021 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,022 - ERROR - Error in episode 3749: name 'args' is not defined +2025-03-10 15:30:01,024 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,025 - ERROR - Error in episode 3750: name 'args' is not defined +2025-03-10 15:30:01,028 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,028 - ERROR - Error in episode 3751: name 'args' is not defined +2025-03-10 15:30:01,030 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,030 - ERROR - Error in episode 3752: name 'args' is not defined +2025-03-10 15:30:01,033 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,034 - ERROR - Error in episode 3753: name 'args' is not defined +2025-03-10 15:30:01,036 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,036 - ERROR - Error in episode 3754: name 'args' is not defined +2025-03-10 15:30:01,040 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,040 - ERROR - Error in episode 3755: name 'args' is not defined +2025-03-10 15:30:01,043 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,044 - ERROR - Error in episode 3756: name 'args' is not defined +2025-03-10 15:30:01,047 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,047 - ERROR - Error in episode 3757: name 'args' is not defined +2025-03-10 15:30:01,049 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,050 - ERROR - Error in episode 3758: name 'args' is not defined +2025-03-10 15:30:01,052 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,052 - ERROR - Error in episode 3759: name 'args' is not defined +2025-03-10 15:30:01,055 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,055 - ERROR - Error in episode 3760: name 'args' is not defined +2025-03-10 15:30:01,059 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,059 - ERROR - Error in episode 3761: name 'args' is not defined +2025-03-10 15:30:01,062 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,062 - ERROR - Error in episode 3762: name 'args' is not defined +2025-03-10 15:30:01,065 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,065 - ERROR - Error in episode 3763: name 'args' is not defined +2025-03-10 15:30:01,068 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,068 - ERROR - Error in episode 3764: name 'args' is not defined +2025-03-10 15:30:01,070 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,071 - ERROR - Error in episode 3765: name 'args' is not defined +2025-03-10 15:30:01,073 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,074 - ERROR - Error in episode 3766: name 'args' is not defined +2025-03-10 15:30:01,076 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,077 - ERROR - Error in episode 3767: name 'args' is not defined +2025-03-10 15:30:01,080 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,080 - ERROR - Error in episode 3768: name 'args' is not defined +2025-03-10 15:30:01,083 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,084 - ERROR - Error in episode 3769: name 'args' is not defined +2025-03-10 15:30:01,086 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,087 - ERROR - Error in episode 3770: name 'args' is not defined +2025-03-10 15:30:01,090 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,090 - ERROR - Error in episode 3771: name 'args' is not defined +2025-03-10 15:30:01,093 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,094 - ERROR - Error in episode 3772: name 'args' is not defined +2025-03-10 15:30:01,096 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,097 - ERROR - Error in episode 3773: name 'args' is not defined +2025-03-10 15:30:01,100 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,100 - ERROR - Error in episode 3774: name 'args' is not defined +2025-03-10 15:30:01,103 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,103 - ERROR - Error in episode 3775: name 'args' is not defined +2025-03-10 15:30:01,106 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,106 - ERROR - Error in episode 3776: name 'args' is not defined +2025-03-10 15:30:01,109 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,109 - ERROR - Error in episode 3777: name 'args' is not defined +2025-03-10 15:30:01,112 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,112 - ERROR - Error in episode 3778: name 'args' is not defined +2025-03-10 15:30:01,115 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,116 - ERROR - Error in episode 3779: name 'args' is not defined +2025-03-10 15:30:01,118 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,118 - ERROR - Error in episode 3780: name 'args' is not defined +2025-03-10 15:30:01,121 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,121 - ERROR - Error in episode 3781: name 'args' is not defined +2025-03-10 15:30:01,124 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,124 - ERROR - Error in episode 3782: name 'args' is not defined +2025-03-10 15:30:01,127 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,127 - ERROR - Error in episode 3783: name 'args' is not defined +2025-03-10 15:30:01,131 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,131 - ERROR - Error in episode 3784: name 'args' is not defined +2025-03-10 15:30:01,134 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,134 - ERROR - Error in episode 3785: name 'args' is not defined +2025-03-10 15:30:01,137 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,137 - ERROR - Error in episode 3786: name 'args' is not defined +2025-03-10 15:30:01,139 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,140 - ERROR - Error in episode 3787: name 'args' is not defined +2025-03-10 15:30:01,142 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,142 - ERROR - Error in episode 3788: name 'args' is not defined +2025-03-10 15:30:01,145 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,145 - ERROR - Error in episode 3789: name 'args' is not defined +2025-03-10 15:30:01,148 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,148 - ERROR - Error in episode 3790: name 'args' is not defined +2025-03-10 15:30:01,150 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,150 - ERROR - Error in episode 3791: name 'args' is not defined +2025-03-10 15:30:01,153 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,153 - ERROR - Error in episode 3792: name 'args' is not defined +2025-03-10 15:30:01,157 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,157 - ERROR - Error in episode 3793: name 'args' is not defined +2025-03-10 15:30:01,159 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,160 - ERROR - Error in episode 3794: name 'args' is not defined +2025-03-10 15:30:01,162 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,163 - ERROR - Error in episode 3795: name 'args' is not defined +2025-03-10 15:30:01,166 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,166 - ERROR - Error in episode 3796: name 'args' is not defined +2025-03-10 15:30:01,169 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,169 - ERROR - Error in episode 3797: name 'args' is not defined +2025-03-10 15:30:01,172 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,172 - ERROR - Error in episode 3798: name 'args' is not defined +2025-03-10 15:30:01,175 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,175 - ERROR - Error in episode 3799: name 'args' is not defined +2025-03-10 15:30:01,177 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,178 - ERROR - Error in episode 3800: name 'args' is not defined +2025-03-10 15:30:01,180 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,181 - ERROR - Error in episode 3801: name 'args' is not defined +2025-03-10 15:30:01,183 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,183 - ERROR - Error in episode 3802: name 'args' is not defined +2025-03-10 15:30:01,186 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,186 - ERROR - Error in episode 3803: name 'args' is not defined +2025-03-10 15:30:01,188 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,189 - ERROR - Error in episode 3804: name 'args' is not defined +2025-03-10 15:30:01,191 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,192 - ERROR - Error in episode 3805: name 'args' is not defined +2025-03-10 15:30:01,194 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,195 - ERROR - Error in episode 3806: name 'args' is not defined +2025-03-10 15:30:01,198 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,199 - ERROR - Error in episode 3807: name 'args' is not defined +2025-03-10 15:30:01,202 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,202 - ERROR - Error in episode 3808: name 'args' is not defined +2025-03-10 15:30:01,205 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,205 - ERROR - Error in episode 3809: name 'args' is not defined +2025-03-10 15:30:01,208 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,209 - ERROR - Error in episode 3810: name 'args' is not defined +2025-03-10 15:30:01,211 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,212 - ERROR - Error in episode 3811: name 'args' is not defined +2025-03-10 15:30:01,215 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,217 - ERROR - Error in episode 3812: name 'args' is not defined +2025-03-10 15:30:01,220 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,221 - ERROR - Error in episode 3813: name 'args' is not defined +2025-03-10 15:30:01,224 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,224 - ERROR - Error in episode 3814: name 'args' is not defined +2025-03-10 15:30:01,227 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,227 - ERROR - Error in episode 3815: name 'args' is not defined +2025-03-10 15:30:01,230 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,231 - ERROR - Error in episode 3816: name 'args' is not defined +2025-03-10 15:30:01,233 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,234 - ERROR - Error in episode 3817: name 'args' is not defined +2025-03-10 15:30:01,236 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,237 - ERROR - Error in episode 3818: name 'args' is not defined +2025-03-10 15:30:01,239 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,240 - ERROR - Error in episode 3819: name 'args' is not defined +2025-03-10 15:30:01,242 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,242 - ERROR - Error in episode 3820: name 'args' is not defined +2025-03-10 15:30:01,244 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,244 - ERROR - Error in episode 3821: name 'args' is not defined +2025-03-10 15:30:01,248 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,249 - ERROR - Error in episode 3822: name 'args' is not defined +2025-03-10 15:30:01,251 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,251 - ERROR - Error in episode 3823: name 'args' is not defined +2025-03-10 15:30:01,254 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,254 - ERROR - Error in episode 3824: name 'args' is not defined +2025-03-10 15:30:01,257 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,257 - ERROR - Error in episode 3825: name 'args' is not defined +2025-03-10 15:30:01,259 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,260 - ERROR - Error in episode 3826: name 'args' is not defined +2025-03-10 15:30:01,262 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,262 - ERROR - Error in episode 3827: name 'args' is not defined +2025-03-10 15:30:01,266 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,267 - ERROR - Error in episode 3828: name 'args' is not defined +2025-03-10 15:30:01,269 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,269 - ERROR - Error in episode 3829: name 'args' is not defined +2025-03-10 15:30:01,272 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,272 - ERROR - Error in episode 3830: name 'args' is not defined +2025-03-10 15:30:01,275 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,276 - ERROR - Error in episode 3831: name 'args' is not defined +2025-03-10 15:30:01,278 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,278 - ERROR - Error in episode 3832: name 'args' is not defined +2025-03-10 15:30:01,281 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,281 - ERROR - Error in episode 3833: name 'args' is not defined +2025-03-10 15:30:01,284 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,284 - ERROR - Error in episode 3834: name 'args' is not defined +2025-03-10 15:30:01,287 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,287 - ERROR - Error in episode 3835: name 'args' is not defined +2025-03-10 15:30:01,290 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,290 - ERROR - Error in episode 3836: name 'args' is not defined +2025-03-10 15:30:01,292 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,293 - ERROR - Error in episode 3837: name 'args' is not defined +2025-03-10 15:30:01,296 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,296 - ERROR - Error in episode 3838: name 'args' is not defined +2025-03-10 15:30:01,299 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,299 - ERROR - Error in episode 3839: name 'args' is not defined +2025-03-10 15:30:01,302 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,302 - ERROR - Error in episode 3840: name 'args' is not defined +2025-03-10 15:30:01,305 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,305 - ERROR - Error in episode 3841: name 'args' is not defined +2025-03-10 15:30:01,309 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,309 - ERROR - Error in episode 3842: name 'args' is not defined +2025-03-10 15:30:01,312 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,312 - ERROR - Error in episode 3843: name 'args' is not defined +2025-03-10 15:30:01,316 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,316 - ERROR - Error in episode 3844: name 'args' is not defined +2025-03-10 15:30:01,319 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,319 - ERROR - Error in episode 3845: name 'args' is not defined +2025-03-10 15:30:01,322 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,323 - ERROR - Error in episode 3846: name 'args' is not defined +2025-03-10 15:30:01,325 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,325 - ERROR - Error in episode 3847: name 'args' is not defined +2025-03-10 15:30:01,328 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,329 - ERROR - Error in episode 3848: name 'args' is not defined +2025-03-10 15:30:01,331 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,331 - ERROR - Error in episode 3849: name 'args' is not defined +2025-03-10 15:30:01,333 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,334 - ERROR - Error in episode 3850: name 'args' is not defined +2025-03-10 15:30:01,336 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,336 - ERROR - Error in episode 3851: name 'args' is not defined +2025-03-10 15:30:01,339 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,339 - ERROR - Error in episode 3852: name 'args' is not defined +2025-03-10 15:30:01,342 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,342 - ERROR - Error in episode 3853: name 'args' is not defined +2025-03-10 15:30:01,344 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,345 - ERROR - Error in episode 3854: name 'args' is not defined +2025-03-10 15:30:01,347 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,347 - ERROR - Error in episode 3855: name 'args' is not defined +2025-03-10 15:30:01,350 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,350 - ERROR - Error in episode 3856: name 'args' is not defined +2025-03-10 15:30:01,353 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,353 - ERROR - Error in episode 3857: name 'args' is not defined +2025-03-10 15:30:01,355 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,357 - ERROR - Error in episode 3858: name 'args' is not defined +2025-03-10 15:30:01,359 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,359 - ERROR - Error in episode 3859: name 'args' is not defined +2025-03-10 15:30:01,362 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,362 - ERROR - Error in episode 3860: name 'args' is not defined +2025-03-10 15:30:01,365 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,365 - ERROR - Error in episode 3861: name 'args' is not defined +2025-03-10 15:30:01,368 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,368 - ERROR - Error in episode 3862: name 'args' is not defined +2025-03-10 15:30:01,370 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,370 - ERROR - Error in episode 3863: name 'args' is not defined +2025-03-10 15:30:01,374 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,374 - ERROR - Error in episode 3864: name 'args' is not defined +2025-03-10 15:30:01,376 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,377 - ERROR - Error in episode 3865: name 'args' is not defined +2025-03-10 15:30:01,379 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,379 - ERROR - Error in episode 3866: name 'args' is not defined +2025-03-10 15:30:01,382 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,382 - ERROR - Error in episode 3867: name 'args' is not defined +2025-03-10 15:30:01,385 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,385 - ERROR - Error in episode 3868: name 'args' is not defined +2025-03-10 15:30:01,387 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,388 - ERROR - Error in episode 3869: name 'args' is not defined +2025-03-10 15:30:01,391 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,391 - ERROR - Error in episode 3870: name 'args' is not defined +2025-03-10 15:30:01,393 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,394 - ERROR - Error in episode 3871: name 'args' is not defined +2025-03-10 15:30:01,397 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,397 - ERROR - Error in episode 3872: name 'args' is not defined +2025-03-10 15:30:01,400 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,400 - ERROR - Error in episode 3873: name 'args' is not defined +2025-03-10 15:30:01,403 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,403 - ERROR - Error in episode 3874: name 'args' is not defined +2025-03-10 15:30:01,406 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,406 - ERROR - Error in episode 3875: name 'args' is not defined +2025-03-10 15:30:01,409 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,409 - ERROR - Error in episode 3876: name 'args' is not defined +2025-03-10 15:30:01,412 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,413 - ERROR - Error in episode 3877: name 'args' is not defined +2025-03-10 15:30:01,415 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,415 - ERROR - Error in episode 3878: name 'args' is not defined +2025-03-10 15:30:01,418 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,418 - ERROR - Error in episode 3879: name 'args' is not defined +2025-03-10 15:30:01,421 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,421 - ERROR - Error in episode 3880: name 'args' is not defined +2025-03-10 15:30:01,424 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,424 - ERROR - Error in episode 3881: name 'args' is not defined +2025-03-10 15:30:01,427 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,427 - ERROR - Error in episode 3882: name 'args' is not defined +2025-03-10 15:30:01,430 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,430 - ERROR - Error in episode 3883: name 'args' is not defined +2025-03-10 15:30:01,433 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,433 - ERROR - Error in episode 3884: name 'args' is not defined +2025-03-10 15:30:01,436 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,437 - ERROR - Error in episode 3885: name 'args' is not defined +2025-03-10 15:30:01,439 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,440 - ERROR - Error in episode 3886: name 'args' is not defined +2025-03-10 15:30:01,442 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,442 - ERROR - Error in episode 3887: name 'args' is not defined +2025-03-10 15:30:01,445 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,445 - ERROR - Error in episode 3888: name 'args' is not defined +2025-03-10 15:30:01,447 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,448 - ERROR - Error in episode 3889: name 'args' is not defined +2025-03-10 15:30:01,450 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,452 - ERROR - Error in episode 3890: name 'args' is not defined +2025-03-10 15:30:01,454 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,454 - ERROR - Error in episode 3891: name 'args' is not defined +2025-03-10 15:30:01,457 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,457 - ERROR - Error in episode 3892: name 'args' is not defined +2025-03-10 15:30:01,459 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,460 - ERROR - Error in episode 3893: name 'args' is not defined +2025-03-10 15:30:01,462 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,463 - ERROR - Error in episode 3894: name 'args' is not defined +2025-03-10 15:30:01,465 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,465 - ERROR - Error in episode 3895: name 'args' is not defined +2025-03-10 15:30:01,468 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,468 - ERROR - Error in episode 3896: name 'args' is not defined +2025-03-10 15:30:01,471 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,471 - ERROR - Error in episode 3897: name 'args' is not defined +2025-03-10 15:30:01,473 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,474 - ERROR - Error in episode 3898: name 'args' is not defined +2025-03-10 15:30:01,476 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,477 - ERROR - Error in episode 3899: name 'args' is not defined +2025-03-10 15:30:01,479 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,480 - ERROR - Error in episode 3900: name 'args' is not defined +2025-03-10 15:30:01,482 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,482 - ERROR - Error in episode 3901: name 'args' is not defined +2025-03-10 15:30:01,485 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,486 - ERROR - Error in episode 3902: name 'args' is not defined +2025-03-10 15:30:01,488 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,489 - ERROR - Error in episode 3903: name 'args' is not defined +2025-03-10 15:30:01,491 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,491 - ERROR - Error in episode 3904: name 'args' is not defined +2025-03-10 15:30:01,494 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,494 - ERROR - Error in episode 3905: name 'args' is not defined +2025-03-10 15:30:01,497 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,497 - ERROR - Error in episode 3906: name 'args' is not defined +2025-03-10 15:30:01,500 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,500 - ERROR - Error in episode 3907: name 'args' is not defined +2025-03-10 15:30:01,503 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,503 - ERROR - Error in episode 3908: name 'args' is not defined +2025-03-10 15:30:01,506 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,506 - ERROR - Error in episode 3909: name 'args' is not defined +2025-03-10 15:30:01,509 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,509 - ERROR - Error in episode 3910: name 'args' is not defined +2025-03-10 15:30:01,512 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,512 - ERROR - Error in episode 3911: name 'args' is not defined +2025-03-10 15:30:01,515 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,515 - ERROR - Error in episode 3912: name 'args' is not defined +2025-03-10 15:30:01,518 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,518 - ERROR - Error in episode 3913: name 'args' is not defined +2025-03-10 15:30:01,521 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,522 - ERROR - Error in episode 3914: name 'args' is not defined +2025-03-10 15:30:01,524 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,525 - ERROR - Error in episode 3915: name 'args' is not defined +2025-03-10 15:30:01,527 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,527 - ERROR - Error in episode 3916: name 'args' is not defined +2025-03-10 15:30:01,530 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,530 - ERROR - Error in episode 3917: name 'args' is not defined +2025-03-10 15:30:01,533 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,533 - ERROR - Error in episode 3918: name 'args' is not defined +2025-03-10 15:30:01,536 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,537 - ERROR - Error in episode 3919: name 'args' is not defined +2025-03-10 15:30:01,539 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,540 - ERROR - Error in episode 3920: name 'args' is not defined +2025-03-10 15:30:01,543 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,544 - ERROR - Error in episode 3921: name 'args' is not defined +2025-03-10 15:30:01,546 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,547 - ERROR - Error in episode 3922: name 'args' is not defined +2025-03-10 15:30:01,550 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,550 - ERROR - Error in episode 3923: name 'args' is not defined +2025-03-10 15:30:01,554 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,554 - ERROR - Error in episode 3924: name 'args' is not defined +2025-03-10 15:30:01,557 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,557 - ERROR - Error in episode 3925: name 'args' is not defined +2025-03-10 15:30:01,561 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,561 - ERROR - Error in episode 3926: name 'args' is not defined +2025-03-10 15:30:01,565 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,566 - ERROR - Error in episode 3927: name 'args' is not defined +2025-03-10 15:30:01,568 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,569 - ERROR - Error in episode 3928: name 'args' is not defined +2025-03-10 15:30:01,573 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,573 - ERROR - Error in episode 3929: name 'args' is not defined +2025-03-10 15:30:01,577 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,577 - ERROR - Error in episode 3930: name 'args' is not defined +2025-03-10 15:30:01,580 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,580 - ERROR - Error in episode 3931: name 'args' is not defined +2025-03-10 15:30:01,583 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,583 - ERROR - Error in episode 3932: name 'args' is not defined +2025-03-10 15:30:01,586 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,586 - ERROR - Error in episode 3933: name 'args' is not defined +2025-03-10 15:30:01,589 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,589 - ERROR - Error in episode 3934: name 'args' is not defined +2025-03-10 15:30:01,592 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,592 - ERROR - Error in episode 3935: name 'args' is not defined +2025-03-10 15:30:01,596 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,596 - ERROR - Error in episode 3936: name 'args' is not defined +2025-03-10 15:30:01,598 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,598 - ERROR - Error in episode 3937: name 'args' is not defined +2025-03-10 15:30:01,601 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,602 - ERROR - Error in episode 3938: name 'args' is not defined +2025-03-10 15:30:01,604 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,605 - ERROR - Error in episode 3939: name 'args' is not defined +2025-03-10 15:30:01,607 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,607 - ERROR - Error in episode 3940: name 'args' is not defined +2025-03-10 15:30:01,611 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,611 - ERROR - Error in episode 3941: name 'args' is not defined +2025-03-10 15:30:01,614 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,614 - ERROR - Error in episode 3942: name 'args' is not defined +2025-03-10 15:30:01,617 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,617 - ERROR - Error in episode 3943: name 'args' is not defined +2025-03-10 15:30:01,620 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,621 - ERROR - Error in episode 3944: name 'args' is not defined +2025-03-10 15:30:01,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,624 - ERROR - Error in episode 3945: name 'args' is not defined +2025-03-10 15:30:01,626 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,627 - ERROR - Error in episode 3946: name 'args' is not defined +2025-03-10 15:30:01,629 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,629 - ERROR - Error in episode 3947: name 'args' is not defined +2025-03-10 15:30:01,633 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,634 - ERROR - Error in episode 3948: name 'args' is not defined +2025-03-10 15:30:01,637 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,637 - ERROR - Error in episode 3949: name 'args' is not defined +2025-03-10 15:30:01,640 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,641 - ERROR - Error in episode 3950: name 'args' is not defined +2025-03-10 15:30:01,643 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,644 - ERROR - Error in episode 3951: name 'args' is not defined +2025-03-10 15:30:01,646 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,646 - ERROR - Error in episode 3952: name 'args' is not defined +2025-03-10 15:30:01,650 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,650 - ERROR - Error in episode 3953: name 'args' is not defined +2025-03-10 15:30:01,652 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,652 - ERROR - Error in episode 3954: name 'args' is not defined +2025-03-10 15:30:01,655 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,655 - ERROR - Error in episode 3955: name 'args' is not defined +2025-03-10 15:30:01,658 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,658 - ERROR - Error in episode 3956: name 'args' is not defined +2025-03-10 15:30:01,661 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,661 - ERROR - Error in episode 3957: name 'args' is not defined +2025-03-10 15:30:01,663 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,665 - ERROR - Error in episode 3958: name 'args' is not defined +2025-03-10 15:30:01,668 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,668 - ERROR - Error in episode 3959: name 'args' is not defined +2025-03-10 15:30:01,670 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,671 - ERROR - Error in episode 3960: name 'args' is not defined +2025-03-10 15:30:01,674 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,674 - ERROR - Error in episode 3961: name 'args' is not defined +2025-03-10 15:30:01,677 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,677 - ERROR - Error in episode 3962: name 'args' is not defined +2025-03-10 15:30:01,680 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,680 - ERROR - Error in episode 3963: name 'args' is not defined +2025-03-10 15:30:01,683 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,683 - ERROR - Error in episode 3964: name 'args' is not defined +2025-03-10 15:30:01,686 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,686 - ERROR - Error in episode 3965: name 'args' is not defined +2025-03-10 15:30:01,689 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,689 - ERROR - Error in episode 3966: name 'args' is not defined +2025-03-10 15:30:01,692 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,692 - ERROR - Error in episode 3967: name 'args' is not defined +2025-03-10 15:30:01,696 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,696 - ERROR - Error in episode 3968: name 'args' is not defined +2025-03-10 15:30:01,698 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,698 - ERROR - Error in episode 3969: name 'args' is not defined +2025-03-10 15:30:01,700 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,701 - ERROR - Error in episode 3970: name 'args' is not defined +2025-03-10 15:30:01,703 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,703 - ERROR - Error in episode 3971: name 'args' is not defined +2025-03-10 15:30:01,705 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,707 - ERROR - Error in episode 3972: name 'args' is not defined +2025-03-10 15:30:01,709 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,709 - ERROR - Error in episode 3973: name 'args' is not defined +2025-03-10 15:30:01,712 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,712 - ERROR - Error in episode 3974: name 'args' is not defined +2025-03-10 15:30:01,714 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,715 - ERROR - Error in episode 3975: name 'args' is not defined +2025-03-10 15:30:01,718 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,718 - ERROR - Error in episode 3976: name 'args' is not defined +2025-03-10 15:30:01,720 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,721 - ERROR - Error in episode 3977: name 'args' is not defined +2025-03-10 15:30:01,724 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,724 - ERROR - Error in episode 3978: name 'args' is not defined +2025-03-10 15:30:01,726 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,727 - ERROR - Error in episode 3979: name 'args' is not defined +2025-03-10 15:30:01,729 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,729 - ERROR - Error in episode 3980: name 'args' is not defined +2025-03-10 15:30:01,732 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,732 - ERROR - Error in episode 3981: name 'args' is not defined +2025-03-10 15:30:01,735 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,735 - ERROR - Error in episode 3982: name 'args' is not defined +2025-03-10 15:30:01,737 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,738 - ERROR - Error in episode 3983: name 'args' is not defined +2025-03-10 15:30:01,741 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,741 - ERROR - Error in episode 3984: name 'args' is not defined +2025-03-10 15:30:01,744 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,744 - ERROR - Error in episode 3985: name 'args' is not defined +2025-03-10 15:30:01,747 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,747 - ERROR - Error in episode 3986: name 'args' is not defined +2025-03-10 15:30:01,750 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,750 - ERROR - Error in episode 3987: name 'args' is not defined +2025-03-10 15:30:01,753 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,753 - ERROR - Error in episode 3988: name 'args' is not defined +2025-03-10 15:30:01,756 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,756 - ERROR - Error in episode 3989: name 'args' is not defined +2025-03-10 15:30:01,759 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,759 - ERROR - Error in episode 3990: name 'args' is not defined +2025-03-10 15:30:01,761 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,763 - ERROR - Error in episode 3991: name 'args' is not defined +2025-03-10 15:30:01,765 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,765 - ERROR - Error in episode 3992: name 'args' is not defined +2025-03-10 15:30:01,768 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,768 - ERROR - Error in episode 3993: name 'args' is not defined +2025-03-10 15:30:01,770 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,771 - ERROR - Error in episode 3994: name 'args' is not defined +2025-03-10 15:30:01,773 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,773 - ERROR - Error in episode 3995: name 'args' is not defined +2025-03-10 15:30:01,776 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,776 - ERROR - Error in episode 3996: name 'args' is not defined +2025-03-10 15:30:01,778 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,779 - ERROR - Error in episode 3997: name 'args' is not defined +2025-03-10 15:30:01,781 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,782 - ERROR - Error in episode 3998: name 'args' is not defined +2025-03-10 15:30:01,784 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,784 - ERROR - Error in episode 3999: name 'args' is not defined +2025-03-10 15:30:01,787 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,787 - ERROR - Error in episode 4000: name 'args' is not defined +2025-03-10 15:30:01,791 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,791 - ERROR - Error in episode 4001: name 'args' is not defined +2025-03-10 15:30:01,794 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,794 - ERROR - Error in episode 4002: name 'args' is not defined +2025-03-10 15:30:01,796 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,797 - ERROR - Error in episode 4003: name 'args' is not defined +2025-03-10 15:30:01,800 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,800 - ERROR - Error in episode 4004: name 'args' is not defined +2025-03-10 15:30:01,802 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,802 - ERROR - Error in episode 4005: name 'args' is not defined +2025-03-10 15:30:01,805 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,805 - ERROR - Error in episode 4006: name 'args' is not defined +2025-03-10 15:30:01,808 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,808 - ERROR - Error in episode 4007: name 'args' is not defined +2025-03-10 15:30:01,810 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,811 - ERROR - Error in episode 4008: name 'args' is not defined +2025-03-10 15:30:01,813 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,814 - ERROR - Error in episode 4009: name 'args' is not defined +2025-03-10 15:30:01,816 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,817 - ERROR - Error in episode 4010: name 'args' is not defined +2025-03-10 15:30:01,819 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,819 - ERROR - Error in episode 4011: name 'args' is not defined +2025-03-10 15:30:01,822 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,822 - ERROR - Error in episode 4012: name 'args' is not defined +2025-03-10 15:30:01,825 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,826 - ERROR - Error in episode 4013: name 'args' is not defined +2025-03-10 15:30:01,828 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,828 - ERROR - Error in episode 4014: name 'args' is not defined +2025-03-10 15:30:01,831 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,831 - ERROR - Error in episode 4015: name 'args' is not defined +2025-03-10 15:30:01,834 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,834 - ERROR - Error in episode 4016: name 'args' is not defined +2025-03-10 15:30:01,837 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,837 - ERROR - Error in episode 4017: name 'args' is not defined +2025-03-10 15:30:01,841 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,841 - ERROR - Error in episode 4018: name 'args' is not defined +2025-03-10 15:30:01,843 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,844 - ERROR - Error in episode 4019: name 'args' is not defined +2025-03-10 15:30:01,846 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,846 - ERROR - Error in episode 4020: name 'args' is not defined +2025-03-10 15:30:01,849 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,849 - ERROR - Error in episode 4021: name 'args' is not defined +2025-03-10 15:30:01,852 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,852 - ERROR - Error in episode 4022: name 'args' is not defined +2025-03-10 15:30:01,854 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,855 - ERROR - Error in episode 4023: name 'args' is not defined +2025-03-10 15:30:01,858 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,858 - ERROR - Error in episode 4024: name 'args' is not defined +2025-03-10 15:30:01,861 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,861 - ERROR - Error in episode 4025: name 'args' is not defined +2025-03-10 15:30:01,863 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,864 - ERROR - Error in episode 4026: name 'args' is not defined +2025-03-10 15:30:01,866 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,866 - ERROR - Error in episode 4027: name 'args' is not defined +2025-03-10 15:30:01,869 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,869 - ERROR - Error in episode 4028: name 'args' is not defined +2025-03-10 15:30:01,871 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,872 - ERROR - Error in episode 4029: name 'args' is not defined +2025-03-10 15:30:01,874 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,875 - ERROR - Error in episode 4030: name 'args' is not defined +2025-03-10 15:30:01,877 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,877 - ERROR - Error in episode 4031: name 'args' is not defined +2025-03-10 15:30:01,880 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,880 - ERROR - Error in episode 4032: name 'args' is not defined +2025-03-10 15:30:01,883 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,883 - ERROR - Error in episode 4033: name 'args' is not defined +2025-03-10 15:30:01,885 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,885 - ERROR - Error in episode 4034: name 'args' is not defined +2025-03-10 15:30:01,888 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,888 - ERROR - Error in episode 4035: name 'args' is not defined +2025-03-10 15:30:01,891 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,891 - ERROR - Error in episode 4036: name 'args' is not defined +2025-03-10 15:30:01,894 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,894 - ERROR - Error in episode 4037: name 'args' is not defined +2025-03-10 15:30:01,896 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,897 - ERROR - Error in episode 4038: name 'args' is not defined +2025-03-10 15:30:01,899 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,899 - ERROR - Error in episode 4039: name 'args' is not defined +2025-03-10 15:30:01,902 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,902 - ERROR - Error in episode 4040: name 'args' is not defined +2025-03-10 15:30:01,904 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,904 - ERROR - Error in episode 4041: name 'args' is not defined +2025-03-10 15:30:01,907 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,908 - ERROR - Error in episode 4042: name 'args' is not defined +2025-03-10 15:30:01,910 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,910 - ERROR - Error in episode 4043: name 'args' is not defined +2025-03-10 15:30:01,913 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,913 - ERROR - Error in episode 4044: name 'args' is not defined +2025-03-10 15:30:01,916 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,916 - ERROR - Error in episode 4045: name 'args' is not defined +2025-03-10 15:30:01,919 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,920 - ERROR - Error in episode 4046: name 'args' is not defined +2025-03-10 15:30:01,922 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,922 - ERROR - Error in episode 4047: name 'args' is not defined +2025-03-10 15:30:01,925 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,926 - ERROR - Error in episode 4048: name 'args' is not defined +2025-03-10 15:30:01,928 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,928 - ERROR - Error in episode 4049: name 'args' is not defined +2025-03-10 15:30:01,931 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,931 - ERROR - Error in episode 4050: name 'args' is not defined +2025-03-10 15:30:01,934 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,935 - ERROR - Error in episode 4051: name 'args' is not defined +2025-03-10 15:30:01,937 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,937 - ERROR - Error in episode 4052: name 'args' is not defined +2025-03-10 15:30:01,940 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,940 - ERROR - Error in episode 4053: name 'args' is not defined +2025-03-10 15:30:01,942 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,943 - ERROR - Error in episode 4054: name 'args' is not defined +2025-03-10 15:30:01,945 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,946 - ERROR - Error in episode 4055: name 'args' is not defined +2025-03-10 15:30:01,948 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,950 - ERROR - Error in episode 4056: name 'args' is not defined +2025-03-10 15:30:01,952 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,952 - ERROR - Error in episode 4057: name 'args' is not defined +2025-03-10 15:30:01,955 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,955 - ERROR - Error in episode 4058: name 'args' is not defined +2025-03-10 15:30:01,958 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,959 - ERROR - Error in episode 4059: name 'args' is not defined +2025-03-10 15:30:01,961 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,961 - ERROR - Error in episode 4060: name 'args' is not defined +2025-03-10 15:30:01,964 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,965 - ERROR - Error in episode 4061: name 'args' is not defined +2025-03-10 15:30:01,967 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,967 - ERROR - Error in episode 4062: name 'args' is not defined +2025-03-10 15:30:01,969 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,970 - ERROR - Error in episode 4063: name 'args' is not defined +2025-03-10 15:30:01,972 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,972 - ERROR - Error in episode 4064: name 'args' is not defined +2025-03-10 15:30:01,975 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,975 - ERROR - Error in episode 4065: name 'args' is not defined +2025-03-10 15:30:01,977 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,978 - ERROR - Error in episode 4066: name 'args' is not defined +2025-03-10 15:30:01,980 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,981 - ERROR - Error in episode 4067: name 'args' is not defined +2025-03-10 15:30:01,983 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,983 - ERROR - Error in episode 4068: name 'args' is not defined +2025-03-10 15:30:01,985 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,986 - ERROR - Error in episode 4069: name 'args' is not defined +2025-03-10 15:30:01,988 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,988 - ERROR - Error in episode 4070: name 'args' is not defined +2025-03-10 15:30:01,991 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,991 - ERROR - Error in episode 4071: name 'args' is not defined +2025-03-10 15:30:01,994 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,994 - ERROR - Error in episode 4072: name 'args' is not defined +2025-03-10 15:30:01,996 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:01,997 - ERROR - Error in episode 4073: name 'args' is not defined +2025-03-10 15:30:02,000 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,001 - ERROR - Error in episode 4074: name 'args' is not defined +2025-03-10 15:30:02,003 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,003 - ERROR - Error in episode 4075: name 'args' is not defined +2025-03-10 15:30:02,006 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,007 - ERROR - Error in episode 4076: name 'args' is not defined +2025-03-10 15:30:02,009 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,009 - ERROR - Error in episode 4077: name 'args' is not defined +2025-03-10 15:30:02,012 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,012 - ERROR - Error in episode 4078: name 'args' is not defined +2025-03-10 15:30:02,015 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,016 - ERROR - Error in episode 4079: name 'args' is not defined +2025-03-10 15:30:02,018 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,019 - ERROR - Error in episode 4080: name 'args' is not defined +2025-03-10 15:30:02,022 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,022 - ERROR - Error in episode 4081: name 'args' is not defined +2025-03-10 15:30:02,025 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,025 - ERROR - Error in episode 4082: name 'args' is not defined +2025-03-10 15:30:02,029 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,029 - ERROR - Error in episode 4083: name 'args' is not defined +2025-03-10 15:30:02,032 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,032 - ERROR - Error in episode 4084: name 'args' is not defined +2025-03-10 15:30:02,035 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,035 - ERROR - Error in episode 4085: name 'args' is not defined +2025-03-10 15:30:02,037 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,038 - ERROR - Error in episode 4086: name 'args' is not defined +2025-03-10 15:30:02,040 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,041 - ERROR - Error in episode 4087: name 'args' is not defined +2025-03-10 15:30:02,043 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,043 - ERROR - Error in episode 4088: name 'args' is not defined +2025-03-10 15:30:02,046 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,046 - ERROR - Error in episode 4089: name 'args' is not defined +2025-03-10 15:30:02,049 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,049 - ERROR - Error in episode 4090: name 'args' is not defined +2025-03-10 15:30:02,052 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,052 - ERROR - Error in episode 4091: name 'args' is not defined +2025-03-10 15:30:02,055 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,055 - ERROR - Error in episode 4092: name 'args' is not defined +2025-03-10 15:30:02,057 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,058 - ERROR - Error in episode 4093: name 'args' is not defined +2025-03-10 15:30:02,060 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,060 - ERROR - Error in episode 4094: name 'args' is not defined +2025-03-10 15:30:02,062 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,063 - ERROR - Error in episode 4095: name 'args' is not defined +2025-03-10 15:30:02,066 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,066 - ERROR - Error in episode 4096: name 'args' is not defined +2025-03-10 15:30:02,069 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,069 - ERROR - Error in episode 4097: name 'args' is not defined +2025-03-10 15:30:02,071 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,072 - ERROR - Error in episode 4098: name 'args' is not defined +2025-03-10 15:30:02,075 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,076 - ERROR - Error in episode 4099: name 'args' is not defined +2025-03-10 15:30:02,078 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,079 - ERROR - Error in episode 4100: name 'args' is not defined +2025-03-10 15:30:02,082 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,082 - ERROR - Error in episode 4101: name 'args' is not defined +2025-03-10 15:30:02,084 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,085 - ERROR - Error in episode 4102: name 'args' is not defined +2025-03-10 15:30:02,087 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,087 - ERROR - Error in episode 4103: name 'args' is not defined +2025-03-10 15:30:02,090 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,091 - ERROR - Error in episode 4104: name 'args' is not defined +2025-03-10 15:30:02,093 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,094 - ERROR - Error in episode 4105: name 'args' is not defined +2025-03-10 15:30:02,096 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,097 - ERROR - Error in episode 4106: name 'args' is not defined +2025-03-10 15:30:02,099 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,099 - ERROR - Error in episode 4107: name 'args' is not defined +2025-03-10 15:30:02,102 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,103 - ERROR - Error in episode 4108: name 'args' is not defined +2025-03-10 15:30:02,105 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,106 - ERROR - Error in episode 4109: name 'args' is not defined +2025-03-10 15:30:02,109 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,109 - ERROR - Error in episode 4110: name 'args' is not defined +2025-03-10 15:30:02,112 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,112 - ERROR - Error in episode 4111: name 'args' is not defined +2025-03-10 15:30:02,114 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,115 - ERROR - Error in episode 4112: name 'args' is not defined +2025-03-10 15:30:02,118 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,118 - ERROR - Error in episode 4113: name 'args' is not defined +2025-03-10 15:30:02,120 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,121 - ERROR - Error in episode 4114: name 'args' is not defined +2025-03-10 15:30:02,124 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,124 - ERROR - Error in episode 4115: name 'args' is not defined +2025-03-10 15:30:02,126 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,127 - ERROR - Error in episode 4116: name 'args' is not defined +2025-03-10 15:30:02,130 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,130 - ERROR - Error in episode 4117: name 'args' is not defined +2025-03-10 15:30:02,133 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,133 - ERROR - Error in episode 4118: name 'args' is not defined +2025-03-10 15:30:02,136 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,136 - ERROR - Error in episode 4119: name 'args' is not defined +2025-03-10 15:30:02,138 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,139 - ERROR - Error in episode 4120: name 'args' is not defined +2025-03-10 15:30:02,142 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,142 - ERROR - Error in episode 4121: name 'args' is not defined +2025-03-10 15:30:02,145 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,145 - ERROR - Error in episode 4122: name 'args' is not defined +2025-03-10 15:30:02,147 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,147 - ERROR - Error in episode 4123: name 'args' is not defined +2025-03-10 15:30:02,151 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,151 - ERROR - Error in episode 4124: name 'args' is not defined +2025-03-10 15:30:02,153 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,153 - ERROR - Error in episode 4125: name 'args' is not defined +2025-03-10 15:30:02,157 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,157 - ERROR - Error in episode 4126: name 'args' is not defined +2025-03-10 15:30:02,159 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,160 - ERROR - Error in episode 4127: name 'args' is not defined +2025-03-10 15:30:02,162 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,162 - ERROR - Error in episode 4128: name 'args' is not defined +2025-03-10 15:30:02,165 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,166 - ERROR - Error in episode 4129: name 'args' is not defined +2025-03-10 15:30:02,168 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,168 - ERROR - Error in episode 4130: name 'args' is not defined +2025-03-10 15:30:02,171 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,171 - ERROR - Error in episode 4131: name 'args' is not defined +2025-03-10 15:30:02,174 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,175 - ERROR - Error in episode 4132: name 'args' is not defined +2025-03-10 15:30:02,177 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,177 - ERROR - Error in episode 4133: name 'args' is not defined +2025-03-10 15:30:02,180 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,180 - ERROR - Error in episode 4134: name 'args' is not defined +2025-03-10 15:30:02,183 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,183 - ERROR - Error in episode 4135: name 'args' is not defined +2025-03-10 15:30:02,186 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,186 - ERROR - Error in episode 4136: name 'args' is not defined +2025-03-10 15:30:02,189 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,189 - ERROR - Error in episode 4137: name 'args' is not defined +2025-03-10 15:30:02,192 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,193 - ERROR - Error in episode 4138: name 'args' is not defined +2025-03-10 15:30:02,195 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,195 - ERROR - Error in episode 4139: name 'args' is not defined +2025-03-10 15:30:02,198 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,198 - ERROR - Error in episode 4140: name 'args' is not defined +2025-03-10 15:30:02,201 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,201 - ERROR - Error in episode 4141: name 'args' is not defined +2025-03-10 15:30:02,204 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,204 - ERROR - Error in episode 4142: name 'args' is not defined +2025-03-10 15:30:02,208 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,208 - ERROR - Error in episode 4143: name 'args' is not defined +2025-03-10 15:30:02,210 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,211 - ERROR - Error in episode 4144: name 'args' is not defined +2025-03-10 15:30:02,213 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,213 - ERROR - Error in episode 4145: name 'args' is not defined +2025-03-10 15:30:02,217 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,217 - ERROR - Error in episode 4146: name 'args' is not defined +2025-03-10 15:30:02,219 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,220 - ERROR - Error in episode 4147: name 'args' is not defined +2025-03-10 15:30:02,222 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,223 - ERROR - Error in episode 4148: name 'args' is not defined +2025-03-10 15:30:02,225 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,226 - ERROR - Error in episode 4149: name 'args' is not defined +2025-03-10 15:30:02,228 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,229 - ERROR - Error in episode 4150: name 'args' is not defined +2025-03-10 15:30:02,231 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,231 - ERROR - Error in episode 4151: name 'args' is not defined +2025-03-10 15:30:02,234 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,234 - ERROR - Error in episode 4152: name 'args' is not defined +2025-03-10 15:30:02,236 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,236 - ERROR - Error in episode 4153: name 'args' is not defined +2025-03-10 15:30:02,239 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,239 - ERROR - Error in episode 4154: name 'args' is not defined +2025-03-10 15:30:02,241 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,242 - ERROR - Error in episode 4155: name 'args' is not defined +2025-03-10 15:30:02,244 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,244 - ERROR - Error in episode 4156: name 'args' is not defined +2025-03-10 15:30:02,247 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,247 - ERROR - Error in episode 4157: name 'args' is not defined +2025-03-10 15:30:02,249 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,249 - ERROR - Error in episode 4158: name 'args' is not defined +2025-03-10 15:30:02,252 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,252 - ERROR - Error in episode 4159: name 'args' is not defined +2025-03-10 15:30:02,255 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,255 - ERROR - Error in episode 4160: name 'args' is not defined +2025-03-10 15:30:02,258 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,258 - ERROR - Error in episode 4161: name 'args' is not defined +2025-03-10 15:30:02,261 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,261 - ERROR - Error in episode 4162: name 'args' is not defined +2025-03-10 15:30:02,264 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,264 - ERROR - Error in episode 4163: name 'args' is not defined +2025-03-10 15:30:02,266 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,267 - ERROR - Error in episode 4164: name 'args' is not defined +2025-03-10 15:30:02,269 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,271 - ERROR - Error in episode 4165: name 'args' is not defined +2025-03-10 15:30:02,273 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,273 - ERROR - Error in episode 4166: name 'args' is not defined +2025-03-10 15:30:02,276 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,276 - ERROR - Error in episode 4167: name 'args' is not defined +2025-03-10 15:30:02,278 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,279 - ERROR - Error in episode 4168: name 'args' is not defined +2025-03-10 15:30:02,281 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,281 - ERROR - Error in episode 4169: name 'args' is not defined +2025-03-10 15:30:02,284 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,284 - ERROR - Error in episode 4170: name 'args' is not defined +2025-03-10 15:30:02,287 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,287 - ERROR - Error in episode 4171: name 'args' is not defined +2025-03-10 15:30:02,290 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,290 - ERROR - Error in episode 4172: name 'args' is not defined +2025-03-10 15:30:02,293 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,293 - ERROR - Error in episode 4173: name 'args' is not defined +2025-03-10 15:30:02,296 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,296 - ERROR - Error in episode 4174: name 'args' is not defined +2025-03-10 15:30:02,299 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,299 - ERROR - Error in episode 4175: name 'args' is not defined +2025-03-10 15:30:02,301 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,302 - ERROR - Error in episode 4176: name 'args' is not defined +2025-03-10 15:30:02,304 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,305 - ERROR - Error in episode 4177: name 'args' is not defined +2025-03-10 15:30:02,307 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,307 - ERROR - Error in episode 4178: name 'args' is not defined +2025-03-10 15:30:02,310 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,310 - ERROR - Error in episode 4179: name 'args' is not defined +2025-03-10 15:30:02,313 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,313 - ERROR - Error in episode 4180: name 'args' is not defined +2025-03-10 15:30:02,315 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,316 - ERROR - Error in episode 4181: name 'args' is not defined +2025-03-10 15:30:02,318 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,318 - ERROR - Error in episode 4182: name 'args' is not defined +2025-03-10 15:30:02,321 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,321 - ERROR - Error in episode 4183: name 'args' is not defined +2025-03-10 15:30:02,324 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,324 - ERROR - Error in episode 4184: name 'args' is not defined +2025-03-10 15:30:02,327 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,327 - ERROR - Error in episode 4185: name 'args' is not defined +2025-03-10 15:30:02,330 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,330 - ERROR - Error in episode 4186: name 'args' is not defined +2025-03-10 15:30:02,332 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,333 - ERROR - Error in episode 4187: name 'args' is not defined +2025-03-10 15:30:02,335 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,336 - ERROR - Error in episode 4188: name 'args' is not defined +2025-03-10 15:30:02,338 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,338 - ERROR - Error in episode 4189: name 'args' is not defined +2025-03-10 15:30:02,341 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,341 - ERROR - Error in episode 4190: name 'args' is not defined +2025-03-10 15:30:02,343 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,344 - ERROR - Error in episode 4191: name 'args' is not defined +2025-03-10 15:30:02,346 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,347 - ERROR - Error in episode 4192: name 'args' is not defined +2025-03-10 15:30:02,349 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,349 - ERROR - Error in episode 4193: name 'args' is not defined +2025-03-10 15:30:02,351 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,352 - ERROR - Error in episode 4194: name 'args' is not defined +2025-03-10 15:30:02,355 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,355 - ERROR - Error in episode 4195: name 'args' is not defined +2025-03-10 15:30:02,357 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,357 - ERROR - Error in episode 4196: name 'args' is not defined +2025-03-10 15:30:02,360 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,360 - ERROR - Error in episode 4197: name 'args' is not defined +2025-03-10 15:30:02,363 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,363 - ERROR - Error in episode 4198: name 'args' is not defined +2025-03-10 15:30:02,365 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,366 - ERROR - Error in episode 4199: name 'args' is not defined +2025-03-10 15:30:02,368 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,368 - ERROR - Error in episode 4200: name 'args' is not defined +2025-03-10 15:30:02,371 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,373 - ERROR - Error in episode 4201: name 'args' is not defined +2025-03-10 15:30:02,375 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,375 - ERROR - Error in episode 4202: name 'args' is not defined +2025-03-10 15:30:02,378 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,379 - ERROR - Error in episode 4203: name 'args' is not defined +2025-03-10 15:30:02,381 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,381 - ERROR - Error in episode 4204: name 'args' is not defined +2025-03-10 15:30:02,383 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,384 - ERROR - Error in episode 4205: name 'args' is not defined +2025-03-10 15:30:02,386 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,386 - ERROR - Error in episode 4206: name 'args' is not defined +2025-03-10 15:30:02,389 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,389 - ERROR - Error in episode 4207: name 'args' is not defined +2025-03-10 15:30:02,392 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,392 - ERROR - Error in episode 4208: name 'args' is not defined +2025-03-10 15:30:02,395 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,395 - ERROR - Error in episode 4209: name 'args' is not defined +2025-03-10 15:30:02,398 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,398 - ERROR - Error in episode 4210: name 'args' is not defined +2025-03-10 15:30:02,401 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,401 - ERROR - Error in episode 4211: name 'args' is not defined +2025-03-10 15:30:02,404 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,404 - ERROR - Error in episode 4212: name 'args' is not defined +2025-03-10 15:30:02,407 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,408 - ERROR - Error in episode 4213: name 'args' is not defined +2025-03-10 15:30:02,410 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,410 - ERROR - Error in episode 4214: name 'args' is not defined +2025-03-10 15:30:02,414 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,414 - ERROR - Error in episode 4215: name 'args' is not defined +2025-03-10 15:30:02,417 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,417 - ERROR - Error in episode 4216: name 'args' is not defined +2025-03-10 15:30:02,419 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,420 - ERROR - Error in episode 4217: name 'args' is not defined +2025-03-10 15:30:02,422 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,422 - ERROR - Error in episode 4218: name 'args' is not defined +2025-03-10 15:30:02,426 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,426 - ERROR - Error in episode 4219: name 'args' is not defined +2025-03-10 15:30:02,428 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,429 - ERROR - Error in episode 4220: name 'args' is not defined +2025-03-10 15:30:02,432 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,432 - ERROR - Error in episode 4221: name 'args' is not defined +2025-03-10 15:30:02,436 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,436 - ERROR - Error in episode 4222: name 'args' is not defined +2025-03-10 15:30:02,438 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,439 - ERROR - Error in episode 4223: name 'args' is not defined +2025-03-10 15:30:02,441 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,442 - ERROR - Error in episode 4224: name 'args' is not defined +2025-03-10 15:30:02,444 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,444 - ERROR - Error in episode 4225: name 'args' is not defined +2025-03-10 15:30:02,447 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,447 - ERROR - Error in episode 4226: name 'args' is not defined +2025-03-10 15:30:02,450 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,450 - ERROR - Error in episode 4227: name 'args' is not defined +2025-03-10 15:30:02,452 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,453 - ERROR - Error in episode 4228: name 'args' is not defined +2025-03-10 15:30:02,455 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,456 - ERROR - Error in episode 4229: name 'args' is not defined +2025-03-10 15:30:02,458 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,458 - ERROR - Error in episode 4230: name 'args' is not defined +2025-03-10 15:30:02,461 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,461 - ERROR - Error in episode 4231: name 'args' is not defined +2025-03-10 15:30:02,464 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,464 - ERROR - Error in episode 4232: name 'args' is not defined +2025-03-10 15:30:02,467 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,467 - ERROR - Error in episode 4233: name 'args' is not defined +2025-03-10 15:30:02,470 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,470 - ERROR - Error in episode 4234: name 'args' is not defined +2025-03-10 15:30:02,472 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,473 - ERROR - Error in episode 4235: name 'args' is not defined +2025-03-10 15:30:02,475 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,475 - ERROR - Error in episode 4236: name 'args' is not defined +2025-03-10 15:30:02,478 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,478 - ERROR - Error in episode 4237: name 'args' is not defined +2025-03-10 15:30:02,480 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,481 - ERROR - Error in episode 4238: name 'args' is not defined +2025-03-10 15:30:02,484 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,484 - ERROR - Error in episode 4239: name 'args' is not defined +2025-03-10 15:30:02,486 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,487 - ERROR - Error in episode 4240: name 'args' is not defined +2025-03-10 15:30:02,489 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,489 - ERROR - Error in episode 4241: name 'args' is not defined +2025-03-10 15:30:02,492 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,493 - ERROR - Error in episode 4242: name 'args' is not defined +2025-03-10 15:30:02,495 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,496 - ERROR - Error in episode 4243: name 'args' is not defined +2025-03-10 15:30:02,498 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,500 - ERROR - Error in episode 4244: name 'args' is not defined +2025-03-10 15:30:02,502 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,502 - ERROR - Error in episode 4245: name 'args' is not defined +2025-03-10 15:30:02,505 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,505 - ERROR - Error in episode 4246: name 'args' is not defined +2025-03-10 15:30:02,508 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,508 - ERROR - Error in episode 4247: name 'args' is not defined +2025-03-10 15:30:02,510 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,511 - ERROR - Error in episode 4248: name 'args' is not defined +2025-03-10 15:30:02,513 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,513 - ERROR - Error in episode 4249: name 'args' is not defined +2025-03-10 15:30:02,516 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,516 - ERROR - Error in episode 4250: name 'args' is not defined +2025-03-10 15:30:02,520 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,520 - ERROR - Error in episode 4251: name 'args' is not defined +2025-03-10 15:30:02,522 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,523 - ERROR - Error in episode 4252: name 'args' is not defined +2025-03-10 15:30:02,525 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,526 - ERROR - Error in episode 4253: name 'args' is not defined +2025-03-10 15:30:02,528 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,528 - ERROR - Error in episode 4254: name 'args' is not defined +2025-03-10 15:30:02,532 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,533 - ERROR - Error in episode 4255: name 'args' is not defined +2025-03-10 15:30:02,535 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,535 - ERROR - Error in episode 4256: name 'args' is not defined +2025-03-10 15:30:02,538 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,538 - ERROR - Error in episode 4257: name 'args' is not defined +2025-03-10 15:30:02,540 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,541 - ERROR - Error in episode 4258: name 'args' is not defined +2025-03-10 15:30:02,544 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,544 - ERROR - Error in episode 4259: name 'args' is not defined +2025-03-10 15:30:02,546 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,547 - ERROR - Error in episode 4260: name 'args' is not defined +2025-03-10 15:30:02,549 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,549 - ERROR - Error in episode 4261: name 'args' is not defined +2025-03-10 15:30:02,552 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,552 - ERROR - Error in episode 4262: name 'args' is not defined +2025-03-10 15:30:02,555 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,555 - ERROR - Error in episode 4263: name 'args' is not defined +2025-03-10 15:30:02,558 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,558 - ERROR - Error in episode 4264: name 'args' is not defined +2025-03-10 15:30:02,560 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,560 - ERROR - Error in episode 4265: name 'args' is not defined +2025-03-10 15:30:02,563 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,563 - ERROR - Error in episode 4266: name 'args' is not defined +2025-03-10 15:30:02,566 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,566 - ERROR - Error in episode 4267: name 'args' is not defined +2025-03-10 15:30:02,568 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,569 - ERROR - Error in episode 4268: name 'args' is not defined +2025-03-10 15:30:02,572 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,572 - ERROR - Error in episode 4269: name 'args' is not defined +2025-03-10 15:30:02,575 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,575 - ERROR - Error in episode 4270: name 'args' is not defined +2025-03-10 15:30:02,577 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,578 - ERROR - Error in episode 4271: name 'args' is not defined +2025-03-10 15:30:02,581 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,581 - ERROR - Error in episode 4272: name 'args' is not defined +2025-03-10 15:30:02,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,584 - ERROR - Error in episode 4273: name 'args' is not defined +2025-03-10 15:30:02,587 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,587 - ERROR - Error in episode 4274: name 'args' is not defined +2025-03-10 15:30:02,591 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,591 - ERROR - Error in episode 4275: name 'args' is not defined +2025-03-10 15:30:02,595 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,595 - ERROR - Error in episode 4276: name 'args' is not defined +2025-03-10 15:30:02,597 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,598 - ERROR - Error in episode 4277: name 'args' is not defined +2025-03-10 15:30:02,600 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,601 - ERROR - Error in episode 4278: name 'args' is not defined +2025-03-10 15:30:02,603 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,603 - ERROR - Error in episode 4279: name 'args' is not defined +2025-03-10 15:30:02,606 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,606 - ERROR - Error in episode 4280: name 'args' is not defined +2025-03-10 15:30:02,609 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,609 - ERROR - Error in episode 4281: name 'args' is not defined +2025-03-10 15:30:02,611 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,612 - ERROR - Error in episode 4282: name 'args' is not defined +2025-03-10 15:30:02,614 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,614 - ERROR - Error in episode 4283: name 'args' is not defined +2025-03-10 15:30:02,618 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,618 - ERROR - Error in episode 4284: name 'args' is not defined +2025-03-10 15:30:02,620 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,621 - ERROR - Error in episode 4285: name 'args' is not defined +2025-03-10 15:30:02,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,623 - ERROR - Error in episode 4286: name 'args' is not defined +2025-03-10 15:30:02,626 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,626 - ERROR - Error in episode 4287: name 'args' is not defined +2025-03-10 15:30:02,628 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,629 - ERROR - Error in episode 4288: name 'args' is not defined +2025-03-10 15:30:02,633 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,633 - ERROR - Error in episode 4289: name 'args' is not defined +2025-03-10 15:30:02,636 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,636 - ERROR - Error in episode 4290: name 'args' is not defined +2025-03-10 15:30:02,639 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,639 - ERROR - Error in episode 4291: name 'args' is not defined +2025-03-10 15:30:02,642 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,642 - ERROR - Error in episode 4292: name 'args' is not defined +2025-03-10 15:30:02,645 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,645 - ERROR - Error in episode 4293: name 'args' is not defined +2025-03-10 15:30:02,648 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,648 - ERROR - Error in episode 4294: name 'args' is not defined +2025-03-10 15:30:02,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,651 - ERROR - Error in episode 4295: name 'args' is not defined +2025-03-10 15:30:02,654 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,654 - ERROR - Error in episode 4296: name 'args' is not defined +2025-03-10 15:30:02,656 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,656 - ERROR - Error in episode 4297: name 'args' is not defined +2025-03-10 15:30:02,660 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,661 - ERROR - Error in episode 4298: name 'args' is not defined +2025-03-10 15:30:02,663 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,664 - ERROR - Error in episode 4299: name 'args' is not defined +2025-03-10 15:30:02,666 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,666 - ERROR - Error in episode 4300: name 'args' is not defined +2025-03-10 15:30:02,669 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,669 - ERROR - Error in episode 4301: name 'args' is not defined +2025-03-10 15:30:02,671 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,672 - ERROR - Error in episode 4302: name 'args' is not defined +2025-03-10 15:30:02,675 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,675 - ERROR - Error in episode 4303: name 'args' is not defined +2025-03-10 15:30:02,678 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,678 - ERROR - Error in episode 4304: name 'args' is not defined +2025-03-10 15:30:02,680 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,681 - ERROR - Error in episode 4305: name 'args' is not defined +2025-03-10 15:30:02,683 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,684 - ERROR - Error in episode 4306: name 'args' is not defined +2025-03-10 15:30:02,686 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,686 - ERROR - Error in episode 4307: name 'args' is not defined +2025-03-10 15:30:02,689 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,690 - ERROR - Error in episode 4308: name 'args' is not defined +2025-03-10 15:30:02,692 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,693 - ERROR - Error in episode 4309: name 'args' is not defined +2025-03-10 15:30:02,695 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,696 - ERROR - Error in episode 4310: name 'args' is not defined +2025-03-10 15:30:02,698 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,698 - ERROR - Error in episode 4311: name 'args' is not defined +2025-03-10 15:30:02,701 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,701 - ERROR - Error in episode 4312: name 'args' is not defined +2025-03-10 15:30:02,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,704 - ERROR - Error in episode 4313: name 'args' is not defined +2025-03-10 15:30:02,706 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,707 - ERROR - Error in episode 4314: name 'args' is not defined +2025-03-10 15:30:02,709 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,710 - ERROR - Error in episode 4315: name 'args' is not defined +2025-03-10 15:30:02,712 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,712 - ERROR - Error in episode 4316: name 'args' is not defined +2025-03-10 15:30:02,715 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,715 - ERROR - Error in episode 4317: name 'args' is not defined +2025-03-10 15:30:02,718 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,718 - ERROR - Error in episode 4318: name 'args' is not defined +2025-03-10 15:30:02,721 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,721 - ERROR - Error in episode 4319: name 'args' is not defined +2025-03-10 15:30:02,724 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,724 - ERROR - Error in episode 4320: name 'args' is not defined +2025-03-10 15:30:02,728 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,728 - ERROR - Error in episode 4321: name 'args' is not defined +2025-03-10 15:30:02,730 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,730 - ERROR - Error in episode 4322: name 'args' is not defined +2025-03-10 15:30:02,733 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,734 - ERROR - Error in episode 4323: name 'args' is not defined +2025-03-10 15:30:02,736 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,737 - ERROR - Error in episode 4324: name 'args' is not defined +2025-03-10 15:30:02,740 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,740 - ERROR - Error in episode 4325: name 'args' is not defined +2025-03-10 15:30:02,743 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,743 - ERROR - Error in episode 4326: name 'args' is not defined +2025-03-10 15:30:02,745 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,746 - ERROR - Error in episode 4327: name 'args' is not defined +2025-03-10 15:30:02,748 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,748 - ERROR - Error in episode 4328: name 'args' is not defined +2025-03-10 15:30:02,751 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,751 - ERROR - Error in episode 4329: name 'args' is not defined +2025-03-10 15:30:02,753 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,754 - ERROR - Error in episode 4330: name 'args' is not defined +2025-03-10 15:30:02,756 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,756 - ERROR - Error in episode 4331: name 'args' is not defined +2025-03-10 15:30:02,759 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,759 - ERROR - Error in episode 4332: name 'args' is not defined +2025-03-10 15:30:02,762 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,762 - ERROR - Error in episode 4333: name 'args' is not defined +2025-03-10 15:30:02,764 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,765 - ERROR - Error in episode 4334: name 'args' is not defined +2025-03-10 15:30:02,767 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,768 - ERROR - Error in episode 4335: name 'args' is not defined +2025-03-10 15:30:02,770 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,771 - ERROR - Error in episode 4336: name 'args' is not defined +2025-03-10 15:30:02,773 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,773 - ERROR - Error in episode 4337: name 'args' is not defined +2025-03-10 15:30:02,776 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,776 - ERROR - Error in episode 4338: name 'args' is not defined +2025-03-10 15:30:02,779 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,779 - ERROR - Error in episode 4339: name 'args' is not defined +2025-03-10 15:30:02,781 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,782 - ERROR - Error in episode 4340: name 'args' is not defined +2025-03-10 15:30:02,784 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,785 - ERROR - Error in episode 4341: name 'args' is not defined +2025-03-10 15:30:02,787 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,787 - ERROR - Error in episode 4342: name 'args' is not defined +2025-03-10 15:30:02,790 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,790 - ERROR - Error in episode 4343: name 'args' is not defined +2025-03-10 15:30:02,793 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,793 - ERROR - Error in episode 4344: name 'args' is not defined +2025-03-10 15:30:02,795 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,796 - ERROR - Error in episode 4345: name 'args' is not defined +2025-03-10 15:30:02,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,799 - ERROR - Error in episode 4346: name 'args' is not defined +2025-03-10 15:30:02,801 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,801 - ERROR - Error in episode 4347: name 'args' is not defined +2025-03-10 15:30:02,805 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,806 - ERROR - Error in episode 4348: name 'args' is not defined +2025-03-10 15:30:02,808 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,809 - ERROR - Error in episode 4349: name 'args' is not defined +2025-03-10 15:30:02,811 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,811 - ERROR - Error in episode 4350: name 'args' is not defined +2025-03-10 15:30:02,814 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,814 - ERROR - Error in episode 4351: name 'args' is not defined +2025-03-10 15:30:02,817 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,817 - ERROR - Error in episode 4352: name 'args' is not defined +2025-03-10 15:30:02,819 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,820 - ERROR - Error in episode 4353: name 'args' is not defined +2025-03-10 15:30:02,822 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,822 - ERROR - Error in episode 4354: name 'args' is not defined +2025-03-10 15:30:02,826 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,826 - ERROR - Error in episode 4355: name 'args' is not defined +2025-03-10 15:30:02,828 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,828 - ERROR - Error in episode 4356: name 'args' is not defined +2025-03-10 15:30:02,831 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,831 - ERROR - Error in episode 4357: name 'args' is not defined +2025-03-10 15:30:02,834 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,834 - ERROR - Error in episode 4358: name 'args' is not defined +2025-03-10 15:30:02,837 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,837 - ERROR - Error in episode 4359: name 'args' is not defined +2025-03-10 15:30:02,839 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,840 - ERROR - Error in episode 4360: name 'args' is not defined +2025-03-10 15:30:02,842 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,843 - ERROR - Error in episode 4361: name 'args' is not defined +2025-03-10 15:30:02,845 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,846 - ERROR - Error in episode 4362: name 'args' is not defined +2025-03-10 15:30:02,848 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,848 - ERROR - Error in episode 4363: name 'args' is not defined +2025-03-10 15:30:02,851 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,851 - ERROR - Error in episode 4364: name 'args' is not defined +2025-03-10 15:30:02,854 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,854 - ERROR - Error in episode 4365: name 'args' is not defined +2025-03-10 15:30:02,857 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,857 - ERROR - Error in episode 4366: name 'args' is not defined +2025-03-10 15:30:02,860 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,860 - ERROR - Error in episode 4367: name 'args' is not defined +2025-03-10 15:30:02,862 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,863 - ERROR - Error in episode 4368: name 'args' is not defined +2025-03-10 15:30:02,865 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,866 - ERROR - Error in episode 4369: name 'args' is not defined +2025-03-10 15:30:02,868 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,868 - ERROR - Error in episode 4370: name 'args' is not defined +2025-03-10 15:30:02,871 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,871 - ERROR - Error in episode 4371: name 'args' is not defined +2025-03-10 15:30:02,874 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,874 - ERROR - Error in episode 4372: name 'args' is not defined +2025-03-10 15:30:02,877 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,877 - ERROR - Error in episode 4373: name 'args' is not defined +2025-03-10 15:30:02,879 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,879 - ERROR - Error in episode 4374: name 'args' is not defined +2025-03-10 15:30:02,883 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,883 - ERROR - Error in episode 4375: name 'args' is not defined +2025-03-10 15:30:02,886 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,886 - ERROR - Error in episode 4376: name 'args' is not defined +2025-03-10 15:30:02,889 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,889 - ERROR - Error in episode 4377: name 'args' is not defined +2025-03-10 15:30:02,892 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,892 - ERROR - Error in episode 4378: name 'args' is not defined +2025-03-10 15:30:02,894 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,895 - ERROR - Error in episode 4379: name 'args' is not defined +2025-03-10 15:30:02,897 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,897 - ERROR - Error in episode 4380: name 'args' is not defined +2025-03-10 15:30:02,900 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,900 - ERROR - Error in episode 4381: name 'args' is not defined +2025-03-10 15:30:02,902 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,903 - ERROR - Error in episode 4382: name 'args' is not defined +2025-03-10 15:30:02,905 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,906 - ERROR - Error in episode 4383: name 'args' is not defined +2025-03-10 15:30:02,908 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,909 - ERROR - Error in episode 4384: name 'args' is not defined +2025-03-10 15:30:02,911 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,911 - ERROR - Error in episode 4385: name 'args' is not defined +2025-03-10 15:30:02,914 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,914 - ERROR - Error in episode 4386: name 'args' is not defined +2025-03-10 15:30:02,916 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,917 - ERROR - Error in episode 4387: name 'args' is not defined +2025-03-10 15:30:02,920 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,920 - ERROR - Error in episode 4388: name 'args' is not defined +2025-03-10 15:30:02,922 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,923 - ERROR - Error in episode 4389: name 'args' is not defined +2025-03-10 15:30:02,926 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,926 - ERROR - Error in episode 4390: name 'args' is not defined +2025-03-10 15:30:02,929 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,929 - ERROR - Error in episode 4391: name 'args' is not defined +2025-03-10 15:30:02,931 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,932 - ERROR - Error in episode 4392: name 'args' is not defined +2025-03-10 15:30:02,934 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,935 - ERROR - Error in episode 4393: name 'args' is not defined +2025-03-10 15:30:02,937 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,937 - ERROR - Error in episode 4394: name 'args' is not defined +2025-03-10 15:30:02,940 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,940 - ERROR - Error in episode 4395: name 'args' is not defined +2025-03-10 15:30:02,942 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,943 - ERROR - Error in episode 4396: name 'args' is not defined +2025-03-10 15:30:02,946 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,946 - ERROR - Error in episode 4397: name 'args' is not defined +2025-03-10 15:30:02,948 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,949 - ERROR - Error in episode 4398: name 'args' is not defined +2025-03-10 15:30:02,951 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,952 - ERROR - Error in episode 4399: name 'args' is not defined +2025-03-10 15:30:02,954 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,954 - ERROR - Error in episode 4400: name 'args' is not defined +2025-03-10 15:30:02,957 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,957 - ERROR - Error in episode 4401: name 'args' is not defined +2025-03-10 15:30:02,960 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,960 - ERROR - Error in episode 4402: name 'args' is not defined +2025-03-10 15:30:02,962 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,962 - ERROR - Error in episode 4403: name 'args' is not defined +2025-03-10 15:30:02,965 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,965 - ERROR - Error in episode 4404: name 'args' is not defined +2025-03-10 15:30:02,968 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,968 - ERROR - Error in episode 4405: name 'args' is not defined +2025-03-10 15:30:02,971 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,971 - ERROR - Error in episode 4406: name 'args' is not defined +2025-03-10 15:30:02,973 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,974 - ERROR - Error in episode 4407: name 'args' is not defined +2025-03-10 15:30:02,976 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,976 - ERROR - Error in episode 4408: name 'args' is not defined +2025-03-10 15:30:02,979 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,979 - ERROR - Error in episode 4409: name 'args' is not defined +2025-03-10 15:30:02,982 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,982 - ERROR - Error in episode 4410: name 'args' is not defined +2025-03-10 15:30:02,985 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,985 - ERROR - Error in episode 4411: name 'args' is not defined +2025-03-10 15:30:02,988 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,988 - ERROR - Error in episode 4412: name 'args' is not defined +2025-03-10 15:30:02,991 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,991 - ERROR - Error in episode 4413: name 'args' is not defined +2025-03-10 15:30:02,994 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,994 - ERROR - Error in episode 4414: name 'args' is not defined +2025-03-10 15:30:02,996 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:02,997 - ERROR - Error in episode 4415: name 'args' is not defined +2025-03-10 15:30:03,000 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,000 - ERROR - Error in episode 4416: name 'args' is not defined +2025-03-10 15:30:03,002 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,003 - ERROR - Error in episode 4417: name 'args' is not defined +2025-03-10 15:30:03,005 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,005 - ERROR - Error in episode 4418: name 'args' is not defined +2025-03-10 15:30:03,008 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,008 - ERROR - Error in episode 4419: name 'args' is not defined +2025-03-10 15:30:03,011 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,011 - ERROR - Error in episode 4420: name 'args' is not defined +2025-03-10 15:30:03,013 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,014 - ERROR - Error in episode 4421: name 'args' is not defined +2025-03-10 15:30:03,017 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,017 - ERROR - Error in episode 4422: name 'args' is not defined +2025-03-10 15:30:03,019 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,020 - ERROR - Error in episode 4423: name 'args' is not defined +2025-03-10 15:30:03,022 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,022 - ERROR - Error in episode 4424: name 'args' is not defined +2025-03-10 15:30:03,025 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,026 - ERROR - Error in episode 4425: name 'args' is not defined +2025-03-10 15:30:03,030 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,030 - ERROR - Error in episode 4426: name 'args' is not defined +2025-03-10 15:30:03,033 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,033 - ERROR - Error in episode 4427: name 'args' is not defined +2025-03-10 15:30:03,035 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,036 - ERROR - Error in episode 4428: name 'args' is not defined +2025-03-10 15:30:03,038 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,038 - ERROR - Error in episode 4429: name 'args' is not defined +2025-03-10 15:30:03,041 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,041 - ERROR - Error in episode 4430: name 'args' is not defined +2025-03-10 15:30:03,043 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,044 - ERROR - Error in episode 4431: name 'args' is not defined +2025-03-10 15:30:03,046 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,046 - ERROR - Error in episode 4432: name 'args' is not defined +2025-03-10 15:30:03,049 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,049 - ERROR - Error in episode 4433: name 'args' is not defined +2025-03-10 15:30:03,052 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,052 - ERROR - Error in episode 4434: name 'args' is not defined +2025-03-10 15:30:03,054 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,055 - ERROR - Error in episode 4435: name 'args' is not defined +2025-03-10 15:30:03,057 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,059 - ERROR - Error in episode 4436: name 'args' is not defined +2025-03-10 15:30:03,061 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,061 - ERROR - Error in episode 4437: name 'args' is not defined +2025-03-10 15:30:03,064 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,064 - ERROR - Error in episode 4438: name 'args' is not defined +2025-03-10 15:30:03,066 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,067 - ERROR - Error in episode 4439: name 'args' is not defined +2025-03-10 15:30:03,069 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,069 - ERROR - Error in episode 4440: name 'args' is not defined +2025-03-10 15:30:03,072 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,072 - ERROR - Error in episode 4441: name 'args' is not defined +2025-03-10 15:30:03,074 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,075 - ERROR - Error in episode 4442: name 'args' is not defined +2025-03-10 15:30:03,078 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,078 - ERROR - Error in episode 4443: name 'args' is not defined +2025-03-10 15:30:03,080 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,081 - ERROR - Error in episode 4444: name 'args' is not defined +2025-03-10 15:30:03,083 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,083 - ERROR - Error in episode 4445: name 'args' is not defined +2025-03-10 15:30:03,086 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,086 - ERROR - Error in episode 4446: name 'args' is not defined +2025-03-10 15:30:03,090 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,090 - ERROR - Error in episode 4447: name 'args' is not defined +2025-03-10 15:30:03,093 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,093 - ERROR - Error in episode 4448: name 'args' is not defined +2025-03-10 15:30:03,096 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,096 - ERROR - Error in episode 4449: name 'args' is not defined +2025-03-10 15:30:03,099 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,099 - ERROR - Error in episode 4450: name 'args' is not defined +2025-03-10 15:30:03,102 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,102 - ERROR - Error in episode 4451: name 'args' is not defined +2025-03-10 15:30:03,105 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,105 - ERROR - Error in episode 4452: name 'args' is not defined +2025-03-10 15:30:03,107 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,109 - ERROR - Error in episode 4453: name 'args' is not defined +2025-03-10 15:30:03,111 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,111 - ERROR - Error in episode 4454: name 'args' is not defined +2025-03-10 15:30:03,114 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,115 - ERROR - Error in episode 4455: name 'args' is not defined +2025-03-10 15:30:03,117 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,117 - ERROR - Error in episode 4456: name 'args' is not defined +2025-03-10 15:30:03,119 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,120 - ERROR - Error in episode 4457: name 'args' is not defined +2025-03-10 15:30:03,122 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,123 - ERROR - Error in episode 4458: name 'args' is not defined +2025-03-10 15:30:03,125 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,125 - ERROR - Error in episode 4459: name 'args' is not defined +2025-03-10 15:30:03,128 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,128 - ERROR - Error in episode 4460: name 'args' is not defined +2025-03-10 15:30:03,131 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,131 - ERROR - Error in episode 4461: name 'args' is not defined +2025-03-10 15:30:03,134 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,134 - ERROR - Error in episode 4462: name 'args' is not defined +2025-03-10 15:30:03,137 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,137 - ERROR - Error in episode 4463: name 'args' is not defined +2025-03-10 15:30:03,140 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,140 - ERROR - Error in episode 4464: name 'args' is not defined +2025-03-10 15:30:03,143 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,143 - ERROR - Error in episode 4465: name 'args' is not defined +2025-03-10 15:30:03,146 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,146 - ERROR - Error in episode 4466: name 'args' is not defined +2025-03-10 15:30:03,148 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,148 - ERROR - Error in episode 4467: name 'args' is not defined +2025-03-10 15:30:03,151 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,151 - ERROR - Error in episode 4468: name 'args' is not defined +2025-03-10 15:30:03,154 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,154 - ERROR - Error in episode 4469: name 'args' is not defined +2025-03-10 15:30:03,157 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,157 - ERROR - Error in episode 4470: name 'args' is not defined +2025-03-10 15:30:03,160 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,161 - ERROR - Error in episode 4471: name 'args' is not defined +2025-03-10 15:30:03,163 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,164 - ERROR - Error in episode 4472: name 'args' is not defined +2025-03-10 15:30:03,166 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,167 - ERROR - Error in episode 4473: name 'args' is not defined +2025-03-10 15:30:03,169 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,170 - ERROR - Error in episode 4474: name 'args' is not defined +2025-03-10 15:30:03,172 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,172 - ERROR - Error in episode 4475: name 'args' is not defined +2025-03-10 15:30:03,176 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,176 - ERROR - Error in episode 4476: name 'args' is not defined +2025-03-10 15:30:03,178 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,179 - ERROR - Error in episode 4477: name 'args' is not defined +2025-03-10 15:30:03,182 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,182 - ERROR - Error in episode 4478: name 'args' is not defined +2025-03-10 15:30:03,185 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,186 - ERROR - Error in episode 4479: name 'args' is not defined +2025-03-10 15:30:03,189 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,189 - ERROR - Error in episode 4480: name 'args' is not defined +2025-03-10 15:30:03,192 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,192 - ERROR - Error in episode 4481: name 'args' is not defined +2025-03-10 15:30:03,195 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,195 - ERROR - Error in episode 4482: name 'args' is not defined +2025-03-10 15:30:03,197 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,198 - ERROR - Error in episode 4483: name 'args' is not defined +2025-03-10 15:30:03,201 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,201 - ERROR - Error in episode 4484: name 'args' is not defined +2025-03-10 15:30:03,203 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,204 - ERROR - Error in episode 4485: name 'args' is not defined +2025-03-10 15:30:03,206 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,207 - ERROR - Error in episode 4486: name 'args' is not defined +2025-03-10 15:30:03,209 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,210 - ERROR - Error in episode 4487: name 'args' is not defined +2025-03-10 15:30:03,212 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,212 - ERROR - Error in episode 4488: name 'args' is not defined +2025-03-10 15:30:03,215 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,215 - ERROR - Error in episode 4489: name 'args' is not defined +2025-03-10 15:30:03,218 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,218 - ERROR - Error in episode 4490: name 'args' is not defined +2025-03-10 15:30:03,221 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,221 - ERROR - Error in episode 4491: name 'args' is not defined +2025-03-10 15:30:03,224 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,224 - ERROR - Error in episode 4492: name 'args' is not defined +2025-03-10 15:30:03,227 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,227 - ERROR - Error in episode 4493: name 'args' is not defined +2025-03-10 15:30:03,230 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,231 - ERROR - Error in episode 4494: name 'args' is not defined +2025-03-10 15:30:03,234 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,234 - ERROR - Error in episode 4495: name 'args' is not defined +2025-03-10 15:30:03,237 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,237 - ERROR - Error in episode 4496: name 'args' is not defined +2025-03-10 15:30:03,239 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,240 - ERROR - Error in episode 4497: name 'args' is not defined +2025-03-10 15:30:03,243 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,243 - ERROR - Error in episode 4498: name 'args' is not defined +2025-03-10 15:30:03,246 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,246 - ERROR - Error in episode 4499: name 'args' is not defined +2025-03-10 15:30:03,248 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,249 - ERROR - Error in episode 4500: name 'args' is not defined +2025-03-10 15:30:03,251 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,252 - ERROR - Error in episode 4501: name 'args' is not defined +2025-03-10 15:30:03,254 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,255 - ERROR - Error in episode 4502: name 'args' is not defined +2025-03-10 15:30:03,257 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,258 - ERROR - Error in episode 4503: name 'args' is not defined +2025-03-10 15:30:03,260 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,260 - ERROR - Error in episode 4504: name 'args' is not defined +2025-03-10 15:30:03,262 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,263 - ERROR - Error in episode 4505: name 'args' is not defined +2025-03-10 15:30:03,265 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,265 - ERROR - Error in episode 4506: name 'args' is not defined +2025-03-10 15:30:03,268 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,269 - ERROR - Error in episode 4507: name 'args' is not defined +2025-03-10 15:30:03,272 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,273 - ERROR - Error in episode 4508: name 'args' is not defined +2025-03-10 15:30:03,276 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,276 - ERROR - Error in episode 4509: name 'args' is not defined +2025-03-10 15:30:03,279 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,279 - ERROR - Error in episode 4510: name 'args' is not defined +2025-03-10 15:30:03,282 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,282 - ERROR - Error in episode 4511: name 'args' is not defined +2025-03-10 15:30:03,285 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,285 - ERROR - Error in episode 4512: name 'args' is not defined +2025-03-10 15:30:03,288 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,288 - ERROR - Error in episode 4513: name 'args' is not defined +2025-03-10 15:30:03,291 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,291 - ERROR - Error in episode 4514: name 'args' is not defined +2025-03-10 15:30:03,294 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,294 - ERROR - Error in episode 4515: name 'args' is not defined +2025-03-10 15:30:03,297 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,297 - ERROR - Error in episode 4516: name 'args' is not defined +2025-03-10 15:30:03,299 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,300 - ERROR - Error in episode 4517: name 'args' is not defined +2025-03-10 15:30:03,303 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,304 - ERROR - Error in episode 4518: name 'args' is not defined +2025-03-10 15:30:03,306 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,306 - ERROR - Error in episode 4519: name 'args' is not defined +2025-03-10 15:30:03,309 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,309 - ERROR - Error in episode 4520: name 'args' is not defined +2025-03-10 15:30:03,312 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,312 - ERROR - Error in episode 4521: name 'args' is not defined +2025-03-10 15:30:03,315 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,315 - ERROR - Error in episode 4522: name 'args' is not defined +2025-03-10 15:30:03,318 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,318 - ERROR - Error in episode 4523: name 'args' is not defined +2025-03-10 15:30:03,320 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,321 - ERROR - Error in episode 4524: name 'args' is not defined +2025-03-10 15:30:03,323 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,323 - ERROR - Error in episode 4525: name 'args' is not defined +2025-03-10 15:30:03,326 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,326 - ERROR - Error in episode 4526: name 'args' is not defined +2025-03-10 15:30:03,330 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,330 - ERROR - Error in episode 4527: name 'args' is not defined +2025-03-10 15:30:03,333 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,333 - ERROR - Error in episode 4528: name 'args' is not defined +2025-03-10 15:30:03,335 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,336 - ERROR - Error in episode 4529: name 'args' is not defined +2025-03-10 15:30:03,338 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,339 - ERROR - Error in episode 4530: name 'args' is not defined +2025-03-10 15:30:03,341 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,341 - ERROR - Error in episode 4531: name 'args' is not defined +2025-03-10 15:30:03,344 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,345 - ERROR - Error in episode 4532: name 'args' is not defined +2025-03-10 15:30:03,347 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,347 - ERROR - Error in episode 4533: name 'args' is not defined +2025-03-10 15:30:03,350 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,350 - ERROR - Error in episode 4534: name 'args' is not defined +2025-03-10 15:30:03,352 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,353 - ERROR - Error in episode 4535: name 'args' is not defined +2025-03-10 15:30:03,355 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,355 - ERROR - Error in episode 4536: name 'args' is not defined +2025-03-10 15:30:03,357 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,358 - ERROR - Error in episode 4537: name 'args' is not defined +2025-03-10 15:30:03,360 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,361 - ERROR - Error in episode 4538: name 'args' is not defined +2025-03-10 15:30:03,363 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,363 - ERROR - Error in episode 4539: name 'args' is not defined +2025-03-10 15:30:03,366 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,366 - ERROR - Error in episode 4540: name 'args' is not defined +2025-03-10 15:30:03,369 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,369 - ERROR - Error in episode 4541: name 'args' is not defined +2025-03-10 15:30:03,371 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,372 - ERROR - Error in episode 4542: name 'args' is not defined +2025-03-10 15:30:03,374 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,374 - ERROR - Error in episode 4543: name 'args' is not defined +2025-03-10 15:30:03,377 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,377 - ERROR - Error in episode 4544: name 'args' is not defined +2025-03-10 15:30:03,380 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,380 - ERROR - Error in episode 4545: name 'args' is not defined +2025-03-10 15:30:03,383 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,384 - ERROR - Error in episode 4546: name 'args' is not defined +2025-03-10 15:30:03,386 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,386 - ERROR - Error in episode 4547: name 'args' is not defined +2025-03-10 15:30:03,389 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,389 - ERROR - Error in episode 4548: name 'args' is not defined +2025-03-10 15:30:03,392 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,392 - ERROR - Error in episode 4549: name 'args' is not defined +2025-03-10 15:30:03,395 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,395 - ERROR - Error in episode 4550: name 'args' is not defined +2025-03-10 15:30:03,398 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,398 - ERROR - Error in episode 4551: name 'args' is not defined +2025-03-10 15:30:03,401 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,401 - ERROR - Error in episode 4552: name 'args' is not defined +2025-03-10 15:30:03,403 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,404 - ERROR - Error in episode 4553: name 'args' is not defined +2025-03-10 15:30:03,406 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,407 - ERROR - Error in episode 4554: name 'args' is not defined +2025-03-10 15:30:03,409 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,410 - ERROR - Error in episode 4555: name 'args' is not defined +2025-03-10 15:30:03,412 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,412 - ERROR - Error in episode 4556: name 'args' is not defined +2025-03-10 15:30:03,415 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,415 - ERROR - Error in episode 4557: name 'args' is not defined +2025-03-10 15:30:03,419 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,419 - ERROR - Error in episode 4558: name 'args' is not defined +2025-03-10 15:30:03,422 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,422 - ERROR - Error in episode 4559: name 'args' is not defined +2025-03-10 15:30:03,424 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,424 - ERROR - Error in episode 4560: name 'args' is not defined +2025-03-10 15:30:03,428 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,428 - ERROR - Error in episode 4561: name 'args' is not defined +2025-03-10 15:30:03,430 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,431 - ERROR - Error in episode 4562: name 'args' is not defined +2025-03-10 15:30:03,434 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,434 - ERROR - Error in episode 4563: name 'args' is not defined +2025-03-10 15:30:03,436 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,437 - ERROR - Error in episode 4564: name 'args' is not defined +2025-03-10 15:30:03,439 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,439 - ERROR - Error in episode 4565: name 'args' is not defined +2025-03-10 15:30:03,442 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,442 - ERROR - Error in episode 4566: name 'args' is not defined +2025-03-10 15:30:03,445 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,445 - ERROR - Error in episode 4567: name 'args' is not defined +2025-03-10 15:30:03,448 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,448 - ERROR - Error in episode 4568: name 'args' is not defined +2025-03-10 15:30:03,451 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,451 - ERROR - Error in episode 4569: name 'args' is not defined +2025-03-10 15:30:03,454 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,454 - ERROR - Error in episode 4570: name 'args' is not defined +2025-03-10 15:30:03,457 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,457 - ERROR - Error in episode 4571: name 'args' is not defined +2025-03-10 15:30:03,459 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,460 - ERROR - Error in episode 4572: name 'args' is not defined +2025-03-10 15:30:03,462 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,462 - ERROR - Error in episode 4573: name 'args' is not defined +2025-03-10 15:30:03,465 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,465 - ERROR - Error in episode 4574: name 'args' is not defined +2025-03-10 15:30:03,468 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,468 - ERROR - Error in episode 4575: name 'args' is not defined +2025-03-10 15:30:03,470 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,471 - ERROR - Error in episode 4576: name 'args' is not defined +2025-03-10 15:30:03,473 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,474 - ERROR - Error in episode 4577: name 'args' is not defined +2025-03-10 15:30:03,476 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,477 - ERROR - Error in episode 4578: name 'args' is not defined +2025-03-10 15:30:03,479 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,479 - ERROR - Error in episode 4579: name 'args' is not defined +2025-03-10 15:30:03,482 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,482 - ERROR - Error in episode 4580: name 'args' is not defined +2025-03-10 15:30:03,485 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,486 - ERROR - Error in episode 4581: name 'args' is not defined +2025-03-10 15:30:03,488 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,488 - ERROR - Error in episode 4582: name 'args' is not defined +2025-03-10 15:30:03,491 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,491 - ERROR - Error in episode 4583: name 'args' is not defined +2025-03-10 15:30:03,493 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,494 - ERROR - Error in episode 4584: name 'args' is not defined +2025-03-10 15:30:03,496 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,496 - ERROR - Error in episode 4585: name 'args' is not defined +2025-03-10 15:30:03,499 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,499 - ERROR - Error in episode 4586: name 'args' is not defined +2025-03-10 15:30:03,502 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,502 - ERROR - Error in episode 4587: name 'args' is not defined +2025-03-10 15:30:03,505 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,505 - ERROR - Error in episode 4588: name 'args' is not defined +2025-03-10 15:30:03,508 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,508 - ERROR - Error in episode 4589: name 'args' is not defined +2025-03-10 15:30:03,510 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,511 - ERROR - Error in episode 4590: name 'args' is not defined +2025-03-10 15:30:03,513 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,513 - ERROR - Error in episode 4591: name 'args' is not defined +2025-03-10 15:30:03,515 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,516 - ERROR - Error in episode 4592: name 'args' is not defined +2025-03-10 15:30:03,518 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,518 - ERROR - Error in episode 4593: name 'args' is not defined +2025-03-10 15:30:03,520 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,521 - ERROR - Error in episode 4594: name 'args' is not defined +2025-03-10 15:30:03,523 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,523 - ERROR - Error in episode 4595: name 'args' is not defined +2025-03-10 15:30:03,525 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,526 - ERROR - Error in episode 4596: name 'args' is not defined +2025-03-10 15:30:03,528 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,529 - ERROR - Error in episode 4597: name 'args' is not defined +2025-03-10 15:30:03,531 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,531 - ERROR - Error in episode 4598: name 'args' is not defined +2025-03-10 15:30:03,534 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,534 - ERROR - Error in episode 4599: name 'args' is not defined +2025-03-10 15:30:03,536 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,536 - ERROR - Error in episode 4600: name 'args' is not defined +2025-03-10 15:30:03,539 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,539 - ERROR - Error in episode 4601: name 'args' is not defined +2025-03-10 15:30:03,542 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,543 - ERROR - Error in episode 4602: name 'args' is not defined +2025-03-10 15:30:03,546 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,547 - ERROR - Error in episode 4603: name 'args' is not defined +2025-03-10 15:30:03,550 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,550 - ERROR - Error in episode 4604: name 'args' is not defined +2025-03-10 15:30:03,553 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,553 - ERROR - Error in episode 4605: name 'args' is not defined +2025-03-10 15:30:03,555 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,556 - ERROR - Error in episode 4606: name 'args' is not defined +2025-03-10 15:30:03,558 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,559 - ERROR - Error in episode 4607: name 'args' is not defined +2025-03-10 15:30:03,561 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,561 - ERROR - Error in episode 4608: name 'args' is not defined +2025-03-10 15:30:03,563 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,564 - ERROR - Error in episode 4609: name 'args' is not defined +2025-03-10 15:30:03,566 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,567 - ERROR - Error in episode 4610: name 'args' is not defined +2025-03-10 15:30:03,569 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,569 - ERROR - Error in episode 4611: name 'args' is not defined +2025-03-10 15:30:03,572 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,572 - ERROR - Error in episode 4612: name 'args' is not defined +2025-03-10 15:30:03,575 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,576 - ERROR - Error in episode 4613: name 'args' is not defined +2025-03-10 15:30:03,578 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,578 - ERROR - Error in episode 4614: name 'args' is not defined +2025-03-10 15:30:03,581 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,581 - ERROR - Error in episode 4615: name 'args' is not defined +2025-03-10 15:30:03,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,584 - ERROR - Error in episode 4616: name 'args' is not defined +2025-03-10 15:30:03,587 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,587 - ERROR - Error in episode 4617: name 'args' is not defined +2025-03-10 15:30:03,589 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,590 - ERROR - Error in episode 4618: name 'args' is not defined +2025-03-10 15:30:03,592 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,593 - ERROR - Error in episode 4619: name 'args' is not defined +2025-03-10 15:30:03,595 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,595 - ERROR - Error in episode 4620: name 'args' is not defined +2025-03-10 15:30:03,598 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,598 - ERROR - Error in episode 4621: name 'args' is not defined +2025-03-10 15:30:03,601 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,601 - ERROR - Error in episode 4622: name 'args' is not defined +2025-03-10 15:30:03,603 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,604 - ERROR - Error in episode 4623: name 'args' is not defined +2025-03-10 15:30:03,606 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,606 - ERROR - Error in episode 4624: name 'args' is not defined +2025-03-10 15:30:03,609 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,609 - ERROR - Error in episode 4625: name 'args' is not defined +2025-03-10 15:30:03,613 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,613 - ERROR - Error in episode 4626: name 'args' is not defined +2025-03-10 15:30:03,615 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,615 - ERROR - Error in episode 4627: name 'args' is not defined +2025-03-10 15:30:03,618 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,618 - ERROR - Error in episode 4628: name 'args' is not defined +2025-03-10 15:30:03,621 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,621 - ERROR - Error in episode 4629: name 'args' is not defined +2025-03-10 15:30:03,624 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,624 - ERROR - Error in episode 4630: name 'args' is not defined +2025-03-10 15:30:03,627 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,627 - ERROR - Error in episode 4631: name 'args' is not defined +2025-03-10 15:30:03,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,631 - ERROR - Error in episode 4632: name 'args' is not defined +2025-03-10 15:30:03,633 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,634 - ERROR - Error in episode 4633: name 'args' is not defined +2025-03-10 15:30:03,638 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,638 - ERROR - Error in episode 4634: name 'args' is not defined +2025-03-10 15:30:03,641 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,641 - ERROR - Error in episode 4635: name 'args' is not defined +2025-03-10 15:30:03,644 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,644 - ERROR - Error in episode 4636: name 'args' is not defined +2025-03-10 15:30:03,646 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,646 - ERROR - Error in episode 4637: name 'args' is not defined +2025-03-10 15:30:03,649 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,650 - ERROR - Error in episode 4638: name 'args' is not defined +2025-03-10 15:30:03,652 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,652 - ERROR - Error in episode 4639: name 'args' is not defined +2025-03-10 15:30:03,656 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,656 - ERROR - Error in episode 4640: name 'args' is not defined +2025-03-10 15:30:03,659 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,659 - ERROR - Error in episode 4641: name 'args' is not defined +2025-03-10 15:30:03,661 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,662 - ERROR - Error in episode 4642: name 'args' is not defined +2025-03-10 15:30:03,664 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,664 - ERROR - Error in episode 4643: name 'args' is not defined +2025-03-10 15:30:03,667 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,668 - ERROR - Error in episode 4644: name 'args' is not defined +2025-03-10 15:30:03,670 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,671 - ERROR - Error in episode 4645: name 'args' is not defined +2025-03-10 15:30:03,674 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,675 - ERROR - Error in episode 4646: name 'args' is not defined +2025-03-10 15:30:03,678 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,679 - ERROR - Error in episode 4647: name 'args' is not defined +2025-03-10 15:30:03,681 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,681 - ERROR - Error in episode 4648: name 'args' is not defined +2025-03-10 15:30:03,684 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,684 - ERROR - Error in episode 4649: name 'args' is not defined +2025-03-10 15:30:03,687 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,687 - ERROR - Error in episode 4650: name 'args' is not defined +2025-03-10 15:30:03,690 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,690 - ERROR - Error in episode 4651: name 'args' is not defined +2025-03-10 15:30:03,693 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,693 - ERROR - Error in episode 4652: name 'args' is not defined +2025-03-10 15:30:03,695 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,696 - ERROR - Error in episode 4653: name 'args' is not defined +2025-03-10 15:30:03,698 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,699 - ERROR - Error in episode 4654: name 'args' is not defined +2025-03-10 15:30:03,701 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,702 - ERROR - Error in episode 4655: name 'args' is not defined +2025-03-10 15:30:03,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,705 - ERROR - Error in episode 4656: name 'args' is not defined +2025-03-10 15:30:03,708 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,708 - ERROR - Error in episode 4657: name 'args' is not defined +2025-03-10 15:30:03,711 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,711 - ERROR - Error in episode 4658: name 'args' is not defined +2025-03-10 15:30:03,713 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,713 - ERROR - Error in episode 4659: name 'args' is not defined +2025-03-10 15:30:03,716 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,716 - ERROR - Error in episode 4660: name 'args' is not defined +2025-03-10 15:30:03,719 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,720 - ERROR - Error in episode 4661: name 'args' is not defined +2025-03-10 15:30:03,722 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,722 - ERROR - Error in episode 4662: name 'args' is not defined +2025-03-10 15:30:03,725 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,725 - ERROR - Error in episode 4663: name 'args' is not defined +2025-03-10 15:30:03,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,728 - ERROR - Error in episode 4664: name 'args' is not defined +2025-03-10 15:30:03,730 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,731 - ERROR - Error in episode 4665: name 'args' is not defined +2025-03-10 15:30:03,733 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,734 - ERROR - Error in episode 4666: name 'args' is not defined +2025-03-10 15:30:03,737 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,737 - ERROR - Error in episode 4667: name 'args' is not defined +2025-03-10 15:30:03,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,739 - ERROR - Error in episode 4668: name 'args' is not defined +2025-03-10 15:30:03,743 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,743 - ERROR - Error in episode 4669: name 'args' is not defined +2025-03-10 15:30:03,746 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,746 - ERROR - Error in episode 4670: name 'args' is not defined +2025-03-10 15:30:03,748 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,749 - ERROR - Error in episode 4671: name 'args' is not defined +2025-03-10 15:30:03,752 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,752 - ERROR - Error in episode 4672: name 'args' is not defined +2025-03-10 15:30:03,754 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,755 - ERROR - Error in episode 4673: name 'args' is not defined +2025-03-10 15:30:03,757 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,757 - ERROR - Error in episode 4674: name 'args' is not defined +2025-03-10 15:30:03,760 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,761 - ERROR - Error in episode 4675: name 'args' is not defined +2025-03-10 15:30:03,763 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,764 - ERROR - Error in episode 4676: name 'args' is not defined +2025-03-10 15:30:03,766 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,767 - ERROR - Error in episode 4677: name 'args' is not defined +2025-03-10 15:30:03,769 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,770 - ERROR - Error in episode 4678: name 'args' is not defined +2025-03-10 15:30:03,772 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,773 - ERROR - Error in episode 4679: name 'args' is not defined +2025-03-10 15:30:03,775 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,776 - ERROR - Error in episode 4680: name 'args' is not defined +2025-03-10 15:30:03,778 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,778 - ERROR - Error in episode 4681: name 'args' is not defined +2025-03-10 15:30:03,781 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,782 - ERROR - Error in episode 4682: name 'args' is not defined +2025-03-10 15:30:03,784 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,785 - ERROR - Error in episode 4683: name 'args' is not defined +2025-03-10 15:30:03,787 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,788 - ERROR - Error in episode 4684: name 'args' is not defined +2025-03-10 15:30:03,790 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,791 - ERROR - Error in episode 4685: name 'args' is not defined +2025-03-10 15:30:03,794 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,794 - ERROR - Error in episode 4686: name 'args' is not defined +2025-03-10 15:30:03,796 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,797 - ERROR - Error in episode 4687: name 'args' is not defined +2025-03-10 15:30:03,799 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,799 - ERROR - Error in episode 4688: name 'args' is not defined +2025-03-10 15:30:03,801 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,802 - ERROR - Error in episode 4689: name 'args' is not defined +2025-03-10 15:30:03,805 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,805 - ERROR - Error in episode 4690: name 'args' is not defined +2025-03-10 15:30:03,808 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,808 - ERROR - Error in episode 4691: name 'args' is not defined +2025-03-10 15:30:03,812 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,812 - ERROR - Error in episode 4692: name 'args' is not defined +2025-03-10 15:30:03,814 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,815 - ERROR - Error in episode 4693: name 'args' is not defined +2025-03-10 15:30:03,817 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,817 - ERROR - Error in episode 4694: name 'args' is not defined +2025-03-10 15:30:03,820 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,820 - ERROR - Error in episode 4695: name 'args' is not defined +2025-03-10 15:30:03,822 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,823 - ERROR - Error in episode 4696: name 'args' is not defined +2025-03-10 15:30:03,825 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,826 - ERROR - Error in episode 4697: name 'args' is not defined +2025-03-10 15:30:03,828 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,829 - ERROR - Error in episode 4698: name 'args' is not defined +2025-03-10 15:30:03,831 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,831 - ERROR - Error in episode 4699: name 'args' is not defined +2025-03-10 15:30:03,834 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,834 - ERROR - Error in episode 4700: name 'args' is not defined +2025-03-10 15:30:03,837 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,838 - ERROR - Error in episode 4701: name 'args' is not defined +2025-03-10 15:30:03,840 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,840 - ERROR - Error in episode 4702: name 'args' is not defined +2025-03-10 15:30:03,843 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,843 - ERROR - Error in episode 4703: name 'args' is not defined +2025-03-10 15:30:03,845 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,846 - ERROR - Error in episode 4704: name 'args' is not defined +2025-03-10 15:30:03,848 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,848 - ERROR - Error in episode 4705: name 'args' is not defined +2025-03-10 15:30:03,851 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,851 - ERROR - Error in episode 4706: name 'args' is not defined +2025-03-10 15:30:03,853 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,854 - ERROR - Error in episode 4707: name 'args' is not defined +2025-03-10 15:30:03,856 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,856 - ERROR - Error in episode 4708: name 'args' is not defined +2025-03-10 15:30:03,860 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,860 - ERROR - Error in episode 4709: name 'args' is not defined +2025-03-10 15:30:03,863 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,863 - ERROR - Error in episode 4710: name 'args' is not defined +2025-03-10 15:30:03,865 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,866 - ERROR - Error in episode 4711: name 'args' is not defined +2025-03-10 15:30:03,868 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,868 - ERROR - Error in episode 4712: name 'args' is not defined +2025-03-10 15:30:03,870 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,871 - ERROR - Error in episode 4713: name 'args' is not defined +2025-03-10 15:30:03,873 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,873 - ERROR - Error in episode 4714: name 'args' is not defined +2025-03-10 15:30:03,876 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,877 - ERROR - Error in episode 4715: name 'args' is not defined +2025-03-10 15:30:03,879 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,879 - ERROR - Error in episode 4716: name 'args' is not defined +2025-03-10 15:30:03,881 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,882 - ERROR - Error in episode 4717: name 'args' is not defined +2025-03-10 15:30:03,884 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,885 - ERROR - Error in episode 4718: name 'args' is not defined +2025-03-10 15:30:03,887 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,887 - ERROR - Error in episode 4719: name 'args' is not defined +2025-03-10 15:30:03,890 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,890 - ERROR - Error in episode 4720: name 'args' is not defined +2025-03-10 15:30:03,893 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,893 - ERROR - Error in episode 4721: name 'args' is not defined +2025-03-10 15:30:03,895 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,896 - ERROR - Error in episode 4722: name 'args' is not defined +2025-03-10 15:30:03,898 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,899 - ERROR - Error in episode 4723: name 'args' is not defined +2025-03-10 15:30:03,901 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,902 - ERROR - Error in episode 4724: name 'args' is not defined +2025-03-10 15:30:03,904 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,905 - ERROR - Error in episode 4725: name 'args' is not defined +2025-03-10 15:30:03,907 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,909 - ERROR - Error in episode 4726: name 'args' is not defined +2025-03-10 15:30:03,911 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,911 - ERROR - Error in episode 4727: name 'args' is not defined +2025-03-10 15:30:03,914 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,914 - ERROR - Error in episode 4728: name 'args' is not defined +2025-03-10 15:30:03,917 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,917 - ERROR - Error in episode 4729: name 'args' is not defined +2025-03-10 15:30:03,920 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,920 - ERROR - Error in episode 4730: name 'args' is not defined +2025-03-10 15:30:03,922 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,923 - ERROR - Error in episode 4731: name 'args' is not defined +2025-03-10 15:30:03,925 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,926 - ERROR - Error in episode 4732: name 'args' is not defined +2025-03-10 15:30:03,929 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,929 - ERROR - Error in episode 4733: name 'args' is not defined +2025-03-10 15:30:03,931 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,932 - ERROR - Error in episode 4734: name 'args' is not defined +2025-03-10 15:30:03,934 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,934 - ERROR - Error in episode 4735: name 'args' is not defined +2025-03-10 15:30:03,937 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,937 - ERROR - Error in episode 4736: name 'args' is not defined +2025-03-10 15:30:03,939 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,940 - ERROR - Error in episode 4737: name 'args' is not defined +2025-03-10 15:30:03,943 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,943 - ERROR - Error in episode 4738: name 'args' is not defined +2025-03-10 15:30:03,945 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,946 - ERROR - Error in episode 4739: name 'args' is not defined +2025-03-10 15:30:03,949 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,949 - ERROR - Error in episode 4740: name 'args' is not defined +2025-03-10 15:30:03,952 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,953 - ERROR - Error in episode 4741: name 'args' is not defined +2025-03-10 15:30:03,955 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,955 - ERROR - Error in episode 4742: name 'args' is not defined +2025-03-10 15:30:03,958 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,959 - ERROR - Error in episode 4743: name 'args' is not defined +2025-03-10 15:30:03,961 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,961 - ERROR - Error in episode 4744: name 'args' is not defined +2025-03-10 15:30:03,964 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,964 - ERROR - Error in episode 4745: name 'args' is not defined +2025-03-10 15:30:03,967 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,967 - ERROR - Error in episode 4746: name 'args' is not defined +2025-03-10 15:30:03,969 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,970 - ERROR - Error in episode 4747: name 'args' is not defined +2025-03-10 15:30:03,972 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,972 - ERROR - Error in episode 4748: name 'args' is not defined +2025-03-10 15:30:03,975 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,975 - ERROR - Error in episode 4749: name 'args' is not defined +2025-03-10 15:30:03,977 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,978 - ERROR - Error in episode 4750: name 'args' is not defined +2025-03-10 15:30:03,980 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,980 - ERROR - Error in episode 4751: name 'args' is not defined +2025-03-10 15:30:03,984 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,984 - ERROR - Error in episode 4752: name 'args' is not defined +2025-03-10 15:30:03,986 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,986 - ERROR - Error in episode 4753: name 'args' is not defined +2025-03-10 15:30:03,988 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,989 - ERROR - Error in episode 4754: name 'args' is not defined +2025-03-10 15:30:03,991 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,992 - ERROR - Error in episode 4755: name 'args' is not defined +2025-03-10 15:30:03,994 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,994 - ERROR - Error in episode 4756: name 'args' is not defined +2025-03-10 15:30:03,997 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:03,997 - ERROR - Error in episode 4757: name 'args' is not defined +2025-03-10 15:30:04,000 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,000 - ERROR - Error in episode 4758: name 'args' is not defined +2025-03-10 15:30:04,003 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,004 - ERROR - Error in episode 4759: name 'args' is not defined +2025-03-10 15:30:04,006 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,006 - ERROR - Error in episode 4760: name 'args' is not defined +2025-03-10 15:30:04,009 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,010 - ERROR - Error in episode 4761: name 'args' is not defined +2025-03-10 15:30:04,012 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,012 - ERROR - Error in episode 4762: name 'args' is not defined +2025-03-10 15:30:04,015 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,015 - ERROR - Error in episode 4763: name 'args' is not defined +2025-03-10 15:30:04,018 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,018 - ERROR - Error in episode 4764: name 'args' is not defined +2025-03-10 15:30:04,021 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,021 - ERROR - Error in episode 4765: name 'args' is not defined +2025-03-10 15:30:04,023 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,024 - ERROR - Error in episode 4766: name 'args' is not defined +2025-03-10 15:30:04,026 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,026 - ERROR - Error in episode 4767: name 'args' is not defined +2025-03-10 15:30:04,029 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,029 - ERROR - Error in episode 4768: name 'args' is not defined +2025-03-10 15:30:04,032 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,032 - ERROR - Error in episode 4769: name 'args' is not defined +2025-03-10 15:30:04,035 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,036 - ERROR - Error in episode 4770: name 'args' is not defined +2025-03-10 15:30:04,038 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,038 - ERROR - Error in episode 4771: name 'args' is not defined +2025-03-10 15:30:04,041 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,041 - ERROR - Error in episode 4772: name 'args' is not defined +2025-03-10 15:30:04,044 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,044 - ERROR - Error in episode 4773: name 'args' is not defined +2025-03-10 15:30:04,047 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,047 - ERROR - Error in episode 4774: name 'args' is not defined +2025-03-10 15:30:04,050 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,050 - ERROR - Error in episode 4775: name 'args' is not defined +2025-03-10 15:30:04,053 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,053 - ERROR - Error in episode 4776: name 'args' is not defined +2025-03-10 15:30:04,055 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,056 - ERROR - Error in episode 4777: name 'args' is not defined +2025-03-10 15:30:04,059 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,060 - ERROR - Error in episode 4778: name 'args' is not defined +2025-03-10 15:30:04,062 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,063 - ERROR - Error in episode 4779: name 'args' is not defined +2025-03-10 15:30:04,065 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,065 - ERROR - Error in episode 4780: name 'args' is not defined +2025-03-10 15:30:04,068 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,068 - ERROR - Error in episode 4781: name 'args' is not defined +2025-03-10 15:30:04,071 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,071 - ERROR - Error in episode 4782: name 'args' is not defined +2025-03-10 15:30:04,074 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,074 - ERROR - Error in episode 4783: name 'args' is not defined +2025-03-10 15:30:04,076 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,077 - ERROR - Error in episode 4784: name 'args' is not defined +2025-03-10 15:30:04,079 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,080 - ERROR - Error in episode 4785: name 'args' is not defined +2025-03-10 15:30:04,082 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,082 - ERROR - Error in episode 4786: name 'args' is not defined +2025-03-10 15:30:04,085 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,086 - ERROR - Error in episode 4787: name 'args' is not defined +2025-03-10 15:30:04,088 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,089 - ERROR - Error in episode 4788: name 'args' is not defined +2025-03-10 15:30:04,091 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,091 - ERROR - Error in episode 4789: name 'args' is not defined +2025-03-10 15:30:04,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,094 - ERROR - Error in episode 4790: name 'args' is not defined +2025-03-10 15:30:04,096 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,097 - ERROR - Error in episode 4791: name 'args' is not defined +2025-03-10 15:30:04,100 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,100 - ERROR - Error in episode 4792: name 'args' is not defined +2025-03-10 15:30:04,102 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,103 - ERROR - Error in episode 4793: name 'args' is not defined +2025-03-10 15:30:04,105 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,105 - ERROR - Error in episode 4794: name 'args' is not defined +2025-03-10 15:30:04,109 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,109 - ERROR - Error in episode 4795: name 'args' is not defined +2025-03-10 15:30:04,111 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,112 - ERROR - Error in episode 4796: name 'args' is not defined +2025-03-10 15:30:04,114 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,114 - ERROR - Error in episode 4797: name 'args' is not defined +2025-03-10 15:30:04,117 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,117 - ERROR - Error in episode 4798: name 'args' is not defined +2025-03-10 15:30:04,119 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,120 - ERROR - Error in episode 4799: name 'args' is not defined +2025-03-10 15:30:04,122 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,122 - ERROR - Error in episode 4800: name 'args' is not defined +2025-03-10 15:30:04,125 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,126 - ERROR - Error in episode 4801: name 'args' is not defined +2025-03-10 15:30:04,127 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,129 - ERROR - Error in episode 4802: name 'args' is not defined +2025-03-10 15:30:04,131 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,131 - ERROR - Error in episode 4803: name 'args' is not defined +2025-03-10 15:30:04,134 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,134 - ERROR - Error in episode 4804: name 'args' is not defined +2025-03-10 15:30:04,137 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,137 - ERROR - Error in episode 4805: name 'args' is not defined +2025-03-10 15:30:04,139 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,140 - ERROR - Error in episode 4806: name 'args' is not defined +2025-03-10 15:30:04,143 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,143 - ERROR - Error in episode 4807: name 'args' is not defined +2025-03-10 15:30:04,146 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,146 - ERROR - Error in episode 4808: name 'args' is not defined +2025-03-10 15:30:04,149 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,149 - ERROR - Error in episode 4809: name 'args' is not defined +2025-03-10 15:30:04,152 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,152 - ERROR - Error in episode 4810: name 'args' is not defined +2025-03-10 15:30:04,155 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,155 - ERROR - Error in episode 4811: name 'args' is not defined +2025-03-10 15:30:04,158 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,159 - ERROR - Error in episode 4812: name 'args' is not defined +2025-03-10 15:30:04,161 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,161 - ERROR - Error in episode 4813: name 'args' is not defined +2025-03-10 15:30:04,164 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,164 - ERROR - Error in episode 4814: name 'args' is not defined +2025-03-10 15:30:04,167 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,168 - ERROR - Error in episode 4815: name 'args' is not defined +2025-03-10 15:30:04,170 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,170 - ERROR - Error in episode 4816: name 'args' is not defined +2025-03-10 15:30:04,172 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,173 - ERROR - Error in episode 4817: name 'args' is not defined +2025-03-10 15:30:04,175 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,175 - ERROR - Error in episode 4818: name 'args' is not defined +2025-03-10 15:30:04,178 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,178 - ERROR - Error in episode 4819: name 'args' is not defined +2025-03-10 15:30:04,180 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,181 - ERROR - Error in episode 4820: name 'args' is not defined +2025-03-10 15:30:04,183 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,184 - ERROR - Error in episode 4821: name 'args' is not defined +2025-03-10 15:30:04,186 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,186 - ERROR - Error in episode 4822: name 'args' is not defined +2025-03-10 15:30:04,190 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,190 - ERROR - Error in episode 4823: name 'args' is not defined +2025-03-10 15:30:04,194 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,195 - ERROR - Error in episode 4824: name 'args' is not defined +2025-03-10 15:30:04,198 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,198 - ERROR - Error in episode 4825: name 'args' is not defined +2025-03-10 15:30:04,202 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,203 - ERROR - Error in episode 4826: name 'args' is not defined +2025-03-10 15:30:04,205 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,206 - ERROR - Error in episode 4827: name 'args' is not defined +2025-03-10 15:30:04,209 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,209 - ERROR - Error in episode 4828: name 'args' is not defined +2025-03-10 15:30:04,211 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,212 - ERROR - Error in episode 4829: name 'args' is not defined +2025-03-10 15:30:04,214 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,215 - ERROR - Error in episode 4830: name 'args' is not defined +2025-03-10 15:30:04,217 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,217 - ERROR - Error in episode 4831: name 'args' is not defined +2025-03-10 15:30:04,221 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,221 - ERROR - Error in episode 4832: name 'args' is not defined +2025-03-10 15:30:04,223 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,224 - ERROR - Error in episode 4833: name 'args' is not defined +2025-03-10 15:30:04,226 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,226 - ERROR - Error in episode 4834: name 'args' is not defined +2025-03-10 15:30:04,229 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,230 - ERROR - Error in episode 4835: name 'args' is not defined +2025-03-10 15:30:04,232 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,233 - ERROR - Error in episode 4836: name 'args' is not defined +2025-03-10 15:30:04,235 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,235 - ERROR - Error in episode 4837: name 'args' is not defined +2025-03-10 15:30:04,238 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,238 - ERROR - Error in episode 4838: name 'args' is not defined +2025-03-10 15:30:04,241 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,242 - ERROR - Error in episode 4839: name 'args' is not defined +2025-03-10 15:30:04,244 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,244 - ERROR - Error in episode 4840: name 'args' is not defined +2025-03-10 15:30:04,247 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,247 - ERROR - Error in episode 4841: name 'args' is not defined +2025-03-10 15:30:04,250 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,251 - ERROR - Error in episode 4842: name 'args' is not defined +2025-03-10 15:30:04,253 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,253 - ERROR - Error in episode 4843: name 'args' is not defined +2025-03-10 15:30:04,256 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,256 - ERROR - Error in episode 4844: name 'args' is not defined +2025-03-10 15:30:04,259 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,260 - ERROR - Error in episode 4845: name 'args' is not defined +2025-03-10 15:30:04,262 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,262 - ERROR - Error in episode 4846: name 'args' is not defined +2025-03-10 15:30:04,266 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,266 - ERROR - Error in episode 4847: name 'args' is not defined +2025-03-10 15:30:04,268 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,268 - ERROR - Error in episode 4848: name 'args' is not defined +2025-03-10 15:30:04,270 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,271 - ERROR - Error in episode 4849: name 'args' is not defined +2025-03-10 15:30:04,273 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,275 - ERROR - Error in episode 4850: name 'args' is not defined +2025-03-10 15:30:04,276 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,276 - ERROR - Error in episode 4851: name 'args' is not defined +2025-03-10 15:30:04,279 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,279 - ERROR - Error in episode 4852: name 'args' is not defined +2025-03-10 15:30:04,283 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,284 - ERROR - Error in episode 4853: name 'args' is not defined +2025-03-10 15:30:04,286 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,287 - ERROR - Error in episode 4854: name 'args' is not defined +2025-03-10 15:30:04,289 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,290 - ERROR - Error in episode 4855: name 'args' is not defined +2025-03-10 15:30:04,292 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,292 - ERROR - Error in episode 4856: name 'args' is not defined +2025-03-10 15:30:04,294 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,295 - ERROR - Error in episode 4857: name 'args' is not defined +2025-03-10 15:30:04,297 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,297 - ERROR - Error in episode 4858: name 'args' is not defined +2025-03-10 15:30:04,300 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,300 - ERROR - Error in episode 4859: name 'args' is not defined +2025-03-10 15:30:04,303 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,303 - ERROR - Error in episode 4860: name 'args' is not defined +2025-03-10 15:30:04,305 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,306 - ERROR - Error in episode 4861: name 'args' is not defined +2025-03-10 15:30:04,309 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,309 - ERROR - Error in episode 4862: name 'args' is not defined +2025-03-10 15:30:04,312 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,313 - ERROR - Error in episode 4863: name 'args' is not defined +2025-03-10 15:30:04,315 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,316 - ERROR - Error in episode 4864: name 'args' is not defined +2025-03-10 15:30:04,318 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,318 - ERROR - Error in episode 4865: name 'args' is not defined +2025-03-10 15:30:04,321 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,321 - ERROR - Error in episode 4866: name 'args' is not defined +2025-03-10 15:30:04,324 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,324 - ERROR - Error in episode 4867: name 'args' is not defined +2025-03-10 15:30:04,327 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,328 - ERROR - Error in episode 4868: name 'args' is not defined +2025-03-10 15:30:04,330 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,330 - ERROR - Error in episode 4869: name 'args' is not defined +2025-03-10 15:30:04,333 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,334 - ERROR - Error in episode 4870: name 'args' is not defined +2025-03-10 15:30:04,336 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,336 - ERROR - Error in episode 4871: name 'args' is not defined +2025-03-10 15:30:04,339 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,339 - ERROR - Error in episode 4872: name 'args' is not defined +2025-03-10 15:30:04,342 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,342 - ERROR - Error in episode 4873: name 'args' is not defined +2025-03-10 15:30:04,345 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,345 - ERROR - Error in episode 4874: name 'args' is not defined +2025-03-10 15:30:04,348 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,348 - ERROR - Error in episode 4875: name 'args' is not defined +2025-03-10 15:30:04,351 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,351 - ERROR - Error in episode 4876: name 'args' is not defined +2025-03-10 15:30:04,353 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,354 - ERROR - Error in episode 4877: name 'args' is not defined +2025-03-10 15:30:04,356 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,356 - ERROR - Error in episode 4878: name 'args' is not defined +2025-03-10 15:30:04,359 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,360 - ERROR - Error in episode 4879: name 'args' is not defined +2025-03-10 15:30:04,362 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,363 - ERROR - Error in episode 4880: name 'args' is not defined +2025-03-10 15:30:04,365 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,366 - ERROR - Error in episode 4881: name 'args' is not defined +2025-03-10 15:30:04,369 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,369 - ERROR - Error in episode 4882: name 'args' is not defined +2025-03-10 15:30:04,371 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,372 - ERROR - Error in episode 4883: name 'args' is not defined +2025-03-10 15:30:04,374 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,374 - ERROR - Error in episode 4884: name 'args' is not defined +2025-03-10 15:30:04,377 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,377 - ERROR - Error in episode 4885: name 'args' is not defined +2025-03-10 15:30:04,380 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,380 - ERROR - Error in episode 4886: name 'args' is not defined +2025-03-10 15:30:04,382 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,382 - ERROR - Error in episode 4887: name 'args' is not defined +2025-03-10 15:30:04,385 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,385 - ERROR - Error in episode 4888: name 'args' is not defined +2025-03-10 15:30:04,388 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,388 - ERROR - Error in episode 4889: name 'args' is not defined +2025-03-10 15:30:04,391 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,392 - ERROR - Error in episode 4890: name 'args' is not defined +2025-03-10 15:30:04,394 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,394 - ERROR - Error in episode 4891: name 'args' is not defined +2025-03-10 15:30:04,397 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,397 - ERROR - Error in episode 4892: name 'args' is not defined +2025-03-10 15:30:04,400 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,400 - ERROR - Error in episode 4893: name 'args' is not defined +2025-03-10 15:30:04,402 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,403 - ERROR - Error in episode 4894: name 'args' is not defined +2025-03-10 15:30:04,405 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,405 - ERROR - Error in episode 4895: name 'args' is not defined +2025-03-10 15:30:04,408 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,408 - ERROR - Error in episode 4896: name 'args' is not defined +2025-03-10 15:30:04,410 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,411 - ERROR - Error in episode 4897: name 'args' is not defined +2025-03-10 15:30:04,414 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,414 - ERROR - Error in episode 4898: name 'args' is not defined +2025-03-10 15:30:04,417 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,418 - ERROR - Error in episode 4899: name 'args' is not defined +2025-03-10 15:30:04,420 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,420 - ERROR - Error in episode 4900: name 'args' is not defined +2025-03-10 15:30:04,424 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,424 - ERROR - Error in episode 4901: name 'args' is not defined +2025-03-10 15:30:04,426 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,427 - ERROR - Error in episode 4902: name 'args' is not defined +2025-03-10 15:30:04,429 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,429 - ERROR - Error in episode 4903: name 'args' is not defined +2025-03-10 15:30:04,432 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,432 - ERROR - Error in episode 4904: name 'args' is not defined +2025-03-10 15:30:04,435 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,436 - ERROR - Error in episode 4905: name 'args' is not defined +2025-03-10 15:30:04,439 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,439 - ERROR - Error in episode 4906: name 'args' is not defined +2025-03-10 15:30:04,441 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,442 - ERROR - Error in episode 4907: name 'args' is not defined +2025-03-10 15:30:04,444 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,445 - ERROR - Error in episode 4908: name 'args' is not defined +2025-03-10 15:30:04,447 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,448 - ERROR - Error in episode 4909: name 'args' is not defined +2025-03-10 15:30:04,450 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,451 - ERROR - Error in episode 4910: name 'args' is not defined +2025-03-10 15:30:04,454 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,455 - ERROR - Error in episode 4911: name 'args' is not defined +2025-03-10 15:30:04,457 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,458 - ERROR - Error in episode 4912: name 'args' is not defined +2025-03-10 15:30:04,460 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,461 - ERROR - Error in episode 4913: name 'args' is not defined +2025-03-10 15:30:04,463 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,463 - ERROR - Error in episode 4914: name 'args' is not defined +2025-03-10 15:30:04,466 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,466 - ERROR - Error in episode 4915: name 'args' is not defined +2025-03-10 15:30:04,469 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,469 - ERROR - Error in episode 4916: name 'args' is not defined +2025-03-10 15:30:04,472 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,472 - ERROR - Error in episode 4917: name 'args' is not defined +2025-03-10 15:30:04,475 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,475 - ERROR - Error in episode 4918: name 'args' is not defined +2025-03-10 15:30:04,478 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,478 - ERROR - Error in episode 4919: name 'args' is not defined +2025-03-10 15:30:04,481 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,481 - ERROR - Error in episode 4920: name 'args' is not defined +2025-03-10 15:30:04,484 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,484 - ERROR - Error in episode 4921: name 'args' is not defined +2025-03-10 15:30:04,486 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,487 - ERROR - Error in episode 4922: name 'args' is not defined +2025-03-10 15:30:04,490 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,490 - ERROR - Error in episode 4923: name 'args' is not defined +2025-03-10 15:30:04,493 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,494 - ERROR - Error in episode 4924: name 'args' is not defined +2025-03-10 15:30:04,496 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,496 - ERROR - Error in episode 4925: name 'args' is not defined +2025-03-10 15:30:04,499 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,499 - ERROR - Error in episode 4926: name 'args' is not defined +2025-03-10 15:30:04,502 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,502 - ERROR - Error in episode 4927: name 'args' is not defined +2025-03-10 15:30:04,506 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,506 - ERROR - Error in episode 4928: name 'args' is not defined +2025-03-10 15:30:04,508 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,509 - ERROR - Error in episode 4929: name 'args' is not defined +2025-03-10 15:30:04,511 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,511 - ERROR - Error in episode 4930: name 'args' is not defined +2025-03-10 15:30:04,514 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,514 - ERROR - Error in episode 4931: name 'args' is not defined +2025-03-10 15:30:04,517 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,517 - ERROR - Error in episode 4932: name 'args' is not defined +2025-03-10 15:30:04,520 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,520 - ERROR - Error in episode 4933: name 'args' is not defined +2025-03-10 15:30:04,522 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,523 - ERROR - Error in episode 4934: name 'args' is not defined +2025-03-10 15:30:04,525 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,525 - ERROR - Error in episode 4935: name 'args' is not defined +2025-03-10 15:30:04,527 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,529 - ERROR - Error in episode 4936: name 'args' is not defined +2025-03-10 15:30:04,531 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,531 - ERROR - Error in episode 4937: name 'args' is not defined +2025-03-10 15:30:04,534 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,534 - ERROR - Error in episode 4938: name 'args' is not defined +2025-03-10 15:30:04,536 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,536 - ERROR - Error in episode 4939: name 'args' is not defined +2025-03-10 15:30:04,539 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,539 - ERROR - Error in episode 4940: name 'args' is not defined +2025-03-10 15:30:04,542 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,543 - ERROR - Error in episode 4941: name 'args' is not defined +2025-03-10 15:30:04,545 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,545 - ERROR - Error in episode 4942: name 'args' is not defined +2025-03-10 15:30:04,548 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,548 - ERROR - Error in episode 4943: name 'args' is not defined +2025-03-10 15:30:04,550 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,551 - ERROR - Error in episode 4944: name 'args' is not defined +2025-03-10 15:30:04,554 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,554 - ERROR - Error in episode 4945: name 'args' is not defined +2025-03-10 15:30:04,556 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,557 - ERROR - Error in episode 4946: name 'args' is not defined +2025-03-10 15:30:04,560 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,560 - ERROR - Error in episode 4947: name 'args' is not defined +2025-03-10 15:30:04,562 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,563 - ERROR - Error in episode 4948: name 'args' is not defined +2025-03-10 15:30:04,565 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,565 - ERROR - Error in episode 4949: name 'args' is not defined +2025-03-10 15:30:04,568 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,568 - ERROR - Error in episode 4950: name 'args' is not defined +2025-03-10 15:30:04,571 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,571 - ERROR - Error in episode 4951: name 'args' is not defined +2025-03-10 15:30:04,574 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,575 - ERROR - Error in episode 4952: name 'args' is not defined +2025-03-10 15:30:04,577 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,578 - ERROR - Error in episode 4953: name 'args' is not defined +2025-03-10 15:30:04,581 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,581 - ERROR - Error in episode 4954: name 'args' is not defined +2025-03-10 15:30:04,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,584 - ERROR - Error in episode 4955: name 'args' is not defined +2025-03-10 15:30:04,587 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,587 - ERROR - Error in episode 4956: name 'args' is not defined +2025-03-10 15:30:04,589 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,590 - ERROR - Error in episode 4957: name 'args' is not defined +2025-03-10 15:30:04,592 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,593 - ERROR - Error in episode 4958: name 'args' is not defined +2025-03-10 15:30:04,595 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,595 - ERROR - Error in episode 4959: name 'args' is not defined +2025-03-10 15:30:04,598 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,598 - ERROR - Error in episode 4960: name 'args' is not defined +2025-03-10 15:30:04,601 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,601 - ERROR - Error in episode 4961: name 'args' is not defined +2025-03-10 15:30:04,604 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,604 - ERROR - Error in episode 4962: name 'args' is not defined +2025-03-10 15:30:04,607 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,607 - ERROR - Error in episode 4963: name 'args' is not defined +2025-03-10 15:30:04,611 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,611 - ERROR - Error in episode 4964: name 'args' is not defined +2025-03-10 15:30:04,614 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,614 - ERROR - Error in episode 4965: name 'args' is not defined +2025-03-10 15:30:04,616 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,617 - ERROR - Error in episode 4966: name 'args' is not defined +2025-03-10 15:30:04,619 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,619 - ERROR - Error in episode 4967: name 'args' is not defined +2025-03-10 15:30:04,622 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,623 - ERROR - Error in episode 4968: name 'args' is not defined +2025-03-10 15:30:04,625 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,626 - ERROR - Error in episode 4969: name 'args' is not defined +2025-03-10 15:30:04,628 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,628 - ERROR - Error in episode 4970: name 'args' is not defined +2025-03-10 15:30:04,631 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,631 - ERROR - Error in episode 4971: name 'args' is not defined +2025-03-10 15:30:04,633 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,635 - ERROR - Error in episode 4972: name 'args' is not defined +2025-03-10 15:30:04,637 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,637 - ERROR - Error in episode 4973: name 'args' is not defined +2025-03-10 15:30:04,639 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,641 - ERROR - Error in episode 4974: name 'args' is not defined +2025-03-10 15:30:04,644 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,644 - ERROR - Error in episode 4975: name 'args' is not defined +2025-03-10 15:30:04,647 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,648 - ERROR - Error in episode 4976: name 'args' is not defined +2025-03-10 15:30:04,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,651 - ERROR - Error in episode 4977: name 'args' is not defined +2025-03-10 15:30:04,654 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,655 - ERROR - Error in episode 4978: name 'args' is not defined +2025-03-10 15:30:04,657 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,658 - ERROR - Error in episode 4979: name 'args' is not defined +2025-03-10 15:30:04,660 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,660 - ERROR - Error in episode 4980: name 'args' is not defined +2025-03-10 15:30:04,664 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,664 - ERROR - Error in episode 4981: name 'args' is not defined +2025-03-10 15:30:04,668 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,668 - ERROR - Error in episode 4982: name 'args' is not defined +2025-03-10 15:30:04,671 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,671 - ERROR - Error in episode 4983: name 'args' is not defined +2025-03-10 15:30:04,674 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,674 - ERROR - Error in episode 4984: name 'args' is not defined +2025-03-10 15:30:04,677 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,677 - ERROR - Error in episode 4985: name 'args' is not defined +2025-03-10 15:30:04,680 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,680 - ERROR - Error in episode 4986: name 'args' is not defined +2025-03-10 15:30:04,682 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,683 - ERROR - Error in episode 4987: name 'args' is not defined +2025-03-10 15:30:04,685 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,687 - ERROR - Error in episode 4988: name 'args' is not defined +2025-03-10 15:30:04,690 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,690 - ERROR - Error in episode 4989: name 'args' is not defined +2025-03-10 15:30:04,693 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,693 - ERROR - Error in episode 4990: name 'args' is not defined +2025-03-10 15:30:04,695 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,696 - ERROR - Error in episode 4991: name 'args' is not defined +2025-03-10 15:30:04,698 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,698 - ERROR - Error in episode 4992: name 'args' is not defined +2025-03-10 15:30:04,701 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,702 - ERROR - Error in episode 4993: name 'args' is not defined +2025-03-10 15:30:04,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,705 - ERROR - Error in episode 4994: name 'args' is not defined +2025-03-10 15:30:04,708 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,708 - ERROR - Error in episode 4995: name 'args' is not defined +2025-03-10 15:30:04,710 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,711 - ERROR - Error in episode 4996: name 'args' is not defined +2025-03-10 15:30:04,713 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,713 - ERROR - Error in episode 4997: name 'args' is not defined +2025-03-10 15:30:04,716 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,716 - ERROR - Error in episode 4998: name 'args' is not defined +2025-03-10 15:30:04,719 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,719 - ERROR - Error in episode 4999: name 'args' is not defined +2025-03-10 15:30:04,722 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,722 - ERROR - Error in episode 5000: name 'args' is not defined +2025-03-10 15:30:04,725 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,725 - ERROR - Error in episode 5001: name 'args' is not defined +2025-03-10 15:30:04,728 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,728 - ERROR - Error in episode 5002: name 'args' is not defined +2025-03-10 15:30:04,731 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,731 - ERROR - Error in episode 5003: name 'args' is not defined +2025-03-10 15:30:04,734 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,734 - ERROR - Error in episode 5004: name 'args' is not defined +2025-03-10 15:30:04,737 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,737 - ERROR - Error in episode 5005: name 'args' is not defined +2025-03-10 15:30:04,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,740 - ERROR - Error in episode 5006: name 'args' is not defined +2025-03-10 15:30:04,743 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,743 - ERROR - Error in episode 5007: name 'args' is not defined +2025-03-10 15:30:04,746 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,747 - ERROR - Error in episode 5008: name 'args' is not defined +2025-03-10 15:30:04,750 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,751 - ERROR - Error in episode 5009: name 'args' is not defined +2025-03-10 15:30:04,754 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,754 - ERROR - Error in episode 5010: name 'args' is not defined +2025-03-10 15:30:04,757 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,757 - ERROR - Error in episode 5011: name 'args' is not defined +2025-03-10 15:30:04,761 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,762 - ERROR - Error in episode 5012: name 'args' is not defined +2025-03-10 15:30:04,765 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,765 - ERROR - Error in episode 5013: name 'args' is not defined +2025-03-10 15:30:04,768 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,768 - ERROR - Error in episode 5014: name 'args' is not defined +2025-03-10 15:30:04,770 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,771 - ERROR - Error in episode 5015: name 'args' is not defined +2025-03-10 15:30:04,773 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,774 - ERROR - Error in episode 5016: name 'args' is not defined +2025-03-10 15:30:04,778 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,778 - ERROR - Error in episode 5017: name 'args' is not defined +2025-03-10 15:30:04,781 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,781 - ERROR - Error in episode 5018: name 'args' is not defined +2025-03-10 15:30:04,783 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,783 - ERROR - Error in episode 5019: name 'args' is not defined +2025-03-10 15:30:04,786 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,786 - ERROR - Error in episode 5020: name 'args' is not defined +2025-03-10 15:30:04,789 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,789 - ERROR - Error in episode 5021: name 'args' is not defined +2025-03-10 15:30:04,792 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,793 - ERROR - Error in episode 5022: name 'args' is not defined +2025-03-10 15:30:04,795 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,796 - ERROR - Error in episode 5023: name 'args' is not defined +2025-03-10 15:30:04,799 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,799 - ERROR - Error in episode 5024: name 'args' is not defined +2025-03-10 15:30:04,802 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,803 - ERROR - Error in episode 5025: name 'args' is not defined +2025-03-10 15:30:04,806 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,807 - ERROR - Error in episode 5026: name 'args' is not defined +2025-03-10 15:30:04,808 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,809 - ERROR - Error in episode 5027: name 'args' is not defined +2025-03-10 15:30:04,812 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,812 - ERROR - Error in episode 5028: name 'args' is not defined +2025-03-10 15:30:04,815 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,816 - ERROR - Error in episode 5029: name 'args' is not defined +2025-03-10 15:30:04,818 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,818 - ERROR - Error in episode 5030: name 'args' is not defined +2025-03-10 15:30:04,820 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,820 - ERROR - Error in episode 5031: name 'args' is not defined +2025-03-10 15:30:04,824 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,824 - ERROR - Error in episode 5032: name 'args' is not defined +2025-03-10 15:30:04,828 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,828 - ERROR - Error in episode 5033: name 'args' is not defined +2025-03-10 15:30:04,831 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,831 - ERROR - Error in episode 5034: name 'args' is not defined +2025-03-10 15:30:04,833 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,833 - ERROR - Error in episode 5035: name 'args' is not defined +2025-03-10 15:30:04,837 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,837 - ERROR - Error in episode 5036: name 'args' is not defined +2025-03-10 15:30:04,840 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,841 - ERROR - Error in episode 5037: name 'args' is not defined +2025-03-10 15:30:04,844 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,845 - ERROR - Error in episode 5038: name 'args' is not defined +2025-03-10 15:30:04,848 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,848 - ERROR - Error in episode 5039: name 'args' is not defined +2025-03-10 15:30:04,851 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,851 - ERROR - Error in episode 5040: name 'args' is not defined +2025-03-10 15:30:04,854 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,854 - ERROR - Error in episode 5041: name 'args' is not defined +2025-03-10 15:30:04,858 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,858 - ERROR - Error in episode 5042: name 'args' is not defined +2025-03-10 15:30:04,862 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,862 - ERROR - Error in episode 5043: name 'args' is not defined +2025-03-10 15:30:04,866 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,866 - ERROR - Error in episode 5044: name 'args' is not defined +2025-03-10 15:30:04,870 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,870 - ERROR - Error in episode 5045: name 'args' is not defined +2025-03-10 15:30:04,873 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,873 - ERROR - Error in episode 5046: name 'args' is not defined +2025-03-10 15:30:04,876 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,877 - ERROR - Error in episode 5047: name 'args' is not defined +2025-03-10 15:30:04,880 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,880 - ERROR - Error in episode 5048: name 'args' is not defined +2025-03-10 15:30:04,884 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,884 - ERROR - Error in episode 5049: name 'args' is not defined +2025-03-10 15:30:04,888 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,889 - ERROR - Error in episode 5050: name 'args' is not defined +2025-03-10 15:30:04,891 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,892 - ERROR - Error in episode 5051: name 'args' is not defined +2025-03-10 15:30:04,896 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,896 - ERROR - Error in episode 5052: name 'args' is not defined +2025-03-10 15:30:04,900 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,901 - ERROR - Error in episode 5053: name 'args' is not defined +2025-03-10 15:30:04,904 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,905 - ERROR - Error in episode 5054: name 'args' is not defined +2025-03-10 15:30:04,907 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,908 - ERROR - Error in episode 5055: name 'args' is not defined +2025-03-10 15:30:04,910 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,910 - ERROR - Error in episode 5056: name 'args' is not defined +2025-03-10 15:30:04,914 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,914 - ERROR - Error in episode 5057: name 'args' is not defined +2025-03-10 15:30:04,916 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,916 - ERROR - Error in episode 5058: name 'args' is not defined +2025-03-10 15:30:04,920 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,920 - ERROR - Error in episode 5059: name 'args' is not defined +2025-03-10 15:30:04,922 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,923 - ERROR - Error in episode 5060: name 'args' is not defined +2025-03-10 15:30:04,925 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,925 - ERROR - Error in episode 5061: name 'args' is not defined +2025-03-10 15:30:04,928 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,928 - ERROR - Error in episode 5062: name 'args' is not defined +2025-03-10 15:30:04,930 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,930 - ERROR - Error in episode 5063: name 'args' is not defined +2025-03-10 15:30:04,933 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,933 - ERROR - Error in episode 5064: name 'args' is not defined +2025-03-10 15:30:04,936 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,936 - ERROR - Error in episode 5065: name 'args' is not defined +2025-03-10 15:30:04,938 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,939 - ERROR - Error in episode 5066: name 'args' is not defined +2025-03-10 15:30:04,942 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,942 - ERROR - Error in episode 5067: name 'args' is not defined +2025-03-10 15:30:04,945 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,945 - ERROR - Error in episode 5068: name 'args' is not defined +2025-03-10 15:30:04,947 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,948 - ERROR - Error in episode 5069: name 'args' is not defined +2025-03-10 15:30:04,951 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,951 - ERROR - Error in episode 5070: name 'args' is not defined +2025-03-10 15:30:04,954 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,954 - ERROR - Error in episode 5071: name 'args' is not defined +2025-03-10 15:30:04,957 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,958 - ERROR - Error in episode 5072: name 'args' is not defined +2025-03-10 15:30:04,960 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,961 - ERROR - Error in episode 5073: name 'args' is not defined +2025-03-10 15:30:04,963 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,963 - ERROR - Error in episode 5074: name 'args' is not defined +2025-03-10 15:30:04,966 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,967 - ERROR - Error in episode 5075: name 'args' is not defined +2025-03-10 15:30:04,970 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,970 - ERROR - Error in episode 5076: name 'args' is not defined +2025-03-10 15:30:04,973 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,973 - ERROR - Error in episode 5077: name 'args' is not defined +2025-03-10 15:30:04,976 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,976 - ERROR - Error in episode 5078: name 'args' is not defined +2025-03-10 15:30:04,978 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,979 - ERROR - Error in episode 5079: name 'args' is not defined +2025-03-10 15:30:04,981 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,981 - ERROR - Error in episode 5080: name 'args' is not defined +2025-03-10 15:30:04,984 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,984 - ERROR - Error in episode 5081: name 'args' is not defined +2025-03-10 15:30:04,987 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,987 - ERROR - Error in episode 5082: name 'args' is not defined +2025-03-10 15:30:04,990 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,990 - ERROR - Error in episode 5083: name 'args' is not defined +2025-03-10 15:30:04,993 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,993 - ERROR - Error in episode 5084: name 'args' is not defined +2025-03-10 15:30:04,995 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:04,997 - ERROR - Error in episode 5085: name 'args' is not defined +2025-03-10 15:30:04,999 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,000 - ERROR - Error in episode 5086: name 'args' is not defined +2025-03-10 15:30:05,002 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,003 - ERROR - Error in episode 5087: name 'args' is not defined +2025-03-10 15:30:05,005 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,005 - ERROR - Error in episode 5088: name 'args' is not defined +2025-03-10 15:30:05,008 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,008 - ERROR - Error in episode 5089: name 'args' is not defined +2025-03-10 15:30:05,011 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,012 - ERROR - Error in episode 5090: name 'args' is not defined +2025-03-10 15:30:05,015 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,015 - ERROR - Error in episode 5091: name 'args' is not defined +2025-03-10 15:30:05,019 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,019 - ERROR - Error in episode 5092: name 'args' is not defined +2025-03-10 15:30:05,021 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,022 - ERROR - Error in episode 5093: name 'args' is not defined +2025-03-10 15:30:05,024 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,024 - ERROR - Error in episode 5094: name 'args' is not defined +2025-03-10 15:30:05,028 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,029 - ERROR - Error in episode 5095: name 'args' is not defined +2025-03-10 15:30:05,031 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,032 - ERROR - Error in episode 5096: name 'args' is not defined +2025-03-10 15:30:05,035 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,035 - ERROR - Error in episode 5097: name 'args' is not defined +2025-03-10 15:30:05,037 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,037 - ERROR - Error in episode 5098: name 'args' is not defined +2025-03-10 15:30:05,040 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,040 - ERROR - Error in episode 5099: name 'args' is not defined +2025-03-10 15:30:05,043 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,043 - ERROR - Error in episode 5100: name 'args' is not defined +2025-03-10 15:30:05,046 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,046 - ERROR - Error in episode 5101: name 'args' is not defined +2025-03-10 15:30:05,049 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,050 - ERROR - Error in episode 5102: name 'args' is not defined +2025-03-10 15:30:05,053 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,054 - ERROR - Error in episode 5103: name 'args' is not defined +2025-03-10 15:30:05,056 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,056 - ERROR - Error in episode 5104: name 'args' is not defined +2025-03-10 15:30:05,059 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,060 - ERROR - Error in episode 5105: name 'args' is not defined +2025-03-10 15:30:05,062 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,062 - ERROR - Error in episode 5106: name 'args' is not defined +2025-03-10 15:30:05,065 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,066 - ERROR - Error in episode 5107: name 'args' is not defined +2025-03-10 15:30:05,069 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,069 - ERROR - Error in episode 5108: name 'args' is not defined +2025-03-10 15:30:05,071 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,071 - ERROR - Error in episode 5109: name 'args' is not defined +2025-03-10 15:30:05,074 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,074 - ERROR - Error in episode 5110: name 'args' is not defined +2025-03-10 15:30:05,077 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,078 - ERROR - Error in episode 5111: name 'args' is not defined +2025-03-10 15:30:05,080 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,080 - ERROR - Error in episode 5112: name 'args' is not defined +2025-03-10 15:30:05,082 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,083 - ERROR - Error in episode 5113: name 'args' is not defined +2025-03-10 15:30:05,085 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,086 - ERROR - Error in episode 5114: name 'args' is not defined +2025-03-10 15:30:05,089 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,090 - ERROR - Error in episode 5115: name 'args' is not defined +2025-03-10 15:30:05,093 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,093 - ERROR - Error in episode 5116: name 'args' is not defined +2025-03-10 15:30:05,096 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,096 - ERROR - Error in episode 5117: name 'args' is not defined +2025-03-10 15:30:05,098 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,098 - ERROR - Error in episode 5118: name 'args' is not defined +2025-03-10 15:30:05,101 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,101 - ERROR - Error in episode 5119: name 'args' is not defined +2025-03-10 15:30:05,105 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,105 - ERROR - Error in episode 5120: name 'args' is not defined +2025-03-10 15:30:05,108 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,108 - ERROR - Error in episode 5121: name 'args' is not defined +2025-03-10 15:30:05,111 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,112 - ERROR - Error in episode 5122: name 'args' is not defined +2025-03-10 15:30:05,114 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,114 - ERROR - Error in episode 5123: name 'args' is not defined +2025-03-10 15:30:05,117 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,117 - ERROR - Error in episode 5124: name 'args' is not defined +2025-03-10 15:30:05,120 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,120 - ERROR - Error in episode 5125: name 'args' is not defined +2025-03-10 15:30:05,123 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,124 - ERROR - Error in episode 5126: name 'args' is not defined +2025-03-10 15:30:05,126 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,126 - ERROR - Error in episode 5127: name 'args' is not defined +2025-03-10 15:30:05,128 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,130 - ERROR - Error in episode 5128: name 'args' is not defined +2025-03-10 15:30:05,132 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,132 - ERROR - Error in episode 5129: name 'args' is not defined +2025-03-10 15:30:05,135 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,135 - ERROR - Error in episode 5130: name 'args' is not defined +2025-03-10 15:30:05,137 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,138 - ERROR - Error in episode 5131: name 'args' is not defined +2025-03-10 15:30:05,140 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,140 - ERROR - Error in episode 5132: name 'args' is not defined +2025-03-10 15:30:05,143 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,144 - ERROR - Error in episode 5133: name 'args' is not defined +2025-03-10 15:30:05,147 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,147 - ERROR - Error in episode 5134: name 'args' is not defined +2025-03-10 15:30:05,150 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,150 - ERROR - Error in episode 5135: name 'args' is not defined +2025-03-10 15:30:05,153 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,153 - ERROR - Error in episode 5136: name 'args' is not defined +2025-03-10 15:30:05,156 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,156 - ERROR - Error in episode 5137: name 'args' is not defined +2025-03-10 15:30:05,158 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,160 - ERROR - Error in episode 5138: name 'args' is not defined +2025-03-10 15:30:05,162 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,162 - ERROR - Error in episode 5139: name 'args' is not defined +2025-03-10 15:30:05,164 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,165 - ERROR - Error in episode 5140: name 'args' is not defined +2025-03-10 15:30:05,169 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,169 - ERROR - Error in episode 5141: name 'args' is not defined +2025-03-10 15:30:05,172 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,172 - ERROR - Error in episode 5142: name 'args' is not defined +2025-03-10 15:30:05,175 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,175 - ERROR - Error in episode 5143: name 'args' is not defined +2025-03-10 15:30:05,178 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,178 - ERROR - Error in episode 5144: name 'args' is not defined +2025-03-10 15:30:05,180 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,182 - ERROR - Error in episode 5145: name 'args' is not defined +2025-03-10 15:30:05,184 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,184 - ERROR - Error in episode 5146: name 'args' is not defined +2025-03-10 15:30:05,187 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,187 - ERROR - Error in episode 5147: name 'args' is not defined +2025-03-10 15:30:05,190 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,190 - ERROR - Error in episode 5148: name 'args' is not defined +2025-03-10 15:30:05,193 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,193 - ERROR - Error in episode 5149: name 'args' is not defined +2025-03-10 15:30:05,195 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,196 - ERROR - Error in episode 5150: name 'args' is not defined +2025-03-10 15:30:05,199 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,199 - ERROR - Error in episode 5151: name 'args' is not defined +2025-03-10 15:30:05,201 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,202 - ERROR - Error in episode 5152: name 'args' is not defined +2025-03-10 15:30:05,204 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,205 - ERROR - Error in episode 5153: name 'args' is not defined +2025-03-10 15:30:05,207 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,207 - ERROR - Error in episode 5154: name 'args' is not defined +2025-03-10 15:30:05,210 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,211 - ERROR - Error in episode 5155: name 'args' is not defined +2025-03-10 15:30:05,214 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,214 - ERROR - Error in episode 5156: name 'args' is not defined +2025-03-10 15:30:05,216 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,217 - ERROR - Error in episode 5157: name 'args' is not defined +2025-03-10 15:30:05,219 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,219 - ERROR - Error in episode 5158: name 'args' is not defined +2025-03-10 15:30:05,223 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,223 - ERROR - Error in episode 5159: name 'args' is not defined +2025-03-10 15:30:05,225 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,226 - ERROR - Error in episode 5160: name 'args' is not defined +2025-03-10 15:30:05,228 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,228 - ERROR - Error in episode 5161: name 'args' is not defined +2025-03-10 15:30:05,232 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,232 - ERROR - Error in episode 5162: name 'args' is not defined +2025-03-10 15:30:05,234 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,235 - ERROR - Error in episode 5163: name 'args' is not defined +2025-03-10 15:30:05,237 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,238 - ERROR - Error in episode 5164: name 'args' is not defined +2025-03-10 15:30:05,241 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,241 - ERROR - Error in episode 5165: name 'args' is not defined +2025-03-10 15:30:05,245 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,245 - ERROR - Error in episode 5166: name 'args' is not defined +2025-03-10 15:30:05,248 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,248 - ERROR - Error in episode 5167: name 'args' is not defined +2025-03-10 15:30:05,251 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,252 - ERROR - Error in episode 5168: name 'args' is not defined +2025-03-10 15:30:05,255 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,255 - ERROR - Error in episode 5169: name 'args' is not defined +2025-03-10 15:30:05,258 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,258 - ERROR - Error in episode 5170: name 'args' is not defined +2025-03-10 15:30:05,260 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,261 - ERROR - Error in episode 5171: name 'args' is not defined +2025-03-10 15:30:05,264 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,264 - ERROR - Error in episode 5172: name 'args' is not defined +2025-03-10 15:30:05,267 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,267 - ERROR - Error in episode 5173: name 'args' is not defined +2025-03-10 15:30:05,270 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,271 - ERROR - Error in episode 5174: name 'args' is not defined +2025-03-10 15:30:05,274 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,274 - ERROR - Error in episode 5175: name 'args' is not defined +2025-03-10 15:30:05,276 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,277 - ERROR - Error in episode 5176: name 'args' is not defined +2025-03-10 15:30:05,279 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,280 - ERROR - Error in episode 5177: name 'args' is not defined +2025-03-10 15:30:05,282 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,283 - ERROR - Error in episode 5178: name 'args' is not defined +2025-03-10 15:30:05,286 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,286 - ERROR - Error in episode 5179: name 'args' is not defined +2025-03-10 15:30:05,289 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,289 - ERROR - Error in episode 5180: name 'args' is not defined +2025-03-10 15:30:05,292 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,292 - ERROR - Error in episode 5181: name 'args' is not defined +2025-03-10 15:30:05,294 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,294 - ERROR - Error in episode 5182: name 'args' is not defined +2025-03-10 15:30:05,297 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,297 - ERROR - Error in episode 5183: name 'args' is not defined +2025-03-10 15:30:05,301 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,301 - ERROR - Error in episode 5184: name 'args' is not defined +2025-03-10 15:30:05,303 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,303 - ERROR - Error in episode 5185: name 'args' is not defined +2025-03-10 15:30:05,307 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,307 - ERROR - Error in episode 5186: name 'args' is not defined +2025-03-10 15:30:05,309 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,309 - ERROR - Error in episode 5187: name 'args' is not defined +2025-03-10 15:30:05,312 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,312 - ERROR - Error in episode 5188: name 'args' is not defined +2025-03-10 15:30:05,315 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,315 - ERROR - Error in episode 5189: name 'args' is not defined +2025-03-10 15:30:05,318 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,319 - ERROR - Error in episode 5190: name 'args' is not defined +2025-03-10 15:30:05,321 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,321 - ERROR - Error in episode 5191: name 'args' is not defined +2025-03-10 15:30:05,324 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,324 - ERROR - Error in episode 5192: name 'args' is not defined +2025-03-10 15:30:05,326 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,326 - ERROR - Error in episode 5193: name 'args' is not defined +2025-03-10 15:30:05,328 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,328 - ERROR - Error in episode 5194: name 'args' is not defined +2025-03-10 15:30:05,332 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,333 - ERROR - Error in episode 5195: name 'args' is not defined +2025-03-10 15:30:05,335 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,335 - ERROR - Error in episode 5196: name 'args' is not defined +2025-03-10 15:30:05,338 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,338 - ERROR - Error in episode 5197: name 'args' is not defined +2025-03-10 15:30:05,340 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,341 - ERROR - Error in episode 5198: name 'args' is not defined +2025-03-10 15:30:05,343 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,343 - ERROR - Error in episode 5199: name 'args' is not defined +2025-03-10 15:30:05,347 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,347 - ERROR - Error in episode 5200: name 'args' is not defined +2025-03-10 15:30:05,351 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,351 - ERROR - Error in episode 5201: name 'args' is not defined +2025-03-10 15:30:05,354 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,354 - ERROR - Error in episode 5202: name 'args' is not defined +2025-03-10 15:30:05,357 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,357 - ERROR - Error in episode 5203: name 'args' is not defined +2025-03-10 15:30:05,360 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,360 - ERROR - Error in episode 5204: name 'args' is not defined +2025-03-10 15:30:05,362 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,363 - ERROR - Error in episode 5205: name 'args' is not defined +2025-03-10 15:30:05,365 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,366 - ERROR - Error in episode 5206: name 'args' is not defined +2025-03-10 15:30:05,369 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,369 - ERROR - Error in episode 5207: name 'args' is not defined +2025-03-10 15:30:05,371 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,372 - ERROR - Error in episode 5208: name 'args' is not defined +2025-03-10 15:30:05,375 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,375 - ERROR - Error in episode 5209: name 'args' is not defined +2025-03-10 15:30:05,377 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,377 - ERROR - Error in episode 5210: name 'args' is not defined +2025-03-10 15:30:05,380 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,380 - ERROR - Error in episode 5211: name 'args' is not defined +2025-03-10 15:30:05,383 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,383 - ERROR - Error in episode 5212: name 'args' is not defined +2025-03-10 15:30:05,386 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,386 - ERROR - Error in episode 5213: name 'args' is not defined +2025-03-10 15:30:05,389 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,389 - ERROR - Error in episode 5214: name 'args' is not defined +2025-03-10 15:30:05,391 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,392 - ERROR - Error in episode 5215: name 'args' is not defined +2025-03-10 15:30:05,394 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,395 - ERROR - Error in episode 5216: name 'args' is not defined +2025-03-10 15:30:05,398 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,398 - ERROR - Error in episode 5217: name 'args' is not defined +2025-03-10 15:30:05,401 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,401 - ERROR - Error in episode 5218: name 'args' is not defined +2025-03-10 15:30:05,404 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,404 - ERROR - Error in episode 5219: name 'args' is not defined +2025-03-10 15:30:05,407 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,407 - ERROR - Error in episode 5220: name 'args' is not defined +2025-03-10 15:30:05,409 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,410 - ERROR - Error in episode 5221: name 'args' is not defined +2025-03-10 15:30:05,412 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,412 - ERROR - Error in episode 5222: name 'args' is not defined +2025-03-10 15:30:05,415 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,416 - ERROR - Error in episode 5223: name 'args' is not defined +2025-03-10 15:30:05,418 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,418 - ERROR - Error in episode 5224: name 'args' is not defined +2025-03-10 15:30:05,420 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,421 - ERROR - Error in episode 5225: name 'args' is not defined +2025-03-10 15:30:05,424 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,424 - ERROR - Error in episode 5226: name 'args' is not defined +2025-03-10 15:30:05,426 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,426 - ERROR - Error in episode 5227: name 'args' is not defined +2025-03-10 15:30:05,428 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,430 - ERROR - Error in episode 5228: name 'args' is not defined +2025-03-10 15:30:05,432 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,433 - ERROR - Error in episode 5229: name 'args' is not defined +2025-03-10 15:30:05,435 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,435 - ERROR - Error in episode 5230: name 'args' is not defined +2025-03-10 15:30:05,437 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,438 - ERROR - Error in episode 5231: name 'args' is not defined +2025-03-10 15:30:05,441 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,441 - ERROR - Error in episode 5232: name 'args' is not defined +2025-03-10 15:30:05,444 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,444 - ERROR - Error in episode 5233: name 'args' is not defined +2025-03-10 15:30:05,447 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,447 - ERROR - Error in episode 5234: name 'args' is not defined +2025-03-10 15:30:05,449 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,450 - ERROR - Error in episode 5235: name 'args' is not defined +2025-03-10 15:30:05,452 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,452 - ERROR - Error in episode 5236: name 'args' is not defined +2025-03-10 15:30:05,455 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,455 - ERROR - Error in episode 5237: name 'args' is not defined +2025-03-10 15:30:05,458 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,458 - ERROR - Error in episode 5238: name 'args' is not defined +2025-03-10 15:30:05,461 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,461 - ERROR - Error in episode 5239: name 'args' is not defined +2025-03-10 15:30:05,464 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,464 - ERROR - Error in episode 5240: name 'args' is not defined +2025-03-10 15:30:05,467 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,467 - ERROR - Error in episode 5241: name 'args' is not defined +2025-03-10 15:30:05,470 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,470 - ERROR - Error in episode 5242: name 'args' is not defined +2025-03-10 15:30:05,473 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,473 - ERROR - Error in episode 5243: name 'args' is not defined +2025-03-10 15:30:05,476 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,477 - ERROR - Error in episode 5244: name 'args' is not defined +2025-03-10 15:30:05,479 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,479 - ERROR - Error in episode 5245: name 'args' is not defined +2025-03-10 15:30:05,482 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,482 - ERROR - Error in episode 5246: name 'args' is not defined +2025-03-10 15:30:05,485 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,485 - ERROR - Error in episode 5247: name 'args' is not defined +2025-03-10 15:30:05,488 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,488 - ERROR - Error in episode 5248: name 'args' is not defined +2025-03-10 15:30:05,491 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,491 - ERROR - Error in episode 5249: name 'args' is not defined +2025-03-10 15:30:05,494 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,494 - ERROR - Error in episode 5250: name 'args' is not defined +2025-03-10 15:30:05,497 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,497 - ERROR - Error in episode 5251: name 'args' is not defined +2025-03-10 15:30:05,499 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,500 - ERROR - Error in episode 5252: name 'args' is not defined +2025-03-10 15:30:05,502 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,503 - ERROR - Error in episode 5253: name 'args' is not defined +2025-03-10 15:30:05,505 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,505 - ERROR - Error in episode 5254: name 'args' is not defined +2025-03-10 15:30:05,507 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,507 - ERROR - Error in episode 5255: name 'args' is not defined +2025-03-10 15:30:05,510 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,511 - ERROR - Error in episode 5256: name 'args' is not defined +2025-03-10 15:30:05,513 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,513 - ERROR - Error in episode 5257: name 'args' is not defined +2025-03-10 15:30:05,516 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,516 - ERROR - Error in episode 5258: name 'args' is not defined +2025-03-10 15:30:05,519 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,519 - ERROR - Error in episode 5259: name 'args' is not defined +2025-03-10 15:30:05,523 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,523 - ERROR - Error in episode 5260: name 'args' is not defined +2025-03-10 15:30:05,525 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,526 - ERROR - Error in episode 5261: name 'args' is not defined +2025-03-10 15:30:05,528 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,528 - ERROR - Error in episode 5262: name 'args' is not defined +2025-03-10 15:30:05,531 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,531 - ERROR - Error in episode 5263: name 'args' is not defined +2025-03-10 15:30:05,534 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,534 - ERROR - Error in episode 5264: name 'args' is not defined +2025-03-10 15:30:05,537 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,537 - ERROR - Error in episode 5265: name 'args' is not defined +2025-03-10 15:30:05,540 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,540 - ERROR - Error in episode 5266: name 'args' is not defined +2025-03-10 15:30:05,542 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,544 - ERROR - Error in episode 5267: name 'args' is not defined +2025-03-10 15:30:05,546 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,546 - ERROR - Error in episode 5268: name 'args' is not defined +2025-03-10 15:30:05,549 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,549 - ERROR - Error in episode 5269: name 'args' is not defined +2025-03-10 15:30:05,552 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,552 - ERROR - Error in episode 5270: name 'args' is not defined +2025-03-10 15:30:05,554 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,555 - ERROR - Error in episode 5271: name 'args' is not defined +2025-03-10 15:30:05,558 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,558 - ERROR - Error in episode 5272: name 'args' is not defined +2025-03-10 15:30:05,560 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,561 - ERROR - Error in episode 5273: name 'args' is not defined +2025-03-10 15:30:05,563 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,564 - ERROR - Error in episode 5274: name 'args' is not defined +2025-03-10 15:30:05,566 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,566 - ERROR - Error in episode 5275: name 'args' is not defined +2025-03-10 15:30:05,569 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,569 - ERROR - Error in episode 5276: name 'args' is not defined +2025-03-10 15:30:05,572 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,572 - ERROR - Error in episode 5277: name 'args' is not defined +2025-03-10 15:30:05,574 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,575 - ERROR - Error in episode 5278: name 'args' is not defined +2025-03-10 15:30:05,578 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,578 - ERROR - Error in episode 5279: name 'args' is not defined +2025-03-10 15:30:05,581 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,581 - ERROR - Error in episode 5280: name 'args' is not defined +2025-03-10 15:30:05,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,584 - ERROR - Error in episode 5281: name 'args' is not defined +2025-03-10 15:30:05,586 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,587 - ERROR - Error in episode 5282: name 'args' is not defined +2025-03-10 15:30:05,590 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,590 - ERROR - Error in episode 5283: name 'args' is not defined +2025-03-10 15:30:05,592 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,593 - ERROR - Error in episode 5284: name 'args' is not defined +2025-03-10 15:30:05,595 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,596 - ERROR - Error in episode 5285: name 'args' is not defined +2025-03-10 15:30:05,598 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,600 - ERROR - Error in episode 5286: name 'args' is not defined +2025-03-10 15:30:05,602 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,602 - ERROR - Error in episode 5287: name 'args' is not defined +2025-03-10 15:30:05,605 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,605 - ERROR - Error in episode 5288: name 'args' is not defined +2025-03-10 15:30:05,608 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,608 - ERROR - Error in episode 5289: name 'args' is not defined +2025-03-10 15:30:05,611 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,611 - ERROR - Error in episode 5290: name 'args' is not defined +2025-03-10 15:30:05,614 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,614 - ERROR - Error in episode 5291: name 'args' is not defined +2025-03-10 15:30:05,616 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,617 - ERROR - Error in episode 5292: name 'args' is not defined +2025-03-10 15:30:05,619 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,619 - ERROR - Error in episode 5293: name 'args' is not defined +2025-03-10 15:30:05,622 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,622 - ERROR - Error in episode 5294: name 'args' is not defined +2025-03-10 15:30:05,625 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,626 - ERROR - Error in episode 5295: name 'args' is not defined +2025-03-10 15:30:05,628 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,628 - ERROR - Error in episode 5296: name 'args' is not defined +2025-03-10 15:30:05,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,631 - ERROR - Error in episode 5297: name 'args' is not defined +2025-03-10 15:30:05,633 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,633 - ERROR - Error in episode 5298: name 'args' is not defined +2025-03-10 15:30:05,636 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,636 - ERROR - Error in episode 5299: name 'args' is not defined +2025-03-10 15:30:05,639 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,640 - ERROR - Error in episode 5300: name 'args' is not defined +2025-03-10 15:30:05,642 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,642 - ERROR - Error in episode 5301: name 'args' is not defined +2025-03-10 15:30:05,644 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,645 - ERROR - Error in episode 5302: name 'args' is not defined +2025-03-10 15:30:05,648 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,648 - ERROR - Error in episode 5303: name 'args' is not defined +2025-03-10 15:30:05,650 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,651 - ERROR - Error in episode 5304: name 'args' is not defined +2025-03-10 15:30:05,653 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,653 - ERROR - Error in episode 5305: name 'args' is not defined +2025-03-10 15:30:05,656 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,656 - ERROR - Error in episode 5306: name 'args' is not defined +2025-03-10 15:30:05,659 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,659 - ERROR - Error in episode 5307: name 'args' is not defined +2025-03-10 15:30:05,663 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,663 - ERROR - Error in episode 5308: name 'args' is not defined +2025-03-10 15:30:05,666 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,666 - ERROR - Error in episode 5309: name 'args' is not defined +2025-03-10 15:30:05,669 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,669 - ERROR - Error in episode 5310: name 'args' is not defined +2025-03-10 15:30:05,672 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,672 - ERROR - Error in episode 5311: name 'args' is not defined +2025-03-10 15:30:05,675 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,675 - ERROR - Error in episode 5312: name 'args' is not defined +2025-03-10 15:30:05,678 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,678 - ERROR - Error in episode 5313: name 'args' is not defined +2025-03-10 15:30:05,681 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,681 - ERROR - Error in episode 5314: name 'args' is not defined +2025-03-10 15:30:05,684 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,684 - ERROR - Error in episode 5315: name 'args' is not defined +2025-03-10 15:30:05,687 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,687 - ERROR - Error in episode 5316: name 'args' is not defined +2025-03-10 15:30:05,689 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,689 - ERROR - Error in episode 5317: name 'args' is not defined +2025-03-10 15:30:05,691 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,692 - ERROR - Error in episode 5318: name 'args' is not defined +2025-03-10 15:30:05,695 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,696 - ERROR - Error in episode 5319: name 'args' is not defined +2025-03-10 15:30:05,699 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,700 - ERROR - Error in episode 5320: name 'args' is not defined +2025-03-10 15:30:05,702 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,702 - ERROR - Error in episode 5321: name 'args' is not defined +2025-03-10 15:30:05,705 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,705 - ERROR - Error in episode 5322: name 'args' is not defined +2025-03-10 15:30:05,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,707 - ERROR - Error in episode 5323: name 'args' is not defined +2025-03-10 15:30:05,711 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,711 - ERROR - Error in episode 5324: name 'args' is not defined +2025-03-10 15:30:05,714 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,714 - ERROR - Error in episode 5325: name 'args' is not defined +2025-03-10 15:30:05,717 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,717 - ERROR - Error in episode 5326: name 'args' is not defined +2025-03-10 15:30:05,719 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,719 - ERROR - Error in episode 5327: name 'args' is not defined +2025-03-10 15:30:05,722 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,723 - ERROR - Error in episode 5328: name 'args' is not defined +2025-03-10 15:30:05,725 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,725 - ERROR - Error in episode 5329: name 'args' is not defined +2025-03-10 15:30:05,728 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,728 - ERROR - Error in episode 5330: name 'args' is not defined +2025-03-10 15:30:05,731 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,732 - ERROR - Error in episode 5331: name 'args' is not defined +2025-03-10 15:30:05,734 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,735 - ERROR - Error in episode 5332: name 'args' is not defined +2025-03-10 15:30:05,737 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,738 - ERROR - Error in episode 5333: name 'args' is not defined +2025-03-10 15:30:05,740 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,741 - ERROR - Error in episode 5334: name 'args' is not defined +2025-03-10 15:30:05,743 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,743 - ERROR - Error in episode 5335: name 'args' is not defined +2025-03-10 15:30:05,746 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,746 - ERROR - Error in episode 5336: name 'args' is not defined +2025-03-10 15:30:05,749 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,749 - ERROR - Error in episode 5337: name 'args' is not defined +2025-03-10 15:30:05,751 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,752 - ERROR - Error in episode 5338: name 'args' is not defined +2025-03-10 15:30:05,754 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,755 - ERROR - Error in episode 5339: name 'args' is not defined +2025-03-10 15:30:05,757 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,758 - ERROR - Error in episode 5340: name 'args' is not defined +2025-03-10 15:30:05,760 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,760 - ERROR - Error in episode 5341: name 'args' is not defined +2025-03-10 15:30:05,763 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,763 - ERROR - Error in episode 5342: name 'args' is not defined +2025-03-10 15:30:05,766 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,766 - ERROR - Error in episode 5343: name 'args' is not defined +2025-03-10 15:30:05,769 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,769 - ERROR - Error in episode 5344: name 'args' is not defined +2025-03-10 15:30:05,772 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,772 - ERROR - Error in episode 5345: name 'args' is not defined +2025-03-10 15:30:05,775 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,775 - ERROR - Error in episode 5346: name 'args' is not defined +2025-03-10 15:30:05,778 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,778 - ERROR - Error in episode 5347: name 'args' is not defined +2025-03-10 15:30:05,781 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,781 - ERROR - Error in episode 5348: name 'args' is not defined +2025-03-10 15:30:05,783 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,784 - ERROR - Error in episode 5349: name 'args' is not defined +2025-03-10 15:30:05,786 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,786 - ERROR - Error in episode 5350: name 'args' is not defined +2025-03-10 15:30:05,790 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,790 - ERROR - Error in episode 5351: name 'args' is not defined +2025-03-10 15:30:05,792 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,793 - ERROR - Error in episode 5352: name 'args' is not defined +2025-03-10 15:30:05,795 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,795 - ERROR - Error in episode 5353: name 'args' is not defined +2025-03-10 15:30:05,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,798 - ERROR - Error in episode 5354: name 'args' is not defined +2025-03-10 15:30:05,802 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,802 - ERROR - Error in episode 5355: name 'args' is not defined +2025-03-10 15:30:05,805 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,806 - ERROR - Error in episode 5356: name 'args' is not defined +2025-03-10 15:30:05,808 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,809 - ERROR - Error in episode 5357: name 'args' is not defined +2025-03-10 15:30:05,812 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,812 - ERROR - Error in episode 5358: name 'args' is not defined +2025-03-10 15:30:05,816 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,816 - ERROR - Error in episode 5359: name 'args' is not defined +2025-03-10 15:30:05,821 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,821 - ERROR - Error in episode 5360: name 'args' is not defined +2025-03-10 15:30:05,824 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,825 - ERROR - Error in episode 5361: name 'args' is not defined +2025-03-10 15:30:05,828 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,829 - ERROR - Error in episode 5362: name 'args' is not defined +2025-03-10 15:30:05,833 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,833 - ERROR - Error in episode 5363: name 'args' is not defined +2025-03-10 15:30:05,837 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,837 - ERROR - Error in episode 5364: name 'args' is not defined +2025-03-10 15:30:05,840 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,840 - ERROR - Error in episode 5365: name 'args' is not defined +2025-03-10 15:30:05,843 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,843 - ERROR - Error in episode 5366: name 'args' is not defined +2025-03-10 15:30:05,846 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,846 - ERROR - Error in episode 5367: name 'args' is not defined +2025-03-10 15:30:05,850 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,851 - ERROR - Error in episode 5368: name 'args' is not defined +2025-03-10 15:30:05,854 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,854 - ERROR - Error in episode 5369: name 'args' is not defined +2025-03-10 15:30:05,857 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,858 - ERROR - Error in episode 5370: name 'args' is not defined +2025-03-10 15:30:05,861 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,862 - ERROR - Error in episode 5371: name 'args' is not defined +2025-03-10 15:30:05,865 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,865 - ERROR - Error in episode 5372: name 'args' is not defined +2025-03-10 15:30:05,868 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,869 - ERROR - Error in episode 5373: name 'args' is not defined +2025-03-10 15:30:05,873 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,873 - ERROR - Error in episode 5374: name 'args' is not defined +2025-03-10 15:30:05,877 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,877 - ERROR - Error in episode 5375: name 'args' is not defined +2025-03-10 15:30:05,882 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,882 - ERROR - Error in episode 5376: name 'args' is not defined +2025-03-10 15:30:05,885 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,886 - ERROR - Error in episode 5377: name 'args' is not defined +2025-03-10 15:30:05,888 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,889 - ERROR - Error in episode 5378: name 'args' is not defined +2025-03-10 15:30:05,893 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,893 - ERROR - Error in episode 5379: name 'args' is not defined +2025-03-10 15:30:05,897 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,898 - ERROR - Error in episode 5380: name 'args' is not defined +2025-03-10 15:30:05,901 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,901 - ERROR - Error in episode 5381: name 'args' is not defined +2025-03-10 15:30:05,905 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,905 - ERROR - Error in episode 5382: name 'args' is not defined +2025-03-10 15:30:05,909 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,910 - ERROR - Error in episode 5383: name 'args' is not defined +2025-03-10 15:30:05,913 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,913 - ERROR - Error in episode 5384: name 'args' is not defined +2025-03-10 15:30:05,916 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,917 - ERROR - Error in episode 5385: name 'args' is not defined +2025-03-10 15:30:05,921 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,921 - ERROR - Error in episode 5386: name 'args' is not defined +2025-03-10 15:30:05,925 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,925 - ERROR - Error in episode 5387: name 'args' is not defined +2025-03-10 15:30:05,929 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,929 - ERROR - Error in episode 5388: name 'args' is not defined +2025-03-10 15:30:05,933 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,934 - ERROR - Error in episode 5389: name 'args' is not defined +2025-03-10 15:30:05,938 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,938 - ERROR - Error in episode 5390: name 'args' is not defined +2025-03-10 15:30:05,942 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,942 - ERROR - Error in episode 5391: name 'args' is not defined +2025-03-10 15:30:05,946 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,946 - ERROR - Error in episode 5392: name 'args' is not defined +2025-03-10 15:30:05,950 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,950 - ERROR - Error in episode 5393: name 'args' is not defined +2025-03-10 15:30:05,954 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,954 - ERROR - Error in episode 5394: name 'args' is not defined +2025-03-10 15:30:05,958 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,959 - ERROR - Error in episode 5395: name 'args' is not defined +2025-03-10 15:30:05,962 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,963 - ERROR - Error in episode 5396: name 'args' is not defined +2025-03-10 15:30:05,966 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,967 - ERROR - Error in episode 5397: name 'args' is not defined +2025-03-10 15:30:05,971 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,971 - ERROR - Error in episode 5398: name 'args' is not defined +2025-03-10 15:30:05,974 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,974 - ERROR - Error in episode 5399: name 'args' is not defined +2025-03-10 15:30:05,977 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,977 - ERROR - Error in episode 5400: name 'args' is not defined +2025-03-10 15:30:05,980 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,981 - ERROR - Error in episode 5401: name 'args' is not defined +2025-03-10 15:30:05,985 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,986 - ERROR - Error in episode 5402: name 'args' is not defined +2025-03-10 15:30:05,989 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,990 - ERROR - Error in episode 5403: name 'args' is not defined +2025-03-10 15:30:05,994 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,994 - ERROR - Error in episode 5404: name 'args' is not defined +2025-03-10 15:30:05,997 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:05,997 - ERROR - Error in episode 5405: name 'args' is not defined +2025-03-10 15:30:06,000 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,000 - ERROR - Error in episode 5406: name 'args' is not defined +2025-03-10 15:30:06,004 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,004 - ERROR - Error in episode 5407: name 'args' is not defined +2025-03-10 15:30:06,008 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,008 - ERROR - Error in episode 5408: name 'args' is not defined +2025-03-10 15:30:06,012 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,013 - ERROR - Error in episode 5409: name 'args' is not defined +2025-03-10 15:30:06,016 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,017 - ERROR - Error in episode 5410: name 'args' is not defined +2025-03-10 15:30:06,020 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,021 - ERROR - Error in episode 5411: name 'args' is not defined +2025-03-10 15:30:06,024 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,025 - ERROR - Error in episode 5412: name 'args' is not defined +2025-03-10 15:30:06,029 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,029 - ERROR - Error in episode 5413: name 'args' is not defined +2025-03-10 15:30:06,032 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,032 - ERROR - Error in episode 5414: name 'args' is not defined +2025-03-10 15:30:06,035 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,037 - ERROR - Error in episode 5415: name 'args' is not defined +2025-03-10 15:30:06,040 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,040 - ERROR - Error in episode 5416: name 'args' is not defined +2025-03-10 15:30:06,043 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,043 - ERROR - Error in episode 5417: name 'args' is not defined +2025-03-10 15:30:06,047 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,048 - ERROR - Error in episode 5418: name 'args' is not defined +2025-03-10 15:30:06,051 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,052 - ERROR - Error in episode 5419: name 'args' is not defined +2025-03-10 15:30:06,055 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,055 - ERROR - Error in episode 5420: name 'args' is not defined +2025-03-10 15:30:06,059 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,059 - ERROR - Error in episode 5421: name 'args' is not defined +2025-03-10 15:30:06,063 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,063 - ERROR - Error in episode 5422: name 'args' is not defined +2025-03-10 15:30:06,066 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,067 - ERROR - Error in episode 5423: name 'args' is not defined +2025-03-10 15:30:06,071 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,071 - ERROR - Error in episode 5424: name 'args' is not defined +2025-03-10 15:30:06,075 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,076 - ERROR - Error in episode 5425: name 'args' is not defined +2025-03-10 15:30:06,079 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,079 - ERROR - Error in episode 5426: name 'args' is not defined +2025-03-10 15:30:06,082 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,082 - ERROR - Error in episode 5427: name 'args' is not defined +2025-03-10 15:30:06,085 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,086 - ERROR - Error in episode 5428: name 'args' is not defined +2025-03-10 15:30:06,089 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,089 - ERROR - Error in episode 5429: name 'args' is not defined +2025-03-10 15:30:06,093 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,093 - ERROR - Error in episode 5430: name 'args' is not defined +2025-03-10 15:30:06,096 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,097 - ERROR - Error in episode 5431: name 'args' is not defined +2025-03-10 15:30:06,101 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,102 - ERROR - Error in episode 5432: name 'args' is not defined +2025-03-10 15:30:06,105 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,105 - ERROR - Error in episode 5433: name 'args' is not defined +2025-03-10 15:30:06,108 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,108 - ERROR - Error in episode 5434: name 'args' is not defined +2025-03-10 15:30:06,110 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,110 - ERROR - Error in episode 5435: name 'args' is not defined +2025-03-10 15:30:06,113 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,113 - ERROR - Error in episode 5436: name 'args' is not defined +2025-03-10 15:30:06,115 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,116 - ERROR - Error in episode 5437: name 'args' is not defined +2025-03-10 15:30:06,118 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,119 - ERROR - Error in episode 5438: name 'args' is not defined +2025-03-10 15:30:06,122 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,122 - ERROR - Error in episode 5439: name 'args' is not defined +2025-03-10 15:30:06,124 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,124 - ERROR - Error in episode 5440: name 'args' is not defined +2025-03-10 15:30:06,127 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,128 - ERROR - Error in episode 5441: name 'args' is not defined +2025-03-10 15:30:06,130 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,130 - ERROR - Error in episode 5442: name 'args' is not defined +2025-03-10 15:30:06,133 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,134 - ERROR - Error in episode 5443: name 'args' is not defined +2025-03-10 15:30:06,137 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,137 - ERROR - Error in episode 5444: name 'args' is not defined +2025-03-10 15:30:06,140 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,140 - ERROR - Error in episode 5445: name 'args' is not defined +2025-03-10 15:30:06,143 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,144 - ERROR - Error in episode 5446: name 'args' is not defined +2025-03-10 15:30:06,146 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,146 - ERROR - Error in episode 5447: name 'args' is not defined +2025-03-10 15:30:06,150 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,151 - ERROR - Error in episode 5448: name 'args' is not defined +2025-03-10 15:30:06,155 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,155 - ERROR - Error in episode 5449: name 'args' is not defined +2025-03-10 15:30:06,158 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,159 - ERROR - Error in episode 5450: name 'args' is not defined +2025-03-10 15:30:06,163 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,163 - ERROR - Error in episode 5451: name 'args' is not defined +2025-03-10 15:30:06,167 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,167 - ERROR - Error in episode 5452: name 'args' is not defined +2025-03-10 15:30:06,171 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,171 - ERROR - Error in episode 5453: name 'args' is not defined +2025-03-10 15:30:06,175 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,175 - ERROR - Error in episode 5454: name 'args' is not defined +2025-03-10 15:30:06,179 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,180 - ERROR - Error in episode 5455: name 'args' is not defined +2025-03-10 15:30:06,182 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,183 - ERROR - Error in episode 5456: name 'args' is not defined +2025-03-10 15:30:06,187 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,187 - ERROR - Error in episode 5457: name 'args' is not defined +2025-03-10 15:30:06,190 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,191 - ERROR - Error in episode 5458: name 'args' is not defined +2025-03-10 15:30:06,195 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,195 - ERROR - Error in episode 5459: name 'args' is not defined +2025-03-10 15:30:06,198 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,198 - ERROR - Error in episode 5460: name 'args' is not defined +2025-03-10 15:30:06,201 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,201 - ERROR - Error in episode 5461: name 'args' is not defined +2025-03-10 15:30:06,204 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,204 - ERROR - Error in episode 5462: name 'args' is not defined +2025-03-10 15:30:06,207 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,207 - ERROR - Error in episode 5463: name 'args' is not defined +2025-03-10 15:30:06,210 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,210 - ERROR - Error in episode 5464: name 'args' is not defined +2025-03-10 15:30:06,213 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,214 - ERROR - Error in episode 5465: name 'args' is not defined +2025-03-10 15:30:06,217 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,217 - ERROR - Error in episode 5466: name 'args' is not defined +2025-03-10 15:30:06,221 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,221 - ERROR - Error in episode 5467: name 'args' is not defined +2025-03-10 15:30:06,224 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,225 - ERROR - Error in episode 5468: name 'args' is not defined +2025-03-10 15:30:06,227 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,228 - ERROR - Error in episode 5469: name 'args' is not defined +2025-03-10 15:30:06,230 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,230 - ERROR - Error in episode 5470: name 'args' is not defined +2025-03-10 15:30:06,233 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,233 - ERROR - Error in episode 5471: name 'args' is not defined +2025-03-10 15:30:06,235 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,237 - ERROR - Error in episode 5472: name 'args' is not defined +2025-03-10 15:30:06,239 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,239 - ERROR - Error in episode 5473: name 'args' is not defined +2025-03-10 15:30:06,242 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,242 - ERROR - Error in episode 5474: name 'args' is not defined +2025-03-10 15:30:06,245 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,245 - ERROR - Error in episode 5475: name 'args' is not defined +2025-03-10 15:30:06,248 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,248 - ERROR - Error in episode 5476: name 'args' is not defined +2025-03-10 15:30:06,251 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,251 - ERROR - Error in episode 5477: name 'args' is not defined +2025-03-10 15:30:06,254 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,254 - ERROR - Error in episode 5478: name 'args' is not defined +2025-03-10 15:30:06,256 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,257 - ERROR - Error in episode 5479: name 'args' is not defined +2025-03-10 15:30:06,259 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,260 - ERROR - Error in episode 5480: name 'args' is not defined +2025-03-10 15:30:06,263 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,263 - ERROR - Error in episode 5481: name 'args' is not defined +2025-03-10 15:30:06,266 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,266 - ERROR - Error in episode 5482: name 'args' is not defined +2025-03-10 15:30:06,268 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,269 - ERROR - Error in episode 5483: name 'args' is not defined +2025-03-10 15:30:06,271 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,272 - ERROR - Error in episode 5484: name 'args' is not defined +2025-03-10 15:30:06,274 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,275 - ERROR - Error in episode 5485: name 'args' is not defined +2025-03-10 15:30:06,277 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,278 - ERROR - Error in episode 5486: name 'args' is not defined +2025-03-10 15:30:06,280 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,280 - ERROR - Error in episode 5487: name 'args' is not defined +2025-03-10 15:30:06,283 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,283 - ERROR - Error in episode 5488: name 'args' is not defined +2025-03-10 15:30:06,286 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,286 - ERROR - Error in episode 5489: name 'args' is not defined +2025-03-10 15:30:06,289 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,289 - ERROR - Error in episode 5490: name 'args' is not defined +2025-03-10 15:30:06,292 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,293 - ERROR - Error in episode 5491: name 'args' is not defined +2025-03-10 15:30:06,295 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,295 - ERROR - Error in episode 5492: name 'args' is not defined +2025-03-10 15:30:06,298 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,299 - ERROR - Error in episode 5493: name 'args' is not defined +2025-03-10 15:30:06,301 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,301 - ERROR - Error in episode 5494: name 'args' is not defined +2025-03-10 15:30:06,304 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,304 - ERROR - Error in episode 5495: name 'args' is not defined +2025-03-10 15:30:06,307 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,307 - ERROR - Error in episode 5496: name 'args' is not defined +2025-03-10 15:30:06,310 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,310 - ERROR - Error in episode 5497: name 'args' is not defined +2025-03-10 15:30:06,312 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,312 - ERROR - Error in episode 5498: name 'args' is not defined +2025-03-10 15:30:06,316 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,316 - ERROR - Error in episode 5499: name 'args' is not defined +2025-03-10 15:30:06,319 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,319 - ERROR - Error in episode 5500: name 'args' is not defined +2025-03-10 15:30:06,321 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,322 - ERROR - Error in episode 5501: name 'args' is not defined +2025-03-10 15:30:06,325 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,325 - ERROR - Error in episode 5502: name 'args' is not defined +2025-03-10 15:30:06,327 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,327 - ERROR - Error in episode 5503: name 'args' is not defined +2025-03-10 15:30:06,330 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,331 - ERROR - Error in episode 5504: name 'args' is not defined +2025-03-10 15:30:06,333 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,334 - ERROR - Error in episode 5505: name 'args' is not defined +2025-03-10 15:30:06,336 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,336 - ERROR - Error in episode 5506: name 'args' is not defined +2025-03-10 15:30:06,339 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,339 - ERROR - Error in episode 5507: name 'args' is not defined +2025-03-10 15:30:06,342 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,342 - ERROR - Error in episode 5508: name 'args' is not defined +2025-03-10 15:30:06,344 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,344 - ERROR - Error in episode 5509: name 'args' is not defined +2025-03-10 15:30:06,348 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,349 - ERROR - Error in episode 5510: name 'args' is not defined +2025-03-10 15:30:06,351 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,351 - ERROR - Error in episode 5511: name 'args' is not defined +2025-03-10 15:30:06,354 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,354 - ERROR - Error in episode 5512: name 'args' is not defined +2025-03-10 15:30:06,357 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,357 - ERROR - Error in episode 5513: name 'args' is not defined +2025-03-10 15:30:06,359 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,360 - ERROR - Error in episode 5514: name 'args' is not defined +2025-03-10 15:30:06,363 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,363 - ERROR - Error in episode 5515: name 'args' is not defined +2025-03-10 15:30:06,366 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,366 - ERROR - Error in episode 5516: name 'args' is not defined +2025-03-10 15:30:06,368 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,368 - ERROR - Error in episode 5517: name 'args' is not defined +2025-03-10 15:30:06,371 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,371 - ERROR - Error in episode 5518: name 'args' is not defined +2025-03-10 15:30:06,374 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,374 - ERROR - Error in episode 5519: name 'args' is not defined +2025-03-10 15:30:06,376 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,377 - ERROR - Error in episode 5520: name 'args' is not defined +2025-03-10 15:30:06,379 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,379 - ERROR - Error in episode 5521: name 'args' is not defined +2025-03-10 15:30:06,382 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,382 - ERROR - Error in episode 5522: name 'args' is not defined +2025-03-10 15:30:06,384 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,385 - ERROR - Error in episode 5523: name 'args' is not defined +2025-03-10 15:30:06,387 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,388 - ERROR - Error in episode 5524: name 'args' is not defined +2025-03-10 15:30:06,390 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,391 - ERROR - Error in episode 5525: name 'args' is not defined +2025-03-10 15:30:06,393 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,394 - ERROR - Error in episode 5526: name 'args' is not defined +2025-03-10 15:30:06,396 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,397 - ERROR - Error in episode 5527: name 'args' is not defined +2025-03-10 15:30:06,399 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,400 - ERROR - Error in episode 5528: name 'args' is not defined +2025-03-10 15:30:06,402 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,402 - ERROR - Error in episode 5529: name 'args' is not defined +2025-03-10 15:30:06,405 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,407 - ERROR - Error in episode 5530: name 'args' is not defined +2025-03-10 15:30:06,409 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,410 - ERROR - Error in episode 5531: name 'args' is not defined +2025-03-10 15:30:06,412 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,413 - ERROR - Error in episode 5532: name 'args' is not defined +2025-03-10 15:30:06,415 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,416 - ERROR - Error in episode 5533: name 'args' is not defined +2025-03-10 15:30:06,419 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,419 - ERROR - Error in episode 5534: name 'args' is not defined +2025-03-10 15:30:06,422 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,423 - ERROR - Error in episode 5535: name 'args' is not defined +2025-03-10 15:30:06,425 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,426 - ERROR - Error in episode 5536: name 'args' is not defined +2025-03-10 15:30:06,428 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,429 - ERROR - Error in episode 5537: name 'args' is not defined +2025-03-10 15:30:06,433 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,433 - ERROR - Error in episode 5538: name 'args' is not defined +2025-03-10 15:30:06,436 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,436 - ERROR - Error in episode 5539: name 'args' is not defined +2025-03-10 15:30:06,439 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,440 - ERROR - Error in episode 5540: name 'args' is not defined +2025-03-10 15:30:06,442 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,442 - ERROR - Error in episode 5541: name 'args' is not defined +2025-03-10 15:30:06,445 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,445 - ERROR - Error in episode 5542: name 'args' is not defined +2025-03-10 15:30:06,448 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,448 - ERROR - Error in episode 5543: name 'args' is not defined +2025-03-10 15:30:06,451 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,451 - ERROR - Error in episode 5544: name 'args' is not defined +2025-03-10 15:30:06,453 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,453 - ERROR - Error in episode 5545: name 'args' is not defined +2025-03-10 15:30:06,456 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,457 - ERROR - Error in episode 5546: name 'args' is not defined +2025-03-10 15:30:06,459 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,459 - ERROR - Error in episode 5547: name 'args' is not defined +2025-03-10 15:30:06,462 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,462 - ERROR - Error in episode 5548: name 'args' is not defined +2025-03-10 15:30:06,465 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,465 - ERROR - Error in episode 5549: name 'args' is not defined +2025-03-10 15:30:06,467 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,468 - ERROR - Error in episode 5550: name 'args' is not defined +2025-03-10 15:30:06,470 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,471 - ERROR - Error in episode 5551: name 'args' is not defined +2025-03-10 15:30:06,474 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,474 - ERROR - Error in episode 5552: name 'args' is not defined +2025-03-10 15:30:06,476 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,477 - ERROR - Error in episode 5553: name 'args' is not defined +2025-03-10 15:30:06,479 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,479 - ERROR - Error in episode 5554: name 'args' is not defined +2025-03-10 15:30:06,482 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,482 - ERROR - Error in episode 5555: name 'args' is not defined +2025-03-10 15:30:06,485 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,485 - ERROR - Error in episode 5556: name 'args' is not defined +2025-03-10 15:30:06,489 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,489 - ERROR - Error in episode 5557: name 'args' is not defined +2025-03-10 15:30:06,492 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,492 - ERROR - Error in episode 5558: name 'args' is not defined +2025-03-10 15:30:06,495 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,495 - ERROR - Error in episode 5559: name 'args' is not defined +2025-03-10 15:30:06,498 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,498 - ERROR - Error in episode 5560: name 'args' is not defined +2025-03-10 15:30:06,501 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,501 - ERROR - Error in episode 5561: name 'args' is not defined +2025-03-10 15:30:06,503 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,504 - ERROR - Error in episode 5562: name 'args' is not defined +2025-03-10 15:30:06,506 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,507 - ERROR - Error in episode 5563: name 'args' is not defined +2025-03-10 15:30:06,509 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,509 - ERROR - Error in episode 5564: name 'args' is not defined +2025-03-10 15:30:06,512 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,512 - ERROR - Error in episode 5565: name 'args' is not defined +2025-03-10 15:30:06,515 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,515 - ERROR - Error in episode 5566: name 'args' is not defined +2025-03-10 15:30:06,517 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,518 - ERROR - Error in episode 5567: name 'args' is not defined +2025-03-10 15:30:06,521 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,521 - ERROR - Error in episode 5568: name 'args' is not defined +2025-03-10 15:30:06,524 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,524 - ERROR - Error in episode 5569: name 'args' is not defined +2025-03-10 15:30:06,527 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,527 - ERROR - Error in episode 5570: name 'args' is not defined +2025-03-10 15:30:06,529 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,530 - ERROR - Error in episode 5571: name 'args' is not defined +2025-03-10 15:30:06,533 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,534 - ERROR - Error in episode 5572: name 'args' is not defined +2025-03-10 15:30:06,536 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,537 - ERROR - Error in episode 5573: name 'args' is not defined +2025-03-10 15:30:06,540 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,540 - ERROR - Error in episode 5574: name 'args' is not defined +2025-03-10 15:30:06,542 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,543 - ERROR - Error in episode 5575: name 'args' is not defined +2025-03-10 15:30:06,545 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,545 - ERROR - Error in episode 5576: name 'args' is not defined +2025-03-10 15:30:06,548 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,548 - ERROR - Error in episode 5577: name 'args' is not defined +2025-03-10 15:30:06,552 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,552 - ERROR - Error in episode 5578: name 'args' is not defined +2025-03-10 15:30:06,554 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,555 - ERROR - Error in episode 5579: name 'args' is not defined +2025-03-10 15:30:06,557 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,557 - ERROR - Error in episode 5580: name 'args' is not defined +2025-03-10 15:30:06,559 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,560 - ERROR - Error in episode 5581: name 'args' is not defined +2025-03-10 15:30:06,563 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,563 - ERROR - Error in episode 5582: name 'args' is not defined +2025-03-10 15:30:06,566 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,566 - ERROR - Error in episode 5583: name 'args' is not defined +2025-03-10 15:30:06,569 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,569 - ERROR - Error in episode 5584: name 'args' is not defined +2025-03-10 15:30:06,572 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,572 - ERROR - Error in episode 5585: name 'args' is not defined +2025-03-10 15:30:06,574 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,575 - ERROR - Error in episode 5586: name 'args' is not defined +2025-03-10 15:30:06,577 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,578 - ERROR - Error in episode 5587: name 'args' is not defined +2025-03-10 15:30:06,581 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,582 - ERROR - Error in episode 5588: name 'args' is not defined +2025-03-10 15:30:06,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,585 - ERROR - Error in episode 5589: name 'args' is not defined +2025-03-10 15:30:06,587 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,588 - ERROR - Error in episode 5590: name 'args' is not defined +2025-03-10 15:30:06,591 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,591 - ERROR - Error in episode 5591: name 'args' is not defined +2025-03-10 15:30:06,594 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,594 - ERROR - Error in episode 5592: name 'args' is not defined +2025-03-10 15:30:06,597 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,597 - ERROR - Error in episode 5593: name 'args' is not defined +2025-03-10 15:30:06,601 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,601 - ERROR - Error in episode 5594: name 'args' is not defined +2025-03-10 15:30:06,603 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,604 - ERROR - Error in episode 5595: name 'args' is not defined +2025-03-10 15:30:06,606 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,607 - ERROR - Error in episode 5596: name 'args' is not defined +2025-03-10 15:30:06,609 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,609 - ERROR - Error in episode 5597: name 'args' is not defined +2025-03-10 15:30:06,612 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,612 - ERROR - Error in episode 5598: name 'args' is not defined +2025-03-10 15:30:06,615 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,615 - ERROR - Error in episode 5599: name 'args' is not defined +2025-03-10 15:30:06,617 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,617 - ERROR - Error in episode 5600: name 'args' is not defined +2025-03-10 15:30:06,620 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,620 - ERROR - Error in episode 5601: name 'args' is not defined +2025-03-10 15:30:06,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,623 - ERROR - Error in episode 5602: name 'args' is not defined +2025-03-10 15:30:06,626 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,626 - ERROR - Error in episode 5603: name 'args' is not defined +2025-03-10 15:30:06,629 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,629 - ERROR - Error in episode 5604: name 'args' is not defined +2025-03-10 15:30:06,633 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,633 - ERROR - Error in episode 5605: name 'args' is not defined +2025-03-10 15:30:06,635 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,635 - ERROR - Error in episode 5606: name 'args' is not defined +2025-03-10 15:30:06,638 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,638 - ERROR - Error in episode 5607: name 'args' is not defined +2025-03-10 15:30:06,641 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,641 - ERROR - Error in episode 5608: name 'args' is not defined +2025-03-10 15:30:06,644 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,644 - ERROR - Error in episode 5609: name 'args' is not defined +2025-03-10 15:30:06,647 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,647 - ERROR - Error in episode 5610: name 'args' is not defined +2025-03-10 15:30:06,650 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,650 - ERROR - Error in episode 5611: name 'args' is not defined +2025-03-10 15:30:06,653 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,654 - ERROR - Error in episode 5612: name 'args' is not defined +2025-03-10 15:30:06,657 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,657 - ERROR - Error in episode 5613: name 'args' is not defined +2025-03-10 15:30:06,660 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,660 - ERROR - Error in episode 5614: name 'args' is not defined +2025-03-10 15:30:06,662 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,663 - ERROR - Error in episode 5615: name 'args' is not defined +2025-03-10 15:30:06,665 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,665 - ERROR - Error in episode 5616: name 'args' is not defined +2025-03-10 15:30:06,668 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,669 - ERROR - Error in episode 5617: name 'args' is not defined +2025-03-10 15:30:06,671 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,672 - ERROR - Error in episode 5618: name 'args' is not defined +2025-03-10 15:30:06,675 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,676 - ERROR - Error in episode 5619: name 'args' is not defined +2025-03-10 15:30:06,678 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,679 - ERROR - Error in episode 5620: name 'args' is not defined +2025-03-10 15:30:06,682 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,682 - ERROR - Error in episode 5621: name 'args' is not defined +2025-03-10 15:30:06,684 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,685 - ERROR - Error in episode 5622: name 'args' is not defined +2025-03-10 15:30:06,687 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,687 - ERROR - Error in episode 5623: name 'args' is not defined +2025-03-10 15:30:06,691 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,691 - ERROR - Error in episode 5624: name 'args' is not defined +2025-03-10 15:30:06,694 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,694 - ERROR - Error in episode 5625: name 'args' is not defined +2025-03-10 15:30:06,697 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,697 - ERROR - Error in episode 5626: name 'args' is not defined +2025-03-10 15:30:06,699 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,700 - ERROR - Error in episode 5627: name 'args' is not defined +2025-03-10 15:30:06,702 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,702 - ERROR - Error in episode 5628: name 'args' is not defined +2025-03-10 15:30:06,705 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,705 - ERROR - Error in episode 5629: name 'args' is not defined +2025-03-10 15:30:06,708 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,708 - ERROR - Error in episode 5630: name 'args' is not defined +2025-03-10 15:30:06,711 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,711 - ERROR - Error in episode 5631: name 'args' is not defined +2025-03-10 15:30:06,714 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,714 - ERROR - Error in episode 5632: name 'args' is not defined +2025-03-10 15:30:06,717 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,717 - ERROR - Error in episode 5633: name 'args' is not defined +2025-03-10 15:30:06,720 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,721 - ERROR - Error in episode 5634: name 'args' is not defined +2025-03-10 15:30:06,723 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,724 - ERROR - Error in episode 5635: name 'args' is not defined +2025-03-10 15:30:06,726 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,726 - ERROR - Error in episode 5636: name 'args' is not defined +2025-03-10 15:30:06,729 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,729 - ERROR - Error in episode 5637: name 'args' is not defined +2025-03-10 15:30:06,732 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,733 - ERROR - Error in episode 5638: name 'args' is not defined +2025-03-10 15:30:06,735 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,736 - ERROR - Error in episode 5639: name 'args' is not defined +2025-03-10 15:30:06,738 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,738 - ERROR - Error in episode 5640: name 'args' is not defined +2025-03-10 15:30:06,741 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,741 - ERROR - Error in episode 5641: name 'args' is not defined +2025-03-10 15:30:06,744 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,744 - ERROR - Error in episode 5642: name 'args' is not defined +2025-03-10 15:30:06,747 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,747 - ERROR - Error in episode 5643: name 'args' is not defined +2025-03-10 15:30:06,750 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,751 - ERROR - Error in episode 5644: name 'args' is not defined +2025-03-10 15:30:06,753 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,753 - ERROR - Error in episode 5645: name 'args' is not defined +2025-03-10 15:30:06,757 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,757 - ERROR - Error in episode 5646: name 'args' is not defined +2025-03-10 15:30:06,759 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,760 - ERROR - Error in episode 5647: name 'args' is not defined +2025-03-10 15:30:06,762 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,763 - ERROR - Error in episode 5648: name 'args' is not defined +2025-03-10 15:30:06,765 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,766 - ERROR - Error in episode 5649: name 'args' is not defined +2025-03-10 15:30:06,768 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,769 - ERROR - Error in episode 5650: name 'args' is not defined +2025-03-10 15:30:06,771 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,771 - ERROR - Error in episode 5651: name 'args' is not defined +2025-03-10 15:30:06,774 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,775 - ERROR - Error in episode 5652: name 'args' is not defined +2025-03-10 15:30:06,777 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,778 - ERROR - Error in episode 5653: name 'args' is not defined +2025-03-10 15:30:06,780 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,780 - ERROR - Error in episode 5654: name 'args' is not defined +2025-03-10 15:30:06,783 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,783 - ERROR - Error in episode 5655: name 'args' is not defined +2025-03-10 15:30:06,787 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,787 - ERROR - Error in episode 5656: name 'args' is not defined +2025-03-10 15:30:06,790 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,790 - ERROR - Error in episode 5657: name 'args' is not defined +2025-03-10 15:30:06,793 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,793 - ERROR - Error in episode 5658: name 'args' is not defined +2025-03-10 15:30:06,796 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,796 - ERROR - Error in episode 5659: name 'args' is not defined +2025-03-10 15:30:06,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,799 - ERROR - Error in episode 5660: name 'args' is not defined +2025-03-10 15:30:06,801 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,802 - ERROR - Error in episode 5661: name 'args' is not defined +2025-03-10 15:30:06,804 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,804 - ERROR - Error in episode 5662: name 'args' is not defined +2025-03-10 15:30:06,807 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,808 - ERROR - Error in episode 5663: name 'args' is not defined +2025-03-10 15:30:06,811 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,811 - ERROR - Error in episode 5664: name 'args' is not defined +2025-03-10 15:30:06,813 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,813 - ERROR - Error in episode 5665: name 'args' is not defined +2025-03-10 15:30:06,816 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,816 - ERROR - Error in episode 5666: name 'args' is not defined +2025-03-10 15:30:06,818 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,819 - ERROR - Error in episode 5667: name 'args' is not defined +2025-03-10 15:30:06,821 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,821 - ERROR - Error in episode 5668: name 'args' is not defined +2025-03-10 15:30:06,824 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,824 - ERROR - Error in episode 5669: name 'args' is not defined +2025-03-10 15:30:06,828 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,828 - ERROR - Error in episode 5670: name 'args' is not defined +2025-03-10 15:30:06,831 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,831 - ERROR - Error in episode 5671: name 'args' is not defined +2025-03-10 15:30:06,833 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,833 - ERROR - Error in episode 5672: name 'args' is not defined +2025-03-10 15:30:06,837 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,837 - ERROR - Error in episode 5673: name 'args' is not defined +2025-03-10 15:30:06,839 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,840 - ERROR - Error in episode 5674: name 'args' is not defined +2025-03-10 15:30:06,842 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,842 - ERROR - Error in episode 5675: name 'args' is not defined +2025-03-10 15:30:06,845 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,845 - ERROR - Error in episode 5676: name 'args' is not defined +2025-03-10 15:30:06,848 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,848 - ERROR - Error in episode 5677: name 'args' is not defined +2025-03-10 15:30:06,850 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,851 - ERROR - Error in episode 5678: name 'args' is not defined +2025-03-10 15:30:06,854 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,854 - ERROR - Error in episode 5679: name 'args' is not defined +2025-03-10 15:30:06,857 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,857 - ERROR - Error in episode 5680: name 'args' is not defined +2025-03-10 15:30:06,860 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,861 - ERROR - Error in episode 5681: name 'args' is not defined +2025-03-10 15:30:06,863 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,864 - ERROR - Error in episode 5682: name 'args' is not defined +2025-03-10 15:30:06,866 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,867 - ERROR - Error in episode 5683: name 'args' is not defined +2025-03-10 15:30:06,870 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,870 - ERROR - Error in episode 5684: name 'args' is not defined +2025-03-10 15:30:06,872 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,873 - ERROR - Error in episode 5685: name 'args' is not defined +2025-03-10 15:30:06,876 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,876 - ERROR - Error in episode 5686: name 'args' is not defined +2025-03-10 15:30:06,878 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,879 - ERROR - Error in episode 5687: name 'args' is not defined +2025-03-10 15:30:06,882 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,882 - ERROR - Error in episode 5688: name 'args' is not defined +2025-03-10 15:30:06,886 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,886 - ERROR - Error in episode 5689: name 'args' is not defined +2025-03-10 15:30:06,889 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,889 - ERROR - Error in episode 5690: name 'args' is not defined +2025-03-10 15:30:06,892 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,893 - ERROR - Error in episode 5691: name 'args' is not defined +2025-03-10 15:30:06,896 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,896 - ERROR - Error in episode 5692: name 'args' is not defined +2025-03-10 15:30:06,898 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,899 - ERROR - Error in episode 5693: name 'args' is not defined +2025-03-10 15:30:06,901 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,901 - ERROR - Error in episode 5694: name 'args' is not defined +2025-03-10 15:30:06,904 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,904 - ERROR - Error in episode 5695: name 'args' is not defined +2025-03-10 15:30:06,907 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,907 - ERROR - Error in episode 5696: name 'args' is not defined +2025-03-10 15:30:06,910 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,910 - ERROR - Error in episode 5697: name 'args' is not defined +2025-03-10 15:30:06,913 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,913 - ERROR - Error in episode 5698: name 'args' is not defined +2025-03-10 15:30:06,915 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,916 - ERROR - Error in episode 5699: name 'args' is not defined +2025-03-10 15:30:06,919 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,919 - ERROR - Error in episode 5700: name 'args' is not defined +2025-03-10 15:30:06,921 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,922 - ERROR - Error in episode 5701: name 'args' is not defined +2025-03-10 15:30:06,924 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,925 - ERROR - Error in episode 5702: name 'args' is not defined +2025-03-10 15:30:06,927 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,927 - ERROR - Error in episode 5703: name 'args' is not defined +2025-03-10 15:30:06,929 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,929 - ERROR - Error in episode 5704: name 'args' is not defined +2025-03-10 15:30:06,933 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,933 - ERROR - Error in episode 5705: name 'args' is not defined +2025-03-10 15:30:06,936 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,936 - ERROR - Error in episode 5706: name 'args' is not defined +2025-03-10 15:30:06,938 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,939 - ERROR - Error in episode 5707: name 'args' is not defined +2025-03-10 15:30:06,941 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,942 - ERROR - Error in episode 5708: name 'args' is not defined +2025-03-10 15:30:06,944 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,945 - ERROR - Error in episode 5709: name 'args' is not defined +2025-03-10 15:30:06,947 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,948 - ERROR - Error in episode 5710: name 'args' is not defined +2025-03-10 15:30:06,951 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,951 - ERROR - Error in episode 5711: name 'args' is not defined +2025-03-10 15:30:06,954 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,954 - ERROR - Error in episode 5712: name 'args' is not defined +2025-03-10 15:30:06,956 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,957 - ERROR - Error in episode 5713: name 'args' is not defined +2025-03-10 15:30:06,959 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,960 - ERROR - Error in episode 5714: name 'args' is not defined +2025-03-10 15:30:06,962 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,963 - ERROR - Error in episode 5715: name 'args' is not defined +2025-03-10 15:30:06,966 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,966 - ERROR - Error in episode 5716: name 'args' is not defined +2025-03-10 15:30:06,969 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,969 - ERROR - Error in episode 5717: name 'args' is not defined +2025-03-10 15:30:06,972 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,972 - ERROR - Error in episode 5718: name 'args' is not defined +2025-03-10 15:30:06,975 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,975 - ERROR - Error in episode 5719: name 'args' is not defined +2025-03-10 15:30:06,979 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,979 - ERROR - Error in episode 5720: name 'args' is not defined +2025-03-10 15:30:06,983 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,983 - ERROR - Error in episode 5721: name 'args' is not defined +2025-03-10 15:30:06,986 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,986 - ERROR - Error in episode 5722: name 'args' is not defined +2025-03-10 15:30:06,989 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,989 - ERROR - Error in episode 5723: name 'args' is not defined +2025-03-10 15:30:06,991 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,992 - ERROR - Error in episode 5724: name 'args' is not defined +2025-03-10 15:30:06,995 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,995 - ERROR - Error in episode 5725: name 'args' is not defined +2025-03-10 15:30:06,998 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:06,998 - ERROR - Error in episode 5726: name 'args' is not defined +2025-03-10 15:30:07,001 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,002 - ERROR - Error in episode 5727: name 'args' is not defined +2025-03-10 15:30:07,004 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,005 - ERROR - Error in episode 5728: name 'args' is not defined +2025-03-10 15:30:07,007 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,007 - ERROR - Error in episode 5729: name 'args' is not defined +2025-03-10 15:30:07,010 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,012 - ERROR - Error in episode 5730: name 'args' is not defined +2025-03-10 15:30:07,014 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,015 - ERROR - Error in episode 5731: name 'args' is not defined +2025-03-10 15:30:07,017 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,018 - ERROR - Error in episode 5732: name 'args' is not defined +2025-03-10 15:30:07,020 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,020 - ERROR - Error in episode 5733: name 'args' is not defined +2025-03-10 15:30:07,023 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,023 - ERROR - Error in episode 5734: name 'args' is not defined +2025-03-10 15:30:07,026 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,026 - ERROR - Error in episode 5735: name 'args' is not defined +2025-03-10 15:30:07,029 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,029 - ERROR - Error in episode 5736: name 'args' is not defined +2025-03-10 15:30:07,033 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,033 - ERROR - Error in episode 5737: name 'args' is not defined +2025-03-10 15:30:07,036 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,036 - ERROR - Error in episode 5738: name 'args' is not defined +2025-03-10 15:30:07,039 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,039 - ERROR - Error in episode 5739: name 'args' is not defined +2025-03-10 15:30:07,042 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,042 - ERROR - Error in episode 5740: name 'args' is not defined +2025-03-10 15:30:07,045 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,045 - ERROR - Error in episode 5741: name 'args' is not defined +2025-03-10 15:30:07,048 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,048 - ERROR - Error in episode 5742: name 'args' is not defined +2025-03-10 15:30:07,050 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,050 - ERROR - Error in episode 5743: name 'args' is not defined +2025-03-10 15:30:07,053 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,053 - ERROR - Error in episode 5744: name 'args' is not defined +2025-03-10 15:30:07,055 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,056 - ERROR - Error in episode 5745: name 'args' is not defined +2025-03-10 15:30:07,058 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,059 - ERROR - Error in episode 5746: name 'args' is not defined +2025-03-10 15:30:07,062 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,062 - ERROR - Error in episode 5747: name 'args' is not defined +2025-03-10 15:30:07,064 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,065 - ERROR - Error in episode 5748: name 'args' is not defined +2025-03-10 15:30:07,067 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,068 - ERROR - Error in episode 5749: name 'args' is not defined +2025-03-10 15:30:07,070 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,070 - ERROR - Error in episode 5750: name 'args' is not defined +2025-03-10 15:30:07,073 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,073 - ERROR - Error in episode 5751: name 'args' is not defined +2025-03-10 15:30:07,076 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,077 - ERROR - Error in episode 5752: name 'args' is not defined +2025-03-10 15:30:07,079 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,079 - ERROR - Error in episode 5753: name 'args' is not defined +2025-03-10 15:30:07,082 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,082 - ERROR - Error in episode 5754: name 'args' is not defined +2025-03-10 15:30:07,085 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,085 - ERROR - Error in episode 5755: name 'args' is not defined +2025-03-10 15:30:07,088 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,088 - ERROR - Error in episode 5756: name 'args' is not defined +2025-03-10 15:30:07,090 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,091 - ERROR - Error in episode 5757: name 'args' is not defined +2025-03-10 15:30:07,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,094 - ERROR - Error in episode 5758: name 'args' is not defined +2025-03-10 15:30:07,097 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,097 - ERROR - Error in episode 5759: name 'args' is not defined +2025-03-10 15:30:07,099 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,100 - ERROR - Error in episode 5760: name 'args' is not defined +2025-03-10 15:30:07,103 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,104 - ERROR - Error in episode 5761: name 'args' is not defined +2025-03-10 15:30:07,106 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,107 - ERROR - Error in episode 5762: name 'args' is not defined +2025-03-10 15:30:07,109 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,109 - ERROR - Error in episode 5763: name 'args' is not defined +2025-03-10 15:30:07,112 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,112 - ERROR - Error in episode 5764: name 'args' is not defined +2025-03-10 15:30:07,114 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,115 - ERROR - Error in episode 5765: name 'args' is not defined +2025-03-10 15:30:07,117 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,117 - ERROR - Error in episode 5766: name 'args' is not defined +2025-03-10 15:30:07,121 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,121 - ERROR - Error in episode 5767: name 'args' is not defined +2025-03-10 15:30:07,124 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,124 - ERROR - Error in episode 5768: name 'args' is not defined +2025-03-10 15:30:07,126 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,127 - ERROR - Error in episode 5769: name 'args' is not defined +2025-03-10 15:30:07,129 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,129 - ERROR - Error in episode 5770: name 'args' is not defined +2025-03-10 15:30:07,132 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,133 - ERROR - Error in episode 5771: name 'args' is not defined +2025-03-10 15:30:07,135 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,136 - ERROR - Error in episode 5772: name 'args' is not defined +2025-03-10 15:30:07,138 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,139 - ERROR - Error in episode 5773: name 'args' is not defined +2025-03-10 15:30:07,141 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,142 - ERROR - Error in episode 5774: name 'args' is not defined +2025-03-10 15:30:07,144 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,144 - ERROR - Error in episode 5775: name 'args' is not defined +2025-03-10 15:30:07,147 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,147 - ERROR - Error in episode 5776: name 'args' is not defined +2025-03-10 15:30:07,149 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,150 - ERROR - Error in episode 5777: name 'args' is not defined +2025-03-10 15:30:07,153 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,153 - ERROR - Error in episode 5778: name 'args' is not defined +2025-03-10 15:30:07,156 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,156 - ERROR - Error in episode 5779: name 'args' is not defined +2025-03-10 15:30:07,158 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,159 - ERROR - Error in episode 5780: name 'args' is not defined +2025-03-10 15:30:07,162 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,162 - ERROR - Error in episode 5781: name 'args' is not defined +2025-03-10 15:30:07,165 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,165 - ERROR - Error in episode 5782: name 'args' is not defined +2025-03-10 15:30:07,168 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,168 - ERROR - Error in episode 5783: name 'args' is not defined +2025-03-10 15:30:07,171 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,171 - ERROR - Error in episode 5784: name 'args' is not defined +2025-03-10 15:30:07,174 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,174 - ERROR - Error in episode 5785: name 'args' is not defined +2025-03-10 15:30:07,178 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,179 - ERROR - Error in episode 5786: name 'args' is not defined +2025-03-10 15:30:07,181 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,181 - ERROR - Error in episode 5787: name 'args' is not defined +2025-03-10 15:30:07,183 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,184 - ERROR - Error in episode 5788: name 'args' is not defined +2025-03-10 15:30:07,186 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,186 - ERROR - Error in episode 5789: name 'args' is not defined +2025-03-10 15:30:07,190 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,191 - ERROR - Error in episode 5790: name 'args' is not defined +2025-03-10 15:30:07,193 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,194 - ERROR - Error in episode 5791: name 'args' is not defined +2025-03-10 15:30:07,197 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,197 - ERROR - Error in episode 5792: name 'args' is not defined +2025-03-10 15:30:07,200 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,201 - ERROR - Error in episode 5793: name 'args' is not defined +2025-03-10 15:30:07,204 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,205 - ERROR - Error in episode 5794: name 'args' is not defined +2025-03-10 15:30:07,208 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,208 - ERROR - Error in episode 5795: name 'args' is not defined +2025-03-10 15:30:07,212 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,212 - ERROR - Error in episode 5796: name 'args' is not defined +2025-03-10 15:30:07,215 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,215 - ERROR - Error in episode 5797: name 'args' is not defined +2025-03-10 15:30:07,218 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,218 - ERROR - Error in episode 5798: name 'args' is not defined +2025-03-10 15:30:07,221 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,221 - ERROR - Error in episode 5799: name 'args' is not defined +2025-03-10 15:30:07,223 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,224 - ERROR - Error in episode 5800: name 'args' is not defined +2025-03-10 15:30:07,226 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,226 - ERROR - Error in episode 5801: name 'args' is not defined +2025-03-10 15:30:07,229 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,229 - ERROR - Error in episode 5802: name 'args' is not defined +2025-03-10 15:30:07,232 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,233 - ERROR - Error in episode 5803: name 'args' is not defined +2025-03-10 15:30:07,235 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,235 - ERROR - Error in episode 5804: name 'args' is not defined +2025-03-10 15:30:07,237 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,238 - ERROR - Error in episode 5805: name 'args' is not defined +2025-03-10 15:30:07,240 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,240 - ERROR - Error in episode 5806: name 'args' is not defined +2025-03-10 15:30:07,243 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,243 - ERROR - Error in episode 5807: name 'args' is not defined +2025-03-10 15:30:07,246 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,246 - ERROR - Error in episode 5808: name 'args' is not defined +2025-03-10 15:30:07,248 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,249 - ERROR - Error in episode 5809: name 'args' is not defined +2025-03-10 15:30:07,251 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,252 - ERROR - Error in episode 5810: name 'args' is not defined +2025-03-10 15:30:07,255 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,255 - ERROR - Error in episode 5811: name 'args' is not defined +2025-03-10 15:30:07,257 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,258 - ERROR - Error in episode 5812: name 'args' is not defined +2025-03-10 15:30:07,260 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,261 - ERROR - Error in episode 5813: name 'args' is not defined +2025-03-10 15:30:07,263 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,263 - ERROR - Error in episode 5814: name 'args' is not defined +2025-03-10 15:30:07,266 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,266 - ERROR - Error in episode 5815: name 'args' is not defined +2025-03-10 15:30:07,270 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,270 - ERROR - Error in episode 5816: name 'args' is not defined +2025-03-10 15:30:07,273 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,274 - ERROR - Error in episode 5817: name 'args' is not defined +2025-03-10 15:30:07,277 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,278 - ERROR - Error in episode 5818: name 'args' is not defined +2025-03-10 15:30:07,281 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,282 - ERROR - Error in episode 5819: name 'args' is not defined +2025-03-10 15:30:07,284 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,285 - ERROR - Error in episode 5820: name 'args' is not defined +2025-03-10 15:30:07,288 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,288 - ERROR - Error in episode 5821: name 'args' is not defined +2025-03-10 15:30:07,290 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,291 - ERROR - Error in episode 5822: name 'args' is not defined +2025-03-10 15:30:07,293 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,294 - ERROR - Error in episode 5823: name 'args' is not defined +2025-03-10 15:30:07,297 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,297 - ERROR - Error in episode 5824: name 'args' is not defined +2025-03-10 15:30:07,300 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,300 - ERROR - Error in episode 5825: name 'args' is not defined +2025-03-10 15:30:07,302 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,303 - ERROR - Error in episode 5826: name 'args' is not defined +2025-03-10 15:30:07,305 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,305 - ERROR - Error in episode 5827: name 'args' is not defined +2025-03-10 15:30:07,308 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,308 - ERROR - Error in episode 5828: name 'args' is not defined +2025-03-10 15:30:07,312 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,312 - ERROR - Error in episode 5829: name 'args' is not defined +2025-03-10 15:30:07,315 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,316 - ERROR - Error in episode 5830: name 'args' is not defined +2025-03-10 15:30:07,318 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,319 - ERROR - Error in episode 5831: name 'args' is not defined +2025-03-10 15:30:07,322 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,322 - ERROR - Error in episode 5832: name 'args' is not defined +2025-03-10 15:30:07,325 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,325 - ERROR - Error in episode 5833: name 'args' is not defined +2025-03-10 15:30:07,329 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,329 - ERROR - Error in episode 5834: name 'args' is not defined +2025-03-10 15:30:07,331 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,331 - ERROR - Error in episode 5835: name 'args' is not defined +2025-03-10 15:30:07,333 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,334 - ERROR - Error in episode 5836: name 'args' is not defined +2025-03-10 15:30:07,336 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,337 - ERROR - Error in episode 5837: name 'args' is not defined +2025-03-10 15:30:07,339 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,339 - ERROR - Error in episode 5838: name 'args' is not defined +2025-03-10 15:30:07,342 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,342 - ERROR - Error in episode 5839: name 'args' is not defined +2025-03-10 15:30:07,345 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,345 - ERROR - Error in episode 5840: name 'args' is not defined +2025-03-10 15:30:07,348 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,348 - ERROR - Error in episode 5841: name 'args' is not defined +2025-03-10 15:30:07,351 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,351 - ERROR - Error in episode 5842: name 'args' is not defined +2025-03-10 15:30:07,354 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,355 - ERROR - Error in episode 5843: name 'args' is not defined +2025-03-10 15:30:07,357 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,358 - ERROR - Error in episode 5844: name 'args' is not defined +2025-03-10 15:30:07,360 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,360 - ERROR - Error in episode 5845: name 'args' is not defined +2025-03-10 15:30:07,362 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,362 - ERROR - Error in episode 5846: name 'args' is not defined +2025-03-10 15:30:07,366 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,367 - ERROR - Error in episode 5847: name 'args' is not defined +2025-03-10 15:30:07,369 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,369 - ERROR - Error in episode 5848: name 'args' is not defined +2025-03-10 15:30:07,371 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,372 - ERROR - Error in episode 5849: name 'args' is not defined +2025-03-10 15:30:07,374 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,374 - ERROR - Error in episode 5850: name 'args' is not defined +2025-03-10 15:30:07,377 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,377 - ERROR - Error in episode 5851: name 'args' is not defined +2025-03-10 15:30:07,380 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,380 - ERROR - Error in episode 5852: name 'args' is not defined +2025-03-10 15:30:07,383 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,383 - ERROR - Error in episode 5853: name 'args' is not defined +2025-03-10 15:30:07,386 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,386 - ERROR - Error in episode 5854: name 'args' is not defined +2025-03-10 15:30:07,389 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,390 - ERROR - Error in episode 5855: name 'args' is not defined +2025-03-10 15:30:07,392 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,393 - ERROR - Error in episode 5856: name 'args' is not defined +2025-03-10 15:30:07,395 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,396 - ERROR - Error in episode 5857: name 'args' is not defined +2025-03-10 15:30:07,398 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,399 - ERROR - Error in episode 5858: name 'args' is not defined +2025-03-10 15:30:07,402 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,402 - ERROR - Error in episode 5859: name 'args' is not defined +2025-03-10 15:30:07,405 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,405 - ERROR - Error in episode 5860: name 'args' is not defined +2025-03-10 15:30:07,408 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,408 - ERROR - Error in episode 5861: name 'args' is not defined +2025-03-10 15:30:07,410 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,411 - ERROR - Error in episode 5862: name 'args' is not defined +2025-03-10 15:30:07,413 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,414 - ERROR - Error in episode 5863: name 'args' is not defined +2025-03-10 15:30:07,416 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,416 - ERROR - Error in episode 5864: name 'args' is not defined +2025-03-10 15:30:07,419 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,420 - ERROR - Error in episode 5865: name 'args' is not defined +2025-03-10 15:30:07,422 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,422 - ERROR - Error in episode 5866: name 'args' is not defined +2025-03-10 15:30:07,425 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,426 - ERROR - Error in episode 5867: name 'args' is not defined +2025-03-10 15:30:07,428 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,429 - ERROR - Error in episode 5868: name 'args' is not defined +2025-03-10 15:30:07,431 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,431 - ERROR - Error in episode 5869: name 'args' is not defined +2025-03-10 15:30:07,434 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,434 - ERROR - Error in episode 5870: name 'args' is not defined +2025-03-10 15:30:07,437 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,437 - ERROR - Error in episode 5871: name 'args' is not defined +2025-03-10 15:30:07,440 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,440 - ERROR - Error in episode 5872: name 'args' is not defined +2025-03-10 15:30:07,443 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,443 - ERROR - Error in episode 5873: name 'args' is not defined +2025-03-10 15:30:07,445 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,446 - ERROR - Error in episode 5874: name 'args' is not defined +2025-03-10 15:30:07,449 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,449 - ERROR - Error in episode 5875: name 'args' is not defined +2025-03-10 15:30:07,451 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,451 - ERROR - Error in episode 5876: name 'args' is not defined +2025-03-10 15:30:07,454 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,454 - ERROR - Error in episode 5877: name 'args' is not defined +2025-03-10 15:30:07,457 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,457 - ERROR - Error in episode 5878: name 'args' is not defined +2025-03-10 15:30:07,461 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,461 - ERROR - Error in episode 5879: name 'args' is not defined +2025-03-10 15:30:07,464 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,464 - ERROR - Error in episode 5880: name 'args' is not defined +2025-03-10 15:30:07,466 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,467 - ERROR - Error in episode 5881: name 'args' is not defined +2025-03-10 15:30:07,469 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,469 - ERROR - Error in episode 5882: name 'args' is not defined +2025-03-10 15:30:07,472 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,472 - ERROR - Error in episode 5883: name 'args' is not defined +2025-03-10 15:30:07,475 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,476 - ERROR - Error in episode 5884: name 'args' is not defined +2025-03-10 15:30:07,478 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,479 - ERROR - Error in episode 5885: name 'args' is not defined +2025-03-10 15:30:07,481 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,482 - ERROR - Error in episode 5886: name 'args' is not defined +2025-03-10 15:30:07,484 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,485 - ERROR - Error in episode 5887: name 'args' is not defined +2025-03-10 15:30:07,487 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,487 - ERROR - Error in episode 5888: name 'args' is not defined +2025-03-10 15:30:07,490 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,490 - ERROR - Error in episode 5889: name 'args' is not defined +2025-03-10 15:30:07,493 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,494 - ERROR - Error in episode 5890: name 'args' is not defined +2025-03-10 15:30:07,496 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,496 - ERROR - Error in episode 5891: name 'args' is not defined +2025-03-10 15:30:07,499 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,499 - ERROR - Error in episode 5892: name 'args' is not defined +2025-03-10 15:30:07,501 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,502 - ERROR - Error in episode 5893: name 'args' is not defined +2025-03-10 15:30:07,504 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,505 - ERROR - Error in episode 5894: name 'args' is not defined +2025-03-10 15:30:07,507 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,508 - ERROR - Error in episode 5895: name 'args' is not defined +2025-03-10 15:30:07,510 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,510 - ERROR - Error in episode 5896: name 'args' is not defined +2025-03-10 15:30:07,513 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,513 - ERROR - Error in episode 5897: name 'args' is not defined +2025-03-10 15:30:07,516 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,516 - ERROR - Error in episode 5898: name 'args' is not defined +2025-03-10 15:30:07,519 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,519 - ERROR - Error in episode 5899: name 'args' is not defined +2025-03-10 15:30:07,521 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,522 - ERROR - Error in episode 5900: name 'args' is not defined +2025-03-10 15:30:07,525 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,525 - ERROR - Error in episode 5901: name 'args' is not defined +2025-03-10 15:30:07,528 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,528 - ERROR - Error in episode 5902: name 'args' is not defined +2025-03-10 15:30:07,531 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,531 - ERROR - Error in episode 5903: name 'args' is not defined +2025-03-10 15:30:07,534 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,535 - ERROR - Error in episode 5904: name 'args' is not defined +2025-03-10 15:30:07,537 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,537 - ERROR - Error in episode 5905: name 'args' is not defined +2025-03-10 15:30:07,540 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,540 - ERROR - Error in episode 5906: name 'args' is not defined +2025-03-10 15:30:07,543 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,543 - ERROR - Error in episode 5907: name 'args' is not defined +2025-03-10 15:30:07,546 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,546 - ERROR - Error in episode 5908: name 'args' is not defined +2025-03-10 15:30:07,549 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,549 - ERROR - Error in episode 5909: name 'args' is not defined +2025-03-10 15:30:07,551 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,552 - ERROR - Error in episode 5910: name 'args' is not defined +2025-03-10 15:30:07,554 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,554 - ERROR - Error in episode 5911: name 'args' is not defined +2025-03-10 15:30:07,556 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,556 - ERROR - Error in episode 5912: name 'args' is not defined +2025-03-10 15:30:07,558 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,559 - ERROR - Error in episode 5913: name 'args' is not defined +2025-03-10 15:30:07,561 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,562 - ERROR - Error in episode 5914: name 'args' is not defined +2025-03-10 15:30:07,564 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,565 - ERROR - Error in episode 5915: name 'args' is not defined +2025-03-10 15:30:07,567 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,567 - ERROR - Error in episode 5916: name 'args' is not defined +2025-03-10 15:30:07,570 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,570 - ERROR - Error in episode 5917: name 'args' is not defined +2025-03-10 15:30:07,573 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,573 - ERROR - Error in episode 5918: name 'args' is not defined +2025-03-10 15:30:07,575 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,576 - ERROR - Error in episode 5919: name 'args' is not defined +2025-03-10 15:30:07,579 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,579 - ERROR - Error in episode 5920: name 'args' is not defined +2025-03-10 15:30:07,581 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,582 - ERROR - Error in episode 5921: name 'args' is not defined +2025-03-10 15:30:07,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,585 - ERROR - Error in episode 5922: name 'args' is not defined +2025-03-10 15:30:07,587 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,588 - ERROR - Error in episode 5923: name 'args' is not defined +2025-03-10 15:30:07,591 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,591 - ERROR - Error in episode 5924: name 'args' is not defined +2025-03-10 15:30:07,594 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,594 - ERROR - Error in episode 5925: name 'args' is not defined +2025-03-10 15:30:07,597 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,598 - ERROR - Error in episode 5926: name 'args' is not defined +2025-03-10 15:30:07,601 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,601 - ERROR - Error in episode 5927: name 'args' is not defined +2025-03-10 15:30:07,604 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,604 - ERROR - Error in episode 5928: name 'args' is not defined +2025-03-10 15:30:07,606 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,606 - ERROR - Error in episode 5929: name 'args' is not defined +2025-03-10 15:30:07,608 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,609 - ERROR - Error in episode 5930: name 'args' is not defined +2025-03-10 15:30:07,611 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,611 - ERROR - Error in episode 5931: name 'args' is not defined +2025-03-10 15:30:07,614 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,615 - ERROR - Error in episode 5932: name 'args' is not defined +2025-03-10 15:30:07,618 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,618 - ERROR - Error in episode 5933: name 'args' is not defined +2025-03-10 15:30:07,620 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,621 - ERROR - Error in episode 5934: name 'args' is not defined +2025-03-10 15:30:07,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,623 - ERROR - Error in episode 5935: name 'args' is not defined +2025-03-10 15:30:07,626 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,626 - ERROR - Error in episode 5936: name 'args' is not defined +2025-03-10 15:30:07,629 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,629 - ERROR - Error in episode 5937: name 'args' is not defined +2025-03-10 15:30:07,631 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,632 - ERROR - Error in episode 5938: name 'args' is not defined +2025-03-10 15:30:07,634 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,634 - ERROR - Error in episode 5939: name 'args' is not defined +2025-03-10 15:30:07,638 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,638 - ERROR - Error in episode 5940: name 'args' is not defined +2025-03-10 15:30:07,641 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,641 - ERROR - Error in episode 5941: name 'args' is not defined +2025-03-10 15:30:07,644 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,644 - ERROR - Error in episode 5942: name 'args' is not defined +2025-03-10 15:30:07,646 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,647 - ERROR - Error in episode 5943: name 'args' is not defined +2025-03-10 15:30:07,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,651 - ERROR - Error in episode 5944: name 'args' is not defined +2025-03-10 15:30:07,653 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,653 - ERROR - Error in episode 5945: name 'args' is not defined +2025-03-10 15:30:07,656 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,657 - ERROR - Error in episode 5946: name 'args' is not defined +2025-03-10 15:30:07,659 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,659 - ERROR - Error in episode 5947: name 'args' is not defined +2025-03-10 15:30:07,662 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,662 - ERROR - Error in episode 5948: name 'args' is not defined +2025-03-10 15:30:07,665 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,666 - ERROR - Error in episode 5949: name 'args' is not defined +2025-03-10 15:30:07,668 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,669 - ERROR - Error in episode 5950: name 'args' is not defined +2025-03-10 15:30:07,672 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,672 - ERROR - Error in episode 5951: name 'args' is not defined +2025-03-10 15:30:07,675 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,675 - ERROR - Error in episode 5952: name 'args' is not defined +2025-03-10 15:30:07,678 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,678 - ERROR - Error in episode 5953: name 'args' is not defined +2025-03-10 15:30:07,681 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,681 - ERROR - Error in episode 5954: name 'args' is not defined +2025-03-10 15:30:07,684 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,684 - ERROR - Error in episode 5955: name 'args' is not defined +2025-03-10 15:30:07,687 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,687 - ERROR - Error in episode 5956: name 'args' is not defined +2025-03-10 15:30:07,690 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,690 - ERROR - Error in episode 5957: name 'args' is not defined +2025-03-10 15:30:07,693 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,693 - ERROR - Error in episode 5958: name 'args' is not defined +2025-03-10 15:30:07,696 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,696 - ERROR - Error in episode 5959: name 'args' is not defined +2025-03-10 15:30:07,699 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,699 - ERROR - Error in episode 5960: name 'args' is not defined +2025-03-10 15:30:07,702 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,702 - ERROR - Error in episode 5961: name 'args' is not defined +2025-03-10 15:30:07,705 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,705 - ERROR - Error in episode 5962: name 'args' is not defined +2025-03-10 15:30:07,709 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,709 - ERROR - Error in episode 5963: name 'args' is not defined +2025-03-10 15:30:07,712 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,712 - ERROR - Error in episode 5964: name 'args' is not defined +2025-03-10 15:30:07,714 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,715 - ERROR - Error in episode 5965: name 'args' is not defined +2025-03-10 15:30:07,718 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,718 - ERROR - Error in episode 5966: name 'args' is not defined +2025-03-10 15:30:07,721 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,721 - ERROR - Error in episode 5967: name 'args' is not defined +2025-03-10 15:30:07,723 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,724 - ERROR - Error in episode 5968: name 'args' is not defined +2025-03-10 15:30:07,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,727 - ERROR - Error in episode 5969: name 'args' is not defined +2025-03-10 15:30:07,730 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,731 - ERROR - Error in episode 5970: name 'args' is not defined +2025-03-10 15:30:07,733 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,734 - ERROR - Error in episode 5971: name 'args' is not defined +2025-03-10 15:30:07,736 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,736 - ERROR - Error in episode 5972: name 'args' is not defined +2025-03-10 15:30:07,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,739 - ERROR - Error in episode 5973: name 'args' is not defined +2025-03-10 15:30:07,742 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,742 - ERROR - Error in episode 5974: name 'args' is not defined +2025-03-10 15:30:07,745 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,745 - ERROR - Error in episode 5975: name 'args' is not defined +2025-03-10 15:30:07,749 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,750 - ERROR - Error in episode 5976: name 'args' is not defined +2025-03-10 15:30:07,753 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,753 - ERROR - Error in episode 5977: name 'args' is not defined +2025-03-10 15:30:07,755 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,755 - ERROR - Error in episode 5978: name 'args' is not defined +2025-03-10 15:30:07,758 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,758 - ERROR - Error in episode 5979: name 'args' is not defined +2025-03-10 15:30:07,761 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,761 - ERROR - Error in episode 5980: name 'args' is not defined +2025-03-10 15:30:07,763 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,764 - ERROR - Error in episode 5981: name 'args' is not defined +2025-03-10 15:30:07,767 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,767 - ERROR - Error in episode 5982: name 'args' is not defined +2025-03-10 15:30:07,769 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,769 - ERROR - Error in episode 5983: name 'args' is not defined +2025-03-10 15:30:07,772 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,772 - ERROR - Error in episode 5984: name 'args' is not defined +2025-03-10 15:30:07,775 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,775 - ERROR - Error in episode 5985: name 'args' is not defined +2025-03-10 15:30:07,777 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,779 - ERROR - Error in episode 5986: name 'args' is not defined +2025-03-10 15:30:07,781 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,781 - ERROR - Error in episode 5987: name 'args' is not defined +2025-03-10 15:30:07,785 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,785 - ERROR - Error in episode 5988: name 'args' is not defined +2025-03-10 15:30:07,787 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,787 - ERROR - Error in episode 5989: name 'args' is not defined +2025-03-10 15:30:07,791 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,791 - ERROR - Error in episode 5990: name 'args' is not defined +2025-03-10 15:30:07,795 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,795 - ERROR - Error in episode 5991: name 'args' is not defined +2025-03-10 15:30:07,797 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,798 - ERROR - Error in episode 5992: name 'args' is not defined +2025-03-10 15:30:07,801 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,801 - ERROR - Error in episode 5993: name 'args' is not defined +2025-03-10 15:30:07,803 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,803 - ERROR - Error in episode 5994: name 'args' is not defined +2025-03-10 15:30:07,806 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,806 - ERROR - Error in episode 5995: name 'args' is not defined +2025-03-10 15:30:07,809 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,809 - ERROR - Error in episode 5996: name 'args' is not defined +2025-03-10 15:30:07,811 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,811 - ERROR - Error in episode 5997: name 'args' is not defined +2025-03-10 15:30:07,814 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,814 - ERROR - Error in episode 5998: name 'args' is not defined +2025-03-10 15:30:07,817 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,817 - ERROR - Error in episode 5999: name 'args' is not defined +2025-03-10 15:30:07,820 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,820 - ERROR - Error in episode 6000: name 'args' is not defined +2025-03-10 15:30:07,822 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,823 - ERROR - Error in episode 6001: name 'args' is not defined +2025-03-10 15:30:07,826 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,826 - ERROR - Error in episode 6002: name 'args' is not defined +2025-03-10 15:30:07,829 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,829 - ERROR - Error in episode 6003: name 'args' is not defined +2025-03-10 15:30:07,832 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,833 - ERROR - Error in episode 6004: name 'args' is not defined +2025-03-10 15:30:07,835 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,835 - ERROR - Error in episode 6005: name 'args' is not defined +2025-03-10 15:30:07,838 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,838 - ERROR - Error in episode 6006: name 'args' is not defined +2025-03-10 15:30:07,841 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,841 - ERROR - Error in episode 6007: name 'args' is not defined +2025-03-10 15:30:07,843 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,844 - ERROR - Error in episode 6008: name 'args' is not defined +2025-03-10 15:30:07,846 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,846 - ERROR - Error in episode 6009: name 'args' is not defined +2025-03-10 15:30:07,850 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,850 - ERROR - Error in episode 6010: name 'args' is not defined +2025-03-10 15:30:07,852 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,853 - ERROR - Error in episode 6011: name 'args' is not defined +2025-03-10 15:30:07,855 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,855 - ERROR - Error in episode 6012: name 'args' is not defined +2025-03-10 15:30:07,858 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,859 - ERROR - Error in episode 6013: name 'args' is not defined +2025-03-10 15:30:07,861 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,862 - ERROR - Error in episode 6014: name 'args' is not defined +2025-03-10 15:30:07,864 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,865 - ERROR - Error in episode 6015: name 'args' is not defined +2025-03-10 15:30:07,867 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,868 - ERROR - Error in episode 6016: name 'args' is not defined +2025-03-10 15:30:07,870 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,870 - ERROR - Error in episode 6017: name 'args' is not defined +2025-03-10 15:30:07,873 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,874 - ERROR - Error in episode 6018: name 'args' is not defined +2025-03-10 15:30:07,876 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,877 - ERROR - Error in episode 6019: name 'args' is not defined +2025-03-10 15:30:07,879 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,880 - ERROR - Error in episode 6020: name 'args' is not defined +2025-03-10 15:30:07,883 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,883 - ERROR - Error in episode 6021: name 'args' is not defined +2025-03-10 15:30:07,886 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,886 - ERROR - Error in episode 6022: name 'args' is not defined +2025-03-10 15:30:07,888 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,889 - ERROR - Error in episode 6023: name 'args' is not defined +2025-03-10 15:30:07,892 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,892 - ERROR - Error in episode 6024: name 'args' is not defined +2025-03-10 15:30:07,894 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,895 - ERROR - Error in episode 6025: name 'args' is not defined +2025-03-10 15:30:07,897 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,898 - ERROR - Error in episode 6026: name 'args' is not defined +2025-03-10 15:30:07,900 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,901 - ERROR - Error in episode 6027: name 'args' is not defined +2025-03-10 15:30:07,904 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,904 - ERROR - Error in episode 6028: name 'args' is not defined +2025-03-10 15:30:07,906 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,907 - ERROR - Error in episode 6029: name 'args' is not defined +2025-03-10 15:30:07,909 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,910 - ERROR - Error in episode 6030: name 'args' is not defined +2025-03-10 15:30:07,912 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,912 - ERROR - Error in episode 6031: name 'args' is not defined +2025-03-10 15:30:07,915 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,915 - ERROR - Error in episode 6032: name 'args' is not defined +2025-03-10 15:30:07,919 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,919 - ERROR - Error in episode 6033: name 'args' is not defined +2025-03-10 15:30:07,922 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,922 - ERROR - Error in episode 6034: name 'args' is not defined +2025-03-10 15:30:07,925 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,926 - ERROR - Error in episode 6035: name 'args' is not defined +2025-03-10 15:30:07,928 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,928 - ERROR - Error in episode 6036: name 'args' is not defined +2025-03-10 15:30:07,931 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,931 - ERROR - Error in episode 6037: name 'args' is not defined +2025-03-10 15:30:07,934 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,935 - ERROR - Error in episode 6038: name 'args' is not defined +2025-03-10 15:30:07,937 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,937 - ERROR - Error in episode 6039: name 'args' is not defined +2025-03-10 15:30:07,939 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,940 - ERROR - Error in episode 6040: name 'args' is not defined +2025-03-10 15:30:07,942 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,943 - ERROR - Error in episode 6041: name 'args' is not defined +2025-03-10 15:30:07,945 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,946 - ERROR - Error in episode 6042: name 'args' is not defined +2025-03-10 15:30:07,948 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,948 - ERROR - Error in episode 6043: name 'args' is not defined +2025-03-10 15:30:07,951 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,951 - ERROR - Error in episode 6044: name 'args' is not defined +2025-03-10 15:30:07,954 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,954 - ERROR - Error in episode 6045: name 'args' is not defined +2025-03-10 15:30:07,957 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,957 - ERROR - Error in episode 6046: name 'args' is not defined +2025-03-10 15:30:07,960 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,960 - ERROR - Error in episode 6047: name 'args' is not defined +2025-03-10 15:30:07,962 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,963 - ERROR - Error in episode 6048: name 'args' is not defined +2025-03-10 15:30:07,965 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,966 - ERROR - Error in episode 6049: name 'args' is not defined +2025-03-10 15:30:07,969 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,969 - ERROR - Error in episode 6050: name 'args' is not defined +2025-03-10 15:30:07,971 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,972 - ERROR - Error in episode 6051: name 'args' is not defined +2025-03-10 15:30:07,974 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,975 - ERROR - Error in episode 6052: name 'args' is not defined +2025-03-10 15:30:07,977 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,977 - ERROR - Error in episode 6053: name 'args' is not defined +2025-03-10 15:30:07,980 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,980 - ERROR - Error in episode 6054: name 'args' is not defined +2025-03-10 15:30:07,983 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,983 - ERROR - Error in episode 6055: name 'args' is not defined +2025-03-10 15:30:07,986 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,986 - ERROR - Error in episode 6056: name 'args' is not defined +2025-03-10 15:30:07,988 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,989 - ERROR - Error in episode 6057: name 'args' is not defined +2025-03-10 15:30:07,992 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,992 - ERROR - Error in episode 6058: name 'args' is not defined +2025-03-10 15:30:07,994 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,995 - ERROR - Error in episode 6059: name 'args' is not defined +2025-03-10 15:30:07,997 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:07,997 - ERROR - Error in episode 6060: name 'args' is not defined +2025-03-10 15:30:08,000 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,000 - ERROR - Error in episode 6061: name 'args' is not defined +2025-03-10 15:30:08,002 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,003 - ERROR - Error in episode 6062: name 'args' is not defined +2025-03-10 15:30:08,005 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,006 - ERROR - Error in episode 6063: name 'args' is not defined +2025-03-10 15:30:08,008 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,008 - ERROR - Error in episode 6064: name 'args' is not defined +2025-03-10 15:30:08,011 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,011 - ERROR - Error in episode 6065: name 'args' is not defined +2025-03-10 15:30:08,013 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,014 - ERROR - Error in episode 6066: name 'args' is not defined +2025-03-10 15:30:08,016 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,016 - ERROR - Error in episode 6067: name 'args' is not defined +2025-03-10 15:30:08,019 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,020 - ERROR - Error in episode 6068: name 'args' is not defined +2025-03-10 15:30:08,022 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,022 - ERROR - Error in episode 6069: name 'args' is not defined +2025-03-10 15:30:08,025 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,026 - ERROR - Error in episode 6070: name 'args' is not defined +2025-03-10 15:30:08,029 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,030 - ERROR - Error in episode 6071: name 'args' is not defined +2025-03-10 15:30:08,032 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,032 - ERROR - Error in episode 6072: name 'args' is not defined +2025-03-10 15:30:08,034 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,035 - ERROR - Error in episode 6073: name 'args' is not defined +2025-03-10 15:30:08,037 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,037 - ERROR - Error in episode 6074: name 'args' is not defined +2025-03-10 15:30:08,039 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,040 - ERROR - Error in episode 6075: name 'args' is not defined +2025-03-10 15:30:08,044 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,044 - ERROR - Error in episode 6076: name 'args' is not defined +2025-03-10 15:30:08,046 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,047 - ERROR - Error in episode 6077: name 'args' is not defined +2025-03-10 15:30:08,049 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,050 - ERROR - Error in episode 6078: name 'args' is not defined +2025-03-10 15:30:08,052 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,052 - ERROR - Error in episode 6079: name 'args' is not defined +2025-03-10 15:30:08,055 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,055 - ERROR - Error in episode 6080: name 'args' is not defined +2025-03-10 15:30:08,058 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,058 - ERROR - Error in episode 6081: name 'args' is not defined +2025-03-10 15:30:08,061 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,061 - ERROR - Error in episode 6082: name 'args' is not defined +2025-03-10 15:30:08,063 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,064 - ERROR - Error in episode 6083: name 'args' is not defined +2025-03-10 15:30:08,067 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,067 - ERROR - Error in episode 6084: name 'args' is not defined +2025-03-10 15:30:08,069 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,070 - ERROR - Error in episode 6085: name 'args' is not defined +2025-03-10 15:30:08,072 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,072 - ERROR - Error in episode 6086: name 'args' is not defined +2025-03-10 15:30:08,075 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,076 - ERROR - Error in episode 6087: name 'args' is not defined +2025-03-10 15:30:08,078 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,078 - ERROR - Error in episode 6088: name 'args' is not defined +2025-03-10 15:30:08,082 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,082 - ERROR - Error in episode 6089: name 'args' is not defined +2025-03-10 15:30:08,085 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,085 - ERROR - Error in episode 6090: name 'args' is not defined +2025-03-10 15:30:08,088 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,088 - ERROR - Error in episode 6091: name 'args' is not defined +2025-03-10 15:30:08,091 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,092 - ERROR - Error in episode 6092: name 'args' is not defined +2025-03-10 15:30:08,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,095 - ERROR - Error in episode 6093: name 'args' is not defined +2025-03-10 15:30:08,097 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,097 - ERROR - Error in episode 6094: name 'args' is not defined +2025-03-10 15:30:08,100 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,100 - ERROR - Error in episode 6095: name 'args' is not defined +2025-03-10 15:30:08,103 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,103 - ERROR - Error in episode 6096: name 'args' is not defined +2025-03-10 15:30:08,105 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,105 - ERROR - Error in episode 6097: name 'args' is not defined +2025-03-10 15:30:08,108 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,108 - ERROR - Error in episode 6098: name 'args' is not defined +2025-03-10 15:30:08,111 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,111 - ERROR - Error in episode 6099: name 'args' is not defined +2025-03-10 15:30:08,114 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,115 - ERROR - Error in episode 6100: name 'args' is not defined +2025-03-10 15:30:08,118 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,118 - ERROR - Error in episode 6101: name 'args' is not defined +2025-03-10 15:30:08,121 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,121 - ERROR - Error in episode 6102: name 'args' is not defined +2025-03-10 15:30:08,123 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,125 - ERROR - Error in episode 6103: name 'args' is not defined +2025-03-10 15:30:08,127 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,127 - ERROR - Error in episode 6104: name 'args' is not defined +2025-03-10 15:30:08,130 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,130 - ERROR - Error in episode 6105: name 'args' is not defined +2025-03-10 15:30:08,132 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,132 - ERROR - Error in episode 6106: name 'args' is not defined +2025-03-10 15:30:08,134 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,135 - ERROR - Error in episode 6107: name 'args' is not defined +2025-03-10 15:30:08,138 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,139 - ERROR - Error in episode 6108: name 'args' is not defined +2025-03-10 15:30:08,141 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,141 - ERROR - Error in episode 6109: name 'args' is not defined +2025-03-10 15:30:08,144 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,144 - ERROR - Error in episode 6110: name 'args' is not defined +2025-03-10 15:30:08,147 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,147 - ERROR - Error in episode 6111: name 'args' is not defined +2025-03-10 15:30:08,150 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,150 - ERROR - Error in episode 6112: name 'args' is not defined +2025-03-10 15:30:08,153 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,153 - ERROR - Error in episode 6113: name 'args' is not defined +2025-03-10 15:30:08,155 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,156 - ERROR - Error in episode 6114: name 'args' is not defined +2025-03-10 15:30:08,159 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,159 - ERROR - Error in episode 6115: name 'args' is not defined +2025-03-10 15:30:08,161 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,162 - ERROR - Error in episode 6116: name 'args' is not defined +2025-03-10 15:30:08,164 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,164 - ERROR - Error in episode 6117: name 'args' is not defined +2025-03-10 15:30:08,167 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,168 - ERROR - Error in episode 6118: name 'args' is not defined +2025-03-10 15:30:08,170 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,170 - ERROR - Error in episode 6119: name 'args' is not defined +2025-03-10 15:30:08,173 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,173 - ERROR - Error in episode 6120: name 'args' is not defined +2025-03-10 15:30:08,175 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,176 - ERROR - Error in episode 6121: name 'args' is not defined +2025-03-10 15:30:08,178 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,178 - ERROR - Error in episode 6122: name 'args' is not defined +2025-03-10 15:30:08,181 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,181 - ERROR - Error in episode 6123: name 'args' is not defined +2025-03-10 15:30:08,185 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,185 - ERROR - Error in episode 6124: name 'args' is not defined +2025-03-10 15:30:08,189 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,189 - ERROR - Error in episode 6125: name 'args' is not defined +2025-03-10 15:30:08,191 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,192 - ERROR - Error in episode 6126: name 'args' is not defined +2025-03-10 15:30:08,194 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,194 - ERROR - Error in episode 6127: name 'args' is not defined +2025-03-10 15:30:08,197 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,197 - ERROR - Error in episode 6128: name 'args' is not defined +2025-03-10 15:30:08,200 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,200 - ERROR - Error in episode 6129: name 'args' is not defined +2025-03-10 15:30:08,202 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,203 - ERROR - Error in episode 6130: name 'args' is not defined +2025-03-10 15:30:08,205 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,206 - ERROR - Error in episode 6131: name 'args' is not defined +2025-03-10 15:30:08,208 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,208 - ERROR - Error in episode 6132: name 'args' is not defined +2025-03-10 15:30:08,211 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,211 - ERROR - Error in episode 6133: name 'args' is not defined +2025-03-10 15:30:08,214 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,214 - ERROR - Error in episode 6134: name 'args' is not defined +2025-03-10 15:30:08,217 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,217 - ERROR - Error in episode 6135: name 'args' is not defined +2025-03-10 15:30:08,219 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,220 - ERROR - Error in episode 6136: name 'args' is not defined +2025-03-10 15:30:08,222 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,223 - ERROR - Error in episode 6137: name 'args' is not defined +2025-03-10 15:30:08,225 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,226 - ERROR - Error in episode 6138: name 'args' is not defined +2025-03-10 15:30:08,229 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,229 - ERROR - Error in episode 6139: name 'args' is not defined +2025-03-10 15:30:08,232 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,233 - ERROR - Error in episode 6140: name 'args' is not defined +2025-03-10 15:30:08,235 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,235 - ERROR - Error in episode 6141: name 'args' is not defined +2025-03-10 15:30:08,238 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,238 - ERROR - Error in episode 6142: name 'args' is not defined +2025-03-10 15:30:08,241 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,241 - ERROR - Error in episode 6143: name 'args' is not defined +2025-03-10 15:30:08,243 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,244 - ERROR - Error in episode 6144: name 'args' is not defined +2025-03-10 15:30:08,246 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,247 - ERROR - Error in episode 6145: name 'args' is not defined +2025-03-10 15:30:08,249 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,249 - ERROR - Error in episode 6146: name 'args' is not defined +2025-03-10 15:30:08,252 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,252 - ERROR - Error in episode 6147: name 'args' is not defined +2025-03-10 15:30:08,255 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,256 - ERROR - Error in episode 6148: name 'args' is not defined +2025-03-10 15:30:08,258 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,258 - ERROR - Error in episode 6149: name 'args' is not defined +2025-03-10 15:30:08,261 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,261 - ERROR - Error in episode 6150: name 'args' is not defined +2025-03-10 15:30:08,264 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,264 - ERROR - Error in episode 6151: name 'args' is not defined +2025-03-10 15:30:08,266 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,267 - ERROR - Error in episode 6152: name 'args' is not defined +2025-03-10 15:30:08,269 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,269 - ERROR - Error in episode 6153: name 'args' is not defined +2025-03-10 15:30:08,272 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,273 - ERROR - Error in episode 6154: name 'args' is not defined +2025-03-10 15:30:08,275 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,275 - ERROR - Error in episode 6155: name 'args' is not defined +2025-03-10 15:30:08,277 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,278 - ERROR - Error in episode 6156: name 'args' is not defined +2025-03-10 15:30:08,280 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,280 - ERROR - Error in episode 6157: name 'args' is not defined +2025-03-10 15:30:08,283 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,283 - ERROR - Error in episode 6158: name 'args' is not defined +2025-03-10 15:30:08,286 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,286 - ERROR - Error in episode 6159: name 'args' is not defined +2025-03-10 15:30:08,289 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,289 - ERROR - Error in episode 6160: name 'args' is not defined +2025-03-10 15:30:08,291 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,292 - ERROR - Error in episode 6161: name 'args' is not defined +2025-03-10 15:30:08,294 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,294 - ERROR - Error in episode 6162: name 'args' is not defined +2025-03-10 15:30:08,297 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,298 - ERROR - Error in episode 6163: name 'args' is not defined +2025-03-10 15:30:08,300 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,300 - ERROR - Error in episode 6164: name 'args' is not defined +2025-03-10 15:30:08,303 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,303 - ERROR - Error in episode 6165: name 'args' is not defined +2025-03-10 15:30:08,306 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,306 - ERROR - Error in episode 6166: name 'args' is not defined +2025-03-10 15:30:08,308 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,308 - ERROR - Error in episode 6167: name 'args' is not defined +2025-03-10 15:30:08,311 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,311 - ERROR - Error in episode 6168: name 'args' is not defined +2025-03-10 15:30:08,314 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,314 - ERROR - Error in episode 6169: name 'args' is not defined +2025-03-10 15:30:08,316 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,317 - ERROR - Error in episode 6170: name 'args' is not defined +2025-03-10 15:30:08,319 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,319 - ERROR - Error in episode 6171: name 'args' is not defined +2025-03-10 15:30:08,322 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,323 - ERROR - Error in episode 6172: name 'args' is not defined +2025-03-10 15:30:08,325 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,325 - ERROR - Error in episode 6173: name 'args' is not defined +2025-03-10 15:30:08,329 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,329 - ERROR - Error in episode 6174: name 'args' is not defined +2025-03-10 15:30:08,331 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,331 - ERROR - Error in episode 6175: name 'args' is not defined +2025-03-10 15:30:08,334 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,335 - ERROR - Error in episode 6176: name 'args' is not defined +2025-03-10 15:30:08,337 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,339 - ERROR - Error in episode 6177: name 'args' is not defined +2025-03-10 15:30:08,341 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,341 - ERROR - Error in episode 6178: name 'args' is not defined +2025-03-10 15:30:08,343 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,344 - ERROR - Error in episode 6179: name 'args' is not defined +2025-03-10 15:30:08,346 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,347 - ERROR - Error in episode 6180: name 'args' is not defined +2025-03-10 15:30:08,349 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,349 - ERROR - Error in episode 6181: name 'args' is not defined +2025-03-10 15:30:08,352 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,352 - ERROR - Error in episode 6182: name 'args' is not defined +2025-03-10 15:30:08,354 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,355 - ERROR - Error in episode 6183: name 'args' is not defined +2025-03-10 15:30:08,357 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,357 - ERROR - Error in episode 6184: name 'args' is not defined +2025-03-10 15:30:08,360 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,360 - ERROR - Error in episode 6185: name 'args' is not defined +2025-03-10 15:30:08,363 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,363 - ERROR - Error in episode 6186: name 'args' is not defined +2025-03-10 15:30:08,365 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,366 - ERROR - Error in episode 6187: name 'args' is not defined +2025-03-10 15:30:08,368 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,369 - ERROR - Error in episode 6188: name 'args' is not defined +2025-03-10 15:30:08,371 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,371 - ERROR - Error in episode 6189: name 'args' is not defined +2025-03-10 15:30:08,374 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,374 - ERROR - Error in episode 6190: name 'args' is not defined +2025-03-10 15:30:08,377 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,378 - ERROR - Error in episode 6191: name 'args' is not defined +2025-03-10 15:30:08,380 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,380 - ERROR - Error in episode 6192: name 'args' is not defined +2025-03-10 15:30:08,383 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,383 - ERROR - Error in episode 6193: name 'args' is not defined +2025-03-10 15:30:08,386 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,386 - ERROR - Error in episode 6194: name 'args' is not defined +2025-03-10 15:30:08,389 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,389 - ERROR - Error in episode 6195: name 'args' is not defined +2025-03-10 15:30:08,392 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,392 - ERROR - Error in episode 6196: name 'args' is not defined +2025-03-10 15:30:08,395 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,395 - ERROR - Error in episode 6197: name 'args' is not defined +2025-03-10 15:30:08,398 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,398 - ERROR - Error in episode 6198: name 'args' is not defined +2025-03-10 15:30:08,400 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,401 - ERROR - Error in episode 6199: name 'args' is not defined +2025-03-10 15:30:08,404 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,404 - ERROR - Error in episode 6200: name 'args' is not defined +2025-03-10 15:30:08,406 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,407 - ERROR - Error in episode 6201: name 'args' is not defined +2025-03-10 15:30:08,409 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,410 - ERROR - Error in episode 6202: name 'args' is not defined +2025-03-10 15:30:08,413 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,413 - ERROR - Error in episode 6203: name 'args' is not defined +2025-03-10 15:30:08,415 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,415 - ERROR - Error in episode 6204: name 'args' is not defined +2025-03-10 15:30:08,418 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,418 - ERROR - Error in episode 6205: name 'args' is not defined +2025-03-10 15:30:08,422 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,422 - ERROR - Error in episode 6206: name 'args' is not defined +2025-03-10 15:30:08,424 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,424 - ERROR - Error in episode 6207: name 'args' is not defined +2025-03-10 15:30:08,427 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,427 - ERROR - Error in episode 6208: name 'args' is not defined +2025-03-10 15:30:08,430 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,430 - ERROR - Error in episode 6209: name 'args' is not defined +2025-03-10 15:30:08,432 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,433 - ERROR - Error in episode 6210: name 'args' is not defined +2025-03-10 15:30:08,435 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,435 - ERROR - Error in episode 6211: name 'args' is not defined +2025-03-10 15:30:08,438 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,438 - ERROR - Error in episode 6212: name 'args' is not defined +2025-03-10 15:30:08,441 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,441 - ERROR - Error in episode 6213: name 'args' is not defined +2025-03-10 15:30:08,444 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,444 - ERROR - Error in episode 6214: name 'args' is not defined +2025-03-10 15:30:08,447 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,447 - ERROR - Error in episode 6215: name 'args' is not defined +2025-03-10 15:30:08,451 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,451 - ERROR - Error in episode 6216: name 'args' is not defined +2025-03-10 15:30:08,454 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,454 - ERROR - Error in episode 6217: name 'args' is not defined +2025-03-10 15:30:08,456 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,456 - ERROR - Error in episode 6218: name 'args' is not defined +2025-03-10 15:30:08,459 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,459 - ERROR - Error in episode 6219: name 'args' is not defined +2025-03-10 15:30:08,462 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,463 - ERROR - Error in episode 6220: name 'args' is not defined +2025-03-10 15:30:08,465 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,465 - ERROR - Error in episode 6221: name 'args' is not defined +2025-03-10 15:30:08,467 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,468 - ERROR - Error in episode 6222: name 'args' is not defined +2025-03-10 15:30:08,471 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,471 - ERROR - Error in episode 6223: name 'args' is not defined +2025-03-10 15:30:08,473 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,474 - ERROR - Error in episode 6224: name 'args' is not defined +2025-03-10 15:30:08,476 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,477 - ERROR - Error in episode 6225: name 'args' is not defined +2025-03-10 15:30:08,479 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,480 - ERROR - Error in episode 6226: name 'args' is not defined +2025-03-10 15:30:08,482 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,483 - ERROR - Error in episode 6227: name 'args' is not defined +2025-03-10 15:30:08,485 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,485 - ERROR - Error in episode 6228: name 'args' is not defined +2025-03-10 15:30:08,489 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,489 - ERROR - Error in episode 6229: name 'args' is not defined +2025-03-10 15:30:08,492 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,492 - ERROR - Error in episode 6230: name 'args' is not defined +2025-03-10 15:30:08,495 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,495 - ERROR - Error in episode 6231: name 'args' is not defined +2025-03-10 15:30:08,497 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,498 - ERROR - Error in episode 6232: name 'args' is not defined +2025-03-10 15:30:08,500 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,500 - ERROR - Error in episode 6233: name 'args' is not defined +2025-03-10 15:30:08,503 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,504 - ERROR - Error in episode 6234: name 'args' is not defined +2025-03-10 15:30:08,506 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,506 - ERROR - Error in episode 6235: name 'args' is not defined +2025-03-10 15:30:08,509 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,509 - ERROR - Error in episode 6236: name 'args' is not defined +2025-03-10 15:30:08,512 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,512 - ERROR - Error in episode 6237: name 'args' is not defined +2025-03-10 15:30:08,514 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,515 - ERROR - Error in episode 6238: name 'args' is not defined +2025-03-10 15:30:08,517 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,518 - ERROR - Error in episode 6239: name 'args' is not defined +2025-03-10 15:30:08,520 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,521 - ERROR - Error in episode 6240: name 'args' is not defined +2025-03-10 15:30:08,523 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,523 - ERROR - Error in episode 6241: name 'args' is not defined +2025-03-10 15:30:08,527 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,527 - ERROR - Error in episode 6242: name 'args' is not defined +2025-03-10 15:30:08,530 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,530 - ERROR - Error in episode 6243: name 'args' is not defined +2025-03-10 15:30:08,532 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,532 - ERROR - Error in episode 6244: name 'args' is not defined +2025-03-10 15:30:08,535 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,536 - ERROR - Error in episode 6245: name 'args' is not defined +2025-03-10 15:30:08,539 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,539 - ERROR - Error in episode 6246: name 'args' is not defined +2025-03-10 15:30:08,542 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,542 - ERROR - Error in episode 6247: name 'args' is not defined +2025-03-10 15:30:08,545 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,545 - ERROR - Error in episode 6248: name 'args' is not defined +2025-03-10 15:30:08,548 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,548 - ERROR - Error in episode 6249: name 'args' is not defined +2025-03-10 15:30:08,550 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,551 - ERROR - Error in episode 6250: name 'args' is not defined +2025-03-10 15:30:08,553 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,553 - ERROR - Error in episode 6251: name 'args' is not defined +2025-03-10 15:30:08,556 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,556 - ERROR - Error in episode 6252: name 'args' is not defined +2025-03-10 15:30:08,559 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,559 - ERROR - Error in episode 6253: name 'args' is not defined +2025-03-10 15:30:08,562 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,562 - ERROR - Error in episode 6254: name 'args' is not defined +2025-03-10 15:30:08,564 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,565 - ERROR - Error in episode 6255: name 'args' is not defined +2025-03-10 15:30:08,567 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,567 - ERROR - Error in episode 6256: name 'args' is not defined +2025-03-10 15:30:08,570 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,570 - ERROR - Error in episode 6257: name 'args' is not defined +2025-03-10 15:30:08,574 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,574 - ERROR - Error in episode 6258: name 'args' is not defined +2025-03-10 15:30:08,577 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,577 - ERROR - Error in episode 6259: name 'args' is not defined +2025-03-10 15:30:08,581 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,581 - ERROR - Error in episode 6260: name 'args' is not defined +2025-03-10 15:30:08,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,584 - ERROR - Error in episode 6261: name 'args' is not defined +2025-03-10 15:30:08,586 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,587 - ERROR - Error in episode 6262: name 'args' is not defined +2025-03-10 15:30:08,590 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,591 - ERROR - Error in episode 6263: name 'args' is not defined +2025-03-10 15:30:08,593 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,594 - ERROR - Error in episode 6264: name 'args' is not defined +2025-03-10 15:30:08,596 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,597 - ERROR - Error in episode 6265: name 'args' is not defined +2025-03-10 15:30:08,599 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,599 - ERROR - Error in episode 6266: name 'args' is not defined +2025-03-10 15:30:08,602 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,602 - ERROR - Error in episode 6267: name 'args' is not defined +2025-03-10 15:30:08,605 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,605 - ERROR - Error in episode 6268: name 'args' is not defined +2025-03-10 15:30:08,607 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,608 - ERROR - Error in episode 6269: name 'args' is not defined +2025-03-10 15:30:08,610 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,610 - ERROR - Error in episode 6270: name 'args' is not defined +2025-03-10 15:30:08,613 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,613 - ERROR - Error in episode 6271: name 'args' is not defined +2025-03-10 15:30:08,615 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,616 - ERROR - Error in episode 6272: name 'args' is not defined +2025-03-10 15:30:08,618 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,618 - ERROR - Error in episode 6273: name 'args' is not defined +2025-03-10 15:30:08,621 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,621 - ERROR - Error in episode 6274: name 'args' is not defined +2025-03-10 15:30:08,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,624 - ERROR - Error in episode 6275: name 'args' is not defined +2025-03-10 15:30:08,626 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,627 - ERROR - Error in episode 6276: name 'args' is not defined +2025-03-10 15:30:08,629 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,630 - ERROR - Error in episode 6277: name 'args' is not defined +2025-03-10 15:30:08,633 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,633 - ERROR - Error in episode 6278: name 'args' is not defined +2025-03-10 15:30:08,636 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,636 - ERROR - Error in episode 6279: name 'args' is not defined +2025-03-10 15:30:08,639 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,639 - ERROR - Error in episode 6280: name 'args' is not defined +2025-03-10 15:30:08,642 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,642 - ERROR - Error in episode 6281: name 'args' is not defined +2025-03-10 15:30:08,645 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,645 - ERROR - Error in episode 6282: name 'args' is not defined +2025-03-10 15:30:08,648 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,648 - ERROR - Error in episode 6283: name 'args' is not defined +2025-03-10 15:30:08,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,652 - ERROR - Error in episode 6284: name 'args' is not defined +2025-03-10 15:30:08,655 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,655 - ERROR - Error in episode 6285: name 'args' is not defined +2025-03-10 15:30:08,657 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,658 - ERROR - Error in episode 6286: name 'args' is not defined +2025-03-10 15:30:08,661 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,661 - ERROR - Error in episode 6287: name 'args' is not defined +2025-03-10 15:30:08,664 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,665 - ERROR - Error in episode 6288: name 'args' is not defined +2025-03-10 15:30:08,667 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,667 - ERROR - Error in episode 6289: name 'args' is not defined +2025-03-10 15:30:08,671 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,671 - ERROR - Error in episode 6290: name 'args' is not defined +2025-03-10 15:30:08,673 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,674 - ERROR - Error in episode 6291: name 'args' is not defined +2025-03-10 15:30:08,676 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,676 - ERROR - Error in episode 6292: name 'args' is not defined +2025-03-10 15:30:08,679 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,680 - ERROR - Error in episode 6293: name 'args' is not defined +2025-03-10 15:30:08,682 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,682 - ERROR - Error in episode 6294: name 'args' is not defined +2025-03-10 15:30:08,685 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,685 - ERROR - Error in episode 6295: name 'args' is not defined +2025-03-10 15:30:08,688 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,688 - ERROR - Error in episode 6296: name 'args' is not defined +2025-03-10 15:30:08,690 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,691 - ERROR - Error in episode 6297: name 'args' is not defined +2025-03-10 15:30:08,693 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,694 - ERROR - Error in episode 6298: name 'args' is not defined +2025-03-10 15:30:08,697 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,698 - ERROR - Error in episode 6299: name 'args' is not defined +2025-03-10 15:30:08,700 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,700 - ERROR - Error in episode 6300: name 'args' is not defined +2025-03-10 15:30:08,703 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,704 - ERROR - Error in episode 6301: name 'args' is not defined +2025-03-10 15:30:08,706 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,707 - ERROR - Error in episode 6302: name 'args' is not defined +2025-03-10 15:30:08,710 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,710 - ERROR - Error in episode 6303: name 'args' is not defined +2025-03-10 15:30:08,713 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,713 - ERROR - Error in episode 6304: name 'args' is not defined +2025-03-10 15:30:08,715 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,716 - ERROR - Error in episode 6305: name 'args' is not defined +2025-03-10 15:30:08,718 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,719 - ERROR - Error in episode 6306: name 'args' is not defined +2025-03-10 15:30:08,722 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,722 - ERROR - Error in episode 6307: name 'args' is not defined +2025-03-10 15:30:08,724 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,725 - ERROR - Error in episode 6308: name 'args' is not defined +2025-03-10 15:30:08,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,728 - ERROR - Error in episode 6309: name 'args' is not defined +2025-03-10 15:30:08,730 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,730 - ERROR - Error in episode 6310: name 'args' is not defined +2025-03-10 15:30:08,733 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,734 - ERROR - Error in episode 6311: name 'args' is not defined +2025-03-10 15:30:08,736 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,736 - ERROR - Error in episode 6312: name 'args' is not defined +2025-03-10 15:30:08,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,740 - ERROR - Error in episode 6313: name 'args' is not defined +2025-03-10 15:30:08,742 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,742 - ERROR - Error in episode 6314: name 'args' is not defined +2025-03-10 15:30:08,746 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,746 - ERROR - Error in episode 6315: name 'args' is not defined +2025-03-10 15:30:08,748 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,749 - ERROR - Error in episode 6316: name 'args' is not defined +2025-03-10 15:30:08,751 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,751 - ERROR - Error in episode 6317: name 'args' is not defined +2025-03-10 15:30:08,754 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,754 - ERROR - Error in episode 6318: name 'args' is not defined +2025-03-10 15:30:08,757 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,757 - ERROR - Error in episode 6319: name 'args' is not defined +2025-03-10 15:30:08,759 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,760 - ERROR - Error in episode 6320: name 'args' is not defined +2025-03-10 15:30:08,763 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,763 - ERROR - Error in episode 6321: name 'args' is not defined +2025-03-10 15:30:08,765 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,766 - ERROR - Error in episode 6322: name 'args' is not defined +2025-03-10 15:30:08,768 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,768 - ERROR - Error in episode 6323: name 'args' is not defined +2025-03-10 15:30:08,771 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,771 - ERROR - Error in episode 6324: name 'args' is not defined +2025-03-10 15:30:08,774 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,774 - ERROR - Error in episode 6325: name 'args' is not defined +2025-03-10 15:30:08,777 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,777 - ERROR - Error in episode 6326: name 'args' is not defined +2025-03-10 15:30:08,780 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,780 - ERROR - Error in episode 6327: name 'args' is not defined +2025-03-10 15:30:08,783 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,783 - ERROR - Error in episode 6328: name 'args' is not defined +2025-03-10 15:30:08,786 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,786 - ERROR - Error in episode 6329: name 'args' is not defined +2025-03-10 15:30:08,789 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,789 - ERROR - Error in episode 6330: name 'args' is not defined +2025-03-10 15:30:08,792 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,792 - ERROR - Error in episode 6331: name 'args' is not defined +2025-03-10 15:30:08,796 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,796 - ERROR - Error in episode 6332: name 'args' is not defined +2025-03-10 15:30:08,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,799 - ERROR - Error in episode 6333: name 'args' is not defined +2025-03-10 15:30:08,801 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,801 - ERROR - Error in episode 6334: name 'args' is not defined +2025-03-10 15:30:08,804 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,805 - ERROR - Error in episode 6335: name 'args' is not defined +2025-03-10 15:30:08,807 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,807 - ERROR - Error in episode 6336: name 'args' is not defined +2025-03-10 15:30:08,810 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,810 - ERROR - Error in episode 6337: name 'args' is not defined +2025-03-10 15:30:08,814 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,814 - ERROR - Error in episode 6338: name 'args' is not defined +2025-03-10 15:30:08,816 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,817 - ERROR - Error in episode 6339: name 'args' is not defined +2025-03-10 15:30:08,819 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,820 - ERROR - Error in episode 6340: name 'args' is not defined +2025-03-10 15:30:08,822 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,823 - ERROR - Error in episode 6341: name 'args' is not defined +2025-03-10 15:30:08,825 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,826 - ERROR - Error in episode 6342: name 'args' is not defined +2025-03-10 15:30:08,829 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,829 - ERROR - Error in episode 6343: name 'args' is not defined +2025-03-10 15:30:08,831 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,832 - ERROR - Error in episode 6344: name 'args' is not defined +2025-03-10 15:30:08,834 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,835 - ERROR - Error in episode 6345: name 'args' is not defined +2025-03-10 15:30:08,837 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,838 - ERROR - Error in episode 6346: name 'args' is not defined +2025-03-10 15:30:08,840 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,840 - ERROR - Error in episode 6347: name 'args' is not defined +2025-03-10 15:30:08,843 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,843 - ERROR - Error in episode 6348: name 'args' is not defined +2025-03-10 15:30:08,846 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,846 - ERROR - Error in episode 6349: name 'args' is not defined +2025-03-10 15:30:08,848 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,849 - ERROR - Error in episode 6350: name 'args' is not defined +2025-03-10 15:30:08,851 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,851 - ERROR - Error in episode 6351: name 'args' is not defined +2025-03-10 15:30:08,854 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,854 - ERROR - Error in episode 6352: name 'args' is not defined +2025-03-10 15:30:08,857 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,857 - ERROR - Error in episode 6353: name 'args' is not defined +2025-03-10 15:30:08,859 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,860 - ERROR - Error in episode 6354: name 'args' is not defined +2025-03-10 15:30:08,863 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,863 - ERROR - Error in episode 6355: name 'args' is not defined +2025-03-10 15:30:08,865 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,866 - ERROR - Error in episode 6356: name 'args' is not defined +2025-03-10 15:30:08,868 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,868 - ERROR - Error in episode 6357: name 'args' is not defined +2025-03-10 15:30:08,871 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,871 - ERROR - Error in episode 6358: name 'args' is not defined +2025-03-10 15:30:08,874 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,874 - ERROR - Error in episode 6359: name 'args' is not defined +2025-03-10 15:30:08,877 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,877 - ERROR - Error in episode 6360: name 'args' is not defined +2025-03-10 15:30:08,880 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,880 - ERROR - Error in episode 6361: name 'args' is not defined +2025-03-10 15:30:08,882 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,884 - ERROR - Error in episode 6362: name 'args' is not defined +2025-03-10 15:30:08,886 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,887 - ERROR - Error in episode 6363: name 'args' is not defined +2025-03-10 15:30:08,889 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,889 - ERROR - Error in episode 6364: name 'args' is not defined +2025-03-10 15:30:08,892 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,892 - ERROR - Error in episode 6365: name 'args' is not defined +2025-03-10 15:30:08,895 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,895 - ERROR - Error in episode 6366: name 'args' is not defined +2025-03-10 15:30:08,898 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,898 - ERROR - Error in episode 6367: name 'args' is not defined +2025-03-10 15:30:08,902 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,902 - ERROR - Error in episode 6368: name 'args' is not defined +2025-03-10 15:30:08,905 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,906 - ERROR - Error in episode 6369: name 'args' is not defined +2025-03-10 15:30:08,909 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,909 - ERROR - Error in episode 6370: name 'args' is not defined +2025-03-10 15:30:08,911 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,912 - ERROR - Error in episode 6371: name 'args' is not defined +2025-03-10 15:30:08,914 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,914 - ERROR - Error in episode 6372: name 'args' is not defined +2025-03-10 15:30:08,916 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,917 - ERROR - Error in episode 6373: name 'args' is not defined +2025-03-10 15:30:08,919 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,919 - ERROR - Error in episode 6374: name 'args' is not defined +2025-03-10 15:30:08,922 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,922 - ERROR - Error in episode 6375: name 'args' is not defined +2025-03-10 15:30:08,925 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,925 - ERROR - Error in episode 6376: name 'args' is not defined +2025-03-10 15:30:08,927 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,928 - ERROR - Error in episode 6377: name 'args' is not defined +2025-03-10 15:30:08,930 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,930 - ERROR - Error in episode 6378: name 'args' is not defined +2025-03-10 15:30:08,934 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,934 - ERROR - Error in episode 6379: name 'args' is not defined +2025-03-10 15:30:08,936 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,936 - ERROR - Error in episode 6380: name 'args' is not defined +2025-03-10 15:30:08,939 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,939 - ERROR - Error in episode 6381: name 'args' is not defined +2025-03-10 15:30:08,942 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,942 - ERROR - Error in episode 6382: name 'args' is not defined +2025-03-10 15:30:08,944 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,945 - ERROR - Error in episode 6383: name 'args' is not defined +2025-03-10 15:30:08,948 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,948 - ERROR - Error in episode 6384: name 'args' is not defined +2025-03-10 15:30:08,951 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,952 - ERROR - Error in episode 6385: name 'args' is not defined +2025-03-10 15:30:08,954 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,954 - ERROR - Error in episode 6386: name 'args' is not defined +2025-03-10 15:30:08,957 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,957 - ERROR - Error in episode 6387: name 'args' is not defined +2025-03-10 15:30:08,960 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,960 - ERROR - Error in episode 6388: name 'args' is not defined +2025-03-10 15:30:08,963 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,963 - ERROR - Error in episode 6389: name 'args' is not defined +2025-03-10 15:30:08,966 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,967 - ERROR - Error in episode 6390: name 'args' is not defined +2025-03-10 15:30:08,969 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,970 - ERROR - Error in episode 6391: name 'args' is not defined +2025-03-10 15:30:08,972 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,972 - ERROR - Error in episode 6392: name 'args' is not defined +2025-03-10 15:30:08,974 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,975 - ERROR - Error in episode 6393: name 'args' is not defined +2025-03-10 15:30:08,979 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,979 - ERROR - Error in episode 6394: name 'args' is not defined +2025-03-10 15:30:08,982 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,982 - ERROR - Error in episode 6395: name 'args' is not defined +2025-03-10 15:30:08,985 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,986 - ERROR - Error in episode 6396: name 'args' is not defined +2025-03-10 15:30:08,988 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,988 - ERROR - Error in episode 6397: name 'args' is not defined +2025-03-10 15:30:08,991 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,991 - ERROR - Error in episode 6398: name 'args' is not defined +2025-03-10 15:30:08,994 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,994 - ERROR - Error in episode 6399: name 'args' is not defined +2025-03-10 15:30:08,996 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:08,997 - ERROR - Error in episode 6400: name 'args' is not defined +2025-03-10 15:30:08,999 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,000 - ERROR - Error in episode 6401: name 'args' is not defined +2025-03-10 15:30:09,002 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,003 - ERROR - Error in episode 6402: name 'args' is not defined +2025-03-10 15:30:09,005 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,005 - ERROR - Error in episode 6403: name 'args' is not defined +2025-03-10 15:30:09,009 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,010 - ERROR - Error in episode 6404: name 'args' is not defined +2025-03-10 15:30:09,012 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,012 - ERROR - Error in episode 6405: name 'args' is not defined +2025-03-10 15:30:09,015 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,015 - ERROR - Error in episode 6406: name 'args' is not defined +2025-03-10 15:30:09,018 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,018 - ERROR - Error in episode 6407: name 'args' is not defined +2025-03-10 15:30:09,021 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,021 - ERROR - Error in episode 6408: name 'args' is not defined +2025-03-10 15:30:09,024 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,025 - ERROR - Error in episode 6409: name 'args' is not defined +2025-03-10 15:30:09,028 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,028 - ERROR - Error in episode 6410: name 'args' is not defined +2025-03-10 15:30:09,031 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,031 - ERROR - Error in episode 6411: name 'args' is not defined +2025-03-10 15:30:09,034 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,034 - ERROR - Error in episode 6412: name 'args' is not defined +2025-03-10 15:30:09,037 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,037 - ERROR - Error in episode 6413: name 'args' is not defined +2025-03-10 15:30:09,040 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,040 - ERROR - Error in episode 6414: name 'args' is not defined +2025-03-10 15:30:09,043 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,043 - ERROR - Error in episode 6415: name 'args' is not defined +2025-03-10 15:30:09,046 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,046 - ERROR - Error in episode 6416: name 'args' is not defined +2025-03-10 15:30:09,049 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,049 - ERROR - Error in episode 6417: name 'args' is not defined +2025-03-10 15:30:09,052 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,052 - ERROR - Error in episode 6418: name 'args' is not defined +2025-03-10 15:30:09,055 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,055 - ERROR - Error in episode 6419: name 'args' is not defined +2025-03-10 15:30:09,058 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,058 - ERROR - Error in episode 6420: name 'args' is not defined +2025-03-10 15:30:09,061 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,061 - ERROR - Error in episode 6421: name 'args' is not defined +2025-03-10 15:30:09,063 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,064 - ERROR - Error in episode 6422: name 'args' is not defined +2025-03-10 15:30:09,067 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,067 - ERROR - Error in episode 6423: name 'args' is not defined +2025-03-10 15:30:09,070 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,070 - ERROR - Error in episode 6424: name 'args' is not defined +2025-03-10 15:30:09,072 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,073 - ERROR - Error in episode 6425: name 'args' is not defined +2025-03-10 15:30:09,075 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,076 - ERROR - Error in episode 6426: name 'args' is not defined +2025-03-10 15:30:09,078 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,078 - ERROR - Error in episode 6427: name 'args' is not defined +2025-03-10 15:30:09,081 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,081 - ERROR - Error in episode 6428: name 'args' is not defined +2025-03-10 15:30:09,085 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,085 - ERROR - Error in episode 6429: name 'args' is not defined +2025-03-10 15:30:09,088 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,089 - ERROR - Error in episode 6430: name 'args' is not defined +2025-03-10 15:30:09,092 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,092 - ERROR - Error in episode 6431: name 'args' is not defined +2025-03-10 15:30:09,095 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,095 - ERROR - Error in episode 6432: name 'args' is not defined +2025-03-10 15:30:09,097 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,098 - ERROR - Error in episode 6433: name 'args' is not defined +2025-03-10 15:30:09,101 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,101 - ERROR - Error in episode 6434: name 'args' is not defined +2025-03-10 15:30:09,103 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,104 - ERROR - Error in episode 6435: name 'args' is not defined +2025-03-10 15:30:09,106 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,107 - ERROR - Error in episode 6436: name 'args' is not defined +2025-03-10 15:30:09,110 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,111 - ERROR - Error in episode 6437: name 'args' is not defined +2025-03-10 15:30:09,113 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,114 - ERROR - Error in episode 6438: name 'args' is not defined +2025-03-10 15:30:09,116 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,116 - ERROR - Error in episode 6439: name 'args' is not defined +2025-03-10 15:30:09,119 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,119 - ERROR - Error in episode 6440: name 'args' is not defined +2025-03-10 15:30:09,122 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,122 - ERROR - Error in episode 6441: name 'args' is not defined +2025-03-10 15:30:09,125 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,125 - ERROR - Error in episode 6442: name 'args' is not defined +2025-03-10 15:30:09,128 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,128 - ERROR - Error in episode 6443: name 'args' is not defined +2025-03-10 15:30:09,131 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,131 - ERROR - Error in episode 6444: name 'args' is not defined +2025-03-10 15:30:09,134 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,134 - ERROR - Error in episode 6445: name 'args' is not defined +2025-03-10 15:30:09,137 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,137 - ERROR - Error in episode 6446: name 'args' is not defined +2025-03-10 15:30:09,139 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,140 - ERROR - Error in episode 6447: name 'args' is not defined +2025-03-10 15:30:09,143 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,143 - ERROR - Error in episode 6448: name 'args' is not defined +2025-03-10 15:30:09,145 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,146 - ERROR - Error in episode 6449: name 'args' is not defined +2025-03-10 15:30:09,148 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,149 - ERROR - Error in episode 6450: name 'args' is not defined +2025-03-10 15:30:09,151 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,152 - ERROR - Error in episode 6451: name 'args' is not defined +2025-03-10 15:30:09,154 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,154 - ERROR - Error in episode 6452: name 'args' is not defined +2025-03-10 15:30:09,156 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,157 - ERROR - Error in episode 6453: name 'args' is not defined +2025-03-10 15:30:09,159 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,160 - ERROR - Error in episode 6454: name 'args' is not defined +2025-03-10 15:30:09,162 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,162 - ERROR - Error in episode 6455: name 'args' is not defined +2025-03-10 15:30:09,165 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,165 - ERROR - Error in episode 6456: name 'args' is not defined +2025-03-10 15:30:09,168 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,168 - ERROR - Error in episode 6457: name 'args' is not defined +2025-03-10 15:30:09,171 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,171 - ERROR - Error in episode 6458: name 'args' is not defined +2025-03-10 15:30:09,174 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,174 - ERROR - Error in episode 6459: name 'args' is not defined +2025-03-10 15:30:09,177 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,177 - ERROR - Error in episode 6460: name 'args' is not defined +2025-03-10 15:30:09,180 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,180 - ERROR - Error in episode 6461: name 'args' is not defined +2025-03-10 15:30:09,183 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,183 - ERROR - Error in episode 6462: name 'args' is not defined +2025-03-10 15:30:09,186 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,186 - ERROR - Error in episode 6463: name 'args' is not defined +2025-03-10 15:30:09,190 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,190 - ERROR - Error in episode 6464: name 'args' is not defined +2025-03-10 15:30:09,193 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,193 - ERROR - Error in episode 6465: name 'args' is not defined +2025-03-10 15:30:09,196 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,196 - ERROR - Error in episode 6466: name 'args' is not defined +2025-03-10 15:30:09,199 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,199 - ERROR - Error in episode 6467: name 'args' is not defined +2025-03-10 15:30:09,202 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,203 - ERROR - Error in episode 6468: name 'args' is not defined +2025-03-10 15:30:09,205 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,205 - ERROR - Error in episode 6469: name 'args' is not defined +2025-03-10 15:30:09,208 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,209 - ERROR - Error in episode 6470: name 'args' is not defined +2025-03-10 15:30:09,211 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,211 - ERROR - Error in episode 6471: name 'args' is not defined +2025-03-10 15:30:09,214 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,214 - ERROR - Error in episode 6472: name 'args' is not defined +2025-03-10 15:30:09,217 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,217 - ERROR - Error in episode 6473: name 'args' is not defined +2025-03-10 15:30:09,219 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,220 - ERROR - Error in episode 6474: name 'args' is not defined +2025-03-10 15:30:09,222 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,222 - ERROR - Error in episode 6475: name 'args' is not defined +2025-03-10 15:30:09,225 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,225 - ERROR - Error in episode 6476: name 'args' is not defined +2025-03-10 15:30:09,227 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,228 - ERROR - Error in episode 6477: name 'args' is not defined +2025-03-10 15:30:09,230 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,231 - ERROR - Error in episode 6478: name 'args' is not defined +2025-03-10 15:30:09,234 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,234 - ERROR - Error in episode 6479: name 'args' is not defined +2025-03-10 15:30:09,237 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,237 - ERROR - Error in episode 6480: name 'args' is not defined +2025-03-10 15:30:09,240 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,240 - ERROR - Error in episode 6481: name 'args' is not defined +2025-03-10 15:30:09,243 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,243 - ERROR - Error in episode 6482: name 'args' is not defined +2025-03-10 15:30:09,245 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,245 - ERROR - Error in episode 6483: name 'args' is not defined +2025-03-10 15:30:09,248 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,248 - ERROR - Error in episode 6484: name 'args' is not defined +2025-03-10 15:30:09,251 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,251 - ERROR - Error in episode 6485: name 'args' is not defined +2025-03-10 15:30:09,254 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,254 - ERROR - Error in episode 6486: name 'args' is not defined +2025-03-10 15:30:09,257 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,257 - ERROR - Error in episode 6487: name 'args' is not defined +2025-03-10 15:30:09,260 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,260 - ERROR - Error in episode 6488: name 'args' is not defined +2025-03-10 15:30:09,262 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,263 - ERROR - Error in episode 6489: name 'args' is not defined +2025-03-10 15:30:09,265 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,265 - ERROR - Error in episode 6490: name 'args' is not defined +2025-03-10 15:30:09,268 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,268 - ERROR - Error in episode 6491: name 'args' is not defined +2025-03-10 15:30:09,271 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,271 - ERROR - Error in episode 6492: name 'args' is not defined +2025-03-10 15:30:09,273 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,274 - ERROR - Error in episode 6493: name 'args' is not defined +2025-03-10 15:30:09,277 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,277 - ERROR - Error in episode 6494: name 'args' is not defined +2025-03-10 15:30:09,279 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,279 - ERROR - Error in episode 6495: name 'args' is not defined +2025-03-10 15:30:09,282 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,282 - ERROR - Error in episode 6496: name 'args' is not defined +2025-03-10 15:30:09,285 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,286 - ERROR - Error in episode 6497: name 'args' is not defined +2025-03-10 15:30:09,288 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,288 - ERROR - Error in episode 6498: name 'args' is not defined +2025-03-10 15:30:09,291 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,291 - ERROR - Error in episode 6499: name 'args' is not defined +2025-03-10 15:30:09,294 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,294 - ERROR - Error in episode 6500: name 'args' is not defined +2025-03-10 15:30:09,297 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,297 - ERROR - Error in episode 6501: name 'args' is not defined +2025-03-10 15:30:09,300 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,300 - ERROR - Error in episode 6502: name 'args' is not defined +2025-03-10 15:30:09,302 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,303 - ERROR - Error in episode 6503: name 'args' is not defined +2025-03-10 15:30:09,305 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,305 - ERROR - Error in episode 6504: name 'args' is not defined +2025-03-10 15:30:09,309 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,309 - ERROR - Error in episode 6505: name 'args' is not defined +2025-03-10 15:30:09,312 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,313 - ERROR - Error in episode 6506: name 'args' is not defined +2025-03-10 15:30:09,315 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,315 - ERROR - Error in episode 6507: name 'args' is not defined +2025-03-10 15:30:09,318 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,318 - ERROR - Error in episode 6508: name 'args' is not defined +2025-03-10 15:30:09,320 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,321 - ERROR - Error in episode 6509: name 'args' is not defined +2025-03-10 15:30:09,323 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,323 - ERROR - Error in episode 6510: name 'args' is not defined +2025-03-10 15:30:09,326 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,326 - ERROR - Error in episode 6511: name 'args' is not defined +2025-03-10 15:30:09,329 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,329 - ERROR - Error in episode 6512: name 'args' is not defined +2025-03-10 15:30:09,333 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,333 - ERROR - Error in episode 6513: name 'args' is not defined +2025-03-10 15:30:09,336 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,336 - ERROR - Error in episode 6514: name 'args' is not defined +2025-03-10 15:30:09,338 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,338 - ERROR - Error in episode 6515: name 'args' is not defined +2025-03-10 15:30:09,341 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,341 - ERROR - Error in episode 6516: name 'args' is not defined +2025-03-10 15:30:09,343 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,344 - ERROR - Error in episode 6517: name 'args' is not defined +2025-03-10 15:30:09,346 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,347 - ERROR - Error in episode 6518: name 'args' is not defined +2025-03-10 15:30:09,350 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,350 - ERROR - Error in episode 6519: name 'args' is not defined +2025-03-10 15:30:09,353 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,353 - ERROR - Error in episode 6520: name 'args' is not defined +2025-03-10 15:30:09,355 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,356 - ERROR - Error in episode 6521: name 'args' is not defined +2025-03-10 15:30:09,359 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,359 - ERROR - Error in episode 6522: name 'args' is not defined +2025-03-10 15:30:09,362 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,362 - ERROR - Error in episode 6523: name 'args' is not defined +2025-03-10 15:30:09,364 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,364 - ERROR - Error in episode 6524: name 'args' is not defined +2025-03-10 15:30:09,367 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,367 - ERROR - Error in episode 6525: name 'args' is not defined +2025-03-10 15:30:09,369 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,370 - ERROR - Error in episode 6526: name 'args' is not defined +2025-03-10 15:30:09,372 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,373 - ERROR - Error in episode 6527: name 'args' is not defined +2025-03-10 15:30:09,375 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,376 - ERROR - Error in episode 6528: name 'args' is not defined +2025-03-10 15:30:09,378 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,378 - ERROR - Error in episode 6529: name 'args' is not defined +2025-03-10 15:30:09,381 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,381 - ERROR - Error in episode 6530: name 'args' is not defined +2025-03-10 15:30:09,384 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,384 - ERROR - Error in episode 6531: name 'args' is not defined +2025-03-10 15:30:09,386 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,387 - ERROR - Error in episode 6532: name 'args' is not defined +2025-03-10 15:30:09,389 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,390 - ERROR - Error in episode 6533: name 'args' is not defined +2025-03-10 15:30:09,392 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,393 - ERROR - Error in episode 6534: name 'args' is not defined +2025-03-10 15:30:09,397 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,397 - ERROR - Error in episode 6535: name 'args' is not defined +2025-03-10 15:30:09,401 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,401 - ERROR - Error in episode 6536: name 'args' is not defined +2025-03-10 15:30:09,403 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,404 - ERROR - Error in episode 6537: name 'args' is not defined +2025-03-10 15:30:09,406 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,406 - ERROR - Error in episode 6538: name 'args' is not defined +2025-03-10 15:30:09,409 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,409 - ERROR - Error in episode 6539: name 'args' is not defined +2025-03-10 15:30:09,412 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,412 - ERROR - Error in episode 6540: name 'args' is not defined +2025-03-10 15:30:09,414 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,415 - ERROR - Error in episode 6541: name 'args' is not defined +2025-03-10 15:30:09,417 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,418 - ERROR - Error in episode 6542: name 'args' is not defined +2025-03-10 15:30:09,420 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,420 - ERROR - Error in episode 6543: name 'args' is not defined +2025-03-10 15:30:09,423 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,423 - ERROR - Error in episode 6544: name 'args' is not defined +2025-03-10 15:30:09,426 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,426 - ERROR - Error in episode 6545: name 'args' is not defined +2025-03-10 15:30:09,428 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,429 - ERROR - Error in episode 6546: name 'args' is not defined +2025-03-10 15:30:09,431 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,431 - ERROR - Error in episode 6547: name 'args' is not defined +2025-03-10 15:30:09,435 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,435 - ERROR - Error in episode 6548: name 'args' is not defined +2025-03-10 15:30:09,437 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,438 - ERROR - Error in episode 6549: name 'args' is not defined +2025-03-10 15:30:09,440 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,440 - ERROR - Error in episode 6550: name 'args' is not defined +2025-03-10 15:30:09,443 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,443 - ERROR - Error in episode 6551: name 'args' is not defined +2025-03-10 15:30:09,446 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,446 - ERROR - Error in episode 6552: name 'args' is not defined +2025-03-10 15:30:09,449 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,449 - ERROR - Error in episode 6553: name 'args' is not defined +2025-03-10 15:30:09,452 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,452 - ERROR - Error in episode 6554: name 'args' is not defined +2025-03-10 15:30:09,455 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,455 - ERROR - Error in episode 6555: name 'args' is not defined +2025-03-10 15:30:09,458 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,458 - ERROR - Error in episode 6556: name 'args' is not defined +2025-03-10 15:30:09,461 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,461 - ERROR - Error in episode 6557: name 'args' is not defined +2025-03-10 15:30:09,464 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,464 - ERROR - Error in episode 6558: name 'args' is not defined +2025-03-10 15:30:09,467 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,467 - ERROR - Error in episode 6559: name 'args' is not defined +2025-03-10 15:30:09,470 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,470 - ERROR - Error in episode 6560: name 'args' is not defined +2025-03-10 15:30:09,472 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,473 - ERROR - Error in episode 6561: name 'args' is not defined +2025-03-10 15:30:09,476 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,477 - ERROR - Error in episode 6562: name 'args' is not defined +2025-03-10 15:30:09,480 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,480 - ERROR - Error in episode 6563: name 'args' is not defined +2025-03-10 15:30:09,483 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,483 - ERROR - Error in episode 6564: name 'args' is not defined +2025-03-10 15:30:09,486 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,486 - ERROR - Error in episode 6565: name 'args' is not defined +2025-03-10 15:30:09,488 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,489 - ERROR - Error in episode 6566: name 'args' is not defined +2025-03-10 15:30:09,492 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,493 - ERROR - Error in episode 6567: name 'args' is not defined +2025-03-10 15:30:09,495 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,495 - ERROR - Error in episode 6568: name 'args' is not defined +2025-03-10 15:30:09,498 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,498 - ERROR - Error in episode 6569: name 'args' is not defined +2025-03-10 15:30:09,501 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,502 - ERROR - Error in episode 6570: name 'args' is not defined +2025-03-10 15:30:09,504 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,504 - ERROR - Error in episode 6571: name 'args' is not defined +2025-03-10 15:30:09,507 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,507 - ERROR - Error in episode 6572: name 'args' is not defined +2025-03-10 15:30:09,511 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,511 - ERROR - Error in episode 6573: name 'args' is not defined +2025-03-10 15:30:09,514 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,514 - ERROR - Error in episode 6574: name 'args' is not defined +2025-03-10 15:30:09,517 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,517 - ERROR - Error in episode 6575: name 'args' is not defined +2025-03-10 15:30:09,519 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,520 - ERROR - Error in episode 6576: name 'args' is not defined +2025-03-10 15:30:09,522 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,523 - ERROR - Error in episode 6577: name 'args' is not defined +2025-03-10 15:30:09,526 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,526 - ERROR - Error in episode 6578: name 'args' is not defined +2025-03-10 15:30:09,528 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,528 - ERROR - Error in episode 6579: name 'args' is not defined +2025-03-10 15:30:09,531 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,531 - ERROR - Error in episode 6580: name 'args' is not defined +2025-03-10 15:30:09,535 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,535 - ERROR - Error in episode 6581: name 'args' is not defined +2025-03-10 15:30:09,538 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,538 - ERROR - Error in episode 6582: name 'args' is not defined +2025-03-10 15:30:09,540 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,541 - ERROR - Error in episode 6583: name 'args' is not defined +2025-03-10 15:30:09,544 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,544 - ERROR - Error in episode 6584: name 'args' is not defined +2025-03-10 15:30:09,547 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,547 - ERROR - Error in episode 6585: name 'args' is not defined +2025-03-10 15:30:09,549 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,549 - ERROR - Error in episode 6586: name 'args' is not defined +2025-03-10 15:30:09,552 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,552 - ERROR - Error in episode 6587: name 'args' is not defined +2025-03-10 15:30:09,555 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,555 - ERROR - Error in episode 6588: name 'args' is not defined +2025-03-10 15:30:09,557 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,558 - ERROR - Error in episode 6589: name 'args' is not defined +2025-03-10 15:30:09,560 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,561 - ERROR - Error in episode 6590: name 'args' is not defined +2025-03-10 15:30:09,563 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,564 - ERROR - Error in episode 6591: name 'args' is not defined +2025-03-10 15:30:09,566 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,567 - ERROR - Error in episode 6592: name 'args' is not defined +2025-03-10 15:30:09,569 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,569 - ERROR - Error in episode 6593: name 'args' is not defined +2025-03-10 15:30:09,572 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,572 - ERROR - Error in episode 6594: name 'args' is not defined +2025-03-10 15:30:09,574 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,576 - ERROR - Error in episode 6595: name 'args' is not defined +2025-03-10 15:30:09,578 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,578 - ERROR - Error in episode 6596: name 'args' is not defined +2025-03-10 15:30:09,581 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,581 - ERROR - Error in episode 6597: name 'args' is not defined +2025-03-10 15:30:09,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,584 - ERROR - Error in episode 6598: name 'args' is not defined +2025-03-10 15:30:09,587 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,587 - ERROR - Error in episode 6599: name 'args' is not defined +2025-03-10 15:30:09,589 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,589 - ERROR - Error in episode 6600: name 'args' is not defined +2025-03-10 15:30:09,592 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,592 - ERROR - Error in episode 6601: name 'args' is not defined +2025-03-10 15:30:09,595 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,595 - ERROR - Error in episode 6602: name 'args' is not defined +2025-03-10 15:30:09,597 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,598 - ERROR - Error in episode 6603: name 'args' is not defined +2025-03-10 15:30:09,601 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,601 - ERROR - Error in episode 6604: name 'args' is not defined +2025-03-10 15:30:09,603 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,604 - ERROR - Error in episode 6605: name 'args' is not defined +2025-03-10 15:30:09,606 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,607 - ERROR - Error in episode 6606: name 'args' is not defined +2025-03-10 15:30:09,610 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,610 - ERROR - Error in episode 6607: name 'args' is not defined +2025-03-10 15:30:09,613 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,613 - ERROR - Error in episode 6608: name 'args' is not defined +2025-03-10 15:30:09,615 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,616 - ERROR - Error in episode 6609: name 'args' is not defined +2025-03-10 15:30:09,618 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,619 - ERROR - Error in episode 6610: name 'args' is not defined +2025-03-10 15:30:09,621 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,622 - ERROR - Error in episode 6611: name 'args' is not defined +2025-03-10 15:30:09,624 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,625 - ERROR - Error in episode 6612: name 'args' is not defined +2025-03-10 15:30:09,627 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,628 - ERROR - Error in episode 6613: name 'args' is not defined +2025-03-10 15:30:09,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,630 - ERROR - Error in episode 6614: name 'args' is not defined +2025-03-10 15:30:09,633 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,633 - ERROR - Error in episode 6615: name 'args' is not defined +2025-03-10 15:30:09,636 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,636 - ERROR - Error in episode 6616: name 'args' is not defined +2025-03-10 15:30:09,638 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,639 - ERROR - Error in episode 6617: name 'args' is not defined +2025-03-10 15:30:09,642 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,642 - ERROR - Error in episode 6618: name 'args' is not defined +2025-03-10 15:30:09,645 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,645 - ERROR - Error in episode 6619: name 'args' is not defined +2025-03-10 15:30:09,647 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,647 - ERROR - Error in episode 6620: name 'args' is not defined +2025-03-10 15:30:09,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,652 - ERROR - Error in episode 6621: name 'args' is not defined +2025-03-10 15:30:09,654 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,654 - ERROR - Error in episode 6622: name 'args' is not defined +2025-03-10 15:30:09,658 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,658 - ERROR - Error in episode 6623: name 'args' is not defined +2025-03-10 15:30:09,660 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,661 - ERROR - Error in episode 6624: name 'args' is not defined +2025-03-10 15:30:09,663 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,664 - ERROR - Error in episode 6625: name 'args' is not defined +2025-03-10 15:30:09,667 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,667 - ERROR - Error in episode 6626: name 'args' is not defined +2025-03-10 15:30:09,669 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,670 - ERROR - Error in episode 6627: name 'args' is not defined +2025-03-10 15:30:09,673 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,674 - ERROR - Error in episode 6628: name 'args' is not defined +2025-03-10 15:30:09,676 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,677 - ERROR - Error in episode 6629: name 'args' is not defined +2025-03-10 15:30:09,680 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,680 - ERROR - Error in episode 6630: name 'args' is not defined +2025-03-10 15:30:09,683 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,684 - ERROR - Error in episode 6631: name 'args' is not defined +2025-03-10 15:30:09,686 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,686 - ERROR - Error in episode 6632: name 'args' is not defined +2025-03-10 15:30:09,688 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,689 - ERROR - Error in episode 6633: name 'args' is not defined +2025-03-10 15:30:09,691 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,692 - ERROR - Error in episode 6634: name 'args' is not defined +2025-03-10 15:30:09,695 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,695 - ERROR - Error in episode 6635: name 'args' is not defined +2025-03-10 15:30:09,698 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,699 - ERROR - Error in episode 6636: name 'args' is not defined +2025-03-10 15:30:09,701 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,702 - ERROR - Error in episode 6637: name 'args' is not defined +2025-03-10 15:30:09,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,705 - ERROR - Error in episode 6638: name 'args' is not defined +2025-03-10 15:30:09,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,707 - ERROR - Error in episode 6639: name 'args' is not defined +2025-03-10 15:30:09,710 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,710 - ERROR - Error in episode 6640: name 'args' is not defined +2025-03-10 15:30:09,713 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,714 - ERROR - Error in episode 6641: name 'args' is not defined +2025-03-10 15:30:09,716 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,716 - ERROR - Error in episode 6642: name 'args' is not defined +2025-03-10 15:30:09,719 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,719 - ERROR - Error in episode 6643: name 'args' is not defined +2025-03-10 15:30:09,722 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,722 - ERROR - Error in episode 6644: name 'args' is not defined +2025-03-10 15:30:09,724 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,725 - ERROR - Error in episode 6645: name 'args' is not defined +2025-03-10 15:30:09,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,728 - ERROR - Error in episode 6646: name 'args' is not defined +2025-03-10 15:30:09,731 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,731 - ERROR - Error in episode 6647: name 'args' is not defined +2025-03-10 15:30:09,734 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,734 - ERROR - Error in episode 6648: name 'args' is not defined +2025-03-10 15:30:09,737 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,737 - ERROR - Error in episode 6649: name 'args' is not defined +2025-03-10 15:30:09,740 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,741 - ERROR - Error in episode 6650: name 'args' is not defined +2025-03-10 15:30:09,744 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,744 - ERROR - Error in episode 6651: name 'args' is not defined +2025-03-10 15:30:09,747 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,747 - ERROR - Error in episode 6652: name 'args' is not defined +2025-03-10 15:30:09,750 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,750 - ERROR - Error in episode 6653: name 'args' is not defined +2025-03-10 15:30:09,753 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,753 - ERROR - Error in episode 6654: name 'args' is not defined +2025-03-10 15:30:09,756 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,756 - ERROR - Error in episode 6655: name 'args' is not defined +2025-03-10 15:30:09,758 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,759 - ERROR - Error in episode 6656: name 'args' is not defined +2025-03-10 15:30:09,761 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,762 - ERROR - Error in episode 6657: name 'args' is not defined +2025-03-10 15:30:09,766 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,767 - ERROR - Error in episode 6658: name 'args' is not defined +2025-03-10 15:30:09,769 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,770 - ERROR - Error in episode 6659: name 'args' is not defined +2025-03-10 15:30:09,772 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,773 - ERROR - Error in episode 6660: name 'args' is not defined +2025-03-10 15:30:09,776 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,777 - ERROR - Error in episode 6661: name 'args' is not defined +2025-03-10 15:30:09,779 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,779 - ERROR - Error in episode 6662: name 'args' is not defined +2025-03-10 15:30:09,782 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,782 - ERROR - Error in episode 6663: name 'args' is not defined +2025-03-10 15:30:09,785 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,786 - ERROR - Error in episode 6664: name 'args' is not defined +2025-03-10 15:30:09,788 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,788 - ERROR - Error in episode 6665: name 'args' is not defined +2025-03-10 15:30:09,791 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,791 - ERROR - Error in episode 6666: name 'args' is not defined +2025-03-10 15:30:09,794 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,795 - ERROR - Error in episode 6667: name 'args' is not defined +2025-03-10 15:30:09,797 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,797 - ERROR - Error in episode 6668: name 'args' is not defined +2025-03-10 15:30:09,800 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,801 - ERROR - Error in episode 6669: name 'args' is not defined +2025-03-10 15:30:09,803 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,803 - ERROR - Error in episode 6670: name 'args' is not defined +2025-03-10 15:30:09,806 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,806 - ERROR - Error in episode 6671: name 'args' is not defined +2025-03-10 15:30:09,809 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,809 - ERROR - Error in episode 6672: name 'args' is not defined +2025-03-10 15:30:09,813 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,813 - ERROR - Error in episode 6673: name 'args' is not defined +2025-03-10 15:30:09,816 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,816 - ERROR - Error in episode 6674: name 'args' is not defined +2025-03-10 15:30:09,819 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,819 - ERROR - Error in episode 6675: name 'args' is not defined +2025-03-10 15:30:09,822 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,822 - ERROR - Error in episode 6676: name 'args' is not defined +2025-03-10 15:30:09,825 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,826 - ERROR - Error in episode 6677: name 'args' is not defined +2025-03-10 15:30:09,828 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,828 - ERROR - Error in episode 6678: name 'args' is not defined +2025-03-10 15:30:09,831 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,831 - ERROR - Error in episode 6679: name 'args' is not defined +2025-03-10 15:30:09,834 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,836 - ERROR - Error in episode 6680: name 'args' is not defined +2025-03-10 15:30:09,838 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,838 - ERROR - Error in episode 6681: name 'args' is not defined +2025-03-10 15:30:09,840 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,841 - ERROR - Error in episode 6682: name 'args' is not defined +2025-03-10 15:30:09,844 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,844 - ERROR - Error in episode 6683: name 'args' is not defined +2025-03-10 15:30:09,847 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,847 - ERROR - Error in episode 6684: name 'args' is not defined +2025-03-10 15:30:09,850 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,850 - ERROR - Error in episode 6685: name 'args' is not defined +2025-03-10 15:30:09,852 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,853 - ERROR - Error in episode 6686: name 'args' is not defined +2025-03-10 15:30:09,856 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,856 - ERROR - Error in episode 6687: name 'args' is not defined +2025-03-10 15:30:09,859 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,859 - ERROR - Error in episode 6688: name 'args' is not defined +2025-03-10 15:30:09,862 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,863 - ERROR - Error in episode 6689: name 'args' is not defined +2025-03-10 15:30:09,865 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,865 - ERROR - Error in episode 6690: name 'args' is not defined +2025-03-10 15:30:09,868 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,869 - ERROR - Error in episode 6691: name 'args' is not defined +2025-03-10 15:30:09,871 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,871 - ERROR - Error in episode 6692: name 'args' is not defined +2025-03-10 15:30:09,873 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,874 - ERROR - Error in episode 6693: name 'args' is not defined +2025-03-10 15:30:09,876 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,877 - ERROR - Error in episode 6694: name 'args' is not defined +2025-03-10 15:30:09,879 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,880 - ERROR - Error in episode 6695: name 'args' is not defined +2025-03-10 15:30:09,882 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,882 - ERROR - Error in episode 6696: name 'args' is not defined +2025-03-10 15:30:09,885 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,886 - ERROR - Error in episode 6697: name 'args' is not defined +2025-03-10 15:30:09,889 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,889 - ERROR - Error in episode 6698: name 'args' is not defined +2025-03-10 15:30:09,891 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,892 - ERROR - Error in episode 6699: name 'args' is not defined +2025-03-10 15:30:09,894 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,895 - ERROR - Error in episode 6700: name 'args' is not defined +2025-03-10 15:30:09,898 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,898 - ERROR - Error in episode 6701: name 'args' is not defined +2025-03-10 15:30:09,900 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,901 - ERROR - Error in episode 6702: name 'args' is not defined +2025-03-10 15:30:09,903 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,903 - ERROR - Error in episode 6703: name 'args' is not defined +2025-03-10 15:30:09,906 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,907 - ERROR - Error in episode 6704: name 'args' is not defined +2025-03-10 15:30:09,910 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,910 - ERROR - Error in episode 6705: name 'args' is not defined +2025-03-10 15:30:09,913 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,913 - ERROR - Error in episode 6706: name 'args' is not defined +2025-03-10 15:30:09,915 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,916 - ERROR - Error in episode 6707: name 'args' is not defined +2025-03-10 15:30:09,918 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,919 - ERROR - Error in episode 6708: name 'args' is not defined +2025-03-10 15:30:09,920 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,922 - ERROR - Error in episode 6709: name 'args' is not defined +2025-03-10 15:30:09,924 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,924 - ERROR - Error in episode 6710: name 'args' is not defined +2025-03-10 15:30:09,927 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,928 - ERROR - Error in episode 6711: name 'args' is not defined +2025-03-10 15:30:09,930 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,930 - ERROR - Error in episode 6712: name 'args' is not defined +2025-03-10 15:30:09,933 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,933 - ERROR - Error in episode 6713: name 'args' is not defined +2025-03-10 15:30:09,937 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,937 - ERROR - Error in episode 6714: name 'args' is not defined +2025-03-10 15:30:09,940 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,940 - ERROR - Error in episode 6715: name 'args' is not defined +2025-03-10 15:30:09,943 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,943 - ERROR - Error in episode 6716: name 'args' is not defined +2025-03-10 15:30:09,946 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,946 - ERROR - Error in episode 6717: name 'args' is not defined +2025-03-10 15:30:09,949 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,949 - ERROR - Error in episode 6718: name 'args' is not defined +2025-03-10 15:30:09,952 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,953 - ERROR - Error in episode 6719: name 'args' is not defined +2025-03-10 15:30:09,955 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,955 - ERROR - Error in episode 6720: name 'args' is not defined +2025-03-10 15:30:09,958 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,958 - ERROR - Error in episode 6721: name 'args' is not defined +2025-03-10 15:30:09,961 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,961 - ERROR - Error in episode 6722: name 'args' is not defined +2025-03-10 15:30:09,963 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,964 - ERROR - Error in episode 6723: name 'args' is not defined +2025-03-10 15:30:09,966 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,967 - ERROR - Error in episode 6724: name 'args' is not defined +2025-03-10 15:30:09,969 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,969 - ERROR - Error in episode 6725: name 'args' is not defined +2025-03-10 15:30:09,972 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,972 - ERROR - Error in episode 6726: name 'args' is not defined +2025-03-10 15:30:09,974 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,975 - ERROR - Error in episode 6727: name 'args' is not defined +2025-03-10 15:30:09,978 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,978 - ERROR - Error in episode 6728: name 'args' is not defined +2025-03-10 15:30:09,981 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,982 - ERROR - Error in episode 6729: name 'args' is not defined +2025-03-10 15:30:09,984 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,985 - ERROR - Error in episode 6730: name 'args' is not defined +2025-03-10 15:30:09,987 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,988 - ERROR - Error in episode 6731: name 'args' is not defined +2025-03-10 15:30:09,990 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,991 - ERROR - Error in episode 6732: name 'args' is not defined +2025-03-10 15:30:09,993 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,993 - ERROR - Error in episode 6733: name 'args' is not defined +2025-03-10 15:30:09,996 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:09,996 - ERROR - Error in episode 6734: name 'args' is not defined +2025-03-10 15:30:09,999 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,000 - ERROR - Error in episode 6735: name 'args' is not defined +2025-03-10 15:30:10,003 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,003 - ERROR - Error in episode 6736: name 'args' is not defined +2025-03-10 15:30:10,005 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,006 - ERROR - Error in episode 6737: name 'args' is not defined +2025-03-10 15:30:10,009 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,009 - ERROR - Error in episode 6738: name 'args' is not defined +2025-03-10 15:30:10,011 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,011 - ERROR - Error in episode 6739: name 'args' is not defined +2025-03-10 15:30:10,014 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,014 - ERROR - Error in episode 6740: name 'args' is not defined +2025-03-10 15:30:10,016 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,018 - ERROR - Error in episode 6741: name 'args' is not defined +2025-03-10 15:30:10,020 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,020 - ERROR - Error in episode 6742: name 'args' is not defined +2025-03-10 15:30:10,023 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,023 - ERROR - Error in episode 6743: name 'args' is not defined +2025-03-10 15:30:10,026 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,026 - ERROR - Error in episode 6744: name 'args' is not defined +2025-03-10 15:30:10,029 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,030 - ERROR - Error in episode 6745: name 'args' is not defined +2025-03-10 15:30:10,032 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,032 - ERROR - Error in episode 6746: name 'args' is not defined +2025-03-10 15:30:10,035 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,036 - ERROR - Error in episode 6747: name 'args' is not defined +2025-03-10 15:30:10,038 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,038 - ERROR - Error in episode 6748: name 'args' is not defined +2025-03-10 15:30:10,041 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,041 - ERROR - Error in episode 6749: name 'args' is not defined +2025-03-10 15:30:10,044 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,044 - ERROR - Error in episode 6750: name 'args' is not defined +2025-03-10 15:30:10,047 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,047 - ERROR - Error in episode 6751: name 'args' is not defined +2025-03-10 15:30:10,049 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,049 - ERROR - Error in episode 6752: name 'args' is not defined +2025-03-10 15:30:10,052 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,052 - ERROR - Error in episode 6753: name 'args' is not defined +2025-03-10 15:30:10,056 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,056 - ERROR - Error in episode 6754: name 'args' is not defined +2025-03-10 15:30:10,059 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,059 - ERROR - Error in episode 6755: name 'args' is not defined +2025-03-10 15:30:10,061 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,061 - ERROR - Error in episode 6756: name 'args' is not defined +2025-03-10 15:30:10,064 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,064 - ERROR - Error in episode 6757: name 'args' is not defined +2025-03-10 15:30:10,067 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,067 - ERROR - Error in episode 6758: name 'args' is not defined +2025-03-10 15:30:10,070 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,070 - ERROR - Error in episode 6759: name 'args' is not defined +2025-03-10 15:30:10,072 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,072 - ERROR - Error in episode 6760: name 'args' is not defined +2025-03-10 15:30:10,075 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,075 - ERROR - Error in episode 6761: name 'args' is not defined +2025-03-10 15:30:10,078 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,079 - ERROR - Error in episode 6762: name 'args' is not defined +2025-03-10 15:30:10,081 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,081 - ERROR - Error in episode 6763: name 'args' is not defined +2025-03-10 15:30:10,084 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,085 - ERROR - Error in episode 6764: name 'args' is not defined +2025-03-10 15:30:10,087 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,087 - ERROR - Error in episode 6765: name 'args' is not defined +2025-03-10 15:30:10,090 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,090 - ERROR - Error in episode 6766: name 'args' is not defined +2025-03-10 15:30:10,093 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,094 - ERROR - Error in episode 6767: name 'args' is not defined +2025-03-10 15:30:10,096 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,096 - ERROR - Error in episode 6768: name 'args' is not defined +2025-03-10 15:30:10,099 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,099 - ERROR - Error in episode 6769: name 'args' is not defined +2025-03-10 15:30:10,103 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,103 - ERROR - Error in episode 6770: name 'args' is not defined +2025-03-10 15:30:10,105 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,106 - ERROR - Error in episode 6771: name 'args' is not defined +2025-03-10 15:30:10,109 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,109 - ERROR - Error in episode 6772: name 'args' is not defined +2025-03-10 15:30:10,111 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,112 - ERROR - Error in episode 6773: name 'args' is not defined +2025-03-10 15:30:10,114 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,115 - ERROR - Error in episode 6774: name 'args' is not defined +2025-03-10 15:30:10,118 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,118 - ERROR - Error in episode 6775: name 'args' is not defined +2025-03-10 15:30:10,120 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,121 - ERROR - Error in episode 6776: name 'args' is not defined +2025-03-10 15:30:10,124 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,124 - ERROR - Error in episode 6777: name 'args' is not defined +2025-03-10 15:30:10,128 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,128 - ERROR - Error in episode 6778: name 'args' is not defined +2025-03-10 15:30:10,130 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,130 - ERROR - Error in episode 6779: name 'args' is not defined +2025-03-10 15:30:10,133 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,133 - ERROR - Error in episode 6780: name 'args' is not defined +2025-03-10 15:30:10,136 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,136 - ERROR - Error in episode 6781: name 'args' is not defined +2025-03-10 15:30:10,139 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,139 - ERROR - Error in episode 6782: name 'args' is not defined +2025-03-10 15:30:10,142 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,142 - ERROR - Error in episode 6783: name 'args' is not defined +2025-03-10 15:30:10,145 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,145 - ERROR - Error in episode 6784: name 'args' is not defined +2025-03-10 15:30:10,148 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,148 - ERROR - Error in episode 6785: name 'args' is not defined +2025-03-10 15:30:10,150 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,151 - ERROR - Error in episode 6786: name 'args' is not defined +2025-03-10 15:30:10,154 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,154 - ERROR - Error in episode 6787: name 'args' is not defined +2025-03-10 15:30:10,156 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,157 - ERROR - Error in episode 6788: name 'args' is not defined +2025-03-10 15:30:10,159 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,160 - ERROR - Error in episode 6789: name 'args' is not defined +2025-03-10 15:30:10,162 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,162 - ERROR - Error in episode 6790: name 'args' is not defined +2025-03-10 15:30:10,165 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,165 - ERROR - Error in episode 6791: name 'args' is not defined +2025-03-10 15:30:10,168 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,169 - ERROR - Error in episode 6792: name 'args' is not defined +2025-03-10 15:30:10,171 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,171 - ERROR - Error in episode 6793: name 'args' is not defined +2025-03-10 15:30:10,174 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,174 - ERROR - Error in episode 6794: name 'args' is not defined +2025-03-10 15:30:10,177 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,177 - ERROR - Error in episode 6795: name 'args' is not defined +2025-03-10 15:30:10,180 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,180 - ERROR - Error in episode 6796: name 'args' is not defined +2025-03-10 15:30:10,183 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,183 - ERROR - Error in episode 6797: name 'args' is not defined +2025-03-10 15:30:10,186 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,186 - ERROR - Error in episode 6798: name 'args' is not defined +2025-03-10 15:30:10,188 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,188 - ERROR - Error in episode 6799: name 'args' is not defined +2025-03-10 15:30:10,191 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,191 - ERROR - Error in episode 6800: name 'args' is not defined +2025-03-10 15:30:10,194 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,195 - ERROR - Error in episode 6801: name 'args' is not defined +2025-03-10 15:30:10,197 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,197 - ERROR - Error in episode 6802: name 'args' is not defined +2025-03-10 15:30:10,200 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,200 - ERROR - Error in episode 6803: name 'args' is not defined +2025-03-10 15:30:10,203 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,203 - ERROR - Error in episode 6804: name 'args' is not defined +2025-03-10 15:30:10,206 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,207 - ERROR - Error in episode 6805: name 'args' is not defined +2025-03-10 15:30:10,209 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,209 - ERROR - Error in episode 6806: name 'args' is not defined +2025-03-10 15:30:10,212 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,212 - ERROR - Error in episode 6807: name 'args' is not defined +2025-03-10 15:30:10,215 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,215 - ERROR - Error in episode 6808: name 'args' is not defined +2025-03-10 15:30:10,217 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,218 - ERROR - Error in episode 6809: name 'args' is not defined +2025-03-10 15:30:10,220 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,221 - ERROR - Error in episode 6810: name 'args' is not defined +2025-03-10 15:30:10,223 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,223 - ERROR - Error in episode 6811: name 'args' is not defined +2025-03-10 15:30:10,226 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,227 - ERROR - Error in episode 6812: name 'args' is not defined +2025-03-10 15:30:10,229 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,229 - ERROR - Error in episode 6813: name 'args' is not defined +2025-03-10 15:30:10,232 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,232 - ERROR - Error in episode 6814: name 'args' is not defined +2025-03-10 15:30:10,235 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,236 - ERROR - Error in episode 6815: name 'args' is not defined +2025-03-10 15:30:10,238 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,238 - ERROR - Error in episode 6816: name 'args' is not defined +2025-03-10 15:30:10,240 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,241 - ERROR - Error in episode 6817: name 'args' is not defined +2025-03-10 15:30:10,244 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,244 - ERROR - Error in episode 6818: name 'args' is not defined +2025-03-10 15:30:10,246 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,247 - ERROR - Error in episode 6819: name 'args' is not defined +2025-03-10 15:30:10,249 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,249 - ERROR - Error in episode 6820: name 'args' is not defined +2025-03-10 15:30:10,253 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,253 - ERROR - Error in episode 6821: name 'args' is not defined +2025-03-10 15:30:10,256 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,256 - ERROR - Error in episode 6822: name 'args' is not defined +2025-03-10 15:30:10,259 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,259 - ERROR - Error in episode 6823: name 'args' is not defined +2025-03-10 15:30:10,262 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,262 - ERROR - Error in episode 6824: name 'args' is not defined +2025-03-10 15:30:10,264 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,265 - ERROR - Error in episode 6825: name 'args' is not defined +2025-03-10 15:30:10,267 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,268 - ERROR - Error in episode 6826: name 'args' is not defined +2025-03-10 15:30:10,270 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,271 - ERROR - Error in episode 6827: name 'args' is not defined +2025-03-10 15:30:10,273 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,273 - ERROR - Error in episode 6828: name 'args' is not defined +2025-03-10 15:30:10,278 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,278 - ERROR - Error in episode 6829: name 'args' is not defined +2025-03-10 15:30:10,280 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,281 - ERROR - Error in episode 6830: name 'args' is not defined +2025-03-10 15:30:10,283 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,283 - ERROR - Error in episode 6831: name 'args' is not defined +2025-03-10 15:30:10,286 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,287 - ERROR - Error in episode 6832: name 'args' is not defined +2025-03-10 15:30:10,289 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,289 - ERROR - Error in episode 6833: name 'args' is not defined +2025-03-10 15:30:10,292 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,292 - ERROR - Error in episode 6834: name 'args' is not defined +2025-03-10 15:30:10,295 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,295 - ERROR - Error in episode 6835: name 'args' is not defined +2025-03-10 15:30:10,298 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,298 - ERROR - Error in episode 6836: name 'args' is not defined +2025-03-10 15:30:10,301 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,302 - ERROR - Error in episode 6837: name 'args' is not defined +2025-03-10 15:30:10,304 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,305 - ERROR - Error in episode 6838: name 'args' is not defined +2025-03-10 15:30:10,307 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,308 - ERROR - Error in episode 6839: name 'args' is not defined +2025-03-10 15:30:10,310 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,311 - ERROR - Error in episode 6840: name 'args' is not defined +2025-03-10 15:30:10,313 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,313 - ERROR - Error in episode 6841: name 'args' is not defined +2025-03-10 15:30:10,316 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,316 - ERROR - Error in episode 6842: name 'args' is not defined +2025-03-10 15:30:10,319 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,319 - ERROR - Error in episode 6843: name 'args' is not defined +2025-03-10 15:30:10,323 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,323 - ERROR - Error in episode 6844: name 'args' is not defined +2025-03-10 15:30:10,325 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,326 - ERROR - Error in episode 6845: name 'args' is not defined +2025-03-10 15:30:10,328 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,329 - ERROR - Error in episode 6846: name 'args' is not defined +2025-03-10 15:30:10,331 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,332 - ERROR - Error in episode 6847: name 'args' is not defined +2025-03-10 15:30:10,334 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,334 - ERROR - Error in episode 6848: name 'args' is not defined +2025-03-10 15:30:10,337 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,338 - ERROR - Error in episode 6849: name 'args' is not defined +2025-03-10 15:30:10,340 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,341 - ERROR - Error in episode 6850: name 'args' is not defined +2025-03-10 15:30:10,343 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,343 - ERROR - Error in episode 6851: name 'args' is not defined +2025-03-10 15:30:10,346 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,346 - ERROR - Error in episode 6852: name 'args' is not defined +2025-03-10 15:30:10,349 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,349 - ERROR - Error in episode 6853: name 'args' is not defined +2025-03-10 15:30:10,352 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,352 - ERROR - Error in episode 6854: name 'args' is not defined +2025-03-10 15:30:10,355 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,355 - ERROR - Error in episode 6855: name 'args' is not defined +2025-03-10 15:30:10,358 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,358 - ERROR - Error in episode 6856: name 'args' is not defined +2025-03-10 15:30:10,361 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,362 - ERROR - Error in episode 6857: name 'args' is not defined +2025-03-10 15:30:10,364 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,364 - ERROR - Error in episode 6858: name 'args' is not defined +2025-03-10 15:30:10,367 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,368 - ERROR - Error in episode 6859: name 'args' is not defined +2025-03-10 15:30:10,370 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,370 - ERROR - Error in episode 6860: name 'args' is not defined +2025-03-10 15:30:10,373 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,373 - ERROR - Error in episode 6861: name 'args' is not defined +2025-03-10 15:30:10,375 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,377 - ERROR - Error in episode 6862: name 'args' is not defined +2025-03-10 15:30:10,379 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,380 - ERROR - Error in episode 6863: name 'args' is not defined +2025-03-10 15:30:10,382 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,382 - ERROR - Error in episode 6864: name 'args' is not defined +2025-03-10 15:30:10,385 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,385 - ERROR - Error in episode 6865: name 'args' is not defined +2025-03-10 15:30:10,388 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,388 - ERROR - Error in episode 6866: name 'args' is not defined +2025-03-10 15:30:10,390 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,391 - ERROR - Error in episode 6867: name 'args' is not defined +2025-03-10 15:30:10,394 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,394 - ERROR - Error in episode 6868: name 'args' is not defined +2025-03-10 15:30:10,396 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,396 - ERROR - Error in episode 6869: name 'args' is not defined +2025-03-10 15:30:10,399 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,399 - ERROR - Error in episode 6870: name 'args' is not defined +2025-03-10 15:30:10,401 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,401 - ERROR - Error in episode 6871: name 'args' is not defined +2025-03-10 15:30:10,404 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,405 - ERROR - Error in episode 6872: name 'args' is not defined +2025-03-10 15:30:10,407 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,408 - ERROR - Error in episode 6873: name 'args' is not defined +2025-03-10 15:30:10,411 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,411 - ERROR - Error in episode 6874: name 'args' is not defined +2025-03-10 15:30:10,413 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,414 - ERROR - Error in episode 6875: name 'args' is not defined +2025-03-10 15:30:10,416 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,416 - ERROR - Error in episode 6876: name 'args' is not defined +2025-03-10 15:30:10,419 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,420 - ERROR - Error in episode 6877: name 'args' is not defined +2025-03-10 15:30:10,422 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,422 - ERROR - Error in episode 6878: name 'args' is not defined +2025-03-10 15:30:10,425 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,425 - ERROR - Error in episode 6879: name 'args' is not defined +2025-03-10 15:30:10,428 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,428 - ERROR - Error in episode 6880: name 'args' is not defined +2025-03-10 15:30:10,431 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,431 - ERROR - Error in episode 6881: name 'args' is not defined +2025-03-10 15:30:10,434 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,434 - ERROR - Error in episode 6882: name 'args' is not defined +2025-03-10 15:30:10,437 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,437 - ERROR - Error in episode 6883: name 'args' is not defined +2025-03-10 15:30:10,440 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,440 - ERROR - Error in episode 6884: name 'args' is not defined +2025-03-10 15:30:10,443 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,443 - ERROR - Error in episode 6885: name 'args' is not defined +2025-03-10 15:30:10,446 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,446 - ERROR - Error in episode 6886: name 'args' is not defined +2025-03-10 15:30:10,448 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,449 - ERROR - Error in episode 6887: name 'args' is not defined +2025-03-10 15:30:10,452 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,452 - ERROR - Error in episode 6888: name 'args' is not defined +2025-03-10 15:30:10,454 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,455 - ERROR - Error in episode 6889: name 'args' is not defined +2025-03-10 15:30:10,457 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,457 - ERROR - Error in episode 6890: name 'args' is not defined +2025-03-10 15:30:10,460 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,461 - ERROR - Error in episode 6891: name 'args' is not defined +2025-03-10 15:30:10,463 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,463 - ERROR - Error in episode 6892: name 'args' is not defined +2025-03-10 15:30:10,466 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,466 - ERROR - Error in episode 6893: name 'args' is not defined +2025-03-10 15:30:10,469 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,469 - ERROR - Error in episode 6894: name 'args' is not defined +2025-03-10 15:30:10,472 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,472 - ERROR - Error in episode 6895: name 'args' is not defined +2025-03-10 15:30:10,475 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,475 - ERROR - Error in episode 6896: name 'args' is not defined +2025-03-10 15:30:10,478 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,478 - ERROR - Error in episode 6897: name 'args' is not defined +2025-03-10 15:30:10,481 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,481 - ERROR - Error in episode 6898: name 'args' is not defined +2025-03-10 15:30:10,485 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,485 - ERROR - Error in episode 6899: name 'args' is not defined +2025-03-10 15:30:10,487 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,488 - ERROR - Error in episode 6900: name 'args' is not defined +2025-03-10 15:30:10,490 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,491 - ERROR - Error in episode 6901: name 'args' is not defined +2025-03-10 15:30:10,494 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,494 - ERROR - Error in episode 6902: name 'args' is not defined +2025-03-10 15:30:10,496 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,496 - ERROR - Error in episode 6903: name 'args' is not defined +2025-03-10 15:30:10,499 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,499 - ERROR - Error in episode 6904: name 'args' is not defined +2025-03-10 15:30:10,502 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,502 - ERROR - Error in episode 6905: name 'args' is not defined +2025-03-10 15:30:10,505 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,505 - ERROR - Error in episode 6906: name 'args' is not defined +2025-03-10 15:30:10,507 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,508 - ERROR - Error in episode 6907: name 'args' is not defined +2025-03-10 15:30:10,510 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,511 - ERROR - Error in episode 6908: name 'args' is not defined +2025-03-10 15:30:10,514 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,514 - ERROR - Error in episode 6909: name 'args' is not defined +2025-03-10 15:30:10,516 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,517 - ERROR - Error in episode 6910: name 'args' is not defined +2025-03-10 15:30:10,519 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,519 - ERROR - Error in episode 6911: name 'args' is not defined +2025-03-10 15:30:10,523 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,523 - ERROR - Error in episode 6912: name 'args' is not defined +2025-03-10 15:30:10,525 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,526 - ERROR - Error in episode 6913: name 'args' is not defined +2025-03-10 15:30:10,528 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,529 - ERROR - Error in episode 6914: name 'args' is not defined +2025-03-10 15:30:10,531 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,531 - ERROR - Error in episode 6915: name 'args' is not defined +2025-03-10 15:30:10,533 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,534 - ERROR - Error in episode 6916: name 'args' is not defined +2025-03-10 15:30:10,536 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,537 - ERROR - Error in episode 6917: name 'args' is not defined +2025-03-10 15:30:10,539 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,539 - ERROR - Error in episode 6918: name 'args' is not defined +2025-03-10 15:30:10,542 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,542 - ERROR - Error in episode 6919: name 'args' is not defined +2025-03-10 15:30:10,545 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,545 - ERROR - Error in episode 6920: name 'args' is not defined +2025-03-10 15:30:10,547 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,548 - ERROR - Error in episode 6921: name 'args' is not defined +2025-03-10 15:30:10,550 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,551 - ERROR - Error in episode 6922: name 'args' is not defined +2025-03-10 15:30:10,553 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,553 - ERROR - Error in episode 6923: name 'args' is not defined +2025-03-10 15:30:10,556 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,556 - ERROR - Error in episode 6924: name 'args' is not defined +2025-03-10 15:30:10,559 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,560 - ERROR - Error in episode 6925: name 'args' is not defined +2025-03-10 15:30:10,562 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,562 - ERROR - Error in episode 6926: name 'args' is not defined +2025-03-10 15:30:10,564 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,564 - ERROR - Error in episode 6927: name 'args' is not defined +2025-03-10 15:30:10,567 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,568 - ERROR - Error in episode 6928: name 'args' is not defined +2025-03-10 15:30:10,570 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,570 - ERROR - Error in episode 6929: name 'args' is not defined +2025-03-10 15:30:10,573 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,573 - ERROR - Error in episode 6930: name 'args' is not defined +2025-03-10 15:30:10,576 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,576 - ERROR - Error in episode 6931: name 'args' is not defined +2025-03-10 15:30:10,579 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,579 - ERROR - Error in episode 6932: name 'args' is not defined +2025-03-10 15:30:10,581 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,581 - ERROR - Error in episode 6933: name 'args' is not defined +2025-03-10 15:30:10,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,584 - ERROR - Error in episode 6934: name 'args' is not defined +2025-03-10 15:30:10,587 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,587 - ERROR - Error in episode 6935: name 'args' is not defined +2025-03-10 15:30:10,591 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,592 - ERROR - Error in episode 6936: name 'args' is not defined +2025-03-10 15:30:10,595 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,595 - ERROR - Error in episode 6937: name 'args' is not defined +2025-03-10 15:30:10,597 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,598 - ERROR - Error in episode 6938: name 'args' is not defined +2025-03-10 15:30:10,600 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,600 - ERROR - Error in episode 6939: name 'args' is not defined +2025-03-10 15:30:10,603 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,603 - ERROR - Error in episode 6940: name 'args' is not defined +2025-03-10 15:30:10,606 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,606 - ERROR - Error in episode 6941: name 'args' is not defined +2025-03-10 15:30:10,609 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,609 - ERROR - Error in episode 6942: name 'args' is not defined +2025-03-10 15:30:10,612 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,612 - ERROR - Error in episode 6943: name 'args' is not defined +2025-03-10 15:30:10,615 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,615 - ERROR - Error in episode 6944: name 'args' is not defined +2025-03-10 15:30:10,618 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,618 - ERROR - Error in episode 6945: name 'args' is not defined +2025-03-10 15:30:10,621 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,621 - ERROR - Error in episode 6946: name 'args' is not defined +2025-03-10 15:30:10,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,623 - ERROR - Error in episode 6947: name 'args' is not defined +2025-03-10 15:30:10,626 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,626 - ERROR - Error in episode 6948: name 'args' is not defined +2025-03-10 15:30:10,628 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,629 - ERROR - Error in episode 6949: name 'args' is not defined +2025-03-10 15:30:10,631 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,632 - ERROR - Error in episode 6950: name 'args' is not defined +2025-03-10 15:30:10,635 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,635 - ERROR - Error in episode 6951: name 'args' is not defined +2025-03-10 15:30:10,638 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,638 - ERROR - Error in episode 6952: name 'args' is not defined +2025-03-10 15:30:10,641 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,641 - ERROR - Error in episode 6953: name 'args' is not defined +2025-03-10 15:30:10,644 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,644 - ERROR - Error in episode 6954: name 'args' is not defined +2025-03-10 15:30:10,646 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,647 - ERROR - Error in episode 6955: name 'args' is not defined +2025-03-10 15:30:10,650 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,650 - ERROR - Error in episode 6956: name 'args' is not defined +2025-03-10 15:30:10,654 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,654 - ERROR - Error in episode 6957: name 'args' is not defined +2025-03-10 15:30:10,656 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,657 - ERROR - Error in episode 6958: name 'args' is not defined +2025-03-10 15:30:10,659 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,660 - ERROR - Error in episode 6959: name 'args' is not defined +2025-03-10 15:30:10,662 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,662 - ERROR - Error in episode 6960: name 'args' is not defined +2025-03-10 15:30:10,665 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,665 - ERROR - Error in episode 6961: name 'args' is not defined +2025-03-10 15:30:10,668 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,668 - ERROR - Error in episode 6962: name 'args' is not defined +2025-03-10 15:30:10,671 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,671 - ERROR - Error in episode 6963: name 'args' is not defined +2025-03-10 15:30:10,674 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,674 - ERROR - Error in episode 6964: name 'args' is not defined +2025-03-10 15:30:10,677 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,678 - ERROR - Error in episode 6965: name 'args' is not defined +2025-03-10 15:30:10,680 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,680 - ERROR - Error in episode 6966: name 'args' is not defined +2025-03-10 15:30:10,682 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,683 - ERROR - Error in episode 6967: name 'args' is not defined +2025-03-10 15:30:10,686 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,686 - ERROR - Error in episode 6968: name 'args' is not defined +2025-03-10 15:30:10,688 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,689 - ERROR - Error in episode 6969: name 'args' is not defined +2025-03-10 15:30:10,691 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,691 - ERROR - Error in episode 6970: name 'args' is not defined +2025-03-10 15:30:10,693 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,695 - ERROR - Error in episode 6971: name 'args' is not defined +2025-03-10 15:30:10,697 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,697 - ERROR - Error in episode 6972: name 'args' is not defined +2025-03-10 15:30:10,699 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,699 - ERROR - Error in episode 6973: name 'args' is not defined +2025-03-10 15:30:10,703 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,704 - ERROR - Error in episode 6974: name 'args' is not defined +2025-03-10 15:30:10,706 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,706 - ERROR - Error in episode 6975: name 'args' is not defined +2025-03-10 15:30:10,709 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,709 - ERROR - Error in episode 6976: name 'args' is not defined +2025-03-10 15:30:10,712 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,712 - ERROR - Error in episode 6977: name 'args' is not defined +2025-03-10 15:30:10,715 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,715 - ERROR - Error in episode 6978: name 'args' is not defined +2025-03-10 15:30:10,717 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,717 - ERROR - Error in episode 6979: name 'args' is not defined +2025-03-10 15:30:10,720 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,720 - ERROR - Error in episode 6980: name 'args' is not defined +2025-03-10 15:30:10,723 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,724 - ERROR - Error in episode 6981: name 'args' is not defined +2025-03-10 15:30:10,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,727 - ERROR - Error in episode 6982: name 'args' is not defined +2025-03-10 15:30:10,729 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,730 - ERROR - Error in episode 6983: name 'args' is not defined +2025-03-10 15:30:10,732 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,732 - ERROR - Error in episode 6984: name 'args' is not defined +2025-03-10 15:30:10,735 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,735 - ERROR - Error in episode 6985: name 'args' is not defined +2025-03-10 15:30:10,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,739 - ERROR - Error in episode 6986: name 'args' is not defined +2025-03-10 15:30:10,742 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,742 - ERROR - Error in episode 6987: name 'args' is not defined +2025-03-10 15:30:10,745 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,746 - ERROR - Error in episode 6988: name 'args' is not defined +2025-03-10 15:30:10,748 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,749 - ERROR - Error in episode 6989: name 'args' is not defined +2025-03-10 15:30:10,751 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,752 - ERROR - Error in episode 6990: name 'args' is not defined +2025-03-10 15:30:10,754 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,755 - ERROR - Error in episode 6991: name 'args' is not defined +2025-03-10 15:30:10,757 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,757 - ERROR - Error in episode 6992: name 'args' is not defined +2025-03-10 15:30:10,759 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,760 - ERROR - Error in episode 6993: name 'args' is not defined +2025-03-10 15:30:10,762 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,763 - ERROR - Error in episode 6994: name 'args' is not defined +2025-03-10 15:30:10,765 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,765 - ERROR - Error in episode 6995: name 'args' is not defined +2025-03-10 15:30:10,769 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,770 - ERROR - Error in episode 6996: name 'args' is not defined +2025-03-10 15:30:10,772 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,772 - ERROR - Error in episode 6997: name 'args' is not defined +2025-03-10 15:30:10,775 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,775 - ERROR - Error in episode 6998: name 'args' is not defined +2025-03-10 15:30:10,778 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,778 - ERROR - Error in episode 6999: name 'args' is not defined +2025-03-10 15:30:10,781 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,781 - ERROR - Error in episode 7000: name 'args' is not defined +2025-03-10 15:30:10,783 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,784 - ERROR - Error in episode 7001: name 'args' is not defined +2025-03-10 15:30:10,786 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,786 - ERROR - Error in episode 7002: name 'args' is not defined +2025-03-10 15:30:10,790 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,790 - ERROR - Error in episode 7003: name 'args' is not defined +2025-03-10 15:30:10,793 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,793 - ERROR - Error in episode 7004: name 'args' is not defined +2025-03-10 15:30:10,795 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,796 - ERROR - Error in episode 7005: name 'args' is not defined +2025-03-10 15:30:10,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,799 - ERROR - Error in episode 7006: name 'args' is not defined +2025-03-10 15:30:10,801 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,802 - ERROR - Error in episode 7007: name 'args' is not defined +2025-03-10 15:30:10,804 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,804 - ERROR - Error in episode 7008: name 'args' is not defined +2025-03-10 15:30:10,807 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,807 - ERROR - Error in episode 7009: name 'args' is not defined +2025-03-10 15:30:10,811 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,811 - ERROR - Error in episode 7010: name 'args' is not defined +2025-03-10 15:30:10,813 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,814 - ERROR - Error in episode 7011: name 'args' is not defined +2025-03-10 15:30:10,816 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,816 - ERROR - Error in episode 7012: name 'args' is not defined +2025-03-10 15:30:10,820 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,820 - ERROR - Error in episode 7013: name 'args' is not defined +2025-03-10 15:30:10,823 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,823 - ERROR - Error in episode 7014: name 'args' is not defined +2025-03-10 15:30:10,826 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,827 - ERROR - Error in episode 7015: name 'args' is not defined +2025-03-10 15:30:10,829 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,830 - ERROR - Error in episode 7016: name 'args' is not defined +2025-03-10 15:30:10,832 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,832 - ERROR - Error in episode 7017: name 'args' is not defined +2025-03-10 15:30:10,835 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,835 - ERROR - Error in episode 7018: name 'args' is not defined +2025-03-10 15:30:10,838 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,838 - ERROR - Error in episode 7019: name 'args' is not defined +2025-03-10 15:30:10,841 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,841 - ERROR - Error in episode 7020: name 'args' is not defined +2025-03-10 15:30:10,844 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,845 - ERROR - Error in episode 7021: name 'args' is not defined +2025-03-10 15:30:10,847 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,848 - ERROR - Error in episode 7022: name 'args' is not defined +2025-03-10 15:30:10,850 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,851 - ERROR - Error in episode 7023: name 'args' is not defined +2025-03-10 15:30:10,854 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,854 - ERROR - Error in episode 7024: name 'args' is not defined +2025-03-10 15:30:10,856 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,857 - ERROR - Error in episode 7025: name 'args' is not defined +2025-03-10 15:30:10,860 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,860 - ERROR - Error in episode 7026: name 'args' is not defined +2025-03-10 15:30:10,863 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,863 - ERROR - Error in episode 7027: name 'args' is not defined +2025-03-10 15:30:10,865 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,866 - ERROR - Error in episode 7028: name 'args' is not defined +2025-03-10 15:30:10,869 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,869 - ERROR - Error in episode 7029: name 'args' is not defined +2025-03-10 15:30:10,872 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,872 - ERROR - Error in episode 7030: name 'args' is not defined +2025-03-10 15:30:10,875 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,875 - ERROR - Error in episode 7031: name 'args' is not defined +2025-03-10 15:30:10,878 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,878 - ERROR - Error in episode 7032: name 'args' is not defined +2025-03-10 15:30:10,881 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,881 - ERROR - Error in episode 7033: name 'args' is not defined +2025-03-10 15:30:10,884 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,884 - ERROR - Error in episode 7034: name 'args' is not defined +2025-03-10 15:30:10,887 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,887 - ERROR - Error in episode 7035: name 'args' is not defined +2025-03-10 15:30:10,889 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,890 - ERROR - Error in episode 7036: name 'args' is not defined +2025-03-10 15:30:10,892 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,892 - ERROR - Error in episode 7037: name 'args' is not defined +2025-03-10 15:30:10,895 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,895 - ERROR - Error in episode 7038: name 'args' is not defined +2025-03-10 15:30:10,898 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,898 - ERROR - Error in episode 7039: name 'args' is not defined +2025-03-10 15:30:10,902 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,902 - ERROR - Error in episode 7040: name 'args' is not defined +2025-03-10 15:30:10,904 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,905 - ERROR - Error in episode 7041: name 'args' is not defined +2025-03-10 15:30:10,908 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,908 - ERROR - Error in episode 7042: name 'args' is not defined +2025-03-10 15:30:10,911 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,911 - ERROR - Error in episode 7043: name 'args' is not defined +2025-03-10 15:30:10,914 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,914 - ERROR - Error in episode 7044: name 'args' is not defined +2025-03-10 15:30:10,916 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,916 - ERROR - Error in episode 7045: name 'args' is not defined +2025-03-10 15:30:10,919 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,920 - ERROR - Error in episode 7046: name 'args' is not defined +2025-03-10 15:30:10,922 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,922 - ERROR - Error in episode 7047: name 'args' is not defined +2025-03-10 15:30:10,924 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,925 - ERROR - Error in episode 7048: name 'args' is not defined +2025-03-10 15:30:10,927 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,928 - ERROR - Error in episode 7049: name 'args' is not defined +2025-03-10 15:30:10,931 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,931 - ERROR - Error in episode 7050: name 'args' is not defined +2025-03-10 15:30:10,933 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,934 - ERROR - Error in episode 7051: name 'args' is not defined +2025-03-10 15:30:10,937 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,937 - ERROR - Error in episode 7052: name 'args' is not defined +2025-03-10 15:30:10,939 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,940 - ERROR - Error in episode 7053: name 'args' is not defined +2025-03-10 15:30:10,942 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,942 - ERROR - Error in episode 7054: name 'args' is not defined +2025-03-10 15:30:10,945 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,945 - ERROR - Error in episode 7055: name 'args' is not defined +2025-03-10 15:30:10,948 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,948 - ERROR - Error in episode 7056: name 'args' is not defined +2025-03-10 15:30:10,951 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,951 - ERROR - Error in episode 7057: name 'args' is not defined +2025-03-10 15:30:10,953 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,953 - ERROR - Error in episode 7058: name 'args' is not defined +2025-03-10 15:30:10,956 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,956 - ERROR - Error in episode 7059: name 'args' is not defined +2025-03-10 15:30:10,959 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,959 - ERROR - Error in episode 7060: name 'args' is not defined +2025-03-10 15:30:10,962 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,962 - ERROR - Error in episode 7061: name 'args' is not defined +2025-03-10 15:30:10,965 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,966 - ERROR - Error in episode 7062: name 'args' is not defined +2025-03-10 15:30:10,969 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,969 - ERROR - Error in episode 7063: name 'args' is not defined +2025-03-10 15:30:10,972 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,972 - ERROR - Error in episode 7064: name 'args' is not defined +2025-03-10 15:30:10,974 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,975 - ERROR - Error in episode 7065: name 'args' is not defined +2025-03-10 15:30:10,977 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,978 - ERROR - Error in episode 7066: name 'args' is not defined +2025-03-10 15:30:10,980 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,981 - ERROR - Error in episode 7067: name 'args' is not defined +2025-03-10 15:30:10,983 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,983 - ERROR - Error in episode 7068: name 'args' is not defined +2025-03-10 15:30:10,986 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,986 - ERROR - Error in episode 7069: name 'args' is not defined +2025-03-10 15:30:10,989 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,989 - ERROR - Error in episode 7070: name 'args' is not defined +2025-03-10 15:30:10,992 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,992 - ERROR - Error in episode 7071: name 'args' is not defined +2025-03-10 15:30:10,995 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,995 - ERROR - Error in episode 7072: name 'args' is not defined +2025-03-10 15:30:10,998 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:10,998 - ERROR - Error in episode 7073: name 'args' is not defined +2025-03-10 15:30:11,001 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,001 - ERROR - Error in episode 7074: name 'args' is not defined +2025-03-10 15:30:11,004 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,005 - ERROR - Error in episode 7075: name 'args' is not defined +2025-03-10 15:30:11,007 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,007 - ERROR - Error in episode 7076: name 'args' is not defined +2025-03-10 15:30:11,010 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,010 - ERROR - Error in episode 7077: name 'args' is not defined +2025-03-10 15:30:11,013 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,013 - ERROR - Error in episode 7078: name 'args' is not defined +2025-03-10 15:30:11,016 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,016 - ERROR - Error in episode 7079: name 'args' is not defined +2025-03-10 15:30:11,019 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,019 - ERROR - Error in episode 7080: name 'args' is not defined +2025-03-10 15:30:11,022 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,022 - ERROR - Error in episode 7081: name 'args' is not defined +2025-03-10 15:30:11,024 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,025 - ERROR - Error in episode 7082: name 'args' is not defined +2025-03-10 15:30:11,027 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,028 - ERROR - Error in episode 7083: name 'args' is not defined +2025-03-10 15:30:11,030 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,030 - ERROR - Error in episode 7084: name 'args' is not defined +2025-03-10 15:30:11,032 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,033 - ERROR - Error in episode 7085: name 'args' is not defined +2025-03-10 15:30:11,036 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,036 - ERROR - Error in episode 7086: name 'args' is not defined +2025-03-10 15:30:11,038 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,039 - ERROR - Error in episode 7087: name 'args' is not defined +2025-03-10 15:30:11,041 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,041 - ERROR - Error in episode 7088: name 'args' is not defined +2025-03-10 15:30:11,044 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,045 - ERROR - Error in episode 7089: name 'args' is not defined +2025-03-10 15:30:11,047 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,047 - ERROR - Error in episode 7090: name 'args' is not defined +2025-03-10 15:30:11,050 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,051 - ERROR - Error in episode 7091: name 'args' is not defined +2025-03-10 15:30:11,053 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,054 - ERROR - Error in episode 7092: name 'args' is not defined +2025-03-10 15:30:11,056 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,057 - ERROR - Error in episode 7093: name 'args' is not defined +2025-03-10 15:30:11,059 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,059 - ERROR - Error in episode 7094: name 'args' is not defined +2025-03-10 15:30:11,062 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,062 - ERROR - Error in episode 7095: name 'args' is not defined +2025-03-10 15:30:11,065 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,065 - ERROR - Error in episode 7096: name 'args' is not defined +2025-03-10 15:30:11,067 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,068 - ERROR - Error in episode 7097: name 'args' is not defined +2025-03-10 15:30:11,070 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,070 - ERROR - Error in episode 7098: name 'args' is not defined +2025-03-10 15:30:11,074 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,074 - ERROR - Error in episode 7099: name 'args' is not defined +2025-03-10 15:30:11,077 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,077 - ERROR - Error in episode 7100: name 'args' is not defined +2025-03-10 15:30:11,080 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,080 - ERROR - Error in episode 7101: name 'args' is not defined +2025-03-10 15:30:11,082 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,082 - ERROR - Error in episode 7102: name 'args' is not defined +2025-03-10 15:30:11,085 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,086 - ERROR - Error in episode 7103: name 'args' is not defined +2025-03-10 15:30:11,088 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,089 - ERROR - Error in episode 7104: name 'args' is not defined +2025-03-10 15:30:11,091 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,091 - ERROR - Error in episode 7105: name 'args' is not defined +2025-03-10 15:30:11,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,095 - ERROR - Error in episode 7106: name 'args' is not defined +2025-03-10 15:30:11,099 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,099 - ERROR - Error in episode 7107: name 'args' is not defined +2025-03-10 15:30:11,102 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,102 - ERROR - Error in episode 7108: name 'args' is not defined +2025-03-10 15:30:11,105 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,105 - ERROR - Error in episode 7109: name 'args' is not defined +2025-03-10 15:30:11,107 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,108 - ERROR - Error in episode 7110: name 'args' is not defined +2025-03-10 15:30:11,110 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,111 - ERROR - Error in episode 7111: name 'args' is not defined +2025-03-10 15:30:11,113 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,113 - ERROR - Error in episode 7112: name 'args' is not defined +2025-03-10 15:30:11,117 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,117 - ERROR - Error in episode 7113: name 'args' is not defined +2025-03-10 15:30:11,120 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,121 - ERROR - Error in episode 7114: name 'args' is not defined +2025-03-10 15:30:11,123 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,124 - ERROR - Error in episode 7115: name 'args' is not defined +2025-03-10 15:30:11,126 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,127 - ERROR - Error in episode 7116: name 'args' is not defined +2025-03-10 15:30:11,129 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,129 - ERROR - Error in episode 7117: name 'args' is not defined +2025-03-10 15:30:11,131 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,132 - ERROR - Error in episode 7118: name 'args' is not defined +2025-03-10 15:30:11,135 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,135 - ERROR - Error in episode 7119: name 'args' is not defined +2025-03-10 15:30:11,138 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,138 - ERROR - Error in episode 7120: name 'args' is not defined +2025-03-10 15:30:11,140 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,140 - ERROR - Error in episode 7121: name 'args' is not defined +2025-03-10 15:30:11,143 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,143 - ERROR - Error in episode 7122: name 'args' is not defined +2025-03-10 15:30:11,146 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,146 - ERROR - Error in episode 7123: name 'args' is not defined +2025-03-10 15:30:11,149 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,149 - ERROR - Error in episode 7124: name 'args' is not defined +2025-03-10 15:30:11,152 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,153 - ERROR - Error in episode 7125: name 'args' is not defined +2025-03-10 15:30:11,155 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,155 - ERROR - Error in episode 7126: name 'args' is not defined +2025-03-10 15:30:11,158 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,158 - ERROR - Error in episode 7127: name 'args' is not defined +2025-03-10 15:30:11,162 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,162 - ERROR - Error in episode 7128: name 'args' is not defined +2025-03-10 15:30:11,164 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,165 - ERROR - Error in episode 7129: name 'args' is not defined +2025-03-10 15:30:11,167 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,167 - ERROR - Error in episode 7130: name 'args' is not defined +2025-03-10 15:30:11,170 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,171 - ERROR - Error in episode 7131: name 'args' is not defined +2025-03-10 15:30:11,173 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,173 - ERROR - Error in episode 7132: name 'args' is not defined +2025-03-10 15:30:11,176 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,176 - ERROR - Error in episode 7133: name 'args' is not defined +2025-03-10 15:30:11,178 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,179 - ERROR - Error in episode 7134: name 'args' is not defined +2025-03-10 15:30:11,182 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,182 - ERROR - Error in episode 7135: name 'args' is not defined +2025-03-10 15:30:11,184 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,185 - ERROR - Error in episode 7136: name 'args' is not defined +2025-03-10 15:30:11,188 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,188 - ERROR - Error in episode 7137: name 'args' is not defined +2025-03-10 15:30:11,190 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,190 - ERROR - Error in episode 7138: name 'args' is not defined +2025-03-10 15:30:11,194 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,194 - ERROR - Error in episode 7139: name 'args' is not defined +2025-03-10 15:30:11,198 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,198 - ERROR - Error in episode 7140: name 'args' is not defined +2025-03-10 15:30:11,201 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,201 - ERROR - Error in episode 7141: name 'args' is not defined +2025-03-10 15:30:11,204 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,204 - ERROR - Error in episode 7142: name 'args' is not defined +2025-03-10 15:30:11,207 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,207 - ERROR - Error in episode 7143: name 'args' is not defined +2025-03-10 15:30:11,210 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,210 - ERROR - Error in episode 7144: name 'args' is not defined +2025-03-10 15:30:11,214 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,215 - ERROR - Error in episode 7145: name 'args' is not defined +2025-03-10 15:30:11,219 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,219 - ERROR - Error in episode 7146: name 'args' is not defined +2025-03-10 15:30:11,222 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,222 - ERROR - Error in episode 7147: name 'args' is not defined +2025-03-10 15:30:11,225 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,225 - ERROR - Error in episode 7148: name 'args' is not defined +2025-03-10 15:30:11,228 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,228 - ERROR - Error in episode 7149: name 'args' is not defined +2025-03-10 15:30:11,231 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,231 - ERROR - Error in episode 7150: name 'args' is not defined +2025-03-10 15:30:11,234 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,234 - ERROR - Error in episode 7151: name 'args' is not defined +2025-03-10 15:30:11,238 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,238 - ERROR - Error in episode 7152: name 'args' is not defined +2025-03-10 15:30:11,241 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,241 - ERROR - Error in episode 7153: name 'args' is not defined +2025-03-10 15:30:11,243 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,244 - ERROR - Error in episode 7154: name 'args' is not defined +2025-03-10 15:30:11,246 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,246 - ERROR - Error in episode 7155: name 'args' is not defined +2025-03-10 15:30:11,248 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,249 - ERROR - Error in episode 7156: name 'args' is not defined +2025-03-10 15:30:11,252 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,252 - ERROR - Error in episode 7157: name 'args' is not defined +2025-03-10 15:30:11,254 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,255 - ERROR - Error in episode 7158: name 'args' is not defined +2025-03-10 15:30:11,257 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,257 - ERROR - Error in episode 7159: name 'args' is not defined +2025-03-10 15:30:11,260 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,261 - ERROR - Error in episode 7160: name 'args' is not defined +2025-03-10 15:30:11,263 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,263 - ERROR - Error in episode 7161: name 'args' is not defined +2025-03-10 15:30:11,266 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,266 - ERROR - Error in episode 7162: name 'args' is not defined +2025-03-10 15:30:11,269 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,269 - ERROR - Error in episode 7163: name 'args' is not defined +2025-03-10 15:30:11,271 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,272 - ERROR - Error in episode 7164: name 'args' is not defined +2025-03-10 15:30:11,274 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,275 - ERROR - Error in episode 7165: name 'args' is not defined +2025-03-10 15:30:11,278 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,278 - ERROR - Error in episode 7166: name 'args' is not defined +2025-03-10 15:30:11,280 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,281 - ERROR - Error in episode 7167: name 'args' is not defined +2025-03-10 15:30:11,283 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,284 - ERROR - Error in episode 7168: name 'args' is not defined +2025-03-10 15:30:11,287 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,287 - ERROR - Error in episode 7169: name 'args' is not defined +2025-03-10 15:30:11,290 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,290 - ERROR - Error in episode 7170: name 'args' is not defined +2025-03-10 15:30:11,292 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,293 - ERROR - Error in episode 7171: name 'args' is not defined +2025-03-10 15:30:11,296 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,296 - ERROR - Error in episode 7172: name 'args' is not defined +2025-03-10 15:30:11,299 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,299 - ERROR - Error in episode 7173: name 'args' is not defined +2025-03-10 15:30:11,302 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,302 - ERROR - Error in episode 7174: name 'args' is not defined +2025-03-10 15:30:11,305 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,305 - ERROR - Error in episode 7175: name 'args' is not defined +2025-03-10 15:30:11,307 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,307 - ERROR - Error in episode 7176: name 'args' is not defined +2025-03-10 15:30:11,310 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,311 - ERROR - Error in episode 7177: name 'args' is not defined +2025-03-10 15:30:11,314 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,314 - ERROR - Error in episode 7178: name 'args' is not defined +2025-03-10 15:30:11,317 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,317 - ERROR - Error in episode 7179: name 'args' is not defined +2025-03-10 15:30:11,320 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,320 - ERROR - Error in episode 7180: name 'args' is not defined +2025-03-10 15:30:11,323 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,323 - ERROR - Error in episode 7181: name 'args' is not defined +2025-03-10 15:30:11,326 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,326 - ERROR - Error in episode 7182: name 'args' is not defined +2025-03-10 15:30:11,329 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,329 - ERROR - Error in episode 7183: name 'args' is not defined +2025-03-10 15:30:11,331 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,332 - ERROR - Error in episode 7184: name 'args' is not defined +2025-03-10 15:30:11,334 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,335 - ERROR - Error in episode 7185: name 'args' is not defined +2025-03-10 15:30:11,337 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,337 - ERROR - Error in episode 7186: name 'args' is not defined +2025-03-10 15:30:11,340 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,340 - ERROR - Error in episode 7187: name 'args' is not defined +2025-03-10 15:30:11,343 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,343 - ERROR - Error in episode 7188: name 'args' is not defined +2025-03-10 15:30:11,346 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,346 - ERROR - Error in episode 7189: name 'args' is not defined +2025-03-10 15:30:11,348 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,349 - ERROR - Error in episode 7190: name 'args' is not defined +2025-03-10 15:30:11,351 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,351 - ERROR - Error in episode 7191: name 'args' is not defined +2025-03-10 15:30:11,355 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,355 - ERROR - Error in episode 7192: name 'args' is not defined +2025-03-10 15:30:11,357 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,358 - ERROR - Error in episode 7193: name 'args' is not defined +2025-03-10 15:30:11,360 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,361 - ERROR - Error in episode 7194: name 'args' is not defined +2025-03-10 15:30:11,363 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,363 - ERROR - Error in episode 7195: name 'args' is not defined +2025-03-10 15:30:11,366 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,367 - ERROR - Error in episode 7196: name 'args' is not defined +2025-03-10 15:30:11,369 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,369 - ERROR - Error in episode 7197: name 'args' is not defined +2025-03-10 15:30:11,372 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,372 - ERROR - Error in episode 7198: name 'args' is not defined +2025-03-10 15:30:11,374 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,376 - ERROR - Error in episode 7199: name 'args' is not defined +2025-03-10 15:30:11,378 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,378 - ERROR - Error in episode 7200: name 'args' is not defined +2025-03-10 15:30:11,381 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,381 - ERROR - Error in episode 7201: name 'args' is not defined +2025-03-10 15:30:11,383 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,384 - ERROR - Error in episode 7202: name 'args' is not defined +2025-03-10 15:30:11,386 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,386 - ERROR - Error in episode 7203: name 'args' is not defined +2025-03-10 15:30:11,389 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,390 - ERROR - Error in episode 7204: name 'args' is not defined +2025-03-10 15:30:11,392 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,392 - ERROR - Error in episode 7205: name 'args' is not defined +2025-03-10 15:30:11,395 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,395 - ERROR - Error in episode 7206: name 'args' is not defined +2025-03-10 15:30:11,399 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,399 - ERROR - Error in episode 7207: name 'args' is not defined +2025-03-10 15:30:11,402 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,402 - ERROR - Error in episode 7208: name 'args' is not defined +2025-03-10 15:30:11,404 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,405 - ERROR - Error in episode 7209: name 'args' is not defined +2025-03-10 15:30:11,407 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,408 - ERROR - Error in episode 7210: name 'args' is not defined +2025-03-10 15:30:11,410 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,411 - ERROR - Error in episode 7211: name 'args' is not defined +2025-03-10 15:30:11,413 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,414 - ERROR - Error in episode 7212: name 'args' is not defined +2025-03-10 15:30:11,416 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,417 - ERROR - Error in episode 7213: name 'args' is not defined +2025-03-10 15:30:11,419 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,419 - ERROR - Error in episode 7214: name 'args' is not defined +2025-03-10 15:30:11,422 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,422 - ERROR - Error in episode 7215: name 'args' is not defined +2025-03-10 15:30:11,425 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,425 - ERROR - Error in episode 7216: name 'args' is not defined +2025-03-10 15:30:11,428 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,428 - ERROR - Error in episode 7217: name 'args' is not defined +2025-03-10 15:30:11,430 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,432 - ERROR - Error in episode 7218: name 'args' is not defined +2025-03-10 15:30:11,434 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,435 - ERROR - Error in episode 7219: name 'args' is not defined +2025-03-10 15:30:11,437 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,437 - ERROR - Error in episode 7220: name 'args' is not defined +2025-03-10 15:30:11,440 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,441 - ERROR - Error in episode 7221: name 'args' is not defined +2025-03-10 15:30:11,443 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,443 - ERROR - Error in episode 7222: name 'args' is not defined +2025-03-10 15:30:11,446 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,446 - ERROR - Error in episode 7223: name 'args' is not defined +2025-03-10 15:30:11,449 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,449 - ERROR - Error in episode 7224: name 'args' is not defined +2025-03-10 15:30:11,452 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,452 - ERROR - Error in episode 7225: name 'args' is not defined +2025-03-10 15:30:11,455 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,455 - ERROR - Error in episode 7226: name 'args' is not defined +2025-03-10 15:30:11,458 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,458 - ERROR - Error in episode 7227: name 'args' is not defined +2025-03-10 15:30:11,460 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,461 - ERROR - Error in episode 7228: name 'args' is not defined +2025-03-10 15:30:11,463 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,463 - ERROR - Error in episode 7229: name 'args' is not defined +2025-03-10 15:30:11,466 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,467 - ERROR - Error in episode 7230: name 'args' is not defined +2025-03-10 15:30:11,469 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,469 - ERROR - Error in episode 7231: name 'args' is not defined +2025-03-10 15:30:11,472 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,472 - ERROR - Error in episode 7232: name 'args' is not defined +2025-03-10 15:30:11,475 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,475 - ERROR - Error in episode 7233: name 'args' is not defined +2025-03-10 15:30:11,478 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,479 - ERROR - Error in episode 7234: name 'args' is not defined +2025-03-10 15:30:11,481 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,481 - ERROR - Error in episode 7235: name 'args' is not defined +2025-03-10 15:30:11,484 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,484 - ERROR - Error in episode 7236: name 'args' is not defined +2025-03-10 15:30:11,486 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,487 - ERROR - Error in episode 7237: name 'args' is not defined +2025-03-10 15:30:11,490 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,490 - ERROR - Error in episode 7238: name 'args' is not defined +2025-03-10 15:30:11,492 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,493 - ERROR - Error in episode 7239: name 'args' is not defined +2025-03-10 15:30:11,495 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,495 - ERROR - Error in episode 7240: name 'args' is not defined +2025-03-10 15:30:11,498 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,498 - ERROR - Error in episode 7241: name 'args' is not defined +2025-03-10 15:30:11,501 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,501 - ERROR - Error in episode 7242: name 'args' is not defined +2025-03-10 15:30:11,504 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,504 - ERROR - Error in episode 7243: name 'args' is not defined +2025-03-10 15:30:11,507 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,507 - ERROR - Error in episode 7244: name 'args' is not defined +2025-03-10 15:30:11,510 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,510 - ERROR - Error in episode 7245: name 'args' is not defined +2025-03-10 15:30:11,512 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,513 - ERROR - Error in episode 7246: name 'args' is not defined +2025-03-10 15:30:11,515 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,516 - ERROR - Error in episode 7247: name 'args' is not defined +2025-03-10 15:30:11,518 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,518 - ERROR - Error in episode 7248: name 'args' is not defined +2025-03-10 15:30:11,521 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,522 - ERROR - Error in episode 7249: name 'args' is not defined +2025-03-10 15:30:11,524 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,525 - ERROR - Error in episode 7250: name 'args' is not defined +2025-03-10 15:30:11,527 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,528 - ERROR - Error in episode 7251: name 'args' is not defined +2025-03-10 15:30:11,530 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,530 - ERROR - Error in episode 7252: name 'args' is not defined +2025-03-10 15:30:11,534 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,534 - ERROR - Error in episode 7253: name 'args' is not defined +2025-03-10 15:30:11,536 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,536 - ERROR - Error in episode 7254: name 'args' is not defined +2025-03-10 15:30:11,539 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,539 - ERROR - Error in episode 7255: name 'args' is not defined +2025-03-10 15:30:11,542 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,542 - ERROR - Error in episode 7256: name 'args' is not defined +2025-03-10 15:30:11,545 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,546 - ERROR - Error in episode 7257: name 'args' is not defined +2025-03-10 15:30:11,549 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,549 - ERROR - Error in episode 7258: name 'args' is not defined +2025-03-10 15:30:11,551 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,551 - ERROR - Error in episode 7259: name 'args' is not defined +2025-03-10 15:30:11,555 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,555 - ERROR - Error in episode 7260: name 'args' is not defined +2025-03-10 15:30:11,558 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,558 - ERROR - Error in episode 7261: name 'args' is not defined +2025-03-10 15:30:11,560 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,561 - ERROR - Error in episode 7262: name 'args' is not defined +2025-03-10 15:30:11,563 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,563 - ERROR - Error in episode 7263: name 'args' is not defined +2025-03-10 15:30:11,566 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,566 - ERROR - Error in episode 7264: name 'args' is not defined +2025-03-10 15:30:11,569 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,569 - ERROR - Error in episode 7265: name 'args' is not defined +2025-03-10 15:30:11,571 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,572 - ERROR - Error in episode 7266: name 'args' is not defined +2025-03-10 15:30:11,574 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,574 - ERROR - Error in episode 7267: name 'args' is not defined +2025-03-10 15:30:11,577 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,577 - ERROR - Error in episode 7268: name 'args' is not defined +2025-03-10 15:30:11,580 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,580 - ERROR - Error in episode 7269: name 'args' is not defined +2025-03-10 15:30:11,583 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,583 - ERROR - Error in episode 7270: name 'args' is not defined +2025-03-10 15:30:11,586 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,586 - ERROR - Error in episode 7271: name 'args' is not defined +2025-03-10 15:30:11,589 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,589 - ERROR - Error in episode 7272: name 'args' is not defined +2025-03-10 15:30:11,592 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,592 - ERROR - Error in episode 7273: name 'args' is not defined +2025-03-10 15:30:11,595 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,596 - ERROR - Error in episode 7274: name 'args' is not defined +2025-03-10 15:30:11,598 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,598 - ERROR - Error in episode 7275: name 'args' is not defined +2025-03-10 15:30:11,601 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,601 - ERROR - Error in episode 7276: name 'args' is not defined +2025-03-10 15:30:11,604 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,604 - ERROR - Error in episode 7277: name 'args' is not defined +2025-03-10 15:30:11,606 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,606 - ERROR - Error in episode 7278: name 'args' is not defined +2025-03-10 15:30:11,610 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,610 - ERROR - Error in episode 7279: name 'args' is not defined +2025-03-10 15:30:11,612 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,613 - ERROR - Error in episode 7280: name 'args' is not defined +2025-03-10 15:30:11,615 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,616 - ERROR - Error in episode 7281: name 'args' is not defined +2025-03-10 15:30:11,619 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,619 - ERROR - Error in episode 7282: name 'args' is not defined +2025-03-10 15:30:11,621 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,622 - ERROR - Error in episode 7283: name 'args' is not defined +2025-03-10 15:30:11,624 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,625 - ERROR - Error in episode 7284: name 'args' is not defined +2025-03-10 15:30:11,628 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,628 - ERROR - Error in episode 7285: name 'args' is not defined +2025-03-10 15:30:11,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,630 - ERROR - Error in episode 7286: name 'args' is not defined +2025-03-10 15:30:11,633 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,633 - ERROR - Error in episode 7287: name 'args' is not defined +2025-03-10 15:30:11,637 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,637 - ERROR - Error in episode 7288: name 'args' is not defined +2025-03-10 15:30:11,640 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,640 - ERROR - Error in episode 7289: name 'args' is not defined +2025-03-10 15:30:11,643 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,643 - ERROR - Error in episode 7290: name 'args' is not defined +2025-03-10 15:30:11,646 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,646 - ERROR - Error in episode 7291: name 'args' is not defined +2025-03-10 15:30:11,648 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,649 - ERROR - Error in episode 7292: name 'args' is not defined +2025-03-10 15:30:11,652 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,652 - ERROR - Error in episode 7293: name 'args' is not defined +2025-03-10 15:30:11,655 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,655 - ERROR - Error in episode 7294: name 'args' is not defined +2025-03-10 15:30:11,658 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,659 - ERROR - Error in episode 7295: name 'args' is not defined +2025-03-10 15:30:11,662 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,662 - ERROR - Error in episode 7296: name 'args' is not defined +2025-03-10 15:30:11,665 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,665 - ERROR - Error in episode 7297: name 'args' is not defined +2025-03-10 15:30:11,668 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,668 - ERROR - Error in episode 7298: name 'args' is not defined +2025-03-10 15:30:11,671 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,671 - ERROR - Error in episode 7299: name 'args' is not defined +2025-03-10 15:30:11,674 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,674 - ERROR - Error in episode 7300: name 'args' is not defined +2025-03-10 15:30:11,678 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,678 - ERROR - Error in episode 7301: name 'args' is not defined +2025-03-10 15:30:11,680 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,681 - ERROR - Error in episode 7302: name 'args' is not defined +2025-03-10 15:30:11,683 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,684 - ERROR - Error in episode 7303: name 'args' is not defined +2025-03-10 15:30:11,687 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,687 - ERROR - Error in episode 7304: name 'args' is not defined +2025-03-10 15:30:11,689 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,690 - ERROR - Error in episode 7305: name 'args' is not defined +2025-03-10 15:30:11,692 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,692 - ERROR - Error in episode 7306: name 'args' is not defined +2025-03-10 15:30:11,696 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,696 - ERROR - Error in episode 7307: name 'args' is not defined +2025-03-10 15:30:11,698 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,699 - ERROR - Error in episode 7308: name 'args' is not defined +2025-03-10 15:30:11,701 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,702 - ERROR - Error in episode 7309: name 'args' is not defined +2025-03-10 15:30:11,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,705 - ERROR - Error in episode 7310: name 'args' is not defined +2025-03-10 15:30:11,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,708 - ERROR - Error in episode 7311: name 'args' is not defined +2025-03-10 15:30:11,710 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,710 - ERROR - Error in episode 7312: name 'args' is not defined +2025-03-10 15:30:11,713 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,713 - ERROR - Error in episode 7313: name 'args' is not defined +2025-03-10 15:30:11,715 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,716 - ERROR - Error in episode 7314: name 'args' is not defined +2025-03-10 15:30:11,718 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,719 - ERROR - Error in episode 7315: name 'args' is not defined +2025-03-10 15:30:11,721 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,721 - ERROR - Error in episode 7316: name 'args' is not defined +2025-03-10 15:30:11,724 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,724 - ERROR - Error in episode 7317: name 'args' is not defined +2025-03-10 15:30:11,729 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,729 - ERROR - Error in episode 7318: name 'args' is not defined +2025-03-10 15:30:11,731 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,731 - ERROR - Error in episode 7319: name 'args' is not defined +2025-03-10 15:30:11,734 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,734 - ERROR - Error in episode 7320: name 'args' is not defined +2025-03-10 15:30:11,737 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,737 - ERROR - Error in episode 7321: name 'args' is not defined +2025-03-10 15:30:11,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,740 - ERROR - Error in episode 7322: name 'args' is not defined +2025-03-10 15:30:11,742 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,742 - ERROR - Error in episode 7323: name 'args' is not defined +2025-03-10 15:30:11,745 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,746 - ERROR - Error in episode 7324: name 'args' is not defined +2025-03-10 15:30:11,749 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,749 - ERROR - Error in episode 7325: name 'args' is not defined +2025-03-10 15:30:11,752 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,752 - ERROR - Error in episode 7326: name 'args' is not defined +2025-03-10 15:30:11,754 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,755 - ERROR - Error in episode 7327: name 'args' is not defined +2025-03-10 15:30:11,757 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,758 - ERROR - Error in episode 7328: name 'args' is not defined +2025-03-10 15:30:11,761 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,761 - ERROR - Error in episode 7329: name 'args' is not defined +2025-03-10 15:30:11,763 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,764 - ERROR - Error in episode 7330: name 'args' is not defined +2025-03-10 15:30:11,766 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,766 - ERROR - Error in episode 7331: name 'args' is not defined +2025-03-10 15:30:11,769 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,769 - ERROR - Error in episode 7332: name 'args' is not defined +2025-03-10 15:30:11,772 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,772 - ERROR - Error in episode 7333: name 'args' is not defined +2025-03-10 15:30:11,774 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,775 - ERROR - Error in episode 7334: name 'args' is not defined +2025-03-10 15:30:11,777 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,778 - ERROR - Error in episode 7335: name 'args' is not defined +2025-03-10 15:30:11,780 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,780 - ERROR - Error in episode 7336: name 'args' is not defined +2025-03-10 15:30:11,784 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,784 - ERROR - Error in episode 7337: name 'args' is not defined +2025-03-10 15:30:11,786 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,787 - ERROR - Error in episode 7338: name 'args' is not defined +2025-03-10 15:30:11,789 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,790 - ERROR - Error in episode 7339: name 'args' is not defined +2025-03-10 15:30:11,792 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,792 - ERROR - Error in episode 7340: name 'args' is not defined +2025-03-10 15:30:11,795 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,795 - ERROR - Error in episode 7341: name 'args' is not defined +2025-03-10 15:30:11,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,798 - ERROR - Error in episode 7342: name 'args' is not defined +2025-03-10 15:30:11,801 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,801 - ERROR - Error in episode 7343: name 'args' is not defined +2025-03-10 15:30:11,804 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,804 - ERROR - Error in episode 7344: name 'args' is not defined +2025-03-10 15:30:11,807 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,808 - ERROR - Error in episode 7345: name 'args' is not defined +2025-03-10 15:30:11,810 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,811 - ERROR - Error in episode 7346: name 'args' is not defined +2025-03-10 15:30:11,813 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,814 - ERROR - Error in episode 7347: name 'args' is not defined +2025-03-10 15:30:11,816 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,817 - ERROR - Error in episode 7348: name 'args' is not defined +2025-03-10 15:30:11,819 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,820 - ERROR - Error in episode 7349: name 'args' is not defined +2025-03-10 15:30:11,822 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,822 - ERROR - Error in episode 7350: name 'args' is not defined +2025-03-10 15:30:11,824 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,825 - ERROR - Error in episode 7351: name 'args' is not defined +2025-03-10 15:30:11,828 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,828 - ERROR - Error in episode 7352: name 'args' is not defined +2025-03-10 15:30:11,830 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,830 - ERROR - Error in episode 7353: name 'args' is not defined +2025-03-10 15:30:11,833 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,833 - ERROR - Error in episode 7354: name 'args' is not defined +2025-03-10 15:30:11,836 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,836 - ERROR - Error in episode 7355: name 'args' is not defined +2025-03-10 15:30:11,838 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,838 - ERROR - Error in episode 7356: name 'args' is not defined +2025-03-10 15:30:11,841 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,841 - ERROR - Error in episode 7357: name 'args' is not defined +2025-03-10 15:30:11,844 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,844 - ERROR - Error in episode 7358: name 'args' is not defined +2025-03-10 15:30:11,847 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,847 - ERROR - Error in episode 7359: name 'args' is not defined +2025-03-10 15:30:11,849 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,851 - ERROR - Error in episode 7360: name 'args' is not defined +2025-03-10 15:30:11,853 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,853 - ERROR - Error in episode 7361: name 'args' is not defined +2025-03-10 15:30:11,856 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,856 - ERROR - Error in episode 7362: name 'args' is not defined +2025-03-10 15:30:11,858 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,859 - ERROR - Error in episode 7363: name 'args' is not defined +2025-03-10 15:30:11,861 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,861 - ERROR - Error in episode 7364: name 'args' is not defined +2025-03-10 15:30:11,864 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,864 - ERROR - Error in episode 7365: name 'args' is not defined +2025-03-10 15:30:11,866 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,867 - ERROR - Error in episode 7366: name 'args' is not defined +2025-03-10 15:30:11,870 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,871 - ERROR - Error in episode 7367: name 'args' is not defined +2025-03-10 15:30:11,873 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,873 - ERROR - Error in episode 7368: name 'args' is not defined +2025-03-10 15:30:11,876 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,876 - ERROR - Error in episode 7369: name 'args' is not defined +2025-03-10 15:30:11,878 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,879 - ERROR - Error in episode 7370: name 'args' is not defined +2025-03-10 15:30:11,882 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,882 - ERROR - Error in episode 7371: name 'args' is not defined +2025-03-10 15:30:11,885 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,885 - ERROR - Error in episode 7372: name 'args' is not defined +2025-03-10 15:30:11,888 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,888 - ERROR - Error in episode 7373: name 'args' is not defined +2025-03-10 15:30:11,891 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,891 - ERROR - Error in episode 7374: name 'args' is not defined +2025-03-10 15:30:11,894 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,895 - ERROR - Error in episode 7375: name 'args' is not defined +2025-03-10 15:30:11,897 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,898 - ERROR - Error in episode 7376: name 'args' is not defined +2025-03-10 15:30:11,900 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,901 - ERROR - Error in episode 7377: name 'args' is not defined +2025-03-10 15:30:11,903 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,903 - ERROR - Error in episode 7378: name 'args' is not defined +2025-03-10 15:30:11,905 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,906 - ERROR - Error in episode 7379: name 'args' is not defined +2025-03-10 15:30:11,908 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,908 - ERROR - Error in episode 7380: name 'args' is not defined +2025-03-10 15:30:11,911 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,912 - ERROR - Error in episode 7381: name 'args' is not defined +2025-03-10 15:30:11,915 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,916 - ERROR - Error in episode 7382: name 'args' is not defined +2025-03-10 15:30:11,918 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,918 - ERROR - Error in episode 7383: name 'args' is not defined +2025-03-10 15:30:11,921 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,921 - ERROR - Error in episode 7384: name 'args' is not defined +2025-03-10 15:30:11,923 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,924 - ERROR - Error in episode 7385: name 'args' is not defined +2025-03-10 15:30:11,926 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,926 - ERROR - Error in episode 7386: name 'args' is not defined +2025-03-10 15:30:11,930 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,930 - ERROR - Error in episode 7387: name 'args' is not defined +2025-03-10 15:30:11,932 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,933 - ERROR - Error in episode 7388: name 'args' is not defined +2025-03-10 15:30:11,935 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,935 - ERROR - Error in episode 7389: name 'args' is not defined +2025-03-10 15:30:11,938 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,939 - ERROR - Error in episode 7390: name 'args' is not defined +2025-03-10 15:30:11,941 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,941 - ERROR - Error in episode 7391: name 'args' is not defined +2025-03-10 15:30:11,944 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,945 - ERROR - Error in episode 7392: name 'args' is not defined +2025-03-10 15:30:11,948 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,948 - ERROR - Error in episode 7393: name 'args' is not defined +2025-03-10 15:30:11,951 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,951 - ERROR - Error in episode 7394: name 'args' is not defined +2025-03-10 15:30:11,954 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,954 - ERROR - Error in episode 7395: name 'args' is not defined +2025-03-10 15:30:11,957 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,957 - ERROR - Error in episode 7396: name 'args' is not defined +2025-03-10 15:30:11,959 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,960 - ERROR - Error in episode 7397: name 'args' is not defined +2025-03-10 15:30:11,963 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,963 - ERROR - Error in episode 7398: name 'args' is not defined +2025-03-10 15:30:11,966 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,966 - ERROR - Error in episode 7399: name 'args' is not defined +2025-03-10 15:30:11,969 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,969 - ERROR - Error in episode 7400: name 'args' is not defined +2025-03-10 15:30:11,972 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,972 - ERROR - Error in episode 7401: name 'args' is not defined +2025-03-10 15:30:11,975 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,975 - ERROR - Error in episode 7402: name 'args' is not defined +2025-03-10 15:30:11,978 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,978 - ERROR - Error in episode 7403: name 'args' is not defined +2025-03-10 15:30:11,981 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,981 - ERROR - Error in episode 7404: name 'args' is not defined +2025-03-10 15:30:11,983 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,983 - ERROR - Error in episode 7405: name 'args' is not defined +2025-03-10 15:30:11,986 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,986 - ERROR - Error in episode 7406: name 'args' is not defined +2025-03-10 15:30:11,989 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,989 - ERROR - Error in episode 7407: name 'args' is not defined +2025-03-10 15:30:11,991 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,992 - ERROR - Error in episode 7408: name 'args' is not defined +2025-03-10 15:30:11,995 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,995 - ERROR - Error in episode 7409: name 'args' is not defined +2025-03-10 15:30:11,998 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:11,998 - ERROR - Error in episode 7410: name 'args' is not defined +2025-03-10 15:30:12,000 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,001 - ERROR - Error in episode 7411: name 'args' is not defined +2025-03-10 15:30:12,004 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,005 - ERROR - Error in episode 7412: name 'args' is not defined +2025-03-10 15:30:12,007 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,009 - ERROR - Error in episode 7413: name 'args' is not defined +2025-03-10 15:30:12,011 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,012 - ERROR - Error in episode 7414: name 'args' is not defined +2025-03-10 15:30:12,014 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,015 - ERROR - Error in episode 7415: name 'args' is not defined +2025-03-10 15:30:12,017 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,017 - ERROR - Error in episode 7416: name 'args' is not defined +2025-03-10 15:30:12,020 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,020 - ERROR - Error in episode 7417: name 'args' is not defined +2025-03-10 15:30:12,022 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,023 - ERROR - Error in episode 7418: name 'args' is not defined +2025-03-10 15:30:12,025 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,025 - ERROR - Error in episode 7419: name 'args' is not defined +2025-03-10 15:30:12,028 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,028 - ERROR - Error in episode 7420: name 'args' is not defined +2025-03-10 15:30:12,031 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,031 - ERROR - Error in episode 7421: name 'args' is not defined +2025-03-10 15:30:12,034 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,034 - ERROR - Error in episode 7422: name 'args' is not defined +2025-03-10 15:30:12,037 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,038 - ERROR - Error in episode 7423: name 'args' is not defined +2025-03-10 15:30:12,040 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,040 - ERROR - Error in episode 7424: name 'args' is not defined +2025-03-10 15:30:12,043 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,044 - ERROR - Error in episode 7425: name 'args' is not defined +2025-03-10 15:30:12,046 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,047 - ERROR - Error in episode 7426: name 'args' is not defined +2025-03-10 15:30:12,050 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,050 - ERROR - Error in episode 7427: name 'args' is not defined +2025-03-10 15:30:12,053 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,053 - ERROR - Error in episode 7428: name 'args' is not defined +2025-03-10 15:30:12,055 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,056 - ERROR - Error in episode 7429: name 'args' is not defined +2025-03-10 15:30:12,058 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,058 - ERROR - Error in episode 7430: name 'args' is not defined +2025-03-10 15:30:12,061 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,061 - ERROR - Error in episode 7431: name 'args' is not defined +2025-03-10 15:30:12,063 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,064 - ERROR - Error in episode 7432: name 'args' is not defined +2025-03-10 15:30:12,066 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,067 - ERROR - Error in episode 7433: name 'args' is not defined +2025-03-10 15:30:12,069 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,070 - ERROR - Error in episode 7434: name 'args' is not defined +2025-03-10 15:30:12,072 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,073 - ERROR - Error in episode 7435: name 'args' is not defined +2025-03-10 15:30:12,076 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,076 - ERROR - Error in episode 7436: name 'args' is not defined +2025-03-10 15:30:12,079 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,079 - ERROR - Error in episode 7437: name 'args' is not defined +2025-03-10 15:30:12,082 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,082 - ERROR - Error in episode 7438: name 'args' is not defined +2025-03-10 15:30:12,085 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,085 - ERROR - Error in episode 7439: name 'args' is not defined +2025-03-10 15:30:12,088 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,089 - ERROR - Error in episode 7440: name 'args' is not defined +2025-03-10 15:30:12,092 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,092 - ERROR - Error in episode 7441: name 'args' is not defined +2025-03-10 15:30:12,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,095 - ERROR - Error in episode 7442: name 'args' is not defined +2025-03-10 15:30:12,098 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,098 - ERROR - Error in episode 7443: name 'args' is not defined +2025-03-10 15:30:12,100 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,101 - ERROR - Error in episode 7444: name 'args' is not defined +2025-03-10 15:30:12,104 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,104 - ERROR - Error in episode 7445: name 'args' is not defined +2025-03-10 15:30:12,106 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,107 - ERROR - Error in episode 7446: name 'args' is not defined +2025-03-10 15:30:12,110 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,110 - ERROR - Error in episode 7447: name 'args' is not defined +2025-03-10 15:30:12,113 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,113 - ERROR - Error in episode 7448: name 'args' is not defined +2025-03-10 15:30:12,116 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,116 - ERROR - Error in episode 7449: name 'args' is not defined +2025-03-10 15:30:12,119 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,119 - ERROR - Error in episode 7450: name 'args' is not defined +2025-03-10 15:30:12,122 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,123 - ERROR - Error in episode 7451: name 'args' is not defined +2025-03-10 15:30:12,125 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,126 - ERROR - Error in episode 7452: name 'args' is not defined +2025-03-10 15:30:12,129 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,129 - ERROR - Error in episode 7453: name 'args' is not defined +2025-03-10 15:30:12,132 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,132 - ERROR - Error in episode 7454: name 'args' is not defined +2025-03-10 15:30:12,136 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,136 - ERROR - Error in episode 7455: name 'args' is not defined +2025-03-10 15:30:12,138 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,138 - ERROR - Error in episode 7456: name 'args' is not defined +2025-03-10 15:30:12,141 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,141 - ERROR - Error in episode 7457: name 'args' is not defined +2025-03-10 15:30:12,146 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,146 - ERROR - Error in episode 7458: name 'args' is not defined +2025-03-10 15:30:12,149 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,149 - ERROR - Error in episode 7459: name 'args' is not defined +2025-03-10 15:30:12,151 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,152 - ERROR - Error in episode 7460: name 'args' is not defined +2025-03-10 15:30:12,155 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,155 - ERROR - Error in episode 7461: name 'args' is not defined +2025-03-10 15:30:12,157 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,158 - ERROR - Error in episode 7462: name 'args' is not defined +2025-03-10 15:30:12,160 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,161 - ERROR - Error in episode 7463: name 'args' is not defined +2025-03-10 15:30:12,163 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,163 - ERROR - Error in episode 7464: name 'args' is not defined +2025-03-10 15:30:12,166 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,166 - ERROR - Error in episode 7465: name 'args' is not defined +2025-03-10 15:30:12,168 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,169 - ERROR - Error in episode 7466: name 'args' is not defined +2025-03-10 15:30:12,172 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,172 - ERROR - Error in episode 7467: name 'args' is not defined +2025-03-10 15:30:12,175 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,175 - ERROR - Error in episode 7468: name 'args' is not defined +2025-03-10 15:30:12,178 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,179 - ERROR - Error in episode 7469: name 'args' is not defined +2025-03-10 15:30:12,181 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,181 - ERROR - Error in episode 7470: name 'args' is not defined +2025-03-10 15:30:12,184 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,185 - ERROR - Error in episode 7471: name 'args' is not defined +2025-03-10 15:30:12,187 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,188 - ERROR - Error in episode 7472: name 'args' is not defined +2025-03-10 15:30:12,190 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,191 - ERROR - Error in episode 7473: name 'args' is not defined +2025-03-10 15:30:12,194 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,194 - ERROR - Error in episode 7474: name 'args' is not defined +2025-03-10 15:30:12,197 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,197 - ERROR - Error in episode 7475: name 'args' is not defined +2025-03-10 15:30:12,200 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,200 - ERROR - Error in episode 7476: name 'args' is not defined +2025-03-10 15:30:12,203 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,203 - ERROR - Error in episode 7477: name 'args' is not defined +2025-03-10 15:30:12,207 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,207 - ERROR - Error in episode 7478: name 'args' is not defined +2025-03-10 15:30:12,209 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,210 - ERROR - Error in episode 7479: name 'args' is not defined +2025-03-10 15:30:12,213 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,214 - ERROR - Error in episode 7480: name 'args' is not defined +2025-03-10 15:30:12,216 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,217 - ERROR - Error in episode 7481: name 'args' is not defined +2025-03-10 15:30:12,219 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,220 - ERROR - Error in episode 7482: name 'args' is not defined +2025-03-10 15:30:12,222 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,223 - ERROR - Error in episode 7483: name 'args' is not defined +2025-03-10 15:30:12,225 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,225 - ERROR - Error in episode 7484: name 'args' is not defined +2025-03-10 15:30:12,228 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,228 - ERROR - Error in episode 7485: name 'args' is not defined +2025-03-10 15:30:12,231 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,231 - ERROR - Error in episode 7486: name 'args' is not defined +2025-03-10 15:30:12,233 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,233 - ERROR - Error in episode 7487: name 'args' is not defined +2025-03-10 15:30:12,237 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,238 - ERROR - Error in episode 7488: name 'args' is not defined +2025-03-10 15:30:12,240 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,240 - ERROR - Error in episode 7489: name 'args' is not defined +2025-03-10 15:30:12,243 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,243 - ERROR - Error in episode 7490: name 'args' is not defined +2025-03-10 15:30:12,246 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,246 - ERROR - Error in episode 7491: name 'args' is not defined +2025-03-10 15:30:12,249 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,249 - ERROR - Error in episode 7492: name 'args' is not defined +2025-03-10 15:30:12,252 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,252 - ERROR - Error in episode 7493: name 'args' is not defined +2025-03-10 15:30:12,256 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,257 - ERROR - Error in episode 7494: name 'args' is not defined +2025-03-10 15:30:12,259 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,260 - ERROR - Error in episode 7495: name 'args' is not defined +2025-03-10 15:30:12,262 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,263 - ERROR - Error in episode 7496: name 'args' is not defined +2025-03-10 15:30:12,266 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,266 - ERROR - Error in episode 7497: name 'args' is not defined +2025-03-10 15:30:12,269 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,269 - ERROR - Error in episode 7498: name 'args' is not defined +2025-03-10 15:30:12,272 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,272 - ERROR - Error in episode 7499: name 'args' is not defined +2025-03-10 15:30:12,274 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,275 - ERROR - Error in episode 7500: name 'args' is not defined +2025-03-10 15:30:12,277 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,277 - ERROR - Error in episode 7501: name 'args' is not defined +2025-03-10 15:30:12,280 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,280 - ERROR - Error in episode 7502: name 'args' is not defined +2025-03-10 15:30:12,283 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,284 - ERROR - Error in episode 7503: name 'args' is not defined +2025-03-10 15:30:12,286 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,287 - ERROR - Error in episode 7504: name 'args' is not defined +2025-03-10 15:30:12,289 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,289 - ERROR - Error in episode 7505: name 'args' is not defined +2025-03-10 15:30:12,292 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,292 - ERROR - Error in episode 7506: name 'args' is not defined +2025-03-10 15:30:12,295 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,296 - ERROR - Error in episode 7507: name 'args' is not defined +2025-03-10 15:30:12,298 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,298 - ERROR - Error in episode 7508: name 'args' is not defined +2025-03-10 15:30:12,301 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,302 - ERROR - Error in episode 7509: name 'args' is not defined +2025-03-10 15:30:12,305 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,305 - ERROR - Error in episode 7510: name 'args' is not defined +2025-03-10 15:30:12,306 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,307 - ERROR - Error in episode 7511: name 'args' is not defined +2025-03-10 15:30:12,309 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,309 - ERROR - Error in episode 7512: name 'args' is not defined +2025-03-10 15:30:12,313 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,313 - ERROR - Error in episode 7513: name 'args' is not defined +2025-03-10 15:30:12,316 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,316 - ERROR - Error in episode 7514: name 'args' is not defined +2025-03-10 15:30:12,319 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,320 - ERROR - Error in episode 7515: name 'args' is not defined +2025-03-10 15:30:12,322 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,323 - ERROR - Error in episode 7516: name 'args' is not defined +2025-03-10 15:30:12,325 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,325 - ERROR - Error in episode 7517: name 'args' is not defined +2025-03-10 15:30:12,328 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,329 - ERROR - Error in episode 7518: name 'args' is not defined +2025-03-10 15:30:12,331 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,332 - ERROR - Error in episode 7519: name 'args' is not defined +2025-03-10 15:30:12,334 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,334 - ERROR - Error in episode 7520: name 'args' is not defined +2025-03-10 15:30:12,337 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,337 - ERROR - Error in episode 7521: name 'args' is not defined +2025-03-10 15:30:12,339 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,340 - ERROR - Error in episode 7522: name 'args' is not defined +2025-03-10 15:30:12,343 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,344 - ERROR - Error in episode 7523: name 'args' is not defined +2025-03-10 15:30:12,347 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,347 - ERROR - Error in episode 7524: name 'args' is not defined +2025-03-10 15:30:12,349 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,349 - ERROR - Error in episode 7525: name 'args' is not defined +2025-03-10 15:30:12,352 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,352 - ERROR - Error in episode 7526: name 'args' is not defined +2025-03-10 15:30:12,354 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,355 - ERROR - Error in episode 7527: name 'args' is not defined +2025-03-10 15:30:12,357 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,357 - ERROR - Error in episode 7528: name 'args' is not defined +2025-03-10 15:30:12,361 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,361 - ERROR - Error in episode 7529: name 'args' is not defined +2025-03-10 15:30:12,363 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,364 - ERROR - Error in episode 7530: name 'args' is not defined +2025-03-10 15:30:12,366 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,366 - ERROR - Error in episode 7531: name 'args' is not defined +2025-03-10 15:30:12,369 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,370 - ERROR - Error in episode 7532: name 'args' is not defined +2025-03-10 15:30:12,372 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,372 - ERROR - Error in episode 7533: name 'args' is not defined +2025-03-10 15:30:12,374 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,375 - ERROR - Error in episode 7534: name 'args' is not defined +2025-03-10 15:30:12,377 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,377 - ERROR - Error in episode 7535: name 'args' is not defined +2025-03-10 15:30:12,381 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,381 - ERROR - Error in episode 7536: name 'args' is not defined +2025-03-10 15:30:12,384 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,384 - ERROR - Error in episode 7537: name 'args' is not defined +2025-03-10 15:30:12,386 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,387 - ERROR - Error in episode 7538: name 'args' is not defined +2025-03-10 15:30:12,389 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,389 - ERROR - Error in episode 7539: name 'args' is not defined +2025-03-10 15:30:12,392 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,392 - ERROR - Error in episode 7540: name 'args' is not defined +2025-03-10 15:30:12,394 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,395 - ERROR - Error in episode 7541: name 'args' is not defined +2025-03-10 15:30:12,397 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,397 - ERROR - Error in episode 7542: name 'args' is not defined +2025-03-10 15:30:12,400 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,401 - ERROR - Error in episode 7543: name 'args' is not defined +2025-03-10 15:30:12,403 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,403 - ERROR - Error in episode 7544: name 'args' is not defined +2025-03-10 15:30:12,406 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,406 - ERROR - Error in episode 7545: name 'args' is not defined +2025-03-10 15:30:12,409 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,410 - ERROR - Error in episode 7546: name 'args' is not defined +2025-03-10 15:30:12,413 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,413 - ERROR - Error in episode 7547: name 'args' is not defined +2025-03-10 15:30:12,416 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,416 - ERROR - Error in episode 7548: name 'args' is not defined +2025-03-10 15:30:12,419 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,419 - ERROR - Error in episode 7549: name 'args' is not defined +2025-03-10 15:30:12,422 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,423 - ERROR - Error in episode 7550: name 'args' is not defined +2025-03-10 15:30:12,425 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,425 - ERROR - Error in episode 7551: name 'args' is not defined +2025-03-10 15:30:12,428 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,428 - ERROR - Error in episode 7552: name 'args' is not defined +2025-03-10 15:30:12,431 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,431 - ERROR - Error in episode 7553: name 'args' is not defined +2025-03-10 15:30:12,433 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,434 - ERROR - Error in episode 7554: name 'args' is not defined +2025-03-10 15:30:12,436 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,436 - ERROR - Error in episode 7555: name 'args' is not defined +2025-03-10 15:30:12,439 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,440 - ERROR - Error in episode 7556: name 'args' is not defined +2025-03-10 15:30:12,443 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,443 - ERROR - Error in episode 7557: name 'args' is not defined +2025-03-10 15:30:12,446 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,446 - ERROR - Error in episode 7558: name 'args' is not defined +2025-03-10 15:30:12,449 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,449 - ERROR - Error in episode 7559: name 'args' is not defined +2025-03-10 15:30:12,451 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,452 - ERROR - Error in episode 7560: name 'args' is not defined +2025-03-10 15:30:12,454 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,455 - ERROR - Error in episode 7561: name 'args' is not defined +2025-03-10 15:30:12,457 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,457 - ERROR - Error in episode 7562: name 'args' is not defined +2025-03-10 15:30:12,460 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,460 - ERROR - Error in episode 7563: name 'args' is not defined +2025-03-10 15:30:12,464 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,464 - ERROR - Error in episode 7564: name 'args' is not defined +2025-03-10 15:30:12,467 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,467 - ERROR - Error in episode 7565: name 'args' is not defined +2025-03-10 15:30:12,470 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,470 - ERROR - Error in episode 7566: name 'args' is not defined +2025-03-10 15:30:12,473 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,473 - ERROR - Error in episode 7567: name 'args' is not defined +2025-03-10 15:30:12,475 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,476 - ERROR - Error in episode 7568: name 'args' is not defined +2025-03-10 15:30:12,479 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,479 - ERROR - Error in episode 7569: name 'args' is not defined +2025-03-10 15:30:12,481 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,482 - ERROR - Error in episode 7570: name 'args' is not defined +2025-03-10 15:30:12,484 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,484 - ERROR - Error in episode 7571: name 'args' is not defined +2025-03-10 15:30:12,488 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,489 - ERROR - Error in episode 7572: name 'args' is not defined +2025-03-10 15:30:12,491 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,491 - ERROR - Error in episode 7573: name 'args' is not defined +2025-03-10 15:30:12,494 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,494 - ERROR - Error in episode 7574: name 'args' is not defined +2025-03-10 15:30:12,497 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,497 - ERROR - Error in episode 7575: name 'args' is not defined +2025-03-10 15:30:12,500 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,500 - ERROR - Error in episode 7576: name 'args' is not defined +2025-03-10 15:30:12,503 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,503 - ERROR - Error in episode 7577: name 'args' is not defined +2025-03-10 15:30:12,506 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,506 - ERROR - Error in episode 7578: name 'args' is not defined +2025-03-10 15:30:12,509 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,509 - ERROR - Error in episode 7579: name 'args' is not defined +2025-03-10 15:30:12,512 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,512 - ERROR - Error in episode 7580: name 'args' is not defined +2025-03-10 15:30:12,515 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,515 - ERROR - Error in episode 7581: name 'args' is not defined +2025-03-10 15:30:12,518 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,518 - ERROR - Error in episode 7582: name 'args' is not defined +2025-03-10 15:30:12,521 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,521 - ERROR - Error in episode 7583: name 'args' is not defined +2025-03-10 15:30:12,524 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,524 - ERROR - Error in episode 7584: name 'args' is not defined +2025-03-10 15:30:12,526 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,527 - ERROR - Error in episode 7585: name 'args' is not defined +2025-03-10 15:30:12,530 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,530 - ERROR - Error in episode 7586: name 'args' is not defined +2025-03-10 15:30:12,532 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,533 - ERROR - Error in episode 7587: name 'args' is not defined +2025-03-10 15:30:12,535 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,535 - ERROR - Error in episode 7588: name 'args' is not defined +2025-03-10 15:30:12,539 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,539 - ERROR - Error in episode 7589: name 'args' is not defined +2025-03-10 15:30:12,542 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,542 - ERROR - Error in episode 7590: name 'args' is not defined +2025-03-10 15:30:12,545 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,545 - ERROR - Error in episode 7591: name 'args' is not defined +2025-03-10 15:30:12,547 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,548 - ERROR - Error in episode 7592: name 'args' is not defined +2025-03-10 15:30:12,550 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,550 - ERROR - Error in episode 7593: name 'args' is not defined +2025-03-10 15:30:12,554 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,554 - ERROR - Error in episode 7594: name 'args' is not defined +2025-03-10 15:30:12,556 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,557 - ERROR - Error in episode 7595: name 'args' is not defined +2025-03-10 15:30:12,559 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,559 - ERROR - Error in episode 7596: name 'args' is not defined +2025-03-10 15:30:12,562 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,563 - ERROR - Error in episode 7597: name 'args' is not defined +2025-03-10 15:30:12,565 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,565 - ERROR - Error in episode 7598: name 'args' is not defined +2025-03-10 15:30:12,568 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,568 - ERROR - Error in episode 7599: name 'args' is not defined +2025-03-10 15:30:12,571 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,571 - ERROR - Error in episode 7600: name 'args' is not defined +2025-03-10 15:30:12,574 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,574 - ERROR - Error in episode 7601: name 'args' is not defined +2025-03-10 15:30:12,577 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,577 - ERROR - Error in episode 7602: name 'args' is not defined +2025-03-10 15:30:12,580 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,581 - ERROR - Error in episode 7603: name 'args' is not defined +2025-03-10 15:30:12,583 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,584 - ERROR - Error in episode 7604: name 'args' is not defined +2025-03-10 15:30:12,587 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,587 - ERROR - Error in episode 7605: name 'args' is not defined +2025-03-10 15:30:12,589 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,589 - ERROR - Error in episode 7606: name 'args' is not defined +2025-03-10 15:30:12,592 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,592 - ERROR - Error in episode 7607: name 'args' is not defined +2025-03-10 15:30:12,595 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,595 - ERROR - Error in episode 7608: name 'args' is not defined +2025-03-10 15:30:12,599 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,599 - ERROR - Error in episode 7609: name 'args' is not defined +2025-03-10 15:30:12,601 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,602 - ERROR - Error in episode 7610: name 'args' is not defined +2025-03-10 15:30:12,605 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,605 - ERROR - Error in episode 7611: name 'args' is not defined +2025-03-10 15:30:12,607 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,607 - ERROR - Error in episode 7612: name 'args' is not defined +2025-03-10 15:30:12,610 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,611 - ERROR - Error in episode 7613: name 'args' is not defined +2025-03-10 15:30:12,613 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,614 - ERROR - Error in episode 7614: name 'args' is not defined +2025-03-10 15:30:12,616 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,617 - ERROR - Error in episode 7615: name 'args' is not defined +2025-03-10 15:30:12,619 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,619 - ERROR - Error in episode 7616: name 'args' is not defined +2025-03-10 15:30:12,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,624 - ERROR - Error in episode 7617: name 'args' is not defined +2025-03-10 15:30:12,626 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,627 - ERROR - Error in episode 7618: name 'args' is not defined +2025-03-10 15:30:12,629 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,630 - ERROR - Error in episode 7619: name 'args' is not defined +2025-03-10 15:30:12,633 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,633 - ERROR - Error in episode 7620: name 'args' is not defined +2025-03-10 15:30:12,635 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,636 - ERROR - Error in episode 7621: name 'args' is not defined +2025-03-10 15:30:12,638 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,639 - ERROR - Error in episode 7622: name 'args' is not defined +2025-03-10 15:30:12,642 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,642 - ERROR - Error in episode 7623: name 'args' is not defined +2025-03-10 15:30:12,644 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,646 - ERROR - Error in episode 7624: name 'args' is not defined +2025-03-10 15:30:12,648 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,648 - ERROR - Error in episode 7625: name 'args' is not defined +2025-03-10 15:30:12,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,651 - ERROR - Error in episode 7626: name 'args' is not defined +2025-03-10 15:30:12,654 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,654 - ERROR - Error in episode 7627: name 'args' is not defined +2025-03-10 15:30:12,658 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,658 - ERROR - Error in episode 7628: name 'args' is not defined +2025-03-10 15:30:12,661 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,661 - ERROR - Error in episode 7629: name 'args' is not defined +2025-03-10 15:30:12,664 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,664 - ERROR - Error in episode 7630: name 'args' is not defined +2025-03-10 15:30:12,667 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,667 - ERROR - Error in episode 7631: name 'args' is not defined +2025-03-10 15:30:12,670 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,670 - ERROR - Error in episode 7632: name 'args' is not defined +2025-03-10 15:30:12,673 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,674 - ERROR - Error in episode 7633: name 'args' is not defined +2025-03-10 15:30:12,677 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,677 - ERROR - Error in episode 7634: name 'args' is not defined +2025-03-10 15:30:12,680 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,680 - ERROR - Error in episode 7635: name 'args' is not defined +2025-03-10 15:30:12,683 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,683 - ERROR - Error in episode 7636: name 'args' is not defined +2025-03-10 15:30:12,687 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,687 - ERROR - Error in episode 7637: name 'args' is not defined +2025-03-10 15:30:12,690 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,690 - ERROR - Error in episode 7638: name 'args' is not defined +2025-03-10 15:30:12,693 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,693 - ERROR - Error in episode 7639: name 'args' is not defined +2025-03-10 15:30:12,696 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,696 - ERROR - Error in episode 7640: name 'args' is not defined +2025-03-10 15:30:12,698 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,699 - ERROR - Error in episode 7641: name 'args' is not defined +2025-03-10 15:30:12,701 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,701 - ERROR - Error in episode 7642: name 'args' is not defined +2025-03-10 15:30:12,705 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,705 - ERROR - Error in episode 7643: name 'args' is not defined +2025-03-10 15:30:12,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,708 - ERROR - Error in episode 7644: name 'args' is not defined +2025-03-10 15:30:12,710 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,710 - ERROR - Error in episode 7645: name 'args' is not defined +2025-03-10 15:30:12,713 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,714 - ERROR - Error in episode 7646: name 'args' is not defined +2025-03-10 15:30:12,716 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,717 - ERROR - Error in episode 7647: name 'args' is not defined +2025-03-10 15:30:12,719 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,720 - ERROR - Error in episode 7648: name 'args' is not defined +2025-03-10 15:30:12,722 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,723 - ERROR - Error in episode 7649: name 'args' is not defined +2025-03-10 15:30:12,726 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,726 - ERROR - Error in episode 7650: name 'args' is not defined +2025-03-10 15:30:12,729 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,729 - ERROR - Error in episode 7651: name 'args' is not defined +2025-03-10 15:30:12,732 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,732 - ERROR - Error in episode 7652: name 'args' is not defined +2025-03-10 15:30:12,735 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,735 - ERROR - Error in episode 7653: name 'args' is not defined +2025-03-10 15:30:12,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,739 - ERROR - Error in episode 7654: name 'args' is not defined +2025-03-10 15:30:12,741 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,742 - ERROR - Error in episode 7655: name 'args' is not defined +2025-03-10 15:30:12,744 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,744 - ERROR - Error in episode 7656: name 'args' is not defined +2025-03-10 15:30:12,747 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,748 - ERROR - Error in episode 7657: name 'args' is not defined +2025-03-10 15:30:12,750 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,751 - ERROR - Error in episode 7658: name 'args' is not defined +2025-03-10 15:30:12,754 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,754 - ERROR - Error in episode 7659: name 'args' is not defined +2025-03-10 15:30:12,756 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,757 - ERROR - Error in episode 7660: name 'args' is not defined +2025-03-10 15:30:12,759 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,760 - ERROR - Error in episode 7661: name 'args' is not defined +2025-03-10 15:30:12,762 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,763 - ERROR - Error in episode 7662: name 'args' is not defined +2025-03-10 15:30:12,766 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,766 - ERROR - Error in episode 7663: name 'args' is not defined +2025-03-10 15:30:12,768 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,769 - ERROR - Error in episode 7664: name 'args' is not defined +2025-03-10 15:30:12,772 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,773 - ERROR - Error in episode 7665: name 'args' is not defined +2025-03-10 15:30:12,775 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,776 - ERROR - Error in episode 7666: name 'args' is not defined +2025-03-10 15:30:12,779 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,779 - ERROR - Error in episode 7667: name 'args' is not defined +2025-03-10 15:30:12,781 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,782 - ERROR - Error in episode 7668: name 'args' is not defined +2025-03-10 15:30:12,785 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,785 - ERROR - Error in episode 7669: name 'args' is not defined +2025-03-10 15:30:12,788 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,788 - ERROR - Error in episode 7670: name 'args' is not defined +2025-03-10 15:30:12,791 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,791 - ERROR - Error in episode 7671: name 'args' is not defined +2025-03-10 15:30:12,793 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,794 - ERROR - Error in episode 7672: name 'args' is not defined +2025-03-10 15:30:12,797 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,797 - ERROR - Error in episode 7673: name 'args' is not defined +2025-03-10 15:30:12,799 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,800 - ERROR - Error in episode 7674: name 'args' is not defined +2025-03-10 15:30:12,802 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,803 - ERROR - Error in episode 7675: name 'args' is not defined +2025-03-10 15:30:12,805 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,806 - ERROR - Error in episode 7676: name 'args' is not defined +2025-03-10 15:30:12,808 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,809 - ERROR - Error in episode 7677: name 'args' is not defined +2025-03-10 15:30:12,811 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,811 - ERROR - Error in episode 7678: name 'args' is not defined +2025-03-10 15:30:12,814 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,814 - ERROR - Error in episode 7679: name 'args' is not defined +2025-03-10 15:30:12,817 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,817 - ERROR - Error in episode 7680: name 'args' is not defined +2025-03-10 15:30:12,820 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,820 - ERROR - Error in episode 7681: name 'args' is not defined +2025-03-10 15:30:12,823 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,823 - ERROR - Error in episode 7682: name 'args' is not defined +2025-03-10 15:30:12,825 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,826 - ERROR - Error in episode 7683: name 'args' is not defined +2025-03-10 15:30:12,828 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,829 - ERROR - Error in episode 7684: name 'args' is not defined +2025-03-10 15:30:12,831 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,831 - ERROR - Error in episode 7685: name 'args' is not defined +2025-03-10 15:30:12,834 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,834 - ERROR - Error in episode 7686: name 'args' is not defined +2025-03-10 15:30:12,838 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,838 - ERROR - Error in episode 7687: name 'args' is not defined +2025-03-10 15:30:12,840 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,841 - ERROR - Error in episode 7688: name 'args' is not defined +2025-03-10 15:30:12,843 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,843 - ERROR - Error in episode 7689: name 'args' is not defined +2025-03-10 15:30:12,846 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,846 - ERROR - Error in episode 7690: name 'args' is not defined +2025-03-10 15:30:12,849 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,849 - ERROR - Error in episode 7691: name 'args' is not defined +2025-03-10 15:30:12,851 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,852 - ERROR - Error in episode 7692: name 'args' is not defined +2025-03-10 15:30:12,855 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,856 - ERROR - Error in episode 7693: name 'args' is not defined +2025-03-10 15:30:12,858 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,859 - ERROR - Error in episode 7694: name 'args' is not defined +2025-03-10 15:30:12,862 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,862 - ERROR - Error in episode 7695: name 'args' is not defined +2025-03-10 15:30:12,864 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,864 - ERROR - Error in episode 7696: name 'args' is not defined +2025-03-10 15:30:12,866 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,867 - ERROR - Error in episode 7697: name 'args' is not defined +2025-03-10 15:30:12,870 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,870 - ERROR - Error in episode 7698: name 'args' is not defined +2025-03-10 15:30:12,872 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,873 - ERROR - Error in episode 7699: name 'args' is not defined +2025-03-10 15:30:12,875 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,875 - ERROR - Error in episode 7700: name 'args' is not defined +2025-03-10 15:30:12,878 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,879 - ERROR - Error in episode 7701: name 'args' is not defined +2025-03-10 15:30:12,881 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,882 - ERROR - Error in episode 7702: name 'args' is not defined +2025-03-10 15:30:12,884 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,885 - ERROR - Error in episode 7703: name 'args' is not defined +2025-03-10 15:30:12,888 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,888 - ERROR - Error in episode 7704: name 'args' is not defined +2025-03-10 15:30:12,891 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,891 - ERROR - Error in episode 7705: name 'args' is not defined +2025-03-10 15:30:12,893 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,894 - ERROR - Error in episode 7706: name 'args' is not defined +2025-03-10 15:30:12,897 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,897 - ERROR - Error in episode 7707: name 'args' is not defined +2025-03-10 15:30:12,899 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,900 - ERROR - Error in episode 7708: name 'args' is not defined +2025-03-10 15:30:12,903 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,903 - ERROR - Error in episode 7709: name 'args' is not defined +2025-03-10 15:30:12,906 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,906 - ERROR - Error in episode 7710: name 'args' is not defined +2025-03-10 15:30:12,909 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,909 - ERROR - Error in episode 7711: name 'args' is not defined +2025-03-10 15:30:12,912 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,912 - ERROR - Error in episode 7712: name 'args' is not defined +2025-03-10 15:30:12,914 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,915 - ERROR - Error in episode 7713: name 'args' is not defined +2025-03-10 15:30:12,917 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,917 - ERROR - Error in episode 7714: name 'args' is not defined +2025-03-10 15:30:12,921 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,921 - ERROR - Error in episode 7715: name 'args' is not defined +2025-03-10 15:30:12,923 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,924 - ERROR - Error in episode 7716: name 'args' is not defined +2025-03-10 15:30:12,926 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,926 - ERROR - Error in episode 7717: name 'args' is not defined +2025-03-10 15:30:12,929 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,929 - ERROR - Error in episode 7718: name 'args' is not defined +2025-03-10 15:30:12,932 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,932 - ERROR - Error in episode 7719: name 'args' is not defined +2025-03-10 15:30:12,935 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,935 - ERROR - Error in episode 7720: name 'args' is not defined +2025-03-10 15:30:12,938 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,939 - ERROR - Error in episode 7721: name 'args' is not defined +2025-03-10 15:30:12,941 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,942 - ERROR - Error in episode 7722: name 'args' is not defined +2025-03-10 15:30:12,944 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,945 - ERROR - Error in episode 7723: name 'args' is not defined +2025-03-10 15:30:12,947 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,948 - ERROR - Error in episode 7724: name 'args' is not defined +2025-03-10 15:30:12,950 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,950 - ERROR - Error in episode 7725: name 'args' is not defined +2025-03-10 15:30:12,954 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,954 - ERROR - Error in episode 7726: name 'args' is not defined +2025-03-10 15:30:12,957 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,957 - ERROR - Error in episode 7727: name 'args' is not defined +2025-03-10 15:30:12,959 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,959 - ERROR - Error in episode 7728: name 'args' is not defined +2025-03-10 15:30:12,962 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,963 - ERROR - Error in episode 7729: name 'args' is not defined +2025-03-10 15:30:12,965 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,965 - ERROR - Error in episode 7730: name 'args' is not defined +2025-03-10 15:30:12,967 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,968 - ERROR - Error in episode 7731: name 'args' is not defined +2025-03-10 15:30:12,970 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,971 - ERROR - Error in episode 7732: name 'args' is not defined +2025-03-10 15:30:12,973 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,973 - ERROR - Error in episode 7733: name 'args' is not defined +2025-03-10 15:30:12,975 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,976 - ERROR - Error in episode 7734: name 'args' is not defined +2025-03-10 15:30:12,979 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,979 - ERROR - Error in episode 7735: name 'args' is not defined +2025-03-10 15:30:12,981 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,982 - ERROR - Error in episode 7736: name 'args' is not defined +2025-03-10 15:30:12,985 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,985 - ERROR - Error in episode 7737: name 'args' is not defined +2025-03-10 15:30:12,988 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,988 - ERROR - Error in episode 7738: name 'args' is not defined +2025-03-10 15:30:12,990 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,991 - ERROR - Error in episode 7739: name 'args' is not defined +2025-03-10 15:30:12,993 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,993 - ERROR - Error in episode 7740: name 'args' is not defined +2025-03-10 15:30:12,996 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,996 - ERROR - Error in episode 7741: name 'args' is not defined +2025-03-10 15:30:12,999 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:12,999 - ERROR - Error in episode 7742: name 'args' is not defined +2025-03-10 15:30:13,001 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,002 - ERROR - Error in episode 7743: name 'args' is not defined +2025-03-10 15:30:13,005 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,005 - ERROR - Error in episode 7744: name 'args' is not defined +2025-03-10 15:30:13,007 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,008 - ERROR - Error in episode 7745: name 'args' is not defined +2025-03-10 15:30:13,010 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,011 - ERROR - Error in episode 7746: name 'args' is not defined +2025-03-10 15:30:13,013 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,014 - ERROR - Error in episode 7747: name 'args' is not defined +2025-03-10 15:30:13,017 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,017 - ERROR - Error in episode 7748: name 'args' is not defined +2025-03-10 15:30:13,020 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,020 - ERROR - Error in episode 7749: name 'args' is not defined +2025-03-10 15:30:13,023 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,023 - ERROR - Error in episode 7750: name 'args' is not defined +2025-03-10 15:30:13,026 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,027 - ERROR - Error in episode 7751: name 'args' is not defined +2025-03-10 15:30:13,030 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,030 - ERROR - Error in episode 7752: name 'args' is not defined +2025-03-10 15:30:13,032 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,032 - ERROR - Error in episode 7753: name 'args' is not defined +2025-03-10 15:30:13,035 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,035 - ERROR - Error in episode 7754: name 'args' is not defined +2025-03-10 15:30:13,038 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,038 - ERROR - Error in episode 7755: name 'args' is not defined +2025-03-10 15:30:13,041 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,041 - ERROR - Error in episode 7756: name 'args' is not defined +2025-03-10 15:30:13,044 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,044 - ERROR - Error in episode 7757: name 'args' is not defined +2025-03-10 15:30:13,047 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,047 - ERROR - Error in episode 7758: name 'args' is not defined +2025-03-10 15:30:13,050 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,050 - ERROR - Error in episode 7759: name 'args' is not defined +2025-03-10 15:30:13,053 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,053 - ERROR - Error in episode 7760: name 'args' is not defined +2025-03-10 15:30:13,055 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,055 - ERROR - Error in episode 7761: name 'args' is not defined +2025-03-10 15:30:13,058 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,058 - ERROR - Error in episode 7762: name 'args' is not defined +2025-03-10 15:30:13,062 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,062 - ERROR - Error in episode 7763: name 'args' is not defined +2025-03-10 15:30:13,065 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,065 - ERROR - Error in episode 7764: name 'args' is not defined +2025-03-10 15:30:13,067 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,068 - ERROR - Error in episode 7765: name 'args' is not defined +2025-03-10 15:30:13,070 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,071 - ERROR - Error in episode 7766: name 'args' is not defined +2025-03-10 15:30:13,073 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,073 - ERROR - Error in episode 7767: name 'args' is not defined +2025-03-10 15:30:13,076 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,076 - ERROR - Error in episode 7768: name 'args' is not defined +2025-03-10 15:30:13,078 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,079 - ERROR - Error in episode 7769: name 'args' is not defined +2025-03-10 15:30:13,081 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,081 - ERROR - Error in episode 7770: name 'args' is not defined +2025-03-10 15:30:13,084 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,084 - ERROR - Error in episode 7771: name 'args' is not defined +2025-03-10 15:30:13,086 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,087 - ERROR - Error in episode 7772: name 'args' is not defined +2025-03-10 15:30:13,089 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,090 - ERROR - Error in episode 7773: name 'args' is not defined +2025-03-10 15:30:13,092 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,092 - ERROR - Error in episode 7774: name 'args' is not defined +2025-03-10 15:30:13,096 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,096 - ERROR - Error in episode 7775: name 'args' is not defined +2025-03-10 15:30:13,098 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,099 - ERROR - Error in episode 7776: name 'args' is not defined +2025-03-10 15:30:13,101 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,101 - ERROR - Error in episode 7777: name 'args' is not defined +2025-03-10 15:30:13,103 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,104 - ERROR - Error in episode 7778: name 'args' is not defined +2025-03-10 15:30:13,106 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,106 - ERROR - Error in episode 7779: name 'args' is not defined +2025-03-10 15:30:13,109 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,109 - ERROR - Error in episode 7780: name 'args' is not defined +2025-03-10 15:30:13,112 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,112 - ERROR - Error in episode 7781: name 'args' is not defined +2025-03-10 15:30:13,114 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,115 - ERROR - Error in episode 7782: name 'args' is not defined +2025-03-10 15:30:13,117 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,117 - ERROR - Error in episode 7783: name 'args' is not defined +2025-03-10 15:30:13,120 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,122 - ERROR - Error in episode 7784: name 'args' is not defined +2025-03-10 15:30:13,124 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,124 - ERROR - Error in episode 7785: name 'args' is not defined +2025-03-10 15:30:13,127 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,127 - ERROR - Error in episode 7786: name 'args' is not defined +2025-03-10 15:30:13,130 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,130 - ERROR - Error in episode 7787: name 'args' is not defined +2025-03-10 15:30:13,133 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,133 - ERROR - Error in episode 7788: name 'args' is not defined +2025-03-10 15:30:13,135 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,135 - ERROR - Error in episode 7789: name 'args' is not defined +2025-03-10 15:30:13,139 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,140 - ERROR - Error in episode 7790: name 'args' is not defined +2025-03-10 15:30:13,143 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,143 - ERROR - Error in episode 7791: name 'args' is not defined +2025-03-10 15:30:13,146 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,146 - ERROR - Error in episode 7792: name 'args' is not defined +2025-03-10 15:30:13,148 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,149 - ERROR - Error in episode 7793: name 'args' is not defined +2025-03-10 15:30:13,151 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,151 - ERROR - Error in episode 7794: name 'args' is not defined +2025-03-10 15:30:13,154 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,154 - ERROR - Error in episode 7795: name 'args' is not defined +2025-03-10 15:30:13,157 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,157 - ERROR - Error in episode 7796: name 'args' is not defined +2025-03-10 15:30:13,159 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,160 - ERROR - Error in episode 7797: name 'args' is not defined +2025-03-10 15:30:13,162 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,162 - ERROR - Error in episode 7798: name 'args' is not defined +2025-03-10 15:30:13,165 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,165 - ERROR - Error in episode 7799: name 'args' is not defined +2025-03-10 15:30:13,168 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,168 - ERROR - Error in episode 7800: name 'args' is not defined +2025-03-10 15:30:13,172 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,172 - ERROR - Error in episode 7801: name 'args' is not defined +2025-03-10 15:30:13,174 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,175 - ERROR - Error in episode 7802: name 'args' is not defined +2025-03-10 15:30:13,177 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,178 - ERROR - Error in episode 7803: name 'args' is not defined +2025-03-10 15:30:13,180 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,180 - ERROR - Error in episode 7804: name 'args' is not defined +2025-03-10 15:30:13,183 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,183 - ERROR - Error in episode 7805: name 'args' is not defined +2025-03-10 15:30:13,186 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,186 - ERROR - Error in episode 7806: name 'args' is not defined +2025-03-10 15:30:13,188 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,188 - ERROR - Error in episode 7807: name 'args' is not defined +2025-03-10 15:30:13,191 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,191 - ERROR - Error in episode 7808: name 'args' is not defined +2025-03-10 15:30:13,193 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,194 - ERROR - Error in episode 7809: name 'args' is not defined +2025-03-10 15:30:13,196 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,197 - ERROR - Error in episode 7810: name 'args' is not defined +2025-03-10 15:30:13,200 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,200 - ERROR - Error in episode 7811: name 'args' is not defined +2025-03-10 15:30:13,203 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,203 - ERROR - Error in episode 7812: name 'args' is not defined +2025-03-10 15:30:13,206 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,206 - ERROR - Error in episode 7813: name 'args' is not defined +2025-03-10 15:30:13,209 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,209 - ERROR - Error in episode 7814: name 'args' is not defined +2025-03-10 15:30:13,212 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,212 - ERROR - Error in episode 7815: name 'args' is not defined +2025-03-10 15:30:13,214 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,215 - ERROR - Error in episode 7816: name 'args' is not defined +2025-03-10 15:30:13,218 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,218 - ERROR - Error in episode 7817: name 'args' is not defined +2025-03-10 15:30:13,222 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,222 - ERROR - Error in episode 7818: name 'args' is not defined +2025-03-10 15:30:13,225 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,225 - ERROR - Error in episode 7819: name 'args' is not defined +2025-03-10 15:30:13,228 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,228 - ERROR - Error in episode 7820: name 'args' is not defined +2025-03-10 15:30:13,231 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,232 - ERROR - Error in episode 7821: name 'args' is not defined +2025-03-10 15:30:13,234 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,234 - ERROR - Error in episode 7822: name 'args' is not defined +2025-03-10 15:30:13,237 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,237 - ERROR - Error in episode 7823: name 'args' is not defined +2025-03-10 15:30:13,239 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,240 - ERROR - Error in episode 7824: name 'args' is not defined +2025-03-10 15:30:13,243 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,243 - ERROR - Error in episode 7825: name 'args' is not defined +2025-03-10 15:30:13,245 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,246 - ERROR - Error in episode 7826: name 'args' is not defined +2025-03-10 15:30:13,248 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,249 - ERROR - Error in episode 7827: name 'args' is not defined +2025-03-10 15:30:13,251 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,251 - ERROR - Error in episode 7828: name 'args' is not defined +2025-03-10 15:30:13,254 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,255 - ERROR - Error in episode 7829: name 'args' is not defined +2025-03-10 15:30:13,257 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,257 - ERROR - Error in episode 7830: name 'args' is not defined +2025-03-10 15:30:13,260 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,260 - ERROR - Error in episode 7831: name 'args' is not defined +2025-03-10 15:30:13,263 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,263 - ERROR - Error in episode 7832: name 'args' is not defined +2025-03-10 15:30:13,266 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,266 - ERROR - Error in episode 7833: name 'args' is not defined +2025-03-10 15:30:13,269 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,269 - ERROR - Error in episode 7834: name 'args' is not defined +2025-03-10 15:30:13,273 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,273 - ERROR - Error in episode 7835: name 'args' is not defined +2025-03-10 15:30:13,276 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,277 - ERROR - Error in episode 7836: name 'args' is not defined +2025-03-10 15:30:13,280 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,280 - ERROR - Error in episode 7837: name 'args' is not defined +2025-03-10 15:30:13,283 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,283 - ERROR - Error in episode 7838: name 'args' is not defined +2025-03-10 15:30:13,287 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,288 - ERROR - Error in episode 7839: name 'args' is not defined +2025-03-10 15:30:13,290 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,290 - ERROR - Error in episode 7840: name 'args' is not defined +2025-03-10 15:30:13,293 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,293 - ERROR - Error in episode 7841: name 'args' is not defined +2025-03-10 15:30:13,296 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,296 - ERROR - Error in episode 7842: name 'args' is not defined +2025-03-10 15:30:13,299 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,299 - ERROR - Error in episode 7843: name 'args' is not defined +2025-03-10 15:30:13,301 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,301 - ERROR - Error in episode 7844: name 'args' is not defined +2025-03-10 15:30:13,304 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,305 - ERROR - Error in episode 7845: name 'args' is not defined +2025-03-10 15:30:13,307 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,308 - ERROR - Error in episode 7846: name 'args' is not defined +2025-03-10 15:30:13,310 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,311 - ERROR - Error in episode 7847: name 'args' is not defined +2025-03-10 15:30:13,314 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,314 - ERROR - Error in episode 7848: name 'args' is not defined +2025-03-10 15:30:13,317 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,317 - ERROR - Error in episode 7849: name 'args' is not defined +2025-03-10 15:30:13,320 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,320 - ERROR - Error in episode 7850: name 'args' is not defined +2025-03-10 15:30:13,323 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,323 - ERROR - Error in episode 7851: name 'args' is not defined +2025-03-10 15:30:13,326 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,326 - ERROR - Error in episode 7852: name 'args' is not defined +2025-03-10 15:30:13,329 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,329 - ERROR - Error in episode 7853: name 'args' is not defined +2025-03-10 15:30:13,332 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,332 - ERROR - Error in episode 7854: name 'args' is not defined +2025-03-10 15:30:13,335 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,335 - ERROR - Error in episode 7855: name 'args' is not defined +2025-03-10 15:30:13,338 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,338 - ERROR - Error in episode 7856: name 'args' is not defined +2025-03-10 15:30:13,341 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,341 - ERROR - Error in episode 7857: name 'args' is not defined +2025-03-10 15:30:13,344 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,344 - ERROR - Error in episode 7858: name 'args' is not defined +2025-03-10 15:30:13,347 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,347 - ERROR - Error in episode 7859: name 'args' is not defined +2025-03-10 15:30:13,350 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,350 - ERROR - Error in episode 7860: name 'args' is not defined +2025-03-10 15:30:13,352 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,353 - ERROR - Error in episode 7861: name 'args' is not defined +2025-03-10 15:30:13,355 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,355 - ERROR - Error in episode 7862: name 'args' is not defined +2025-03-10 15:30:13,359 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,359 - ERROR - Error in episode 7863: name 'args' is not defined +2025-03-10 15:30:13,362 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,362 - ERROR - Error in episode 7864: name 'args' is not defined +2025-03-10 15:30:13,364 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,365 - ERROR - Error in episode 7865: name 'args' is not defined +2025-03-10 15:30:13,367 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,368 - ERROR - Error in episode 7866: name 'args' is not defined +2025-03-10 15:30:13,370 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,370 - ERROR - Error in episode 7867: name 'args' is not defined +2025-03-10 15:30:13,372 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,373 - ERROR - Error in episode 7868: name 'args' is not defined +2025-03-10 15:30:13,376 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,376 - ERROR - Error in episode 7869: name 'args' is not defined +2025-03-10 15:30:13,378 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,379 - ERROR - Error in episode 7870: name 'args' is not defined +2025-03-10 15:30:13,381 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,381 - ERROR - Error in episode 7871: name 'args' is not defined +2025-03-10 15:30:13,384 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,384 - ERROR - Error in episode 7872: name 'args' is not defined +2025-03-10 15:30:13,388 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,388 - ERROR - Error in episode 7873: name 'args' is not defined +2025-03-10 15:30:13,390 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,390 - ERROR - Error in episode 7874: name 'args' is not defined +2025-03-10 15:30:13,393 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,393 - ERROR - Error in episode 7875: name 'args' is not defined +2025-03-10 15:30:13,396 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,396 - ERROR - Error in episode 7876: name 'args' is not defined +2025-03-10 15:30:13,399 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,399 - ERROR - Error in episode 7877: name 'args' is not defined +2025-03-10 15:30:13,401 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,402 - ERROR - Error in episode 7878: name 'args' is not defined +2025-03-10 15:30:13,404 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,405 - ERROR - Error in episode 7879: name 'args' is not defined +2025-03-10 15:30:13,407 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,407 - ERROR - Error in episode 7880: name 'args' is not defined +2025-03-10 15:30:13,410 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,411 - ERROR - Error in episode 7881: name 'args' is not defined +2025-03-10 15:30:13,413 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,414 - ERROR - Error in episode 7882: name 'args' is not defined +2025-03-10 15:30:13,417 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,417 - ERROR - Error in episode 7883: name 'args' is not defined +2025-03-10 15:30:13,420 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,420 - ERROR - Error in episode 7884: name 'args' is not defined +2025-03-10 15:30:13,423 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,423 - ERROR - Error in episode 7885: name 'args' is not defined +2025-03-10 15:30:13,426 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,426 - ERROR - Error in episode 7886: name 'args' is not defined +2025-03-10 15:30:13,429 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,429 - ERROR - Error in episode 7887: name 'args' is not defined +2025-03-10 15:30:13,432 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,432 - ERROR - Error in episode 7888: name 'args' is not defined +2025-03-10 15:30:13,436 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,436 - ERROR - Error in episode 7889: name 'args' is not defined +2025-03-10 15:30:13,438 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,438 - ERROR - Error in episode 7890: name 'args' is not defined +2025-03-10 15:30:13,441 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,442 - ERROR - Error in episode 7891: name 'args' is not defined +2025-03-10 15:30:13,444 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,444 - ERROR - Error in episode 7892: name 'args' is not defined +2025-03-10 15:30:13,447 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,447 - ERROR - Error in episode 7893: name 'args' is not defined +2025-03-10 15:30:13,450 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,450 - ERROR - Error in episode 7894: name 'args' is not defined +2025-03-10 15:30:13,453 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,453 - ERROR - Error in episode 7895: name 'args' is not defined +2025-03-10 15:30:13,455 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,456 - ERROR - Error in episode 7896: name 'args' is not defined +2025-03-10 15:30:13,459 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,460 - ERROR - Error in episode 7897: name 'args' is not defined +2025-03-10 15:30:13,462 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,462 - ERROR - Error in episode 7898: name 'args' is not defined +2025-03-10 15:30:13,465 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,465 - ERROR - Error in episode 7899: name 'args' is not defined +2025-03-10 15:30:13,469 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,469 - ERROR - Error in episode 7900: name 'args' is not defined +2025-03-10 15:30:13,471 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,472 - ERROR - Error in episode 7901: name 'args' is not defined +2025-03-10 15:30:13,474 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,475 - ERROR - Error in episode 7902: name 'args' is not defined +2025-03-10 15:30:13,477 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,478 - ERROR - Error in episode 7903: name 'args' is not defined +2025-03-10 15:30:13,480 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,482 - ERROR - Error in episode 7904: name 'args' is not defined +2025-03-10 15:30:13,485 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,485 - ERROR - Error in episode 7905: name 'args' is not defined +2025-03-10 15:30:13,487 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,488 - ERROR - Error in episode 7906: name 'args' is not defined +2025-03-10 15:30:13,490 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,490 - ERROR - Error in episode 7907: name 'args' is not defined +2025-03-10 15:30:13,493 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,493 - ERROR - Error in episode 7908: name 'args' is not defined +2025-03-10 15:30:13,496 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,496 - ERROR - Error in episode 7909: name 'args' is not defined +2025-03-10 15:30:13,499 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,499 - ERROR - Error in episode 7910: name 'args' is not defined +2025-03-10 15:30:13,502 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,502 - ERROR - Error in episode 7911: name 'args' is not defined +2025-03-10 15:30:13,504 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,505 - ERROR - Error in episode 7912: name 'args' is not defined +2025-03-10 15:30:13,507 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,508 - ERROR - Error in episode 7913: name 'args' is not defined +2025-03-10 15:30:13,511 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,511 - ERROR - Error in episode 7914: name 'args' is not defined +2025-03-10 15:30:13,514 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,514 - ERROR - Error in episode 7915: name 'args' is not defined +2025-03-10 15:30:13,516 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,517 - ERROR - Error in episode 7916: name 'args' is not defined +2025-03-10 15:30:13,519 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,519 - ERROR - Error in episode 7917: name 'args' is not defined +2025-03-10 15:30:13,522 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,523 - ERROR - Error in episode 7918: name 'args' is not defined +2025-03-10 15:30:13,526 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,526 - ERROR - Error in episode 7919: name 'args' is not defined +2025-03-10 15:30:13,529 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,529 - ERROR - Error in episode 7920: name 'args' is not defined +2025-03-10 15:30:13,531 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,532 - ERROR - Error in episode 7921: name 'args' is not defined +2025-03-10 15:30:13,534 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,535 - ERROR - Error in episode 7922: name 'args' is not defined +2025-03-10 15:30:13,538 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,538 - ERROR - Error in episode 7923: name 'args' is not defined +2025-03-10 15:30:13,541 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,542 - ERROR - Error in episode 7924: name 'args' is not defined +2025-03-10 15:30:13,544 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,544 - ERROR - Error in episode 7925: name 'args' is not defined +2025-03-10 15:30:13,547 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,547 - ERROR - Error in episode 7926: name 'args' is not defined +2025-03-10 15:30:13,550 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,550 - ERROR - Error in episode 7927: name 'args' is not defined +2025-03-10 15:30:13,552 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,553 - ERROR - Error in episode 7928: name 'args' is not defined +2025-03-10 15:30:13,555 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,555 - ERROR - Error in episode 7929: name 'args' is not defined +2025-03-10 15:30:13,559 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,559 - ERROR - Error in episode 7930: name 'args' is not defined +2025-03-10 15:30:13,561 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,561 - ERROR - Error in episode 7931: name 'args' is not defined +2025-03-10 15:30:13,564 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,564 - ERROR - Error in episode 7932: name 'args' is not defined +2025-03-10 15:30:13,567 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,567 - ERROR - Error in episode 7933: name 'args' is not defined +2025-03-10 15:30:13,570 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,570 - ERROR - Error in episode 7934: name 'args' is not defined +2025-03-10 15:30:13,573 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,573 - ERROR - Error in episode 7935: name 'args' is not defined +2025-03-10 15:30:13,576 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,576 - ERROR - Error in episode 7936: name 'args' is not defined +2025-03-10 15:30:13,579 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,579 - ERROR - Error in episode 7937: name 'args' is not defined +2025-03-10 15:30:13,581 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,582 - ERROR - Error in episode 7938: name 'args' is not defined +2025-03-10 15:30:13,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,585 - ERROR - Error in episode 7939: name 'args' is not defined +2025-03-10 15:30:13,588 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,588 - ERROR - Error in episode 7940: name 'args' is not defined +2025-03-10 15:30:13,591 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,592 - ERROR - Error in episode 7941: name 'args' is not defined +2025-03-10 15:30:13,594 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,595 - ERROR - Error in episode 7942: name 'args' is not defined +2025-03-10 15:30:13,597 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,597 - ERROR - Error in episode 7943: name 'args' is not defined +2025-03-10 15:30:13,599 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,600 - ERROR - Error in episode 7944: name 'args' is not defined +2025-03-10 15:30:13,602 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,602 - ERROR - Error in episode 7945: name 'args' is not defined +2025-03-10 15:30:13,605 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,605 - ERROR - Error in episode 7946: name 'args' is not defined +2025-03-10 15:30:13,608 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,608 - ERROR - Error in episode 7947: name 'args' is not defined +2025-03-10 15:30:13,610 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,611 - ERROR - Error in episode 7948: name 'args' is not defined +2025-03-10 15:30:13,613 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,614 - ERROR - Error in episode 7949: name 'args' is not defined +2025-03-10 15:30:13,618 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,618 - ERROR - Error in episode 7950: name 'args' is not defined +2025-03-10 15:30:13,621 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,621 - ERROR - Error in episode 7951: name 'args' is not defined +2025-03-10 15:30:13,624 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,625 - ERROR - Error in episode 7952: name 'args' is not defined +2025-03-10 15:30:13,628 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,628 - ERROR - Error in episode 7953: name 'args' is not defined +2025-03-10 15:30:13,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,631 - ERROR - Error in episode 7954: name 'args' is not defined +2025-03-10 15:30:13,634 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,634 - ERROR - Error in episode 7955: name 'args' is not defined +2025-03-10 15:30:13,636 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,636 - ERROR - Error in episode 7956: name 'args' is not defined +2025-03-10 15:30:13,639 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,639 - ERROR - Error in episode 7957: name 'args' is not defined +2025-03-10 15:30:13,642 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,642 - ERROR - Error in episode 7958: name 'args' is not defined +2025-03-10 15:30:13,645 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,645 - ERROR - Error in episode 7959: name 'args' is not defined +2025-03-10 15:30:13,648 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,648 - ERROR - Error in episode 7960: name 'args' is not defined +2025-03-10 15:30:13,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,652 - ERROR - Error in episode 7961: name 'args' is not defined +2025-03-10 15:30:13,654 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,655 - ERROR - Error in episode 7962: name 'args' is not defined +2025-03-10 15:30:13,657 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,658 - ERROR - Error in episode 7963: name 'args' is not defined +2025-03-10 15:30:13,660 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,661 - ERROR - Error in episode 7964: name 'args' is not defined +2025-03-10 15:30:13,663 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,664 - ERROR - Error in episode 7965: name 'args' is not defined +2025-03-10 15:30:13,667 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,669 - ERROR - Error in episode 7966: name 'args' is not defined +2025-03-10 15:30:13,671 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,671 - ERROR - Error in episode 7967: name 'args' is not defined +2025-03-10 15:30:13,674 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,674 - ERROR - Error in episode 7968: name 'args' is not defined +2025-03-10 15:30:13,677 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,678 - ERROR - Error in episode 7969: name 'args' is not defined +2025-03-10 15:30:13,680 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,681 - ERROR - Error in episode 7970: name 'args' is not defined +2025-03-10 15:30:13,683 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,684 - ERROR - Error in episode 7971: name 'args' is not defined +2025-03-10 15:30:13,686 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,686 - ERROR - Error in episode 7972: name 'args' is not defined +2025-03-10 15:30:13,689 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,689 - ERROR - Error in episode 7973: name 'args' is not defined +2025-03-10 15:30:13,692 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,693 - ERROR - Error in episode 7974: name 'args' is not defined +2025-03-10 15:30:13,695 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,695 - ERROR - Error in episode 7975: name 'args' is not defined +2025-03-10 15:30:13,698 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,699 - ERROR - Error in episode 7976: name 'args' is not defined +2025-03-10 15:30:13,701 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,701 - ERROR - Error in episode 7977: name 'args' is not defined +2025-03-10 15:30:13,703 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,704 - ERROR - Error in episode 7978: name 'args' is not defined +2025-03-10 15:30:13,706 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,706 - ERROR - Error in episode 7979: name 'args' is not defined +2025-03-10 15:30:13,709 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,709 - ERROR - Error in episode 7980: name 'args' is not defined +2025-03-10 15:30:13,712 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,712 - ERROR - Error in episode 7981: name 'args' is not defined +2025-03-10 15:30:13,715 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,716 - ERROR - Error in episode 7982: name 'args' is not defined +2025-03-10 15:30:13,718 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,718 - ERROR - Error in episode 7983: name 'args' is not defined +2025-03-10 15:30:13,721 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,721 - ERROR - Error in episode 7984: name 'args' is not defined +2025-03-10 15:30:13,724 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,724 - ERROR - Error in episode 7985: name 'args' is not defined +2025-03-10 15:30:13,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,728 - ERROR - Error in episode 7986: name 'args' is not defined +2025-03-10 15:30:13,730 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,731 - ERROR - Error in episode 7987: name 'args' is not defined +2025-03-10 15:30:13,733 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,734 - ERROR - Error in episode 7988: name 'args' is not defined +2025-03-10 15:30:13,736 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,736 - ERROR - Error in episode 7989: name 'args' is not defined +2025-03-10 15:30:13,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,739 - ERROR - Error in episode 7990: name 'args' is not defined +2025-03-10 15:30:13,741 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,742 - ERROR - Error in episode 7991: name 'args' is not defined +2025-03-10 15:30:13,744 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,745 - ERROR - Error in episode 7992: name 'args' is not defined +2025-03-10 15:30:13,747 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,748 - ERROR - Error in episode 7993: name 'args' is not defined +2025-03-10 15:30:13,751 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,751 - ERROR - Error in episode 7994: name 'args' is not defined +2025-03-10 15:30:13,753 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,753 - ERROR - Error in episode 7995: name 'args' is not defined +2025-03-10 15:30:13,756 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,757 - ERROR - Error in episode 7996: name 'args' is not defined +2025-03-10 15:30:13,759 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,761 - ERROR - Error in episode 7997: name 'args' is not defined +2025-03-10 15:30:13,763 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,763 - ERROR - Error in episode 7998: name 'args' is not defined +2025-03-10 15:30:13,766 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,766 - ERROR - Error in episode 7999: name 'args' is not defined +2025-03-10 15:30:13,769 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,769 - ERROR - Error in episode 8000: name 'args' is not defined +2025-03-10 15:30:13,771 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,772 - ERROR - Error in episode 8001: name 'args' is not defined +2025-03-10 15:30:13,774 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,774 - ERROR - Error in episode 8002: name 'args' is not defined +2025-03-10 15:30:13,777 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,777 - ERROR - Error in episode 8003: name 'args' is not defined +2025-03-10 15:30:13,780 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,781 - ERROR - Error in episode 8004: name 'args' is not defined +2025-03-10 15:30:13,784 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,784 - ERROR - Error in episode 8005: name 'args' is not defined +2025-03-10 15:30:13,786 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,787 - ERROR - Error in episode 8006: name 'args' is not defined +2025-03-10 15:30:13,789 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,789 - ERROR - Error in episode 8007: name 'args' is not defined +2025-03-10 15:30:13,792 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,793 - ERROR - Error in episode 8008: name 'args' is not defined +2025-03-10 15:30:13,795 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,795 - ERROR - Error in episode 8009: name 'args' is not defined +2025-03-10 15:30:13,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,798 - ERROR - Error in episode 8010: name 'args' is not defined +2025-03-10 15:30:13,801 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,801 - ERROR - Error in episode 8011: name 'args' is not defined +2025-03-10 15:30:13,803 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,804 - ERROR - Error in episode 8012: name 'args' is not defined +2025-03-10 15:30:13,806 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,806 - ERROR - Error in episode 8013: name 'args' is not defined +2025-03-10 15:30:13,809 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,809 - ERROR - Error in episode 8014: name 'args' is not defined +2025-03-10 15:30:13,811 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,812 - ERROR - Error in episode 8015: name 'args' is not defined +2025-03-10 15:30:13,815 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,815 - ERROR - Error in episode 8016: name 'args' is not defined +2025-03-10 15:30:13,818 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,818 - ERROR - Error in episode 8017: name 'args' is not defined +2025-03-10 15:30:13,820 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,820 - ERROR - Error in episode 8018: name 'args' is not defined +2025-03-10 15:30:13,823 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,823 - ERROR - Error in episode 8019: name 'args' is not defined +2025-03-10 15:30:13,827 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,827 - ERROR - Error in episode 8020: name 'args' is not defined +2025-03-10 15:30:13,829 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,830 - ERROR - Error in episode 8021: name 'args' is not defined +2025-03-10 15:30:13,832 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,833 - ERROR - Error in episode 8022: name 'args' is not defined +2025-03-10 15:30:13,836 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,836 - ERROR - Error in episode 8023: name 'args' is not defined +2025-03-10 15:30:13,838 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,839 - ERROR - Error in episode 8024: name 'args' is not defined +2025-03-10 15:30:13,841 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,842 - ERROR - Error in episode 8025: name 'args' is not defined +2025-03-10 15:30:13,845 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,845 - ERROR - Error in episode 8026: name 'args' is not defined +2025-03-10 15:30:13,848 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,848 - ERROR - Error in episode 8027: name 'args' is not defined +2025-03-10 15:30:13,851 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,852 - ERROR - Error in episode 8028: name 'args' is not defined +2025-03-10 15:30:13,854 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,855 - ERROR - Error in episode 8029: name 'args' is not defined +2025-03-10 15:30:13,858 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,858 - ERROR - Error in episode 8030: name 'args' is not defined +2025-03-10 15:30:13,862 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,862 - ERROR - Error in episode 8031: name 'args' is not defined +2025-03-10 15:30:13,864 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,865 - ERROR - Error in episode 8032: name 'args' is not defined +2025-03-10 15:30:13,867 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,868 - ERROR - Error in episode 8033: name 'args' is not defined +2025-03-10 15:30:13,870 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,870 - ERROR - Error in episode 8034: name 'args' is not defined +2025-03-10 15:30:13,873 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,873 - ERROR - Error in episode 8035: name 'args' is not defined +2025-03-10 15:30:13,876 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,877 - ERROR - Error in episode 8036: name 'args' is not defined +2025-03-10 15:30:13,879 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,879 - ERROR - Error in episode 8037: name 'args' is not defined +2025-03-10 15:30:13,882 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,882 - ERROR - Error in episode 8038: name 'args' is not defined +2025-03-10 15:30:13,885 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,885 - ERROR - Error in episode 8039: name 'args' is not defined +2025-03-10 15:30:13,888 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,888 - ERROR - Error in episode 8040: name 'args' is not defined +2025-03-10 15:30:13,891 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,892 - ERROR - Error in episode 8041: name 'args' is not defined +2025-03-10 15:30:13,894 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,895 - ERROR - Error in episode 8042: name 'args' is not defined +2025-03-10 15:30:13,897 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,897 - ERROR - Error in episode 8043: name 'args' is not defined +2025-03-10 15:30:13,900 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,901 - ERROR - Error in episode 8044: name 'args' is not defined +2025-03-10 15:30:13,903 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,903 - ERROR - Error in episode 8045: name 'args' is not defined +2025-03-10 15:30:13,906 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,906 - ERROR - Error in episode 8046: name 'args' is not defined +2025-03-10 15:30:13,909 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,909 - ERROR - Error in episode 8047: name 'args' is not defined +2025-03-10 15:30:13,912 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,912 - ERROR - Error in episode 8048: name 'args' is not defined +2025-03-10 15:30:13,914 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,914 - ERROR - Error in episode 8049: name 'args' is not defined +2025-03-10 15:30:13,918 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,918 - ERROR - Error in episode 8050: name 'args' is not defined +2025-03-10 15:30:13,920 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,921 - ERROR - Error in episode 8051: name 'args' is not defined +2025-03-10 15:30:13,923 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,924 - ERROR - Error in episode 8052: name 'args' is not defined +2025-03-10 15:30:13,926 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,926 - ERROR - Error in episode 8053: name 'args' is not defined +2025-03-10 15:30:13,929 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,929 - ERROR - Error in episode 8054: name 'args' is not defined +2025-03-10 15:30:13,933 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,933 - ERROR - Error in episode 8055: name 'args' is not defined +2025-03-10 15:30:13,936 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,936 - ERROR - Error in episode 8056: name 'args' is not defined +2025-03-10 15:30:13,939 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,940 - ERROR - Error in episode 8057: name 'args' is not defined +2025-03-10 15:30:13,942 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,943 - ERROR - Error in episode 8058: name 'args' is not defined +2025-03-10 15:30:13,946 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,946 - ERROR - Error in episode 8059: name 'args' is not defined +2025-03-10 15:30:13,948 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,949 - ERROR - Error in episode 8060: name 'args' is not defined +2025-03-10 15:30:13,951 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,952 - ERROR - Error in episode 8061: name 'args' is not defined +2025-03-10 15:30:13,954 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,954 - ERROR - Error in episode 8062: name 'args' is not defined +2025-03-10 15:30:13,957 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,957 - ERROR - Error in episode 8063: name 'args' is not defined +2025-03-10 15:30:13,960 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,960 - ERROR - Error in episode 8064: name 'args' is not defined +2025-03-10 15:30:13,962 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,963 - ERROR - Error in episode 8065: name 'args' is not defined +2025-03-10 15:30:13,965 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,966 - ERROR - Error in episode 8066: name 'args' is not defined +2025-03-10 15:30:13,969 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,969 - ERROR - Error in episode 8067: name 'args' is not defined +2025-03-10 15:30:13,972 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,973 - ERROR - Error in episode 8068: name 'args' is not defined +2025-03-10 15:30:13,975 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,975 - ERROR - Error in episode 8069: name 'args' is not defined +2025-03-10 15:30:13,979 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,979 - ERROR - Error in episode 8070: name 'args' is not defined +2025-03-10 15:30:13,981 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,982 - ERROR - Error in episode 8071: name 'args' is not defined +2025-03-10 15:30:13,985 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,985 - ERROR - Error in episode 8072: name 'args' is not defined +2025-03-10 15:30:13,989 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,989 - ERROR - Error in episode 8073: name 'args' is not defined +2025-03-10 15:30:13,994 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,995 - ERROR - Error in episode 8074: name 'args' is not defined +2025-03-10 15:30:13,998 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:13,998 - ERROR - Error in episode 8075: name 'args' is not defined +2025-03-10 15:30:14,002 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,002 - ERROR - Error in episode 8076: name 'args' is not defined +2025-03-10 15:30:14,006 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,006 - ERROR - Error in episode 8077: name 'args' is not defined +2025-03-10 15:30:14,009 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,010 - ERROR - Error in episode 8078: name 'args' is not defined +2025-03-10 15:30:14,013 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,014 - ERROR - Error in episode 8079: name 'args' is not defined +2025-03-10 15:30:14,017 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,018 - ERROR - Error in episode 8080: name 'args' is not defined +2025-03-10 15:30:14,022 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,022 - ERROR - Error in episode 8081: name 'args' is not defined +2025-03-10 15:30:14,026 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,026 - ERROR - Error in episode 8082: name 'args' is not defined +2025-03-10 15:30:14,030 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,030 - ERROR - Error in episode 8083: name 'args' is not defined +2025-03-10 15:30:14,034 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,035 - ERROR - Error in episode 8084: name 'args' is not defined +2025-03-10 15:30:14,038 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,038 - ERROR - Error in episode 8085: name 'args' is not defined +2025-03-10 15:30:14,042 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,043 - ERROR - Error in episode 8086: name 'args' is not defined +2025-03-10 15:30:14,046 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,047 - ERROR - Error in episode 8087: name 'args' is not defined +2025-03-10 15:30:14,050 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,050 - ERROR - Error in episode 8088: name 'args' is not defined +2025-03-10 15:30:14,054 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,054 - ERROR - Error in episode 8089: name 'args' is not defined +2025-03-10 15:30:14,058 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,058 - ERROR - Error in episode 8090: name 'args' is not defined +2025-03-10 15:30:14,061 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,062 - ERROR - Error in episode 8091: name 'args' is not defined +2025-03-10 15:30:14,066 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,066 - ERROR - Error in episode 8092: name 'args' is not defined +2025-03-10 15:30:14,070 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,071 - ERROR - Error in episode 8093: name 'args' is not defined +2025-03-10 15:30:14,074 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,074 - ERROR - Error in episode 8094: name 'args' is not defined +2025-03-10 15:30:14,079 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,079 - ERROR - Error in episode 8095: name 'args' is not defined +2025-03-10 15:30:14,082 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,082 - ERROR - Error in episode 8096: name 'args' is not defined +2025-03-10 15:30:14,086 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,087 - ERROR - Error in episode 8097: name 'args' is not defined +2025-03-10 15:30:14,090 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,090 - ERROR - Error in episode 8098: name 'args' is not defined +2025-03-10 15:30:14,093 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,094 - ERROR - Error in episode 8099: name 'args' is not defined +2025-03-10 15:30:14,097 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,097 - ERROR - Error in episode 8100: name 'args' is not defined +2025-03-10 15:30:14,101 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,102 - ERROR - Error in episode 8101: name 'args' is not defined +2025-03-10 15:30:14,106 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,106 - ERROR - Error in episode 8102: name 'args' is not defined +2025-03-10 15:30:14,109 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,110 - ERROR - Error in episode 8103: name 'args' is not defined +2025-03-10 15:30:14,113 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,114 - ERROR - Error in episode 8104: name 'args' is not defined +2025-03-10 15:30:14,118 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,118 - ERROR - Error in episode 8105: name 'args' is not defined +2025-03-10 15:30:14,122 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,122 - ERROR - Error in episode 8106: name 'args' is not defined +2025-03-10 15:30:14,126 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,126 - ERROR - Error in episode 8107: name 'args' is not defined +2025-03-10 15:30:14,129 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,130 - ERROR - Error in episode 8108: name 'args' is not defined +2025-03-10 15:30:14,133 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,134 - ERROR - Error in episode 8109: name 'args' is not defined +2025-03-10 15:30:14,136 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,137 - ERROR - Error in episode 8110: name 'args' is not defined +2025-03-10 15:30:14,141 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,141 - ERROR - Error in episode 8111: name 'args' is not defined +2025-03-10 15:30:14,144 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,145 - ERROR - Error in episode 8112: name 'args' is not defined +2025-03-10 15:30:14,148 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,148 - ERROR - Error in episode 8113: name 'args' is not defined +2025-03-10 15:30:14,152 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,152 - ERROR - Error in episode 8114: name 'args' is not defined +2025-03-10 15:30:14,155 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,156 - ERROR - Error in episode 8115: name 'args' is not defined +2025-03-10 15:30:14,160 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,160 - ERROR - Error in episode 8116: name 'args' is not defined +2025-03-10 15:30:14,164 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,164 - ERROR - Error in episode 8117: name 'args' is not defined +2025-03-10 15:30:14,167 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,168 - ERROR - Error in episode 8118: name 'args' is not defined +2025-03-10 15:30:14,171 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,172 - ERROR - Error in episode 8119: name 'args' is not defined +2025-03-10 15:30:14,176 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,176 - ERROR - Error in episode 8120: name 'args' is not defined +2025-03-10 15:30:14,179 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,179 - ERROR - Error in episode 8121: name 'args' is not defined +2025-03-10 15:30:14,183 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,184 - ERROR - Error in episode 8122: name 'args' is not defined +2025-03-10 15:30:14,187 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,188 - ERROR - Error in episode 8123: name 'args' is not defined +2025-03-10 15:30:14,190 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,190 - ERROR - Error in episode 8124: name 'args' is not defined +2025-03-10 15:30:14,194 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,195 - ERROR - Error in episode 8125: name 'args' is not defined +2025-03-10 15:30:14,198 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,199 - ERROR - Error in episode 8126: name 'args' is not defined +2025-03-10 15:30:14,202 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,202 - ERROR - Error in episode 8127: name 'args' is not defined +2025-03-10 15:30:14,206 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,206 - ERROR - Error in episode 8128: name 'args' is not defined +2025-03-10 15:30:14,209 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,210 - ERROR - Error in episode 8129: name 'args' is not defined +2025-03-10 15:30:14,212 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,213 - ERROR - Error in episode 8130: name 'args' is not defined +2025-03-10 15:30:14,215 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,216 - ERROR - Error in episode 8131: name 'args' is not defined +2025-03-10 15:30:14,219 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,220 - ERROR - Error in episode 8132: name 'args' is not defined +2025-03-10 15:30:14,223 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,224 - ERROR - Error in episode 8133: name 'args' is not defined +2025-03-10 15:30:14,228 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,228 - ERROR - Error in episode 8134: name 'args' is not defined +2025-03-10 15:30:14,232 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,232 - ERROR - Error in episode 8135: name 'args' is not defined +2025-03-10 15:30:14,236 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,236 - ERROR - Error in episode 8136: name 'args' is not defined +2025-03-10 15:30:14,239 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,239 - ERROR - Error in episode 8137: name 'args' is not defined +2025-03-10 15:30:14,243 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,243 - ERROR - Error in episode 8138: name 'args' is not defined +2025-03-10 15:30:14,247 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,247 - ERROR - Error in episode 8139: name 'args' is not defined +2025-03-10 15:30:14,250 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,251 - ERROR - Error in episode 8140: name 'args' is not defined +2025-03-10 15:30:14,256 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,256 - ERROR - Error in episode 8141: name 'args' is not defined +2025-03-10 15:30:14,260 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,260 - ERROR - Error in episode 8142: name 'args' is not defined +2025-03-10 15:30:14,263 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,264 - ERROR - Error in episode 8143: name 'args' is not defined +2025-03-10 15:30:14,267 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,267 - ERROR - Error in episode 8144: name 'args' is not defined +2025-03-10 15:30:14,270 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,270 - ERROR - Error in episode 8145: name 'args' is not defined +2025-03-10 15:30:14,274 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,274 - ERROR - Error in episode 8146: name 'args' is not defined +2025-03-10 15:30:14,278 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,278 - ERROR - Error in episode 8147: name 'args' is not defined +2025-03-10 15:30:14,282 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,282 - ERROR - Error in episode 8148: name 'args' is not defined +2025-03-10 15:30:14,285 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,285 - ERROR - Error in episode 8149: name 'args' is not defined +2025-03-10 15:30:14,289 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,289 - ERROR - Error in episode 8150: name 'args' is not defined +2025-03-10 15:30:14,292 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,293 - ERROR - Error in episode 8151: name 'args' is not defined +2025-03-10 15:30:14,295 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,296 - ERROR - Error in episode 8152: name 'args' is not defined +2025-03-10 15:30:14,299 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,299 - ERROR - Error in episode 8153: name 'args' is not defined +2025-03-10 15:30:14,302 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,302 - ERROR - Error in episode 8154: name 'args' is not defined +2025-03-10 15:30:14,305 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,305 - ERROR - Error in episode 8155: name 'args' is not defined +2025-03-10 15:30:14,308 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,308 - ERROR - Error in episode 8156: name 'args' is not defined +2025-03-10 15:30:14,311 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,311 - ERROR - Error in episode 8157: name 'args' is not defined +2025-03-10 15:30:14,315 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,315 - ERROR - Error in episode 8158: name 'args' is not defined +2025-03-10 15:30:14,318 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,318 - ERROR - Error in episode 8159: name 'args' is not defined +2025-03-10 15:30:14,323 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,323 - ERROR - Error in episode 8160: name 'args' is not defined +2025-03-10 15:30:14,326 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,327 - ERROR - Error in episode 8161: name 'args' is not defined +2025-03-10 15:30:14,330 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,331 - ERROR - Error in episode 8162: name 'args' is not defined +2025-03-10 15:30:14,333 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,334 - ERROR - Error in episode 8163: name 'args' is not defined +2025-03-10 15:30:14,337 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,337 - ERROR - Error in episode 8164: name 'args' is not defined +2025-03-10 15:30:14,340 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,340 - ERROR - Error in episode 8165: name 'args' is not defined +2025-03-10 15:30:14,344 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,344 - ERROR - Error in episode 8166: name 'args' is not defined +2025-03-10 15:30:14,348 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,348 - ERROR - Error in episode 8167: name 'args' is not defined +2025-03-10 15:30:14,351 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,351 - ERROR - Error in episode 8168: name 'args' is not defined +2025-03-10 15:30:14,355 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,355 - ERROR - Error in episode 8169: name 'args' is not defined +2025-03-10 15:30:14,358 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,359 - ERROR - Error in episode 8170: name 'args' is not defined +2025-03-10 15:30:14,361 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,363 - ERROR - Error in episode 8171: name 'args' is not defined +2025-03-10 15:30:14,365 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,366 - ERROR - Error in episode 8172: name 'args' is not defined +2025-03-10 15:30:14,370 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,370 - ERROR - Error in episode 8173: name 'args' is not defined +2025-03-10 15:30:14,372 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,372 - ERROR - Error in episode 8174: name 'args' is not defined +2025-03-10 15:30:14,376 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,376 - ERROR - Error in episode 8175: name 'args' is not defined +2025-03-10 15:30:14,380 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,381 - ERROR - Error in episode 8176: name 'args' is not defined +2025-03-10 15:30:14,384 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,385 - ERROR - Error in episode 8177: name 'args' is not defined +2025-03-10 15:30:14,388 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,388 - ERROR - Error in episode 8178: name 'args' is not defined +2025-03-10 15:30:14,391 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,391 - ERROR - Error in episode 8179: name 'args' is not defined +2025-03-10 15:30:14,394 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,394 - ERROR - Error in episode 8180: name 'args' is not defined +2025-03-10 15:30:14,398 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,398 - ERROR - Error in episode 8181: name 'args' is not defined +2025-03-10 15:30:14,401 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,401 - ERROR - Error in episode 8182: name 'args' is not defined +2025-03-10 15:30:14,404 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,404 - ERROR - Error in episode 8183: name 'args' is not defined +2025-03-10 15:30:14,407 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,407 - ERROR - Error in episode 8184: name 'args' is not defined +2025-03-10 15:30:14,409 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,410 - ERROR - Error in episode 8185: name 'args' is not defined +2025-03-10 15:30:14,412 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,413 - ERROR - Error in episode 8186: name 'args' is not defined +2025-03-10 15:30:14,416 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,417 - ERROR - Error in episode 8187: name 'args' is not defined +2025-03-10 15:30:14,419 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,420 - ERROR - Error in episode 8188: name 'args' is not defined +2025-03-10 15:30:14,423 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,423 - ERROR - Error in episode 8189: name 'args' is not defined +2025-03-10 15:30:14,425 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,426 - ERROR - Error in episode 8190: name 'args' is not defined +2025-03-10 15:30:14,428 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,428 - ERROR - Error in episode 8191: name 'args' is not defined +2025-03-10 15:30:14,432 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,432 - ERROR - Error in episode 8192: name 'args' is not defined +2025-03-10 15:30:14,435 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,435 - ERROR - Error in episode 8193: name 'args' is not defined +2025-03-10 15:30:14,438 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,438 - ERROR - Error in episode 8194: name 'args' is not defined +2025-03-10 15:30:14,440 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,441 - ERROR - Error in episode 8195: name 'args' is not defined +2025-03-10 15:30:14,443 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,443 - ERROR - Error in episode 8196: name 'args' is not defined +2025-03-10 15:30:14,447 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,447 - ERROR - Error in episode 8197: name 'args' is not defined +2025-03-10 15:30:14,450 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,450 - ERROR - Error in episode 8198: name 'args' is not defined +2025-03-10 15:30:14,453 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,454 - ERROR - Error in episode 8199: name 'args' is not defined +2025-03-10 15:30:14,456 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,457 - ERROR - Error in episode 8200: name 'args' is not defined +2025-03-10 15:30:14,460 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,460 - ERROR - Error in episode 8201: name 'args' is not defined +2025-03-10 15:30:14,463 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,464 - ERROR - Error in episode 8202: name 'args' is not defined +2025-03-10 15:30:14,466 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,467 - ERROR - Error in episode 8203: name 'args' is not defined +2025-03-10 15:30:14,469 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,470 - ERROR - Error in episode 8204: name 'args' is not defined +2025-03-10 15:30:14,473 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,473 - ERROR - Error in episode 8205: name 'args' is not defined +2025-03-10 15:30:14,476 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,476 - ERROR - Error in episode 8206: name 'args' is not defined +2025-03-10 15:30:14,479 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,479 - ERROR - Error in episode 8207: name 'args' is not defined +2025-03-10 15:30:14,481 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,482 - ERROR - Error in episode 8208: name 'args' is not defined +2025-03-10 15:30:14,484 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,484 - ERROR - Error in episode 8209: name 'args' is not defined +2025-03-10 15:30:14,486 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,487 - ERROR - Error in episode 8210: name 'args' is not defined +2025-03-10 15:30:14,489 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,490 - ERROR - Error in episode 8211: name 'args' is not defined +2025-03-10 15:30:14,492 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,492 - ERROR - Error in episode 8212: name 'args' is not defined +2025-03-10 15:30:14,494 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,495 - ERROR - Error in episode 8213: name 'args' is not defined +2025-03-10 15:30:14,498 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,498 - ERROR - Error in episode 8214: name 'args' is not defined +2025-03-10 15:30:14,500 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,501 - ERROR - Error in episode 8215: name 'args' is not defined +2025-03-10 15:30:14,503 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,503 - ERROR - Error in episode 8216: name 'args' is not defined +2025-03-10 15:30:14,506 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,507 - ERROR - Error in episode 8217: name 'args' is not defined +2025-03-10 15:30:14,509 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,510 - ERROR - Error in episode 8218: name 'args' is not defined +2025-03-10 15:30:14,512 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,512 - ERROR - Error in episode 8219: name 'args' is not defined +2025-03-10 15:30:14,515 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,515 - ERROR - Error in episode 8220: name 'args' is not defined +2025-03-10 15:30:14,518 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,518 - ERROR - Error in episode 8221: name 'args' is not defined +2025-03-10 15:30:14,521 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,522 - ERROR - Error in episode 8222: name 'args' is not defined +2025-03-10 15:30:14,525 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,525 - ERROR - Error in episode 8223: name 'args' is not defined +2025-03-10 15:30:14,527 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,528 - ERROR - Error in episode 8224: name 'args' is not defined +2025-03-10 15:30:14,531 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,531 - ERROR - Error in episode 8225: name 'args' is not defined +2025-03-10 15:30:14,534 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,534 - ERROR - Error in episode 8226: name 'args' is not defined +2025-03-10 15:30:14,536 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,536 - ERROR - Error in episode 8227: name 'args' is not defined +2025-03-10 15:30:14,540 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,540 - ERROR - Error in episode 8228: name 'args' is not defined +2025-03-10 15:30:14,543 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,543 - ERROR - Error in episode 8229: name 'args' is not defined +2025-03-10 15:30:14,546 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,546 - ERROR - Error in episode 8230: name 'args' is not defined +2025-03-10 15:30:14,548 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,549 - ERROR - Error in episode 8231: name 'args' is not defined +2025-03-10 15:30:14,551 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,552 - ERROR - Error in episode 8232: name 'args' is not defined +2025-03-10 15:30:14,555 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,555 - ERROR - Error in episode 8233: name 'args' is not defined +2025-03-10 15:30:14,557 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,558 - ERROR - Error in episode 8234: name 'args' is not defined +2025-03-10 15:30:14,561 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,561 - ERROR - Error in episode 8235: name 'args' is not defined +2025-03-10 15:30:14,564 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,564 - ERROR - Error in episode 8236: name 'args' is not defined +2025-03-10 15:30:14,567 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,567 - ERROR - Error in episode 8237: name 'args' is not defined +2025-03-10 15:30:14,570 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,570 - ERROR - Error in episode 8238: name 'args' is not defined +2025-03-10 15:30:14,572 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,573 - ERROR - Error in episode 8239: name 'args' is not defined +2025-03-10 15:30:14,575 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,576 - ERROR - Error in episode 8240: name 'args' is not defined +2025-03-10 15:30:14,579 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,579 - ERROR - Error in episode 8241: name 'args' is not defined +2025-03-10 15:30:14,582 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,582 - ERROR - Error in episode 8242: name 'args' is not defined +2025-03-10 15:30:14,585 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,585 - ERROR - Error in episode 8243: name 'args' is not defined +2025-03-10 15:30:14,588 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,588 - ERROR - Error in episode 8244: name 'args' is not defined +2025-03-10 15:30:14,590 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,591 - ERROR - Error in episode 8245: name 'args' is not defined +2025-03-10 15:30:14,594 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,594 - ERROR - Error in episode 8246: name 'args' is not defined +2025-03-10 15:30:14,596 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,597 - ERROR - Error in episode 8247: name 'args' is not defined +2025-03-10 15:30:14,599 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,599 - ERROR - Error in episode 8248: name 'args' is not defined +2025-03-10 15:30:14,602 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,602 - ERROR - Error in episode 8249: name 'args' is not defined +2025-03-10 15:30:14,604 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,605 - ERROR - Error in episode 8250: name 'args' is not defined +2025-03-10 15:30:14,607 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,608 - ERROR - Error in episode 8251: name 'args' is not defined +2025-03-10 15:30:14,610 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,611 - ERROR - Error in episode 8252: name 'args' is not defined +2025-03-10 15:30:14,613 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,614 - ERROR - Error in episode 8253: name 'args' is not defined +2025-03-10 15:30:14,616 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,616 - ERROR - Error in episode 8254: name 'args' is not defined +2025-03-10 15:30:14,620 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,620 - ERROR - Error in episode 8255: name 'args' is not defined +2025-03-10 15:30:14,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,623 - ERROR - Error in episode 8256: name 'args' is not defined +2025-03-10 15:30:14,625 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,626 - ERROR - Error in episode 8257: name 'args' is not defined +2025-03-10 15:30:14,628 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,628 - ERROR - Error in episode 8258: name 'args' is not defined +2025-03-10 15:30:14,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,631 - ERROR - Error in episode 8259: name 'args' is not defined +2025-03-10 15:30:14,634 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,634 - ERROR - Error in episode 8260: name 'args' is not defined +2025-03-10 15:30:14,637 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,637 - ERROR - Error in episode 8261: name 'args' is not defined +2025-03-10 15:30:14,639 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,639 - ERROR - Error in episode 8262: name 'args' is not defined +2025-03-10 15:30:14,642 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,642 - ERROR - Error in episode 8263: name 'args' is not defined +2025-03-10 15:30:14,645 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,645 - ERROR - Error in episode 8264: name 'args' is not defined +2025-03-10 15:30:14,648 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,648 - ERROR - Error in episode 8265: name 'args' is not defined +2025-03-10 15:30:14,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,651 - ERROR - Error in episode 8266: name 'args' is not defined +2025-03-10 15:30:14,654 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,654 - ERROR - Error in episode 8267: name 'args' is not defined +2025-03-10 15:30:14,657 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,657 - ERROR - Error in episode 8268: name 'args' is not defined +2025-03-10 15:30:14,661 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,661 - ERROR - Error in episode 8269: name 'args' is not defined +2025-03-10 15:30:14,664 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,664 - ERROR - Error in episode 8270: name 'args' is not defined +2025-03-10 15:30:14,668 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,668 - ERROR - Error in episode 8271: name 'args' is not defined +2025-03-10 15:30:14,670 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,671 - ERROR - Error in episode 8272: name 'args' is not defined +2025-03-10 15:30:14,674 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,674 - ERROR - Error in episode 8273: name 'args' is not defined +2025-03-10 15:30:14,678 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,678 - ERROR - Error in episode 8274: name 'args' is not defined +2025-03-10 15:30:14,680 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,681 - ERROR - Error in episode 8275: name 'args' is not defined +2025-03-10 15:30:14,684 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,684 - ERROR - Error in episode 8276: name 'args' is not defined +2025-03-10 15:30:14,686 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,686 - ERROR - Error in episode 8277: name 'args' is not defined +2025-03-10 15:30:14,689 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,689 - ERROR - Error in episode 8278: name 'args' is not defined +2025-03-10 15:30:14,693 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,693 - ERROR - Error in episode 8279: name 'args' is not defined +2025-03-10 15:30:14,696 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,696 - ERROR - Error in episode 8280: name 'args' is not defined +2025-03-10 15:30:14,699 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,699 - ERROR - Error in episode 8281: name 'args' is not defined +2025-03-10 15:30:14,702 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,702 - ERROR - Error in episode 8282: name 'args' is not defined +2025-03-10 15:30:14,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,704 - ERROR - Error in episode 8283: name 'args' is not defined +2025-03-10 15:30:14,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,707 - ERROR - Error in episode 8284: name 'args' is not defined +2025-03-10 15:30:14,710 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,710 - ERROR - Error in episode 8285: name 'args' is not defined +2025-03-10 15:30:14,713 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,713 - ERROR - Error in episode 8286: name 'args' is not defined +2025-03-10 15:30:14,715 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,716 - ERROR - Error in episode 8287: name 'args' is not defined +2025-03-10 15:30:14,718 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,718 - ERROR - Error in episode 8288: name 'args' is not defined +2025-03-10 15:30:14,721 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,721 - ERROR - Error in episode 8289: name 'args' is not defined +2025-03-10 15:30:14,723 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,724 - ERROR - Error in episode 8290: name 'args' is not defined +2025-03-10 15:30:14,726 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,727 - ERROR - Error in episode 8291: name 'args' is not defined +2025-03-10 15:30:14,729 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,730 - ERROR - Error in episode 8292: name 'args' is not defined +2025-03-10 15:30:14,732 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,733 - ERROR - Error in episode 8293: name 'args' is not defined +2025-03-10 15:30:14,736 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,736 - ERROR - Error in episode 8294: name 'args' is not defined +2025-03-10 15:30:14,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,739 - ERROR - Error in episode 8295: name 'args' is not defined +2025-03-10 15:30:14,742 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,742 - ERROR - Error in episode 8296: name 'args' is not defined +2025-03-10 15:30:14,745 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,745 - ERROR - Error in episode 8297: name 'args' is not defined +2025-03-10 15:30:14,748 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,748 - ERROR - Error in episode 8298: name 'args' is not defined +2025-03-10 15:30:14,750 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,751 - ERROR - Error in episode 8299: name 'args' is not defined +2025-03-10 15:30:14,753 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,753 - ERROR - Error in episode 8300: name 'args' is not defined +2025-03-10 15:30:14,755 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,755 - ERROR - Error in episode 8301: name 'args' is not defined +2025-03-10 15:30:14,759 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,760 - ERROR - Error in episode 8302: name 'args' is not defined +2025-03-10 15:30:14,763 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,763 - ERROR - Error in episode 8303: name 'args' is not defined +2025-03-10 15:30:14,766 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,766 - ERROR - Error in episode 8304: name 'args' is not defined +2025-03-10 15:30:14,770 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,770 - ERROR - Error in episode 8305: name 'args' is not defined +2025-03-10 15:30:14,773 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,774 - ERROR - Error in episode 8306: name 'args' is not defined +2025-03-10 15:30:14,776 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,778 - ERROR - Error in episode 8307: name 'args' is not defined +2025-03-10 15:30:14,780 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,780 - ERROR - Error in episode 8308: name 'args' is not defined +2025-03-10 15:30:14,784 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,784 - ERROR - Error in episode 8309: name 'args' is not defined +2025-03-10 15:30:14,788 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,788 - ERROR - Error in episode 8310: name 'args' is not defined +2025-03-10 15:30:14,793 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,793 - ERROR - Error in episode 8311: name 'args' is not defined +2025-03-10 15:30:14,796 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,796 - ERROR - Error in episode 8312: name 'args' is not defined +2025-03-10 15:30:14,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,799 - ERROR - Error in episode 8313: name 'args' is not defined +2025-03-10 15:30:14,802 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,802 - ERROR - Error in episode 8314: name 'args' is not defined +2025-03-10 15:30:14,805 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,805 - ERROR - Error in episode 8315: name 'args' is not defined +2025-03-10 15:30:14,808 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,808 - ERROR - Error in episode 8316: name 'args' is not defined +2025-03-10 15:30:14,811 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,811 - ERROR - Error in episode 8317: name 'args' is not defined +2025-03-10 15:30:14,813 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,814 - ERROR - Error in episode 8318: name 'args' is not defined +2025-03-10 15:30:14,816 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,816 - ERROR - Error in episode 8319: name 'args' is not defined +2025-03-10 15:30:14,818 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,819 - ERROR - Error in episode 8320: name 'args' is not defined +2025-03-10 15:30:14,821 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,821 - ERROR - Error in episode 8321: name 'args' is not defined +2025-03-10 15:30:14,824 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,824 - ERROR - Error in episode 8322: name 'args' is not defined +2025-03-10 15:30:14,827 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,828 - ERROR - Error in episode 8323: name 'args' is not defined +2025-03-10 15:30:14,830 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,831 - ERROR - Error in episode 8324: name 'args' is not defined +2025-03-10 15:30:14,833 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,833 - ERROR - Error in episode 8325: name 'args' is not defined +2025-03-10 15:30:14,836 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,837 - ERROR - Error in episode 8326: name 'args' is not defined +2025-03-10 15:30:14,839 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,839 - ERROR - Error in episode 8327: name 'args' is not defined +2025-03-10 15:30:14,843 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,843 - ERROR - Error in episode 8328: name 'args' is not defined +2025-03-10 15:30:14,845 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,846 - ERROR - Error in episode 8329: name 'args' is not defined +2025-03-10 15:30:14,848 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,848 - ERROR - Error in episode 8330: name 'args' is not defined +2025-03-10 15:30:14,851 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,852 - ERROR - Error in episode 8331: name 'args' is not defined +2025-03-10 15:30:14,854 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,855 - ERROR - Error in episode 8332: name 'args' is not defined +2025-03-10 15:30:14,857 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,857 - ERROR - Error in episode 8333: name 'args' is not defined +2025-03-10 15:30:14,860 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,860 - ERROR - Error in episode 8334: name 'args' is not defined +2025-03-10 15:30:14,863 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,863 - ERROR - Error in episode 8335: name 'args' is not defined +2025-03-10 15:30:14,866 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,866 - ERROR - Error in episode 8336: name 'args' is not defined +2025-03-10 15:30:14,869 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,869 - ERROR - Error in episode 8337: name 'args' is not defined +2025-03-10 15:30:14,872 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,872 - ERROR - Error in episode 8338: name 'args' is not defined +2025-03-10 15:30:14,875 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,875 - ERROR - Error in episode 8339: name 'args' is not defined +2025-03-10 15:30:14,877 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,877 - ERROR - Error in episode 8340: name 'args' is not defined +2025-03-10 15:30:14,880 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,880 - ERROR - Error in episode 8341: name 'args' is not defined +2025-03-10 15:30:14,882 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,884 - ERROR - Error in episode 8342: name 'args' is not defined +2025-03-10 15:30:14,887 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,887 - ERROR - Error in episode 8343: name 'args' is not defined +2025-03-10 15:30:14,889 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,890 - ERROR - Error in episode 8344: name 'args' is not defined +2025-03-10 15:30:14,892 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,893 - ERROR - Error in episode 8345: name 'args' is not defined +2025-03-10 15:30:14,895 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,895 - ERROR - Error in episode 8346: name 'args' is not defined +2025-03-10 15:30:14,898 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,898 - ERROR - Error in episode 8347: name 'args' is not defined +2025-03-10 15:30:14,901 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,901 - ERROR - Error in episode 8348: name 'args' is not defined +2025-03-10 15:30:14,904 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,905 - ERROR - Error in episode 8349: name 'args' is not defined +2025-03-10 15:30:14,907 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,908 - ERROR - Error in episode 8350: name 'args' is not defined +2025-03-10 15:30:14,910 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,911 - ERROR - Error in episode 8351: name 'args' is not defined +2025-03-10 15:30:14,913 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,914 - ERROR - Error in episode 8352: name 'args' is not defined +2025-03-10 15:30:14,916 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,916 - ERROR - Error in episode 8353: name 'args' is not defined +2025-03-10 15:30:14,920 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,920 - ERROR - Error in episode 8354: name 'args' is not defined +2025-03-10 15:30:14,922 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,923 - ERROR - Error in episode 8355: name 'args' is not defined +2025-03-10 15:30:14,925 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,926 - ERROR - Error in episode 8356: name 'args' is not defined +2025-03-10 15:30:14,929 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,929 - ERROR - Error in episode 8357: name 'args' is not defined +2025-03-10 15:30:14,932 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,932 - ERROR - Error in episode 8358: name 'args' is not defined +2025-03-10 15:30:14,934 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,935 - ERROR - Error in episode 8359: name 'args' is not defined +2025-03-10 15:30:14,937 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,937 - ERROR - Error in episode 8360: name 'args' is not defined +2025-03-10 15:30:14,941 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,941 - ERROR - Error in episode 8361: name 'args' is not defined +2025-03-10 15:30:14,944 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,944 - ERROR - Error in episode 8362: name 'args' is not defined +2025-03-10 15:30:14,946 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,947 - ERROR - Error in episode 8363: name 'args' is not defined +2025-03-10 15:30:14,949 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,949 - ERROR - Error in episode 8364: name 'args' is not defined +2025-03-10 15:30:14,952 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,952 - ERROR - Error in episode 8365: name 'args' is not defined +2025-03-10 15:30:14,955 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,956 - ERROR - Error in episode 8366: name 'args' is not defined +2025-03-10 15:30:14,958 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,960 - ERROR - Error in episode 8367: name 'args' is not defined +2025-03-10 15:30:14,962 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,962 - ERROR - Error in episode 8368: name 'args' is not defined +2025-03-10 15:30:14,965 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,965 - ERROR - Error in episode 8369: name 'args' is not defined +2025-03-10 15:30:14,968 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,968 - ERROR - Error in episode 8370: name 'args' is not defined +2025-03-10 15:30:14,971 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,972 - ERROR - Error in episode 8371: name 'args' is not defined +2025-03-10 15:30:14,975 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,975 - ERROR - Error in episode 8372: name 'args' is not defined +2025-03-10 15:30:14,978 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,979 - ERROR - Error in episode 8373: name 'args' is not defined +2025-03-10 15:30:14,982 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,982 - ERROR - Error in episode 8374: name 'args' is not defined +2025-03-10 15:30:14,986 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,986 - ERROR - Error in episode 8375: name 'args' is not defined +2025-03-10 15:30:14,989 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,989 - ERROR - Error in episode 8376: name 'args' is not defined +2025-03-10 15:30:14,992 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,992 - ERROR - Error in episode 8377: name 'args' is not defined +2025-03-10 15:30:14,995 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,995 - ERROR - Error in episode 8378: name 'args' is not defined +2025-03-10 15:30:14,998 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:14,998 - ERROR - Error in episode 8379: name 'args' is not defined +2025-03-10 15:30:15,001 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,002 - ERROR - Error in episode 8380: name 'args' is not defined +2025-03-10 15:30:15,004 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,005 - ERROR - Error in episode 8381: name 'args' is not defined +2025-03-10 15:30:15,007 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,008 - ERROR - Error in episode 8382: name 'args' is not defined +2025-03-10 15:30:15,011 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,012 - ERROR - Error in episode 8383: name 'args' is not defined +2025-03-10 15:30:15,015 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,015 - ERROR - Error in episode 8384: name 'args' is not defined +2025-03-10 15:30:15,018 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,018 - ERROR - Error in episode 8385: name 'args' is not defined +2025-03-10 15:30:15,021 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,021 - ERROR - Error in episode 8386: name 'args' is not defined +2025-03-10 15:30:15,023 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,024 - ERROR - Error in episode 8387: name 'args' is not defined +2025-03-10 15:30:15,026 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,027 - ERROR - Error in episode 8388: name 'args' is not defined +2025-03-10 15:30:15,029 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,030 - ERROR - Error in episode 8389: name 'args' is not defined +2025-03-10 15:30:15,032 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,032 - ERROR - Error in episode 8390: name 'args' is not defined +2025-03-10 15:30:15,036 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,036 - ERROR - Error in episode 8391: name 'args' is not defined +2025-03-10 15:30:15,038 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,038 - ERROR - Error in episode 8392: name 'args' is not defined +2025-03-10 15:30:15,040 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,041 - ERROR - Error in episode 8393: name 'args' is not defined +2025-03-10 15:30:15,043 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,044 - ERROR - Error in episode 8394: name 'args' is not defined +2025-03-10 15:30:15,046 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,047 - ERROR - Error in episode 8395: name 'args' is not defined +2025-03-10 15:30:15,050 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,050 - ERROR - Error in episode 8396: name 'args' is not defined +2025-03-10 15:30:15,053 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,053 - ERROR - Error in episode 8397: name 'args' is not defined +2025-03-10 15:30:15,056 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,056 - ERROR - Error in episode 8398: name 'args' is not defined +2025-03-10 15:30:15,059 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,059 - ERROR - Error in episode 8399: name 'args' is not defined +2025-03-10 15:30:15,062 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,063 - ERROR - Error in episode 8400: name 'args' is not defined +2025-03-10 15:30:15,066 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,066 - ERROR - Error in episode 8401: name 'args' is not defined +2025-03-10 15:30:15,069 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,070 - ERROR - Error in episode 8402: name 'args' is not defined +2025-03-10 15:30:15,073 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,074 - ERROR - Error in episode 8403: name 'args' is not defined +2025-03-10 15:30:15,076 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,078 - ERROR - Error in episode 8404: name 'args' is not defined +2025-03-10 15:30:15,081 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,082 - ERROR - Error in episode 8405: name 'args' is not defined +2025-03-10 15:30:15,084 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,085 - ERROR - Error in episode 8406: name 'args' is not defined +2025-03-10 15:30:15,088 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,089 - ERROR - Error in episode 8407: name 'args' is not defined +2025-03-10 15:30:15,092 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,093 - ERROR - Error in episode 8408: name 'args' is not defined +2025-03-10 15:30:15,096 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,097 - ERROR - Error in episode 8409: name 'args' is not defined +2025-03-10 15:30:15,101 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,101 - ERROR - Error in episode 8410: name 'args' is not defined +2025-03-10 15:30:15,105 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,106 - ERROR - Error in episode 8411: name 'args' is not defined +2025-03-10 15:30:15,110 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,111 - ERROR - Error in episode 8412: name 'args' is not defined +2025-03-10 15:30:15,115 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,116 - ERROR - Error in episode 8413: name 'args' is not defined +2025-03-10 15:30:15,118 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,119 - ERROR - Error in episode 8414: name 'args' is not defined +2025-03-10 15:30:15,123 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,123 - ERROR - Error in episode 8415: name 'args' is not defined +2025-03-10 15:30:15,127 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,128 - ERROR - Error in episode 8416: name 'args' is not defined +2025-03-10 15:30:15,130 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,131 - ERROR - Error in episode 8417: name 'args' is not defined +2025-03-10 15:30:15,134 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,135 - ERROR - Error in episode 8418: name 'args' is not defined +2025-03-10 15:30:15,139 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,139 - ERROR - Error in episode 8419: name 'args' is not defined +2025-03-10 15:30:15,143 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,143 - ERROR - Error in episode 8420: name 'args' is not defined +2025-03-10 15:30:15,146 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,147 - ERROR - Error in episode 8421: name 'args' is not defined +2025-03-10 15:30:15,150 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,150 - ERROR - Error in episode 8422: name 'args' is not defined +2025-03-10 15:30:15,153 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,154 - ERROR - Error in episode 8423: name 'args' is not defined +2025-03-10 15:30:15,157 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,158 - ERROR - Error in episode 8424: name 'args' is not defined +2025-03-10 15:30:15,161 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,161 - ERROR - Error in episode 8425: name 'args' is not defined +2025-03-10 15:30:15,165 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,166 - ERROR - Error in episode 8426: name 'args' is not defined +2025-03-10 15:30:15,169 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,170 - ERROR - Error in episode 8427: name 'args' is not defined +2025-03-10 15:30:15,174 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,174 - ERROR - Error in episode 8428: name 'args' is not defined +2025-03-10 15:30:15,177 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,177 - ERROR - Error in episode 8429: name 'args' is not defined +2025-03-10 15:30:15,180 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,181 - ERROR - Error in episode 8430: name 'args' is not defined +2025-03-10 15:30:15,184 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,185 - ERROR - Error in episode 8431: name 'args' is not defined +2025-03-10 15:30:15,188 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,189 - ERROR - Error in episode 8432: name 'args' is not defined +2025-03-10 15:30:15,191 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,192 - ERROR - Error in episode 8433: name 'args' is not defined +2025-03-10 15:30:15,195 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,196 - ERROR - Error in episode 8434: name 'args' is not defined +2025-03-10 15:30:15,199 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,200 - ERROR - Error in episode 8435: name 'args' is not defined +2025-03-10 15:30:15,203 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,203 - ERROR - Error in episode 8436: name 'args' is not defined +2025-03-10 15:30:15,206 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,206 - ERROR - Error in episode 8437: name 'args' is not defined +2025-03-10 15:30:15,210 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,210 - ERROR - Error in episode 8438: name 'args' is not defined +2025-03-10 15:30:15,212 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,213 - ERROR - Error in episode 8439: name 'args' is not defined +2025-03-10 15:30:15,217 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,217 - ERROR - Error in episode 8440: name 'args' is not defined +2025-03-10 15:30:15,220 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,222 - ERROR - Error in episode 8441: name 'args' is not defined +2025-03-10 15:30:15,225 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,225 - ERROR - Error in episode 8442: name 'args' is not defined +2025-03-10 15:30:15,228 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,228 - ERROR - Error in episode 8443: name 'args' is not defined +2025-03-10 15:30:15,232 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,232 - ERROR - Error in episode 8444: name 'args' is not defined +2025-03-10 15:30:15,235 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,235 - ERROR - Error in episode 8445: name 'args' is not defined +2025-03-10 15:30:15,239 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,239 - ERROR - Error in episode 8446: name 'args' is not defined +2025-03-10 15:30:15,241 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,242 - ERROR - Error in episode 8447: name 'args' is not defined +2025-03-10 15:30:15,244 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,244 - ERROR - Error in episode 8448: name 'args' is not defined +2025-03-10 15:30:15,247 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,248 - ERROR - Error in episode 8449: name 'args' is not defined +2025-03-10 15:30:15,250 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,251 - ERROR - Error in episode 8450: name 'args' is not defined +2025-03-10 15:30:15,253 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,254 - ERROR - Error in episode 8451: name 'args' is not defined +2025-03-10 15:30:15,257 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,257 - ERROR - Error in episode 8452: name 'args' is not defined +2025-03-10 15:30:15,259 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,259 - ERROR - Error in episode 8453: name 'args' is not defined +2025-03-10 15:30:15,262 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,262 - ERROR - Error in episode 8454: name 'args' is not defined +2025-03-10 15:30:15,264 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,265 - ERROR - Error in episode 8455: name 'args' is not defined +2025-03-10 15:30:15,267 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,267 - ERROR - Error in episode 8456: name 'args' is not defined +2025-03-10 15:30:15,271 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,271 - ERROR - Error in episode 8457: name 'args' is not defined +2025-03-10 15:30:15,274 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,275 - ERROR - Error in episode 8458: name 'args' is not defined +2025-03-10 15:30:15,277 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,278 - ERROR - Error in episode 8459: name 'args' is not defined +2025-03-10 15:30:15,280 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,281 - ERROR - Error in episode 8460: name 'args' is not defined +2025-03-10 15:30:15,283 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,283 - ERROR - Error in episode 8461: name 'args' is not defined +2025-03-10 15:30:15,286 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,286 - ERROR - Error in episode 8462: name 'args' is not defined +2025-03-10 15:30:15,290 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,290 - ERROR - Error in episode 8463: name 'args' is not defined +2025-03-10 15:30:15,293 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,293 - ERROR - Error in episode 8464: name 'args' is not defined +2025-03-10 15:30:15,296 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,296 - ERROR - Error in episode 8465: name 'args' is not defined +2025-03-10 15:30:15,299 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,299 - ERROR - Error in episode 8466: name 'args' is not defined +2025-03-10 15:30:15,302 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,302 - ERROR - Error in episode 8467: name 'args' is not defined +2025-03-10 15:30:15,305 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,305 - ERROR - Error in episode 8468: name 'args' is not defined +2025-03-10 15:30:15,308 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,308 - ERROR - Error in episode 8469: name 'args' is not defined +2025-03-10 15:30:15,311 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,311 - ERROR - Error in episode 8470: name 'args' is not defined +2025-03-10 15:30:15,314 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,314 - ERROR - Error in episode 8471: name 'args' is not defined +2025-03-10 15:30:15,318 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,318 - ERROR - Error in episode 8472: name 'args' is not defined +2025-03-10 15:30:15,320 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,321 - ERROR - Error in episode 8473: name 'args' is not defined +2025-03-10 15:30:15,323 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,323 - ERROR - Error in episode 8474: name 'args' is not defined +2025-03-10 15:30:15,326 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,326 - ERROR - Error in episode 8475: name 'args' is not defined +2025-03-10 15:30:15,329 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,329 - ERROR - Error in episode 8476: name 'args' is not defined +2025-03-10 15:30:15,331 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,332 - ERROR - Error in episode 8477: name 'args' is not defined +2025-03-10 15:30:15,334 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,335 - ERROR - Error in episode 8478: name 'args' is not defined +2025-03-10 15:30:15,338 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,338 - ERROR - Error in episode 8479: name 'args' is not defined +2025-03-10 15:30:15,341 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,341 - ERROR - Error in episode 8480: name 'args' is not defined +2025-03-10 15:30:15,344 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,344 - ERROR - Error in episode 8481: name 'args' is not defined +2025-03-10 15:30:15,346 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,347 - ERROR - Error in episode 8482: name 'args' is not defined +2025-03-10 15:30:15,349 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,349 - ERROR - Error in episode 8483: name 'args' is not defined +2025-03-10 15:30:15,353 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,353 - ERROR - Error in episode 8484: name 'args' is not defined +2025-03-10 15:30:15,356 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,357 - ERROR - Error in episode 8485: name 'args' is not defined +2025-03-10 15:30:15,360 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,360 - ERROR - Error in episode 8486: name 'args' is not defined +2025-03-10 15:30:15,363 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,364 - ERROR - Error in episode 8487: name 'args' is not defined +2025-03-10 15:30:15,366 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,366 - ERROR - Error in episode 8488: name 'args' is not defined +2025-03-10 15:30:15,369 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,369 - ERROR - Error in episode 8489: name 'args' is not defined +2025-03-10 15:30:15,372 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,372 - ERROR - Error in episode 8490: name 'args' is not defined +2025-03-10 15:30:15,375 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,376 - ERROR - Error in episode 8491: name 'args' is not defined +2025-03-10 15:30:15,378 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,379 - ERROR - Error in episode 8492: name 'args' is not defined +2025-03-10 15:30:15,381 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,381 - ERROR - Error in episode 8493: name 'args' is not defined +2025-03-10 15:30:15,384 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,385 - ERROR - Error in episode 8494: name 'args' is not defined +2025-03-10 15:30:15,387 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,387 - ERROR - Error in episode 8495: name 'args' is not defined +2025-03-10 15:30:15,391 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,391 - ERROR - Error in episode 8496: name 'args' is not defined +2025-03-10 15:30:15,393 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,394 - ERROR - Error in episode 8497: name 'args' is not defined +2025-03-10 15:30:15,396 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,397 - ERROR - Error in episode 8498: name 'args' is not defined +2025-03-10 15:30:15,400 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,400 - ERROR - Error in episode 8499: name 'args' is not defined +2025-03-10 15:30:15,403 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,403 - ERROR - Error in episode 8500: name 'args' is not defined +2025-03-10 15:30:15,407 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,408 - ERROR - Error in episode 8501: name 'args' is not defined +2025-03-10 15:30:15,411 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,411 - ERROR - Error in episode 8502: name 'args' is not defined +2025-03-10 15:30:15,414 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,414 - ERROR - Error in episode 8503: name 'args' is not defined +2025-03-10 15:30:15,417 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,417 - ERROR - Error in episode 8504: name 'args' is not defined +2025-03-10 15:30:15,420 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,420 - ERROR - Error in episode 8505: name 'args' is not defined +2025-03-10 15:30:15,423 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,424 - ERROR - Error in episode 8506: name 'args' is not defined +2025-03-10 15:30:15,426 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,426 - ERROR - Error in episode 8507: name 'args' is not defined +2025-03-10 15:30:15,429 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,429 - ERROR - Error in episode 8508: name 'args' is not defined +2025-03-10 15:30:15,433 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,433 - ERROR - Error in episode 8509: name 'args' is not defined +2025-03-10 15:30:15,437 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,437 - ERROR - Error in episode 8510: name 'args' is not defined +2025-03-10 15:30:15,439 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,440 - ERROR - Error in episode 8511: name 'args' is not defined +2025-03-10 15:30:15,442 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,442 - ERROR - Error in episode 8512: name 'args' is not defined +2025-03-10 15:30:15,445 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,445 - ERROR - Error in episode 8513: name 'args' is not defined +2025-03-10 15:30:15,448 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,448 - ERROR - Error in episode 8514: name 'args' is not defined +2025-03-10 15:30:15,452 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,452 - ERROR - Error in episode 8515: name 'args' is not defined +2025-03-10 15:30:15,454 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,455 - ERROR - Error in episode 8516: name 'args' is not defined +2025-03-10 15:30:15,457 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,458 - ERROR - Error in episode 8517: name 'args' is not defined +2025-03-10 15:30:15,460 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,460 - ERROR - Error in episode 8518: name 'args' is not defined +2025-03-10 15:30:15,462 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,463 - ERROR - Error in episode 8519: name 'args' is not defined +2025-03-10 15:30:15,466 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,466 - ERROR - Error in episode 8520: name 'args' is not defined +2025-03-10 15:30:15,469 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,470 - ERROR - Error in episode 8521: name 'args' is not defined +2025-03-10 15:30:15,473 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,473 - ERROR - Error in episode 8522: name 'args' is not defined +2025-03-10 15:30:15,476 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,476 - ERROR - Error in episode 8523: name 'args' is not defined +2025-03-10 15:30:15,478 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,479 - ERROR - Error in episode 8524: name 'args' is not defined +2025-03-10 15:30:15,481 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,481 - ERROR - Error in episode 8525: name 'args' is not defined +2025-03-10 15:30:15,484 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,484 - ERROR - Error in episode 8526: name 'args' is not defined +2025-03-10 15:30:15,487 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,488 - ERROR - Error in episode 8527: name 'args' is not defined +2025-03-10 15:30:15,490 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,490 - ERROR - Error in episode 8528: name 'args' is not defined +2025-03-10 15:30:15,493 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,493 - ERROR - Error in episode 8529: name 'args' is not defined +2025-03-10 15:30:15,496 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,496 - ERROR - Error in episode 8530: name 'args' is not defined +2025-03-10 15:30:15,499 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,499 - ERROR - Error in episode 8531: name 'args' is not defined +2025-03-10 15:30:15,502 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,502 - ERROR - Error in episode 8532: name 'args' is not defined +2025-03-10 15:30:15,505 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,506 - ERROR - Error in episode 8533: name 'args' is not defined +2025-03-10 15:30:15,508 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,509 - ERROR - Error in episode 8534: name 'args' is not defined +2025-03-10 15:30:15,512 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,512 - ERROR - Error in episode 8535: name 'args' is not defined +2025-03-10 15:30:15,515 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,515 - ERROR - Error in episode 8536: name 'args' is not defined +2025-03-10 15:30:15,518 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,518 - ERROR - Error in episode 8537: name 'args' is not defined +2025-03-10 15:30:15,520 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,520 - ERROR - Error in episode 8538: name 'args' is not defined +2025-03-10 15:30:15,523 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,523 - ERROR - Error in episode 8539: name 'args' is not defined +2025-03-10 15:30:15,526 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,526 - ERROR - Error in episode 8540: name 'args' is not defined +2025-03-10 15:30:15,528 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,529 - ERROR - Error in episode 8541: name 'args' is not defined +2025-03-10 15:30:15,531 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,531 - ERROR - Error in episode 8542: name 'args' is not defined +2025-03-10 15:30:15,534 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,535 - ERROR - Error in episode 8543: name 'args' is not defined +2025-03-10 15:30:15,537 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,538 - ERROR - Error in episode 8544: name 'args' is not defined +2025-03-10 15:30:15,540 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,540 - ERROR - Error in episode 8545: name 'args' is not defined +2025-03-10 15:30:15,544 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,544 - ERROR - Error in episode 8546: name 'args' is not defined +2025-03-10 15:30:15,547 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,547 - ERROR - Error in episode 8547: name 'args' is not defined +2025-03-10 15:30:15,551 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,551 - ERROR - Error in episode 8548: name 'args' is not defined +2025-03-10 15:30:15,554 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,554 - ERROR - Error in episode 8549: name 'args' is not defined +2025-03-10 15:30:15,557 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,557 - ERROR - Error in episode 8550: name 'args' is not defined +2025-03-10 15:30:15,559 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,560 - ERROR - Error in episode 8551: name 'args' is not defined +2025-03-10 15:30:15,562 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,562 - ERROR - Error in episode 8552: name 'args' is not defined +2025-03-10 15:30:15,565 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,565 - ERROR - Error in episode 8553: name 'args' is not defined +2025-03-10 15:30:15,568 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,569 - ERROR - Error in episode 8554: name 'args' is not defined +2025-03-10 15:30:15,571 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,572 - ERROR - Error in episode 8555: name 'args' is not defined +2025-03-10 15:30:15,574 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,575 - ERROR - Error in episode 8556: name 'args' is not defined +2025-03-10 15:30:15,577 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,578 - ERROR - Error in episode 8557: name 'args' is not defined +2025-03-10 15:30:15,580 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,581 - ERROR - Error in episode 8558: name 'args' is not defined +2025-03-10 15:30:15,583 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,584 - ERROR - Error in episode 8559: name 'args' is not defined +2025-03-10 15:30:15,586 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,586 - ERROR - Error in episode 8560: name 'args' is not defined +2025-03-10 15:30:15,589 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,590 - ERROR - Error in episode 8561: name 'args' is not defined +2025-03-10 15:30:15,592 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,593 - ERROR - Error in episode 8562: name 'args' is not defined +2025-03-10 15:30:15,595 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,595 - ERROR - Error in episode 8563: name 'args' is not defined +2025-03-10 15:30:15,598 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,599 - ERROR - Error in episode 8564: name 'args' is not defined +2025-03-10 15:30:15,602 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,602 - ERROR - Error in episode 8565: name 'args' is not defined +2025-03-10 15:30:15,604 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,605 - ERROR - Error in episode 8566: name 'args' is not defined +2025-03-10 15:30:15,607 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,607 - ERROR - Error in episode 8567: name 'args' is not defined +2025-03-10 15:30:15,610 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,611 - ERROR - Error in episode 8568: name 'args' is not defined +2025-03-10 15:30:15,613 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,614 - ERROR - Error in episode 8569: name 'args' is not defined +2025-03-10 15:30:15,616 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,616 - ERROR - Error in episode 8570: name 'args' is not defined +2025-03-10 15:30:15,619 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,619 - ERROR - Error in episode 8571: name 'args' is not defined +2025-03-10 15:30:15,622 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,622 - ERROR - Error in episode 8572: name 'args' is not defined +2025-03-10 15:30:15,625 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,625 - ERROR - Error in episode 8573: name 'args' is not defined +2025-03-10 15:30:15,628 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,629 - ERROR - Error in episode 8574: name 'args' is not defined +2025-03-10 15:30:15,631 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,632 - ERROR - Error in episode 8575: name 'args' is not defined +2025-03-10 15:30:15,634 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,634 - ERROR - Error in episode 8576: name 'args' is not defined +2025-03-10 15:30:15,636 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,636 - ERROR - Error in episode 8577: name 'args' is not defined +2025-03-10 15:30:15,639 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,640 - ERROR - Error in episode 8578: name 'args' is not defined +2025-03-10 15:30:15,642 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,642 - ERROR - Error in episode 8579: name 'args' is not defined +2025-03-10 15:30:15,645 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,646 - ERROR - Error in episode 8580: name 'args' is not defined +2025-03-10 15:30:15,649 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,649 - ERROR - Error in episode 8581: name 'args' is not defined +2025-03-10 15:30:15,651 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,652 - ERROR - Error in episode 8582: name 'args' is not defined +2025-03-10 15:30:15,654 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,654 - ERROR - Error in episode 8583: name 'args' is not defined +2025-03-10 15:30:15,657 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,657 - ERROR - Error in episode 8584: name 'args' is not defined +2025-03-10 15:30:15,660 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,661 - ERROR - Error in episode 8585: name 'args' is not defined +2025-03-10 15:30:15,664 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,665 - ERROR - Error in episode 8586: name 'args' is not defined +2025-03-10 15:30:15,667 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,668 - ERROR - Error in episode 8587: name 'args' is not defined +2025-03-10 15:30:15,670 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,670 - ERROR - Error in episode 8588: name 'args' is not defined +2025-03-10 15:30:15,673 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,674 - ERROR - Error in episode 8589: name 'args' is not defined +2025-03-10 15:30:15,676 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,677 - ERROR - Error in episode 8590: name 'args' is not defined +2025-03-10 15:30:15,680 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,680 - ERROR - Error in episode 8591: name 'args' is not defined +2025-03-10 15:30:15,683 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,683 - ERROR - Error in episode 8592: name 'args' is not defined +2025-03-10 15:30:15,686 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,686 - ERROR - Error in episode 8593: name 'args' is not defined +2025-03-10 15:30:15,689 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,689 - ERROR - Error in episode 8594: name 'args' is not defined +2025-03-10 15:30:15,692 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,692 - ERROR - Error in episode 8595: name 'args' is not defined +2025-03-10 15:30:15,694 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,695 - ERROR - Error in episode 8596: name 'args' is not defined +2025-03-10 15:30:15,698 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,698 - ERROR - Error in episode 8597: name 'args' is not defined +2025-03-10 15:30:15,700 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,700 - ERROR - Error in episode 8598: name 'args' is not defined +2025-03-10 15:30:15,703 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,703 - ERROR - Error in episode 8599: name 'args' is not defined +2025-03-10 15:30:15,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,707 - ERROR - Error in episode 8600: name 'args' is not defined +2025-03-10 15:30:15,710 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,710 - ERROR - Error in episode 8601: name 'args' is not defined +2025-03-10 15:30:15,712 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,713 - ERROR - Error in episode 8602: name 'args' is not defined +2025-03-10 15:30:15,715 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,716 - ERROR - Error in episode 8603: name 'args' is not defined +2025-03-10 15:30:15,718 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,718 - ERROR - Error in episode 8604: name 'args' is not defined +2025-03-10 15:30:15,721 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,721 - ERROR - Error in episode 8605: name 'args' is not defined +2025-03-10 15:30:15,724 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,724 - ERROR - Error in episode 8606: name 'args' is not defined +2025-03-10 15:30:15,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,727 - ERROR - Error in episode 8607: name 'args' is not defined +2025-03-10 15:30:15,729 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,730 - ERROR - Error in episode 8608: name 'args' is not defined +2025-03-10 15:30:15,732 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,733 - ERROR - Error in episode 8609: name 'args' is not defined +2025-03-10 15:30:15,735 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,735 - ERROR - Error in episode 8610: name 'args' is not defined +2025-03-10 15:30:15,739 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,739 - ERROR - Error in episode 8611: name 'args' is not defined +2025-03-10 15:30:15,742 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,742 - ERROR - Error in episode 8612: name 'args' is not defined +2025-03-10 15:30:15,745 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,745 - ERROR - Error in episode 8613: name 'args' is not defined +2025-03-10 15:30:15,748 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,748 - ERROR - Error in episode 8614: name 'args' is not defined +2025-03-10 15:30:15,751 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,751 - ERROR - Error in episode 8615: name 'args' is not defined +2025-03-10 15:30:15,753 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,754 - ERROR - Error in episode 8616: name 'args' is not defined +2025-03-10 15:30:15,756 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,756 - ERROR - Error in episode 8617: name 'args' is not defined +2025-03-10 15:30:15,759 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,759 - ERROR - Error in episode 8618: name 'args' is not defined +2025-03-10 15:30:15,762 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,762 - ERROR - Error in episode 8619: name 'args' is not defined +2025-03-10 15:30:15,765 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,765 - ERROR - Error in episode 8620: name 'args' is not defined +2025-03-10 15:30:15,768 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,768 - ERROR - Error in episode 8621: name 'args' is not defined +2025-03-10 15:30:15,771 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,771 - ERROR - Error in episode 8622: name 'args' is not defined +2025-03-10 15:30:15,773 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,774 - ERROR - Error in episode 8623: name 'args' is not defined +2025-03-10 15:30:15,777 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,777 - ERROR - Error in episode 8624: name 'args' is not defined +2025-03-10 15:30:15,780 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,780 - ERROR - Error in episode 8625: name 'args' is not defined +2025-03-10 15:30:15,783 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,783 - ERROR - Error in episode 8626: name 'args' is not defined +2025-03-10 15:30:15,786 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,786 - ERROR - Error in episode 8627: name 'args' is not defined +2025-03-10 15:30:15,790 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,790 - ERROR - Error in episode 8628: name 'args' is not defined +2025-03-10 15:30:15,792 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,792 - ERROR - Error in episode 8629: name 'args' is not defined +2025-03-10 15:30:15,795 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,796 - ERROR - Error in episode 8630: name 'args' is not defined +2025-03-10 15:30:15,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,798 - ERROR - Error in episode 8631: name 'args' is not defined +2025-03-10 15:30:15,801 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,801 - ERROR - Error in episode 8632: name 'args' is not defined +2025-03-10 15:30:15,804 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,804 - ERROR - Error in episode 8633: name 'args' is not defined +2025-03-10 15:30:15,807 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,807 - ERROR - Error in episode 8634: name 'args' is not defined +2025-03-10 15:30:15,810 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,810 - ERROR - Error in episode 8635: name 'args' is not defined +2025-03-10 15:30:15,813 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,813 - ERROR - Error in episode 8636: name 'args' is not defined +2025-03-10 15:30:15,817 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,817 - ERROR - Error in episode 8637: name 'args' is not defined +2025-03-10 15:30:15,820 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,820 - ERROR - Error in episode 8638: name 'args' is not defined +2025-03-10 15:30:15,823 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,823 - ERROR - Error in episode 8639: name 'args' is not defined +2025-03-10 15:30:15,826 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,826 - ERROR - Error in episode 8640: name 'args' is not defined +2025-03-10 15:30:15,829 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,830 - ERROR - Error in episode 8641: name 'args' is not defined +2025-03-10 15:30:15,832 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,832 - ERROR - Error in episode 8642: name 'args' is not defined +2025-03-10 15:30:15,835 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,836 - ERROR - Error in episode 8643: name 'args' is not defined +2025-03-10 15:30:15,838 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,838 - ERROR - Error in episode 8644: name 'args' is not defined +2025-03-10 15:30:15,841 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,841 - ERROR - Error in episode 8645: name 'args' is not defined +2025-03-10 15:30:15,844 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,845 - ERROR - Error in episode 8646: name 'args' is not defined +2025-03-10 15:30:15,847 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,847 - ERROR - Error in episode 8647: name 'args' is not defined +2025-03-10 15:30:15,850 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,850 - ERROR - Error in episode 8648: name 'args' is not defined +2025-03-10 15:30:15,853 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,854 - ERROR - Error in episode 8649: name 'args' is not defined +2025-03-10 15:30:15,856 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,856 - ERROR - Error in episode 8650: name 'args' is not defined +2025-03-10 15:30:15,860 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,860 - ERROR - Error in episode 8651: name 'args' is not defined +2025-03-10 15:30:15,862 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,862 - ERROR - Error in episode 8652: name 'args' is not defined +2025-03-10 15:30:15,866 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,866 - ERROR - Error in episode 8653: name 'args' is not defined +2025-03-10 15:30:15,868 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,869 - ERROR - Error in episode 8654: name 'args' is not defined +2025-03-10 15:30:15,872 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,872 - ERROR - Error in episode 8655: name 'args' is not defined +2025-03-10 15:30:15,874 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,875 - ERROR - Error in episode 8656: name 'args' is not defined +2025-03-10 15:30:15,878 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,878 - ERROR - Error in episode 8657: name 'args' is not defined +2025-03-10 15:30:15,881 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,882 - ERROR - Error in episode 8658: name 'args' is not defined +2025-03-10 15:30:15,884 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,885 - ERROR - Error in episode 8659: name 'args' is not defined +2025-03-10 15:30:15,887 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,887 - ERROR - Error in episode 8660: name 'args' is not defined +2025-03-10 15:30:15,890 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,890 - ERROR - Error in episode 8661: name 'args' is not defined +2025-03-10 15:30:15,893 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,893 - ERROR - Error in episode 8662: name 'args' is not defined +2025-03-10 15:30:15,895 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,896 - ERROR - Error in episode 8663: name 'args' is not defined +2025-03-10 15:30:15,899 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,899 - ERROR - Error in episode 8664: name 'args' is not defined +2025-03-10 15:30:15,902 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,903 - ERROR - Error in episode 8665: name 'args' is not defined +2025-03-10 15:30:15,905 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,906 - ERROR - Error in episode 8666: name 'args' is not defined +2025-03-10 15:30:15,908 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,908 - ERROR - Error in episode 8667: name 'args' is not defined +2025-03-10 15:30:15,911 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,912 - ERROR - Error in episode 8668: name 'args' is not defined +2025-03-10 15:30:15,914 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,914 - ERROR - Error in episode 8669: name 'args' is not defined +2025-03-10 15:30:15,917 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,917 - ERROR - Error in episode 8670: name 'args' is not defined +2025-03-10 15:30:15,920 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,920 - ERROR - Error in episode 8671: name 'args' is not defined +2025-03-10 15:30:15,922 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,922 - ERROR - Error in episode 8672: name 'args' is not defined +2025-03-10 15:30:15,926 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,926 - ERROR - Error in episode 8673: name 'args' is not defined +2025-03-10 15:30:15,929 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,929 - ERROR - Error in episode 8674: name 'args' is not defined +2025-03-10 15:30:15,932 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,932 - ERROR - Error in episode 8675: name 'args' is not defined +2025-03-10 15:30:15,935 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,935 - ERROR - Error in episode 8676: name 'args' is not defined +2025-03-10 15:30:15,938 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,938 - ERROR - Error in episode 8677: name 'args' is not defined +2025-03-10 15:30:15,940 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,941 - ERROR - Error in episode 8678: name 'args' is not defined +2025-03-10 15:30:15,944 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,945 - ERROR - Error in episode 8679: name 'args' is not defined +2025-03-10 15:30:15,947 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,947 - ERROR - Error in episode 8680: name 'args' is not defined +2025-03-10 15:30:15,949 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,950 - ERROR - Error in episode 8681: name 'args' is not defined +2025-03-10 15:30:15,952 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,953 - ERROR - Error in episode 8682: name 'args' is not defined +2025-03-10 15:30:15,956 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,956 - ERROR - Error in episode 8683: name 'args' is not defined +2025-03-10 15:30:15,958 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,959 - ERROR - Error in episode 8684: name 'args' is not defined +2025-03-10 15:30:15,962 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,962 - ERROR - Error in episode 8685: name 'args' is not defined +2025-03-10 15:30:15,965 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,966 - ERROR - Error in episode 8686: name 'args' is not defined +2025-03-10 15:30:15,968 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,968 - ERROR - Error in episode 8687: name 'args' is not defined +2025-03-10 15:30:15,971 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,971 - ERROR - Error in episode 8688: name 'args' is not defined +2025-03-10 15:30:15,974 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,974 - ERROR - Error in episode 8689: name 'args' is not defined +2025-03-10 15:30:15,977 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,977 - ERROR - Error in episode 8690: name 'args' is not defined +2025-03-10 15:30:15,980 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,980 - ERROR - Error in episode 8691: name 'args' is not defined +2025-03-10 15:30:15,983 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,983 - ERROR - Error in episode 8692: name 'args' is not defined +2025-03-10 15:30:15,985 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,986 - ERROR - Error in episode 8693: name 'args' is not defined +2025-03-10 15:30:15,988 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,989 - ERROR - Error in episode 8694: name 'args' is not defined +2025-03-10 15:30:15,992 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,992 - ERROR - Error in episode 8695: name 'args' is not defined +2025-03-10 15:30:15,995 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,995 - ERROR - Error in episode 8696: name 'args' is not defined +2025-03-10 15:30:15,998 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:15,998 - ERROR - Error in episode 8697: name 'args' is not defined +2025-03-10 15:30:16,000 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,001 - ERROR - Error in episode 8698: name 'args' is not defined +2025-03-10 15:30:16,003 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,003 - ERROR - Error in episode 8699: name 'args' is not defined +2025-03-10 15:30:16,006 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,007 - ERROR - Error in episode 8700: name 'args' is not defined +2025-03-10 15:30:16,010 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,010 - ERROR - Error in episode 8701: name 'args' is not defined +2025-03-10 15:30:16,012 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,013 - ERROR - Error in episode 8702: name 'args' is not defined +2025-03-10 15:30:16,016 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,016 - ERROR - Error in episode 8703: name 'args' is not defined +2025-03-10 15:30:16,019 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,019 - ERROR - Error in episode 8704: name 'args' is not defined +2025-03-10 15:30:16,021 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,022 - ERROR - Error in episode 8705: name 'args' is not defined +2025-03-10 15:30:16,024 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,025 - ERROR - Error in episode 8706: name 'args' is not defined +2025-03-10 15:30:16,027 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,027 - ERROR - Error in episode 8707: name 'args' is not defined +2025-03-10 15:30:16,030 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,030 - ERROR - Error in episode 8708: name 'args' is not defined +2025-03-10 15:30:16,033 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,033 - ERROR - Error in episode 8709: name 'args' is not defined +2025-03-10 15:30:16,036 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,036 - ERROR - Error in episode 8710: name 'args' is not defined +2025-03-10 15:30:16,039 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,040 - ERROR - Error in episode 8711: name 'args' is not defined +2025-03-10 15:30:16,042 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,042 - ERROR - Error in episode 8712: name 'args' is not defined +2025-03-10 15:30:16,044 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,045 - ERROR - Error in episode 8713: name 'args' is not defined +2025-03-10 15:30:16,047 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,049 - ERROR - Error in episode 8714: name 'args' is not defined +2025-03-10 15:30:16,051 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,051 - ERROR - Error in episode 8715: name 'args' is not defined +2025-03-10 15:30:16,053 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,054 - ERROR - Error in episode 8716: name 'args' is not defined +2025-03-10 15:30:16,056 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,058 - ERROR - Error in episode 8717: name 'args' is not defined +2025-03-10 15:30:16,061 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,061 - ERROR - Error in episode 8718: name 'args' is not defined +2025-03-10 15:30:16,064 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,064 - ERROR - Error in episode 8719: name 'args' is not defined +2025-03-10 15:30:16,066 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,067 - ERROR - Error in episode 8720: name 'args' is not defined +2025-03-10 15:30:16,069 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,069 - ERROR - Error in episode 8721: name 'args' is not defined +2025-03-10 15:30:16,072 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,072 - ERROR - Error in episode 8722: name 'args' is not defined +2025-03-10 15:30:16,075 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,075 - ERROR - Error in episode 8723: name 'args' is not defined +2025-03-10 15:30:16,077 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,078 - ERROR - Error in episode 8724: name 'args' is not defined +2025-03-10 15:30:16,080 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,081 - ERROR - Error in episode 8725: name 'args' is not defined +2025-03-10 15:30:16,083 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,083 - ERROR - Error in episode 8726: name 'args' is not defined +2025-03-10 15:30:16,086 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,086 - ERROR - Error in episode 8727: name 'args' is not defined +2025-03-10 15:30:16,090 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,090 - ERROR - Error in episode 8728: name 'args' is not defined +2025-03-10 15:30:16,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,094 - ERROR - Error in episode 8729: name 'args' is not defined +2025-03-10 15:30:16,096 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,097 - ERROR - Error in episode 8730: name 'args' is not defined +2025-03-10 15:30:16,100 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,100 - ERROR - Error in episode 8731: name 'args' is not defined +2025-03-10 15:30:16,103 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,103 - ERROR - Error in episode 8732: name 'args' is not defined +2025-03-10 15:30:16,106 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,106 - ERROR - Error in episode 8733: name 'args' is not defined +2025-03-10 15:30:16,109 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,109 - ERROR - Error in episode 8734: name 'args' is not defined +2025-03-10 15:30:16,112 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,113 - ERROR - Error in episode 8735: name 'args' is not defined +2025-03-10 15:30:16,116 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,116 - ERROR - Error in episode 8736: name 'args' is not defined +2025-03-10 15:30:16,119 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,119 - ERROR - Error in episode 8737: name 'args' is not defined +2025-03-10 15:30:16,121 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,122 - ERROR - Error in episode 8738: name 'args' is not defined +2025-03-10 15:30:16,124 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,125 - ERROR - Error in episode 8739: name 'args' is not defined +2025-03-10 15:30:16,128 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,128 - ERROR - Error in episode 8740: name 'args' is not defined +2025-03-10 15:30:16,131 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,131 - ERROR - Error in episode 8741: name 'args' is not defined +2025-03-10 15:30:16,133 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,134 - ERROR - Error in episode 8742: name 'args' is not defined +2025-03-10 15:30:16,136 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,137 - ERROR - Error in episode 8743: name 'args' is not defined +2025-03-10 15:30:16,140 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,140 - ERROR - Error in episode 8744: name 'args' is not defined +2025-03-10 15:30:16,143 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,143 - ERROR - Error in episode 8745: name 'args' is not defined +2025-03-10 15:30:16,146 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,146 - ERROR - Error in episode 8746: name 'args' is not defined +2025-03-10 15:30:16,149 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,149 - ERROR - Error in episode 8747: name 'args' is not defined +2025-03-10 15:30:16,151 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,152 - ERROR - Error in episode 8748: name 'args' is not defined +2025-03-10 15:30:16,154 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,155 - ERROR - Error in episode 8749: name 'args' is not defined +2025-03-10 15:30:16,158 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,158 - ERROR - Error in episode 8750: name 'args' is not defined +2025-03-10 15:30:16,160 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,161 - ERROR - Error in episode 8751: name 'args' is not defined +2025-03-10 15:30:16,163 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,164 - ERROR - Error in episode 8752: name 'args' is not defined +2025-03-10 15:30:16,166 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,167 - ERROR - Error in episode 8753: name 'args' is not defined +2025-03-10 15:30:16,170 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,171 - ERROR - Error in episode 8754: name 'args' is not defined +2025-03-10 15:30:16,173 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,174 - ERROR - Error in episode 8755: name 'args' is not defined +2025-03-10 15:30:16,176 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,177 - ERROR - Error in episode 8756: name 'args' is not defined +2025-03-10 15:30:16,180 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,180 - ERROR - Error in episode 8757: name 'args' is not defined +2025-03-10 15:30:16,184 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,184 - ERROR - Error in episode 8758: name 'args' is not defined +2025-03-10 15:30:16,187 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,187 - ERROR - Error in episode 8759: name 'args' is not defined +2025-03-10 15:30:16,190 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,190 - ERROR - Error in episode 8760: name 'args' is not defined +2025-03-10 15:30:16,193 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,193 - ERROR - Error in episode 8761: name 'args' is not defined +2025-03-10 15:30:16,196 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,196 - ERROR - Error in episode 8762: name 'args' is not defined +2025-03-10 15:30:16,199 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,199 - ERROR - Error in episode 8763: name 'args' is not defined +2025-03-10 15:30:16,202 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,202 - ERROR - Error in episode 8764: name 'args' is not defined +2025-03-10 15:30:16,205 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,205 - ERROR - Error in episode 8765: name 'args' is not defined +2025-03-10 15:30:16,208 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,209 - ERROR - Error in episode 8766: name 'args' is not defined +2025-03-10 15:30:16,211 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,212 - ERROR - Error in episode 8767: name 'args' is not defined +2025-03-10 15:30:16,215 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,215 - ERROR - Error in episode 8768: name 'args' is not defined +2025-03-10 15:30:16,218 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,218 - ERROR - Error in episode 8769: name 'args' is not defined +2025-03-10 15:30:16,221 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,222 - ERROR - Error in episode 8770: name 'args' is not defined +2025-03-10 15:30:16,225 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,225 - ERROR - Error in episode 8771: name 'args' is not defined +2025-03-10 15:30:16,228 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,229 - ERROR - Error in episode 8772: name 'args' is not defined +2025-03-10 15:30:16,232 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,232 - ERROR - Error in episode 8773: name 'args' is not defined +2025-03-10 15:30:16,235 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,236 - ERROR - Error in episode 8774: name 'args' is not defined +2025-03-10 15:30:16,238 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,238 - ERROR - Error in episode 8775: name 'args' is not defined +2025-03-10 15:30:16,242 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,242 - ERROR - Error in episode 8776: name 'args' is not defined +2025-03-10 15:30:16,245 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,245 - ERROR - Error in episode 8777: name 'args' is not defined +2025-03-10 15:30:16,248 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,248 - ERROR - Error in episode 8778: name 'args' is not defined +2025-03-10 15:30:16,252 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,252 - ERROR - Error in episode 8779: name 'args' is not defined +2025-03-10 15:30:16,254 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,254 - ERROR - Error in episode 8780: name 'args' is not defined +2025-03-10 15:30:16,257 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,258 - ERROR - Error in episode 8781: name 'args' is not defined +2025-03-10 15:30:16,260 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,261 - ERROR - Error in episode 8782: name 'args' is not defined +2025-03-10 15:30:16,264 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,264 - ERROR - Error in episode 8783: name 'args' is not defined +2025-03-10 15:30:16,267 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,267 - ERROR - Error in episode 8784: name 'args' is not defined +2025-03-10 15:30:16,270 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,270 - ERROR - Error in episode 8785: name 'args' is not defined +2025-03-10 15:30:16,274 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,274 - ERROR - Error in episode 8786: name 'args' is not defined +2025-03-10 15:30:16,277 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,278 - ERROR - Error in episode 8787: name 'args' is not defined +2025-03-10 15:30:16,280 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,281 - ERROR - Error in episode 8788: name 'args' is not defined +2025-03-10 15:30:16,283 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,284 - ERROR - Error in episode 8789: name 'args' is not defined +2025-03-10 15:30:16,287 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,287 - ERROR - Error in episode 8790: name 'args' is not defined +2025-03-10 15:30:16,290 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,290 - ERROR - Error in episode 8791: name 'args' is not defined +2025-03-10 15:30:16,293 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,293 - ERROR - Error in episode 8792: name 'args' is not defined +2025-03-10 15:30:16,295 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,296 - ERROR - Error in episode 8793: name 'args' is not defined +2025-03-10 15:30:16,299 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,299 - ERROR - Error in episode 8794: name 'args' is not defined +2025-03-10 15:30:16,301 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,302 - ERROR - Error in episode 8795: name 'args' is not defined +2025-03-10 15:30:16,304 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,304 - ERROR - Error in episode 8796: name 'args' is not defined +2025-03-10 15:30:16,307 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,308 - ERROR - Error in episode 8797: name 'args' is not defined +2025-03-10 15:30:16,310 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,311 - ERROR - Error in episode 8798: name 'args' is not defined +2025-03-10 15:30:16,313 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,314 - ERROR - Error in episode 8799: name 'args' is not defined +2025-03-10 15:30:16,316 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,317 - ERROR - Error in episode 8800: name 'args' is not defined +2025-03-10 15:30:16,319 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,319 - ERROR - Error in episode 8801: name 'args' is not defined +2025-03-10 15:30:16,321 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,322 - ERROR - Error in episode 8802: name 'args' is not defined +2025-03-10 15:30:16,325 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,325 - ERROR - Error in episode 8803: name 'args' is not defined +2025-03-10 15:30:16,328 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,328 - ERROR - Error in episode 8804: name 'args' is not defined +2025-03-10 15:30:16,331 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,331 - ERROR - Error in episode 8805: name 'args' is not defined +2025-03-10 15:30:16,334 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,334 - ERROR - Error in episode 8806: name 'args' is not defined +2025-03-10 15:30:16,337 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,337 - ERROR - Error in episode 8807: name 'args' is not defined +2025-03-10 15:30:16,340 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,340 - ERROR - Error in episode 8808: name 'args' is not defined +2025-03-10 15:30:16,342 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,342 - ERROR - Error in episode 8809: name 'args' is not defined +2025-03-10 15:30:16,344 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,346 - ERROR - Error in episode 8810: name 'args' is not defined +2025-03-10 15:30:16,348 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,349 - ERROR - Error in episode 8811: name 'args' is not defined +2025-03-10 15:30:16,351 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,351 - ERROR - Error in episode 8812: name 'args' is not defined +2025-03-10 15:30:16,353 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,354 - ERROR - Error in episode 8813: name 'args' is not defined +2025-03-10 15:30:16,356 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,357 - ERROR - Error in episode 8814: name 'args' is not defined +2025-03-10 15:30:16,359 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,359 - ERROR - Error in episode 8815: name 'args' is not defined +2025-03-10 15:30:16,361 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,362 - ERROR - Error in episode 8816: name 'args' is not defined +2025-03-10 15:30:16,364 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,365 - ERROR - Error in episode 8817: name 'args' is not defined +2025-03-10 15:30:16,367 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,367 - ERROR - Error in episode 8818: name 'args' is not defined +2025-03-10 15:30:16,370 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,370 - ERROR - Error in episode 8819: name 'args' is not defined +2025-03-10 15:30:16,374 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,374 - ERROR - Error in episode 8820: name 'args' is not defined +2025-03-10 15:30:16,376 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,377 - ERROR - Error in episode 8821: name 'args' is not defined +2025-03-10 15:30:16,379 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,380 - ERROR - Error in episode 8822: name 'args' is not defined +2025-03-10 15:30:16,383 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,383 - ERROR - Error in episode 8823: name 'args' is not defined +2025-03-10 15:30:16,385 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,386 - ERROR - Error in episode 8824: name 'args' is not defined +2025-03-10 15:30:16,388 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,388 - ERROR - Error in episode 8825: name 'args' is not defined +2025-03-10 15:30:16,391 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,391 - ERROR - Error in episode 8826: name 'args' is not defined +2025-03-10 15:30:16,395 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,395 - ERROR - Error in episode 8827: name 'args' is not defined +2025-03-10 15:30:16,398 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,399 - ERROR - Error in episode 8828: name 'args' is not defined +2025-03-10 15:30:16,401 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,401 - ERROR - Error in episode 8829: name 'args' is not defined +2025-03-10 15:30:16,404 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,405 - ERROR - Error in episode 8830: name 'args' is not defined +2025-03-10 15:30:16,407 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,407 - ERROR - Error in episode 8831: name 'args' is not defined +2025-03-10 15:30:16,410 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,410 - ERROR - Error in episode 8832: name 'args' is not defined +2025-03-10 15:30:16,413 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,413 - ERROR - Error in episode 8833: name 'args' is not defined +2025-03-10 15:30:16,415 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,416 - ERROR - Error in episode 8834: name 'args' is not defined +2025-03-10 15:30:16,418 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,418 - ERROR - Error in episode 8835: name 'args' is not defined +2025-03-10 15:30:16,421 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,422 - ERROR - Error in episode 8836: name 'args' is not defined +2025-03-10 15:30:16,424 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,424 - ERROR - Error in episode 8837: name 'args' is not defined +2025-03-10 15:30:16,427 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,427 - ERROR - Error in episode 8838: name 'args' is not defined +2025-03-10 15:30:16,430 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,430 - ERROR - Error in episode 8839: name 'args' is not defined +2025-03-10 15:30:16,433 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,433 - ERROR - Error in episode 8840: name 'args' is not defined +2025-03-10 15:30:16,435 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,436 - ERROR - Error in episode 8841: name 'args' is not defined +2025-03-10 15:30:16,438 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,439 - ERROR - Error in episode 8842: name 'args' is not defined +2025-03-10 15:30:16,440 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,441 - ERROR - Error in episode 8843: name 'args' is not defined +2025-03-10 15:30:16,444 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,444 - ERROR - Error in episode 8844: name 'args' is not defined +2025-03-10 15:30:16,447 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,447 - ERROR - Error in episode 8845: name 'args' is not defined +2025-03-10 15:30:16,450 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,450 - ERROR - Error in episode 8846: name 'args' is not defined +2025-03-10 15:30:16,453 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,453 - ERROR - Error in episode 8847: name 'args' is not defined +2025-03-10 15:30:16,456 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,456 - ERROR - Error in episode 8848: name 'args' is not defined +2025-03-10 15:30:16,459 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,459 - ERROR - Error in episode 8849: name 'args' is not defined +2025-03-10 15:30:16,462 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,462 - ERROR - Error in episode 8850: name 'args' is not defined +2025-03-10 15:30:16,464 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,465 - ERROR - Error in episode 8851: name 'args' is not defined +2025-03-10 15:30:16,467 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,468 - ERROR - Error in episode 8852: name 'args' is not defined +2025-03-10 15:30:16,471 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,471 - ERROR - Error in episode 8853: name 'args' is not defined +2025-03-10 15:30:16,474 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,474 - ERROR - Error in episode 8854: name 'args' is not defined +2025-03-10 15:30:16,477 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,478 - ERROR - Error in episode 8855: name 'args' is not defined +2025-03-10 15:30:16,480 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,480 - ERROR - Error in episode 8856: name 'args' is not defined +2025-03-10 15:30:16,483 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,483 - ERROR - Error in episode 8857: name 'args' is not defined +2025-03-10 15:30:16,486 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,486 - ERROR - Error in episode 8858: name 'args' is not defined +2025-03-10 15:30:16,488 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,489 - ERROR - Error in episode 8859: name 'args' is not defined +2025-03-10 15:30:16,492 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,492 - ERROR - Error in episode 8860: name 'args' is not defined +2025-03-10 15:30:16,495 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,495 - ERROR - Error in episode 8861: name 'args' is not defined +2025-03-10 15:30:16,498 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,498 - ERROR - Error in episode 8862: name 'args' is not defined +2025-03-10 15:30:16,501 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,501 - ERROR - Error in episode 8863: name 'args' is not defined +2025-03-10 15:30:16,504 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,505 - ERROR - Error in episode 8864: name 'args' is not defined +2025-03-10 15:30:16,507 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,507 - ERROR - Error in episode 8865: name 'args' is not defined +2025-03-10 15:30:16,510 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,510 - ERROR - Error in episode 8866: name 'args' is not defined +2025-03-10 15:30:16,513 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,513 - ERROR - Error in episode 8867: name 'args' is not defined +2025-03-10 15:30:16,516 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,516 - ERROR - Error in episode 8868: name 'args' is not defined +2025-03-10 15:30:16,519 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,519 - ERROR - Error in episode 8869: name 'args' is not defined +2025-03-10 15:30:16,521 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,522 - ERROR - Error in episode 8870: name 'args' is not defined +2025-03-10 15:30:16,524 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,525 - ERROR - Error in episode 8871: name 'args' is not defined +2025-03-10 15:30:16,528 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,528 - ERROR - Error in episode 8872: name 'args' is not defined +2025-03-10 15:30:16,532 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,532 - ERROR - Error in episode 8873: name 'args' is not defined +2025-03-10 15:30:16,535 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,535 - ERROR - Error in episode 8874: name 'args' is not defined +2025-03-10 15:30:16,538 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,538 - ERROR - Error in episode 8875: name 'args' is not defined +2025-03-10 15:30:16,541 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,541 - ERROR - Error in episode 8876: name 'args' is not defined +2025-03-10 15:30:16,544 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,544 - ERROR - Error in episode 8877: name 'args' is not defined +2025-03-10 15:30:16,547 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,547 - ERROR - Error in episode 8878: name 'args' is not defined +2025-03-10 15:30:16,550 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,550 - ERROR - Error in episode 8879: name 'args' is not defined +2025-03-10 15:30:16,553 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,553 - ERROR - Error in episode 8880: name 'args' is not defined +2025-03-10 15:30:16,556 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,556 - ERROR - Error in episode 8881: name 'args' is not defined +2025-03-10 15:30:16,558 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,559 - ERROR - Error in episode 8882: name 'args' is not defined +2025-03-10 15:30:16,561 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,562 - ERROR - Error in episode 8883: name 'args' is not defined +2025-03-10 15:30:16,564 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,564 - ERROR - Error in episode 8884: name 'args' is not defined +2025-03-10 15:30:16,567 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,567 - ERROR - Error in episode 8885: name 'args' is not defined +2025-03-10 15:30:16,570 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,571 - ERROR - Error in episode 8886: name 'args' is not defined +2025-03-10 15:30:16,573 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,574 - ERROR - Error in episode 8887: name 'args' is not defined +2025-03-10 15:30:16,576 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,577 - ERROR - Error in episode 8888: name 'args' is not defined +2025-03-10 15:30:16,579 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,580 - ERROR - Error in episode 8889: name 'args' is not defined +2025-03-10 15:30:16,582 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,583 - ERROR - Error in episode 8890: name 'args' is not defined +2025-03-10 15:30:16,585 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,585 - ERROR - Error in episode 8891: name 'args' is not defined +2025-03-10 15:30:16,588 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,588 - ERROR - Error in episode 8892: name 'args' is not defined +2025-03-10 15:30:16,591 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,591 - ERROR - Error in episode 8893: name 'args' is not defined +2025-03-10 15:30:16,594 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,594 - ERROR - Error in episode 8894: name 'args' is not defined +2025-03-10 15:30:16,597 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,597 - ERROR - Error in episode 8895: name 'args' is not defined +2025-03-10 15:30:16,599 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,600 - ERROR - Error in episode 8896: name 'args' is not defined +2025-03-10 15:30:16,603 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,603 - ERROR - Error in episode 8897: name 'args' is not defined +2025-03-10 15:30:16,605 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,605 - ERROR - Error in episode 8898: name 'args' is not defined +2025-03-10 15:30:16,608 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,609 - ERROR - Error in episode 8899: name 'args' is not defined +2025-03-10 15:30:16,612 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,612 - ERROR - Error in episode 8900: name 'args' is not defined +2025-03-10 15:30:16,614 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,615 - ERROR - Error in episode 8901: name 'args' is not defined +2025-03-10 15:30:16,617 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,617 - ERROR - Error in episode 8902: name 'args' is not defined +2025-03-10 15:30:16,620 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,620 - ERROR - Error in episode 8903: name 'args' is not defined +2025-03-10 15:30:16,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,623 - ERROR - Error in episode 8904: name 'args' is not defined +2025-03-10 15:30:16,626 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,626 - ERROR - Error in episode 8905: name 'args' is not defined +2025-03-10 15:30:16,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,630 - ERROR - Error in episode 8906: name 'args' is not defined +2025-03-10 15:30:16,632 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,633 - ERROR - Error in episode 8907: name 'args' is not defined +2025-03-10 15:30:16,636 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,636 - ERROR - Error in episode 8908: name 'args' is not defined +2025-03-10 15:30:16,639 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,639 - ERROR - Error in episode 8909: name 'args' is not defined +2025-03-10 15:30:16,643 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,643 - ERROR - Error in episode 8910: name 'args' is not defined +2025-03-10 15:30:16,646 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,646 - ERROR - Error in episode 8911: name 'args' is not defined +2025-03-10 15:30:16,649 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,650 - ERROR - Error in episode 8912: name 'args' is not defined +2025-03-10 15:30:16,653 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,653 - ERROR - Error in episode 8913: name 'args' is not defined +2025-03-10 15:30:16,656 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,656 - ERROR - Error in episode 8914: name 'args' is not defined +2025-03-10 15:30:16,659 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,659 - ERROR - Error in episode 8915: name 'args' is not defined +2025-03-10 15:30:16,662 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,662 - ERROR - Error in episode 8916: name 'args' is not defined +2025-03-10 15:30:16,665 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,665 - ERROR - Error in episode 8917: name 'args' is not defined +2025-03-10 15:30:16,668 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,668 - ERROR - Error in episode 8918: name 'args' is not defined +2025-03-10 15:30:16,672 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,672 - ERROR - Error in episode 8919: name 'args' is not defined +2025-03-10 15:30:16,674 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,675 - ERROR - Error in episode 8920: name 'args' is not defined +2025-03-10 15:30:16,677 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,678 - ERROR - Error in episode 8921: name 'args' is not defined +2025-03-10 15:30:16,680 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,680 - ERROR - Error in episode 8922: name 'args' is not defined +2025-03-10 15:30:16,683 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,683 - ERROR - Error in episode 8923: name 'args' is not defined +2025-03-10 15:30:16,687 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,687 - ERROR - Error in episode 8924: name 'args' is not defined +2025-03-10 15:30:16,689 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,690 - ERROR - Error in episode 8925: name 'args' is not defined +2025-03-10 15:30:16,692 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,692 - ERROR - Error in episode 8926: name 'args' is not defined +2025-03-10 15:30:16,695 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,695 - ERROR - Error in episode 8927: name 'args' is not defined +2025-03-10 15:30:16,698 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,698 - ERROR - Error in episode 8928: name 'args' is not defined +2025-03-10 15:30:16,700 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,700 - ERROR - Error in episode 8929: name 'args' is not defined +2025-03-10 15:30:16,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,704 - ERROR - Error in episode 8930: name 'args' is not defined +2025-03-10 15:30:16,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,707 - ERROR - Error in episode 8931: name 'args' is not defined +2025-03-10 15:30:16,709 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,709 - ERROR - Error in episode 8932: name 'args' is not defined +2025-03-10 15:30:16,712 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,712 - ERROR - Error in episode 8933: name 'args' is not defined +2025-03-10 15:30:16,714 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,715 - ERROR - Error in episode 8934: name 'args' is not defined +2025-03-10 15:30:16,717 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,718 - ERROR - Error in episode 8935: name 'args' is not defined +2025-03-10 15:30:16,720 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,721 - ERROR - Error in episode 8936: name 'args' is not defined +2025-03-10 15:30:16,723 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,723 - ERROR - Error in episode 8937: name 'args' is not defined +2025-03-10 15:30:16,726 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,726 - ERROR - Error in episode 8938: name 'args' is not defined +2025-03-10 15:30:16,729 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,729 - ERROR - Error in episode 8939: name 'args' is not defined +2025-03-10 15:30:16,731 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,732 - ERROR - Error in episode 8940: name 'args' is not defined +2025-03-10 15:30:16,734 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,734 - ERROR - Error in episode 8941: name 'args' is not defined +2025-03-10 15:30:16,737 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,737 - ERROR - Error in episode 8942: name 'args' is not defined +2025-03-10 15:30:16,740 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,741 - ERROR - Error in episode 8943: name 'args' is not defined +2025-03-10 15:30:16,744 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,744 - ERROR - Error in episode 8944: name 'args' is not defined +2025-03-10 15:30:16,746 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,746 - ERROR - Error in episode 8945: name 'args' is not defined +2025-03-10 15:30:16,749 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,749 - ERROR - Error in episode 8946: name 'args' is not defined +2025-03-10 15:30:16,752 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,752 - ERROR - Error in episode 8947: name 'args' is not defined +2025-03-10 15:30:16,756 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,756 - ERROR - Error in episode 8948: name 'args' is not defined +2025-03-10 15:30:16,759 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,759 - ERROR - Error in episode 8949: name 'args' is not defined +2025-03-10 15:30:16,762 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,762 - ERROR - Error in episode 8950: name 'args' is not defined +2025-03-10 15:30:16,765 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,765 - ERROR - Error in episode 8951: name 'args' is not defined +2025-03-10 15:30:16,768 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,768 - ERROR - Error in episode 8952: name 'args' is not defined +2025-03-10 15:30:16,772 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,772 - ERROR - Error in episode 8953: name 'args' is not defined +2025-03-10 15:30:16,775 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,775 - ERROR - Error in episode 8954: name 'args' is not defined +2025-03-10 15:30:16,778 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,779 - ERROR - Error in episode 8955: name 'args' is not defined +2025-03-10 15:30:16,781 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,782 - ERROR - Error in episode 8956: name 'args' is not defined +2025-03-10 15:30:16,784 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,785 - ERROR - Error in episode 8957: name 'args' is not defined +2025-03-10 15:30:16,788 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,789 - ERROR - Error in episode 8958: name 'args' is not defined +2025-03-10 15:30:16,791 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,791 - ERROR - Error in episode 8959: name 'args' is not defined +2025-03-10 15:30:16,794 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,794 - ERROR - Error in episode 8960: name 'args' is not defined +2025-03-10 15:30:16,797 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,797 - ERROR - Error in episode 8961: name 'args' is not defined +2025-03-10 15:30:16,800 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,800 - ERROR - Error in episode 8962: name 'args' is not defined +2025-03-10 15:30:16,802 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,804 - ERROR - Error in episode 8963: name 'args' is not defined +2025-03-10 15:30:16,806 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,806 - ERROR - Error in episode 8964: name 'args' is not defined +2025-03-10 15:30:16,808 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,809 - ERROR - Error in episode 8965: name 'args' is not defined +2025-03-10 15:30:16,812 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,812 - ERROR - Error in episode 8966: name 'args' is not defined +2025-03-10 15:30:16,815 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,815 - ERROR - Error in episode 8967: name 'args' is not defined +2025-03-10 15:30:16,818 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,819 - ERROR - Error in episode 8968: name 'args' is not defined +2025-03-10 15:30:16,822 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,822 - ERROR - Error in episode 8969: name 'args' is not defined +2025-03-10 15:30:16,825 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,825 - ERROR - Error in episode 8970: name 'args' is not defined +2025-03-10 15:30:16,828 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,829 - ERROR - Error in episode 8971: name 'args' is not defined +2025-03-10 15:30:16,831 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,832 - ERROR - Error in episode 8972: name 'args' is not defined +2025-03-10 15:30:16,834 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,834 - ERROR - Error in episode 8973: name 'args' is not defined +2025-03-10 15:30:16,838 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,838 - ERROR - Error in episode 8974: name 'args' is not defined +2025-03-10 15:30:16,841 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,841 - ERROR - Error in episode 8975: name 'args' is not defined +2025-03-10 15:30:16,844 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,844 - ERROR - Error in episode 8976: name 'args' is not defined +2025-03-10 15:30:16,847 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,848 - ERROR - Error in episode 8977: name 'args' is not defined +2025-03-10 15:30:16,851 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,851 - ERROR - Error in episode 8978: name 'args' is not defined +2025-03-10 15:30:16,855 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,855 - ERROR - Error in episode 8979: name 'args' is not defined +2025-03-10 15:30:16,857 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,858 - ERROR - Error in episode 8980: name 'args' is not defined +2025-03-10 15:30:16,861 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,861 - ERROR - Error in episode 8981: name 'args' is not defined +2025-03-10 15:30:16,863 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,863 - ERROR - Error in episode 8982: name 'args' is not defined +2025-03-10 15:30:16,867 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,867 - ERROR - Error in episode 8983: name 'args' is not defined +2025-03-10 15:30:16,871 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,871 - ERROR - Error in episode 8984: name 'args' is not defined +2025-03-10 15:30:16,873 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,874 - ERROR - Error in episode 8985: name 'args' is not defined +2025-03-10 15:30:16,877 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,877 - ERROR - Error in episode 8986: name 'args' is not defined +2025-03-10 15:30:16,880 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,880 - ERROR - Error in episode 8987: name 'args' is not defined +2025-03-10 15:30:16,882 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,883 - ERROR - Error in episode 8988: name 'args' is not defined +2025-03-10 15:30:16,886 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,886 - ERROR - Error in episode 8989: name 'args' is not defined +2025-03-10 15:30:16,890 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,890 - ERROR - Error in episode 8990: name 'args' is not defined +2025-03-10 15:30:16,893 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,893 - ERROR - Error in episode 8991: name 'args' is not defined +2025-03-10 15:30:16,896 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,897 - ERROR - Error in episode 8992: name 'args' is not defined +2025-03-10 15:30:16,900 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,900 - ERROR - Error in episode 8993: name 'args' is not defined +2025-03-10 15:30:16,903 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,904 - ERROR - Error in episode 8994: name 'args' is not defined +2025-03-10 15:30:16,907 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,907 - ERROR - Error in episode 8995: name 'args' is not defined +2025-03-10 15:30:16,910 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,910 - ERROR - Error in episode 8996: name 'args' is not defined +2025-03-10 15:30:16,913 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,913 - ERROR - Error in episode 8997: name 'args' is not defined +2025-03-10 15:30:16,916 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,916 - ERROR - Error in episode 8998: name 'args' is not defined +2025-03-10 15:30:16,920 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,920 - ERROR - Error in episode 8999: name 'args' is not defined +2025-03-10 15:30:16,923 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,923 - ERROR - Error in episode 9000: name 'args' is not defined +2025-03-10 15:30:16,925 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,926 - ERROR - Error in episode 9001: name 'args' is not defined +2025-03-10 15:30:16,928 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,929 - ERROR - Error in episode 9002: name 'args' is not defined +2025-03-10 15:30:16,931 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,931 - ERROR - Error in episode 9003: name 'args' is not defined +2025-03-10 15:30:16,934 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,934 - ERROR - Error in episode 9004: name 'args' is not defined +2025-03-10 15:30:16,937 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,937 - ERROR - Error in episode 9005: name 'args' is not defined +2025-03-10 15:30:16,939 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,940 - ERROR - Error in episode 9006: name 'args' is not defined +2025-03-10 15:30:16,942 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,942 - ERROR - Error in episode 9007: name 'args' is not defined +2025-03-10 15:30:16,945 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,946 - ERROR - Error in episode 9008: name 'args' is not defined +2025-03-10 15:30:16,948 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,948 - ERROR - Error in episode 9009: name 'args' is not defined +2025-03-10 15:30:16,951 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,951 - ERROR - Error in episode 9010: name 'args' is not defined +2025-03-10 15:30:16,954 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,955 - ERROR - Error in episode 9011: name 'args' is not defined +2025-03-10 15:30:16,957 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,958 - ERROR - Error in episode 9012: name 'args' is not defined +2025-03-10 15:30:16,960 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,960 - ERROR - Error in episode 9013: name 'args' is not defined +2025-03-10 15:30:16,963 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,963 - ERROR - Error in episode 9014: name 'args' is not defined +2025-03-10 15:30:16,966 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,966 - ERROR - Error in episode 9015: name 'args' is not defined +2025-03-10 15:30:16,968 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,969 - ERROR - Error in episode 9016: name 'args' is not defined +2025-03-10 15:30:16,971 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,972 - ERROR - Error in episode 9017: name 'args' is not defined +2025-03-10 15:30:16,974 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,974 - ERROR - Error in episode 9018: name 'args' is not defined +2025-03-10 15:30:16,977 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,977 - ERROR - Error in episode 9019: name 'args' is not defined +2025-03-10 15:30:16,980 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,980 - ERROR - Error in episode 9020: name 'args' is not defined +2025-03-10 15:30:16,983 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,983 - ERROR - Error in episode 9021: name 'args' is not defined +2025-03-10 15:30:16,986 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,986 - ERROR - Error in episode 9022: name 'args' is not defined +2025-03-10 15:30:16,989 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,989 - ERROR - Error in episode 9023: name 'args' is not defined +2025-03-10 15:30:16,991 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,992 - ERROR - Error in episode 9024: name 'args' is not defined +2025-03-10 15:30:16,995 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,995 - ERROR - Error in episode 9025: name 'args' is not defined +2025-03-10 15:30:16,998 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:16,998 - ERROR - Error in episode 9026: name 'args' is not defined +2025-03-10 15:30:17,001 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,001 - ERROR - Error in episode 9027: name 'args' is not defined +2025-03-10 15:30:17,004 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,005 - ERROR - Error in episode 9028: name 'args' is not defined +2025-03-10 15:30:17,007 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,007 - ERROR - Error in episode 9029: name 'args' is not defined +2025-03-10 15:30:17,009 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,010 - ERROR - Error in episode 9030: name 'args' is not defined +2025-03-10 15:30:17,012 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,012 - ERROR - Error in episode 9031: name 'args' is not defined +2025-03-10 15:30:17,015 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,016 - ERROR - Error in episode 9032: name 'args' is not defined +2025-03-10 15:30:17,018 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,018 - ERROR - Error in episode 9033: name 'args' is not defined +2025-03-10 15:30:17,022 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,022 - ERROR - Error in episode 9034: name 'args' is not defined +2025-03-10 15:30:17,024 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,025 - ERROR - Error in episode 9035: name 'args' is not defined +2025-03-10 15:30:17,027 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,027 - ERROR - Error in episode 9036: name 'args' is not defined +2025-03-10 15:30:17,030 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,030 - ERROR - Error in episode 9037: name 'args' is not defined +2025-03-10 15:30:17,033 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,033 - ERROR - Error in episode 9038: name 'args' is not defined +2025-03-10 15:30:17,036 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,036 - ERROR - Error in episode 9039: name 'args' is not defined +2025-03-10 15:30:17,039 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,039 - ERROR - Error in episode 9040: name 'args' is not defined +2025-03-10 15:30:17,042 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,042 - ERROR - Error in episode 9041: name 'args' is not defined +2025-03-10 15:30:17,045 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,046 - ERROR - Error in episode 9042: name 'args' is not defined +2025-03-10 15:30:17,048 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,048 - ERROR - Error in episode 9043: name 'args' is not defined +2025-03-10 15:30:17,051 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,052 - ERROR - Error in episode 9044: name 'args' is not defined +2025-03-10 15:30:17,055 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,055 - ERROR - Error in episode 9045: name 'args' is not defined +2025-03-10 15:30:17,058 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,058 - ERROR - Error in episode 9046: name 'args' is not defined +2025-03-10 15:30:17,060 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,061 - ERROR - Error in episode 9047: name 'args' is not defined +2025-03-10 15:30:17,064 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,064 - ERROR - Error in episode 9048: name 'args' is not defined +2025-03-10 15:30:17,068 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,068 - ERROR - Error in episode 9049: name 'args' is not defined +2025-03-10 15:30:17,072 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,072 - ERROR - Error in episode 9050: name 'args' is not defined +2025-03-10 15:30:17,076 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,076 - ERROR - Error in episode 9051: name 'args' is not defined +2025-03-10 15:30:17,079 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,079 - ERROR - Error in episode 9052: name 'args' is not defined +2025-03-10 15:30:17,081 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,082 - ERROR - Error in episode 9053: name 'args' is not defined +2025-03-10 15:30:17,085 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,085 - ERROR - Error in episode 9054: name 'args' is not defined +2025-03-10 15:30:17,088 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,089 - ERROR - Error in episode 9055: name 'args' is not defined +2025-03-10 15:30:17,092 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,092 - ERROR - Error in episode 9056: name 'args' is not defined +2025-03-10 15:30:17,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,095 - ERROR - Error in episode 9057: name 'args' is not defined +2025-03-10 15:30:17,097 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,098 - ERROR - Error in episode 9058: name 'args' is not defined +2025-03-10 15:30:17,101 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,101 - ERROR - Error in episode 9059: name 'args' is not defined +2025-03-10 15:30:17,104 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,104 - ERROR - Error in episode 9060: name 'args' is not defined +2025-03-10 15:30:17,107 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,107 - ERROR - Error in episode 9061: name 'args' is not defined +2025-03-10 15:30:17,109 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,110 - ERROR - Error in episode 9062: name 'args' is not defined +2025-03-10 15:30:17,114 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,114 - ERROR - Error in episode 9063: name 'args' is not defined +2025-03-10 15:30:17,116 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,117 - ERROR - Error in episode 9064: name 'args' is not defined +2025-03-10 15:30:17,119 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,120 - ERROR - Error in episode 9065: name 'args' is not defined +2025-03-10 15:30:17,123 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,123 - ERROR - Error in episode 9066: name 'args' is not defined +2025-03-10 15:30:17,125 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,125 - ERROR - Error in episode 9067: name 'args' is not defined +2025-03-10 15:30:17,128 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,128 - ERROR - Error in episode 9068: name 'args' is not defined +2025-03-10 15:30:17,131 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,132 - ERROR - Error in episode 9069: name 'args' is not defined +2025-03-10 15:30:17,135 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,136 - ERROR - Error in episode 9070: name 'args' is not defined +2025-03-10 15:30:17,139 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,139 - ERROR - Error in episode 9071: name 'args' is not defined +2025-03-10 15:30:17,142 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,143 - ERROR - Error in episode 9072: name 'args' is not defined +2025-03-10 15:30:17,146 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,147 - ERROR - Error in episode 9073: name 'args' is not defined +2025-03-10 15:30:17,149 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,150 - ERROR - Error in episode 9074: name 'args' is not defined +2025-03-10 15:30:17,153 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,153 - ERROR - Error in episode 9075: name 'args' is not defined +2025-03-10 15:30:17,156 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,156 - ERROR - Error in episode 9076: name 'args' is not defined +2025-03-10 15:30:17,159 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,159 - ERROR - Error in episode 9077: name 'args' is not defined +2025-03-10 15:30:17,162 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,163 - ERROR - Error in episode 9078: name 'args' is not defined +2025-03-10 15:30:17,165 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,165 - ERROR - Error in episode 9079: name 'args' is not defined +2025-03-10 15:30:17,168 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,168 - ERROR - Error in episode 9080: name 'args' is not defined +2025-03-10 15:30:17,171 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,171 - ERROR - Error in episode 9081: name 'args' is not defined +2025-03-10 15:30:17,174 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,174 - ERROR - Error in episode 9082: name 'args' is not defined +2025-03-10 15:30:17,177 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,177 - ERROR - Error in episode 9083: name 'args' is not defined +2025-03-10 15:30:17,181 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,181 - ERROR - Error in episode 9084: name 'args' is not defined +2025-03-10 15:30:17,184 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,184 - ERROR - Error in episode 9085: name 'args' is not defined +2025-03-10 15:30:17,187 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,188 - ERROR - Error in episode 9086: name 'args' is not defined +2025-03-10 15:30:17,190 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,190 - ERROR - Error in episode 9087: name 'args' is not defined +2025-03-10 15:30:17,193 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,193 - ERROR - Error in episode 9088: name 'args' is not defined +2025-03-10 15:30:17,196 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,197 - ERROR - Error in episode 9089: name 'args' is not defined +2025-03-10 15:30:17,199 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,200 - ERROR - Error in episode 9090: name 'args' is not defined +2025-03-10 15:30:17,202 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,202 - ERROR - Error in episode 9091: name 'args' is not defined +2025-03-10 15:30:17,205 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,205 - ERROR - Error in episode 9092: name 'args' is not defined +2025-03-10 15:30:17,208 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,209 - ERROR - Error in episode 9093: name 'args' is not defined +2025-03-10 15:30:17,211 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,212 - ERROR - Error in episode 9094: name 'args' is not defined +2025-03-10 15:30:17,214 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,214 - ERROR - Error in episode 9095: name 'args' is not defined +2025-03-10 15:30:17,217 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,217 - ERROR - Error in episode 9096: name 'args' is not defined +2025-03-10 15:30:17,220 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,220 - ERROR - Error in episode 9097: name 'args' is not defined +2025-03-10 15:30:17,223 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,224 - ERROR - Error in episode 9098: name 'args' is not defined +2025-03-10 15:30:17,227 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,227 - ERROR - Error in episode 9099: name 'args' is not defined +2025-03-10 15:30:17,229 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,230 - ERROR - Error in episode 9100: name 'args' is not defined +2025-03-10 15:30:17,233 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,234 - ERROR - Error in episode 9101: name 'args' is not defined +2025-03-10 15:30:17,237 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,237 - ERROR - Error in episode 9102: name 'args' is not defined +2025-03-10 15:30:17,239 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,240 - ERROR - Error in episode 9103: name 'args' is not defined +2025-03-10 15:30:17,242 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,242 - ERROR - Error in episode 9104: name 'args' is not defined +2025-03-10 15:30:17,245 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,246 - ERROR - Error in episode 9105: name 'args' is not defined +2025-03-10 15:30:17,248 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,249 - ERROR - Error in episode 9106: name 'args' is not defined +2025-03-10 15:30:17,251 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,251 - ERROR - Error in episode 9107: name 'args' is not defined +2025-03-10 15:30:17,255 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,255 - ERROR - Error in episode 9108: name 'args' is not defined +2025-03-10 15:30:17,258 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,258 - ERROR - Error in episode 9109: name 'args' is not defined +2025-03-10 15:30:17,262 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,262 - ERROR - Error in episode 9110: name 'args' is not defined +2025-03-10 15:30:17,265 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,265 - ERROR - Error in episode 9111: name 'args' is not defined +2025-03-10 15:30:17,268 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,268 - ERROR - Error in episode 9112: name 'args' is not defined +2025-03-10 15:30:17,272 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,272 - ERROR - Error in episode 9113: name 'args' is not defined +2025-03-10 15:30:17,275 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,275 - ERROR - Error in episode 9114: name 'args' is not defined +2025-03-10 15:30:17,279 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,279 - ERROR - Error in episode 9115: name 'args' is not defined +2025-03-10 15:30:17,282 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,282 - ERROR - Error in episode 9116: name 'args' is not defined +2025-03-10 15:30:17,284 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,286 - ERROR - Error in episode 9117: name 'args' is not defined +2025-03-10 15:30:17,288 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,289 - ERROR - Error in episode 9118: name 'args' is not defined +2025-03-10 15:30:17,291 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,291 - ERROR - Error in episode 9119: name 'args' is not defined +2025-03-10 15:30:17,294 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,294 - ERROR - Error in episode 9120: name 'args' is not defined +2025-03-10 15:30:17,298 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,298 - ERROR - Error in episode 9121: name 'args' is not defined +2025-03-10 15:30:17,301 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,301 - ERROR - Error in episode 9122: name 'args' is not defined +2025-03-10 15:30:17,303 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,304 - ERROR - Error in episode 9123: name 'args' is not defined +2025-03-10 15:30:17,306 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,306 - ERROR - Error in episode 9124: name 'args' is not defined +2025-03-10 15:30:17,311 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,311 - ERROR - Error in episode 9125: name 'args' is not defined +2025-03-10 15:30:17,314 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,315 - ERROR - Error in episode 9126: name 'args' is not defined +2025-03-10 15:30:17,317 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,318 - ERROR - Error in episode 9127: name 'args' is not defined +2025-03-10 15:30:17,321 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,321 - ERROR - Error in episode 9128: name 'args' is not defined +2025-03-10 15:30:17,324 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,324 - ERROR - Error in episode 9129: name 'args' is not defined +2025-03-10 15:30:17,327 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,328 - ERROR - Error in episode 9130: name 'args' is not defined +2025-03-10 15:30:17,330 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,331 - ERROR - Error in episode 9131: name 'args' is not defined +2025-03-10 15:30:17,333 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,333 - ERROR - Error in episode 9132: name 'args' is not defined +2025-03-10 15:30:17,336 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,336 - ERROR - Error in episode 9133: name 'args' is not defined +2025-03-10 15:30:17,339 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,339 - ERROR - Error in episode 9134: name 'args' is not defined +2025-03-10 15:30:17,341 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,342 - ERROR - Error in episode 9135: name 'args' is not defined +2025-03-10 15:30:17,345 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,345 - ERROR - Error in episode 9136: name 'args' is not defined +2025-03-10 15:30:17,347 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,348 - ERROR - Error in episode 9137: name 'args' is not defined +2025-03-10 15:30:17,350 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,351 - ERROR - Error in episode 9138: name 'args' is not defined +2025-03-10 15:30:17,354 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,354 - ERROR - Error in episode 9139: name 'args' is not defined +2025-03-10 15:30:17,357 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,357 - ERROR - Error in episode 9140: name 'args' is not defined +2025-03-10 15:30:17,360 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,360 - ERROR - Error in episode 9141: name 'args' is not defined +2025-03-10 15:30:17,364 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,364 - ERROR - Error in episode 9142: name 'args' is not defined +2025-03-10 15:30:17,367 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,367 - ERROR - Error in episode 9143: name 'args' is not defined +2025-03-10 15:30:17,370 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,371 - ERROR - Error in episode 9144: name 'args' is not defined +2025-03-10 15:30:17,373 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,373 - ERROR - Error in episode 9145: name 'args' is not defined +2025-03-10 15:30:17,376 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,377 - ERROR - Error in episode 9146: name 'args' is not defined +2025-03-10 15:30:17,380 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,380 - ERROR - Error in episode 9147: name 'args' is not defined +2025-03-10 15:30:17,383 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,383 - ERROR - Error in episode 9148: name 'args' is not defined +2025-03-10 15:30:17,386 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,386 - ERROR - Error in episode 9149: name 'args' is not defined +2025-03-10 15:30:17,389 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,390 - ERROR - Error in episode 9150: name 'args' is not defined +2025-03-10 15:30:17,392 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,392 - ERROR - Error in episode 9151: name 'args' is not defined +2025-03-10 15:30:17,395 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,395 - ERROR - Error in episode 9152: name 'args' is not defined +2025-03-10 15:30:17,398 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,398 - ERROR - Error in episode 9153: name 'args' is not defined +2025-03-10 15:30:17,401 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,401 - ERROR - Error in episode 9154: name 'args' is not defined +2025-03-10 15:30:17,405 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,405 - ERROR - Error in episode 9155: name 'args' is not defined +2025-03-10 15:30:17,407 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,408 - ERROR - Error in episode 9156: name 'args' is not defined +2025-03-10 15:30:17,410 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,412 - ERROR - Error in episode 9157: name 'args' is not defined +2025-03-10 15:30:17,414 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,414 - ERROR - Error in episode 9158: name 'args' is not defined +2025-03-10 15:30:17,417 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,417 - ERROR - Error in episode 9159: name 'args' is not defined +2025-03-10 15:30:17,420 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,421 - ERROR - Error in episode 9160: name 'args' is not defined +2025-03-10 15:30:17,424 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,424 - ERROR - Error in episode 9161: name 'args' is not defined +2025-03-10 15:30:17,427 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,427 - ERROR - Error in episode 9162: name 'args' is not defined +2025-03-10 15:30:17,430 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,430 - ERROR - Error in episode 9163: name 'args' is not defined +2025-03-10 15:30:17,433 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,433 - ERROR - Error in episode 9164: name 'args' is not defined +2025-03-10 15:30:17,435 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,436 - ERROR - Error in episode 9165: name 'args' is not defined +2025-03-10 15:30:17,438 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,438 - ERROR - Error in episode 9166: name 'args' is not defined +2025-03-10 15:30:17,441 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,442 - ERROR - Error in episode 9167: name 'args' is not defined +2025-03-10 15:30:17,444 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,445 - ERROR - Error in episode 9168: name 'args' is not defined +2025-03-10 15:30:17,448 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,448 - ERROR - Error in episode 9169: name 'args' is not defined +2025-03-10 15:30:17,450 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,450 - ERROR - Error in episode 9170: name 'args' is not defined +2025-03-10 15:30:17,453 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,453 - ERROR - Error in episode 9171: name 'args' is not defined +2025-03-10 15:30:17,456 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,457 - ERROR - Error in episode 9172: name 'args' is not defined +2025-03-10 15:30:17,460 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,460 - ERROR - Error in episode 9173: name 'args' is not defined +2025-03-10 15:30:17,464 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,464 - ERROR - Error in episode 9174: name 'args' is not defined +2025-03-10 15:30:17,467 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,467 - ERROR - Error in episode 9175: name 'args' is not defined +2025-03-10 15:30:17,471 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,471 - ERROR - Error in episode 9176: name 'args' is not defined +2025-03-10 15:30:17,473 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,474 - ERROR - Error in episode 9177: name 'args' is not defined +2025-03-10 15:30:17,476 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,478 - ERROR - Error in episode 9178: name 'args' is not defined +2025-03-10 15:30:17,480 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,481 - ERROR - Error in episode 9179: name 'args' is not defined +2025-03-10 15:30:17,483 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,484 - ERROR - Error in episode 9180: name 'args' is not defined +2025-03-10 15:30:17,487 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,487 - ERROR - Error in episode 9181: name 'args' is not defined +2025-03-10 15:30:17,490 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,490 - ERROR - Error in episode 9182: name 'args' is not defined +2025-03-10 15:30:17,492 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,493 - ERROR - Error in episode 9183: name 'args' is not defined +2025-03-10 15:30:17,495 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,496 - ERROR - Error in episode 9184: name 'args' is not defined +2025-03-10 15:30:17,498 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,499 - ERROR - Error in episode 9185: name 'args' is not defined +2025-03-10 15:30:17,501 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,501 - ERROR - Error in episode 9186: name 'args' is not defined +2025-03-10 15:30:17,504 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,504 - ERROR - Error in episode 9187: name 'args' is not defined +2025-03-10 15:30:17,507 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,507 - ERROR - Error in episode 9188: name 'args' is not defined +2025-03-10 15:30:17,509 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,510 - ERROR - Error in episode 9189: name 'args' is not defined +2025-03-10 15:30:17,512 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,513 - ERROR - Error in episode 9190: name 'args' is not defined +2025-03-10 15:30:17,515 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,516 - ERROR - Error in episode 9191: name 'args' is not defined +2025-03-10 15:30:17,518 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,518 - ERROR - Error in episode 9192: name 'args' is not defined +2025-03-10 15:30:17,521 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,521 - ERROR - Error in episode 9193: name 'args' is not defined +2025-03-10 15:30:17,524 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,524 - ERROR - Error in episode 9194: name 'args' is not defined +2025-03-10 15:30:17,527 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,527 - ERROR - Error in episode 9195: name 'args' is not defined +2025-03-10 15:30:17,530 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,530 - ERROR - Error in episode 9196: name 'args' is not defined +2025-03-10 15:30:17,532 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,533 - ERROR - Error in episode 9197: name 'args' is not defined +2025-03-10 15:30:17,535 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,535 - ERROR - Error in episode 9198: name 'args' is not defined +2025-03-10 15:30:17,538 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,538 - ERROR - Error in episode 9199: name 'args' is not defined +2025-03-10 15:30:17,541 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,541 - ERROR - Error in episode 9200: name 'args' is not defined +2025-03-10 15:30:17,543 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,545 - ERROR - Error in episode 9201: name 'args' is not defined +2025-03-10 15:30:17,547 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,548 - ERROR - Error in episode 9202: name 'args' is not defined +2025-03-10 15:30:17,550 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,550 - ERROR - Error in episode 9203: name 'args' is not defined +2025-03-10 15:30:17,553 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,553 - ERROR - Error in episode 9204: name 'args' is not defined +2025-03-10 15:30:17,556 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,556 - ERROR - Error in episode 9205: name 'args' is not defined +2025-03-10 15:30:17,559 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,559 - ERROR - Error in episode 9206: name 'args' is not defined +2025-03-10 15:30:17,562 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,563 - ERROR - Error in episode 9207: name 'args' is not defined +2025-03-10 15:30:17,565 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,565 - ERROR - Error in episode 9208: name 'args' is not defined +2025-03-10 15:30:17,568 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,568 - ERROR - Error in episode 9209: name 'args' is not defined +2025-03-10 15:30:17,571 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,571 - ERROR - Error in episode 9210: name 'args' is not defined +2025-03-10 15:30:17,574 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,576 - ERROR - Error in episode 9211: name 'args' is not defined +2025-03-10 15:30:17,579 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,579 - ERROR - Error in episode 9212: name 'args' is not defined +2025-03-10 15:30:17,583 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,583 - ERROR - Error in episode 9213: name 'args' is not defined +2025-03-10 15:30:17,586 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,586 - ERROR - Error in episode 9214: name 'args' is not defined +2025-03-10 15:30:17,588 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,589 - ERROR - Error in episode 9215: name 'args' is not defined +2025-03-10 15:30:17,591 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,592 - ERROR - Error in episode 9216: name 'args' is not defined +2025-03-10 15:30:17,594 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,595 - ERROR - Error in episode 9217: name 'args' is not defined +2025-03-10 15:30:17,597 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,597 - ERROR - Error in episode 9218: name 'args' is not defined +2025-03-10 15:30:17,600 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,600 - ERROR - Error in episode 9219: name 'args' is not defined +2025-03-10 15:30:17,603 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,603 - ERROR - Error in episode 9220: name 'args' is not defined +2025-03-10 15:30:17,605 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,606 - ERROR - Error in episode 9221: name 'args' is not defined +2025-03-10 15:30:17,608 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,608 - ERROR - Error in episode 9222: name 'args' is not defined +2025-03-10 15:30:17,611 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,611 - ERROR - Error in episode 9223: name 'args' is not defined +2025-03-10 15:30:17,613 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,614 - ERROR - Error in episode 9224: name 'args' is not defined +2025-03-10 15:30:17,616 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,617 - ERROR - Error in episode 9225: name 'args' is not defined +2025-03-10 15:30:17,619 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,619 - ERROR - Error in episode 9226: name 'args' is not defined +2025-03-10 15:30:17,622 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,622 - ERROR - Error in episode 9227: name 'args' is not defined +2025-03-10 15:30:17,625 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,625 - ERROR - Error in episode 9228: name 'args' is not defined +2025-03-10 15:30:17,627 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,627 - ERROR - Error in episode 9229: name 'args' is not defined +2025-03-10 15:30:17,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,630 - ERROR - Error in episode 9230: name 'args' is not defined +2025-03-10 15:30:17,633 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,633 - ERROR - Error in episode 9231: name 'args' is not defined +2025-03-10 15:30:17,635 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,637 - ERROR - Error in episode 9232: name 'args' is not defined +2025-03-10 15:30:17,639 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,639 - ERROR - Error in episode 9233: name 'args' is not defined +2025-03-10 15:30:17,642 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,642 - ERROR - Error in episode 9234: name 'args' is not defined +2025-03-10 15:30:17,646 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,646 - ERROR - Error in episode 9235: name 'args' is not defined +2025-03-10 15:30:17,649 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,649 - ERROR - Error in episode 9236: name 'args' is not defined +2025-03-10 15:30:17,652 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,652 - ERROR - Error in episode 9237: name 'args' is not defined +2025-03-10 15:30:17,655 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,655 - ERROR - Error in episode 9238: name 'args' is not defined +2025-03-10 15:30:17,658 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,659 - ERROR - Error in episode 9239: name 'args' is not defined +2025-03-10 15:30:17,662 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,662 - ERROR - Error in episode 9240: name 'args' is not defined +2025-03-10 15:30:17,665 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,666 - ERROR - Error in episode 9241: name 'args' is not defined +2025-03-10 15:30:17,668 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,668 - ERROR - Error in episode 9242: name 'args' is not defined +2025-03-10 15:30:17,671 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,671 - ERROR - Error in episode 9243: name 'args' is not defined +2025-03-10 15:30:17,674 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,675 - ERROR - Error in episode 9244: name 'args' is not defined +2025-03-10 15:30:17,677 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,678 - ERROR - Error in episode 9245: name 'args' is not defined +2025-03-10 15:30:17,681 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,681 - ERROR - Error in episode 9246: name 'args' is not defined +2025-03-10 15:30:17,684 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,684 - ERROR - Error in episode 9247: name 'args' is not defined +2025-03-10 15:30:17,688 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,688 - ERROR - Error in episode 9248: name 'args' is not defined +2025-03-10 15:30:17,691 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,691 - ERROR - Error in episode 9249: name 'args' is not defined +2025-03-10 15:30:17,694 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,695 - ERROR - Error in episode 9250: name 'args' is not defined +2025-03-10 15:30:17,697 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,697 - ERROR - Error in episode 9251: name 'args' is not defined +2025-03-10 15:30:17,700 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,700 - ERROR - Error in episode 9252: name 'args' is not defined +2025-03-10 15:30:17,703 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,703 - ERROR - Error in episode 9253: name 'args' is not defined +2025-03-10 15:30:17,705 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,706 - ERROR - Error in episode 9254: name 'args' is not defined +2025-03-10 15:30:17,709 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,710 - ERROR - Error in episode 9255: name 'args' is not defined +2025-03-10 15:30:17,712 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,713 - ERROR - Error in episode 9256: name 'args' is not defined +2025-03-10 15:30:17,715 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,716 - ERROR - Error in episode 9257: name 'args' is not defined +2025-03-10 15:30:17,718 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,718 - ERROR - Error in episode 9258: name 'args' is not defined +2025-03-10 15:30:17,721 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,721 - ERROR - Error in episode 9259: name 'args' is not defined +2025-03-10 15:30:17,724 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,724 - ERROR - Error in episode 9260: name 'args' is not defined +2025-03-10 15:30:17,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,727 - ERROR - Error in episode 9261: name 'args' is not defined +2025-03-10 15:30:17,730 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,730 - ERROR - Error in episode 9262: name 'args' is not defined +2025-03-10 15:30:17,733 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,733 - ERROR - Error in episode 9263: name 'args' is not defined +2025-03-10 15:30:17,735 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,736 - ERROR - Error in episode 9264: name 'args' is not defined +2025-03-10 15:30:17,738 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,738 - ERROR - Error in episode 9265: name 'args' is not defined +2025-03-10 15:30:17,741 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,741 - ERROR - Error in episode 9266: name 'args' is not defined +2025-03-10 15:30:17,744 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,744 - ERROR - Error in episode 9267: name 'args' is not defined +2025-03-10 15:30:17,747 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,747 - ERROR - Error in episode 9268: name 'args' is not defined +2025-03-10 15:30:17,749 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,750 - ERROR - Error in episode 9269: name 'args' is not defined +2025-03-10 15:30:17,752 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,752 - ERROR - Error in episode 9270: name 'args' is not defined +2025-03-10 15:30:17,755 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,755 - ERROR - Error in episode 9271: name 'args' is not defined +2025-03-10 15:30:17,757 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,758 - ERROR - Error in episode 9272: name 'args' is not defined +2025-03-10 15:30:17,760 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,761 - ERROR - Error in episode 9273: name 'args' is not defined +2025-03-10 15:30:17,764 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,764 - ERROR - Error in episode 9274: name 'args' is not defined +2025-03-10 15:30:17,767 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,767 - ERROR - Error in episode 9275: name 'args' is not defined +2025-03-10 15:30:17,770 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,770 - ERROR - Error in episode 9276: name 'args' is not defined +2025-03-10 15:30:17,775 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,775 - ERROR - Error in episode 9277: name 'args' is not defined +2025-03-10 15:30:17,778 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,779 - ERROR - Error in episode 9278: name 'args' is not defined +2025-03-10 15:30:17,782 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,782 - ERROR - Error in episode 9279: name 'args' is not defined +2025-03-10 15:30:17,785 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,786 - ERROR - Error in episode 9280: name 'args' is not defined +2025-03-10 15:30:17,789 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,790 - ERROR - Error in episode 9281: name 'args' is not defined +2025-03-10 15:30:17,793 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,793 - ERROR - Error in episode 9282: name 'args' is not defined +2025-03-10 15:30:17,796 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,796 - ERROR - Error in episode 9283: name 'args' is not defined +2025-03-10 15:30:17,799 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,800 - ERROR - Error in episode 9284: name 'args' is not defined +2025-03-10 15:30:17,803 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,804 - ERROR - Error in episode 9285: name 'args' is not defined +2025-03-10 15:30:17,808 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,808 - ERROR - Error in episode 9286: name 'args' is not defined +2025-03-10 15:30:17,812 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,812 - ERROR - Error in episode 9287: name 'args' is not defined +2025-03-10 15:30:17,816 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,816 - ERROR - Error in episode 9288: name 'args' is not defined +2025-03-10 15:30:17,820 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,821 - ERROR - Error in episode 9289: name 'args' is not defined +2025-03-10 15:30:17,824 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,825 - ERROR - Error in episode 9290: name 'args' is not defined +2025-03-10 15:30:17,829 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,830 - ERROR - Error in episode 9291: name 'args' is not defined +2025-03-10 15:30:17,833 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,833 - ERROR - Error in episode 9292: name 'args' is not defined +2025-03-10 15:30:17,836 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,836 - ERROR - Error in episode 9293: name 'args' is not defined +2025-03-10 15:30:17,839 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,840 - ERROR - Error in episode 9294: name 'args' is not defined +2025-03-10 15:30:17,843 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,844 - ERROR - Error in episode 9295: name 'args' is not defined +2025-03-10 15:30:17,846 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,846 - ERROR - Error in episode 9296: name 'args' is not defined +2025-03-10 15:30:17,850 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,850 - ERROR - Error in episode 9297: name 'args' is not defined +2025-03-10 15:30:17,854 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,854 - ERROR - Error in episode 9298: name 'args' is not defined +2025-03-10 15:30:17,856 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,857 - ERROR - Error in episode 9299: name 'args' is not defined +2025-03-10 15:30:17,861 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,861 - ERROR - Error in episode 9300: name 'args' is not defined +2025-03-10 15:30:17,865 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,865 - ERROR - Error in episode 9301: name 'args' is not defined +2025-03-10 15:30:17,867 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,867 - ERROR - Error in episode 9302: name 'args' is not defined +2025-03-10 15:30:17,871 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,871 - ERROR - Error in episode 9303: name 'args' is not defined +2025-03-10 15:30:17,874 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,875 - ERROR - Error in episode 9304: name 'args' is not defined +2025-03-10 15:30:17,878 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,878 - ERROR - Error in episode 9305: name 'args' is not defined +2025-03-10 15:30:17,881 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,881 - ERROR - Error in episode 9306: name 'args' is not defined +2025-03-10 15:30:17,884 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,884 - ERROR - Error in episode 9307: name 'args' is not defined +2025-03-10 15:30:17,888 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,889 - ERROR - Error in episode 9308: name 'args' is not defined +2025-03-10 15:30:17,892 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,892 - ERROR - Error in episode 9309: name 'args' is not defined +2025-03-10 15:30:17,895 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,895 - ERROR - Error in episode 9310: name 'args' is not defined +2025-03-10 15:30:17,898 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,900 - ERROR - Error in episode 9311: name 'args' is not defined +2025-03-10 15:30:17,903 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,903 - ERROR - Error in episode 9312: name 'args' is not defined +2025-03-10 15:30:17,906 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,906 - ERROR - Error in episode 9313: name 'args' is not defined +2025-03-10 15:30:17,909 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,910 - ERROR - Error in episode 9314: name 'args' is not defined +2025-03-10 15:30:17,913 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,913 - ERROR - Error in episode 9315: name 'args' is not defined +2025-03-10 15:30:17,917 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,917 - ERROR - Error in episode 9316: name 'args' is not defined +2025-03-10 15:30:17,920 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,921 - ERROR - Error in episode 9317: name 'args' is not defined +2025-03-10 15:30:17,924 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,924 - ERROR - Error in episode 9318: name 'args' is not defined +2025-03-10 15:30:17,928 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,929 - ERROR - Error in episode 9319: name 'args' is not defined +2025-03-10 15:30:17,932 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,932 - ERROR - Error in episode 9320: name 'args' is not defined +2025-03-10 15:30:17,935 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,935 - ERROR - Error in episode 9321: name 'args' is not defined +2025-03-10 15:30:17,938 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,938 - ERROR - Error in episode 9322: name 'args' is not defined +2025-03-10 15:30:17,941 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,943 - ERROR - Error in episode 9323: name 'args' is not defined +2025-03-10 15:30:17,946 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,946 - ERROR - Error in episode 9324: name 'args' is not defined +2025-03-10 15:30:17,949 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,950 - ERROR - Error in episode 9325: name 'args' is not defined +2025-03-10 15:30:17,952 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,953 - ERROR - Error in episode 9326: name 'args' is not defined +2025-03-10 15:30:17,955 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,955 - ERROR - Error in episode 9327: name 'args' is not defined +2025-03-10 15:30:17,958 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,958 - ERROR - Error in episode 9328: name 'args' is not defined +2025-03-10 15:30:17,960 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,962 - ERROR - Error in episode 9329: name 'args' is not defined +2025-03-10 15:30:17,964 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,965 - ERROR - Error in episode 9330: name 'args' is not defined +2025-03-10 15:30:17,967 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,968 - ERROR - Error in episode 9331: name 'args' is not defined +2025-03-10 15:30:17,970 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,970 - ERROR - Error in episode 9332: name 'args' is not defined +2025-03-10 15:30:17,973 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,975 - ERROR - Error in episode 9333: name 'args' is not defined +2025-03-10 15:30:17,977 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,977 - ERROR - Error in episode 9334: name 'args' is not defined +2025-03-10 15:30:17,980 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,980 - ERROR - Error in episode 9335: name 'args' is not defined +2025-03-10 15:30:17,983 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,984 - ERROR - Error in episode 9336: name 'args' is not defined +2025-03-10 15:30:17,986 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,986 - ERROR - Error in episode 9337: name 'args' is not defined +2025-03-10 15:30:17,989 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,989 - ERROR - Error in episode 9338: name 'args' is not defined +2025-03-10 15:30:17,992 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,992 - ERROR - Error in episode 9339: name 'args' is not defined +2025-03-10 15:30:17,995 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,995 - ERROR - Error in episode 9340: name 'args' is not defined +2025-03-10 15:30:17,998 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:17,998 - ERROR - Error in episode 9341: name 'args' is not defined +2025-03-10 15:30:18,001 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,001 - ERROR - Error in episode 9342: name 'args' is not defined +2025-03-10 15:30:18,004 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,004 - ERROR - Error in episode 9343: name 'args' is not defined +2025-03-10 15:30:18,007 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,007 - ERROR - Error in episode 9344: name 'args' is not defined +2025-03-10 15:30:18,010 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,010 - ERROR - Error in episode 9345: name 'args' is not defined +2025-03-10 15:30:18,013 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,013 - ERROR - Error in episode 9346: name 'args' is not defined +2025-03-10 15:30:18,015 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,016 - ERROR - Error in episode 9347: name 'args' is not defined +2025-03-10 15:30:18,018 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,019 - ERROR - Error in episode 9348: name 'args' is not defined +2025-03-10 15:30:18,022 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,022 - ERROR - Error in episode 9349: name 'args' is not defined +2025-03-10 15:30:18,025 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,025 - ERROR - Error in episode 9350: name 'args' is not defined +2025-03-10 15:30:18,028 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,028 - ERROR - Error in episode 9351: name 'args' is not defined +2025-03-10 15:30:18,031 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,031 - ERROR - Error in episode 9352: name 'args' is not defined +2025-03-10 15:30:18,034 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,034 - ERROR - Error in episode 9353: name 'args' is not defined +2025-03-10 15:30:18,037 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,037 - ERROR - Error in episode 9354: name 'args' is not defined +2025-03-10 15:30:18,040 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,040 - ERROR - Error in episode 9355: name 'args' is not defined +2025-03-10 15:30:18,044 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,044 - ERROR - Error in episode 9356: name 'args' is not defined +2025-03-10 15:30:18,047 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,048 - ERROR - Error in episode 9357: name 'args' is not defined +2025-03-10 15:30:18,050 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,051 - ERROR - Error in episode 9358: name 'args' is not defined +2025-03-10 15:30:18,053 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,053 - ERROR - Error in episode 9359: name 'args' is not defined +2025-03-10 15:30:18,056 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,056 - ERROR - Error in episode 9360: name 'args' is not defined +2025-03-10 15:30:18,059 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,059 - ERROR - Error in episode 9361: name 'args' is not defined +2025-03-10 15:30:18,063 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,063 - ERROR - Error in episode 9362: name 'args' is not defined +2025-03-10 15:30:18,065 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,066 - ERROR - Error in episode 9363: name 'args' is not defined +2025-03-10 15:30:18,068 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,069 - ERROR - Error in episode 9364: name 'args' is not defined +2025-03-10 15:30:18,071 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,072 - ERROR - Error in episode 9365: name 'args' is not defined +2025-03-10 15:30:18,075 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,075 - ERROR - Error in episode 9366: name 'args' is not defined +2025-03-10 15:30:18,077 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,078 - ERROR - Error in episode 9367: name 'args' is not defined +2025-03-10 15:30:18,081 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,081 - ERROR - Error in episode 9368: name 'args' is not defined +2025-03-10 15:30:18,085 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,085 - ERROR - Error in episode 9369: name 'args' is not defined +2025-03-10 15:30:18,088 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,089 - ERROR - Error in episode 9370: name 'args' is not defined +2025-03-10 15:30:18,092 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,092 - ERROR - Error in episode 9371: name 'args' is not defined +2025-03-10 15:30:18,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,095 - ERROR - Error in episode 9372: name 'args' is not defined +2025-03-10 15:30:18,098 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,098 - ERROR - Error in episode 9373: name 'args' is not defined +2025-03-10 15:30:18,102 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,102 - ERROR - Error in episode 9374: name 'args' is not defined +2025-03-10 15:30:18,104 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,104 - ERROR - Error in episode 9375: name 'args' is not defined +2025-03-10 15:30:18,108 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,108 - ERROR - Error in episode 9376: name 'args' is not defined +2025-03-10 15:30:18,112 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,112 - ERROR - Error in episode 9377: name 'args' is not defined +2025-03-10 15:30:18,114 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,114 - ERROR - Error in episode 9378: name 'args' is not defined +2025-03-10 15:30:18,118 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,118 - ERROR - Error in episode 9379: name 'args' is not defined +2025-03-10 15:30:18,121 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,121 - ERROR - Error in episode 9380: name 'args' is not defined +2025-03-10 15:30:18,124 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,125 - ERROR - Error in episode 9381: name 'args' is not defined +2025-03-10 15:30:18,129 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,129 - ERROR - Error in episode 9382: name 'args' is not defined +2025-03-10 15:30:18,132 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,132 - ERROR - Error in episode 9383: name 'args' is not defined +2025-03-10 15:30:18,137 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,137 - ERROR - Error in episode 9384: name 'args' is not defined +2025-03-10 15:30:18,140 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,140 - ERROR - Error in episode 9385: name 'args' is not defined +2025-03-10 15:30:18,142 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,143 - ERROR - Error in episode 9386: name 'args' is not defined +2025-03-10 15:30:18,146 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,146 - ERROR - Error in episode 9387: name 'args' is not defined +2025-03-10 15:30:18,149 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,149 - ERROR - Error in episode 9388: name 'args' is not defined +2025-03-10 15:30:18,151 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,152 - ERROR - Error in episode 9389: name 'args' is not defined +2025-03-10 15:30:18,155 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,155 - ERROR - Error in episode 9390: name 'args' is not defined +2025-03-10 15:30:18,158 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,158 - ERROR - Error in episode 9391: name 'args' is not defined +2025-03-10 15:30:18,161 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,162 - ERROR - Error in episode 9392: name 'args' is not defined +2025-03-10 15:30:18,165 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,166 - ERROR - Error in episode 9393: name 'args' is not defined +2025-03-10 15:30:18,168 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,169 - ERROR - Error in episode 9394: name 'args' is not defined +2025-03-10 15:30:18,171 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,172 - ERROR - Error in episode 9395: name 'args' is not defined +2025-03-10 15:30:18,174 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,174 - ERROR - Error in episode 9396: name 'args' is not defined +2025-03-10 15:30:18,177 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,178 - ERROR - Error in episode 9397: name 'args' is not defined +2025-03-10 15:30:18,180 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,181 - ERROR - Error in episode 9398: name 'args' is not defined +2025-03-10 15:30:18,184 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,184 - ERROR - Error in episode 9399: name 'args' is not defined +2025-03-10 15:30:18,187 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,188 - ERROR - Error in episode 9400: name 'args' is not defined +2025-03-10 15:30:18,191 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,191 - ERROR - Error in episode 9401: name 'args' is not defined +2025-03-10 15:30:18,194 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,194 - ERROR - Error in episode 9402: name 'args' is not defined +2025-03-10 15:30:18,197 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,197 - ERROR - Error in episode 9403: name 'args' is not defined +2025-03-10 15:30:18,200 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,200 - ERROR - Error in episode 9404: name 'args' is not defined +2025-03-10 15:30:18,204 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,204 - ERROR - Error in episode 9405: name 'args' is not defined +2025-03-10 15:30:18,207 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,207 - ERROR - Error in episode 9406: name 'args' is not defined +2025-03-10 15:30:18,211 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,211 - ERROR - Error in episode 9407: name 'args' is not defined +2025-03-10 15:30:18,214 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,214 - ERROR - Error in episode 9408: name 'args' is not defined +2025-03-10 15:30:18,218 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,218 - ERROR - Error in episode 9409: name 'args' is not defined +2025-03-10 15:30:18,221 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,221 - ERROR - Error in episode 9410: name 'args' is not defined +2025-03-10 15:30:18,224 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,224 - ERROR - Error in episode 9411: name 'args' is not defined +2025-03-10 15:30:18,228 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,229 - ERROR - Error in episode 9412: name 'args' is not defined +2025-03-10 15:30:18,231 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,231 - ERROR - Error in episode 9413: name 'args' is not defined +2025-03-10 15:30:18,235 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,235 - ERROR - Error in episode 9414: name 'args' is not defined +2025-03-10 15:30:18,238 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,238 - ERROR - Error in episode 9415: name 'args' is not defined +2025-03-10 15:30:18,241 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,242 - ERROR - Error in episode 9416: name 'args' is not defined +2025-03-10 15:30:18,245 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,245 - ERROR - Error in episode 9417: name 'args' is not defined +2025-03-10 15:30:18,248 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,248 - ERROR - Error in episode 9418: name 'args' is not defined +2025-03-10 15:30:18,251 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,251 - ERROR - Error in episode 9419: name 'args' is not defined +2025-03-10 15:30:18,254 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,254 - ERROR - Error in episode 9420: name 'args' is not defined +2025-03-10 15:30:18,258 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,258 - ERROR - Error in episode 9421: name 'args' is not defined +2025-03-10 15:30:18,261 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,261 - ERROR - Error in episode 9422: name 'args' is not defined +2025-03-10 15:30:18,264 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,265 - ERROR - Error in episode 9423: name 'args' is not defined +2025-03-10 15:30:18,267 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,267 - ERROR - Error in episode 9424: name 'args' is not defined +2025-03-10 15:30:18,271 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,271 - ERROR - Error in episode 9425: name 'args' is not defined +2025-03-10 15:30:18,274 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,274 - ERROR - Error in episode 9426: name 'args' is not defined +2025-03-10 15:30:18,276 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,277 - ERROR - Error in episode 9427: name 'args' is not defined +2025-03-10 15:30:18,280 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,280 - ERROR - Error in episode 9428: name 'args' is not defined +2025-03-10 15:30:18,284 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,285 - ERROR - Error in episode 9429: name 'args' is not defined +2025-03-10 15:30:18,287 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,288 - ERROR - Error in episode 9430: name 'args' is not defined +2025-03-10 15:30:18,291 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,291 - ERROR - Error in episode 9431: name 'args' is not defined +2025-03-10 15:30:18,294 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,294 - ERROR - Error in episode 9432: name 'args' is not defined +2025-03-10 15:30:18,297 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,297 - ERROR - Error in episode 9433: name 'args' is not defined +2025-03-10 15:30:18,301 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,301 - ERROR - Error in episode 9434: name 'args' is not defined +2025-03-10 15:30:18,303 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,304 - ERROR - Error in episode 9435: name 'args' is not defined +2025-03-10 15:30:18,307 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,307 - ERROR - Error in episode 9436: name 'args' is not defined +2025-03-10 15:30:18,310 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,310 - ERROR - Error in episode 9437: name 'args' is not defined +2025-03-10 15:30:18,314 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,314 - ERROR - Error in episode 9438: name 'args' is not defined +2025-03-10 15:30:18,317 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,317 - ERROR - Error in episode 9439: name 'args' is not defined +2025-03-10 15:30:18,320 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,320 - ERROR - Error in episode 9440: name 'args' is not defined +2025-03-10 15:30:18,323 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,323 - ERROR - Error in episode 9441: name 'args' is not defined +2025-03-10 15:30:18,326 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,326 - ERROR - Error in episode 9442: name 'args' is not defined +2025-03-10 15:30:18,330 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,330 - ERROR - Error in episode 9443: name 'args' is not defined +2025-03-10 15:30:18,333 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,333 - ERROR - Error in episode 9444: name 'args' is not defined +2025-03-10 15:30:18,337 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,337 - ERROR - Error in episode 9445: name 'args' is not defined +2025-03-10 15:30:18,340 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,340 - ERROR - Error in episode 9446: name 'args' is not defined +2025-03-10 15:30:18,342 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,343 - ERROR - Error in episode 9447: name 'args' is not defined +2025-03-10 15:30:18,346 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,346 - ERROR - Error in episode 9448: name 'args' is not defined +2025-03-10 15:30:18,349 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,349 - ERROR - Error in episode 9449: name 'args' is not defined +2025-03-10 15:30:18,352 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,352 - ERROR - Error in episode 9450: name 'args' is not defined +2025-03-10 15:30:18,356 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,356 - ERROR - Error in episode 9451: name 'args' is not defined +2025-03-10 15:30:18,359 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,359 - ERROR - Error in episode 9452: name 'args' is not defined +2025-03-10 15:30:18,362 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,363 - ERROR - Error in episode 9453: name 'args' is not defined +2025-03-10 15:30:18,365 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,365 - ERROR - Error in episode 9454: name 'args' is not defined +2025-03-10 15:30:18,368 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,368 - ERROR - Error in episode 9455: name 'args' is not defined +2025-03-10 15:30:18,371 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,371 - ERROR - Error in episode 9456: name 'args' is not defined +2025-03-10 15:30:18,374 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,374 - ERROR - Error in episode 9457: name 'args' is not defined +2025-03-10 15:30:18,377 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,377 - ERROR - Error in episode 9458: name 'args' is not defined +2025-03-10 15:30:18,381 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,381 - ERROR - Error in episode 9459: name 'args' is not defined +2025-03-10 15:30:18,384 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,384 - ERROR - Error in episode 9460: name 'args' is not defined +2025-03-10 15:30:18,387 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,388 - ERROR - Error in episode 9461: name 'args' is not defined +2025-03-10 15:30:18,391 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,391 - ERROR - Error in episode 9462: name 'args' is not defined +2025-03-10 15:30:18,393 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,394 - ERROR - Error in episode 9463: name 'args' is not defined +2025-03-10 15:30:18,396 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,397 - ERROR - Error in episode 9464: name 'args' is not defined +2025-03-10 15:30:18,399 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,399 - ERROR - Error in episode 9465: name 'args' is not defined +2025-03-10 15:30:18,402 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,402 - ERROR - Error in episode 9466: name 'args' is not defined +2025-03-10 15:30:18,406 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,406 - ERROR - Error in episode 9467: name 'args' is not defined +2025-03-10 15:30:18,409 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,410 - ERROR - Error in episode 9468: name 'args' is not defined +2025-03-10 15:30:18,412 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,412 - ERROR - Error in episode 9469: name 'args' is not defined +2025-03-10 15:30:18,415 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,416 - ERROR - Error in episode 9470: name 'args' is not defined +2025-03-10 15:30:18,418 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,419 - ERROR - Error in episode 9471: name 'args' is not defined +2025-03-10 15:30:18,422 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,422 - ERROR - Error in episode 9472: name 'args' is not defined +2025-03-10 15:30:18,425 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,425 - ERROR - Error in episode 9473: name 'args' is not defined +2025-03-10 15:30:18,428 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,428 - ERROR - Error in episode 9474: name 'args' is not defined +2025-03-10 15:30:18,431 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,431 - ERROR - Error in episode 9475: name 'args' is not defined +2025-03-10 15:30:18,434 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,434 - ERROR - Error in episode 9476: name 'args' is not defined +2025-03-10 15:30:18,438 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,438 - ERROR - Error in episode 9477: name 'args' is not defined +2025-03-10 15:30:18,440 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,441 - ERROR - Error in episode 9478: name 'args' is not defined +2025-03-10 15:30:18,443 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,444 - ERROR - Error in episode 9479: name 'args' is not defined +2025-03-10 15:30:18,447 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,447 - ERROR - Error in episode 9480: name 'args' is not defined +2025-03-10 15:30:18,449 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,450 - ERROR - Error in episode 9481: name 'args' is not defined +2025-03-10 15:30:18,452 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,453 - ERROR - Error in episode 9482: name 'args' is not defined +2025-03-10 15:30:18,456 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,457 - ERROR - Error in episode 9483: name 'args' is not defined +2025-03-10 15:30:18,459 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,460 - ERROR - Error in episode 9484: name 'args' is not defined +2025-03-10 15:30:18,462 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,463 - ERROR - Error in episode 9485: name 'args' is not defined +2025-03-10 15:30:18,466 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,466 - ERROR - Error in episode 9486: name 'args' is not defined +2025-03-10 15:30:18,468 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,469 - ERROR - Error in episode 9487: name 'args' is not defined +2025-03-10 15:30:18,472 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,472 - ERROR - Error in episode 9488: name 'args' is not defined +2025-03-10 15:30:18,475 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,475 - ERROR - Error in episode 9489: name 'args' is not defined +2025-03-10 15:30:18,477 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,478 - ERROR - Error in episode 9490: name 'args' is not defined +2025-03-10 15:30:18,481 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,481 - ERROR - Error in episode 9491: name 'args' is not defined +2025-03-10 15:30:18,484 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,484 - ERROR - Error in episode 9492: name 'args' is not defined +2025-03-10 15:30:18,488 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,488 - ERROR - Error in episode 9493: name 'args' is not defined +2025-03-10 15:30:18,491 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,491 - ERROR - Error in episode 9494: name 'args' is not defined +2025-03-10 15:30:18,494 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,494 - ERROR - Error in episode 9495: name 'args' is not defined +2025-03-10 15:30:18,497 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,497 - ERROR - Error in episode 9496: name 'args' is not defined +2025-03-10 15:30:18,500 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,500 - ERROR - Error in episode 9497: name 'args' is not defined +2025-03-10 15:30:18,502 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,503 - ERROR - Error in episode 9498: name 'args' is not defined +2025-03-10 15:30:18,506 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,506 - ERROR - Error in episode 9499: name 'args' is not defined +2025-03-10 15:30:18,509 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,510 - ERROR - Error in episode 9500: name 'args' is not defined +2025-03-10 15:30:18,513 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,513 - ERROR - Error in episode 9501: name 'args' is not defined +2025-03-10 15:30:18,515 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,515 - ERROR - Error in episode 9502: name 'args' is not defined +2025-03-10 15:30:18,518 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,518 - ERROR - Error in episode 9503: name 'args' is not defined +2025-03-10 15:30:18,521 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,522 - ERROR - Error in episode 9504: name 'args' is not defined +2025-03-10 15:30:18,524 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,525 - ERROR - Error in episode 9505: name 'args' is not defined +2025-03-10 15:30:18,528 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,528 - ERROR - Error in episode 9506: name 'args' is not defined +2025-03-10 15:30:18,531 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,531 - ERROR - Error in episode 9507: name 'args' is not defined +2025-03-10 15:30:18,534 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,535 - ERROR - Error in episode 9508: name 'args' is not defined +2025-03-10 15:30:18,537 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,537 - ERROR - Error in episode 9509: name 'args' is not defined +2025-03-10 15:30:18,541 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,541 - ERROR - Error in episode 9510: name 'args' is not defined +2025-03-10 15:30:18,543 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,544 - ERROR - Error in episode 9511: name 'args' is not defined +2025-03-10 15:30:18,546 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,547 - ERROR - Error in episode 9512: name 'args' is not defined +2025-03-10 15:30:18,549 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,551 - ERROR - Error in episode 9513: name 'args' is not defined +2025-03-10 15:30:18,553 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,554 - ERROR - Error in episode 9514: name 'args' is not defined +2025-03-10 15:30:18,556 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,556 - ERROR - Error in episode 9515: name 'args' is not defined +2025-03-10 15:30:18,559 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,559 - ERROR - Error in episode 9516: name 'args' is not defined +2025-03-10 15:30:18,562 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,563 - ERROR - Error in episode 9517: name 'args' is not defined +2025-03-10 15:30:18,566 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,567 - ERROR - Error in episode 9518: name 'args' is not defined +2025-03-10 15:30:18,569 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,570 - ERROR - Error in episode 9519: name 'args' is not defined +2025-03-10 15:30:18,573 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,573 - ERROR - Error in episode 9520: name 'args' is not defined +2025-03-10 15:30:18,575 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,576 - ERROR - Error in episode 9521: name 'args' is not defined +2025-03-10 15:30:18,578 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,579 - ERROR - Error in episode 9522: name 'args' is not defined +2025-03-10 15:30:18,582 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,583 - ERROR - Error in episode 9523: name 'args' is not defined +2025-03-10 15:30:18,586 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,586 - ERROR - Error in episode 9524: name 'args' is not defined +2025-03-10 15:30:18,589 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,590 - ERROR - Error in episode 9525: name 'args' is not defined +2025-03-10 15:30:18,593 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,593 - ERROR - Error in episode 9526: name 'args' is not defined +2025-03-10 15:30:18,595 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,597 - ERROR - Error in episode 9527: name 'args' is not defined +2025-03-10 15:30:18,599 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,599 - ERROR - Error in episode 9528: name 'args' is not defined +2025-03-10 15:30:18,601 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,602 - ERROR - Error in episode 9529: name 'args' is not defined +2025-03-10 15:30:18,604 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,605 - ERROR - Error in episode 9530: name 'args' is not defined +2025-03-10 15:30:18,607 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,607 - ERROR - Error in episode 9531: name 'args' is not defined +2025-03-10 15:30:18,610 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,610 - ERROR - Error in episode 9532: name 'args' is not defined +2025-03-10 15:30:18,613 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,613 - ERROR - Error in episode 9533: name 'args' is not defined +2025-03-10 15:30:18,616 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,617 - ERROR - Error in episode 9534: name 'args' is not defined +2025-03-10 15:30:18,619 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,620 - ERROR - Error in episode 9535: name 'args' is not defined +2025-03-10 15:30:18,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,624 - ERROR - Error in episode 9536: name 'args' is not defined +2025-03-10 15:30:18,626 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,626 - ERROR - Error in episode 9537: name 'args' is not defined +2025-03-10 15:30:18,629 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,629 - ERROR - Error in episode 9538: name 'args' is not defined +2025-03-10 15:30:18,633 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,633 - ERROR - Error in episode 9539: name 'args' is not defined +2025-03-10 15:30:18,635 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,636 - ERROR - Error in episode 9540: name 'args' is not defined +2025-03-10 15:30:18,638 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,639 - ERROR - Error in episode 9541: name 'args' is not defined +2025-03-10 15:30:18,641 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,642 - ERROR - Error in episode 9542: name 'args' is not defined +2025-03-10 15:30:18,645 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,645 - ERROR - Error in episode 9543: name 'args' is not defined +2025-03-10 15:30:18,649 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,649 - ERROR - Error in episode 9544: name 'args' is not defined +2025-03-10 15:30:18,652 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,652 - ERROR - Error in episode 9545: name 'args' is not defined +2025-03-10 15:30:18,655 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,655 - ERROR - Error in episode 9546: name 'args' is not defined +2025-03-10 15:30:18,659 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,659 - ERROR - Error in episode 9547: name 'args' is not defined +2025-03-10 15:30:18,662 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,662 - ERROR - Error in episode 9548: name 'args' is not defined +2025-03-10 15:30:18,665 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,666 - ERROR - Error in episode 9549: name 'args' is not defined +2025-03-10 15:30:18,669 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,669 - ERROR - Error in episode 9550: name 'args' is not defined +2025-03-10 15:30:18,672 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,673 - ERROR - Error in episode 9551: name 'args' is not defined +2025-03-10 15:30:18,676 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,677 - ERROR - Error in episode 9552: name 'args' is not defined +2025-03-10 15:30:18,680 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,680 - ERROR - Error in episode 9553: name 'args' is not defined +2025-03-10 15:30:18,685 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,685 - ERROR - Error in episode 9554: name 'args' is not defined +2025-03-10 15:30:18,689 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,689 - ERROR - Error in episode 9555: name 'args' is not defined +2025-03-10 15:30:18,692 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,693 - ERROR - Error in episode 9556: name 'args' is not defined +2025-03-10 15:30:18,695 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,696 - ERROR - Error in episode 9557: name 'args' is not defined +2025-03-10 15:30:18,698 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,699 - ERROR - Error in episode 9558: name 'args' is not defined +2025-03-10 15:30:18,701 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,702 - ERROR - Error in episode 9559: name 'args' is not defined +2025-03-10 15:30:18,704 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,705 - ERROR - Error in episode 9560: name 'args' is not defined +2025-03-10 15:30:18,707 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,708 - ERROR - Error in episode 9561: name 'args' is not defined +2025-03-10 15:30:18,711 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,711 - ERROR - Error in episode 9562: name 'args' is not defined +2025-03-10 15:30:18,714 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,714 - ERROR - Error in episode 9563: name 'args' is not defined +2025-03-10 15:30:18,717 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,717 - ERROR - Error in episode 9564: name 'args' is not defined +2025-03-10 15:30:18,722 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,722 - ERROR - Error in episode 9565: name 'args' is not defined +2025-03-10 15:30:18,725 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,725 - ERROR - Error in episode 9566: name 'args' is not defined +2025-03-10 15:30:18,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,728 - ERROR - Error in episode 9567: name 'args' is not defined +2025-03-10 15:30:18,730 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,731 - ERROR - Error in episode 9568: name 'args' is not defined +2025-03-10 15:30:18,734 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,734 - ERROR - Error in episode 9569: name 'args' is not defined +2025-03-10 15:30:18,737 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,737 - ERROR - Error in episode 9570: name 'args' is not defined +2025-03-10 15:30:18,741 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,741 - ERROR - Error in episode 9571: name 'args' is not defined +2025-03-10 15:30:18,744 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,744 - ERROR - Error in episode 9572: name 'args' is not defined +2025-03-10 15:30:18,747 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,748 - ERROR - Error in episode 9573: name 'args' is not defined +2025-03-10 15:30:18,751 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,752 - ERROR - Error in episode 9574: name 'args' is not defined +2025-03-10 15:30:18,755 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,756 - ERROR - Error in episode 9575: name 'args' is not defined +2025-03-10 15:30:18,759 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,759 - ERROR - Error in episode 9576: name 'args' is not defined +2025-03-10 15:30:18,763 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,763 - ERROR - Error in episode 9577: name 'args' is not defined +2025-03-10 15:30:18,766 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,767 - ERROR - Error in episode 9578: name 'args' is not defined +2025-03-10 15:30:18,770 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,770 - ERROR - Error in episode 9579: name 'args' is not defined +2025-03-10 15:30:18,773 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,774 - ERROR - Error in episode 9580: name 'args' is not defined +2025-03-10 15:30:18,777 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,777 - ERROR - Error in episode 9581: name 'args' is not defined +2025-03-10 15:30:18,780 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,780 - ERROR - Error in episode 9582: name 'args' is not defined +2025-03-10 15:30:18,785 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,785 - ERROR - Error in episode 9583: name 'args' is not defined +2025-03-10 15:30:18,788 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,788 - ERROR - Error in episode 9584: name 'args' is not defined +2025-03-10 15:30:18,792 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,792 - ERROR - Error in episode 9585: name 'args' is not defined +2025-03-10 15:30:18,794 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,795 - ERROR - Error in episode 9586: name 'args' is not defined +2025-03-10 15:30:18,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,798 - ERROR - Error in episode 9587: name 'args' is not defined +2025-03-10 15:30:18,802 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,803 - ERROR - Error in episode 9588: name 'args' is not defined +2025-03-10 15:30:18,806 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,806 - ERROR - Error in episode 9589: name 'args' is not defined +2025-03-10 15:30:18,810 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,810 - ERROR - Error in episode 9590: name 'args' is not defined +2025-03-10 15:30:18,813 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,813 - ERROR - Error in episode 9591: name 'args' is not defined +2025-03-10 15:30:18,815 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,816 - ERROR - Error in episode 9592: name 'args' is not defined +2025-03-10 15:30:18,818 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,819 - ERROR - Error in episode 9593: name 'args' is not defined +2025-03-10 15:30:18,822 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,822 - ERROR - Error in episode 9594: name 'args' is not defined +2025-03-10 15:30:18,825 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,826 - ERROR - Error in episode 9595: name 'args' is not defined +2025-03-10 15:30:18,829 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,829 - ERROR - Error in episode 9596: name 'args' is not defined +2025-03-10 15:30:18,832 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,832 - ERROR - Error in episode 9597: name 'args' is not defined +2025-03-10 15:30:18,834 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,835 - ERROR - Error in episode 9598: name 'args' is not defined +2025-03-10 15:30:18,837 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,838 - ERROR - Error in episode 9599: name 'args' is not defined +2025-03-10 15:30:18,840 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,841 - ERROR - Error in episode 9600: name 'args' is not defined +2025-03-10 15:30:18,844 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,845 - ERROR - Error in episode 9601: name 'args' is not defined +2025-03-10 15:30:18,847 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,847 - ERROR - Error in episode 9602: name 'args' is not defined +2025-03-10 15:30:18,850 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,850 - ERROR - Error in episode 9603: name 'args' is not defined +2025-03-10 15:30:18,853 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,853 - ERROR - Error in episode 9604: name 'args' is not defined +2025-03-10 15:30:18,857 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,858 - ERROR - Error in episode 9605: name 'args' is not defined +2025-03-10 15:30:18,860 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,861 - ERROR - Error in episode 9606: name 'args' is not defined +2025-03-10 15:30:18,863 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,864 - ERROR - Error in episode 9607: name 'args' is not defined +2025-03-10 15:30:18,867 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,867 - ERROR - Error in episode 9608: name 'args' is not defined +2025-03-10 15:30:18,871 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,871 - ERROR - Error in episode 9609: name 'args' is not defined +2025-03-10 15:30:18,875 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,875 - ERROR - Error in episode 9610: name 'args' is not defined +2025-03-10 15:30:18,878 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,878 - ERROR - Error in episode 9611: name 'args' is not defined +2025-03-10 15:30:18,882 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,882 - ERROR - Error in episode 9612: name 'args' is not defined +2025-03-10 15:30:18,886 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,887 - ERROR - Error in episode 9613: name 'args' is not defined +2025-03-10 15:30:18,890 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,890 - ERROR - Error in episode 9614: name 'args' is not defined +2025-03-10 15:30:18,894 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,894 - ERROR - Error in episode 9615: name 'args' is not defined +2025-03-10 15:30:18,897 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,898 - ERROR - Error in episode 9616: name 'args' is not defined +2025-03-10 15:30:18,900 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,901 - ERROR - Error in episode 9617: name 'args' is not defined +2025-03-10 15:30:18,903 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,904 - ERROR - Error in episode 9618: name 'args' is not defined +2025-03-10 15:30:18,906 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,907 - ERROR - Error in episode 9619: name 'args' is not defined +2025-03-10 15:30:18,910 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,910 - ERROR - Error in episode 9620: name 'args' is not defined +2025-03-10 15:30:18,914 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,915 - ERROR - Error in episode 9621: name 'args' is not defined +2025-03-10 15:30:18,917 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,918 - ERROR - Error in episode 9622: name 'args' is not defined +2025-03-10 15:30:18,921 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,922 - ERROR - Error in episode 9623: name 'args' is not defined +2025-03-10 15:30:18,924 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,924 - ERROR - Error in episode 9624: name 'args' is not defined +2025-03-10 15:30:18,929 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,929 - ERROR - Error in episode 9625: name 'args' is not defined +2025-03-10 15:30:18,932 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,933 - ERROR - Error in episode 9626: name 'args' is not defined +2025-03-10 15:30:18,935 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,935 - ERROR - Error in episode 9627: name 'args' is not defined +2025-03-10 15:30:18,938 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,938 - ERROR - Error in episode 9628: name 'args' is not defined +2025-03-10 15:30:18,941 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,941 - ERROR - Error in episode 9629: name 'args' is not defined +2025-03-10 15:30:18,945 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,946 - ERROR - Error in episode 9630: name 'args' is not defined +2025-03-10 15:30:18,948 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,950 - ERROR - Error in episode 9631: name 'args' is not defined +2025-03-10 15:30:18,952 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,953 - ERROR - Error in episode 9632: name 'args' is not defined +2025-03-10 15:30:18,956 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,956 - ERROR - Error in episode 9633: name 'args' is not defined +2025-03-10 15:30:18,959 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,960 - ERROR - Error in episode 9634: name 'args' is not defined +2025-03-10 15:30:18,963 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,963 - ERROR - Error in episode 9635: name 'args' is not defined +2025-03-10 15:30:18,965 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,966 - ERROR - Error in episode 9636: name 'args' is not defined +2025-03-10 15:30:18,969 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,969 - ERROR - Error in episode 9637: name 'args' is not defined +2025-03-10 15:30:18,971 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,972 - ERROR - Error in episode 9638: name 'args' is not defined +2025-03-10 15:30:18,974 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,974 - ERROR - Error in episode 9639: name 'args' is not defined +2025-03-10 15:30:18,978 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,978 - ERROR - Error in episode 9640: name 'args' is not defined +2025-03-10 15:30:18,981 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,981 - ERROR - Error in episode 9641: name 'args' is not defined +2025-03-10 15:30:18,984 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,984 - ERROR - Error in episode 9642: name 'args' is not defined +2025-03-10 15:30:18,987 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,987 - ERROR - Error in episode 9643: name 'args' is not defined +2025-03-10 15:30:18,989 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,990 - ERROR - Error in episode 9644: name 'args' is not defined +2025-03-10 15:30:18,993 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,993 - ERROR - Error in episode 9645: name 'args' is not defined +2025-03-10 15:30:18,996 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:18,996 - ERROR - Error in episode 9646: name 'args' is not defined +2025-03-10 15:30:18,999 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,000 - ERROR - Error in episode 9647: name 'args' is not defined +2025-03-10 15:30:19,003 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,004 - ERROR - Error in episode 9648: name 'args' is not defined +2025-03-10 15:30:19,007 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,007 - ERROR - Error in episode 9649: name 'args' is not defined +2025-03-10 15:30:19,011 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,011 - ERROR - Error in episode 9650: name 'args' is not defined +2025-03-10 15:30:19,014 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,015 - ERROR - Error in episode 9651: name 'args' is not defined +2025-03-10 15:30:19,018 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,018 - ERROR - Error in episode 9652: name 'args' is not defined +2025-03-10 15:30:19,021 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,022 - ERROR - Error in episode 9653: name 'args' is not defined +2025-03-10 15:30:19,024 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,025 - ERROR - Error in episode 9654: name 'args' is not defined +2025-03-10 15:30:19,027 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,027 - ERROR - Error in episode 9655: name 'args' is not defined +2025-03-10 15:30:19,030 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,031 - ERROR - Error in episode 9656: name 'args' is not defined +2025-03-10 15:30:19,033 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,033 - ERROR - Error in episode 9657: name 'args' is not defined +2025-03-10 15:30:19,037 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,038 - ERROR - Error in episode 9658: name 'args' is not defined +2025-03-10 15:30:19,041 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,042 - ERROR - Error in episode 9659: name 'args' is not defined +2025-03-10 15:30:19,044 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,045 - ERROR - Error in episode 9660: name 'args' is not defined +2025-03-10 15:30:19,047 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,047 - ERROR - Error in episode 9661: name 'args' is not defined +2025-03-10 15:30:19,050 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,051 - ERROR - Error in episode 9662: name 'args' is not defined +2025-03-10 15:30:19,054 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,055 - ERROR - Error in episode 9663: name 'args' is not defined +2025-03-10 15:30:19,058 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,059 - ERROR - Error in episode 9664: name 'args' is not defined +2025-03-10 15:30:19,061 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,062 - ERROR - Error in episode 9665: name 'args' is not defined +2025-03-10 15:30:19,065 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,065 - ERROR - Error in episode 9666: name 'args' is not defined +2025-03-10 15:30:19,069 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,069 - ERROR - Error in episode 9667: name 'args' is not defined +2025-03-10 15:30:19,073 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,073 - ERROR - Error in episode 9668: name 'args' is not defined +2025-03-10 15:30:19,077 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,077 - ERROR - Error in episode 9669: name 'args' is not defined +2025-03-10 15:30:19,081 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,082 - ERROR - Error in episode 9670: name 'args' is not defined +2025-03-10 15:30:19,084 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,084 - ERROR - Error in episode 9671: name 'args' is not defined +2025-03-10 15:30:19,088 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,088 - ERROR - Error in episode 9672: name 'args' is not defined +2025-03-10 15:30:19,091 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,091 - ERROR - Error in episode 9673: name 'args' is not defined +2025-03-10 15:30:19,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,094 - ERROR - Error in episode 9674: name 'args' is not defined +2025-03-10 15:30:19,097 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,097 - ERROR - Error in episode 9675: name 'args' is not defined +2025-03-10 15:30:19,101 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,101 - ERROR - Error in episode 9676: name 'args' is not defined +2025-03-10 15:30:19,104 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,105 - ERROR - Error in episode 9677: name 'args' is not defined +2025-03-10 15:30:19,108 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,109 - ERROR - Error in episode 9678: name 'args' is not defined +2025-03-10 15:30:19,111 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,112 - ERROR - Error in episode 9679: name 'args' is not defined +2025-03-10 15:30:19,115 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,115 - ERROR - Error in episode 9680: name 'args' is not defined +2025-03-10 15:30:19,119 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,119 - ERROR - Error in episode 9681: name 'args' is not defined +2025-03-10 15:30:19,123 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,123 - ERROR - Error in episode 9682: name 'args' is not defined +2025-03-10 15:30:19,127 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,128 - ERROR - Error in episode 9683: name 'args' is not defined +2025-03-10 15:30:19,131 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,131 - ERROR - Error in episode 9684: name 'args' is not defined +2025-03-10 15:30:19,134 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,134 - ERROR - Error in episode 9685: name 'args' is not defined +2025-03-10 15:30:19,137 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,138 - ERROR - Error in episode 9686: name 'args' is not defined +2025-03-10 15:30:19,141 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,141 - ERROR - Error in episode 9687: name 'args' is not defined +2025-03-10 15:30:19,145 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,145 - ERROR - Error in episode 9688: name 'args' is not defined +2025-03-10 15:30:19,149 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,149 - ERROR - Error in episode 9689: name 'args' is not defined +2025-03-10 15:30:19,152 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,153 - ERROR - Error in episode 9690: name 'args' is not defined +2025-03-10 15:30:19,156 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,157 - ERROR - Error in episode 9691: name 'args' is not defined +2025-03-10 15:30:19,161 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,161 - ERROR - Error in episode 9692: name 'args' is not defined +2025-03-10 15:30:19,164 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,165 - ERROR - Error in episode 9693: name 'args' is not defined +2025-03-10 15:30:19,168 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,169 - ERROR - Error in episode 9694: name 'args' is not defined +2025-03-10 15:30:19,171 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,171 - ERROR - Error in episode 9695: name 'args' is not defined +2025-03-10 15:30:19,175 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,175 - ERROR - Error in episode 9696: name 'args' is not defined +2025-03-10 15:30:19,178 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,179 - ERROR - Error in episode 9697: name 'args' is not defined +2025-03-10 15:30:19,183 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,183 - ERROR - Error in episode 9698: name 'args' is not defined +2025-03-10 15:30:19,186 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,187 - ERROR - Error in episode 9699: name 'args' is not defined +2025-03-10 15:30:19,190 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,190 - ERROR - Error in episode 9700: name 'args' is not defined +2025-03-10 15:30:19,194 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,195 - ERROR - Error in episode 9701: name 'args' is not defined +2025-03-10 15:30:19,197 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,198 - ERROR - Error in episode 9702: name 'args' is not defined +2025-03-10 15:30:19,201 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,202 - ERROR - Error in episode 9703: name 'args' is not defined +2025-03-10 15:30:19,205 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,205 - ERROR - Error in episode 9704: name 'args' is not defined +2025-03-10 15:30:19,208 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,209 - ERROR - Error in episode 9705: name 'args' is not defined +2025-03-10 15:30:19,213 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,213 - ERROR - Error in episode 9706: name 'args' is not defined +2025-03-10 15:30:19,218 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,218 - ERROR - Error in episode 9707: name 'args' is not defined +2025-03-10 15:30:19,222 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,222 - ERROR - Error in episode 9708: name 'args' is not defined +2025-03-10 15:30:19,225 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,225 - ERROR - Error in episode 9709: name 'args' is not defined +2025-03-10 15:30:19,229 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,229 - ERROR - Error in episode 9710: name 'args' is not defined +2025-03-10 15:30:19,232 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,232 - ERROR - Error in episode 9711: name 'args' is not defined +2025-03-10 15:30:19,235 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,236 - ERROR - Error in episode 9712: name 'args' is not defined +2025-03-10 15:30:19,239 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,239 - ERROR - Error in episode 9713: name 'args' is not defined +2025-03-10 15:30:19,243 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,243 - ERROR - Error in episode 9714: name 'args' is not defined +2025-03-10 15:30:19,246 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,247 - ERROR - Error in episode 9715: name 'args' is not defined +2025-03-10 15:30:19,250 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,251 - ERROR - Error in episode 9716: name 'args' is not defined +2025-03-10 15:30:19,254 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,254 - ERROR - Error in episode 9717: name 'args' is not defined +2025-03-10 15:30:19,257 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,257 - ERROR - Error in episode 9718: name 'args' is not defined +2025-03-10 15:30:19,261 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,261 - ERROR - Error in episode 9719: name 'args' is not defined +2025-03-10 15:30:19,265 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,266 - ERROR - Error in episode 9720: name 'args' is not defined +2025-03-10 15:30:19,270 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,270 - ERROR - Error in episode 9721: name 'args' is not defined +2025-03-10 15:30:19,275 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,275 - ERROR - Error in episode 9722: name 'args' is not defined +2025-03-10 15:30:19,278 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,279 - ERROR - Error in episode 9723: name 'args' is not defined +2025-03-10 15:30:19,282 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,282 - ERROR - Error in episode 9724: name 'args' is not defined +2025-03-10 15:30:19,286 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,286 - ERROR - Error in episode 9725: name 'args' is not defined +2025-03-10 15:30:19,291 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,291 - ERROR - Error in episode 9726: name 'args' is not defined +2025-03-10 15:30:19,295 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,295 - ERROR - Error in episode 9727: name 'args' is not defined +2025-03-10 15:30:19,298 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,299 - ERROR - Error in episode 9728: name 'args' is not defined +2025-03-10 15:30:19,301 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,301 - ERROR - Error in episode 9729: name 'args' is not defined +2025-03-10 15:30:19,305 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,306 - ERROR - Error in episode 9730: name 'args' is not defined +2025-03-10 15:30:19,309 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,309 - ERROR - Error in episode 9731: name 'args' is not defined +2025-03-10 15:30:19,312 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,313 - ERROR - Error in episode 9732: name 'args' is not defined +2025-03-10 15:30:19,315 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,317 - ERROR - Error in episode 9733: name 'args' is not defined +2025-03-10 15:30:19,319 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,320 - ERROR - Error in episode 9734: name 'args' is not defined +2025-03-10 15:30:19,323 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,323 - ERROR - Error in episode 9735: name 'args' is not defined +2025-03-10 15:30:19,326 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,327 - ERROR - Error in episode 9736: name 'args' is not defined +2025-03-10 15:30:19,330 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,330 - ERROR - Error in episode 9737: name 'args' is not defined +2025-03-10 15:30:19,334 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,334 - ERROR - Error in episode 9738: name 'args' is not defined +2025-03-10 15:30:19,337 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,337 - ERROR - Error in episode 9739: name 'args' is not defined +2025-03-10 15:30:19,340 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,341 - ERROR - Error in episode 9740: name 'args' is not defined +2025-03-10 15:30:19,345 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,345 - ERROR - Error in episode 9741: name 'args' is not defined +2025-03-10 15:30:19,348 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,349 - ERROR - Error in episode 9742: name 'args' is not defined +2025-03-10 15:30:19,353 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,353 - ERROR - Error in episode 9743: name 'args' is not defined +2025-03-10 15:30:19,357 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,357 - ERROR - Error in episode 9744: name 'args' is not defined +2025-03-10 15:30:19,360 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,360 - ERROR - Error in episode 9745: name 'args' is not defined +2025-03-10 15:30:19,363 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,364 - ERROR - Error in episode 9746: name 'args' is not defined +2025-03-10 15:30:19,367 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,367 - ERROR - Error in episode 9747: name 'args' is not defined +2025-03-10 15:30:19,370 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,370 - ERROR - Error in episode 9748: name 'args' is not defined +2025-03-10 15:30:19,374 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,374 - ERROR - Error in episode 9749: name 'args' is not defined +2025-03-10 15:30:19,377 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,377 - ERROR - Error in episode 9750: name 'args' is not defined +2025-03-10 15:30:19,381 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,381 - ERROR - Error in episode 9751: name 'args' is not defined +2025-03-10 15:30:19,385 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,386 - ERROR - Error in episode 9752: name 'args' is not defined +2025-03-10 15:30:19,390 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,390 - ERROR - Error in episode 9753: name 'args' is not defined +2025-03-10 15:30:19,393 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,394 - ERROR - Error in episode 9754: name 'args' is not defined +2025-03-10 15:30:19,397 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,398 - ERROR - Error in episode 9755: name 'args' is not defined +2025-03-10 15:30:19,401 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,401 - ERROR - Error in episode 9756: name 'args' is not defined +2025-03-10 15:30:19,404 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,404 - ERROR - Error in episode 9757: name 'args' is not defined +2025-03-10 15:30:19,407 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,408 - ERROR - Error in episode 9758: name 'args' is not defined +2025-03-10 15:30:19,411 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,411 - ERROR - Error in episode 9759: name 'args' is not defined +2025-03-10 15:30:19,415 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,415 - ERROR - Error in episode 9760: name 'args' is not defined +2025-03-10 15:30:19,418 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,419 - ERROR - Error in episode 9761: name 'args' is not defined +2025-03-10 15:30:19,422 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,423 - ERROR - Error in episode 9762: name 'args' is not defined +2025-03-10 15:30:19,426 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,426 - ERROR - Error in episode 9763: name 'args' is not defined +2025-03-10 15:30:19,430 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,430 - ERROR - Error in episode 9764: name 'args' is not defined +2025-03-10 15:30:19,434 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,434 - ERROR - Error in episode 9765: name 'args' is not defined +2025-03-10 15:30:19,437 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,438 - ERROR - Error in episode 9766: name 'args' is not defined +2025-03-10 15:30:19,441 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,441 - ERROR - Error in episode 9767: name 'args' is not defined +2025-03-10 15:30:19,445 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,445 - ERROR - Error in episode 9768: name 'args' is not defined +2025-03-10 15:30:19,449 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,449 - ERROR - Error in episode 9769: name 'args' is not defined +2025-03-10 15:30:19,452 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,453 - ERROR - Error in episode 9770: name 'args' is not defined +2025-03-10 15:30:19,456 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,456 - ERROR - Error in episode 9771: name 'args' is not defined +2025-03-10 15:30:19,459 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,459 - ERROR - Error in episode 9772: name 'args' is not defined +2025-03-10 15:30:19,463 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,463 - ERROR - Error in episode 9773: name 'args' is not defined +2025-03-10 15:30:19,466 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,467 - ERROR - Error in episode 9774: name 'args' is not defined +2025-03-10 15:30:19,470 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,471 - ERROR - Error in episode 9775: name 'args' is not defined +2025-03-10 15:30:19,473 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,474 - ERROR - Error in episode 9776: name 'args' is not defined +2025-03-10 15:30:19,478 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,478 - ERROR - Error in episode 9777: name 'args' is not defined +2025-03-10 15:30:19,482 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,482 - ERROR - Error in episode 9778: name 'args' is not defined +2025-03-10 15:30:19,486 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,486 - ERROR - Error in episode 9779: name 'args' is not defined +2025-03-10 15:30:19,490 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,490 - ERROR - Error in episode 9780: name 'args' is not defined +2025-03-10 15:30:19,493 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,494 - ERROR - Error in episode 9781: name 'args' is not defined +2025-03-10 15:30:19,496 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,497 - ERROR - Error in episode 9782: name 'args' is not defined +2025-03-10 15:30:19,499 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,499 - ERROR - Error in episode 9783: name 'args' is not defined +2025-03-10 15:30:19,503 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,504 - ERROR - Error in episode 9784: name 'args' is not defined +2025-03-10 15:30:19,506 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,507 - ERROR - Error in episode 9785: name 'args' is not defined +2025-03-10 15:30:19,510 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,510 - ERROR - Error in episode 9786: name 'args' is not defined +2025-03-10 15:30:19,513 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,513 - ERROR - Error in episode 9787: name 'args' is not defined +2025-03-10 15:30:19,516 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,516 - ERROR - Error in episode 9788: name 'args' is not defined +2025-03-10 15:30:19,519 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,519 - ERROR - Error in episode 9789: name 'args' is not defined +2025-03-10 15:30:19,522 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,523 - ERROR - Error in episode 9790: name 'args' is not defined +2025-03-10 15:30:19,525 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,526 - ERROR - Error in episode 9791: name 'args' is not defined +2025-03-10 15:30:19,528 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,528 - ERROR - Error in episode 9792: name 'args' is not defined +2025-03-10 15:30:19,532 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,532 - ERROR - Error in episode 9793: name 'args' is not defined +2025-03-10 15:30:19,535 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,535 - ERROR - Error in episode 9794: name 'args' is not defined +2025-03-10 15:30:19,538 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,538 - ERROR - Error in episode 9795: name 'args' is not defined +2025-03-10 15:30:19,541 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,541 - ERROR - Error in episode 9796: name 'args' is not defined +2025-03-10 15:30:19,543 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,544 - ERROR - Error in episode 9797: name 'args' is not defined +2025-03-10 15:30:19,547 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,547 - ERROR - Error in episode 9798: name 'args' is not defined +2025-03-10 15:30:19,549 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,550 - ERROR - Error in episode 9799: name 'args' is not defined +2025-03-10 15:30:19,553 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,553 - ERROR - Error in episode 9800: name 'args' is not defined +2025-03-10 15:30:19,557 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,557 - ERROR - Error in episode 9801: name 'args' is not defined +2025-03-10 15:30:19,559 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,559 - ERROR - Error in episode 9802: name 'args' is not defined +2025-03-10 15:30:19,563 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,563 - ERROR - Error in episode 9803: name 'args' is not defined +2025-03-10 15:30:19,567 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,567 - ERROR - Error in episode 9804: name 'args' is not defined +2025-03-10 15:30:19,570 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,570 - ERROR - Error in episode 9805: name 'args' is not defined +2025-03-10 15:30:19,573 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,573 - ERROR - Error in episode 9806: name 'args' is not defined +2025-03-10 15:30:19,575 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,576 - ERROR - Error in episode 9807: name 'args' is not defined +2025-03-10 15:30:19,579 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,579 - ERROR - Error in episode 9808: name 'args' is not defined +2025-03-10 15:30:19,581 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,582 - ERROR - Error in episode 9809: name 'args' is not defined +2025-03-10 15:30:19,584 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,585 - ERROR - Error in episode 9810: name 'args' is not defined +2025-03-10 15:30:19,587 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,587 - ERROR - Error in episode 9811: name 'args' is not defined +2025-03-10 15:30:19,589 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,590 - ERROR - Error in episode 9812: name 'args' is not defined +2025-03-10 15:30:19,592 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,592 - ERROR - Error in episode 9813: name 'args' is not defined +2025-03-10 15:30:19,595 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,595 - ERROR - Error in episode 9814: name 'args' is not defined +2025-03-10 15:30:19,598 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,598 - ERROR - Error in episode 9815: name 'args' is not defined +2025-03-10 15:30:19,601 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,602 - ERROR - Error in episode 9816: name 'args' is not defined +2025-03-10 15:30:19,604 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,604 - ERROR - Error in episode 9817: name 'args' is not defined +2025-03-10 15:30:19,607 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,607 - ERROR - Error in episode 9818: name 'args' is not defined +2025-03-10 15:30:19,610 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,610 - ERROR - Error in episode 9819: name 'args' is not defined +2025-03-10 15:30:19,612 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,612 - ERROR - Error in episode 9820: name 'args' is not defined +2025-03-10 15:30:19,616 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,616 - ERROR - Error in episode 9821: name 'args' is not defined +2025-03-10 15:30:19,619 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,620 - ERROR - Error in episode 9822: name 'args' is not defined +2025-03-10 15:30:19,623 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,623 - ERROR - Error in episode 9823: name 'args' is not defined +2025-03-10 15:30:19,626 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,627 - ERROR - Error in episode 9824: name 'args' is not defined +2025-03-10 15:30:19,630 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,630 - ERROR - Error in episode 9825: name 'args' is not defined +2025-03-10 15:30:19,633 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,634 - ERROR - Error in episode 9826: name 'args' is not defined +2025-03-10 15:30:19,636 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,636 - ERROR - Error in episode 9827: name 'args' is not defined +2025-03-10 15:30:19,639 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,640 - ERROR - Error in episode 9828: name 'args' is not defined +2025-03-10 15:30:19,644 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,644 - ERROR - Error in episode 9829: name 'args' is not defined +2025-03-10 15:30:19,647 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,648 - ERROR - Error in episode 9830: name 'args' is not defined +2025-03-10 15:30:19,650 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,651 - ERROR - Error in episode 9831: name 'args' is not defined +2025-03-10 15:30:19,653 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,654 - ERROR - Error in episode 9832: name 'args' is not defined +2025-03-10 15:30:19,657 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,657 - ERROR - Error in episode 9833: name 'args' is not defined +2025-03-10 15:30:19,661 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,661 - ERROR - Error in episode 9834: name 'args' is not defined +2025-03-10 15:30:19,664 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,665 - ERROR - Error in episode 9835: name 'args' is not defined +2025-03-10 15:30:19,668 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,668 - ERROR - Error in episode 9836: name 'args' is not defined +2025-03-10 15:30:19,671 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,672 - ERROR - Error in episode 9837: name 'args' is not defined +2025-03-10 15:30:19,675 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,675 - ERROR - Error in episode 9838: name 'args' is not defined +2025-03-10 15:30:19,678 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,679 - ERROR - Error in episode 9839: name 'args' is not defined +2025-03-10 15:30:19,682 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,683 - ERROR - Error in episode 9840: name 'args' is not defined +2025-03-10 15:30:19,686 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,686 - ERROR - Error in episode 9841: name 'args' is not defined +2025-03-10 15:30:19,688 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,689 - ERROR - Error in episode 9842: name 'args' is not defined +2025-03-10 15:30:19,692 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,692 - ERROR - Error in episode 9843: name 'args' is not defined +2025-03-10 15:30:19,694 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,695 - ERROR - Error in episode 9844: name 'args' is not defined +2025-03-10 15:30:19,698 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,699 - ERROR - Error in episode 9845: name 'args' is not defined +2025-03-10 15:30:19,702 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,703 - ERROR - Error in episode 9846: name 'args' is not defined +2025-03-10 15:30:19,706 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,706 - ERROR - Error in episode 9847: name 'args' is not defined +2025-03-10 15:30:19,709 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,709 - ERROR - Error in episode 9848: name 'args' is not defined +2025-03-10 15:30:19,712 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,712 - ERROR - Error in episode 9849: name 'args' is not defined +2025-03-10 15:30:19,716 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,717 - ERROR - Error in episode 9850: name 'args' is not defined +2025-03-10 15:30:19,720 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,720 - ERROR - Error in episode 9851: name 'args' is not defined +2025-03-10 15:30:19,723 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,724 - ERROR - Error in episode 9852: name 'args' is not defined +2025-03-10 15:30:19,727 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,727 - ERROR - Error in episode 9853: name 'args' is not defined +2025-03-10 15:30:19,730 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,730 - ERROR - Error in episode 9854: name 'args' is not defined +2025-03-10 15:30:19,733 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,733 - ERROR - Error in episode 9855: name 'args' is not defined +2025-03-10 15:30:19,736 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,737 - ERROR - Error in episode 9856: name 'args' is not defined +2025-03-10 15:30:19,740 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,740 - ERROR - Error in episode 9857: name 'args' is not defined +2025-03-10 15:30:19,744 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,744 - ERROR - Error in episode 9858: name 'args' is not defined +2025-03-10 15:30:19,747 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,747 - ERROR - Error in episode 9859: name 'args' is not defined +2025-03-10 15:30:19,751 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,751 - ERROR - Error in episode 9860: name 'args' is not defined +2025-03-10 15:30:19,753 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,754 - ERROR - Error in episode 9861: name 'args' is not defined +2025-03-10 15:30:19,756 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,756 - ERROR - Error in episode 9862: name 'args' is not defined +2025-03-10 15:30:19,759 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,759 - ERROR - Error in episode 9863: name 'args' is not defined +2025-03-10 15:30:19,762 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,762 - ERROR - Error in episode 9864: name 'args' is not defined +2025-03-10 15:30:19,766 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,766 - ERROR - Error in episode 9865: name 'args' is not defined +2025-03-10 15:30:19,769 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,769 - ERROR - Error in episode 9866: name 'args' is not defined +2025-03-10 15:30:19,772 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,773 - ERROR - Error in episode 9867: name 'args' is not defined +2025-03-10 15:30:19,777 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,777 - ERROR - Error in episode 9868: name 'args' is not defined +2025-03-10 15:30:19,779 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,779 - ERROR - Error in episode 9869: name 'args' is not defined +2025-03-10 15:30:19,782 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,782 - ERROR - Error in episode 9870: name 'args' is not defined +2025-03-10 15:30:19,785 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,786 - ERROR - Error in episode 9871: name 'args' is not defined +2025-03-10 15:30:19,789 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,789 - ERROR - Error in episode 9872: name 'args' is not defined +2025-03-10 15:30:19,792 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,792 - ERROR - Error in episode 9873: name 'args' is not defined +2025-03-10 15:30:19,795 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,795 - ERROR - Error in episode 9874: name 'args' is not defined +2025-03-10 15:30:19,798 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,798 - ERROR - Error in episode 9875: name 'args' is not defined +2025-03-10 15:30:19,800 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,800 - ERROR - Error in episode 9876: name 'args' is not defined +2025-03-10 15:30:19,803 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,803 - ERROR - Error in episode 9877: name 'args' is not defined +2025-03-10 15:30:19,806 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,807 - ERROR - Error in episode 9878: name 'args' is not defined +2025-03-10 15:30:19,810 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,811 - ERROR - Error in episode 9879: name 'args' is not defined +2025-03-10 15:30:19,813 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,814 - ERROR - Error in episode 9880: name 'args' is not defined +2025-03-10 15:30:19,816 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,816 - ERROR - Error in episode 9881: name 'args' is not defined +2025-03-10 15:30:19,819 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,819 - ERROR - Error in episode 9882: name 'args' is not defined +2025-03-10 15:30:19,822 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,822 - ERROR - Error in episode 9883: name 'args' is not defined +2025-03-10 15:30:19,825 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,825 - ERROR - Error in episode 9884: name 'args' is not defined +2025-03-10 15:30:19,827 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,828 - ERROR - Error in episode 9885: name 'args' is not defined +2025-03-10 15:30:19,831 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,831 - ERROR - Error in episode 9886: name 'args' is not defined +2025-03-10 15:30:19,835 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,835 - ERROR - Error in episode 9887: name 'args' is not defined +2025-03-10 15:30:19,838 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,838 - ERROR - Error in episode 9888: name 'args' is not defined +2025-03-10 15:30:19,841 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,841 - ERROR - Error in episode 9889: name 'args' is not defined +2025-03-10 15:30:19,844 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,844 - ERROR - Error in episode 9890: name 'args' is not defined +2025-03-10 15:30:19,846 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,847 - ERROR - Error in episode 9891: name 'args' is not defined +2025-03-10 15:30:19,850 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,851 - ERROR - Error in episode 9892: name 'args' is not defined +2025-03-10 15:30:19,853 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,853 - ERROR - Error in episode 9893: name 'args' is not defined +2025-03-10 15:30:19,856 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,857 - ERROR - Error in episode 9894: name 'args' is not defined +2025-03-10 15:30:19,859 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,859 - ERROR - Error in episode 9895: name 'args' is not defined +2025-03-10 15:30:19,862 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,862 - ERROR - Error in episode 9896: name 'args' is not defined +2025-03-10 15:30:19,865 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,865 - ERROR - Error in episode 9897: name 'args' is not defined +2025-03-10 15:30:19,868 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,868 - ERROR - Error in episode 9898: name 'args' is not defined +2025-03-10 15:30:19,870 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,871 - ERROR - Error in episode 9899: name 'args' is not defined +2025-03-10 15:30:19,873 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,873 - ERROR - Error in episode 9900: name 'args' is not defined +2025-03-10 15:30:19,876 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,876 - ERROR - Error in episode 9901: name 'args' is not defined +2025-03-10 15:30:19,879 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,880 - ERROR - Error in episode 9902: name 'args' is not defined +2025-03-10 15:30:19,882 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,882 - ERROR - Error in episode 9903: name 'args' is not defined +2025-03-10 15:30:19,885 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,885 - ERROR - Error in episode 9904: name 'args' is not defined +2025-03-10 15:30:19,888 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,889 - ERROR - Error in episode 9905: name 'args' is not defined +2025-03-10 15:30:19,891 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,891 - ERROR - Error in episode 9906: name 'args' is not defined +2025-03-10 15:30:19,894 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,895 - ERROR - Error in episode 9907: name 'args' is not defined +2025-03-10 15:30:19,897 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,897 - ERROR - Error in episode 9908: name 'args' is not defined +2025-03-10 15:30:19,900 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,901 - ERROR - Error in episode 9909: name 'args' is not defined +2025-03-10 15:30:19,903 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,903 - ERROR - Error in episode 9910: name 'args' is not defined +2025-03-10 15:30:19,906 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,906 - ERROR - Error in episode 9911: name 'args' is not defined +2025-03-10 15:30:19,908 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,910 - ERROR - Error in episode 9912: name 'args' is not defined +2025-03-10 15:30:19,912 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,913 - ERROR - Error in episode 9913: name 'args' is not defined +2025-03-10 15:30:19,915 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,916 - ERROR - Error in episode 9914: name 'args' is not defined +2025-03-10 15:30:19,919 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,919 - ERROR - Error in episode 9915: name 'args' is not defined +2025-03-10 15:30:19,922 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,922 - ERROR - Error in episode 9916: name 'args' is not defined +2025-03-10 15:30:19,925 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,925 - ERROR - Error in episode 9917: name 'args' is not defined +2025-03-10 15:30:19,929 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,929 - ERROR - Error in episode 9918: name 'args' is not defined +2025-03-10 15:30:19,932 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,932 - ERROR - Error in episode 9919: name 'args' is not defined +2025-03-10 15:30:19,935 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,935 - ERROR - Error in episode 9920: name 'args' is not defined +2025-03-10 15:30:19,939 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,939 - ERROR - Error in episode 9921: name 'args' is not defined +2025-03-10 15:30:19,942 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,942 - ERROR - Error in episode 9922: name 'args' is not defined +2025-03-10 15:30:19,945 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,945 - ERROR - Error in episode 9923: name 'args' is not defined +2025-03-10 15:30:19,948 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,948 - ERROR - Error in episode 9924: name 'args' is not defined +2025-03-10 15:30:19,950 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,951 - ERROR - Error in episode 9925: name 'args' is not defined +2025-03-10 15:30:19,954 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,955 - ERROR - Error in episode 9926: name 'args' is not defined +2025-03-10 15:30:19,957 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,957 - ERROR - Error in episode 9927: name 'args' is not defined +2025-03-10 15:30:19,960 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,961 - ERROR - Error in episode 9928: name 'args' is not defined +2025-03-10 15:30:19,963 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,964 - ERROR - Error in episode 9929: name 'args' is not defined +2025-03-10 15:30:19,966 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,967 - ERROR - Error in episode 9930: name 'args' is not defined +2025-03-10 15:30:19,970 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,970 - ERROR - Error in episode 9931: name 'args' is not defined +2025-03-10 15:30:19,973 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,973 - ERROR - Error in episode 9932: name 'args' is not defined +2025-03-10 15:30:19,976 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,976 - ERROR - Error in episode 9933: name 'args' is not defined +2025-03-10 15:30:19,979 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,979 - ERROR - Error in episode 9934: name 'args' is not defined +2025-03-10 15:30:19,982 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,982 - ERROR - Error in episode 9935: name 'args' is not defined +2025-03-10 15:30:19,985 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,985 - ERROR - Error in episode 9936: name 'args' is not defined +2025-03-10 15:30:19,987 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,988 - ERROR - Error in episode 9937: name 'args' is not defined +2025-03-10 15:30:19,991 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,991 - ERROR - Error in episode 9938: name 'args' is not defined +2025-03-10 15:30:19,995 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:19,995 - ERROR - Error in episode 9939: name 'args' is not defined +2025-03-10 15:30:19,999 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,000 - ERROR - Error in episode 9940: name 'args' is not defined +2025-03-10 15:30:20,003 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,004 - ERROR - Error in episode 9941: name 'args' is not defined +2025-03-10 15:30:20,007 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,007 - ERROR - Error in episode 9942: name 'args' is not defined +2025-03-10 15:30:20,010 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,011 - ERROR - Error in episode 9943: name 'args' is not defined +2025-03-10 15:30:20,013 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,014 - ERROR - Error in episode 9944: name 'args' is not defined +2025-03-10 15:30:20,016 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,016 - ERROR - Error in episode 9945: name 'args' is not defined +2025-03-10 15:30:20,020 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,020 - ERROR - Error in episode 9946: name 'args' is not defined +2025-03-10 15:30:20,023 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,023 - ERROR - Error in episode 9947: name 'args' is not defined +2025-03-10 15:30:20,025 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,025 - ERROR - Error in episode 9948: name 'args' is not defined +2025-03-10 15:30:20,028 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,028 - ERROR - Error in episode 9949: name 'args' is not defined +2025-03-10 15:30:20,031 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,031 - ERROR - Error in episode 9950: name 'args' is not defined +2025-03-10 15:30:20,033 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,034 - ERROR - Error in episode 9951: name 'args' is not defined +2025-03-10 15:30:20,037 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,038 - ERROR - Error in episode 9952: name 'args' is not defined +2025-03-10 15:30:20,041 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,041 - ERROR - Error in episode 9953: name 'args' is not defined +2025-03-10 15:30:20,044 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,044 - ERROR - Error in episode 9954: name 'args' is not defined +2025-03-10 15:30:20,046 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,046 - ERROR - Error in episode 9955: name 'args' is not defined +2025-03-10 15:30:20,050 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,050 - ERROR - Error in episode 9956: name 'args' is not defined +2025-03-10 15:30:20,053 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,053 - ERROR - Error in episode 9957: name 'args' is not defined +2025-03-10 15:30:20,055 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,056 - ERROR - Error in episode 9958: name 'args' is not defined +2025-03-10 15:30:20,058 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,059 - ERROR - Error in episode 9959: name 'args' is not defined +2025-03-10 15:30:20,061 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,062 - ERROR - Error in episode 9960: name 'args' is not defined +2025-03-10 15:30:20,064 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,064 - ERROR - Error in episode 9961: name 'args' is not defined +2025-03-10 15:30:20,067 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,068 - ERROR - Error in episode 9962: name 'args' is not defined +2025-03-10 15:30:20,071 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,071 - ERROR - Error in episode 9963: name 'args' is not defined +2025-03-10 15:30:20,074 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,074 - ERROR - Error in episode 9964: name 'args' is not defined +2025-03-10 15:30:20,077 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,077 - ERROR - Error in episode 9965: name 'args' is not defined +2025-03-10 15:30:20,080 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,080 - ERROR - Error in episode 9966: name 'args' is not defined +2025-03-10 15:30:20,083 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,084 - ERROR - Error in episode 9967: name 'args' is not defined +2025-03-10 15:30:20,087 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,087 - ERROR - Error in episode 9968: name 'args' is not defined +2025-03-10 15:30:20,091 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,091 - ERROR - Error in episode 9969: name 'args' is not defined +2025-03-10 15:30:20,094 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,095 - ERROR - Error in episode 9970: name 'args' is not defined +2025-03-10 15:30:20,099 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,100 - ERROR - Error in episode 9971: name 'args' is not defined +2025-03-10 15:30:20,103 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,103 - ERROR - Error in episode 9972: name 'args' is not defined +2025-03-10 15:30:20,106 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,106 - ERROR - Error in episode 9973: name 'args' is not defined +2025-03-10 15:30:20,109 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,109 - ERROR - Error in episode 9974: name 'args' is not defined +2025-03-10 15:30:20,112 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,112 - ERROR - Error in episode 9975: name 'args' is not defined +2025-03-10 15:30:20,115 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,115 - ERROR - Error in episode 9976: name 'args' is not defined +2025-03-10 15:30:20,117 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,118 - ERROR - Error in episode 9977: name 'args' is not defined +2025-03-10 15:30:20,121 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,121 - ERROR - Error in episode 9978: name 'args' is not defined +2025-03-10 15:30:20,123 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,124 - ERROR - Error in episode 9979: name 'args' is not defined +2025-03-10 15:30:20,126 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,126 - ERROR - Error in episode 9980: name 'args' is not defined +2025-03-10 15:30:20,130 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,130 - ERROR - Error in episode 9981: name 'args' is not defined +2025-03-10 15:30:20,133 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,133 - ERROR - Error in episode 9982: name 'args' is not defined +2025-03-10 15:30:20,136 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,137 - ERROR - Error in episode 9983: name 'args' is not defined +2025-03-10 15:30:20,139 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,139 - ERROR - Error in episode 9984: name 'args' is not defined +2025-03-10 15:30:20,142 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,143 - ERROR - Error in episode 9985: name 'args' is not defined +2025-03-10 15:30:20,146 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,146 - ERROR - Error in episode 9986: name 'args' is not defined +2025-03-10 15:30:20,149 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,149 - ERROR - Error in episode 9987: name 'args' is not defined +2025-03-10 15:30:20,152 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,152 - ERROR - Error in episode 9988: name 'args' is not defined +2025-03-10 15:30:20,156 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,156 - ERROR - Error in episode 9989: name 'args' is not defined +2025-03-10 15:30:20,159 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,159 - ERROR - Error in episode 9990: name 'args' is not defined +2025-03-10 15:30:20,163 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,163 - ERROR - Error in episode 9991: name 'args' is not defined +2025-03-10 15:30:20,165 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,166 - ERROR - Error in episode 9992: name 'args' is not defined +2025-03-10 15:30:20,168 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,169 - ERROR - Error in episode 9993: name 'args' is not defined +2025-03-10 15:30:20,171 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,172 - ERROR - Error in episode 9994: name 'args' is not defined +2025-03-10 15:30:20,174 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,175 - ERROR - Error in episode 9995: name 'args' is not defined +2025-03-10 15:30:20,178 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,178 - ERROR - Error in episode 9996: name 'args' is not defined +2025-03-10 15:30:20,181 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,182 - ERROR - Error in episode 9997: name 'args' is not defined +2025-03-10 15:30:20,184 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,185 - ERROR - Error in episode 9998: name 'args' is not defined +2025-03-10 15:30:20,189 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,189 - ERROR - Error in episode 9999: name 'args' is not defined +2025-03-10 15:30:20,193 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1766, in train_agent + if exchange and args.refresh_data: + ^^^^ +NameError: name 'args' is not defined + +2025-03-10 15:30:20,333 - INFO - Model saved to models/trading_agent_final.pt +2025-03-10 15:30:21,274 - INFO - Training results saved to training_results.png +2025-03-10 15:30:21,274 - INFO - Exchange connection closed +2025-03-10 15:36:16,076 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 15:36:16,098 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 15:36:16,098 - INFO - Fetching initial data for ETH/USDT +2025-03-10 15:36:16,099 - INFO - Fetching initial data for ETH/USDT +2025-03-10 15:36:19,756 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 15:36:19,774 - INFO - Initialized environment with 500 candles +2025-03-10 15:36:21,928 - INFO - Starting training for 100 episodes... +2025-03-10 15:36:21,929 - INFO - Starting training on device: cuda +2025-03-10 15:36:21,929 - INFO - Loading best model from models/trading_agent_best_pnl.pt to resume training +2025-03-10 15:36:21,931 - INFO - Loading model from models/trading_agent_best_pnl.pt +2025-03-10 15:36:22,085 - INFO - Model loaded successfully with weights_only=True +2025-03-10 15:36:22,086 - INFO - Resumed with best metrics - Reward: 202.74, PnL: $4.37, Win Rate: 66.7% +2025-03-10 15:36:23,520 - INFO - OPENED LONG at 2065.69 | Stop loss: 2055.33565 | Take profit: 2096.7142000000003 +2025-03-10 15:36:24,459 - INFO - CLOSED long at 2068.19 | PnL: 0.12% | $0.04 +2025-03-10 15:36:24,638 - INFO - OPENED SHORT at 2073.99 | Stop loss: 2084.38585 | Take profit: 2042.8412999999998 +2025-03-10 15:36:24,739 - INFO - CLOSED short at 2074.0 | PnL: -0.00% | $-0.20 +2025-03-10 15:36:24,760 - INFO - OPENED SHORT at 2072.09 | Stop loss: 2082.4763500000004 | Take profit: 2040.9698 +2025-03-10 15:36:24,782 - INFO - CLOSED short at 2069.97 | PnL: 0.10% | $0.00 +2025-03-10 15:36:24,805 - INFO - OPENED SHORT at 2067.7 | Stop loss: 2078.0644 | Take profit: 2036.64565 +2025-03-10 15:36:24,868 - INFO - CLOSED short at 2066.4 | PnL: 0.06% | $-0.07 +2025-03-10 15:36:24,892 - INFO - OPENED SHORT at 2066.89 | Stop loss: 2077.25035 | Take profit: 2035.8478 +2025-03-10 15:36:24,912 - INFO - CLOSED short at 2067.88 | PnL: -0.05% | $-0.29 +2025-03-10 15:36:24,934 - INFO - OPENED SHORT at 2065.45 | Stop loss: 2075.8031499999997 | Take profit: 2034.4293999999998 +2025-03-10 15:36:25,045 - INFO - CLOSED short at 2067.19 | PnL: -0.08% | $-0.36 +2025-03-10 15:36:25,127 - INFO - OPENED SHORT at 2065.07 | Stop loss: 2075.42125 | Take profit: 2034.0551 +2025-03-10 15:36:25,150 - INFO - CLOSED short at 2066.09 | PnL: -0.05% | $-0.29 +2025-03-10 15:36:25,199 - INFO - OPENED SHORT at 2062.34 | Stop loss: 2072.6776000000004 | Take profit: 2031.36605 +2025-03-10 15:36:25,247 - INFO - CLOSED short at 2066.1 | PnL: -0.18% | $-0.55 +2025-03-10 15:36:25,268 - INFO - OPENED SHORT at 2065.06 | Stop loss: 2075.4112 | Take profit: 2034.0452500000001 +2025-03-10 15:36:25,294 - INFO - CLOSED short at 2064.11 | PnL: 0.05% | $-0.10 +2025-03-10 15:36:25,315 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.8484 | Take profit: 2033.49365 +2025-03-10 15:36:25,340 - INFO - CLOSED short at 2066.33 | PnL: -0.09% | $-0.37 +2025-03-10 15:36:25,385 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0294 | Take profit: 2029.75065 +2025-03-10 15:36:25,405 - INFO - CLOSED short at 2060.2 | PnL: 0.02% | $-0.15 +2025-03-10 15:36:25,446 - INFO - OPENED SHORT at 2058.09 | Stop loss: 2068.40635 | Take profit: 2027.1798000000001 +2025-03-10 15:36:25,492 - INFO - CLOSED short at 2056.77 | PnL: 0.06% | $-0.07 +2025-03-10 15:36:25,513 - INFO - OPENED SHORT at 2053.01 | Stop loss: 2063.3009500000003 | Take profit: 2022.1760000000002 +2025-03-10 15:36:25,683 - INFO - STOP LOSS hit for short at 2063.3009500000003 | PnL: -0.50% | $-1.16 +2025-03-10 15:36:25,706 - INFO - OPENED SHORT at 2065.1 | Stop loss: 2075.4514 | Take profit: 2034.08465 +2025-03-10 15:36:25,837 - INFO - CLOSED short at 2064.08 | PnL: 0.05% | $-0.10 +2025-03-10 15:36:25,860 - INFO - OPENED SHORT at 2061.21 | Stop loss: 2071.54195 | Take profit: 2030.253 +2025-03-10 15:36:26,084 - INFO - STOP LOSS hit for short at 2071.54195 | PnL: -0.50% | $-1.14 +2025-03-10 15:36:26,110 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4461499999998 | Take profit: 2042.9004000000002 +2025-03-10 15:36:26,252 - INFO - STOP LOSS hit for short at 2084.4461499999998 | PnL: -0.50% | $-1.13 +2025-03-10 15:36:26,271 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.9683499999996 | Take profit: 2059.0937999999996 +2025-03-10 15:36:26,293 - INFO - STOP LOSS hit for short at 2100.9683499999996 | PnL: -0.50% | $-1.12 +2025-03-10 15:36:26,319 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3794 | Take profit: 2098.7006499999998 +2025-03-10 15:36:26,418 - INFO - STOP LOSS hit for short at 2141.3794 | PnL: -0.50% | $-1.10 +2025-03-10 15:36:26,442 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.0324 | Take profit: 2109.14165 +2025-03-10 15:36:26,741 - INFO - TAKE PROFIT hit for short at 2109.14165 | PnL: 1.50% | $2.54 +2025-03-10 15:36:26,767 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1789 | Take profit: 2078.90215 +2025-03-10 15:36:26,865 - INFO - CLOSED short at 2113.24 | PnL: -0.13% | $-0.42 +2025-03-10 15:36:26,890 - INFO - OPENED SHORT at 2112.99 | Stop loss: 2123.58085 | Take profit: 2081.2562999999996 +2025-03-10 15:36:27,666 - INFO - TAKE PROFIT hit for short at 2081.2562999999996 | PnL: 1.50% | $2.60 +2025-03-10 15:36:27,691 - INFO - OPENED SHORT at 2081.25 | Stop loss: 2091.6821499999996 | Take profit: 2049.9924 +2025-03-10 15:36:28,119 - INFO - STOP LOSS hit for short at 2091.6821499999996 | PnL: -0.50% | $-1.15 +2025-03-10 15:36:28,141 - INFO - OPENED SHORT at 2094.7 | Stop loss: 2105.1993999999995 | Take profit: 2063.2406499999997 +2025-03-10 15:36:28,317 - INFO - STOP LOSS hit for short at 2105.1993999999995 | PnL: -0.50% | $-1.13 +2025-03-10 15:36:28,342 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.0233 | Take profit: 2071.88895 +2025-03-10 15:36:28,816 - INFO - STOP LOSS hit for short at 2114.0233 | PnL: -0.50% | $-1.12 +2025-03-10 15:36:28,841 - INFO - OPENED SHORT at 2113.61 | Stop loss: 2124.20395 | Take profit: 2081.867 +2025-03-10 15:36:29,306 - INFO - STOP LOSS hit for short at 2124.20395 | PnL: -0.50% | $-1.11 +2025-03-10 15:36:29,325 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4548499999996 | Take profit: 2095.8343 +2025-03-10 15:36:31,254 - INFO - CLOSED short at 2115.21 | PnL: 0.59% | $0.89 +2025-03-10 15:36:31,254 - INFO - OPENED LONG at 2115.21 | Stop loss: 2104.60805 | Take profit: 2146.977 +2025-03-10 15:36:31,278 - INFO - CLOSED long at 2114.1 | PnL: -0.05% | $-0.28 +2025-03-10 15:36:31,279 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.6964000000003 | Take profit: 2082.34965 +2025-03-10 15:36:31,323 - INFO - CLOSED short at 2114.32 | PnL: -0.01% | $-0.20 +2025-03-10 15:36:31,346 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.16875 | Take profit: 2082.8126 +2025-03-10 15:36:31,531 - INFO - CLOSED short at 2100.05 | PnL: 0.69% | $1.07 +2025-03-10 15:36:31,551 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 25.0% in downtrends | Avg Win=$1.19, Avg Loss=$-0.59 +2025-03-10 15:36:31,552 - INFO - Episode 0: Reward=-55.99, Balance=$93.54, Win Rate=20.7%, Trades=29, Episode PnL=$-6.18, Total PnL=$-6.46, Max Drawdown=8.2%, Pred Accuracy=97.8% +2025-03-10 15:36:31,701 - INFO - Model saved to checkpoints/trading_agent_episode_0.pt +2025-03-10 15:36:31,703 - INFO - Checkpoint saved at episode 0 +2025-03-10 15:36:32,671 - INFO - Visualization saved for episode 0 +2025-03-10 15:36:34,343 - INFO - Visualization saved for episode 0 +2025-03-10 15:36:34,581 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.23035 | Take profit: 2031.9078 +2025-03-10 15:36:34,765 - INFO - CLOSED short at 2065.54 | PnL: -0.13% | $-0.45 +2025-03-10 15:36:34,765 - INFO - OPENED LONG at 2065.54 | Stop loss: 2055.1864 | Take profit: 2096.56195 +2025-03-10 15:36:34,785 - INFO - CLOSED long at 2066.09 | PnL: 0.03% | $-0.14 +2025-03-10 15:36:34,785 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.44635 | Take profit: 2035.0598000000002 +2025-03-10 15:36:34,971 - INFO - CLOSED short at 2060.65 | PnL: 0.26% | $0.32 +2025-03-10 15:36:34,994 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.2103500000003 | Take profit: 2027.9678 +2025-03-10 15:36:35,363 - INFO - CLOSED short at 2062.6 | PnL: -0.18% | $-0.55 +2025-03-10 15:36:35,363 - INFO - OPENED LONG at 2062.6 | Stop loss: 2052.2610999999997 | Take profit: 2093.5778499999997 +2025-03-10 15:36:35,383 - INFO - CLOSED long at 2061.89 | PnL: -0.03% | $-0.26 +2025-03-10 15:36:35,383 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.2253499999997 | Take profit: 2030.9227999999998 +2025-03-10 15:36:36,102 - INFO - STOP LOSS hit for short at 2072.2253499999997 | PnL: -0.50% | $-1.17 +2025-03-10 15:36:36,125 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.4259500000003 | Take profit: 2046.8010000000002 +2025-03-10 15:36:36,204 - INFO - CLOSED short at 2070.01 | PnL: 0.38% | $0.55 +2025-03-10 15:36:36,243 - INFO - OPENED SHORT at 2073.23 | Stop loss: 2083.62205 | Take profit: 2042.0927 +2025-03-10 15:36:38,224 - INFO - CLOSED short at 2057.89 | PnL: 0.74% | $1.24 +2025-03-10 15:36:38,226 - INFO - OPENED LONG at 2057.89 | Stop loss: 2047.5746499999998 | Take profit: 2088.7971999999995 +2025-03-10 15:36:38,251 - INFO - CLOSED long at 2062.83 | PnL: 0.24% | $0.28 +2025-03-10 15:36:38,251 - INFO - OPENED SHORT at 2062.83 | Stop loss: 2073.17005 | Take profit: 2031.8487 +2025-03-10 15:36:38,664 - INFO - STOP LOSS hit for short at 2073.17005 | PnL: -0.50% | $-1.19 +2025-03-10 15:36:38,689 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4461499999998 | Take profit: 2042.9004000000002 +2025-03-10 15:36:38,808 - INFO - CLOSED short at 2077.61 | PnL: -0.17% | $-0.53 +2025-03-10 15:36:38,808 - INFO - OPENED LONG at 2077.61 | Stop loss: 2067.19605 | Take profit: 2108.813 +2025-03-10 15:36:38,830 - INFO - CLOSED long at 2085.56 | PnL: 0.38% | $0.55 +2025-03-10 15:36:38,830 - INFO - OPENED SHORT at 2085.56 | Stop loss: 2096.0137 | Take profit: 2054.23775 +2025-03-10 15:36:38,872 - INFO - STOP LOSS hit for short at 2096.0137 | PnL: -0.50% | $-1.17 +2025-03-10 15:36:38,893 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3794 | Take profit: 2098.7006499999998 +2025-03-10 15:36:38,996 - INFO - STOP LOSS hit for short at 2141.3794 | PnL: -0.50% | $-1.16 +2025-03-10 15:36:39,020 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.0324 | Take profit: 2109.14165 +2025-03-10 15:36:39,340 - INFO - TAKE PROFIT hit for short at 2109.14165 | PnL: 1.50% | $2.67 +2025-03-10 15:36:39,361 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1789 | Take profit: 2078.90215 +2025-03-10 15:36:40,487 - INFO - CLOSED short at 2085.83 | PnL: 1.17% | $2.10 +2025-03-10 15:36:40,506 - INFO - OPENED SHORT at 2085.85 | Stop loss: 2096.3051499999997 | Take profit: 2054.5234 +2025-03-10 15:36:40,831 - INFO - CLOSED short at 2094.7 | PnL: -0.42% | $-1.05 +2025-03-10 15:36:40,831 - INFO - OPENED LONG at 2094.7 | Stop loss: 2084.2005999999997 | Take profit: 2126.1593499999994 +2025-03-10 15:36:40,855 - INFO - CLOSED long at 2097.8 | PnL: 0.15% | $0.09 +2025-03-10 15:36:40,855 - INFO - OPENED SHORT at 2097.8 | Stop loss: 2108.3149000000003 | Take profit: 2066.29415 +2025-03-10 15:36:41,491 - INFO - STOP LOSS hit for short at 2108.3149000000003 | PnL: -0.50% | $-1.19 +2025-03-10 15:36:41,513 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.45025 | Take profit: 2079.1681 +2025-03-10 15:36:42,103 - INFO - CLOSED short at 2121.77 | PnL: -0.52% | $-1.20 +2025-03-10 15:36:42,127 - INFO - OPENED SHORT at 2121.2 | Stop loss: 2131.8318999999997 | Take profit: 2089.3431499999997 +2025-03-10 15:36:42,211 - INFO - STOP LOSS hit for short at 2131.8318999999997 | PnL: -0.50% | $-1.16 +2025-03-10 15:36:42,236 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.9672 | Take profit: 2104.17725 +2025-03-10 15:36:42,400 - INFO - CLOSED short at 2129.51 | PnL: 0.32% | $0.41 +2025-03-10 15:36:42,427 - INFO - OPENED SHORT at 2135.55 | Stop loss: 2146.25365 | Take profit: 2103.4779000000003 +2025-03-10 15:36:42,711 - INFO - CLOSED short at 2121.19 | PnL: 0.67% | $1.10 +2025-03-10 15:36:42,735 - INFO - OPENED SHORT at 2124.14 | Stop loss: 2134.7865999999995 | Take profit: 2092.2390499999997 +2025-03-10 15:36:44,390 - INFO - TAKE PROFIT hit for short at 2092.2390499999997 | PnL: 1.50% | $2.72 +2025-03-10 15:36:44,415 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5761500000003 | Take profit: 2068.5104 +2025-03-10 15:36:44,436 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 23.1% in downtrends | Avg Win=$1.09, Avg Loss=$-0.86 +2025-03-10 15:36:44,438 - INFO - Episode 1: Reward=-0.87, Balance=$100.79, Win Rate=45.8%, Trades=24, Episode PnL=$0.28, Total PnL=$-5.66, Max Drawdown=4.5%, Pred Accuracy=97.9% +2025-03-10 15:36:44,530 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.23035 | Take profit: 2031.9078 +2025-03-10 15:36:45,611 - INFO - CLOSED short at 2054.89 | PnL: 0.39% | $0.57 +2025-03-10 15:36:45,612 - INFO - OPENED LONG at 2054.89 | Stop loss: 2044.58965 | Take profit: 2085.7522 +2025-03-10 15:36:45,637 - INFO - CLOSED long at 2054.83 | PnL: -0.00% | $-0.20 +2025-03-10 15:36:45,637 - INFO - OPENED SHORT at 2054.83 | Stop loss: 2065.13005 | Take profit: 2023.9687 +2025-03-10 15:36:45,849 - INFO - STOP LOSS hit for short at 2065.13005 | PnL: -0.50% | $-1.19 +2025-03-10 15:36:45,872 - INFO - OPENED SHORT at 2066.01 | Stop loss: 2076.36595 | Take profit: 2034.9810000000002 +2025-03-10 15:36:46,140 - INFO - STOP LOSS hit for short at 2076.36595 | PnL: -0.50% | $-1.18 +2025-03-10 15:36:46,165 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.41095 | Take profit: 2043.8460000000002 +2025-03-10 15:36:47,812 - INFO - CLOSED short at 2065.07 | PnL: 0.48% | $0.73 +2025-03-10 15:36:47,813 - INFO - OPENED LONG at 2065.07 | Stop loss: 2054.71875 | Take profit: 2096.0849 +2025-03-10 15:36:47,834 - INFO - CLOSED long at 2066.09 | PnL: 0.05% | $-0.10 +2025-03-10 15:36:47,834 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.44635 | Take profit: 2035.0598000000002 +2025-03-10 15:36:48,835 - INFO - CLOSED short at 2076.08 | PnL: -0.48% | $-1.14 +2025-03-10 15:36:48,861 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2088.0239500000002 | Take profit: 2046.4070000000002 +2025-03-10 15:36:48,913 - INFO - STOP LOSS hit for short at 2088.0239500000002 | PnL: -0.50% | $-1.16 +2025-03-10 15:36:48,936 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.561 | Take profit: 2071.43585 +2025-03-10 15:36:48,959 - INFO - STOP LOSS hit for short at 2113.561 | PnL: -0.50% | $-1.14 +2025-03-10 15:36:48,983 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2636 | Take profit: 2107.40805 +2025-03-10 15:36:49,690 - INFO - CLOSED short at 2113.24 | PnL: 1.23% | $2.12 +2025-03-10 15:36:49,690 - INFO - OPENED LONG at 2113.24 | Stop loss: 2102.6479 | Take profit: 2144.9774499999994 +2025-03-10 15:36:49,720 - INFO - CLOSED long at 2112.99 | PnL: -0.01% | $-0.22 +2025-03-10 15:36:49,721 - INFO - OPENED SHORT at 2112.99 | Stop loss: 2123.58085 | Take profit: 2081.2562999999996 +2025-03-10 15:36:50,469 - INFO - CLOSED short at 2094.72 | PnL: 0.86% | $1.47 +2025-03-10 15:36:50,493 - INFO - OPENED SHORT at 2094.08 | Stop loss: 2104.5762999999997 | Take profit: 2062.62995 +2025-03-10 15:36:51,376 - INFO - CLOSED short at 2100.89 | PnL: -0.33% | $-0.83 +2025-03-10 15:36:51,402 - INFO - OPENED SHORT at 2099.73 | Stop loss: 2110.25455 | Take profit: 2068.1952 +2025-03-10 15:36:51,870 - INFO - STOP LOSS hit for short at 2110.25455 | PnL: -0.50% | $-1.16 +2025-03-10 15:36:51,891 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.45025 | Take profit: 2079.1681 +2025-03-10 15:36:52,438 - INFO - STOP LOSS hit for short at 2121.45025 | PnL: -0.50% | $-1.15 +2025-03-10 15:36:52,460 - INFO - OPENED SHORT at 2121.2 | Stop loss: 2131.8318999999997 | Take profit: 2089.3431499999997 +2025-03-10 15:36:52,538 - INFO - STOP LOSS hit for short at 2131.8318999999997 | PnL: -0.50% | $-1.13 +2025-03-10 15:36:52,564 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.9672 | Take profit: 2104.17725 +2025-03-10 15:36:52,687 - INFO - CLOSED short at 2124.38 | PnL: 0.56% | $0.85 +2025-03-10 15:36:52,687 - INFO - OPENED LONG at 2124.38 | Stop loss: 2113.7322 | Take profit: 2156.2845500000003 +2025-03-10 15:36:52,713 - INFO - CLOSED long at 2123.23 | PnL: -0.05% | $-0.29 +2025-03-10 15:36:52,713 - INFO - OPENED SHORT at 2123.23 | Stop loss: 2133.87205 | Take profit: 2091.3426999999997 +2025-03-10 15:36:52,791 - INFO - STOP LOSS hit for short at 2133.87205 | PnL: -0.50% | $-1.13 +2025-03-10 15:36:52,815 - INFO - OPENED SHORT at 2131.23 | Stop loss: 2141.91205 | Take profit: 2099.2227000000003 +2025-03-10 15:36:54,590 - INFO - CLOSED short at 2115.11 | PnL: 0.76% | $1.22 +2025-03-10 15:36:54,590 - INFO - OPENED LONG at 2115.11 | Stop loss: 2104.50855 | Take profit: 2146.8755 +2025-03-10 15:36:54,614 - INFO - CLOSED long at 2114.32 | PnL: -0.04% | $-0.26 +2025-03-10 15:36:54,615 - INFO - OPENED SHORT at 2114.32 | Stop loss: 2124.9175 | Take profit: 2082.56635 +2025-03-10 15:36:54,826 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 38.5% in downtrends | Avg Win=$1.16, Avg Loss=$-0.82 +2025-03-10 15:36:54,827 - INFO - Episode 2: Reward=-0.66, Balance=$94.69, Win Rate=28.6%, Trades=21, Episode PnL=$-4.25, Total PnL=$-10.98, Max Drawdown=6.3%, Pred Accuracy=97.9% +2025-03-10 15:36:54,904 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.23035 | Take profit: 2031.9078 +2025-03-10 15:36:55,385 - INFO - CLOSED short at 2060.31 | PnL: 0.13% | $0.05 +2025-03-10 15:36:55,405 - INFO - OPENED SHORT at 2061.8 | Stop loss: 2072.1349 | Take profit: 2030.8341500000001 +2025-03-10 15:36:56,438 - INFO - CLOSED short at 2066.79 | PnL: -0.24% | $-0.68 +2025-03-10 15:36:56,461 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.69255 | Take profit: 2036.2812000000001 +2025-03-10 15:36:56,480 - INFO - CLOSED short at 2067.01 | PnL: 0.02% | $-0.17 +2025-03-10 15:36:56,522 - INFO - OPENED SHORT at 2069.79 | Stop loss: 2080.16485 | Take profit: 2038.7043 +2025-03-10 15:36:56,914 - INFO - CLOSED short at 2067.33 | PnL: 0.12% | $0.04 +2025-03-10 15:36:56,914 - INFO - OPENED LONG at 2067.33 | Stop loss: 2056.96745 | Take profit: 2098.3788 +2025-03-10 15:36:56,937 - INFO - CLOSED long at 2066.38 | PnL: -0.05% | $-0.29 +2025-03-10 15:36:56,937 - INFO - OPENED SHORT at 2066.38 | Stop loss: 2076.7378 | Take profit: 2035.34545 +2025-03-10 15:36:57,602 - INFO - CLOSED short at 2071.61 | PnL: -0.25% | $-0.69 +2025-03-10 15:36:57,621 - INFO - OPENED SHORT at 2074.37 | Stop loss: 2084.76775 | Take profit: 2043.2156 +2025-03-10 15:36:58,526 - INFO - CLOSED short at 2058.65 | PnL: 0.76% | $1.28 +2025-03-10 15:36:58,526 - INFO - OPENED LONG at 2058.65 | Stop loss: 2048.33085 | Take profit: 2089.5686 +2025-03-10 15:36:58,552 - INFO - CLOSED long at 2056.77 | PnL: -0.09% | $-0.38 +2025-03-10 15:36:58,553 - INFO - OPENED SHORT at 2056.77 | Stop loss: 2067.0797500000003 | Take profit: 2025.8796 +2025-03-10 15:36:58,855 - INFO - STOP LOSS hit for short at 2067.0797500000003 | PnL: -0.50% | $-1.18 +2025-03-10 15:36:58,875 - INFO - OPENED SHORT at 2067.49 | Stop loss: 2077.85335 | Take profit: 2036.4387999999997 +2025-03-10 15:36:58,935 - INFO - CLOSED short at 2061.21 | PnL: 0.30% | $0.39 +2025-03-10 15:36:58,936 - INFO - OPENED LONG at 2061.21 | Stop loss: 2050.87805 | Take profit: 2092.167 +2025-03-10 15:36:58,957 - INFO - CLOSED long at 2059.9 | PnL: -0.06% | $-0.32 +2025-03-10 15:36:58,957 - INFO - OPENED SHORT at 2059.9 | Stop loss: 2070.2254000000003 | Take profit: 2028.9626500000002 +2025-03-10 15:36:59,069 - INFO - STOP LOSS hit for short at 2070.2254000000003 | PnL: -0.50% | $-1.16 +2025-03-10 15:36:59,091 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.6171 | Take profit: 2039.14755 +2025-03-10 15:36:59,280 - INFO - CLOSED short at 2074.9 | PnL: -0.23% | $-0.62 +2025-03-10 15:36:59,306 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.4863 | Take profit: 2044.89995 +2025-03-10 15:36:59,388 - INFO - STOP LOSS hit for short at 2086.4863 | PnL: -0.50% | $-1.14 +2025-03-10 15:36:59,410 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.561 | Take profit: 2071.43585 +2025-03-10 15:36:59,435 - INFO - STOP LOSS hit for short at 2113.561 | PnL: -0.50% | $-1.13 +2025-03-10 15:36:59,458 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2636 | Take profit: 2107.40805 +2025-03-10 15:37:00,086 - INFO - CLOSED short at 2116.48 | PnL: 1.08% | $1.82 +2025-03-10 15:37:00,109 - INFO - OPENED SHORT at 2114.8 | Stop loss: 2125.3999 | Take profit: 2083.03915 +2025-03-10 15:37:00,613 - INFO - CLOSED short at 2095.29 | PnL: 0.92% | $1.56 +2025-03-10 15:37:00,613 - INFO - OPENED LONG at 2095.29 | Stop loss: 2084.7876499999998 | Take profit: 2126.7581999999998 +2025-03-10 15:37:00,634 - INFO - CLOSED long at 2093.46 | PnL: -0.09% | $-0.36 +2025-03-10 15:37:00,634 - INFO - OPENED SHORT at 2093.46 | Stop loss: 2103.9532 | Take profit: 2062.01925 +2025-03-10 15:37:01,195 - INFO - CLOSED short at 2087.47 | PnL: 0.29% | $0.36 +2025-03-10 15:37:01,195 - INFO - OPENED LONG at 2087.47 | Stop loss: 2077.00675 | Take profit: 2118.8208999999997 +2025-03-10 15:37:01,216 - INFO - CLOSED long at 2087.78 | PnL: 0.01% | $-0.16 +2025-03-10 15:37:01,216 - INFO - OPENED SHORT at 2087.78 | Stop loss: 2098.2448 | Take profit: 2056.42445 +2025-03-10 15:37:01,431 - INFO - STOP LOSS hit for short at 2098.2448 | PnL: -0.50% | $-1.15 +2025-03-10 15:37:01,455 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1740999999997 | Take profit: 2070.0765499999998 +2025-03-10 15:37:01,958 - INFO - CLOSED short at 2103.41 | PnL: -0.08% | $-0.35 +2025-03-10 15:37:01,980 - INFO - OPENED SHORT at 2104.73 | Stop loss: 2115.2795499999997 | Take profit: 2073.1202 +2025-03-10 15:37:02,434 - INFO - STOP LOSS hit for short at 2115.2795499999997 | PnL: -0.50% | $-1.14 +2025-03-10 15:37:02,459 - INFO - OPENED SHORT at 2117.39 | Stop loss: 2128.00285 | Take profit: 2085.5903 +2025-03-10 15:37:02,826 - INFO - STOP LOSS hit for short at 2128.00285 | PnL: -0.50% | $-1.12 +2025-03-10 15:37:02,850 - INFO - OPENED SHORT at 2135.86 | Stop loss: 2146.5652 | Take profit: 2103.78325 +2025-03-10 15:37:04,861 - INFO - CLOSED short at 2124.9 | PnL: 0.51% | $0.76 +2025-03-10 15:37:04,861 - INFO - OPENED LONG at 2124.9 | Stop loss: 2114.2496 | Take profit: 2156.81235 +2025-03-10 15:37:04,883 - INFO - CLOSED long at 2128.33 | PnL: 0.16% | $0.11 +2025-03-10 15:37:04,884 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2138.9975499999996 | Take profit: 2096.3662 +2025-03-10 15:37:05,341 - INFO - TAKE PROFIT hit for short at 2096.3662 | PnL: 1.50% | $2.61 +2025-03-10 15:37:05,365 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5761500000003 | Take profit: 2068.5104 +2025-03-10 15:37:05,386 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$0.90, Avg Loss=$-0.71 +2025-03-10 15:37:05,387 - INFO - Episode 3: Reward=-3.26, Balance=$96.94, Win Rate=37.0%, Trades=27, Episode PnL=$-1.67, Total PnL=$-14.04, Max Drawdown=6.6%, Pred Accuracy=97.9% +2025-03-10 15:37:05,477 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.23035 | Take profit: 2031.9078 +2025-03-10 15:37:07,231 - INFO - STOP LOSS hit for short at 2073.23035 | PnL: -0.50% | $-1.19 +2025-03-10 15:37:07,258 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.4259500000003 | Take profit: 2046.8010000000002 +2025-03-10 15:37:07,433 - INFO - CLOSED short at 2068.15 | PnL: 0.47% | $0.73 +2025-03-10 15:37:07,433 - INFO - OPENED LONG at 2068.15 | Stop loss: 2057.78335 | Take profit: 2099.2111000000004 +2025-03-10 15:37:07,454 - INFO - CLOSED long at 2068.39 | PnL: 0.01% | $-0.17 +2025-03-10 15:37:07,455 - INFO - OPENED SHORT at 2068.39 | Stop loss: 2078.75785 | Take profit: 2037.3253 +2025-03-10 15:37:09,061 - INFO - CLOSED short at 2063.01 | PnL: 0.26% | $0.31 +2025-03-10 15:37:09,084 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0294 | Take profit: 2029.75065 +2025-03-10 15:37:09,432 - INFO - CLOSED short at 2063.9 | PnL: -0.16% | $-0.50 +2025-03-10 15:37:09,432 - INFO - OPENED LONG at 2063.9 | Stop loss: 2053.5546 | Take profit: 2094.89735 +2025-03-10 15:37:09,456 - INFO - CLOSED long at 2065.1 | PnL: 0.06% | $-0.08 +2025-03-10 15:37:09,456 - INFO - OPENED SHORT at 2065.1 | Stop loss: 2075.4514 | Take profit: 2034.08465 +2025-03-10 15:37:09,972 - INFO - STOP LOSS hit for short at 2075.4514 | PnL: -0.50% | $-1.18 +2025-03-10 15:37:09,995 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2088.0239500000002 | Take profit: 2046.4070000000002 +2025-03-10 15:37:10,039 - INFO - STOP LOSS hit for short at 2088.0239500000002 | PnL: -0.50% | $-1.16 +2025-03-10 15:37:10,062 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.561 | Take profit: 2071.43585 +2025-03-10 15:37:10,087 - INFO - STOP LOSS hit for short at 2113.561 | PnL: -0.50% | $-1.15 +2025-03-10 15:37:10,111 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2636 | Take profit: 2107.40805 +2025-03-10 15:37:10,842 - INFO - TAKE PROFIT hit for short at 2107.40805 | PnL: 1.50% | $2.65 +2025-03-10 15:37:10,863 - INFO - OPENED SHORT at 2108.06 | Stop loss: 2118.6262 | Take profit: 2076.40025 +2025-03-10 15:37:12,135 - INFO - CLOSED short at 2097.8 | PnL: 0.49% | $0.75 +2025-03-10 15:37:12,136 - INFO - OPENED LONG at 2097.8 | Stop loss: 2087.2851 | Take profit: 2129.30585 +2025-03-10 15:37:12,154 - INFO - CLOSED long at 2099.99 | PnL: 0.10% | $0.01 +2025-03-10 15:37:12,177 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1740999999997 | Take profit: 2070.0765499999998 +2025-03-10 15:37:12,734 - INFO - STOP LOSS hit for short at 2112.1740999999997 | PnL: -0.50% | $-1.18 +2025-03-10 15:37:12,760 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.45025 | Take profit: 2079.1681 +2025-03-10 15:37:13,023 - INFO - CLOSED short at 2111.19 | PnL: -0.02% | $-0.22 +2025-03-10 15:37:13,066 - INFO - OPENED SHORT at 2118.72 | Stop loss: 2129.3394999999996 | Take profit: 2086.90035 +2025-03-10 15:37:13,498 - INFO - STOP LOSS hit for short at 2129.3394999999996 | PnL: -0.50% | $-1.16 +2025-03-10 15:37:13,526 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.9672 | Take profit: 2104.17725 +2025-03-10 15:37:14,537 - INFO - CLOSED short at 2117.92 | PnL: 0.86% | $1.45 +2025-03-10 15:37:14,537 - INFO - OPENED LONG at 2117.92 | Stop loss: 2107.3045 | Take profit: 2149.7276500000003 +2025-03-10 15:37:14,560 - INFO - CLOSED long at 2118.35 | PnL: 0.02% | $-0.15 +2025-03-10 15:37:14,560 - INFO - OPENED SHORT at 2118.35 | Stop loss: 2128.96765 | Take profit: 2086.5359 +2025-03-10 15:37:14,714 - INFO - CLOSED short at 2122.87 | PnL: -0.21% | $-0.61 +2025-03-10 15:37:14,715 - INFO - OPENED LONG at 2122.87 | Stop loss: 2112.22975 | Take profit: 2154.7519 +2025-03-10 15:37:14,738 - INFO - CLOSED long at 2124.87 | PnL: 0.09% | $-0.01 +2025-03-10 15:37:14,738 - INFO - OPENED SHORT at 2124.87 | Stop loss: 2135.5202499999996 | Take profit: 2092.9581 +2025-03-10 15:37:14,904 - INFO - CLOSED short at 2123.41 | PnL: 0.07% | $-0.06 +2025-03-10 15:37:14,904 - INFO - OPENED LONG at 2123.41 | Stop loss: 2112.76705 | Take profit: 2155.3 +2025-03-10 15:37:14,928 - INFO - CLOSED long at 2126.23 | PnL: 0.13% | $0.06 +2025-03-10 15:37:14,929 - INFO - OPENED SHORT at 2126.23 | Stop loss: 2136.88705 | Take profit: 2094.2977 +2025-03-10 15:37:15,189 - INFO - CLOSED short at 2122.24 | PnL: 0.19% | $0.17 +2025-03-10 15:37:15,189 - INFO - OPENED LONG at 2122.24 | Stop loss: 2111.6029 | Take profit: 2154.1124499999996 +2025-03-10 15:37:15,217 - INFO - CLOSED long at 2120.48 | PnL: -0.08% | $-0.35 +2025-03-10 15:37:15,217 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1083 | Take profit: 2088.63395 +2025-03-10 15:37:15,822 - INFO - CLOSED short at 2115.07 | PnL: 0.26% | $0.30 +2025-03-10 15:37:15,822 - INFO - OPENED LONG at 2115.07 | Stop loss: 2104.46875 | Take profit: 2146.8349000000003 +2025-03-10 15:37:15,848 - INFO - CLOSED long at 2098.24 | PnL: -0.80% | $-1.72 +2025-03-10 15:37:15,848 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.7571 | Take profit: 2066.72755 +2025-03-10 15:37:15,943 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 40.0% in downtrends | Avg Win=$0.71, Avg Loss=$-0.68 +2025-03-10 15:37:15,943 - INFO - Episode 4: Reward=-6.78, Balance=$95.53, Win Rate=36.0%, Trades=25, Episode PnL=$-2.04, Total PnL=$-18.51, Max Drawdown=4.4%, Pred Accuracy=98.0% +2025-03-10 15:37:16,851 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.23035 | Take profit: 2031.9078 +2025-03-10 15:37:17,267 - INFO - CLOSED short at 2061.6 | PnL: 0.06% | $-0.07 +2025-03-10 15:37:17,291 - INFO - OPENED SHORT at 2060.9 | Stop loss: 2071.2304 | Take profit: 2029.94765 +2025-03-10 15:37:17,639 - INFO - CLOSED short at 2064.79 | PnL: -0.19% | $-0.57 +2025-03-10 15:37:17,639 - INFO - OPENED LONG at 2064.79 | Stop loss: 2054.44015 | Take profit: 2095.8007 +2025-03-10 15:37:17,665 - INFO - CLOSED long at 2065.89 | PnL: 0.05% | $-0.09 +2025-03-10 15:37:17,666 - INFO - OPENED SHORT at 2065.89 | Stop loss: 2076.24535 | Take profit: 2034.8627999999999 +2025-03-10 15:37:17,943 - INFO - CLOSED short at 2059.96 | PnL: 0.29% | $0.37 +2025-03-10 15:37:17,943 - INFO - OPENED LONG at 2059.96 | Stop loss: 2049.6343 | Take profit: 2090.89825 +2025-03-10 15:37:17,973 - INFO - CLOSED long at 2059.46 | PnL: -0.02% | $-0.24 +2025-03-10 15:37:17,973 - INFO - OPENED SHORT at 2059.46 | Stop loss: 2069.7832 | Take profit: 2028.52925 +2025-03-10 15:37:17,997 - INFO - CLOSED short at 2057.4 | PnL: 0.10% | $0.00 +2025-03-10 15:37:17,998 - INFO - OPENED LONG at 2057.4 | Stop loss: 2047.0871000000002 | Take profit: 2088.2998500000003 +2025-03-10 15:37:18,023 - INFO - CLOSED long at 2058.28 | PnL: 0.04% | $-0.11 +2025-03-10 15:37:18,023 - INFO - OPENED SHORT at 2058.28 | Stop loss: 2068.5973 | Take profit: 2027.3669500000003 +2025-03-10 15:37:18,263 - INFO - CLOSED short at 2061.6 | PnL: -0.16% | $-0.51 +2025-03-10 15:37:18,264 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.2661 | Take profit: 2092.56285 +2025-03-10 15:37:18,289 - INFO - CLOSED long at 2061.3 | PnL: -0.01% | $-0.22 +2025-03-10 15:37:18,289 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.6324000000004 | Take profit: 2030.3416500000003 +2025-03-10 15:37:18,427 - INFO - CLOSED short at 2066.33 | PnL: -0.24% | $-0.67 +2025-03-10 15:37:18,428 - INFO - OPENED LONG at 2066.33 | Stop loss: 2055.9724499999998 | Take profit: 2097.3637999999996 +2025-03-10 15:37:18,447 - INFO - CLOSED long at 2066.34 | PnL: 0.00% | $-0.19 +2025-03-10 15:37:18,448 - INFO - OPENED SHORT at 2066.34 | Stop loss: 2076.6976000000004 | Take profit: 2035.3060500000001 +2025-03-10 15:37:18,626 - INFO - STOP LOSS hit for short at 2076.6976000000004 | PnL: -0.50% | $-1.16 +2025-03-10 15:37:18,646 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.41095 | Take profit: 2043.8460000000002 +2025-03-10 15:37:18,666 - INFO - CLOSED short at 2072.6 | PnL: 0.12% | $0.03 +2025-03-10 15:37:18,688 - INFO - OPENED SHORT at 2071.04 | Stop loss: 2081.4211 | Take profit: 2039.93555 +2025-03-10 15:37:18,815 - INFO - CLOSED short at 2068.39 | PnL: 0.13% | $0.05 +2025-03-10 15:37:18,815 - INFO - OPENED LONG at 2068.39 | Stop loss: 2058.02215 | Take profit: 2099.4547 +2025-03-10 15:37:18,834 - INFO - CLOSED long at 2069.69 | PnL: 0.06% | $-0.07 +2025-03-10 15:37:18,834 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.0643499999996 | Take profit: 2038.6058 +2025-03-10 15:37:19,485 - INFO - CLOSED short at 2070.9 | PnL: -0.06% | $-0.30 +2025-03-10 15:37:19,486 - INFO - OPENED LONG at 2070.9 | Stop loss: 2060.5196 | Take profit: 2102.00235 +2025-03-10 15:37:19,550 - INFO - CLOSED long at 2070.7 | PnL: -0.01% | $-0.21 +2025-03-10 15:37:19,551 - INFO - OPENED SHORT at 2070.7 | Stop loss: 2081.0793999999996 | Take profit: 2039.6006499999999 +2025-03-10 15:37:19,637 - INFO - CLOSED short at 2070.61 | PnL: 0.00% | $-0.18 +2025-03-10 15:37:19,638 - INFO - OPENED LONG at 2070.61 | Stop loss: 2060.2310500000003 | Take profit: 2101.708 +2025-03-10 15:37:19,670 - INFO - CLOSED long at 2071.99 | PnL: 0.07% | $-0.06 +2025-03-10 15:37:19,671 - INFO - OPENED SHORT at 2071.99 | Stop loss: 2082.37585 | Take profit: 2040.8712999999998 +2025-03-10 15:37:20,634 - INFO - CLOSED short at 2066.1 | PnL: 0.28% | $0.35 +2025-03-10 15:37:20,635 - INFO - OPENED LONG at 2066.1 | Stop loss: 2055.7436 | Take profit: 2097.13035 +2025-03-10 15:37:20,658 - INFO - CLOSED long at 2065.06 | PnL: -0.05% | $-0.29 +2025-03-10 15:37:20,658 - INFO - OPENED SHORT at 2065.06 | Stop loss: 2075.4112 | Take profit: 2034.0452500000001 +2025-03-10 15:37:20,918 - INFO - CLOSED short at 2053.01 | PnL: 0.58% | $0.92 +2025-03-10 15:37:20,918 - INFO - OPENED LONG at 2053.01 | Stop loss: 2042.7190500000002 | Take profit: 2083.8440000000005 +2025-03-10 15:37:20,939 - INFO - CLOSED long at 2049.21 | PnL: -0.19% | $-0.54 +2025-03-10 15:37:20,939 - INFO - OPENED SHORT at 2049.21 | Stop loss: 2059.4819500000003 | Take profit: 2018.433 +2025-03-10 15:37:21,081 - INFO - STOP LOSS hit for short at 2059.4819500000003 | PnL: -0.50% | $-1.14 +2025-03-10 15:37:21,101 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.2454000000002 | Take profit: 2032.9026500000002 +2025-03-10 15:37:21,356 - INFO - CLOSED short at 2062.54 | PnL: 0.07% | $-0.06 +2025-03-10 15:37:21,357 - INFO - OPENED LONG at 2062.54 | Stop loss: 2052.2014 | Take profit: 2093.5169499999997 +2025-03-10 15:37:21,384 - INFO - CLOSED long at 2065.72 | PnL: 0.15% | $0.10 +2025-03-10 15:37:21,384 - INFO - OPENED SHORT at 2065.72 | Stop loss: 2076.0744999999997 | Take profit: 2034.6953499999997 +2025-03-10 15:37:21,428 - INFO - CLOSED short at 2070.24 | PnL: -0.22% | $-0.60 +2025-03-10 15:37:21,428 - INFO - OPENED LONG at 2070.24 | Stop loss: 2059.8628999999996 | Take profit: 2101.33245 +2025-03-10 15:37:21,455 - INFO - CLOSED long at 2069.34 | PnL: -0.04% | $-0.27 +2025-03-10 15:37:21,456 - INFO - OPENED SHORT at 2069.34 | Stop loss: 2079.7126000000003 | Take profit: 2038.26105 +2025-03-10 15:37:21,639 - INFO - CLOSED short at 2076.08 | PnL: -0.33% | $-0.79 +2025-03-10 15:37:21,640 - INFO - OPENED LONG at 2076.08 | Stop loss: 2065.6737 | Take profit: 2107.26005 +2025-03-10 15:37:21,662 - INFO - CLOSED long at 2077.61 | PnL: 0.07% | $-0.05 +2025-03-10 15:37:21,662 - INFO - OPENED SHORT at 2077.61 | Stop loss: 2088.0239500000002 | Take profit: 2046.4070000000002 +2025-03-10 15:37:21,705 - INFO - STOP LOSS hit for short at 2088.0239500000002 | PnL: -0.50% | $-1.11 +2025-03-10 15:37:21,725 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.561 | Take profit: 2071.43585 +2025-03-10 15:37:21,748 - INFO - STOP LOSS hit for short at 2113.561 | PnL: -0.50% | $-1.10 +2025-03-10 15:37:21,770 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2636 | Take profit: 2107.40805 +2025-03-10 15:37:21,887 - INFO - CLOSED short at 2142.68 | PnL: -0.15% | $-0.44 +2025-03-10 15:37:21,887 - INFO - OPENED LONG at 2142.68 | Stop loss: 2131.9406999999997 | Take profit: 2174.85905 +2025-03-10 15:37:21,907 - INFO - CLOSED long at 2140.01 | PnL: -0.12% | $-0.40 +2025-03-10 15:37:21,907 - INFO - OPENED SHORT at 2140.01 | Stop loss: 2150.7359500000002 | Take profit: 2107.871 +2025-03-10 15:37:22,010 - INFO - CLOSED short at 2121.09 | PnL: 0.88% | $1.40 +2025-03-10 15:37:22,010 - INFO - OPENED LONG at 2121.09 | Stop loss: 2110.45865 | Take profit: 2152.9452 +2025-03-10 15:37:22,032 - INFO - CLOSED long at 2120.15 | PnL: -0.04% | $-0.26 +2025-03-10 15:37:22,032 - INFO - OPENED SHORT at 2120.15 | Stop loss: 2130.7766500000002 | Take profit: 2088.3089 +2025-03-10 15:37:22,174 - INFO - CLOSED short at 2119.07 | PnL: 0.05% | $-0.09 +2025-03-10 15:37:22,175 - INFO - OPENED LONG at 2119.07 | Stop loss: 2108.44875 | Take profit: 2150.8949 +2025-03-10 15:37:22,223 - INFO - CLOSED long at 2107.43 | PnL: -0.55% | $-1.17 +2025-03-10 15:37:22,224 - INFO - OPENED SHORT at 2107.43 | Stop loss: 2117.99305 | Take profit: 2075.7796999999996 +2025-03-10 15:37:22,291 - INFO - CLOSED short at 2112.09 | PnL: -0.22% | $-0.57 +2025-03-10 15:37:22,291 - INFO - OPENED LONG at 2112.09 | Stop loss: 2101.50365 | Take profit: 2143.8102000000003 +2025-03-10 15:37:22,317 - INFO - CLOSED long at 2112.95 | PnL: 0.04% | $-0.11 +2025-03-10 15:37:22,317 - INFO - OPENED SHORT at 2112.95 | Stop loss: 2123.5406499999995 | Take profit: 2081.2169 +2025-03-10 15:37:22,440 - INFO - CLOSED short at 2114.8 | PnL: -0.09% | $-0.33 +2025-03-10 15:37:22,440 - INFO - OPENED LONG at 2114.8 | Stop loss: 2104.2001 | Take profit: 2146.5608500000003 +2025-03-10 15:37:22,462 - INFO - CLOSED long at 2110.9 | PnL: -0.18% | $-0.50 +2025-03-10 15:37:22,462 - INFO - OPENED SHORT at 2110.9 | Stop loss: 2121.4804000000004 | Take profit: 2079.19765 +2025-03-10 15:37:22,587 - INFO - CLOSED short at 2090.0 | PnL: 0.99% | $1.56 +2025-03-10 15:37:22,588 - INFO - OPENED LONG at 2090.0 | Stop loss: 2079.5241 | Take profit: 2121.38885 +2025-03-10 15:37:22,608 - INFO - CLOSED long at 2099.53 | PnL: 0.46% | $0.63 +2025-03-10 15:37:22,608 - INFO - OPENED SHORT at 2099.53 | Stop loss: 2110.05355 | Take profit: 2067.9982000000005 +2025-03-10 15:37:22,761 - INFO - CLOSED short at 2104.83 | PnL: -0.25% | $-0.63 +2025-03-10 15:37:22,761 - INFO - OPENED LONG at 2104.83 | Stop loss: 2094.27995 | Take profit: 2136.4413 +2025-03-10 15:37:22,782 - INFO - CLOSED long at 2106.39 | PnL: 0.07% | $-0.05 +2025-03-10 15:37:22,782 - INFO - OPENED SHORT at 2106.39 | Stop loss: 2116.94785 | Take profit: 2074.7553 +2025-03-10 15:37:22,809 - INFO - CLOSED short at 2100.74 | PnL: 0.27% | $0.30 +2025-03-10 15:37:22,809 - INFO - OPENED LONG at 2100.74 | Stop loss: 2090.2104 | Take profit: 2132.2899499999994 +2025-03-10 15:37:22,839 - INFO - CLOSED long at 2103.86 | PnL: 0.15% | $0.09 +2025-03-10 15:37:22,840 - INFO - OPENED SHORT at 2103.86 | Stop loss: 2114.4052 | Take profit: 2072.2632500000004 +2025-03-10 15:37:23,171 - INFO - CLOSED short at 2083.28 | PnL: 0.98% | $1.57 +2025-03-10 15:37:23,171 - INFO - OPENED LONG at 2083.28 | Stop loss: 2072.8377000000005 | Take profit: 2114.5680500000003 +2025-03-10 15:37:23,193 - INFO - CLOSED long at 2088.44 | PnL: 0.25% | $0.27 +2025-03-10 15:37:23,193 - INFO - OPENED SHORT at 2088.44 | Stop loss: 2098.9081 | Take profit: 2057.07455 +2025-03-10 15:37:23,341 - INFO - CLOSED short at 2083.41 | PnL: 0.24% | $0.26 +2025-03-10 15:37:23,341 - INFO - OPENED LONG at 2083.41 | Stop loss: 2072.9670499999997 | Take profit: 2114.7 +2025-03-10 15:37:23,364 - INFO - CLOSED long at 2085.09 | PnL: 0.08% | $-0.04 +2025-03-10 15:37:23,364 - INFO - OPENED SHORT at 2085.09 | Stop loss: 2095.54135 | Take profit: 2053.7748 +2025-03-10 15:37:23,629 - INFO - CLOSED short at 2087.78 | PnL: -0.13% | $-0.42 +2025-03-10 15:37:23,629 - INFO - OPENED LONG at 2087.78 | Stop loss: 2077.3152 | Take profit: 2119.1355500000004 +2025-03-10 15:37:23,649 - INFO - CLOSED long at 2086.81 | PnL: -0.05% | $-0.27 +2025-03-10 15:37:23,650 - INFO - OPENED SHORT at 2086.81 | Stop loss: 2097.26995 | Take profit: 2055.469 +2025-03-10 15:37:23,813 - INFO - STOP LOSS hit for short at 2097.26995 | PnL: -0.50% | $-1.09 +2025-03-10 15:37:23,841 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.51585 | Take profit: 2068.4512999999997 +2025-03-10 15:37:24,266 - INFO - CLOSED short at 2102.0 | PnL: -0.10% | $-0.35 +2025-03-10 15:37:24,267 - INFO - OPENED LONG at 2102.0 | Stop loss: 2091.4641 | Take profit: 2133.56885 +2025-03-10 15:37:24,291 - INFO - CLOSED long at 2103.41 | PnL: 0.07% | $-0.06 +2025-03-10 15:37:24,291 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.95295 | Take profit: 2071.8199999999997 +2025-03-10 15:37:24,484 - INFO - STOP LOSS hit for short at 2113.95295 | PnL: -0.50% | $-1.07 +2025-03-10 15:37:24,504 - INFO - OPENED SHORT at 2113.61 | Stop loss: 2124.20395 | Take profit: 2081.867 +2025-03-10 15:37:24,626 - INFO - CLOSED short at 2108.99 | PnL: 0.22% | $0.21 +2025-03-10 15:37:24,627 - INFO - OPENED LONG at 2108.99 | Stop loss: 2098.4191499999997 | Take profit: 2140.6636999999996 +2025-03-10 15:37:24,668 - INFO - CLOSED long at 2112.61 | PnL: 0.17% | $0.13 +2025-03-10 15:37:24,668 - INFO - OPENED SHORT at 2112.61 | Stop loss: 2123.19895 | Take profit: 2080.882 +2025-03-10 15:37:24,709 - INFO - CLOSED short at 2117.39 | PnL: -0.23% | $-0.58 +2025-03-10 15:37:24,709 - INFO - OPENED LONG at 2117.39 | Stop loss: 2106.77715 | Take profit: 2149.1897 +2025-03-10 15:37:24,736 - INFO - CLOSED long at 2115.3 | PnL: -0.10% | $-0.35 +2025-03-10 15:37:24,737 - INFO - OPENED SHORT at 2115.3 | Stop loss: 2125.9024 | Take profit: 2083.53165 +2025-03-10 15:37:25,021 - INFO - CLOSED short at 2127.79 | PnL: -0.59% | $-1.21 +2025-03-10 15:37:25,021 - INFO - OPENED LONG at 2127.79 | Stop loss: 2117.12515 | Take profit: 2159.7457 +2025-03-10 15:37:25,044 - INFO - CLOSED long at 2129.3 | PnL: 0.07% | $-0.05 +2025-03-10 15:37:25,044 - INFO - OPENED SHORT at 2129.3 | Stop loss: 2139.9724000000006 | Take profit: 2097.3216500000003 +2025-03-10 15:37:25,106 - INFO - CLOSED short at 2135.51 | PnL: -0.29% | $-0.68 +2025-03-10 15:37:25,107 - INFO - OPENED LONG at 2135.51 | Stop loss: 2124.8065500000002 | Take profit: 2167.5815000000002 +2025-03-10 15:37:25,131 - INFO - CLOSED long at 2136.09 | PnL: 0.03% | $-0.13 +2025-03-10 15:37:25,131 - INFO - OPENED SHORT at 2136.09 | Stop loss: 2146.7963500000005 | Take profit: 2104.0098000000003 +2025-03-10 15:37:25,972 - INFO - CLOSED short at 2123.62 | PnL: 0.58% | $0.83 +2025-03-10 15:37:25,973 - INFO - OPENED LONG at 2123.62 | Stop loss: 2112.9759999999997 | Take profit: 2155.5131499999998 +2025-03-10 15:37:25,992 - INFO - CLOSED long at 2122.53 | PnL: -0.05% | $-0.26 +2025-03-10 15:37:25,994 - INFO - OPENED SHORT at 2122.53 | Stop loss: 2133.1685500000003 | Take profit: 2090.6532 +2025-03-10 15:37:26,013 - INFO - CLOSED short at 2122.01 | PnL: 0.02% | $-0.13 +2025-03-10 15:37:26,013 - INFO - OPENED LONG at 2122.01 | Stop loss: 2111.3740500000004 | Take profit: 2153.879 +2025-03-10 15:37:26,035 - INFO - CLOSED long at 2120.62 | PnL: -0.07% | $-0.29 +2025-03-10 15:37:26,036 - INFO - OPENED SHORT at 2120.62 | Stop loss: 2131.2490000000003 | Take profit: 2088.77185 +2025-03-10 15:37:26,144 - INFO - CLOSED short at 2118.26 | PnL: 0.11% | $0.02 +2025-03-10 15:37:26,144 - INFO - OPENED LONG at 2118.26 | Stop loss: 2107.6428 | Take profit: 2150.0727500000003 +2025-03-10 15:37:26,168 - INFO - CLOSED long at 2121.82 | PnL: 0.17% | $0.12 +2025-03-10 15:37:26,168 - INFO - OPENED SHORT at 2121.82 | Stop loss: 2132.4550000000004 | Take profit: 2089.9538500000003 +2025-03-10 15:37:26,267 - INFO - CLOSED short at 2125.04 | PnL: -0.15% | $-0.43 +2025-03-10 15:37:26,267 - INFO - OPENED LONG at 2125.04 | Stop loss: 2114.3889 | Take profit: 2156.9544499999997 +2025-03-10 15:37:26,288 - INFO - CLOSED long at 2123.61 | PnL: -0.07% | $-0.29 +2025-03-10 15:37:26,289 - INFO - OPENED SHORT at 2123.61 | Stop loss: 2134.2539500000003 | Take profit: 2091.717 +2025-03-10 15:37:26,532 - INFO - CLOSED short at 2121.8 | PnL: 0.09% | $-0.03 +2025-03-10 15:37:26,533 - INFO - OPENED LONG at 2121.8 | Stop loss: 2111.1651 | Take profit: 2153.6658500000003 +2025-03-10 15:37:26,551 - INFO - CLOSED long at 2121.42 | PnL: -0.02% | $-0.20 +2025-03-10 15:37:26,552 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.053 | Take profit: 2089.55985 +2025-03-10 15:37:26,573 - INFO - CLOSED short at 2116.52 | PnL: 0.23% | $0.22 +2025-03-10 15:37:26,574 - INFO - OPENED LONG at 2116.52 | Stop loss: 2105.9115 | Take profit: 2148.30665 +2025-03-10 15:37:26,594 - INFO - CLOSED long at 2119.02 | PnL: 0.12% | $0.03 +2025-03-10 15:37:26,595 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.641 | Take profit: 2087.19585 +2025-03-10 15:37:26,619 - INFO - CLOSED short at 2120.96 | PnL: -0.09% | $-0.33 +2025-03-10 15:37:26,619 - INFO - OPENED LONG at 2120.96 | Stop loss: 2110.3293 | Take profit: 2152.81325 +2025-03-10 15:37:26,641 - INFO - CLOSED long at 2124.9 | PnL: 0.19% | $0.15 +2025-03-10 15:37:26,642 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.5504 | Take profit: 2092.98765 +2025-03-10 15:37:26,665 - INFO - CLOSED short at 2128.33 | PnL: -0.16% | $-0.45 +2025-03-10 15:37:26,666 - INFO - OPENED LONG at 2128.33 | Stop loss: 2117.66245 | Take profit: 2160.2938 +2025-03-10 15:37:26,687 - INFO - CLOSED long at 2124.77 | PnL: -0.17% | $-0.45 +2025-03-10 15:37:26,688 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.41975 | Take profit: 2092.8596000000002 +2025-03-10 15:37:26,864 - INFO - CLOSED short at 2114.1 | PnL: 0.50% | $0.68 +2025-03-10 15:37:26,864 - INFO - OPENED LONG at 2114.1 | Stop loss: 2103.5036 | Take profit: 2145.8503499999997 +2025-03-10 15:37:26,886 - INFO - CLOSED long at 2115.11 | PnL: 0.05% | $-0.09 +2025-03-10 15:37:26,886 - INFO - OPENED SHORT at 2115.11 | Stop loss: 2125.7114500000002 | Take profit: 2083.3445 +2025-03-10 15:37:27,111 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 34.1% in downtrends | Avg Win=$0.43, Avg Loss=$-0.41 +2025-03-10 15:37:27,112 - INFO - Episode 5: Reward=32.55, Balance=$85.86, Win Rate=28.6%, Trades=84, Episode PnL=$-8.35, Total PnL=$-32.65, Max Drawdown=10.6%, Pred Accuracy=98.1% +2025-03-10 15:37:27,196 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.23035 | Take profit: 2031.9078 +2025-03-10 15:37:27,687 - INFO - CLOSED short at 2064.7 | PnL: -0.09% | $-0.37 +2025-03-10 15:37:27,687 - INFO - OPENED LONG at 2064.7 | Stop loss: 2054.3505999999998 | Take profit: 2095.7093499999996 +2025-03-10 15:37:27,707 - INFO - CLOSED long at 2062.61 | PnL: -0.10% | $-0.40 +2025-03-10 15:37:27,707 - INFO - OPENED SHORT at 2062.61 | Stop loss: 2072.9489500000004 | Take profit: 2031.632 +2025-03-10 15:37:27,807 - INFO - CLOSED short at 2064.1 | PnL: -0.07% | $-0.34 +2025-03-10 15:37:27,808 - INFO - OPENED LONG at 2064.1 | Stop loss: 2053.7536 | Take profit: 2095.10035 +2025-03-10 15:37:27,829 - INFO - CLOSED long at 2065.36 | PnL: 0.06% | $-0.08 +2025-03-10 15:37:27,829 - INFO - OPENED SHORT at 2065.36 | Stop loss: 2075.7127 | Take profit: 2034.34075 +2025-03-10 15:37:27,894 - INFO - CLOSED short at 2064.79 | PnL: 0.03% | $-0.14 +2025-03-10 15:37:27,894 - INFO - OPENED LONG at 2064.79 | Stop loss: 2054.44015 | Take profit: 2095.8007 +2025-03-10 15:37:27,919 - INFO - CLOSED long at 2065.89 | PnL: 0.05% | $-0.09 +2025-03-10 15:37:27,919 - INFO - OPENED SHORT at 2065.89 | Stop loss: 2076.24535 | Take profit: 2034.8627999999999 +2025-03-10 15:37:27,939 - INFO - CLOSED short at 2063.53 | PnL: 0.11% | $0.03 +2025-03-10 15:37:27,940 - INFO - OPENED LONG at 2063.53 | Stop loss: 2053.18645 | Take profit: 2094.5218000000004 +2025-03-10 15:37:27,963 - INFO - CLOSED long at 2063.0 | PnL: -0.03% | $-0.24 +2025-03-10 15:37:27,964 - INFO - OPENED SHORT at 2063.0 | Stop loss: 2073.3409 | Take profit: 2032.01615 +2025-03-10 15:37:28,123 - INFO - CLOSED short at 2059.02 | PnL: 0.19% | $0.18 +2025-03-10 15:37:28,124 - INFO - OPENED LONG at 2059.02 | Stop loss: 2048.699 | Take profit: 2089.9441500000003 +2025-03-10 15:37:28,148 - INFO - CLOSED long at 2058.89 | PnL: -0.01% | $-0.21 +2025-03-10 15:37:28,149 - INFO - OPENED SHORT at 2058.89 | Stop loss: 2069.2103500000003 | Take profit: 2027.9678 +2025-03-10 15:37:28,314 - INFO - CLOSED short at 2054.83 | PnL: 0.20% | $0.19 +2025-03-10 15:37:28,314 - INFO - OPENED LONG at 2054.83 | Stop loss: 2044.5299499999999 | Take profit: 2085.6912999999995 +2025-03-10 15:37:28,340 - INFO - CLOSED long at 2056.71 | PnL: 0.09% | $-0.02 +2025-03-10 15:37:28,341 - INFO - OPENED SHORT at 2056.71 | Stop loss: 2067.01945 | Take profit: 2025.8205 +2025-03-10 15:37:28,460 - INFO - CLOSED short at 2061.6 | PnL: -0.24% | $-0.66 +2025-03-10 15:37:28,460 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.2661 | Take profit: 2092.56285 +2025-03-10 15:37:28,481 - INFO - CLOSED long at 2061.3 | PnL: -0.01% | $-0.22 +2025-03-10 15:37:28,481 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.6324000000004 | Take profit: 2030.3416500000003 +2025-03-10 15:37:28,816 - INFO - STOP LOSS hit for short at 2071.6324000000004 | PnL: -0.50% | $-1.16 +2025-03-10 15:37:28,838 - INFO - OPENED LONG at 2074.3 | Stop loss: 2063.9026000000003 | Take profit: 2105.4533500000002 +2025-03-10 15:37:28,860 - INFO - CLOSED long at 2078.01 | PnL: 0.18% | $0.15 +2025-03-10 15:37:28,860 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.4259500000003 | Take profit: 2046.8010000000002 +2025-03-10 15:37:28,888 - INFO - CLOSED short at 2075.01 | PnL: 0.14% | $0.08 +2025-03-10 15:37:28,889 - INFO - OPENED LONG at 2075.01 | Stop loss: 2064.60905 | Take profit: 2106.174 +2025-03-10 15:37:28,943 - INFO - CLOSED long at 2071.04 | PnL: -0.19% | $-0.56 +2025-03-10 15:37:28,943 - INFO - OPENED SHORT at 2071.04 | Stop loss: 2081.4211 | Take profit: 2039.93555 +2025-03-10 15:37:28,968 - INFO - CLOSED short at 2070.01 | PnL: 0.05% | $-0.10 +2025-03-10 15:37:28,969 - INFO - OPENED LONG at 2070.01 | Stop loss: 2059.63405 | Take profit: 2101.099 +2025-03-10 15:37:28,994 - INFO - CLOSED long at 2071.6 | PnL: 0.08% | $-0.04 +2025-03-10 15:37:28,994 - INFO - OPENED SHORT at 2071.6 | Stop loss: 2081.9839 | Take profit: 2040.48715 +2025-03-10 15:37:29,016 - INFO - CLOSED short at 2073.23 | PnL: -0.08% | $-0.34 +2025-03-10 15:37:29,040 - INFO - OPENED SHORT at 2070.0 | Stop loss: 2080.3759 | Take profit: 2038.91115 +2025-03-10 15:37:29,108 - INFO - CLOSED short at 2069.69 | PnL: 0.01% | $-0.16 +2025-03-10 15:37:29,109 - INFO - OPENED LONG at 2069.69 | Stop loss: 2059.31565 | Take profit: 2100.7742000000003 +2025-03-10 15:37:29,137 - INFO - CLOSED long at 2069.03 | PnL: -0.03% | $-0.25 +2025-03-10 15:37:29,137 - INFO - OPENED SHORT at 2069.03 | Stop loss: 2079.4010500000004 | Take profit: 2037.9557000000002 +2025-03-10 15:37:29,204 - INFO - CLOSED short at 2072.99 | PnL: -0.19% | $-0.55 +2025-03-10 15:37:29,205 - INFO - OPENED LONG at 2072.99 | Stop loss: 2062.5991499999996 | Take profit: 2104.1236999999996 +2025-03-10 15:37:29,232 - INFO - CLOSED long at 2071.49 | PnL: -0.07% | $-0.32 +2025-03-10 15:37:29,232 - INFO - OPENED SHORT at 2071.49 | Stop loss: 2081.87335 | Take profit: 2040.3787999999997 +2025-03-10 15:37:29,445 - INFO - CLOSED short at 2065.3 | PnL: 0.30% | $0.37 +2025-03-10 15:37:29,445 - INFO - OPENED LONG at 2065.3 | Stop loss: 2054.9476000000004 | Take profit: 2096.3183500000005 +2025-03-10 15:37:29,468 - INFO - CLOSED long at 2064.4 | PnL: -0.04% | $-0.27 +2025-03-10 15:37:29,468 - INFO - OPENED SHORT at 2064.4 | Stop loss: 2074.7479000000003 | Take profit: 2033.39515 +2025-03-10 15:37:29,532 - INFO - CLOSED short at 2067.53 | PnL: -0.15% | $-0.47 +2025-03-10 15:37:29,532 - INFO - OPENED LONG at 2067.53 | Stop loss: 2057.16645 | Take profit: 2098.5818 +2025-03-10 15:37:29,553 - INFO - CLOSED long at 2065.29 | PnL: -0.11% | $-0.39 +2025-03-10 15:37:29,554 - INFO - OPENED SHORT at 2065.29 | Stop loss: 2075.64235 | Take profit: 2034.2717999999998 +2025-03-10 15:37:29,599 - INFO - CLOSED short at 2066.8 | PnL: -0.07% | $-0.32 +2025-03-10 15:37:29,599 - INFO - OPENED LONG at 2066.8 | Stop loss: 2056.4401000000003 | Take profit: 2097.84085 +2025-03-10 15:37:29,622 - INFO - CLOSED long at 2066.5 | PnL: -0.01% | $-0.21 +2025-03-10 15:37:29,622 - INFO - OPENED SHORT at 2066.5 | Stop loss: 2076.8584 | Take profit: 2035.4636500000001 +2025-03-10 15:37:29,717 - INFO - CLOSED short at 2071.35 | PnL: -0.23% | $-0.62 +2025-03-10 15:37:29,718 - INFO - OPENED LONG at 2071.35 | Stop loss: 2060.96735 | Take profit: 2102.4591 +2025-03-10 15:37:29,743 - INFO - CLOSED long at 2070.9 | PnL: -0.02% | $-0.22 +2025-03-10 15:37:29,744 - INFO - OPENED SHORT at 2070.9 | Stop loss: 2081.2804 | Take profit: 2039.7976500000002 +2025-03-10 15:37:30,984 - INFO - CLOSED short at 2056.85 | PnL: 0.68% | $1.05 +2025-03-10 15:37:30,984 - INFO - OPENED LONG at 2056.85 | Stop loss: 2046.53985 | Take profit: 2087.7416 +2025-03-10 15:37:31,005 - INFO - CLOSED long at 2057.11 | PnL: 0.01% | $-0.16 +2025-03-10 15:37:31,006 - INFO - OPENED SHORT at 2057.11 | Stop loss: 2067.4214500000003 | Take profit: 2026.2145 +2025-03-10 15:37:31,180 - INFO - STOP LOSS hit for short at 2067.4214500000003 | PnL: -0.50% | $-1.11 +2025-03-10 15:37:31,203 - INFO - OPENED SHORT at 2067.49 | Stop loss: 2077.85335 | Take profit: 2036.4387999999997 +2025-03-10 15:37:31,510 - INFO - CLOSED short at 2074.05 | PnL: -0.32% | $-0.76 +2025-03-10 15:37:31,532 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.38085 | Take profit: 2041.8562999999997 +2025-03-10 15:37:31,581 - INFO - CLOSED short at 2071.8 | PnL: 0.06% | $-0.08 +2025-03-10 15:37:31,581 - INFO - OPENED LONG at 2071.8 | Stop loss: 2061.4151 | Take profit: 2102.91585 +2025-03-10 15:37:31,602 - INFO - CLOSED long at 2074.9 | PnL: 0.15% | $0.09 +2025-03-10 15:37:31,603 - INFO - OPENED SHORT at 2074.9 | Stop loss: 2085.3004 | Take profit: 2043.73765 +2025-03-10 15:37:31,668 - INFO - STOP LOSS hit for short at 2085.3004 | PnL: -0.50% | $-1.08 +2025-03-10 15:37:31,690 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.9683499999996 | Take profit: 2059.0937999999996 +2025-03-10 15:37:31,710 - INFO - STOP LOSS hit for short at 2100.9683499999996 | PnL: -0.50% | $-1.07 +2025-03-10 15:37:31,732 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3794 | Take profit: 2098.7006499999998 +2025-03-10 15:37:31,847 - INFO - STOP LOSS hit for short at 2141.3794 | PnL: -0.50% | $-1.06 +2025-03-10 15:37:31,873 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.0324 | Take profit: 2109.14165 +2025-03-10 15:37:32,211 - INFO - TAKE PROFIT hit for short at 2109.14165 | PnL: 1.50% | $2.44 +2025-03-10 15:37:32,232 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1789 | Take profit: 2078.90215 +2025-03-10 15:37:32,881 - INFO - CLOSED short at 2098.39 | PnL: 0.58% | $0.86 +2025-03-10 15:37:32,882 - INFO - OPENED LONG at 2098.39 | Stop loss: 2087.8721499999997 | Take profit: 2129.9047 +2025-03-10 15:37:32,902 - INFO - CLOSED long at 2095.29 | PnL: -0.15% | $-0.45 +2025-03-10 15:37:32,902 - INFO - OPENED SHORT at 2095.29 | Stop loss: 2105.79235 | Take profit: 2063.8217999999997 +2025-03-10 15:37:33,389 - INFO - CLOSED short at 2085.85 | PnL: 0.45% | $0.63 +2025-03-10 15:37:33,389 - INFO - OPENED LONG at 2085.85 | Stop loss: 2075.39485 | Take profit: 2117.1766 +2025-03-10 15:37:33,410 - INFO - CLOSED long at 2088.66 | PnL: 0.13% | $0.06 +2025-03-10 15:37:33,411 - INFO - OPENED SHORT at 2088.66 | Stop loss: 2099.1292 | Take profit: 2057.2912499999998 +2025-03-10 15:37:33,634 - INFO - CLOSED short at 2091.05 | PnL: -0.11% | $-0.39 +2025-03-10 15:37:33,634 - INFO - OPENED LONG at 2091.05 | Stop loss: 2080.56885 | Take profit: 2122.4546000000005 +2025-03-10 15:37:33,674 - INFO - CLOSED long at 2091.95 | PnL: 0.04% | $-0.10 +2025-03-10 15:37:33,674 - INFO - OPENED SHORT at 2091.95 | Stop loss: 2102.43565 | Take profit: 2060.5319 +2025-03-10 15:37:33,714 - INFO - CLOSED short at 2097.8 | PnL: -0.28% | $-0.68 +2025-03-10 15:37:33,735 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.51585 | Take profit: 2068.4512999999997 +2025-03-10 15:37:34,435 - INFO - STOP LOSS hit for short at 2110.51585 | PnL: -0.50% | $-1.07 +2025-03-10 15:37:34,455 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.45025 | Take profit: 2079.1681 +2025-03-10 15:37:35,110 - INFO - STOP LOSS hit for short at 2121.45025 | PnL: -0.50% | $-1.06 +2025-03-10 15:37:35,133 - INFO - OPENED SHORT at 2121.2 | Stop loss: 2131.8318999999997 | Take profit: 2089.3431499999997 +2025-03-10 15:37:35,228 - INFO - STOP LOSS hit for short at 2131.8318999999997 | PnL: -0.50% | $-1.05 +2025-03-10 15:37:35,250 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.9672 | Take profit: 2104.17725 +2025-03-10 15:37:35,315 - INFO - CLOSED short at 2132.83 | PnL: 0.16% | $0.10 +2025-03-10 15:37:35,341 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4548499999996 | Take profit: 2095.8343 +2025-03-10 15:37:35,920 - INFO - CLOSED short at 2114.41 | PnL: 0.63% | $0.91 +2025-03-10 15:37:35,947 - INFO - OPENED SHORT at 2115.45 | Stop loss: 2126.0531499999997 | Take profit: 2083.6794 +2025-03-10 15:37:36,528 - INFO - STOP LOSS hit for short at 2126.0531499999997 | PnL: -0.50% | $-1.05 +2025-03-10 15:37:36,570 - INFO - OPENED SHORT at 2123.61 | Stop loss: 2134.2539500000003 | Take profit: 2091.717 +2025-03-10 15:37:37,342 - INFO - TAKE PROFIT hit for short at 2091.717 | PnL: 1.50% | $2.42 +2025-03-10 15:37:37,366 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5761500000003 | Take profit: 2068.5104 +2025-03-10 15:37:37,389 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 32.3% in downtrends | Avg Win=$0.64, Avg Loss=$-0.47 +2025-03-10 15:37:37,389 - INFO - Episode 6: Reward=55.48, Balance=$89.67, Win Rate=26.3%, Trades=57, Episode PnL=$-6.41, Total PnL=$-42.98, Max Drawdown=12.8%, Pred Accuracy=98.1% +2025-03-10 15:37:37,487 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.23035 | Take profit: 2031.9078 +2025-03-10 15:37:37,775 - INFO - CLOSED short at 2062.89 | PnL: 0.00% | $-0.20 +2025-03-10 15:37:37,775 - INFO - OPENED LONG at 2062.89 | Stop loss: 2052.54965 | Take profit: 2093.8722000000002 +2025-03-10 15:37:37,802 - INFO - CLOSED long at 2064.5 | PnL: 0.08% | $-0.04 +2025-03-10 15:37:37,803 - INFO - OPENED SHORT at 2064.5 | Stop loss: 2074.8484 | Take profit: 2033.49365 +2025-03-10 15:37:38,119 - INFO - CLOSED short at 2064.1 | PnL: 0.02% | $-0.16 +2025-03-10 15:37:38,144 - INFO - OPENED SHORT at 2065.36 | Stop loss: 2075.7127 | Take profit: 2034.34075 +2025-03-10 15:37:38,307 - INFO - CLOSED short at 2062.6 | PnL: 0.13% | $0.07 +2025-03-10 15:37:38,307 - INFO - OPENED LONG at 2062.6 | Stop loss: 2052.2610999999997 | Take profit: 2093.5778499999997 +2025-03-10 15:37:38,332 - INFO - CLOSED long at 2061.89 | PnL: -0.03% | $-0.26 +2025-03-10 15:37:38,332 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.2253499999997 | Take profit: 2030.9227999999998 +2025-03-10 15:37:39,124 - INFO - STOP LOSS hit for short at 2072.2253499999997 | PnL: -0.50% | $-1.18 +2025-03-10 15:37:39,151 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.4259500000003 | Take profit: 2046.8010000000002 +2025-03-10 15:37:39,384 - INFO - CLOSED short at 2069.03 | PnL: 0.43% | $0.64 +2025-03-10 15:37:39,384 - INFO - OPENED LONG at 2069.03 | Stop loss: 2058.65895 | Take profit: 2100.1043000000004 +2025-03-10 15:37:39,404 - INFO - CLOSED long at 2067.44 | PnL: -0.08% | $-0.35 +2025-03-10 15:37:39,405 - INFO - OPENED SHORT at 2067.44 | Stop loss: 2077.8031 | Take profit: 2036.38955 +2025-03-10 15:37:39,569 - INFO - CLOSED short at 2065.66 | PnL: 0.09% | $-0.03 +2025-03-10 15:37:39,592 - INFO - OPENED SHORT at 2063.95 | Stop loss: 2074.2956499999996 | Take profit: 2032.9518999999998 +2025-03-10 15:37:39,692 - INFO - CLOSED short at 2064.31 | PnL: -0.02% | $-0.23 +2025-03-10 15:37:39,693 - INFO - OPENED LONG at 2064.31 | Stop loss: 2053.9625499999997 | Take profit: 2095.3134999999997 +2025-03-10 15:37:39,714 - INFO - CLOSED long at 2065.5 | PnL: 0.06% | $-0.08 +2025-03-10 15:37:39,714 - INFO - OPENED SHORT at 2065.5 | Stop loss: 2075.8534 | Take profit: 2034.4786499999998 +2025-03-10 15:37:40,303 - INFO - STOP LOSS hit for short at 2075.8534 | PnL: -0.50% | $-1.17 +2025-03-10 15:37:40,330 - INFO - OPENED SHORT at 2075.61 | Stop loss: 2086.01395 | Take profit: 2044.4370000000001 +2025-03-10 15:37:40,698 - INFO - CLOSED short at 2065.7 | PnL: 0.48% | $0.72 +2025-03-10 15:37:40,721 - INFO - OPENED SHORT at 2065.8 | Stop loss: 2076.1549 | Take profit: 2034.7741500000002 +2025-03-10 15:37:41,745 - INFO - CLOSED short at 2070.41 | PnL: -0.22% | $-0.62 +2025-03-10 15:37:41,745 - INFO - OPENED LONG at 2070.41 | Stop loss: 2060.03205 | Take profit: 2101.5049999999997 +2025-03-10 15:37:41,766 - INFO - CLOSED long at 2073.49 | PnL: 0.15% | $0.09 +2025-03-10 15:37:41,766 - INFO - OPENED SHORT at 2073.49 | Stop loss: 2083.8833499999996 | Take profit: 2042.3487999999998 +2025-03-10 15:37:41,935 - INFO - STOP LOSS hit for short at 2083.8833499999996 | PnL: -0.50% | $-1.15 +2025-03-10 15:37:41,958 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.9683499999996 | Take profit: 2059.0937999999996 +2025-03-10 15:37:41,980 - INFO - STOP LOSS hit for short at 2100.9683499999996 | PnL: -0.50% | $-1.14 +2025-03-10 15:37:42,001 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3794 | Take profit: 2098.7006499999998 +2025-03-10 15:37:42,112 - INFO - STOP LOSS hit for short at 2141.3794 | PnL: -0.50% | $-1.13 +2025-03-10 15:37:42,135 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.0324 | Take profit: 2109.14165 +2025-03-10 15:37:42,494 - INFO - TAKE PROFIT hit for short at 2109.14165 | PnL: 1.50% | $2.60 +2025-03-10 15:37:42,520 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1789 | Take profit: 2078.90215 +2025-03-10 15:37:42,712 - INFO - CLOSED short at 2116.48 | PnL: -0.28% | $-0.72 +2025-03-10 15:37:42,736 - INFO - OPENED SHORT at 2114.8 | Stop loss: 2125.3999 | Take profit: 2083.03915 +2025-03-10 15:37:43,473 - INFO - TAKE PROFIT hit for short at 2083.03915 | PnL: 1.50% | $2.65 +2025-03-10 15:37:43,493 - INFO - OPENED SHORT at 2081.49 | Stop loss: 2091.9233499999996 | Take profit: 2050.2288 +2025-03-10 15:37:43,805 - INFO - CLOSED short at 2087.47 | PnL: -0.29% | $-0.75 +2025-03-10 15:37:43,805 - INFO - OPENED LONG at 2087.47 | Stop loss: 2077.00675 | Take profit: 2118.8208999999997 +2025-03-10 15:37:43,825 - INFO - CLOSED long at 2087.78 | PnL: 0.01% | $-0.16 +2025-03-10 15:37:43,826 - INFO - OPENED SHORT at 2087.78 | Stop loss: 2098.2448 | Take profit: 2056.42445 +2025-03-10 15:37:44,028 - INFO - STOP LOSS hit for short at 2098.2448 | PnL: -0.50% | $-1.16 +2025-03-10 15:37:44,053 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1740999999997 | Take profit: 2070.0765499999998 +2025-03-10 15:37:44,607 - INFO - STOP LOSS hit for short at 2112.1740999999997 | PnL: -0.50% | $-1.14 +2025-03-10 15:37:44,630 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.45025 | Take profit: 2079.1681 +2025-03-10 15:37:45,184 - INFO - STOP LOSS hit for short at 2121.45025 | PnL: -0.50% | $-1.13 +2025-03-10 15:37:45,206 - INFO - OPENED SHORT at 2121.2 | Stop loss: 2131.8318999999997 | Take profit: 2089.3431499999997 +2025-03-10 15:37:45,283 - INFO - STOP LOSS hit for short at 2131.8318999999997 | PnL: -0.50% | $-1.12 +2025-03-10 15:37:45,309 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.9672 | Take profit: 2104.17725 +2025-03-10 15:37:45,654 - INFO - CLOSED short at 2118.8 | PnL: 0.82% | $1.32 +2025-03-10 15:37:45,678 - INFO - OPENED SHORT at 2116.53 | Stop loss: 2127.1385500000006 | Take profit: 2084.7432000000003 +2025-03-10 15:37:46,140 - INFO - CLOSED short at 2114.71 | PnL: 0.09% | $-0.03 +2025-03-10 15:37:46,162 - INFO - OPENED SHORT at 2117.92 | Stop loss: 2128.5355 | Take profit: 2086.1123500000003 +2025-03-10 15:37:46,530 - INFO - CLOSED short at 2123.02 | PnL: -0.24% | $-0.63 +2025-03-10 15:37:46,553 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7313 | Take profit: 2093.16495 +2025-03-10 15:37:47,072 - INFO - CLOSED short at 2115.21 | PnL: 0.46% | $0.67 +2025-03-10 15:37:47,072 - INFO - OPENED LONG at 2115.21 | Stop loss: 2104.60805 | Take profit: 2146.977 +2025-03-10 15:37:47,097 - INFO - CLOSED long at 2114.1 | PnL: -0.05% | $-0.28 +2025-03-10 15:37:47,098 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.6964000000003 | Take profit: 2082.34965 +2025-03-10 15:37:47,143 - INFO - CLOSED short at 2114.32 | PnL: -0.01% | $-0.20 +2025-03-10 15:37:47,143 - INFO - OPENED LONG at 2114.32 | Stop loss: 2103.7225 | Take profit: 2146.0736500000003 +2025-03-10 15:37:47,169 - INFO - CLOSED long at 2114.57 | PnL: 0.01% | $-0.16 +2025-03-10 15:37:47,169 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.16875 | Take profit: 2082.8126 +2025-03-10 15:37:47,362 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 26.3% in downtrends | Avg Win=$1.10, Avg Loss=$-0.59 +2025-03-10 15:37:47,363 - INFO - Episode 7: Reward=76.58, Balance=$93.53, Win Rate=23.5%, Trades=34, Episode PnL=$-5.22, Total PnL=$-49.45, Max Drawdown=7.1%, Pred Accuracy=98.2% +2025-03-10 15:37:47,459 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.23035 | Take profit: 2031.9078 +2025-03-10 15:37:48,133 - INFO - CLOSED short at 2064.1 | PnL: -0.06% | $-0.31 +2025-03-10 15:37:48,156 - INFO - OPENED SHORT at 2065.36 | Stop loss: 2075.7127 | Take profit: 2034.34075 +2025-03-10 15:37:48,942 - INFO - CLOSED short at 2066.34 | PnL: -0.05% | $-0.29 +2025-03-10 15:37:48,943 - INFO - OPENED LONG at 2066.34 | Stop loss: 2055.9824000000003 | Take profit: 2097.37395 +2025-03-10 15:37:48,963 - INFO - CLOSED long at 2066.79 | PnL: 0.02% | $-0.15 +2025-03-10 15:37:48,964 - INFO - OPENED SHORT at 2066.79 | Stop loss: 2077.14985 | Take profit: 2035.7493 +2025-03-10 15:37:49,126 - INFO - STOP LOSS hit for short at 2077.14985 | PnL: -0.50% | $-1.18 +2025-03-10 15:37:49,148 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.41095 | Take profit: 2043.8460000000002 +2025-03-10 15:37:49,318 - INFO - CLOSED short at 2068.39 | PnL: 0.32% | $0.42 +2025-03-10 15:37:49,341 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.0643499999996 | Take profit: 2038.6058 +2025-03-10 15:37:51,258 - INFO - CLOSED short at 2058.3 | PnL: 0.55% | $0.88 +2025-03-10 15:37:51,258 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9826 | Take profit: 2089.21335 +2025-03-10 15:37:51,281 - INFO - CLOSED long at 2056.85 | PnL: -0.07% | $-0.33 +2025-03-10 15:37:51,281 - INFO - OPENED SHORT at 2056.85 | Stop loss: 2067.16015 | Take profit: 2025.9584 +2025-03-10 15:37:51,469 - INFO - STOP LOSS hit for short at 2067.16015 | PnL: -0.50% | $-1.18 +2025-03-10 15:37:51,488 - INFO - OPENED SHORT at 2067.49 | Stop loss: 2077.85335 | Take profit: 2036.4387999999997 +2025-03-10 15:37:51,776 - INFO - CLOSED short at 2073.49 | PnL: -0.29% | $-0.75 +2025-03-10 15:37:51,776 - INFO - OPENED LONG at 2073.49 | Stop loss: 2063.09665 | Take profit: 2104.6312 +2025-03-10 15:37:51,798 - INFO - CLOSED long at 2074.05 | PnL: 0.03% | $-0.14 +2025-03-10 15:37:51,798 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4461499999998 | Take profit: 2042.9004000000002 +2025-03-10 15:37:51,947 - INFO - STOP LOSS hit for short at 2084.4461499999998 | PnL: -0.50% | $-1.15 +2025-03-10 15:37:51,994 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.561 | Take profit: 2071.43585 +2025-03-10 15:37:52,016 - INFO - STOP LOSS hit for short at 2113.561 | PnL: -0.50% | $-1.14 +2025-03-10 15:37:52,043 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2636 | Take profit: 2107.40805 +2025-03-10 15:37:52,354 - INFO - CLOSED short at 2117.24 | PnL: 1.04% | $1.76 +2025-03-10 15:37:52,355 - INFO - OPENED LONG at 2117.24 | Stop loss: 2106.6278999999995 | Take profit: 2149.03745 +2025-03-10 15:37:52,376 - INFO - CLOSED long at 2119.93 | PnL: 0.13% | $0.05 +2025-03-10 15:37:52,376 - INFO - OPENED SHORT at 2119.93 | Stop loss: 2130.55555 | Take profit: 2088.0922 +2025-03-10 15:37:53,449 - INFO - TAKE PROFIT hit for short at 2088.0922 | PnL: 1.50% | $2.67 +2025-03-10 15:37:53,478 - INFO - OPENED SHORT at 2088.44 | Stop loss: 2098.9081 | Take profit: 2057.07455 +2025-03-10 15:37:54,199 - INFO - STOP LOSS hit for short at 2098.9081 | PnL: -0.50% | $-1.18 +2025-03-10 15:37:54,222 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1740999999997 | Take profit: 2070.0765499999998 +2025-03-10 15:37:54,588 - INFO - CLOSED short at 2104.4 | PnL: -0.13% | $-0.45 +2025-03-10 15:37:54,589 - INFO - OPENED LONG at 2104.4 | Stop loss: 2093.8521 | Take profit: 2136.0048500000003 +2025-03-10 15:37:54,612 - INFO - CLOSED long at 2105.21 | PnL: 0.04% | $-0.12 +2025-03-10 15:37:54,612 - INFO - OPENED SHORT at 2105.21 | Stop loss: 2115.76195 | Take profit: 2073.5930000000003 +2025-03-10 15:37:54,718 - INFO - CLOSED short at 2103.41 | PnL: 0.09% | $-0.03 +2025-03-10 15:37:54,747 - INFO - OPENED SHORT at 2104.73 | Stop loss: 2115.2795499999997 | Take profit: 2073.1202 +2025-03-10 15:37:55,167 - INFO - STOP LOSS hit for short at 2115.2795499999997 | PnL: -0.50% | $-1.16 +2025-03-10 15:37:55,191 - INFO - OPENED SHORT at 2117.39 | Stop loss: 2128.00285 | Take profit: 2085.5903 +2025-03-10 15:37:55,520 - INFO - STOP LOSS hit for short at 2128.00285 | PnL: -0.50% | $-1.14 +2025-03-10 15:37:55,546 - INFO - OPENED SHORT at 2135.86 | Stop loss: 2146.5652 | Take profit: 2103.78325 +2025-03-10 15:37:55,837 - INFO - CLOSED short at 2123.37 | PnL: 0.58% | $0.91 +2025-03-10 15:37:55,837 - INFO - OPENED LONG at 2123.37 | Stop loss: 2112.72725 | Take profit: 2155.2594 +2025-03-10 15:37:55,857 - INFO - CLOSED long at 2121.73 | PnL: -0.08% | $-0.34 +2025-03-10 15:37:55,857 - INFO - OPENED SHORT at 2121.73 | Stop loss: 2132.3645500000002 | Take profit: 2089.8652 +2025-03-10 15:37:56,376 - INFO - CLOSED short at 2110.34 | PnL: 0.54% | $0.83 +2025-03-10 15:37:56,376 - INFO - OPENED LONG at 2110.34 | Stop loss: 2099.7624 | Take profit: 2142.03395 +2025-03-10 15:37:56,397 - INFO - CLOSED long at 2113.34 | PnL: 0.14% | $0.08 +2025-03-10 15:37:56,397 - INFO - OPENED SHORT at 2113.34 | Stop loss: 2123.9326 | Take profit: 2081.60105 +2025-03-10 15:37:56,590 - INFO - STOP LOSS hit for short at 2123.9326 | PnL: -0.50% | $-1.15 +2025-03-10 15:37:56,611 - INFO - OPENED SHORT at 2121.43 | Stop loss: 2132.0630499999997 | Take profit: 2089.5697 +2025-03-10 15:37:57,569 - INFO - CLOSED short at 2100.05 | PnL: 1.01% | $1.71 +2025-03-10 15:37:57,569 - INFO - OPENED LONG at 2100.05 | Stop loss: 2089.52385 | Take profit: 2131.5896000000002 +2025-03-10 15:37:57,592 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 35.3% in downtrends | Avg Win=$1.04, Avg Loss=$-0.68 +2025-03-10 15:37:57,593 - INFO - Episode 8: Reward=90.33, Balance=$97.13, Win Rate=33.3%, Trades=27, Episode PnL=$-1.92, Total PnL=$-52.32, Max Drawdown=5.3%, Pred Accuracy=98.4% +2025-03-10 15:37:57,684 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.23035 | Take profit: 2031.9078 +2025-03-10 15:37:57,828 - INFO - CLOSED short at 2064.96 | PnL: -0.10% | $-0.40 +2025-03-10 15:37:57,829 - INFO - OPENED LONG at 2064.96 | Stop loss: 2054.6093 | Take profit: 2095.97325 +2025-03-10 15:37:57,852 - INFO - CLOSED long at 2066.24 | PnL: 0.06% | $-0.07 +2025-03-10 15:37:57,853 - INFO - OPENED SHORT at 2066.24 | Stop loss: 2076.5970999999995 | Take profit: 2035.2075499999996 +2025-03-10 15:37:57,923 - INFO - CLOSED short at 2066.09 | PnL: 0.01% | $-0.18 +2025-03-10 15:37:57,924 - INFO - OPENED LONG at 2066.09 | Stop loss: 2055.73365 | Take profit: 2097.1202 +2025-03-10 15:37:57,950 - INFO - CLOSED long at 2064.45 | PnL: -0.08% | $-0.35 +2025-03-10 15:37:57,951 - INFO - OPENED SHORT at 2064.45 | Stop loss: 2074.7981499999996 | Take profit: 2033.4443999999996 +2025-03-10 15:37:58,149 - INFO - CLOSED short at 2058.89 | PnL: 0.27% | $0.33 +2025-03-10 15:37:58,149 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.56965 | Take profit: 2089.8122 +2025-03-10 15:37:58,173 - INFO - CLOSED long at 2059.3 | PnL: 0.02% | $-0.16 +2025-03-10 15:37:58,173 - INFO - OPENED SHORT at 2059.3 | Stop loss: 2069.6224 | Take profit: 2028.3716500000003 +2025-03-10 15:37:58,519 - INFO - CLOSED short at 2062.6 | PnL: -0.16% | $-0.51 +2025-03-10 15:37:58,540 - INFO - OPENED SHORT at 2061.89 | Stop loss: 2072.2253499999997 | Take profit: 2030.9227999999998 +2025-03-10 15:37:58,705 - INFO - CLOSED short at 2059.96 | PnL: 0.09% | $-0.01 +2025-03-10 15:37:58,726 - INFO - OPENED SHORT at 2059.46 | Stop loss: 2069.7832 | Take profit: 2028.52925 +2025-03-10 15:37:58,786 - INFO - CLOSED short at 2056.28 | PnL: 0.15% | $0.11 +2025-03-10 15:37:58,809 - INFO - OPENED SHORT at 2055.6 | Stop loss: 2065.9039 | Take profit: 2024.72715 +2025-03-10 15:37:59,060 - INFO - STOP LOSS hit for short at 2065.9039 | PnL: -0.50% | $-1.17 +2025-03-10 15:37:59,080 - INFO - OPENED LONG at 2066.01 | Stop loss: 2055.65405 | Take profit: 2097.039 +2025-03-10 15:37:59,103 - INFO - CLOSED long at 2063.9 | PnL: -0.10% | $-0.39 +2025-03-10 15:37:59,103 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.2454000000002 | Take profit: 2032.9026500000002 +2025-03-10 15:37:59,336 - INFO - STOP LOSS hit for short at 2074.2454000000002 | PnL: -0.50% | $-1.15 +2025-03-10 15:37:59,358 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.4259500000003 | Take profit: 2046.8010000000002 +2025-03-10 15:38:00,235 - INFO - CLOSED short at 2070.7 | PnL: 0.35% | $0.48 +2025-03-10 15:38:00,235 - INFO - OPENED LONG at 2070.7 | Stop loss: 2060.3206 | Take profit: 2101.79935 +2025-03-10 15:38:00,259 - INFO - CLOSED long at 2070.8 | PnL: 0.00% | $-0.18 +2025-03-10 15:38:00,281 - INFO - OPENED SHORT at 2070.35 | Stop loss: 2080.72765 | Take profit: 2039.2558999999999 +2025-03-10 15:38:01,203 - INFO - CLOSED short at 2064.5 | PnL: 0.28% | $0.35 +2025-03-10 15:38:01,228 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6875499999996 | Take profit: 2035.2962 +2025-03-10 15:38:01,517 - INFO - CLOSED short at 2058.3 | PnL: 0.39% | $0.55 +2025-03-10 15:38:01,518 - INFO - OPENED LONG at 2058.3 | Stop loss: 2047.9826 | Take profit: 2089.21335 +2025-03-10 15:38:01,549 - INFO - CLOSED long at 2056.85 | PnL: -0.07% | $-0.33 +2025-03-10 15:38:01,550 - INFO - OPENED SHORT at 2056.85 | Stop loss: 2067.16015 | Take profit: 2025.9584 +2025-03-10 15:38:01,804 - INFO - STOP LOSS hit for short at 2067.16015 | PnL: -0.50% | $-1.15 +2025-03-10 15:38:01,843 - INFO - OPENED SHORT at 2067.49 | Stop loss: 2077.85335 | Take profit: 2036.4387999999997 +2025-03-10 15:38:01,872 - INFO - CLOSED short at 2066.59 | PnL: 0.04% | $-0.11 +2025-03-10 15:38:01,900 - INFO - OPENED SHORT at 2064.08 | Stop loss: 2074.4263 | Take profit: 2033.0799499999998 +2025-03-10 15:38:02,155 - INFO - CLOSED short at 2070.41 | PnL: -0.31% | $-0.77 +2025-03-10 15:38:02,180 - INFO - OPENED SHORT at 2073.49 | Stop loss: 2083.8833499999996 | Take profit: 2042.3487999999998 +2025-03-10 15:38:02,350 - INFO - STOP LOSS hit for short at 2083.8833499999996 | PnL: -0.50% | $-1.13 +2025-03-10 15:38:02,379 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.9683499999996 | Take profit: 2059.0937999999996 +2025-03-10 15:38:02,401 - INFO - STOP LOSS hit for short at 2100.9683499999996 | PnL: -0.50% | $-1.11 +2025-03-10 15:38:02,424 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3794 | Take profit: 2098.7006499999998 +2025-03-10 15:38:02,528 - INFO - STOP LOSS hit for short at 2141.3794 | PnL: -0.50% | $-1.10 +2025-03-10 15:38:02,551 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.0324 | Take profit: 2109.14165 +2025-03-10 15:38:02,872 - INFO - TAKE PROFIT hit for short at 2109.14165 | PnL: 1.50% | $2.54 +2025-03-10 15:38:02,895 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1789 | Take profit: 2078.90215 +2025-03-10 15:38:03,226 - INFO - CLOSED short at 2090.0 | PnL: 0.98% | $1.63 +2025-03-10 15:38:03,247 - INFO - OPENED SHORT at 2099.53 | Stop loss: 2110.05355 | Take profit: 2067.9982000000005 +2025-03-10 15:38:03,885 - INFO - CLOSED short at 2085.09 | PnL: 0.69% | $1.11 +2025-03-10 15:38:03,908 - INFO - OPENED SHORT at 2083.59 | Stop loss: 2094.0338500000003 | Take profit: 2052.2973 +2025-03-10 15:38:04,341 - INFO - STOP LOSS hit for short at 2094.0338500000003 | PnL: -0.50% | $-1.15 +2025-03-10 15:38:04,370 - INFO - OPENED SHORT at 2097.8 | Stop loss: 2108.3149000000003 | Take profit: 2066.29415 +2025-03-10 15:38:04,390 - INFO - CLOSED short at 2099.99 | PnL: -0.10% | $-0.39 +2025-03-10 15:38:04,412 - INFO - OPENED SHORT at 2101.64 | Stop loss: 2112.1740999999997 | Take profit: 2070.0765499999998 +2025-03-10 15:38:04,953 - INFO - STOP LOSS hit for short at 2112.1740999999997 | PnL: -0.50% | $-1.13 +2025-03-10 15:38:04,982 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.45025 | Take profit: 2079.1681 +2025-03-10 15:38:05,519 - INFO - STOP LOSS hit for short at 2121.45025 | PnL: -0.50% | $-1.12 +2025-03-10 15:38:05,540 - INFO - OPENED SHORT at 2121.2 | Stop loss: 2131.8318999999997 | Take profit: 2089.3431499999997 +2025-03-10 15:38:05,624 - INFO - STOP LOSS hit for short at 2131.8318999999997 | PnL: -0.50% | $-1.11 +2025-03-10 15:38:05,646 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.9672 | Take profit: 2104.17725 +2025-03-10 15:38:06,928 - INFO - CLOSED short at 2123.02 | PnL: 0.62% | $0.94 +2025-03-10 15:38:06,929 - INFO - OPENED LONG at 2123.02 | Stop loss: 2112.379 | Take profit: 2154.90415 +2025-03-10 15:38:06,951 - INFO - CLOSED long at 2125.08 | PnL: 0.10% | $-0.01 +2025-03-10 15:38:06,951 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7313 | Take profit: 2093.16495 +2025-03-10 15:38:07,443 - INFO - CLOSED short at 2116.06 | PnL: 0.42% | $0.60 +2025-03-10 15:38:07,469 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.8119500000003 | Take profit: 2083.443 +2025-03-10 15:38:07,744 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 29.4% in downtrends | Avg Win=$0.86, Avg Loss=$-0.63 +2025-03-10 15:38:07,745 - INFO - Episode 9: Reward=85.50, Balance=$93.45, Win Rate=29.4%, Trades=34, Episode PnL=$-5.24, Total PnL=$-58.87, Max Drawdown=8.5%, Pred Accuracy=98.5% +2025-03-10 15:38:08,530 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.23035 | Take profit: 2031.9078 +2025-03-10 15:38:09,266 - INFO - CLOSED short at 2063.39 | PnL: -0.02% | $-0.25 +2025-03-10 15:38:09,266 - INFO - OPENED LONG at 2063.39 | Stop loss: 2053.04715 | Take profit: 2094.3797 +2025-03-10 15:38:09,291 - INFO - CLOSED long at 2064.79 | PnL: 0.07% | $-0.06 +2025-03-10 15:38:09,291 - INFO - OPENED SHORT at 2064.79 | Stop loss: 2075.13985 | Take profit: 2033.7793 +2025-03-10 15:38:10,123 - INFO - CLOSED short at 2066.79 | PnL: -0.10% | $-0.39 +2025-03-10 15:38:10,125 - INFO - OPENED LONG at 2066.79 | Stop loss: 2056.43015 | Take profit: 2097.8307 +2025-03-10 15:38:10,149 - INFO - CLOSED long at 2067.33 | PnL: 0.03% | $-0.14 +2025-03-10 15:38:10,149 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.69255 | Take profit: 2036.2812000000001 +2025-03-10 15:38:10,284 - INFO - STOP LOSS hit for short at 2077.69255 | PnL: -0.50% | $-1.18 +2025-03-10 15:38:10,305 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.41095 | Take profit: 2043.8460000000002 +2025-03-10 15:38:11,044 - INFO - CLOSED short at 2066.5 | PnL: 0.41% | $0.60 +2025-03-10 15:38:11,075 - INFO - OPENED SHORT at 2068.59 | Stop loss: 2078.9588500000004 | Take profit: 2037.5223 +2025-03-10 15:38:11,679 - INFO - CLOSED short at 2075.61 | PnL: -0.34% | $-0.86 +2025-03-10 15:38:11,680 - INFO - OPENED LONG at 2075.61 | Stop loss: 2065.2060500000002 | Take profit: 2106.7830000000004 +2025-03-10 15:38:11,702 - INFO - CLOSED long at 2074.0 | PnL: -0.08% | $-0.34 +2025-03-10 15:38:11,702 - INFO - OPENED SHORT at 2074.0 | Stop loss: 2084.3959 | Take profit: 2042.85115 +2025-03-10 15:38:12,472 - INFO - CLOSED short at 2056.77 | PnL: 0.83% | $1.41 +2025-03-10 15:38:12,472 - INFO - OPENED LONG at 2056.77 | Stop loss: 2046.46025 | Take profit: 2087.6603999999998 +2025-03-10 15:38:12,496 - INFO - CLOSED long at 2053.01 | PnL: -0.18% | $-0.55 +2025-03-10 15:38:12,496 - INFO - OPENED SHORT at 2053.01 | Stop loss: 2063.3009500000003 | Take profit: 2022.1760000000002 +2025-03-10 15:38:12,665 - INFO - CLOSED short at 2062.83 | PnL: -0.48% | $-1.12 +2025-03-10 15:38:12,685 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.2454000000002 | Take profit: 2032.9026500000002 +2025-03-10 15:38:13,213 - INFO - STOP LOSS hit for short at 2074.2454000000002 | PnL: -0.50% | $-1.15 +2025-03-10 15:38:13,236 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.4863 | Take profit: 2044.89995 +2025-03-10 15:38:13,306 - INFO - STOP LOSS hit for short at 2086.4863 | PnL: -0.50% | $-1.14 +2025-03-10 15:38:13,329 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.561 | Take profit: 2071.43585 +2025-03-10 15:38:13,355 - INFO - STOP LOSS hit for short at 2113.561 | PnL: -0.50% | $-1.13 +2025-03-10 15:38:13,387 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2636 | Take profit: 2107.40805 +2025-03-10 15:38:13,714 - INFO - CLOSED short at 2117.24 | PnL: 1.04% | $1.74 +2025-03-10 15:38:13,715 - INFO - OPENED LONG at 2117.24 | Stop loss: 2106.6278999999995 | Take profit: 2149.03745 +2025-03-10 15:38:13,737 - INFO - CLOSED long at 2119.93 | PnL: 0.13% | $0.05 +2025-03-10 15:38:13,738 - INFO - OPENED SHORT at 2119.93 | Stop loss: 2130.55555 | Take profit: 2088.0922 +2025-03-10 15:38:14,146 - INFO - CLOSED short at 2108.71 | PnL: 0.53% | $0.81 +2025-03-10 15:38:14,169 - INFO - OPENED SHORT at 2106.49 | Stop loss: 2117.04835 | Take profit: 2074.8538 +2025-03-10 15:38:14,477 - INFO - CLOSED short at 2100.74 | PnL: 0.27% | $0.33 +2025-03-10 15:38:14,500 - INFO - OPENED SHORT at 2103.86 | Stop loss: 2114.4052 | Take profit: 2072.2632500000004 +2025-03-10 15:38:15,418 - INFO - CLOSED short at 2097.8 | PnL: 0.29% | $0.36 +2025-03-10 15:38:15,419 - INFO - OPENED LONG at 2097.8 | Stop loss: 2087.2851 | Take profit: 2129.30585 +2025-03-10 15:38:15,441 - INFO - CLOSED long at 2099.99 | PnL: 0.10% | $0.01 +2025-03-10 15:38:15,441 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.51585 | Take profit: 2068.4512999999997 +2025-03-10 15:38:15,830 - INFO - CLOSED short at 2100.0 | PnL: -0.00% | $-0.19 +2025-03-10 15:38:15,856 - INFO - OPENED SHORT at 2102.7 | Stop loss: 2113.2393999999995 | Take profit: 2071.12065 +2025-03-10 15:38:16,069 - INFO - STOP LOSS hit for short at 2113.2393999999995 | PnL: -0.50% | $-1.15 +2025-03-10 15:38:16,092 - INFO - OPENED SHORT at 2113.0 | Stop loss: 2123.5909 | Take profit: 2081.26615 +2025-03-10 15:38:16,643 - INFO - STOP LOSS hit for short at 2123.5909 | PnL: -0.50% | $-1.14 +2025-03-10 15:38:16,669 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4548499999996 | Take profit: 2095.8343 +2025-03-10 15:38:17,217 - INFO - CLOSED short at 2119.48 | PnL: 0.39% | $0.54 +2025-03-10 15:38:17,244 - INFO - OPENED SHORT at 2121.53 | Stop loss: 2132.16355 | Take profit: 2089.6682 +2025-03-10 15:38:17,481 - INFO - CLOSED short at 2110.66 | PnL: 0.51% | $0.77 +2025-03-10 15:38:17,482 - INFO - OPENED LONG at 2110.66 | Stop loss: 2100.0807999999997 | Take profit: 2142.35875 +2025-03-10 15:38:17,505 - INFO - CLOSED long at 2110.3 | PnL: -0.02% | $-0.22 +2025-03-10 15:38:17,506 - INFO - OPENED SHORT at 2110.3 | Stop loss: 2120.8774000000003 | Take profit: 2078.60665 +2025-03-10 15:38:17,781 - INFO - STOP LOSS hit for short at 2120.8774000000003 | PnL: -0.50% | $-1.14 +2025-03-10 15:38:17,803 - INFO - OPENED SHORT at 2122.53 | Stop loss: 2133.1685500000003 | Take profit: 2090.6532 +2025-03-10 15:38:18,284 - INFO - CLOSED short at 2122.01 | PnL: 0.02% | $-0.14 +2025-03-10 15:38:18,310 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.8067499999997 | Take profit: 2090.2986 +2025-03-10 15:38:18,755 - INFO - CLOSED short at 2114.32 | PnL: 0.37% | $0.50 +2025-03-10 15:38:18,775 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.16875 | Take profit: 2082.8126 +2025-03-10 15:38:18,961 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 28.6% in downtrends | Avg Win=$0.65, Avg Loss=$-0.68 +2025-03-10 15:38:18,962 - INFO - Episode 10: Reward=90.88, Balance=$94.84, Win Rate=37.9%, Trades=29, Episode PnL=$-3.89, Total PnL=$-64.03, Max Drawdown=6.3%, Pred Accuracy=98.7% +2025-03-10 15:38:19,104 - INFO - Model saved to checkpoints/trading_agent_episode_10.pt +2025-03-10 15:38:19,105 - INFO - Checkpoint saved at episode 10 +2025-03-10 15:38:20,187 - INFO - Visualization saved for episode 10 +2025-03-10 15:38:21,706 - INFO - Visualization saved for episode 10 +2025-03-10 15:38:21,956 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.23035 | Take profit: 2031.9078 +2025-03-10 15:38:22,118 - INFO - CLOSED short at 2067.1 | PnL: -0.20% | $-0.60 +2025-03-10 15:38:22,119 - INFO - OPENED LONG at 2067.1 | Stop loss: 2056.7386 | Take profit: 2098.14535 +2025-03-10 15:38:22,139 - INFO - CLOSED long at 2065.54 | PnL: -0.08% | $-0.34 +2025-03-10 15:38:22,167 - INFO - OPENED SHORT at 2066.09 | Stop loss: 2076.44635 | Take profit: 2035.0598000000002 +2025-03-10 15:38:22,400 - INFO - CLOSED short at 2060.31 | PnL: 0.28% | $0.35 +2025-03-10 15:38:22,401 - INFO - OPENED LONG at 2060.31 | Stop loss: 2049.9825499999997 | Take profit: 2091.2535 +2025-03-10 15:38:22,421 - INFO - CLOSED long at 2061.8 | PnL: 0.07% | $-0.05 +2025-03-10 15:38:22,421 - INFO - OPENED SHORT at 2061.8 | Stop loss: 2072.1349 | Take profit: 2030.8341500000001 +2025-03-10 15:38:22,626 - INFO - CLOSED short at 2064.79 | PnL: -0.15% | $-0.48 +2025-03-10 15:38:22,627 - INFO - OPENED LONG at 2064.79 | Stop loss: 2054.44015 | Take profit: 2095.8007 +2025-03-10 15:38:22,648 - INFO - CLOSED long at 2065.89 | PnL: 0.05% | $-0.09 +2025-03-10 15:38:22,648 - INFO - OPENED SHORT at 2065.89 | Stop loss: 2076.24535 | Take profit: 2034.8627999999999 +2025-03-10 15:38:23,133 - INFO - CLOSED short at 2061.66 | PnL: 0.20% | $0.20 +2025-03-10 15:38:23,157 - INFO - OPENED SHORT at 2061.5 | Stop loss: 2071.8334 | Take profit: 2030.53865 +2025-03-10 15:38:23,321 - INFO - CLOSED short at 2064.49 | PnL: -0.15% | $-0.48 +2025-03-10 15:38:23,341 - INFO - OPENED SHORT at 2066.33 | Stop loss: 2076.6875499999996 | Take profit: 2035.2962 +2025-03-10 15:38:23,423 - INFO - CLOSED short at 2067.01 | PnL: -0.03% | $-0.26 +2025-03-10 15:38:23,444 - INFO - OPENED SHORT at 2065.69 | Stop loss: 2076.0443499999997 | Take profit: 2034.6658 +2025-03-10 15:38:23,530 - INFO - STOP LOSS hit for short at 2076.0443499999997 | PnL: -0.50% | $-1.17 +2025-03-10 15:38:23,550 - INFO - OPENED SHORT at 2075.01 | Stop loss: 2085.41095 | Take profit: 2043.8460000000002 +2025-03-10 15:38:25,533 - INFO - CLOSED short at 2057.11 | PnL: 0.86% | $1.46 +2025-03-10 15:38:25,533 - INFO - OPENED LONG at 2057.11 | Stop loss: 2046.7985500000002 | Take profit: 2088.0055 +2025-03-10 15:38:25,554 - INFO - CLOSED long at 2057.89 | PnL: 0.04% | $-0.12 +2025-03-10 15:38:25,554 - INFO - OPENED SHORT at 2057.89 | Stop loss: 2068.2053499999997 | Take profit: 2026.9827999999998 +2025-03-10 15:38:25,692 - INFO - STOP LOSS hit for short at 2068.2053499999997 | PnL: -0.50% | $-1.17 +2025-03-10 15:38:25,711 - INFO - OPENED SHORT at 2067.49 | Stop loss: 2077.85335 | Take profit: 2036.4387999999997 +2025-03-10 15:38:25,769 - INFO - CLOSED short at 2061.21 | PnL: 0.30% | $0.39 +2025-03-10 15:38:25,769 - INFO - OPENED LONG at 2061.21 | Stop loss: 2050.87805 | Take profit: 2092.167 +2025-03-10 15:38:25,789 - INFO - CLOSED long at 2059.9 | PnL: -0.06% | $-0.32 +2025-03-10 15:38:25,789 - INFO - OPENED SHORT at 2059.9 | Stop loss: 2070.2254000000003 | Take profit: 2028.9626500000002 +2025-03-10 15:38:25,890 - INFO - STOP LOSS hit for short at 2070.2254000000003 | PnL: -0.50% | $-1.16 +2025-03-10 15:38:25,910 - INFO - OPENED SHORT at 2070.24 | Stop loss: 2080.6171 | Take profit: 2039.14755 +2025-03-10 15:38:26,149 - INFO - STOP LOSS hit for short at 2080.6171 | PnL: -0.50% | $-1.14 +2025-03-10 15:38:26,173 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.9683499999996 | Take profit: 2059.0937999999996 +2025-03-10 15:38:26,194 - INFO - STOP LOSS hit for short at 2100.9683499999996 | PnL: -0.50% | $-1.13 +2025-03-10 15:38:26,219 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3794 | Take profit: 2098.7006499999998 +2025-03-10 15:38:26,322 - INFO - STOP LOSS hit for short at 2141.3794 | PnL: -0.50% | $-1.12 +2025-03-10 15:38:26,344 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.0324 | Take profit: 2109.14165 +2025-03-10 15:38:26,658 - INFO - TAKE PROFIT hit for short at 2109.14165 | PnL: 1.50% | $2.57 +2025-03-10 15:38:26,678 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1789 | Take profit: 2078.90215 +2025-03-10 15:38:27,468 - INFO - CLOSED short at 2088.35 | PnL: 1.05% | $1.80 +2025-03-10 15:38:27,468 - INFO - OPENED LONG at 2088.35 | Stop loss: 2077.88235 | Take profit: 2119.7141 +2025-03-10 15:38:27,489 - INFO - CLOSED long at 2083.28 | PnL: -0.24% | $-0.66 +2025-03-10 15:38:27,489 - INFO - OPENED SHORT at 2083.28 | Stop loss: 2093.7223000000004 | Take profit: 2051.99195 +2025-03-10 15:38:28,070 - INFO - STOP LOSS hit for short at 2093.7223000000004 | PnL: -0.50% | $-1.15 +2025-03-10 15:38:28,092 - INFO - OPENED SHORT at 2097.8 | Stop loss: 2108.3149000000003 | Take profit: 2066.29415 +2025-03-10 15:38:28,524 - INFO - CLOSED short at 2100.0 | PnL: -0.10% | $-0.39 +2025-03-10 15:38:28,525 - INFO - OPENED LONG at 2100.0 | Stop loss: 2089.4741 | Take profit: 2131.53885 +2025-03-10 15:38:28,547 - INFO - CLOSED long at 2102.7 | PnL: 0.13% | $0.05 +2025-03-10 15:38:28,548 - INFO - OPENED SHORT at 2102.7 | Stop loss: 2113.2393999999995 | Take profit: 2071.12065 +2025-03-10 15:38:28,747 - INFO - STOP LOSS hit for short at 2113.2393999999995 | PnL: -0.50% | $-1.13 +2025-03-10 15:38:28,772 - INFO - OPENED SHORT at 2113.0 | Stop loss: 2123.5909 | Take profit: 2081.26615 +2025-03-10 15:38:29,150 - INFO - CLOSED short at 2117.6 | PnL: -0.22% | $-0.59 +2025-03-10 15:38:29,150 - INFO - OPENED LONG at 2117.6 | Stop loss: 2106.9861 | Take profit: 2149.40285 +2025-03-10 15:38:29,176 - INFO - CLOSED long at 2115.21 | PnL: -0.11% | $-0.39 +2025-03-10 15:38:29,176 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.8119500000003 | Take profit: 2083.443 +2025-03-10 15:38:29,361 - INFO - STOP LOSS hit for short at 2125.8119500000003 | PnL: -0.50% | $-1.10 +2025-03-10 15:38:29,382 - INFO - OPENED SHORT at 2129.3 | Stop loss: 2139.9724000000006 | Take profit: 2097.3216500000003 +2025-03-10 15:38:30,744 - INFO - CLOSED short at 2125.08 | PnL: 0.20% | $0.18 +2025-03-10 15:38:30,768 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.4247499999997 | Take profit: 2093.8446 +2025-03-10 15:38:31,454 - INFO - TAKE PROFIT hit for short at 2093.8446 | PnL: 1.50% | $2.55 +2025-03-10 15:38:31,479 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5761500000003 | Take profit: 2068.5104 +2025-03-10 15:38:31,496 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 31.6% in downtrends | Avg Win=$1.06, Avg Loss=$-0.68 +2025-03-10 15:38:31,497 - INFO - Episode 11: Reward=82.84, Balance=$94.53, Win Rate=29.0%, Trades=31, Episode PnL=$-3.89, Total PnL=$-69.50, Max Drawdown=8.2%, Pred Accuracy=99.1% +2025-03-10 15:38:31,583 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.23035 | Take profit: 2031.9078 +2025-03-10 15:38:32,635 - INFO - CLOSED short at 2054.83 | PnL: 0.39% | $0.57 +2025-03-10 15:38:32,654 - INFO - OPENED LONG at 2056.71 | Stop loss: 2046.40055 | Take profit: 2087.5995000000003 +2025-03-10 15:38:32,681 - INFO - CLOSED long at 2058.15 | PnL: 0.07% | $-0.06 +2025-03-10 15:38:32,681 - INFO - OPENED SHORT at 2058.15 | Stop loss: 2068.46665 | Take profit: 2027.2389 +2025-03-10 15:38:33,032 - INFO - STOP LOSS hit for short at 2068.46665 | PnL: -0.50% | $-1.19 +2025-03-10 15:38:33,059 - INFO - OPENED SHORT at 2072.0 | Stop loss: 2082.3859 | Take profit: 2040.8811500000002 +2025-03-10 15:38:33,253 - INFO - CLOSED short at 2068.15 | PnL: 0.19% | $0.17 +2025-03-10 15:38:33,275 - INFO - OPENED SHORT at 2068.39 | Stop loss: 2078.75785 | Take profit: 2037.3253 +2025-03-10 15:38:33,413 - INFO - CLOSED short at 2069.87 | PnL: -0.07% | $-0.34 +2025-03-10 15:38:33,413 - INFO - OPENED LONG at 2069.87 | Stop loss: 2059.49475 | Take profit: 2100.9568999999997 +2025-03-10 15:38:33,433 - INFO - CLOSED long at 2067.33 | PnL: -0.12% | $-0.44 +2025-03-10 15:38:33,433 - INFO - OPENED SHORT at 2067.33 | Stop loss: 2077.69255 | Take profit: 2036.2812000000001 +2025-03-10 15:38:33,761 - INFO - CLOSED short at 2071.59 | PnL: -0.21% | $-0.60 +2025-03-10 15:38:33,762 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.20615 | Take profit: 2102.7027000000003 +2025-03-10 15:38:33,783 - INFO - CLOSED long at 2070.2 | PnL: -0.07% | $-0.32 +2025-03-10 15:38:33,783 - INFO - OPENED SHORT at 2070.2 | Stop loss: 2080.5768999999996 | Take profit: 2039.1081499999998 +2025-03-10 15:38:34,226 - INFO - CLOSED short at 2075.61 | PnL: -0.26% | $-0.70 +2025-03-10 15:38:34,227 - INFO - OPENED LONG at 2075.61 | Stop loss: 2065.2060500000002 | Take profit: 2106.7830000000004 +2025-03-10 15:38:34,252 - INFO - CLOSED long at 2074.0 | PnL: -0.08% | $-0.34 +2025-03-10 15:38:34,252 - INFO - OPENED SHORT at 2074.0 | Stop loss: 2084.3959 | Take profit: 2042.85115 +2025-03-10 15:38:35,514 - INFO - CLOSED short at 2061.84 | PnL: 0.59% | $0.93 +2025-03-10 15:38:35,514 - INFO - OPENED LONG at 2061.84 | Stop loss: 2051.5049 | Take profit: 2092.8064500000005 +2025-03-10 15:38:35,538 - INFO - CLOSED long at 2062.54 | PnL: 0.03% | $-0.13 +2025-03-10 15:38:35,538 - INFO - OPENED SHORT at 2062.54 | Stop loss: 2072.8786 | Take profit: 2031.56305 +2025-03-10 15:38:35,692 - INFO - STOP LOSS hit for short at 2072.8786 | PnL: -0.50% | $-1.16 +2025-03-10 15:38:35,717 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4461499999998 | Take profit: 2042.9004000000002 +2025-03-10 15:38:35,861 - INFO - STOP LOSS hit for short at 2084.4461499999998 | PnL: -0.50% | $-1.14 +2025-03-10 15:38:35,884 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.9683499999996 | Take profit: 2059.0937999999996 +2025-03-10 15:38:35,912 - INFO - STOP LOSS hit for short at 2100.9683499999996 | PnL: -0.50% | $-1.13 +2025-03-10 15:38:35,937 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3794 | Take profit: 2098.7006499999998 +2025-03-10 15:38:36,051 - INFO - STOP LOSS hit for short at 2141.3794 | PnL: -0.50% | $-1.12 +2025-03-10 15:38:36,077 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.0324 | Take profit: 2109.14165 +2025-03-10 15:38:36,438 - INFO - CLOSED short at 2107.43 | PnL: 1.58% | $2.72 +2025-03-10 15:38:36,438 - INFO - OPENED LONG at 2107.43 | Stop loss: 2096.86695 | Take profit: 2139.0802999999996 +2025-03-10 15:38:36,461 - INFO - CLOSED long at 2110.6 | PnL: 0.15% | $0.10 +2025-03-10 15:38:36,461 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1789 | Take profit: 2078.90215 +2025-03-10 15:38:37,432 - INFO - CLOSED short at 2083.41 | PnL: 1.29% | $2.25 +2025-03-10 15:38:37,457 - INFO - OPENED SHORT at 2085.09 | Stop loss: 2095.54135 | Take profit: 2053.7748 +2025-03-10 15:38:37,496 - INFO - CLOSED short at 2086.57 | PnL: -0.07% | $-0.33 +2025-03-10 15:38:37,496 - INFO - OPENED LONG at 2086.57 | Stop loss: 2076.11125 | Take profit: 2117.9074000000005 +2025-03-10 15:38:37,516 - INFO - CLOSED long at 2085.8 | PnL: -0.04% | $-0.26 +2025-03-10 15:38:37,516 - INFO - OPENED SHORT at 2085.8 | Stop loss: 2096.2549000000004 | Take profit: 2054.4741500000005 +2025-03-10 15:38:37,886 - INFO - STOP LOSS hit for short at 2096.2549000000004 | PnL: -0.50% | $-1.16 +2025-03-10 15:38:37,909 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.51585 | Take profit: 2068.4512999999997 +2025-03-10 15:38:38,452 - INFO - STOP LOSS hit for short at 2110.51585 | PnL: -0.50% | $-1.14 +2025-03-10 15:38:38,472 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.45025 | Take profit: 2079.1681 +2025-03-10 15:38:38,779 - INFO - CLOSED short at 2117.39 | PnL: -0.31% | $-0.77 +2025-03-10 15:38:38,779 - INFO - OPENED LONG at 2117.39 | Stop loss: 2106.77715 | Take profit: 2149.1897 +2025-03-10 15:38:38,799 - INFO - CLOSED long at 2115.3 | PnL: -0.10% | $-0.37 +2025-03-10 15:38:38,799 - INFO - OPENED SHORT at 2115.3 | Stop loss: 2125.9024 | Take profit: 2083.53165 +2025-03-10 15:38:39,078 - INFO - STOP LOSS hit for short at 2125.9024 | PnL: -0.50% | $-1.12 +2025-03-10 15:38:39,099 - INFO - OPENED SHORT at 2129.3 | Stop loss: 2139.9724000000006 | Take profit: 2097.3216500000003 +2025-03-10 15:38:39,866 - INFO - CLOSED short at 2113.04 | PnL: 0.76% | $1.22 +2025-03-10 15:38:39,867 - INFO - OPENED LONG at 2113.04 | Stop loss: 2102.4489 | Take profit: 2144.7744500000003 +2025-03-10 15:38:39,888 - INFO - CLOSED long at 2108.73 | PnL: -0.20% | $-0.57 +2025-03-10 15:38:39,888 - INFO - OPENED SHORT at 2108.73 | Stop loss: 2119.2995499999997 | Take profit: 2077.0602 +2025-03-10 15:38:40,027 - INFO - STOP LOSS hit for short at 2119.2995499999997 | PnL: -0.50% | $-1.11 +2025-03-10 15:38:40,050 - INFO - OPENED SHORT at 2123.62 | Stop loss: 2134.264 | Take profit: 2091.72685 +2025-03-10 15:38:40,939 - INFO - CLOSED short at 2114.57 | PnL: 0.43% | $0.60 +2025-03-10 15:38:40,965 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.15875 | Take profit: 2080.8426 +2025-03-10 15:38:41,045 - INFO - CLOSED short at 2098.24 | PnL: 0.68% | $1.06 +2025-03-10 15:38:41,065 - INFO - OPENED SHORT at 2098.28 | Stop loss: 2108.7973 | Take profit: 2066.76695 +2025-03-10 15:38:41,125 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 17.6% in downtrends | Avg Win=$1.07, Avg Loss=$-0.70 +2025-03-10 15:38:41,126 - INFO - Episode 12: Reward=180.40, Balance=$94.12, Win Rate=29.0%, Trades=31, Episode PnL=$-3.49, Total PnL=$-75.38, Max Drawdown=8.1%, Pred Accuracy=99.5% +2025-03-10 15:38:41,214 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.23035 | Take profit: 2031.9078 +2025-03-10 15:38:42,839 - INFO - STOP LOSS hit for short at 2073.23035 | PnL: -0.50% | $-1.19 +2025-03-10 15:38:42,859 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.4259500000003 | Take profit: 2046.8010000000002 +2025-03-10 15:38:43,195 - INFO - CLOSED short at 2067.33 | PnL: 0.51% | $0.81 +2025-03-10 15:38:43,218 - INFO - OPENED SHORT at 2066.38 | Stop loss: 2076.7378 | Take profit: 2035.34545 +2025-03-10 15:38:43,476 - INFO - CLOSED short at 2066.8 | PnL: -0.02% | $-0.24 +2025-03-10 15:38:43,476 - INFO - OPENED LONG at 2066.8 | Stop loss: 2056.4401000000003 | Take profit: 2097.84085 +2025-03-10 15:38:43,499 - INFO - CLOSED long at 2066.5 | PnL: -0.01% | $-0.22 +2025-03-10 15:38:43,499 - INFO - OPENED SHORT at 2066.5 | Stop loss: 2076.8584 | Take profit: 2035.4636500000001 +2025-03-10 15:38:43,558 - INFO - CLOSED short at 2070.2 | PnL: -0.18% | $-0.55 +2025-03-10 15:38:43,558 - INFO - OPENED LONG at 2070.2 | Stop loss: 2059.8230999999996 | Take profit: 2101.29185 +2025-03-10 15:38:43,581 - INFO - CLOSED long at 2071.35 | PnL: 0.06% | $-0.09 +2025-03-10 15:38:43,581 - INFO - OPENED SHORT at 2071.35 | Stop loss: 2081.73265 | Take profit: 2040.2409 +2025-03-10 15:38:44,680 - INFO - CLOSED short at 2056.77 | PnL: 0.70% | $1.18 +2025-03-10 15:38:44,681 - INFO - OPENED LONG at 2056.77 | Stop loss: 2046.46025 | Take profit: 2087.6603999999998 +2025-03-10 15:38:44,697 - INFO - CLOSED long at 2053.01 | PnL: -0.18% | $-0.56 +2025-03-10 15:38:44,698 - INFO - OPENED SHORT at 2053.01 | Stop loss: 2063.3009500000003 | Take profit: 2022.1760000000002 +2025-03-10 15:38:44,878 - INFO - STOP LOSS hit for short at 2063.3009500000003 | PnL: -0.50% | $-1.18 +2025-03-10 15:38:44,902 - INFO - OPENED SHORT at 2065.1 | Stop loss: 2075.4514 | Take profit: 2034.08465 +2025-03-10 15:38:45,297 - INFO - CLOSED short at 2074.05 | PnL: -0.43% | $-1.03 +2025-03-10 15:38:45,323 - INFO - OPENED SHORT at 2072.99 | Stop loss: 2083.38085 | Take profit: 2041.8562999999997 +2025-03-10 15:38:45,452 - INFO - STOP LOSS hit for short at 2083.38085 | PnL: -0.50% | $-1.15 +2025-03-10 15:38:45,478 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.9683499999996 | Take profit: 2059.0937999999996 +2025-03-10 15:38:45,499 - INFO - STOP LOSS hit for short at 2100.9683499999996 | PnL: -0.50% | $-1.14 +2025-03-10 15:38:45,524 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3794 | Take profit: 2098.7006499999998 +2025-03-10 15:38:45,628 - INFO - STOP LOSS hit for short at 2141.3794 | PnL: -0.50% | $-1.12 +2025-03-10 15:38:45,655 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.0324 | Take profit: 2109.14165 +2025-03-10 15:38:45,969 - INFO - TAKE PROFIT hit for short at 2109.14165 | PnL: 1.50% | $2.59 +2025-03-10 15:38:45,990 - INFO - OPENED SHORT at 2110.6 | Stop loss: 2121.1789 | Take profit: 2078.90215 +2025-03-10 15:38:47,555 - INFO - CLOSED short at 2099.73 | PnL: 0.52% | $0.79 +2025-03-10 15:38:47,578 - INFO - OPENED LONG at 2106.15 | Stop loss: 2095.59335 | Take profit: 2137.7810999999997 +2025-03-10 15:38:47,603 - INFO - CLOSED long at 2103.48 | PnL: -0.13% | $-0.43 +2025-03-10 15:38:47,604 - INFO - OPENED SHORT at 2103.48 | Stop loss: 2114.0233 | Take profit: 2071.88895 +2025-03-10 15:38:48,166 - INFO - STOP LOSS hit for short at 2114.0233 | PnL: -0.50% | $-1.15 +2025-03-10 15:38:48,188 - INFO - OPENED SHORT at 2113.61 | Stop loss: 2124.20395 | Take profit: 2081.867 +2025-03-10 15:38:48,402 - INFO - CLOSED short at 2117.39 | PnL: -0.18% | $-0.53 +2025-03-10 15:38:48,402 - INFO - OPENED LONG at 2117.39 | Stop loss: 2106.77715 | Take profit: 2149.1897 +2025-03-10 15:38:48,429 - INFO - CLOSED long at 2115.3 | PnL: -0.10% | $-0.37 +2025-03-10 15:38:48,430 - INFO - OPENED SHORT at 2115.3 | Stop loss: 2125.9024 | Take profit: 2083.53165 +2025-03-10 15:38:48,742 - INFO - STOP LOSS hit for short at 2125.9024 | PnL: -0.50% | $-1.12 +2025-03-10 15:38:48,773 - INFO - OPENED SHORT at 2129.3 | Stop loss: 2139.9724000000006 | Take profit: 2097.3216500000003 +2025-03-10 15:38:50,461 - INFO - CLOSED short at 2116.81 | PnL: 0.59% | $0.90 +2025-03-10 15:38:50,481 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.3798 | Take profit: 2083.0194500000002 +2025-03-10 15:38:50,597 - INFO - CLOSED short at 2115.11 | PnL: -0.02% | $-0.22 +2025-03-10 15:38:50,597 - INFO - OPENED LONG at 2115.11 | Stop loss: 2104.50855 | Take profit: 2146.8755 +2025-03-10 15:38:50,618 - INFO - CLOSED long at 2114.32 | PnL: -0.04% | $-0.26 +2025-03-10 15:38:50,618 - INFO - OPENED SHORT at 2114.32 | Stop loss: 2124.9175 | Take profit: 2082.56635 +2025-03-10 15:38:50,792 - INFO - CLOSED short at 2100.05 | PnL: 0.67% | $1.06 +2025-03-10 15:38:50,792 - INFO - OPENED LONG at 2100.05 | Stop loss: 2089.52385 | Take profit: 2131.5896000000002 +2025-03-10 15:38:50,810 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 21.4% in downtrends | Avg Win=$1.22, Avg Loss=$-0.70 +2025-03-10 15:38:50,810 - INFO - Episode 13: Reward=83.38, Balance=$94.79, Win Rate=25.0%, Trades=24, Episode PnL=$-3.28, Total PnL=$-80.58, Max Drawdown=6.7%, Pred Accuracy=99.5% +2025-03-10 15:38:50,901 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.23035 | Take profit: 2031.9078 +2025-03-10 15:38:52,379 - INFO - STOP LOSS hit for short at 2073.23035 | PnL: -0.50% | $-1.19 +2025-03-10 15:38:52,402 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.4259500000003 | Take profit: 2046.8010000000002 +2025-03-10 15:38:52,461 - INFO - CLOSED short at 2071.04 | PnL: 0.34% | $0.46 +2025-03-10 15:38:52,482 - INFO - OPENED SHORT at 2070.01 | Stop loss: 2080.3859500000003 | Take profit: 2038.9210000000003 +2025-03-10 15:38:52,503 - INFO - CLOSED short at 2071.6 | PnL: -0.08% | $-0.35 +2025-03-10 15:38:52,503 - INFO - OPENED LONG at 2071.6 | Stop loss: 2061.2160999999996 | Take profit: 2102.71285 +2025-03-10 15:38:52,524 - INFO - CLOSED long at 2073.23 | PnL: 0.08% | $-0.04 +2025-03-10 15:38:52,525 - INFO - OPENED SHORT at 2073.23 | Stop loss: 2083.62205 | Take profit: 2042.0927 +2025-03-10 15:38:53,012 - INFO - CLOSED short at 2066.8 | PnL: 0.31% | $0.41 +2025-03-10 15:38:53,013 - INFO - OPENED LONG at 2066.8 | Stop loss: 2056.4401000000003 | Take profit: 2097.84085 +2025-03-10 15:38:53,032 - INFO - CLOSED long at 2066.5 | PnL: -0.01% | $-0.22 +2025-03-10 15:38:53,033 - INFO - OPENED SHORT at 2066.5 | Stop loss: 2076.8584 | Take profit: 2035.4636500000001 +2025-03-10 15:38:53,131 - INFO - CLOSED short at 2070.9 | PnL: -0.21% | $-0.61 +2025-03-10 15:38:53,155 - INFO - OPENED SHORT at 2069.69 | Stop loss: 2080.0643499999996 | Take profit: 2038.6058 +2025-03-10 15:38:53,373 - INFO - CLOSED short at 2074.37 | PnL: -0.23% | $-0.63 +2025-03-10 15:38:53,395 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.47125 | Take profit: 2043.9051000000002 +2025-03-10 15:38:53,452 - INFO - CLOSED short at 2073.99 | PnL: 0.05% | $-0.09 +2025-03-10 15:38:53,452 - INFO - OPENED LONG at 2073.99 | Stop loss: 2063.59415 | Take profit: 2105.1386999999995 +2025-03-10 15:38:53,473 - INFO - CLOSED long at 2075.32 | PnL: 0.06% | $-0.07 +2025-03-10 15:38:53,473 - INFO - OPENED SHORT at 2075.32 | Stop loss: 2085.7225000000003 | Take profit: 2044.15135 +2025-03-10 15:38:53,590 - INFO - CLOSED short at 2069.97 | PnL: 0.26% | $0.30 +2025-03-10 15:38:53,612 - INFO - OPENED SHORT at 2067.7 | Stop loss: 2078.0644 | Take profit: 2036.64565 +2025-03-10 15:38:53,768 - INFO - CLOSED short at 2069.0 | PnL: -0.06% | $-0.32 +2025-03-10 15:38:53,768 - INFO - OPENED LONG at 2069.0 | Stop loss: 2058.6291 | Take profit: 2100.07385 +2025-03-10 15:38:53,788 - INFO - CLOSED long at 2070.19 | PnL: 0.06% | $-0.08 +2025-03-10 15:38:53,788 - INFO - OPENED SHORT at 2070.19 | Stop loss: 2080.56685 | Take profit: 2039.0983 +2025-03-10 15:38:53,847 - INFO - CLOSED short at 2065.5 | PnL: 0.23% | $0.24 +2025-03-10 15:38:53,848 - INFO - OPENED LONG at 2065.5 | Stop loss: 2055.1466 | Take profit: 2096.52135 +2025-03-10 15:38:53,867 - INFO - CLOSED long at 2065.7 | PnL: 0.01% | $-0.17 +2025-03-10 15:38:53,867 - INFO - OPENED SHORT at 2065.7 | Stop loss: 2076.0543999999995 | Take profit: 2034.67565 +2025-03-10 15:38:54,230 - INFO - CLOSED short at 2058.65 | PnL: 0.34% | $0.47 +2025-03-10 15:38:54,230 - INFO - OPENED LONG at 2058.65 | Stop loss: 2048.33085 | Take profit: 2089.5686 +2025-03-10 15:38:54,255 - INFO - CLOSED long at 2056.77 | PnL: -0.09% | $-0.37 +2025-03-10 15:38:54,255 - INFO - OPENED SHORT at 2056.77 | Stop loss: 2067.0797500000003 | Take profit: 2025.8796 +2025-03-10 15:38:54,522 - INFO - CLOSED short at 2062.43 | PnL: -0.28% | $-0.72 +2025-03-10 15:38:54,544 - INFO - OPENED SHORT at 2062.55 | Stop loss: 2072.8886500000003 | Take profit: 2031.5729000000001 +2025-03-10 15:38:54,937 - INFO - STOP LOSS hit for short at 2072.8886500000003 | PnL: -0.50% | $-1.15 +2025-03-10 15:38:54,964 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4461499999998 | Take profit: 2042.9004000000002 +2025-03-10 15:38:55,117 - INFO - STOP LOSS hit for short at 2084.4461499999998 | PnL: -0.50% | $-1.14 +2025-03-10 15:38:55,140 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.9683499999996 | Take profit: 2059.0937999999996 +2025-03-10 15:38:55,165 - INFO - STOP LOSS hit for short at 2100.9683499999996 | PnL: -0.50% | $-1.13 +2025-03-10 15:38:55,187 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3794 | Take profit: 2098.7006499999998 +2025-03-10 15:38:55,299 - INFO - STOP LOSS hit for short at 2141.3794 | PnL: -0.50% | $-1.11 +2025-03-10 15:38:55,320 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.0324 | Take profit: 2109.14165 +2025-03-10 15:38:55,399 - INFO - CLOSED short at 2126.99 | PnL: 0.67% | $1.04 +2025-03-10 15:38:55,399 - INFO - OPENED LONG at 2126.99 | Stop loss: 2116.32915 | Take profit: 2158.9336999999996 +2025-03-10 15:38:55,424 - INFO - CLOSED long at 2127.3 | PnL: 0.01% | $-0.16 +2025-03-10 15:38:55,424 - INFO - OPENED SHORT at 2127.3 | Stop loss: 2137.9624 | Take profit: 2095.35165 +2025-03-10 15:38:56,000 - INFO - TAKE PROFIT hit for short at 2095.35165 | PnL: 1.50% | $2.59 +2025-03-10 15:38:56,022 - INFO - OPENED SHORT at 2099.53 | Stop loss: 2110.05355 | Take profit: 2067.9982000000005 +2025-03-10 15:38:56,046 - INFO - CLOSED short at 2098.1 | PnL: 0.07% | $-0.06 +2025-03-10 15:38:56,046 - INFO - OPENED LONG at 2098.1 | Stop loss: 2087.5836 | Take profit: 2129.61035 +2025-03-10 15:38:56,069 - INFO - CLOSED long at 2102.19 | PnL: 0.19% | $0.18 +2025-03-10 15:38:56,069 - INFO - OPENED SHORT at 2102.19 | Stop loss: 2112.72685 | Take profit: 2070.6183 +2025-03-10 15:38:56,914 - INFO - CLOSED short at 2089.96 | PnL: 0.58% | $0.91 +2025-03-10 15:38:56,939 - INFO - OPENED SHORT at 2087.0 | Stop loss: 2097.4609 | Take profit: 2055.6561500000003 +2025-03-10 15:38:57,182 - INFO - STOP LOSS hit for short at 2097.4609 | PnL: -0.50% | $-1.15 +2025-03-10 15:38:57,202 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.51585 | Take profit: 2068.4512999999997 +2025-03-10 15:38:57,763 - INFO - STOP LOSS hit for short at 2110.51585 | PnL: -0.50% | $-1.14 +2025-03-10 15:38:57,791 - INFO - OPENED SHORT at 2110.87 | Stop loss: 2121.45025 | Take profit: 2079.1681 +2025-03-10 15:38:58,327 - INFO - STOP LOSS hit for short at 2121.45025 | PnL: -0.50% | $-1.12 +2025-03-10 15:38:58,352 - INFO - OPENED SHORT at 2121.2 | Stop loss: 2131.8318999999997 | Take profit: 2089.3431499999997 +2025-03-10 15:38:58,436 - INFO - STOP LOSS hit for short at 2131.8318999999997 | PnL: -0.50% | $-1.11 +2025-03-10 15:38:58,455 - INFO - OPENED SHORT at 2136.26 | Stop loss: 2146.9672 | Take profit: 2104.17725 +2025-03-10 15:38:58,776 - INFO - CLOSED short at 2120.0 | PnL: 0.76% | $1.21 +2025-03-10 15:38:58,776 - INFO - OPENED LONG at 2120.0 | Stop loss: 2109.3741 | Take profit: 2151.8388499999996 +2025-03-10 15:38:58,798 - INFO - CLOSED long at 2117.98 | PnL: -0.10% | $-0.36 +2025-03-10 15:38:58,798 - INFO - OPENED SHORT at 2117.98 | Stop loss: 2128.5958 | Take profit: 2086.17145 +2025-03-10 15:38:59,655 - INFO - CLOSED short at 2125.04 | PnL: -0.33% | $-0.80 +2025-03-10 15:38:59,656 - INFO - OPENED LONG at 2125.04 | Stop loss: 2114.3889 | Take profit: 2156.9544499999997 +2025-03-10 15:38:59,675 - INFO - CLOSED long at 2123.61 | PnL: -0.07% | $-0.31 +2025-03-10 15:38:59,675 - INFO - OPENED SHORT at 2123.61 | Stop loss: 2134.2539500000003 | Take profit: 2091.717 +2025-03-10 15:38:59,965 - INFO - CLOSED short at 2116.52 | PnL: 0.33% | $0.43 +2025-03-10 15:38:59,987 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.641 | Take profit: 2087.19585 +2025-03-10 15:39:00,496 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 30.0% in downtrends | Avg Win=$0.75, Avg Loss=$-0.60 +2025-03-10 15:39:00,497 - INFO - Episode 14: Reward=174.51, Balance=$92.62, Win Rate=29.7%, Trades=37, Episode PnL=$-5.77, Total PnL=$-87.96, Max Drawdown=7.5%, Pred Accuracy=99.7% +2025-03-10 15:39:01,240 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.23035 | Take profit: 2031.9078 +2025-03-10 15:39:01,347 - INFO - CLOSED short at 2063.59 | PnL: -0.03% | $-0.26 +2025-03-10 15:39:01,348 - INFO - OPENED LONG at 2063.59 | Stop loss: 2053.24615 | Take profit: 2094.5827000000004 +2025-03-10 15:39:01,369 - INFO - CLOSED long at 2064.96 | PnL: 0.07% | $-0.07 +2025-03-10 15:39:01,370 - INFO - OPENED SHORT at 2064.96 | Stop loss: 2075.3107 | Take profit: 2033.94675 +2025-03-10 15:39:01,989 - INFO - CLOSED short at 2063.53 | PnL: 0.07% | $-0.06 +2025-03-10 15:39:02,014 - INFO - OPENED SHORT at 2063.0 | Stop loss: 2073.3409 | Take profit: 2032.01615 +2025-03-10 15:39:02,442 - INFO - CLOSED short at 2061.66 | PnL: 0.06% | $-0.07 +2025-03-10 15:39:02,462 - INFO - OPENED SHORT at 2061.5 | Stop loss: 2071.8334 | Take profit: 2030.53865 +2025-03-10 15:39:02,731 - INFO - CLOSED short at 2065.69 | PnL: -0.20% | $-0.60 +2025-03-10 15:39:02,757 - INFO - OPENED SHORT at 2069.79 | Stop loss: 2080.16485 | Take profit: 2038.7043 +2025-03-10 15:39:03,613 - INFO - CLOSED short at 2070.8 | PnL: -0.05% | $-0.29 +2025-03-10 15:39:03,638 - INFO - OPENED SHORT at 2070.35 | Stop loss: 2080.72765 | Take profit: 2039.2558999999999 +2025-03-10 15:39:03,841 - INFO - CLOSED short at 2074.35 | PnL: -0.19% | $-0.57 +2025-03-10 15:39:03,859 - INFO - OPENED SHORT at 2073.27 | Stop loss: 2083.66225 | Take profit: 2042.1321 +2025-03-10 15:39:05,076 - INFO - CLOSED short at 2059.9 | PnL: 0.64% | $1.06 +2025-03-10 15:39:05,097 - INFO - OPENED SHORT at 2060.7 | Stop loss: 2071.0294 | Take profit: 2029.75065 +2025-03-10 15:39:05,283 - INFO - STOP LOSS hit for short at 2071.0294 | PnL: -0.50% | $-1.18 +2025-03-10 15:39:05,304 - INFO - OPENED SHORT at 2074.05 | Stop loss: 2084.4461499999998 | Take profit: 2042.9004000000002 +2025-03-10 15:39:05,450 - INFO - STOP LOSS hit for short at 2084.4461499999998 | PnL: -0.50% | $-1.16 +2025-03-10 15:39:05,471 - INFO - OPENED SHORT at 2090.49 | Stop loss: 2100.9683499999996 | Take profit: 2059.0937999999996 +2025-03-10 15:39:05,495 - INFO - STOP LOSS hit for short at 2100.9683499999996 | PnL: -0.50% | $-1.15 +2025-03-10 15:39:05,517 - INFO - OPENED SHORT at 2130.7 | Stop loss: 2141.3794 | Take profit: 2098.7006499999998 +2025-03-10 15:39:05,620 - INFO - STOP LOSS hit for short at 2141.3794 | PnL: -0.50% | $-1.14 +2025-03-10 15:39:05,644 - INFO - OPENED SHORT at 2141.3 | Stop loss: 2152.0324 | Take profit: 2109.14165 +2025-03-10 15:39:05,775 - INFO - CLOSED short at 2121.09 | PnL: 0.94% | $1.58 +2025-03-10 15:39:05,776 - INFO - OPENED LONG at 2121.09 | Stop loss: 2110.45865 | Take profit: 2152.9452 +2025-03-10 15:39:05,795 - INFO - CLOSED long at 2120.15 | PnL: -0.04% | $-0.27 +2025-03-10 15:39:05,796 - INFO - OPENED SHORT at 2120.15 | Stop loss: 2130.7766500000002 | Take profit: 2088.3089 +2025-03-10 15:39:06,838 - INFO - CLOSED short at 2083.28 | PnL: 1.74% | $3.10 +2025-03-10 15:39:06,860 - INFO - OPENED SHORT at 2088.44 | Stop loss: 2098.9081 | Take profit: 2057.07455 +2025-03-10 15:39:07,324 - INFO - CLOSED short at 2087.78 | PnL: 0.03% | $-0.13 +2025-03-10 15:39:07,325 - INFO - OPENED LONG at 2087.78 | Stop loss: 2077.3152 | Take profit: 2119.1355500000004 +2025-03-10 15:39:07,349 - INFO - CLOSED long at 2086.81 | PnL: -0.05% | $-0.29 +2025-03-10 15:39:07,350 - INFO - OPENED SHORT at 2086.81 | Stop loss: 2097.26995 | Take profit: 2055.469 +2025-03-10 15:39:07,516 - INFO - STOP LOSS hit for short at 2097.26995 | PnL: -0.50% | $-1.17 +2025-03-10 15:39:07,539 - INFO - OPENED SHORT at 2099.99 | Stop loss: 2110.51585 | Take profit: 2068.4512999999997 +2025-03-10 15:39:07,781 - INFO - CLOSED short at 2101.5 | PnL: -0.07% | $-0.33 +2025-03-10 15:39:07,781 - INFO - OPENED LONG at 2101.5 | Stop loss: 2090.9665999999997 | Take profit: 2133.06135 +2025-03-10 15:39:07,803 - INFO - CLOSED long at 2105.83 | PnL: 0.21% | $0.20 +2025-03-10 15:39:07,803 - INFO - OPENED SHORT at 2105.83 | Stop loss: 2116.3850500000003 | Take profit: 2074.2037 +2025-03-10 15:39:08,225 - INFO - CLOSED short at 2115.26 | PnL: -0.45% | $-1.05 +2025-03-10 15:39:08,225 - INFO - OPENED LONG at 2115.26 | Stop loss: 2104.6578000000004 | Take profit: 2147.02775 +2025-03-10 15:39:08,250 - INFO - CLOSED long at 2113.61 | PnL: -0.08% | $-0.34 +2025-03-10 15:39:08,251 - INFO - OPENED SHORT at 2113.61 | Stop loss: 2124.20395 | Take profit: 2081.867 +2025-03-10 15:39:08,757 - INFO - STOP LOSS hit for short at 2124.20395 | PnL: -0.50% | $-1.14 +2025-03-10 15:39:08,779 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4548499999996 | Take profit: 2095.8343 +2025-03-10 15:39:08,986 - INFO - CLOSED short at 2127.47 | PnL: 0.02% | $-0.16 +2025-03-10 15:39:09,027 - INFO - OPENED SHORT at 2135.55 | Stop loss: 2146.25365 | Take profit: 2103.4779000000003 +2025-03-10 15:39:11,097 - INFO - TAKE PROFIT hit for short at 2103.4779000000003 | PnL: 1.50% | $2.62 +2025-03-10 15:39:11,122 - INFO - OPENED SHORT at 2098.28 | Stop loss: 2108.7973 | Take profit: 2066.76695 +2025-03-10 15:39:11,185 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 16.7% in downtrends | Avg Win=$1.71, Avg Loss=$-0.57 +2025-03-10 15:39:11,186 - INFO - Episode 15: Reward=173.97, Balance=$97.13, Win Rate=20.0%, Trades=25, Episode PnL=$-2.11, Total PnL=$-90.83, Max Drawdown=5.5%, Pred Accuracy=99.8% +2025-03-10 15:39:11,274 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.23035 | Take profit: 2031.9078 +2025-03-10 15:39:12,204 - INFO - CLOSED short at 2058.89 | PnL: 0.19% | $0.19 +2025-03-10 15:39:12,204 - INFO - OPENED LONG at 2058.89 | Stop loss: 2048.56965 | Take profit: 2089.8122 +2025-03-10 15:39:12,225 - INFO - CLOSED long at 2059.96 | PnL: 0.05% | $-0.10 +2025-03-10 15:39:12,225 - INFO - OPENED SHORT at 2059.96 | Stop loss: 2070.2857 | Take profit: 2029.02175 +2025-03-10 15:39:12,489 - INFO - CLOSED short at 2061.6 | PnL: -0.08% | $-0.36 +2025-03-10 15:39:12,489 - INFO - OPENED LONG at 2061.6 | Stop loss: 2051.2661 | Take profit: 2092.56285 +2025-03-10 15:39:12,509 - INFO - CLOSED long at 2061.3 | PnL: -0.01% | $-0.23 +2025-03-10 15:39:12,509 - INFO - OPENED SHORT at 2061.3 | Stop loss: 2071.6324000000004 | Take profit: 2030.3416500000003 +2025-03-10 15:39:12,786 - INFO - STOP LOSS hit for short at 2071.6324000000004 | PnL: -0.50% | $-1.18 +2025-03-10 15:39:12,813 - INFO - OPENED SHORT at 2074.3 | Stop loss: 2084.6974 | Take profit: 2043.1466500000001 +2025-03-10 15:39:13,053 - INFO - CLOSED short at 2069.03 | PnL: 0.25% | $0.30 +2025-03-10 15:39:13,076 - INFO - OPENED SHORT at 2067.44 | Stop loss: 2077.8031 | Take profit: 2036.38955 +2025-03-10 15:39:13,518 - INFO - CLOSED short at 2071.59 | PnL: -0.20% | $-0.59 +2025-03-10 15:39:13,518 - INFO - OPENED LONG at 2071.59 | Stop loss: 2061.20615 | Take profit: 2102.7027000000003 +2025-03-10 15:39:13,539 - INFO - CLOSED long at 2070.2 | PnL: -0.07% | $-0.32 +2025-03-10 15:39:13,539 - INFO - OPENED SHORT at 2070.2 | Stop loss: 2080.5768999999996 | Take profit: 2039.1081499999998 +2025-03-10 15:39:13,715 - INFO - CLOSED short at 2068.19 | PnL: 0.10% | $-0.01 +2025-03-10 15:39:13,743 - INFO - OPENED SHORT at 2068.67 | Stop loss: 2079.03925 | Take profit: 2037.6011 +2025-03-10 15:39:14,772 - INFO - CLOSED short at 2049.21 | PnL: 0.94% | $1.62 +2025-03-10 15:39:14,796 - INFO - OPENED SHORT at 2049.5 | Stop loss: 2059.7734 | Take profit: 2018.71865 +2025-03-10 15:39:14,946 - INFO - STOP LOSS hit for short at 2059.7734 | PnL: -0.50% | $-1.18 +2025-03-10 15:39:14,977 - INFO - OPENED SHORT at 2063.9 | Stop loss: 2074.2454000000002 | Take profit: 2032.9026500000002 +2025-03-10 15:39:15,598 - INFO - STOP LOSS hit for short at 2074.2454000000002 | PnL: -0.50% | $-1.17 +2025-03-10 15:39:15,627 - INFO - OPENED SHORT at 2076.08 | Stop loss: 2086.4863 | Take profit: 2044.89995 +2025-03-10 15:39:15,650 - INFO - CLOSED short at 2077.61 | PnL: -0.07% | $-0.33 +2025-03-10 15:39:15,650 - INFO - OPENED LONG at 2077.61 | Stop loss: 2067.19605 | Take profit: 2108.813 +2025-03-10 15:39:15,672 - INFO - CLOSED long at 2085.56 | PnL: 0.38% | $0.54 +2025-03-10 15:39:15,673 - INFO - OPENED SHORT at 2085.56 | Stop loss: 2096.0137 | Take profit: 2054.23775 +2025-03-10 15:39:15,696 - INFO - CLOSED short at 2090.49 | PnL: -0.24% | $-0.65 +2025-03-10 15:39:15,697 - INFO - OPENED LONG at 2090.49 | Stop loss: 2080.01165 | Take profit: 2121.8862 +2025-03-10 15:39:15,724 - INFO - CLOSED long at 2103.02 | PnL: 0.60% | $0.95 +2025-03-10 15:39:15,724 - INFO - OPENED SHORT at 2103.02 | Stop loss: 2113.561 | Take profit: 2071.43585 +2025-03-10 15:39:15,746 - INFO - STOP LOSS hit for short at 2113.561 | PnL: -0.50% | $-1.16 +2025-03-10 15:39:15,770 - INFO - OPENED SHORT at 2139.54 | Stop loss: 2150.2636 | Take profit: 2107.40805 +2025-03-10 15:39:16,255 - INFO - CLOSED short at 2109.05 | PnL: 1.43% | $2.52 +2025-03-10 15:39:16,284 - INFO - OPENED SHORT at 2112.09 | Stop loss: 2122.67635 | Take profit: 2080.3698 +2025-03-10 15:39:19,049 - INFO - STOP LOSS hit for short at 2122.67635 | PnL: -0.50% | $-1.17 +2025-03-10 15:39:19,073 - INFO - OPENED SHORT at 2127.79 | Stop loss: 2138.4548499999996 | Take profit: 2095.8343 +2025-03-10 15:39:19,292 - INFO - CLOSED short at 2127.47 | PnL: 0.02% | $-0.16 +2025-03-10 15:39:19,316 - INFO - OPENED SHORT at 2129.51 | Stop loss: 2140.1834500000004 | Take profit: 2097.5285000000003 +2025-03-10 15:39:21,339 - INFO - TAKE PROFIT hit for short at 2097.5285000000003 | PnL: 1.50% | $2.70 +2025-03-10 15:39:21,365 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5761500000003 | Take profit: 2068.5104 +2025-03-10 15:39:21,384 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 18.2% in downtrends | Avg Win=$1.26, Avg Loss=$-0.61 +2025-03-10 15:39:21,384 - INFO - Episode 16: Reward=182.94, Balance=$100.23, Win Rate=33.3%, Trades=21, Episode PnL=$-0.62, Total PnL=$-90.60, Max Drawdown=3.7%, Pred Accuracy=99.8% +2025-03-10 15:39:21,485 - INFO - OPENED SHORT at 2062.89 | Stop loss: 2073.23035 | Take profit: 2031.9078 +2025-03-10 15:39:23,345 - INFO - STOP LOSS hit for short at 2073.23035 | PnL: -0.50% | $-1.19 +2025-03-10 15:39:23,371 - INFO - OPENED SHORT at 2078.01 | Stop loss: 2088.4259500000003 | Take profit: 2046.8010000000002 +2025-03-10 15:39:23,951 - INFO - CLOSED short at 2064.4 | PnL: 0.65% | $1.08 +2025-03-10 15:39:23,951 - INFO - OPENED LONG at 2064.4 | Stop loss: 2054.0521 | Take profit: 2095.4048500000004 +2025-03-10 15:39:23,976 - INFO - CLOSED long at 2064.31 | PnL: -0.00% | $-0.21 +2025-03-10 15:39:23,976 - INFO - OPENED SHORT at 2064.31 | Stop loss: 2074.6574499999997 | Take profit: 2033.3065 +2025-03-10 15:39:24,521 - INFO - CLOSED short at 2071.61 | PnL: -0.35% | $-0.89 +2025-03-10 15:39:24,521 - INFO - OPENED LONG at 2071.61 | Stop loss: 2061.22605 | Take profit: 2102.723 +2025-03-10 15:39:24,552 - INFO - CLOSED long at 2074.37 | PnL: 0.13% | $0.06 +2025-03-10 15:39:24,552 - INFO - OPENED SHORT at 2074.37 | Stop loss: 2084.76775 | Take profit: 2043.2156 +2025-03-10 15:39:43,622 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 15:39:43,641 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 15:39:43,642 - INFO - Fetching initial data for ETH/USDT +2025-03-10 15:39:43,642 - INFO - Fetching initial data for ETH/USDT +2025-03-10 15:39:46,986 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 15:39:47,004 - INFO - Initialized environment with 500 candles +2025-03-10 15:39:49,215 - INFO - Starting continuous training mode. Press Ctrl+C to stop. +2025-03-10 15:39:49,215 - INFO - Starting training batch 1 +2025-03-10 15:39:49,215 - INFO - Refreshing data for new training batch +2025-03-10 15:39:49,215 - ERROR - Error: 'TradingEnvironment' object has no attribute 'fetch_new_data' +2025-03-10 15:39:49,221 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2441, in main + await env.fetch_new_data(exchange, "ETH/USDT", "1m", 500) + ^^^^^^^^^^^^^^^^^^ +AttributeError: 'TradingEnvironment' object has no attribute 'fetch_new_data' + +2025-03-10 15:39:49,222 - INFO - Exchange connection closed +2025-03-10 15:58:37,559 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 15:58:37,578 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 15:58:37,578 - INFO - Fetching initial data for ETH/USDT +2025-03-10 15:58:37,580 - INFO - Fetching initial data for ETH/USDT +2025-03-10 15:58:41,294 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 15:58:41,313 - INFO - Initialized environment with 500 candles +2025-03-10 15:58:43,495 - INFO - Starting continuous training mode. Press Ctrl+C to stop. +2025-03-10 15:58:43,495 - INFO - Starting training batch 1 +2025-03-10 15:58:43,496 - INFO - Refreshing data for new training batch +2025-03-10 15:58:43,496 - ERROR - Error: 'TradingEnvironment' object has no attribute 'fetch_new_data' +2025-03-10 15:58:43,502 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2446, in main + await env.fetch_new_data(exchange, "ETH/USDT", "1m", 500) + ^^^^^^^^^^^^^^^^^^ +AttributeError: 'TradingEnvironment' object has no attribute 'fetch_new_data' + +2025-03-10 15:58:43,502 - INFO - Exchange connection closed +2025-03-10 15:59:21,963 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 15:59:21,981 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 15:59:21,981 - INFO - Fetching initial data for ETH/USDT +2025-03-10 15:59:21,981 - INFO - Fetching initial data for ETH/USDT +2025-03-10 15:59:25,319 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 15:59:25,337 - INFO - Initialized environment with 500 candles +2025-03-10 15:59:27,516 - INFO - Starting continuous training mode. Press Ctrl+C to stop. +2025-03-10 15:59:27,516 - INFO - Starting training batch 1 +2025-03-10 15:59:27,516 - INFO - Refreshing data for new training batch +2025-03-10 15:59:27,517 - ERROR - Error: 'mexc' object has no attribute 'fetch_initial_data' +2025-03-10 15:59:27,518 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2446, in main + await fetch_new_data(exchange, "ETH/USDT", "1m", 500) + File "main.py", line 2351, in fetch_new_data + return await self.fetch_initial_data(exchange, symbol, timeframe, limit) + ^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'mexc' object has no attribute 'fetch_initial_data' + +2025-03-10 15:59:27,518 - INFO - Exchange connection closed +2025-03-10 16:02:01,607 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 16:02:01,627 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 16:02:01,628 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:02:01,628 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:02:05,083 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 16:02:05,105 - INFO - Initialized environment with 500 candles +2025-03-10 16:02:07,444 - INFO - Starting continuous training mode. Press Ctrl+C to stop. +2025-03-10 16:02:07,444 - INFO - Starting training batch 1 +2025-03-10 16:02:07,445 - INFO - Refreshing data for new training batch +2025-03-10 16:02:07,445 - ERROR - Error: 'mexc' object has no attribute 'fetch_initial_data' +2025-03-10 16:02:07,447 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 2446, in main + await fetch_new_data(exchange, "ETH/USDT", "1m", 500) + File "main.py", line 2351, in fetch_new_data + return await env.fetch_initial_data(exchange, symbol, timeframe, limit) + ^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: 'mexc' object has no attribute 'fetch_initial_data' + +2025-03-10 16:02:07,447 - INFO - Exchange connection closed +2025-03-10 16:05:04,475 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 16:05:04,494 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 16:05:04,495 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:04,495 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:08,177 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 16:05:08,194 - INFO - Initialized environment with 500 candles +2025-03-10 16:05:10,332 - INFO - Starting continuous training mode. Press Ctrl+C to stop. +2025-03-10 16:05:10,333 - INFO - Starting training batch 1 +2025-03-10 16:05:10,333 - INFO - Refreshing data for new training batch +2025-03-10 16:05:10,333 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:10,655 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 16:05:10,666 - INFO - Initialized environment with 500 candles +2025-03-10 16:05:10,666 - INFO - Updated environment with fresh candles +2025-03-10 16:05:10,667 - INFO - Starting training on device: cuda +2025-03-10 16:05:10,667 - INFO - Loading best model from models/trading_agent_best_pnl.pt to resume training +2025-03-10 16:05:10,667 - INFO - Loading model from models/trading_agent_best_pnl.pt +2025-03-10 16:05:10,810 - INFO - Model loaded successfully with weights_only=True +2025-03-10 16:05:10,810 - INFO - Resumed with best metrics - Reward: 202.74, PnL: $4.37, Win Rate: 66.7% +2025-03-10 16:05:10,810 - INFO - Refreshing data for episode 0 +2025-03-10 16:05:10,810 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:11,133 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:11,143 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:12,442 - INFO - Episode 0: Reward=-0.66, Balance=$100.00, Win Rate=0.0%, Trades=0, Episode PnL=$0.00, Total PnL=$0.00, Max Drawdown=0.0%, Pred Accuracy=99.4% +2025-03-10 16:05:12,577 - INFO - Model saved to checkpoints/trading_agent_episode_0.pt +2025-03-10 16:05:12,578 - INFO - Checkpoint saved at episode 0 +2025-03-10 16:05:13,603 - INFO - Visualization saved for episode 0 +2025-03-10 16:05:15,066 - INFO - Visualization saved for episode 0 +2025-03-10 16:05:15,084 - INFO - Refreshing data for episode 1 +2025-03-10 16:05:15,084 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:15,405 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:15,414 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:16,546 - INFO - OPENED SHORT at 2104.22 | Stop loss: 2114.7807749999997 | Take profit: 2072.5971874999996 +2025-03-10 16:05:16,736 - INFO - CLOSED short at 2084.95 | PnL: 0.92% | $1.60 +2025-03-10 16:05:16,737 - INFO - OPENED LONG at 2084.95 | Stop loss: 2074.4855749999997 | Take profit: 2116.2837624999997 +2025-03-10 16:05:16,911 - INFO - STOP LOSS hit for long at 2074.4855749999997 | PnL: -0.50% | $-1.20 +2025-03-10 16:05:16,976 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.60, Avg Loss=$-1.20 +2025-03-10 16:05:16,977 - INFO - Episode 1: Reward=14.49, Balance=$100.40, Win Rate=50.0%, Trades=2, Episode PnL=$0.40, Total PnL=$0.40, Max Drawdown=0.0%, Pred Accuracy=99.5% +2025-03-10 16:05:16,977 - INFO - Refreshing data for episode 2 +2025-03-10 16:05:16,977 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:17,297 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:17,306 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:18,403 - INFO - OPENED LONG at 2090.59 | Stop loss: 2080.0973750000003 | Take profit: 2122.0083625 +2025-03-10 16:05:18,460 - INFO - CLOSED long at 2080.58 | PnL: -0.48% | $-1.14 +2025-03-10 16:05:18,667 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.00, Avg Loss=$-1.14 +2025-03-10 16:05:18,667 - INFO - Episode 2: Reward=10.20, Balance=$98.86, Win Rate=0.0%, Trades=1, Episode PnL=$-1.14, Total PnL=$-0.73, Max Drawdown=1.1%, Pred Accuracy=99.5% +2025-03-10 16:05:18,668 - INFO - Refreshing data for episode 3 +2025-03-10 16:05:18,668 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:18,966 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:18,975 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:19,633 - INFO - OPENED LONG at 2113.28 | Stop loss: 2102.673925 | Take profit: 2145.0387125 +2025-03-10 16:05:19,704 - INFO - STOP LOSS hit for long at 2102.673925 | PnL: -0.50% | $-1.18 +2025-03-10 16:05:19,951 - INFO - OPENED SHORT at 2105.26 | Stop loss: 2115.825975 | Take profit: 2073.6215875000003 +2025-03-10 16:05:20,280 - INFO - TAKE PROFIT hit for short at 2073.6215875000003 | PnL: 1.50% | $2.72 +2025-03-10 16:05:20,342 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$2.72, Avg Loss=$-1.18 +2025-03-10 16:05:20,343 - INFO - Episode 3: Reward=15.74, Balance=$101.54, Win Rate=50.0%, Trades=2, Episode PnL=$1.54, Total PnL=$0.80, Max Drawdown=1.2%, Pred Accuracy=99.5% +2025-03-10 16:05:20,344 - INFO - Refreshing data for episode 4 +2025-03-10 16:05:20,344 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:20,640 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:20,649 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:20,746 - INFO - OPENED LONG at 2126.13 | Stop loss: 2115.4596607142857 | Take profit: 2158.0814839285713 +2025-03-10 16:05:21,110 - INFO - STOP LOSS hit for long at 2115.4596607142857 | PnL: -0.50% | $-1.18 +2025-03-10 16:05:21,976 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.00, Avg Loss=$-1.18 +2025-03-10 16:05:21,976 - INFO - Episode 4: Reward=7.23, Balance=$98.82, Win Rate=0.0%, Trades=1, Episode PnL=$-1.18, Total PnL=$-0.38, Max Drawdown=1.2%, Pred Accuracy=99.5% +2025-03-10 16:05:21,976 - INFO - Refreshing data for episode 5 +2025-03-10 16:05:21,977 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:22,288 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:22,299 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:23,202 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.629689285714 | Take profit: 2086.1704660714286 +2025-03-10 16:05:23,946 - INFO - CLOSED short at 2105.26 | PnL: 0.60% | $0.98 +2025-03-10 16:05:24,336 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.98, Avg Loss=$0.00 +2025-03-10 16:05:24,337 - INFO - Episode 5: Reward=22.27, Balance=$100.98, Win Rate=100.0%, Trades=1, Episode PnL=$0.98, Total PnL=$0.61, Max Drawdown=0.0%, Pred Accuracy=99.6% +2025-03-10 16:05:24,338 - INFO - Refreshing data for episode 6 +2025-03-10 16:05:24,338 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:24,643 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:24,653 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:24,966 - INFO - OPENED LONG at 2121.42 | Stop loss: 2110.773210714286 | Take profit: 2153.3008339285716 +2025-03-10 16:05:25,011 - INFO - CLOSED long at 2119.02 | PnL: -0.11% | $-0.42 +2025-03-10 16:05:25,055 - INFO - OPENED LONG at 2124.9 | Stop loss: 2114.235810714286 | Take profit: 2156.8330339285712 +2025-03-10 16:05:25,082 - INFO - CLOSED long at 2128.33 | PnL: 0.16% | $0.12 +2025-03-10 16:05:25,311 - INFO - OPENED LONG at 2115.11 | Stop loss: 2104.494760714286 | Take profit: 2146.896183928571 +2025-03-10 16:05:25,336 - INFO - CLOSED long at 2114.32 | PnL: -0.04% | $-0.27 +2025-03-10 16:05:25,360 - INFO - OPENED LONG at 2114.57 | Stop loss: 2103.957460714286 | Take profit: 2146.348083928571 +2025-03-10 16:05:25,403 - INFO - CLOSED long at 2113.28 | PnL: -0.06% | $-0.31 +2025-03-10 16:05:25,533 - INFO - OPENED LONG at 2100.05 | Stop loss: 2089.510060714286 | Take profit: 2131.610283928572 +2025-03-10 16:05:25,557 - INFO - CLOSED long at 2096.36 | PnL: -0.18% | $-0.54 +2025-03-10 16:05:25,695 - INFO - OPENED LONG at 2104.22 | Stop loss: 2093.6592107142856 | Take profit: 2135.8428339285715 +2025-03-10 16:05:25,789 - INFO - CLOSED long at 2099.22 | PnL: -0.24% | $-0.65 +2025-03-10 16:05:25,866 - INFO - OPENED LONG at 2098.66 | Stop loss: 2088.1270107142855 | Take profit: 2130.1994339285716 +2025-03-10 16:05:25,892 - INFO - CLOSED long at 2090.59 | PnL: -0.38% | $-0.93 +2025-03-10 16:05:25,940 - INFO - OPENED LONG at 2084.95 | Stop loss: 2074.4855607142854 | Take profit: 2116.283783928571 +2025-03-10 16:05:26,069 - INFO - CLOSED long at 2084.11 | PnL: -0.04% | $-0.27 +2025-03-10 16:05:26,092 - INFO - OPENED LONG at 2083.07 | Stop loss: 2072.614960714286 | Take profit: 2114.375583928572 +2025-03-10 16:05:26,133 - INFO - STOP LOSS hit for long at 2072.614960714286 | PnL: -0.50% | $-1.14 +2025-03-10 16:05:26,173 - INFO - OPENED LONG at 2051.0 | Stop loss: 2040.7053107142856 | Take profit: 2081.824533928572 +2025-03-10 16:05:26,193 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.12, Avg Loss=$-0.57 +2025-03-10 16:05:26,195 - INFO - Episode 6: Reward=-1.37, Balance=$95.59, Win Rate=11.1%, Trades=9, Episode PnL=$-4.41, Total PnL=$-3.80, Max Drawdown=4.4%, Pred Accuracy=99.6% +2025-03-10 16:05:26,195 - INFO - Refreshing data for episode 7 +2025-03-10 16:05:26,196 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:26,528 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:26,539 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:26,563 - INFO - OPENED LONG at 2123.61 | Stop loss: 2112.9518035714286 | Take profit: 2155.5243696428574 +2025-03-10 16:05:26,631 - INFO - CLOSED long at 2125.77 | PnL: 0.10% | $0.00 +2025-03-10 16:05:26,656 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.8007964285716 | Take profit: 2094.177830357143 +2025-03-10 16:05:26,677 - INFO - CLOSED short at 2126.32 | PnL: -0.01% | $-0.21 +2025-03-10 16:05:26,677 - INFO - OPENED LONG at 2126.32 | Stop loss: 2115.6482535714285 | Take profit: 2158.2750196428574 +2025-03-10 16:05:26,847 - INFO - CLOSED long at 2121.8 | PnL: -0.21% | $-0.61 +2025-03-10 16:05:26,892 - INFO - OPENED LONG at 2116.52 | Stop loss: 2105.8972535714283 | Take profit: 2148.3280196428573 +2025-03-10 16:05:27,034 - INFO - CLOSED long at 2116.81 | PnL: 0.01% | $-0.17 +2025-03-10 16:05:27,034 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.4341964285713 | Take profit: 2084.997630357143 +2025-03-10 16:05:27,056 - INFO - CLOSED short at 2114.78 | PnL: 0.10% | $-0.01 +2025-03-10 16:05:27,057 - INFO - OPENED LONG at 2114.78 | Stop loss: 2104.165953571429 | Take profit: 2146.5619196428574 +2025-03-10 16:05:27,144 - INFO - CLOSED long at 2115.21 | PnL: 0.02% | $-0.15 +2025-03-10 16:05:27,144 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.8261964285716 | Take profit: 2083.421630357143 +2025-03-10 16:05:27,767 - INFO - TAKE PROFIT hit for short at 2083.421630357143 | PnL: 1.50% | $2.72 +2025-03-10 16:05:27,826 - INFO - OPENED SHORT at 2084.25 | Stop loss: 2094.7113964285713 | Take profit: 2052.9260303571427 +2025-03-10 16:05:27,972 - INFO - TAKE PROFIT hit for short at 2052.9260303571427 | PnL: 1.50% | $2.80 +2025-03-10 16:05:28,020 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.84, Avg Loss=$-0.23 +2025-03-10 16:05:28,021 - INFO - Episode 7: Reward=10.59, Balance=$104.36, Win Rate=37.5%, Trades=8, Episode PnL=$4.69, Total PnL=$0.56, Max Drawdown=0.8%, Pred Accuracy=99.5% +2025-03-10 16:05:28,160 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 16:05:28,160 - INFO - New best PnL model saved: $4.69 +2025-03-10 16:05:28,161 - INFO - Refreshing data for episode 8 +2025-03-10 16:05:28,161 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:28,473 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:28,482 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:28,505 - INFO - OPENED SHORT at 2123.61 | Stop loss: 2134.2683142857145 | Take profit: 2091.6954535714285 +2025-03-10 16:05:29,242 - INFO - TAKE PROFIT hit for short at 2091.6954535714285 | PnL: 1.50% | $2.75 +2025-03-10 16:05:29,262 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5905142857146 | Take profit: 2068.488853571429 +2025-03-10 16:05:29,798 - INFO - CLOSED short at 2083.07 | PnL: 0.81% | $1.43 +2025-03-10 16:05:29,827 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.4856142857143 | Take profit: 2043.8835535714286 +2025-03-10 16:05:29,912 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.09, Avg Loss=$0.00 +2025-03-10 16:05:29,913 - INFO - Episode 8: Reward=29.51, Balance=$104.18, Win Rate=100.0%, Trades=2, Episode PnL=$4.18, Total PnL=$4.74, Max Drawdown=0.0%, Pred Accuracy=99.5% +2025-03-10 16:05:29,913 - INFO - Refreshing data for episode 9 +2025-03-10 16:05:29,914 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:30,227 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:30,237 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:30,260 - INFO - OPENED SHORT at 2123.61 | Stop loss: 2134.2683142857145 | Take profit: 2091.6954535714285 +2025-03-10 16:05:30,830 - INFO - CLOSED short at 2114.1 | PnL: 0.45% | $0.68 +2025-03-10 16:05:30,831 - INFO - OPENED LONG at 2114.1 | Stop loss: 2103.4892357142858 | Take profit: 2145.8718964285713 +2025-03-10 16:05:30,853 - INFO - CLOSED long at 2115.11 | PnL: 0.05% | $-0.10 +2025-03-10 16:05:30,853 - INFO - OPENED SHORT at 2115.11 | Stop loss: 2125.7258142857145 | Take profit: 2083.3229535714286 +2025-03-10 16:05:30,874 - INFO - CLOSED short at 2114.32 | PnL: 0.04% | $-0.12 +2025-03-10 16:05:30,874 - INFO - OPENED LONG at 2114.32 | Stop loss: 2103.708135714286 | Take profit: 2146.0951964285714 +2025-03-10 16:05:30,899 - INFO - CLOSED long at 2114.57 | PnL: 0.01% | $-0.17 +2025-03-10 16:05:30,899 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.1831142857145 | Take profit: 2082.7910535714286 +2025-03-10 16:05:31,212 - INFO - CLOSED short at 2100.0 | PnL: 0.69% | $1.16 +2025-03-10 16:05:31,235 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3844142857142 | Take profit: 2071.2271535714285 +2025-03-10 16:05:31,375 - INFO - CLOSED short at 2094.16 | PnL: 0.41% | $0.62 +2025-03-10 16:05:31,403 - INFO - OPENED SHORT at 2096.96 | Stop loss: 2107.4850642857145 | Take profit: 2065.4452035714285 +2025-03-10 16:05:31,684 - INFO - TAKE PROFIT hit for short at 2065.4452035714285 | PnL: 1.50% | $2.81 +2025-03-10 16:05:31,710 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.295264285714 | Take profit: 2020.1746035714286 +2025-03-10 16:05:31,733 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.32, Avg Loss=$-0.13 +2025-03-10 16:05:31,734 - INFO - Episode 9: Reward=27.80, Balance=$104.87, Win Rate=57.1%, Trades=7, Episode PnL=$5.15, Total PnL=$9.61, Max Drawdown=0.0%, Pred Accuracy=99.5% +2025-03-10 16:05:31,873 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 16:05:31,874 - INFO - New best PnL model saved: $5.15 +2025-03-10 16:05:31,874 - INFO - Refreshing data for episode 10 +2025-03-10 16:05:31,875 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:32,164 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:32,173 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:32,861 - INFO - OPENED SHORT at 2123.61 | Stop loss: 2134.269085714286 | Take profit: 2091.6942964285718 +2025-03-10 16:05:33,185 - INFO - CLOSED short at 2119.02 | PnL: 0.22% | $0.23 +2025-03-10 16:05:33,205 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6058357142856 | Take profit: 2089.0840464285716 +2025-03-10 16:05:33,314 - INFO - CLOSED short at 2116.81 | PnL: 0.20% | $0.19 +2025-03-10 16:05:33,314 - INFO - OPENED LONG at 2116.81 | Stop loss: 2106.1849142857145 | Take profit: 2148.623703571429 +2025-03-10 16:05:33,338 - INFO - CLOSED long at 2114.78 | PnL: -0.10% | $-0.39 +2025-03-10 16:05:33,339 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.394935714286 | Take profit: 2082.9967464285714 +2025-03-10 16:05:34,200 - INFO - TAKE PROFIT hit for short at 2082.9967464285714 | PnL: 1.50% | $2.75 +2025-03-10 16:05:34,225 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2147857142854 | Take profit: 2053.4171964285715 +2025-03-10 16:05:34,410 - INFO - TAKE PROFIT hit for short at 2053.4171964285715 | PnL: 1.50% | $2.83 +2025-03-10 16:05:34,434 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.2960357142856 | Take profit: 2020.1734464285714 +2025-03-10 16:05:34,455 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.50, Avg Loss=$-0.39 +2025-03-10 16:05:34,455 - INFO - Episode 10: Reward=14.43, Balance=$105.61, Win Rate=80.0%, Trades=5, Episode PnL=$6.00, Total PnL=$15.23, Max Drawdown=0.0%, Pred Accuracy=99.4% +2025-03-10 16:05:34,597 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 16:05:34,598 - INFO - New best PnL model saved: $6.00 +2025-03-10 16:05:34,740 - INFO - Model saved to checkpoints/trading_agent_episode_10.pt +2025-03-10 16:05:34,741 - INFO - Checkpoint saved at episode 10 +2025-03-10 16:05:35,918 - INFO - Visualization saved for episode 10 +2025-03-10 16:05:37,501 - INFO - Visualization saved for episode 10 +2025-03-10 16:05:37,516 - INFO - Refreshing data for episode 11 +2025-03-10 16:05:37,517 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:37,824 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:37,834 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:37,919 - INFO - OPENED SHORT at 2123.61 | Stop loss: 2134.2699214285713 | Take profit: 2091.693042857143 +2025-03-10 16:05:38,295 - INFO - CLOSED short at 2116.52 | PnL: 0.33% | $0.46 +2025-03-10 16:05:38,296 - INFO - OPENED LONG at 2116.52 | Stop loss: 2105.8955285714287 | Take profit: 2148.330607142857 +2025-03-10 16:05:38,318 - INFO - CLOSED long at 2119.02 | PnL: 0.12% | $0.04 +2025-03-10 16:05:38,319 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6569714285715 | Take profit: 2087.1718928571427 +2025-03-10 16:05:38,341 - INFO - CLOSED short at 2120.96 | PnL: -0.09% | $-0.38 +2025-03-10 16:05:38,365 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.5663714285715 | Take profit: 2092.963692857143 +2025-03-10 16:05:38,793 - INFO - TAKE PROFIT hit for short at 2092.963692857143 | PnL: 1.50% | $2.75 +2025-03-10 16:05:38,817 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5921214285718 | Take profit: 2068.486442857143 +2025-03-10 16:05:39,380 - INFO - TAKE PROFIT hit for short at 2068.486442857143 | PnL: 1.50% | $2.83 +2025-03-10 16:05:39,403 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5833714285714 | Take profit: 2017.512692857143 +2025-03-10 16:05:39,446 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.52, Avg Loss=$-0.38 +2025-03-10 16:05:39,447 - INFO - Episode 11: Reward=14.54, Balance=$105.70, Win Rate=80.0%, Trades=5, Episode PnL=$5.67, Total PnL=$20.93, Max Drawdown=0.0%, Pred Accuracy=99.1% +2025-03-10 16:05:39,447 - INFO - Refreshing data for episode 12 +2025-03-10 16:05:39,447 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:39,754 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:39,764 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:39,787 - INFO - OPENED SHORT at 2123.61 | Stop loss: 2134.270225 | Take profit: 2091.6925875 +2025-03-10 16:05:40,341 - INFO - CLOSED short at 2116.06 | PnL: 0.36% | $0.50 +2025-03-10 16:05:40,365 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.8282249999997 | Take profit: 2083.4185875000003 +2025-03-10 16:05:40,782 - INFO - CLOSED short at 2103.41 | PnL: 0.56% | $0.90 +2025-03-10 16:05:40,783 - INFO - OPENED LONG at 2103.41 | Stop loss: 2092.850775 | Take profit: 2135.0244125 +2025-03-10 16:05:40,803 - INFO - CLOSED long at 2104.22 | PnL: 0.04% | $-0.12 +2025-03-10 16:05:40,804 - INFO - OPENED SHORT at 2104.22 | Stop loss: 2114.7832750000002 | Take profit: 2072.5934374999997 +2025-03-10 16:05:41,201 - INFO - TAKE PROFIT hit for short at 2072.5934374999997 | PnL: 1.50% | $2.79 +2025-03-10 16:05:41,222 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5836750000003 | Take profit: 2017.5122375 +2025-03-10 16:05:41,270 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.40, Avg Loss=$-0.12 +2025-03-10 16:05:41,271 - INFO - Episode 12: Reward=15.28, Balance=$104.07, Win Rate=75.0%, Trades=4, Episode PnL=$4.19, Total PnL=$25.00, Max Drawdown=0.0%, Pred Accuracy=98.7% +2025-03-10 16:05:41,271 - INFO - Refreshing data for episode 13 +2025-03-10 16:05:41,271 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:41,581 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:41,594 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:41,620 - INFO - OPENED SHORT at 2123.61 | Stop loss: 2134.271653571429 | Take profit: 2091.690444642857 +2025-03-10 16:05:42,482 - INFO - TAKE PROFIT hit for short at 2091.690444642857 | PnL: 1.50% | $2.75 +2025-03-10 16:05:42,505 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5938535714286 | Take profit: 2068.483844642857 +2025-03-10 16:05:43,062 - INFO - TAKE PROFIT hit for short at 2068.483844642857 | PnL: 1.50% | $2.82 +2025-03-10 16:05:43,086 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.585103571429 | Take profit: 2017.5100946428572 +2025-03-10 16:05:43,129 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.79, Avg Loss=$0.00 +2025-03-10 16:05:43,130 - INFO - Episode 13: Reward=0.27, Balance=$105.57, Win Rate=100.0%, Trades=2, Episode PnL=$5.57, Total PnL=$30.57, Max Drawdown=0.0%, Pred Accuracy=97.5% +2025-03-10 16:05:43,130 - INFO - Refreshing data for episode 14 +2025-03-10 16:05:43,130 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:43,437 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:43,447 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:43,477 - INFO - OPENED SHORT at 2123.61 | Stop loss: 2134.271653571429 | Take profit: 2091.690444642857 +2025-03-10 16:05:43,523 - INFO - CLOSED short at 2125.08 | PnL: -0.07% | $-0.33 +2025-03-10 16:05:43,524 - INFO - OPENED LONG at 2125.08 | Stop loss: 2114.4109964285713 | Take profit: 2157.0216053571426 +2025-03-10 16:05:43,546 - INFO - CLOSED long at 2125.77 | PnL: 0.03% | $-0.13 +2025-03-10 16:05:43,546 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.442453571429 | Take profit: 2093.818044642857 +2025-03-10 16:05:43,908 - INFO - CLOSED short at 2128.33 | PnL: -0.12% | $-0.43 +2025-03-10 16:05:43,909 - INFO - OPENED LONG at 2128.33 | Stop loss: 2117.644746428571 | Take profit: 2160.320355357143 +2025-03-10 16:05:43,934 - INFO - CLOSED long at 2124.77 | PnL: -0.17% | $-0.52 +2025-03-10 16:05:43,934 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4374535714287 | Take profit: 2092.833044642857 +2025-03-10 16:05:44,332 - INFO - TAKE PROFIT hit for short at 2092.833044642857 | PnL: 1.50% | $2.71 +2025-03-10 16:05:44,352 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5938535714286 | Take profit: 2068.483844642857 +2025-03-10 16:05:44,951 - INFO - TAKE PROFIT hit for short at 2068.483844642857 | PnL: 1.50% | $2.78 +2025-03-10 16:05:44,971 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.585103571429 | Take profit: 2017.5100946428572 +2025-03-10 16:05:45,010 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$2.75, Avg Loss=$-0.35 +2025-03-10 16:05:45,012 - INFO - Episode 14: Reward=-6.27, Balance=$104.08, Win Rate=33.3%, Trades=6, Episode PnL=$4.73, Total PnL=$34.65, Max Drawdown=0.0%, Pred Accuracy=97.3% +2025-03-10 16:05:45,012 - INFO - Refreshing data for episode 15 +2025-03-10 16:05:45,012 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:45,315 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:45,325 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:46,011 - INFO - OPENED SHORT at 2123.61 | Stop loss: 2134.271653571429 | Take profit: 2091.690444642857 +2025-03-10 16:05:46,964 - INFO - TAKE PROFIT hit for short at 2091.690444642857 | PnL: 1.50% | $2.75 +2025-03-10 16:05:46,985 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5938535714286 | Take profit: 2068.483844642857 +2025-03-10 16:05:47,147 - INFO - CLOSED short at 2103.41 | PnL: -0.16% | $-0.52 +2025-03-10 16:05:47,308 - INFO - OPENED SHORT at 2099.22 | Stop loss: 2109.7597035714284 | Take profit: 2067.666294642857 +2025-03-10 16:05:47,735 - INFO - TAKE PROFIT hit for short at 2067.666294642857 | PnL: 1.50% | $2.81 +2025-03-10 16:05:47,778 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$-0.52 +2025-03-10 16:05:47,779 - INFO - Episode 15: Reward=-2.73, Balance=$105.04, Win Rate=66.7%, Trades=3, Episode PnL=$5.04, Total PnL=$39.69, Max Drawdown=0.5%, Pred Accuracy=97.8% +2025-03-10 16:05:47,779 - INFO - Refreshing data for episode 16 +2025-03-10 16:05:47,780 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:48,096 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:48,106 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:48,691 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.397503571429 | Take profit: 2082.992894642857 +2025-03-10 16:05:49,501 - INFO - TAKE PROFIT hit for short at 2082.992894642857 | PnL: 1.50% | $2.75 +2025-03-10 16:05:49,530 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2173535714287 | Take profit: 2053.4133446428573 +2025-03-10 16:05:49,724 - INFO - TAKE PROFIT hit for short at 2053.4133446428573 | PnL: 1.50% | $2.82 +2025-03-10 16:05:49,747 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.298603571429 | Take profit: 2020.1695946428572 +2025-03-10 16:05:49,766 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.79, Avg Loss=$0.00 +2025-03-10 16:05:49,767 - INFO - Episode 16: Reward=-4.72, Balance=$105.57, Win Rate=100.0%, Trades=2, Episode PnL=$5.57, Total PnL=$45.26, Max Drawdown=0.0%, Pred Accuracy=98.1% +2025-03-10 16:05:49,768 - INFO - Refreshing data for episode 17 +2025-03-10 16:05:49,768 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:50,099 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:50,108 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:50,183 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7490035714286 | Take profit: 2093.1383946428573 +2025-03-10 16:05:50,508 - INFO - CLOSED short at 2116.52 | PnL: 0.40% | $0.59 +2025-03-10 16:05:50,533 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6587035714283 | Take profit: 2087.169294642857 +2025-03-10 16:05:51,474 - INFO - TAKE PROFIT hit for short at 2087.169294642857 | PnL: 1.50% | $2.77 +2025-03-10 16:05:51,494 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0265035714287 | Take profit: 2049.3058946428573 +2025-03-10 16:05:51,669 - INFO - TAKE PROFIT hit for short at 2049.3058946428573 | PnL: 1.50% | $2.84 +2025-03-10 16:05:51,689 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.298603571429 | Take profit: 2020.1695946428572 +2025-03-10 16:05:51,709 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.07, Avg Loss=$0.00 +2025-03-10 16:05:51,710 - INFO - Episode 17: Reward=1.09, Balance=$106.20, Win Rate=100.0%, Trades=3, Episode PnL=$6.20, Total PnL=$51.46, Max Drawdown=0.0%, Pred Accuracy=98.2% +2025-03-10 16:05:51,850 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 16:05:51,851 - INFO - New best PnL model saved: $6.20 +2025-03-10 16:05:51,851 - INFO - Refreshing data for episode 18 +2025-03-10 16:05:51,851 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:52,181 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:52,190 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:52,213 - INFO - OPENED SHORT at 2123.61 | Stop loss: 2134.271653571429 | Take profit: 2091.690444642857 +2025-03-10 16:05:53,012 - INFO - TAKE PROFIT hit for short at 2091.690444642857 | PnL: 1.50% | $2.75 +2025-03-10 16:05:53,059 - INFO - OPENED SHORT at 2096.36 | Stop loss: 2106.885403571429 | Take profit: 2064.8491946428576 +2025-03-10 16:05:53,636 - INFO - TAKE PROFIT hit for short at 2064.8491946428576 | PnL: 1.50% | $2.82 +2025-03-10 16:05:53,658 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.298603571429 | Take profit: 2020.1695946428572 +2025-03-10 16:05:53,683 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.79, Avg Loss=$0.00 +2025-03-10 16:05:53,683 - INFO - Episode 18: Reward=-0.06, Balance=$105.57, Win Rate=100.0%, Trades=2, Episode PnL=$5.57, Total PnL=$57.04, Max Drawdown=0.0%, Pred Accuracy=98.0% +2025-03-10 16:05:53,684 - INFO - Refreshing data for episode 19 +2025-03-10 16:05:53,684 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:54,028 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:54,037 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:54,060 - INFO - OPENED SHORT at 2123.61 | Stop loss: 2134.271653571429 | Take profit: 2091.690444642857 +2025-03-10 16:05:54,306 - INFO - CLOSED short at 2120.54 | PnL: 0.14% | $0.09 +2025-03-10 16:05:54,327 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.6336035714285 | Take profit: 2086.164594642857 +2025-03-10 16:05:54,857 - INFO - CLOSED short at 2100.05 | PnL: 0.85% | $1.47 +2025-03-10 16:05:54,934 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.7145535714285 | Take profit: 2064.681744642857 +2025-03-10 16:05:55,476 - INFO - TAKE PROFIT hit for short at 2064.681744642857 | PnL: 1.50% | $2.79 +2025-03-10 16:05:55,517 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.45, Avg Loss=$0.00 +2025-03-10 16:05:55,518 - INFO - Episode 19: Reward=1.69, Balance=$104.35, Win Rate=100.0%, Trades=3, Episode PnL=$4.35, Total PnL=$61.38, Max Drawdown=0.0%, Pred Accuracy=97.9% +2025-03-10 16:05:55,518 - INFO - Refreshing data for episode 20 +2025-03-10 16:05:55,518 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:05:55,833 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:05:55,843 - INFO - Initialized environment with 100 candles +2025-03-10 16:05:56,515 - INFO - OPENED SHORT at 2123.61 | Stop loss: 2134.271653571429 | Take profit: 2091.690444642857 +2025-03-10 16:05:57,104 - INFO - CLOSED short at 2115.21 | PnL: 0.40% | $0.58 +2025-03-10 16:05:57,359 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5938535714286 | Take profit: 2068.483844642857 +2025-03-10 16:05:57,446 - INFO - CLOSED short at 2096.19 | PnL: 0.18% | $0.17 +2025-03-10 16:05:57,471 - INFO - OPENED SHORT at 2100.0 | Stop loss: 2110.543603571429 | Take profit: 2068.434594642857 +2025-03-10 16:05:57,496 - INFO - CLOSED short at 2102.83 | PnL: -0.13% | $-0.46 +2025-03-10 16:05:57,969 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.37, Avg Loss=$-0.46 +2025-03-10 16:05:57,970 - INFO - Episode 20: Reward=-6.41, Balance=$100.28, Win Rate=66.7%, Trades=3, Episode PnL=$0.28, Total PnL=$61.66, Max Drawdown=0.5%, Pred Accuracy=97.8% +2025-03-10 16:05:58,114 - INFO - Model saved to checkpoints/trading_agent_episode_20.pt +2025-03-10 16:05:58,115 - INFO - Checkpoint saved at episode 20 +2025-03-10 16:05:58,115 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:05:59,100 - INFO - Visualization saved for episode 20 +2025-03-10 16:06:00,960 - INFO - Visualization saved for episode 20 +2025-03-10 16:06:00,971 - INFO - Refreshing data for episode 21 +2025-03-10 16:06:00,971 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:01,318 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:01,327 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:02,088 - INFO - OPENED LONG at 2114.32 | Stop loss: 2103.7047964285716 | Take profit: 2146.100205357143 +2025-03-10 16:06:02,109 - INFO - CLOSED long at 2114.57 | PnL: 0.01% | $-0.17 +2025-03-10 16:06:02,259 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.860403571429 | Take profit: 2059.9241946428574 +2025-03-10 16:06:02,299 - INFO - CLOSED short at 2096.36 | PnL: -0.24% | $-0.66 +2025-03-10 16:06:02,344 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.332803571429 | Take profit: 2058.426994642857 +2025-03-10 16:06:02,375 - INFO - CLOSED short at 2096.19 | PnL: -0.30% | $-0.78 +2025-03-10 16:06:02,467 - INFO - OPENED SHORT at 2104.22 | Stop loss: 2114.7847035714285 | Take profit: 2072.591294642857 +2025-03-10 16:06:02,604 - INFO - CLOSED short at 2096.96 | PnL: 0.35% | $0.47 +2025-03-10 16:06:02,643 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.086553571429 | Take profit: 2059.165744642857 +2025-03-10 16:06:02,665 - INFO - CLOSED short at 2090.99 | PnL: -0.02% | $-0.23 +2025-03-10 16:06:02,772 - INFO - OPENED SHORT at 2084.25 | Stop loss: 2094.7148535714286 | Take profit: 2052.920844642857 +2025-03-10 16:06:02,793 - INFO - CLOSED short at 2085.37 | PnL: -0.05% | $-0.30 +2025-03-10 16:06:02,793 - INFO - OPENED LONG at 2085.37 | Stop loss: 2074.8995464285713 | Take profit: 2116.715955357143 +2025-03-10 16:06:02,814 - INFO - CLOSED long at 2084.11 | PnL: -0.06% | $-0.31 +2025-03-10 16:06:02,899 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.585103571429 | Take profit: 2017.5100946428572 +2025-03-10 16:06:02,920 - INFO - CLOSED short at 2051.0 | PnL: -0.13% | $-0.44 +2025-03-10 16:06:02,940 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.47, Avg Loss=$-0.41 +2025-03-10 16:06:02,940 - INFO - Episode 21: Reward=-19.81, Balance=$97.57, Win Rate=12.5%, Trades=8, Episode PnL=$-2.43, Total PnL=$59.23, Max Drawdown=2.4%, Pred Accuracy=97.9% +2025-03-10 16:06:02,942 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:02,942 - INFO - Refreshing data for episode 22 +2025-03-10 16:06:02,942 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:03,262 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:03,271 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:03,315 - INFO - OPENED SHORT at 2123.02 | Stop loss: 2133.6787035714287 | Take profit: 2091.109294642857 +2025-03-10 16:06:03,337 - INFO - CLOSED short at 2125.08 | PnL: -0.10% | $-0.39 +2025-03-10 16:06:03,360 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.442453571429 | Take profit: 2093.818044642857 +2025-03-10 16:06:03,401 - INFO - CLOSED short at 2126.32 | PnL: -0.03% | $-0.25 +2025-03-10 16:06:03,423 - INFO - OPENED SHORT at 2126.7 | Stop loss: 2137.377103571428 | Take profit: 2094.7340946428567 +2025-03-10 16:06:03,608 - INFO - CLOSED short at 2116.52 | PnL: 0.48% | $0.74 +2025-03-10 16:06:03,629 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6587035714283 | Take profit: 2087.169294642857 +2025-03-10 16:06:03,776 - INFO - CLOSED short at 2114.78 | PnL: 0.20% | $0.20 +2025-03-10 16:06:03,776 - INFO - OPENED LONG at 2114.78 | Stop loss: 2104.1624964285716 | Take profit: 2146.567105357143 +2025-03-10 16:06:03,801 - INFO - CLOSED long at 2115.52 | PnL: 0.03% | $-0.13 +2025-03-10 16:06:03,801 - INFO - OPENED SHORT at 2115.52 | Stop loss: 2126.1412035714284 | Take profit: 2083.7217946428573 +2025-03-10 16:06:03,918 - INFO - CLOSED short at 2115.11 | PnL: 0.02% | $-0.16 +2025-03-10 16:06:03,947 - INFO - OPENED SHORT at 2114.32 | Stop loss: 2124.9352035714287 | Take profit: 2082.5397946428575 +2025-03-10 16:06:04,148 - INFO - CLOSED short at 2096.36 | PnL: 0.85% | $1.47 +2025-03-10 16:06:04,167 - INFO - OPENED SHORT at 2089.04 | Stop loss: 2099.5288035714284 | Take profit: 2057.638994642857 +2025-03-10 16:06:04,241 - INFO - STOP LOSS hit for short at 2099.5288035714284 | PnL: -0.50% | $-1.20 +2025-03-10 16:06:04,264 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3877535714287 | Take profit: 2071.222144642857 +2025-03-10 16:06:04,449 - INFO - CLOSED short at 2096.96 | PnL: 0.28% | $0.35 +2025-03-10 16:06:04,478 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.1969035714283 | Take profit: 2067.114694642857 +2025-03-10 16:06:04,683 - INFO - CLOSED short at 2083.07 | PnL: 0.74% | $1.27 +2025-03-10 16:06:04,704 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.4889535714287 | Take profit: 2043.8785446428574 +2025-03-10 16:06:04,727 - INFO - CLOSED short at 2067.71 | PnL: 0.35% | $0.51 +2025-03-10 16:06:04,751 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.585103571429 | Take profit: 2017.5100946428572 +2025-03-10 16:06:04,793 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$0.76, Avg Loss=$-0.42 +2025-03-10 16:06:04,793 - INFO - Episode 22: Reward=2.55, Balance=$102.42, Win Rate=54.5%, Trades=11, Episode PnL=$2.54, Total PnL=$61.65, Max Drawdown=1.2%, Pred Accuracy=98.0% +2025-03-10 16:06:04,794 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:04,794 - INFO - Refreshing data for episode 23 +2025-03-10 16:06:04,794 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:05,116 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:05,125 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:05,173 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7473678571428 | Take profit: 2093.1408482142856 +2025-03-10 16:06:05,220 - INFO - CLOSED short at 2126.13 | PnL: -0.05% | $-0.29 +2025-03-10 16:06:05,220 - INFO - OPENED LONG at 2126.13 | Stop loss: 2115.457382142857 | Take profit: 2158.0849017857145 +2025-03-10 16:06:05,241 - INFO - CLOSED long at 2126.32 | PnL: 0.01% | $-0.18 +2025-03-10 16:06:05,268 - INFO - OPENED SHORT at 2126.7 | Stop loss: 2137.3754678571427 | Take profit: 2094.7365482142854 +2025-03-10 16:06:05,416 - INFO - CLOSED short at 2118.0 | PnL: 0.41% | $0.60 +2025-03-10 16:06:05,438 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.450967857143 | Take profit: 2089.910048214286 +2025-03-10 16:06:05,501 - INFO - CLOSED short at 2119.02 | PnL: 0.13% | $0.06 +2025-03-10 16:06:05,531 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.606767857143 | Take profit: 2089.0826482142857 +2025-03-10 16:06:05,825 - INFO - CLOSED short at 2114.57 | PnL: 0.30% | $0.40 +2025-03-10 16:06:05,846 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.174817857143 | Take profit: 2080.818498214286 +2025-03-10 16:06:05,937 - INFO - CLOSED short at 2098.24 | PnL: 0.68% | $1.14 +2025-03-10 16:06:05,981 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.858767857143 | Take profit: 2059.9266482142857 +2025-03-10 16:06:06,123 - INFO - STOP LOSS hit for short at 2101.858767857143 | PnL: -0.50% | $-1.20 +2025-03-10 16:06:06,150 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9690178571427 | Take profit: 2071.7958982142854 +2025-03-10 16:06:06,559 - INFO - TAKE PROFIT hit for short at 2071.7958982142854 | PnL: 1.50% | $2.77 +2025-03-10 16:06:06,578 - INFO - OPENED LONG at 2048.3 | Stop loss: 2038.0165321428572 | Take profit: 2079.0874517857146 +2025-03-10 16:06:06,626 - INFO - CLOSED long at 2043.51 | PnL: -0.23% | $-0.68 +2025-03-10 16:06:06,627 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.769517857143 | Take profit: 2012.7943982142856 +2025-03-10 16:06:06,651 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 33.3% in downtrends | Avg Win=$0.99, Avg Loss=$-0.59 +2025-03-10 16:06:06,651 - INFO - Episode 23: Reward=-1.22, Balance=$102.62, Win Rate=55.6%, Trades=9, Episode PnL=$3.29, Total PnL=$64.27, Max Drawdown=1.2%, Pred Accuracy=97.8% +2025-03-10 16:06:06,652 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:06,652 - INFO - Refreshing data for episode 24 +2025-03-10 16:06:06,652 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:06,984 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:06,995 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:07,135 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9946392857146 | Take profit: 2094.3606410714287 +2025-03-10 16:06:07,244 - INFO - CLOSED short at 2120.48 | PnL: 0.27% | $0.34 +2025-03-10 16:06:07,286 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.633039285714 | Take profit: 2086.1654410714286 +2025-03-10 16:06:07,407 - INFO - CLOSED short at 2124.9 | PnL: -0.33% | $-0.84 +2025-03-10 16:06:07,408 - INFO - OPENED LONG at 2124.9 | Stop loss: 2114.232460714286 | Take profit: 2156.838058928571 +2025-03-10 16:06:07,431 - INFO - CLOSED long at 2128.33 | PnL: 0.16% | $0.12 +2025-03-10 16:06:07,431 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.014689285714 | Take profit: 2096.3404910714285 +2025-03-10 16:06:07,508 - INFO - CLOSED short at 2114.78 | PnL: 0.64% | $1.05 +2025-03-10 16:06:07,528 - INFO - OPENED LONG at 2115.52 | Stop loss: 2104.8993607142856 | Take profit: 2147.317358928571 +2025-03-10 16:06:07,550 - INFO - CLOSED long at 2114.75 | PnL: -0.04% | $-0.27 +2025-03-10 16:06:07,550 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.3667892857143 | Take profit: 2082.9641910714286 +2025-03-10 16:06:07,941 - INFO - CLOSED short at 2100.0 | PnL: 0.70% | $1.18 +2025-03-10 16:06:07,992 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9700892857145 | Take profit: 2071.7942910714287 +2025-03-10 16:06:08,054 - INFO - CLOSED short at 2105.26 | PnL: -0.09% | $-0.37 +2025-03-10 16:06:08,054 - INFO - OPENED LONG at 2105.26 | Stop loss: 2094.690660714286 | Take profit: 2136.9034589285716 +2025-03-10 16:06:08,073 - INFO - CLOSED long at 2099.63 | PnL: -0.27% | $-0.73 +2025-03-10 16:06:08,073 - INFO - OPENED SHORT at 2099.63 | Stop loss: 2110.1711892857147 | Take profit: 2068.0709910714286 +2025-03-10 16:06:08,272 - INFO - CLOSED short at 2081.0 | PnL: 0.89% | $1.55 +2025-03-10 16:06:08,302 - INFO - OPENED SHORT at 2084.25 | Stop loss: 2094.714289285714 | Take profit: 2052.9216910714285 +2025-03-10 16:06:08,433 - INFO - TAKE PROFIT hit for short at 2052.9216910714285 | PnL: 1.50% | $2.81 +2025-03-10 16:06:08,491 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 33.3% in downtrends | Avg Win=$1.17, Avg Loss=$-0.55 +2025-03-10 16:06:08,491 - INFO - Episode 24: Reward=-2.28, Balance=$104.83, Win Rate=60.0%, Trades=10, Episode PnL=$5.71, Total PnL=$69.10, Max Drawdown=0.0%, Pred Accuracy=97.8% +2025-03-10 16:06:08,492 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:08,492 - INFO - Refreshing data for episode 25 +2025-03-10 16:06:08,492 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:08,800 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:08,809 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:09,489 - INFO - OPENED SHORT at 2123.02 | Stop loss: 2133.6781392857147 | Take profit: 2091.1101410714286 +2025-03-10 16:06:09,519 - INFO - CLOSED short at 2125.08 | PnL: -0.10% | $-0.39 +2025-03-10 16:06:09,544 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.4418892857143 | Take profit: 2093.8188910714284 +2025-03-10 16:06:09,568 - INFO - CLOSED short at 2126.13 | PnL: -0.02% | $-0.23 +2025-03-10 16:06:09,612 - INFO - OPENED SHORT at 2126.7 | Stop loss: 2137.376539285714 | Take profit: 2094.7349410714282 +2025-03-10 16:06:09,977 - INFO - CLOSED short at 2114.78 | PnL: 0.56% | $0.90 +2025-03-10 16:06:10,021 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.3667892857143 | Take profit: 2082.9641910714286 +2025-03-10 16:06:10,112 - INFO - CLOSED short at 2115.11 | PnL: -0.02% | $-0.23 +2025-03-10 16:06:10,139 - INFO - OPENED SHORT at 2114.32 | Stop loss: 2124.9346392857146 | Take profit: 2082.5406410714286 +2025-03-10 16:06:10,185 - INFO - CLOSED short at 2112.57 | PnL: 0.08% | $-0.03 +2025-03-10 16:06:10,251 - INFO - OPENED SHORT at 2115.07 | Stop loss: 2125.688389285714 | Take profit: 2083.2793910714286 +2025-03-10 16:06:10,534 - INFO - CLOSED short at 2105.26 | PnL: 0.46% | $0.71 +2025-03-10 16:06:10,554 - INFO - OPENED SHORT at 2099.63 | Stop loss: 2110.1711892857147 | Take profit: 2068.0709910714286 +2025-03-10 16:06:10,655 - INFO - CLOSED short at 2090.59 | PnL: 0.43% | $0.65 +2025-03-10 16:06:10,655 - INFO - OPENED LONG at 2090.59 | Stop loss: 2080.0940107142856 | Take profit: 2122.0134089285716 +2025-03-10 16:06:10,680 - INFO - CLOSED long at 2090.99 | PnL: 0.02% | $-0.16 +2025-03-10 16:06:10,681 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.4879892857143 | Take profit: 2059.5605910714285 +2025-03-10 16:06:10,933 - INFO - TAKE PROFIT hit for short at 2059.5605910714285 | PnL: 1.50% | $2.78 +2025-03-10 16:06:10,993 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.26, Avg Loss=$-0.21 +2025-03-10 16:06:10,994 - INFO - Episode 25: Reward=-3.85, Balance=$104.01, Win Rate=44.4%, Trades=9, Episode PnL=$4.17, Total PnL=$73.11, Max Drawdown=0.6%, Pred Accuracy=97.8% +2025-03-10 16:06:10,994 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:10,995 - INFO - Refreshing data for episode 26 +2025-03-10 16:06:10,995 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:11,302 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:11,312 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:11,338 - INFO - OPENED SHORT at 2123.02 | Stop loss: 2133.6781392857147 | Take profit: 2091.1101410714286 +2025-03-10 16:06:11,429 - INFO - CLOSED short at 2126.32 | PnL: -0.16% | $-0.50 +2025-03-10 16:06:11,451 - INFO - OPENED SHORT at 2126.7 | Stop loss: 2137.376539285714 | Take profit: 2094.7349410714282 +2025-03-10 16:06:11,477 - INFO - CLOSED short at 2122.01 | PnL: 0.22% | $0.24 +2025-03-10 16:06:11,521 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.894239285714 | Take profit: 2090.3418410714285 +2025-03-10 16:06:12,004 - INFO - CLOSED short at 2113.28 | PnL: 0.42% | $0.63 +2025-03-10 16:06:12,026 - INFO - OPENED SHORT at 2114.5 | Stop loss: 2125.1155392857145 | Take profit: 2082.7179410714284 +2025-03-10 16:06:12,332 - INFO - CLOSED short at 2104.67 | PnL: 0.46% | $0.72 +2025-03-10 16:06:12,333 - INFO - OPENED LONG at 2104.67 | Stop loss: 2094.103610714286 | Take profit: 2136.3046089285713 +2025-03-10 16:06:12,353 - INFO - CLOSED long at 2105.26 | PnL: 0.03% | $-0.14 +2025-03-10 16:06:12,419 - INFO - OPENED SHORT at 2094.16 | Stop loss: 2104.673839285714 | Take profit: 2062.6830410714283 +2025-03-10 16:06:12,442 - INFO - CLOSED short at 2096.96 | PnL: -0.13% | $-0.46 +2025-03-10 16:06:12,491 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.0859892857143 | Take profit: 2059.1665910714287 +2025-03-10 16:06:12,573 - INFO - CLOSED short at 2084.75 | PnL: 0.28% | $0.35 +2025-03-10 16:06:12,595 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.4480392857145 | Take profit: 2049.7204410714285 +2025-03-10 16:06:12,617 - INFO - CLOSED short at 2084.25 | PnL: -0.16% | $-0.51 +2025-03-10 16:06:12,735 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5845392857145 | Take profit: 2017.5109410714288 +2025-03-10 16:06:12,783 - INFO - CLOSED short at 2043.51 | PnL: 0.23% | $0.26 +2025-03-10 16:06:12,804 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$0.44, Avg Loss=$-0.40 +2025-03-10 16:06:12,804 - INFO - Episode 26: Reward=-2.56, Balance=$100.59, Win Rate=55.6%, Trades=9, Episode PnL=$0.59, Total PnL=$73.69, Max Drawdown=0.6%, Pred Accuracy=97.8% +2025-03-10 16:06:12,805 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:12,805 - INFO - Refreshing data for episode 27 +2025-03-10 16:06:12,805 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:13,105 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:13,115 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:13,222 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9947071428574 | Take profit: 2094.3605392857144 +2025-03-10 16:06:13,243 - INFO - CLOSED short at 2126.7 | PnL: -0.02% | $-0.23 +2025-03-10 16:06:13,474 - INFO - OPENED LONG at 2120.96 | Stop loss: 2110.312092857143 | Take profit: 2152.8390607142856 +2025-03-10 16:06:13,518 - INFO - CLOSED long at 2128.33 | PnL: 0.35% | $0.48 +2025-03-10 16:06:13,701 - INFO - OPENED LONG at 2114.1 | Stop loss: 2103.4863928571426 | Take profit: 2145.8761607142856 +2025-03-10 16:06:13,742 - INFO - CLOSED long at 2114.32 | PnL: 0.01% | $-0.18 +2025-03-10 16:06:13,743 - INFO - OPENED SHORT at 2114.32 | Stop loss: 2124.9347071428574 | Take profit: 2082.540539285714 +2025-03-10 16:06:13,764 - INFO - CLOSED short at 2114.57 | PnL: -0.01% | $-0.22 +2025-03-10 16:06:13,787 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.175957142857 | Take profit: 2080.8167892857145 +2025-03-10 16:06:14,068 - INFO - CLOSED short at 2102.83 | PnL: 0.46% | $0.71 +2025-03-10 16:06:14,193 - INFO - OPENED SHORT at 2099.63 | Stop loss: 2110.171257142857 | Take profit: 2068.070889285714 +2025-03-10 16:06:14,271 - INFO - CLOSED short at 2096.96 | PnL: 0.13% | $0.05 +2025-03-10 16:06:14,343 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.488057142857 | Take profit: 2059.560489285714 +2025-03-10 16:06:14,388 - INFO - CLOSED short at 2080.58 | PnL: 0.50% | $0.78 +2025-03-10 16:06:14,412 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2168571428574 | Take profit: 2053.4140892857145 +2025-03-10 16:06:14,586 - INFO - TAKE PROFIT hit for short at 2053.4140892857145 | PnL: 1.50% | $2.79 +2025-03-10 16:06:14,609 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.298107142857 | Take profit: 2020.1703392857144 +2025-03-10 16:06:14,657 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$0.96, Avg Loss=$-0.21 +2025-03-10 16:06:14,657 - INFO - Episode 27: Reward=-6.38, Balance=$104.19, Win Rate=62.5%, Trades=8, Episode PnL=$4.37, Total PnL=$77.88, Max Drawdown=0.4%, Pred Accuracy=97.8% +2025-03-10 16:06:14,658 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:14,658 - INFO - Refreshing data for episode 28 +2025-03-10 16:06:14,658 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:14,961 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:14,970 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:15,044 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.4420285714286 | Take profit: 2093.818682142857 +2025-03-10 16:06:15,108 - INFO - CLOSED short at 2126.7 | PnL: -0.04% | $-0.28 +2025-03-10 16:06:15,133 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.6632285714286 | Take profit: 2090.1150821428573 +2025-03-10 16:06:15,324 - INFO - CLOSED short at 2119.02 | PnL: 0.14% | $0.08 +2025-03-10 16:06:15,351 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6079785714282 | Take profit: 2089.080832142857 +2025-03-10 16:06:15,374 - INFO - CLOSED short at 2124.9 | PnL: -0.19% | $-0.56 +2025-03-10 16:06:15,374 - INFO - OPENED LONG at 2124.9 | Stop loss: 2114.2323214285716 | Take profit: 2156.838267857143 +2025-03-10 16:06:15,399 - INFO - CLOSED long at 2128.33 | PnL: 0.16% | $0.12 +2025-03-10 16:06:15,399 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0148285714286 | Take profit: 2096.340282142857 +2025-03-10 16:06:15,841 - INFO - TAKE PROFIT hit for short at 2096.340282142857 | PnL: 1.50% | $2.73 +2025-03-10 16:06:15,867 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.593428571429 | Take profit: 2068.4844821428574 +2025-03-10 16:06:16,453 - INFO - TAKE PROFIT hit for short at 2068.4844821428574 | PnL: 1.50% | $2.81 +2025-03-10 16:06:16,480 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.584678571429 | Take profit: 2017.5107321428573 +2025-03-10 16:06:16,520 - INFO - CLOSED short at 2043.51 | PnL: 0.23% | $0.28 +2025-03-10 16:06:16,541 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.20, Avg Loss=$-0.42 +2025-03-10 16:06:16,542 - INFO - Episode 28: Reward=-0.70, Balance=$105.17, Win Rate=71.4%, Trades=7, Episode PnL=$5.05, Total PnL=$83.06, Max Drawdown=0.3%, Pred Accuracy=97.8% +2025-03-10 16:06:16,542 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:16,542 - INFO - Refreshing data for episode 29 +2025-03-10 16:06:16,543 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:16,847 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:16,856 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:16,882 - INFO - OPENED SHORT at 2123.02 | Stop loss: 2133.6782785714286 | Take profit: 2091.1099321428574 +2025-03-10 16:06:17,007 - INFO - CLOSED short at 2126.7 | PnL: -0.17% | $-0.54 +2025-03-10 16:06:17,030 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.6632285714286 | Take profit: 2090.1150821428573 +2025-03-10 16:06:17,770 - INFO - TAKE PROFIT hit for short at 2090.1150821428573 | PnL: 1.50% | $2.74 +2025-03-10 16:06:17,811 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.7141285714283 | Take profit: 2064.6823821428575 +2025-03-10 16:06:17,853 - INFO - CLOSED short at 2102.83 | PnL: -0.32% | $-0.83 +2025-03-10 16:06:17,903 - INFO - OPENED SHORT at 2104.22 | Stop loss: 2114.7842785714283 | Take profit: 2072.591932142857 +2025-03-10 16:06:17,960 - INFO - CLOSED short at 2099.63 | PnL: 0.22% | $0.23 +2025-03-10 16:06:17,960 - INFO - OPENED LONG at 2099.63 | Stop loss: 2089.0886714285716 | Take profit: 2131.189217857143 +2025-03-10 16:06:17,981 - INFO - CLOSED long at 2099.22 | PnL: -0.02% | $-0.24 +2025-03-10 16:06:17,981 - INFO - OPENED SHORT at 2099.22 | Stop loss: 2109.7592785714282 | Take profit: 2067.666932142857 +2025-03-10 16:06:18,220 - INFO - CLOSED short at 2084.11 | PnL: 0.72% | $1.23 +2025-03-10 16:06:18,220 - INFO - OPENED LONG at 2084.11 | Stop loss: 2073.6462714285717 | Take profit: 2115.436417857143 +2025-03-10 16:06:18,244 - INFO - CLOSED long at 2083.07 | PnL: -0.05% | $-0.30 +2025-03-10 16:06:18,244 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.5285285714285 | Take profit: 2051.7591821428573 +2025-03-10 16:06:18,319 - INFO - TAKE PROFIT hit for short at 2051.7591821428573 | PnL: 1.50% | $2.81 +2025-03-10 16:06:18,344 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.2981785714283 | Take profit: 2020.1702321428572 +2025-03-10 16:06:18,388 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.75, Avg Loss=$-0.48 +2025-03-10 16:06:18,389 - INFO - Episode 29: Reward=-4.09, Balance=$105.10, Win Rate=50.0%, Trades=8, Episode PnL=$5.64, Total PnL=$88.16, Max Drawdown=0.8%, Pred Accuracy=97.8% +2025-03-10 16:06:18,390 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:18,390 - INFO - Refreshing data for episode 30 +2025-03-10 16:06:18,390 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:18,709 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:18,718 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:19,370 - INFO - OPENED LONG at 2123.02 | Stop loss: 2112.3617214285714 | Take profit: 2154.9300678571426 +2025-03-10 16:06:19,407 - INFO - CLOSED long at 2125.08 | PnL: 0.10% | $-0.01 +2025-03-10 16:06:19,407 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.748578571429 | Take profit: 2093.139032142857 +2025-03-10 16:06:20,013 - INFO - CLOSED short at 2114.32 | PnL: 0.51% | $0.80 +2025-03-10 16:06:20,034 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.186028571429 | Take profit: 2082.7866821428574 +2025-03-10 16:06:20,521 - INFO - CLOSED short at 2098.66 | PnL: 0.75% | $1.29 +2025-03-10 16:06:20,546 - INFO - OPENED LONG at 2090.59 | Stop loss: 2080.0938714285717 | Take profit: 2122.013617857143 +2025-03-10 16:06:20,570 - INFO - CLOSED long at 2090.99 | PnL: 0.02% | $-0.16 +2025-03-10 16:06:20,570 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.4881285714287 | Take profit: 2059.5603821428567 +2025-03-10 16:06:20,596 - INFO - CLOSED short at 2084.95 | PnL: 0.29% | $0.38 +2025-03-10 16:06:20,596 - INFO - OPENED LONG at 2084.95 | Stop loss: 2074.4820714285715 | Take profit: 2116.289017857143 +2025-03-10 16:06:20,620 - INFO - CLOSED long at 2080.58 | PnL: -0.21% | $-0.62 +2025-03-10 16:06:20,620 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0260785714286 | Take profit: 2049.306532142857 +2025-03-10 16:06:20,735 - INFO - CLOSED short at 2084.11 | PnL: -0.17% | $-0.54 +2025-03-10 16:06:20,735 - INFO - OPENED LONG at 2084.11 | Stop loss: 2073.6462714285717 | Take profit: 2115.436417857143 +2025-03-10 16:06:20,782 - INFO - CLOSED long at 2075.07 | PnL: -0.43% | $-1.06 +2025-03-10 16:06:20,782 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.488528571429 | Take profit: 2043.8791821428572 +2025-03-10 16:06:20,870 - INFO - TAKE PROFIT hit for short at 2043.8791821428572 | PnL: 1.50% | $2.75 +2025-03-10 16:06:20,889 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.30, Avg Loss=$-0.48 +2025-03-10 16:06:20,890 - INFO - Episode 30: Reward=-5.20, Balance=$102.83, Win Rate=44.4%, Trades=9, Episode PnL=$4.68, Total PnL=$90.99, Max Drawdown=0.0%, Pred Accuracy=97.9% +2025-03-10 16:06:21,031 - INFO - Model saved to checkpoints/trading_agent_episode_30.pt +2025-03-10 16:06:21,032 - INFO - Checkpoint saved at episode 30 +2025-03-10 16:06:21,032 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:21,876 - INFO - Visualization saved for episode 30 +2025-03-10 16:06:23,696 - INFO - Visualization saved for episode 30 +2025-03-10 16:06:23,710 - INFO - Refreshing data for episode 31 +2025-03-10 16:06:23,710 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:24,005 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:24,015 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:24,135 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7500035714284 | Take profit: 2093.136894642857 +2025-03-10 16:06:24,167 - INFO - CLOSED short at 2125.77 | PnL: -0.03% | $-0.26 +2025-03-10 16:06:24,195 - INFO - OPENED LONG at 2126.13 | Stop loss: 2115.4547464285715 | Take profit: 2158.088855357143 +2025-03-10 16:06:24,223 - INFO - CLOSED long at 2126.32 | PnL: 0.01% | $-0.18 +2025-03-10 16:06:24,224 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.996203571429 | Take profit: 2094.3582946428573 +2025-03-10 16:06:24,260 - INFO - CLOSED short at 2126.7 | PnL: -0.02% | $-0.23 +2025-03-10 16:06:24,293 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.664653571429 | Take profit: 2090.112944642857 +2025-03-10 16:06:24,369 - INFO - CLOSED short at 2120.48 | PnL: 0.07% | $-0.05 +2025-03-10 16:06:24,370 - INFO - OPENED LONG at 2120.48 | Stop loss: 2109.8329964285713 | Take profit: 2152.354105357143 +2025-03-10 16:06:24,393 - INFO - CLOSED long at 2120.54 | PnL: 0.00% | $-0.19 +2025-03-10 16:06:24,393 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.1873035714284 | Take profit: 2088.664994642857 +2025-03-10 16:06:24,659 - INFO - CLOSED short at 2116.81 | PnL: 0.18% | $0.15 +2025-03-10 16:06:24,660 - INFO - OPENED LONG at 2116.81 | Stop loss: 2106.1813464285715 | Take profit: 2148.6290553571425 +2025-03-10 16:06:24,692 - INFO - CLOSED long at 2114.78 | PnL: -0.10% | $-0.38 +2025-03-10 16:06:24,692 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.398503571429 | Take profit: 2082.9913946428574 +2025-03-10 16:06:24,800 - INFO - CLOSED short at 2114.1 | PnL: 0.03% | $-0.13 +2025-03-10 16:06:24,844 - INFO - OPENED SHORT at 2114.32 | Stop loss: 2124.936203571429 | Take profit: 2082.538294642857 +2025-03-10 16:06:24,951 - INFO - CLOSED short at 2115.07 | PnL: -0.04% | $-0.26 +2025-03-10 16:06:24,952 - INFO - OPENED LONG at 2115.07 | Stop loss: 2104.4500464285716 | Take profit: 2146.8629553571427 +2025-03-10 16:06:24,973 - INFO - STOP LOSS hit for long at 2104.4500464285716 | PnL: -0.50% | $-1.16 +2025-03-10 16:06:24,996 - INFO - OPENED SHORT at 2098.28 | Stop loss: 2108.816003571429 | Take profit: 2066.7388946428573 +2025-03-10 16:06:25,123 - INFO - CLOSED short at 2089.84 | PnL: 0.40% | $0.58 +2025-03-10 16:06:25,124 - INFO - OPENED LONG at 2089.84 | Stop loss: 2079.3461964285716 | Take profit: 2121.254505357143 +2025-03-10 16:06:25,152 - INFO - CLOSED long at 2096.19 | PnL: 0.30% | $0.39 +2025-03-10 16:06:25,153 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.7155535714287 | Take profit: 2064.6802446428574 +2025-03-10 16:06:25,317 - INFO - CLOSED short at 2105.26 | PnL: -0.43% | $-1.03 +2025-03-10 16:06:25,317 - INFO - OPENED LONG at 2105.26 | Stop loss: 2094.6890964285717 | Take profit: 2136.905805357143 +2025-03-10 16:06:25,339 - INFO - CLOSED long at 2099.63 | PnL: -0.27% | $-0.70 +2025-03-10 16:06:25,339 - INFO - OPENED SHORT at 2099.63 | Stop loss: 2110.1727535714285 | Take profit: 2068.068644642857 +2025-03-10 16:06:25,696 - INFO - TAKE PROFIT hit for short at 2068.068644642857 | PnL: 1.50% | $2.65 +2025-03-10 16:06:25,722 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.586103571429 | Take profit: 2017.5085946428574 +2025-03-10 16:06:25,796 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 42.9% in downtrends | Avg Win=$0.94, Avg Loss=$-0.42 +2025-03-10 16:06:25,796 - INFO - Episode 31: Reward=-13.81, Balance=$99.20, Win Rate=26.7%, Trades=15, Episode PnL=$0.25, Total PnL=$90.19, Max Drawdown=2.7%, Pred Accuracy=97.8% +2025-03-10 16:06:25,797 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:25,797 - INFO - Refreshing data for episode 32 +2025-03-10 16:06:25,798 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:26,104 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:26,115 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:26,135 - INFO - OPENED SHORT at 2123.02 | Stop loss: 2133.6797035714285 | Take profit: 2091.1077946428572 +2025-03-10 16:06:26,994 - INFO - CLOSED short at 2091.36 | PnL: 1.49% | $2.73 +2025-03-10 16:06:27,022 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5948535714288 | Take profit: 2068.4823446428572 +2025-03-10 16:06:27,680 - INFO - TAKE PROFIT hit for short at 2068.4823446428572 | PnL: 1.50% | $2.82 +2025-03-10 16:06:27,754 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.7721535714286 | Take profit: 2012.7904446428572 +2025-03-10 16:06:27,779 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.77, Avg Loss=$0.00 +2025-03-10 16:06:27,780 - INFO - Episode 32: Reward=2.19, Balance=$105.55, Win Rate=100.0%, Trades=2, Episode PnL=$5.55, Total PnL=$95.74, Max Drawdown=0.0%, Pred Accuracy=97.9% +2025-03-10 16:06:27,780 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:27,781 - INFO - Refreshing data for episode 33 +2025-03-10 16:06:27,781 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:28,114 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:28,125 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:28,150 - INFO - OPENED SHORT at 2123.02 | Stop loss: 2133.6797035714285 | Take profit: 2091.1077946428572 +2025-03-10 16:06:28,301 - INFO - CLOSED short at 2122.01 | PnL: 0.05% | $-0.10 +2025-03-10 16:06:28,378 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1270035714288 | Take profit: 2088.605894642857 +2025-03-10 16:06:28,400 - INFO - CLOSED short at 2120.54 | PnL: -0.00% | $-0.20 +2025-03-10 16:06:28,425 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.6346035714287 | Take profit: 2086.1630946428572 +2025-03-10 16:06:29,446 - INFO - CLOSED short at 2098.66 | PnL: 0.91% | $1.59 +2025-03-10 16:06:29,520 - INFO - OPENED SHORT at 2084.95 | Stop loss: 2095.4193535714285 | Take profit: 2053.608844642857 +2025-03-10 16:06:29,689 - INFO - CLOSED short at 2083.07 | PnL: 0.09% | $-0.02 +2025-03-10 16:06:29,712 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.489953571429 | Take profit: 2043.8770446428573 +2025-03-10 16:06:29,810 - INFO - TAKE PROFIT hit for short at 2043.8770446428573 | PnL: 1.50% | $2.78 +2025-03-10 16:06:29,840 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.19, Avg Loss=$-0.11 +2025-03-10 16:06:29,841 - INFO - Episode 33: Reward=-2.80, Balance=$104.05, Win Rate=40.0%, Trades=5, Episode PnL=$4.05, Total PnL=$99.78, Max Drawdown=0.3%, Pred Accuracy=97.9% +2025-03-10 16:06:29,841 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:29,841 - INFO - Refreshing data for episode 34 +2025-03-10 16:06:29,842 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:30,154 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:30,163 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:30,260 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.8052535714287 | Take profit: 2094.171144642857 +2025-03-10 16:06:30,336 - INFO - CLOSED short at 2122.01 | PnL: 0.19% | $0.18 +2025-03-10 16:06:30,431 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.1873035714284 | Take profit: 2088.664994642857 +2025-03-10 16:06:30,526 - INFO - CLOSED short at 2116.52 | PnL: 0.19% | $0.18 +2025-03-10 16:06:30,638 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0162535714285 | Take profit: 2096.338144642857 +2025-03-10 16:06:31,076 - INFO - CLOSED short at 2098.28 | PnL: 1.41% | $2.58 +2025-03-10 16:06:31,171 - INFO - OPENED SHORT at 2089.04 | Stop loss: 2099.529803571428 | Take profit: 2057.637494642857 +2025-03-10 16:06:31,245 - INFO - STOP LOSS hit for short at 2099.529803571428 | PnL: -0.50% | $-1.21 +2025-03-10 16:06:31,374 - INFO - OPENED SHORT at 2105.26 | Stop loss: 2115.8309035714287 | Take profit: 2073.6141946428575 +2025-03-10 16:06:31,496 - INFO - CLOSED short at 2098.66 | PnL: 0.31% | $0.43 +2025-03-10 16:06:31,496 - INFO - OPENED LONG at 2098.66 | Stop loss: 2088.1220964285712 | Take profit: 2130.2068053571425 +2025-03-10 16:06:31,575 - INFO - STOP LOSS hit for long at 2088.1220964285712 | PnL: -0.50% | $-1.20 +2025-03-10 16:06:31,816 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.586103571429 | Take profit: 2017.5085946428574 +2025-03-10 16:06:31,895 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 33.3% in downtrends | Avg Win=$0.84, Avg Loss=$-1.21 +2025-03-10 16:06:31,896 - INFO - Episode 34: Reward=-1.35, Balance=$100.95, Win Rate=66.7%, Trades=6, Episode PnL=$0.95, Total PnL=$100.73, Max Drawdown=1.9%, Pred Accuracy=97.9% +2025-03-10 16:06:31,897 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:31,897 - INFO - Refreshing data for episode 35 +2025-03-10 16:06:31,898 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:32,189 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:32,200 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:32,997 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7500035714284 | Take profit: 2093.136894642857 +2025-03-10 16:06:33,183 - INFO - CLOSED short at 2122.24 | PnL: 0.13% | $0.07 +2025-03-10 16:06:33,211 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1270035714288 | Take profit: 2088.605894642857 +2025-03-10 16:06:34,397 - INFO - TAKE PROFIT hit for short at 2088.605894642857 | PnL: 1.50% | $2.75 +2025-03-10 16:06:34,471 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.4496035714287 | Take profit: 2049.718094642857 +2025-03-10 16:06:34,637 - INFO - TAKE PROFIT hit for short at 2049.718094642857 | PnL: 1.50% | $2.82 +2025-03-10 16:06:34,686 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.7721535714286 | Take profit: 2012.7904446428572 +2025-03-10 16:06:34,708 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.88, Avg Loss=$0.00 +2025-03-10 16:06:34,709 - INFO - Episode 35: Reward=0.05, Balance=$105.64, Win Rate=100.0%, Trades=3, Episode PnL=$5.64, Total PnL=$106.37, Max Drawdown=0.0%, Pred Accuracy=97.9% +2025-03-10 16:06:34,709 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:34,710 - INFO - Refreshing data for episode 36 +2025-03-10 16:06:34,710 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:35,021 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:35,034 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:35,061 - INFO - OPENED SHORT at 2123.02 | Stop loss: 2133.679810714286 | Take profit: 2091.1076339285714 +2025-03-10 16:06:35,089 - INFO - CLOSED short at 2125.08 | PnL: -0.10% | $-0.39 +2025-03-10 16:06:35,119 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.4435607142855 | Take profit: 2093.816383928571 +2025-03-10 16:06:35,377 - INFO - CLOSED short at 2121.8 | PnL: 0.19% | $0.17 +2025-03-10 16:06:35,626 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.398610714286 | Take profit: 2082.9912339285715 +2025-03-10 16:06:36,454 - INFO - CLOSED short at 2090.99 | PnL: 1.12% | $2.00 +2025-03-10 16:06:36,454 - INFO - OPENED LONG at 2090.99 | Stop loss: 2080.490339285714 | Take profit: 2122.4219160714283 +2025-03-10 16:06:36,510 - INFO - CLOSED long at 2080.58 | PnL: -0.50% | $-1.19 +2025-03-10 16:06:36,511 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0276107142854 | Take profit: 2049.304233928571 +2025-03-10 16:06:36,635 - INFO - CLOSED short at 2084.11 | PnL: -0.17% | $-0.53 +2025-03-10 16:06:36,684 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.490060714286 | Take profit: 2043.8768839285715 +2025-03-10 16:06:36,778 - INFO - TAKE PROFIT hit for short at 2043.8768839285715 | PnL: 1.50% | $2.75 +2025-03-10 16:06:36,803 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.64, Avg Loss=$-0.70 +2025-03-10 16:06:36,804 - INFO - Episode 36: Reward=-5.06, Balance=$102.81, Win Rate=50.0%, Trades=6, Episode PnL=$4.00, Total PnL=$109.18, Max Drawdown=0.4%, Pred Accuracy=98.0% +2025-03-10 16:06:36,804 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:36,804 - INFO - Refreshing data for episode 37 +2025-03-10 16:06:36,805 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:37,123 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:37,135 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:37,161 - INFO - OPENED SHORT at 2123.02 | Stop loss: 2133.679810714286 | Take profit: 2091.1076339285714 +2025-03-10 16:06:37,364 - INFO - CLOSED short at 2122.24 | PnL: 0.04% | $-0.12 +2025-03-10 16:06:37,392 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.127110714286 | Take profit: 2088.6057339285717 +2025-03-10 16:06:37,695 - INFO - CLOSED short at 2116.81 | PnL: 0.17% | $0.14 +2025-03-10 16:06:37,780 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.368460714286 | Take profit: 2082.9616839285713 +2025-03-10 16:06:37,851 - INFO - CLOSED short at 2114.1 | PnL: 0.03% | $-0.14 +2025-03-10 16:06:37,936 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.1875607142856 | Take profit: 2082.7843839285715 +2025-03-10 16:06:38,573 - INFO - TAKE PROFIT hit for short at 2082.7843839285715 | PnL: 1.50% | $2.75 +2025-03-10 16:06:38,668 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8415607142856 | Take profit: 2054.0223839285713 +2025-03-10 16:06:38,719 - INFO - CLOSED short at 2083.07 | PnL: 0.11% | $0.02 +2025-03-10 16:06:38,719 - INFO - OPENED LONG at 2083.07 | Stop loss: 2072.6099392857145 | Take profit: 2114.383116071429 +2025-03-10 16:06:38,745 - INFO - CLOSED long at 2075.07 | PnL: -0.38% | $-0.97 +2025-03-10 16:06:38,745 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.490060714286 | Take profit: 2043.8768839285715 +2025-03-10 16:06:38,849 - INFO - TAKE PROFIT hit for short at 2043.8768839285715 | PnL: 1.50% | $2.79 +2025-03-10 16:06:38,874 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.43, Avg Loss=$-0.41 +2025-03-10 16:06:38,875 - INFO - Episode 37: Reward=-4.53, Balance=$104.47, Win Rate=57.1%, Trades=7, Episode PnL=$5.44, Total PnL=$113.65, Max Drawdown=0.1%, Pred Accuracy=98.1% +2025-03-10 16:06:38,875 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:38,876 - INFO - Refreshing data for episode 38 +2025-03-10 16:06:38,876 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:39,201 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:39,212 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:39,262 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7508464285715 | Take profit: 2093.135630357143 +2025-03-10 16:06:39,601 - INFO - CLOSED short at 2119.02 | PnL: 0.29% | $0.36 +2025-03-10 16:06:39,649 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.5699464285717 | Take profit: 2092.958330357143 +2025-03-10 16:06:40,098 - INFO - TAKE PROFIT hit for short at 2092.958330357143 | PnL: 1.50% | $2.76 +2025-03-10 16:06:40,143 - INFO - OPENED SHORT at 2096.36 | Stop loss: 2106.8872464285714 | Take profit: 2064.8464303571427 +2025-03-10 16:06:40,729 - INFO - TAKE PROFIT hit for short at 2064.8464303571427 | PnL: 1.50% | $2.83 +2025-03-10 16:06:40,785 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.7729964285713 | Take profit: 2012.7891803571429 +2025-03-10 16:06:40,814 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.98, Avg Loss=$0.00 +2025-03-10 16:06:40,815 - INFO - Episode 38: Reward=0.17, Balance=$105.95, Win Rate=100.0%, Trades=3, Episode PnL=$5.95, Total PnL=$119.61, Max Drawdown=0.0%, Pred Accuracy=98.0% +2025-03-10 16:06:40,815 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:40,815 - INFO - Refreshing data for episode 39 +2025-03-10 16:06:40,816 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:41,118 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:41,130 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:41,155 - INFO - OPENED SHORT at 2123.02 | Stop loss: 2133.6805464285717 | Take profit: 2091.1065303571427 +2025-03-10 16:06:41,608 - INFO - CLOSED short at 2124.77 | PnL: -0.08% | $-0.36 +2025-03-10 16:06:41,636 - INFO - OPENED SHORT at 2120.26 | Stop loss: 2130.9067464285713 | Take profit: 2088.387930357143 +2025-03-10 16:06:42,462 - INFO - TAKE PROFIT hit for short at 2088.387930357143 | PnL: 1.50% | $2.74 +2025-03-10 16:06:42,514 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.219196428571 | Take profit: 2053.410580357143 +2025-03-10 16:06:42,697 - INFO - TAKE PROFIT hit for short at 2053.410580357143 | PnL: 1.50% | $2.81 +2025-03-10 16:06:42,721 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3004464285714 | Take profit: 2020.166830357143 +2025-03-10 16:06:42,768 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.77, Avg Loss=$-0.36 +2025-03-10 16:06:42,769 - INFO - Episode 39: Reward=-1.49, Balance=$105.19, Win Rate=66.7%, Trades=3, Episode PnL=$5.19, Total PnL=$124.80, Max Drawdown=0.4%, Pred Accuracy=98.0% +2025-03-10 16:06:42,769 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:42,770 - INFO - Refreshing data for episode 40 +2025-03-10 16:06:42,770 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:43,076 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:43,087 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:43,895 - INFO - OPENED SHORT at 2123.02 | Stop loss: 2133.6805464285717 | Take profit: 2091.1065303571427 +2025-03-10 16:06:44,541 - INFO - CLOSED short at 2114.1 | PnL: 0.42% | $0.63 +2025-03-10 16:06:44,564 - INFO - OPENED SHORT at 2115.11 | Stop loss: 2125.7309964285714 | Take profit: 2083.3151803571427 +2025-03-10 16:06:44,780 - INFO - CLOSED short at 2098.28 | PnL: 0.80% | $1.37 +2025-03-10 16:06:44,814 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.862246428572 | Take profit: 2059.921430357143 +2025-03-10 16:06:44,990 - INFO - STOP LOSS hit for short at 2101.862246428572 | PnL: -0.50% | $-1.20 +2025-03-10 16:06:45,020 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.972496428571 | Take profit: 2071.7906803571427 +2025-03-10 16:06:45,383 - INFO - CLOSED short at 2084.75 | PnL: 0.89% | $1.55 +2025-03-10 16:06:45,384 - INFO - OPENED LONG at 2084.75 | Stop loss: 2074.280803571429 | Take profit: 2116.089419642857 +2025-03-10 16:06:45,411 - INFO - CLOSED long at 2081.0 | PnL: -0.18% | $-0.56 +2025-03-10 16:06:45,411 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.4504464285715 | Take profit: 2049.716830357143 +2025-03-10 16:06:45,578 - INFO - TAKE PROFIT hit for short at 2049.716830357143 | PnL: 1.50% | $2.80 +2025-03-10 16:06:45,606 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3004464285714 | Take profit: 2020.166830357143 +2025-03-10 16:06:45,654 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.59, Avg Loss=$-0.88 +2025-03-10 16:06:45,655 - INFO - Episode 40: Reward=17.18, Balance=$104.58, Win Rate=66.7%, Trades=6, Episode PnL=$5.14, Total PnL=$129.38, Max Drawdown=1.2%, Pred Accuracy=98.1% +2025-03-10 16:06:45,816 - INFO - Model saved to checkpoints/trading_agent_episode_40.pt +2025-03-10 16:06:45,817 - INFO - Checkpoint saved at episode 40 +2025-03-10 16:06:45,818 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:46,769 - INFO - Visualization saved for episode 40 +2025-03-10 16:06:48,953 - INFO - Visualization saved for episode 40 +2025-03-10 16:06:48,970 - INFO - Refreshing data for episode 41 +2025-03-10 16:06:48,970 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:49,279 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:49,290 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:49,385 - INFO - OPENED SHORT at 2123.02 | Stop loss: 2133.681360714286 | Take profit: 2091.1053089285715 +2025-03-10 16:06:49,561 - INFO - CLOSED short at 2122.01 | PnL: 0.05% | $-0.10 +2025-03-10 16:06:49,593 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.827110714286 | Take profit: 2090.2680589285715 +2025-03-10 16:06:49,782 - INFO - CLOSED short at 2119.02 | PnL: 0.15% | $0.09 +2025-03-10 16:06:49,841 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.570760714286 | Take profit: 2092.9571089285714 +2025-03-10 16:06:50,298 - INFO - TAKE PROFIT hit for short at 2092.9571089285714 | PnL: 1.50% | $2.75 +2025-03-10 16:06:50,325 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.596510714286 | Take profit: 2068.4798589285715 +2025-03-10 16:06:50,977 - INFO - TAKE PROFIT hit for short at 2068.4798589285715 | PnL: 1.50% | $2.82 +2025-03-10 16:06:50,999 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.587760714286 | Take profit: 2017.5061089285716 +2025-03-10 16:06:51,075 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.89, Avg Loss=$-0.10 +2025-03-10 16:06:51,076 - INFO - Episode 41: Reward=13.59, Balance=$105.56, Win Rate=75.0%, Trades=4, Episode PnL=$5.56, Total PnL=$134.94, Max Drawdown=0.1%, Pred Accuracy=98.1% +2025-03-10 16:06:51,076 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:51,077 - INFO - Refreshing data for episode 42 +2025-03-10 16:06:51,077 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:51,381 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:51,390 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:51,433 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.751660714285 | Take profit: 2093.1344089285712 +2025-03-10 16:06:51,711 - INFO - CLOSED short at 2118.0 | PnL: 0.33% | $0.46 +2025-03-10 16:06:51,712 - INFO - OPENED LONG at 2118.0 | Stop loss: 2107.363739285714 | Take profit: 2149.839391071429 +2025-03-10 16:06:51,736 - INFO - CLOSED long at 2121.8 | PnL: 0.18% | $0.16 +2025-03-10 16:06:51,737 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.455260714286 | Take profit: 2089.9036089285714 +2025-03-10 16:06:52,417 - INFO - TAKE PROFIT hit for short at 2089.9036089285714 | PnL: 1.50% | $2.76 +2025-03-10 16:06:52,440 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3354607142855 | Take profit: 2058.4230089285716 +2025-03-10 16:06:52,510 - INFO - STOP LOSS hit for short at 2100.3354607142855 | PnL: -0.50% | $-1.22 +2025-03-10 16:06:52,542 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9733107142856 | Take profit: 2071.789458928571 +2025-03-10 16:06:52,987 - INFO - CLOSED short at 2075.07 | PnL: 1.35% | $2.49 +2025-03-10 16:06:53,012 - INFO - OPENED SHORT at 2067.71 | Stop loss: 2078.094810714286 | Take profit: 2036.6249589285715 +2025-03-10 16:06:53,124 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.47, Avg Loss=$-1.22 +2025-03-10 16:06:53,124 - INFO - Episode 42: Reward=18.14, Balance=$104.65, Win Rate=80.0%, Trades=5, Episode PnL=$4.50, Total PnL=$139.59, Max Drawdown=1.2%, Pred Accuracy=98.2% +2025-03-10 16:06:53,126 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:53,126 - INFO - Refreshing data for episode 43 +2025-03-10 16:06:53,126 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:53,438 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:53,447 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:53,471 - INFO - OPENED SHORT at 2123.02 | Stop loss: 2133.6815535714286 | Take profit: 2091.1050196428573 +2025-03-10 16:06:54,422 - INFO - TAKE PROFIT hit for short at 2091.1050196428573 | PnL: 1.50% | $2.75 +2025-03-10 16:06:54,450 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.335653571429 | Take profit: 2058.4227196428574 +2025-03-10 16:06:54,542 - INFO - STOP LOSS hit for short at 2100.335653571429 | PnL: -0.50% | $-1.21 +2025-03-10 16:06:54,567 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9735035714284 | Take profit: 2071.789169642857 +2025-03-10 16:06:54,658 - INFO - CLOSED short at 2099.63 | PnL: 0.18% | $0.16 +2025-03-10 16:06:54,658 - INFO - OPENED LONG at 2099.63 | Stop loss: 2089.0853964285716 | Take profit: 2131.194130357143 +2025-03-10 16:06:54,688 - INFO - CLOSED long at 2099.22 | PnL: -0.02% | $-0.24 +2025-03-10 16:06:54,689 - INFO - OPENED SHORT at 2099.22 | Stop loss: 2109.7625535714283 | Take profit: 2067.6620196428566 +2025-03-10 16:06:55,046 - INFO - CLOSED short at 2075.07 | PnL: 1.15% | $2.09 +2025-03-10 16:06:55,071 - INFO - OPENED SHORT at 2067.71 | Stop loss: 2078.0950035714286 | Take profit: 2036.6246696428573 +2025-03-10 16:06:55,163 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.66, Avg Loss=$-0.72 +2025-03-10 16:06:55,164 - INFO - Episode 43: Reward=15.63, Balance=$103.54, Win Rate=60.0%, Trades=5, Episode PnL=$3.78, Total PnL=$143.13, Max Drawdown=1.2%, Pred Accuracy=98.2% +2025-03-10 16:06:55,164 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:55,165 - INFO - Refreshing data for episode 44 +2025-03-10 16:06:55,165 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:55,465 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:55,475 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:55,502 - INFO - OPENED SHORT at 2123.02 | Stop loss: 2133.6815535714286 | Take profit: 2091.1050196428573 +2025-03-10 16:06:56,520 - INFO - TAKE PROFIT hit for short at 2091.1050196428573 | PnL: 1.50% | $2.75 +2025-03-10 16:06:56,550 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.335653571429 | Take profit: 2058.4227196428574 +2025-03-10 16:06:56,642 - INFO - STOP LOSS hit for short at 2100.335653571429 | PnL: -0.50% | $-1.21 +2025-03-10 16:06:56,673 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9735035714284 | Take profit: 2071.789169642857 +2025-03-10 16:06:56,793 - INFO - CLOSED short at 2099.22 | PnL: 0.20% | $0.20 +2025-03-10 16:06:56,817 - INFO - OPENED SHORT at 2094.16 | Stop loss: 2104.6772535714285 | Take profit: 2062.677919642857 +2025-03-10 16:06:56,889 - INFO - CLOSED short at 2090.59 | PnL: 0.17% | $0.14 +2025-03-10 16:06:56,923 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.4914035714282 | Take profit: 2059.5554696428567 +2025-03-10 16:06:57,118 - INFO - CLOSED short at 2084.11 | PnL: 0.33% | $0.46 +2025-03-10 16:06:57,147 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.531803571429 | Take profit: 2051.7542696428573 +2025-03-10 16:06:57,237 - INFO - TAKE PROFIT hit for short at 2051.7542696428573 | PnL: 1.50% | $2.81 +2025-03-10 16:06:57,289 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.7740035714282 | Take profit: 2012.7876696428573 +2025-03-10 16:06:57,312 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.27, Avg Loss=$-1.21 +2025-03-10 16:06:57,313 - INFO - Episode 44: Reward=17.17, Balance=$105.14, Win Rate=83.3%, Trades=6, Episode PnL=$5.14, Total PnL=$148.27, Max Drawdown=1.2%, Pred Accuracy=98.2% +2025-03-10 16:06:57,313 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:06:57,314 - INFO - Refreshing data for episode 45 +2025-03-10 16:06:57,314 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:06:57,621 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:06:57,630 - INFO - Initialized environment with 100 candles +2025-03-10 16:06:58,423 - INFO - OPENED SHORT at 2123.02 | Stop loss: 2133.6815535714286 | Take profit: 2091.1050196428573 +2025-03-10 16:06:59,415 - INFO - TAKE PROFIT hit for short at 2091.1050196428573 | PnL: 1.50% | $2.75 +2025-03-10 16:06:59,473 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.7174035714283 | Take profit: 2064.6774696428574 +2025-03-10 16:07:00,079 - INFO - TAKE PROFIT hit for short at 2064.6774696428574 | PnL: 1.50% | $2.82 +2025-03-10 16:07:00,111 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3014535714287 | Take profit: 2020.1653196428572 +2025-03-10 16:07:00,166 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$0.00 +2025-03-10 16:07:00,167 - INFO - Episode 45: Reward=13.89, Balance=$105.57, Win Rate=100.0%, Trades=2, Episode PnL=$5.57, Total PnL=$153.84, Max Drawdown=0.0%, Pred Accuracy=98.2% +2025-03-10 16:07:00,167 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:07:00,168 - INFO - Refreshing data for episode 46 +2025-03-10 16:07:00,168 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:00,480 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:00,491 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:00,517 - INFO - OPENED SHORT at 2123.02 | Stop loss: 2133.6815535714286 | Take profit: 2091.1050196428573 +2025-03-10 16:07:00,885 - INFO - CLOSED short at 2124.9 | PnL: -0.09% | $-0.37 +2025-03-10 16:07:00,906 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0181035714286 | Take profit: 2096.335369642857 +2025-03-10 16:07:01,349 - INFO - TAKE PROFIT hit for short at 2096.335369642857 | PnL: 1.50% | $2.74 +2025-03-10 16:07:01,382 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.596703571429 | Take profit: 2068.4795696428573 +2025-03-10 16:07:01,957 - INFO - TAKE PROFIT hit for short at 2068.4795696428573 | PnL: 1.50% | $2.81 +2025-03-10 16:07:01,981 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5879535714284 | Take profit: 2017.5058196428574 +2025-03-10 16:07:02,063 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.77, Avg Loss=$-0.37 +2025-03-10 16:07:02,063 - INFO - Episode 46: Reward=12.61, Balance=$105.18, Win Rate=66.7%, Trades=3, Episode PnL=$5.18, Total PnL=$159.02, Max Drawdown=0.4%, Pred Accuracy=98.3% +2025-03-10 16:07:02,064 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:07:02,064 - INFO - Refreshing data for episode 47 +2025-03-10 16:07:02,065 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:02,384 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:02,397 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:02,448 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.4426857142857 | Take profit: 2093.8176964285713 +2025-03-10 16:07:02,734 - INFO - CLOSED short at 2116.52 | PnL: 0.44% | $0.66 +2025-03-10 16:07:02,735 - INFO - OPENED LONG at 2116.52 | Stop loss: 2105.8935642857145 | Take profit: 2148.3335535714286 +2025-03-10 16:07:02,765 - INFO - CLOSED long at 2119.02 | PnL: 0.12% | $0.04 +2025-03-10 16:07:02,766 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6589357142857 | Take profit: 2087.1689464285714 +2025-03-10 16:07:03,813 - INFO - TAKE PROFIT hit for short at 2087.1689464285714 | PnL: 1.50% | $2.77 +2025-03-10 16:07:03,836 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0267357142857 | Take profit: 2049.3055464285712 +2025-03-10 16:07:04,080 - INFO - TAKE PROFIT hit for short at 2049.3055464285712 | PnL: 1.50% | $2.84 +2025-03-10 16:07:04,105 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.2988357142854 | Take profit: 2020.1692464285713 +2025-03-10 16:07:04,176 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.58, Avg Loss=$0.00 +2025-03-10 16:07:04,177 - INFO - Episode 47: Reward=15.92, Balance=$106.30, Win Rate=100.0%, Trades=4, Episode PnL=$6.27, Total PnL=$165.32, Max Drawdown=0.0%, Pred Accuracy=98.2% +2025-03-10 16:07:04,336 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 16:07:04,337 - INFO - New best PnL model saved: $6.27 +2025-03-10 16:07:04,337 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:07:04,337 - INFO - Refreshing data for episode 48 +2025-03-10 16:07:04,337 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:04,646 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:04,659 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:04,685 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7495785714286 | Take profit: 2093.137532142857 +2025-03-10 16:07:05,262 - INFO - CLOSED short at 2115.52 | PnL: 0.45% | $0.69 +2025-03-10 16:07:05,262 - INFO - OPENED LONG at 2115.52 | Stop loss: 2104.8982214285716 | Take profit: 2147.319067857143 +2025-03-10 16:07:05,290 - INFO - CLOSED long at 2114.75 | PnL: -0.04% | $-0.27 +2025-03-10 16:07:05,291 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.367928571429 | Take profit: 2082.9624821428574 +2025-03-10 16:07:06,130 - INFO - TAKE PROFIT hit for short at 2082.9624821428574 | PnL: 1.50% | $2.76 +2025-03-10 16:07:06,154 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2179285714287 | Take profit: 2053.4124821428572 +2025-03-10 16:07:06,367 - INFO - TAKE PROFIT hit for short at 2053.4124821428572 | PnL: 1.50% | $2.84 +2025-03-10 16:07:06,396 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.2991785714285 | Take profit: 2020.1687321428572 +2025-03-10 16:07:06,466 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.09, Avg Loss=$-0.27 +2025-03-10 16:07:06,467 - INFO - Episode 48: Reward=13.88, Balance=$106.01, Win Rate=75.0%, Trades=4, Episode PnL=$6.28, Total PnL=$171.34, Max Drawdown=0.0%, Pred Accuracy=98.3% +2025-03-10 16:07:06,604 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 16:07:06,604 - INFO - New best PnL model saved: $6.28 +2025-03-10 16:07:06,605 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:07:06,605 - INFO - Refreshing data for episode 49 +2025-03-10 16:07:06,605 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:06,922 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:06,932 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:06,961 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7501535714287 | Take profit: 2093.136669642857 +2025-03-10 16:07:07,587 - INFO - CLOSED short at 2116.06 | PnL: 0.42% | $0.64 +2025-03-10 16:07:07,587 - INFO - OPENED LONG at 2116.06 | Stop loss: 2105.4349464285715 | Take profit: 2147.8680303571427 +2025-03-10 16:07:07,615 - INFO - CLOSED long at 2115.21 | PnL: -0.04% | $-0.28 +2025-03-10 16:07:07,616 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.8308035714285 | Take profit: 2083.414719642857 +2025-03-10 16:07:08,172 - INFO - CLOSED short at 2104.67 | PnL: 0.50% | $0.78 +2025-03-10 16:07:08,230 - INFO - OPENED SHORT at 2099.63 | Stop loss: 2110.172903571429 | Take profit: 2068.068419642857 +2025-03-10 16:07:08,485 - INFO - CLOSED short at 2081.0 | PnL: 0.89% | $1.56 +2025-03-10 16:07:08,515 - INFO - OPENED SHORT at 2084.25 | Stop loss: 2094.7160035714287 | Take profit: 2052.919119642857 +2025-03-10 16:07:08,668 - INFO - TAKE PROFIT hit for short at 2052.919119642857 | PnL: 1.50% | $2.82 +2025-03-10 16:07:08,695 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.299753571429 | Take profit: 2020.167869642857 +2025-03-10 16:07:08,718 - INFO - CLOSED short at 2043.51 | PnL: 0.37% | $0.55 +2025-03-10 16:07:08,718 - INFO - OPENED LONG at 2043.51 | Stop loss: 2033.2476964285715 | Take profit: 2074.229780357143 +2025-03-10 16:07:08,742 - INFO - CLOSED long at 2052.89 | PnL: 0.46% | $0.75 +2025-03-10 16:07:08,742 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.1992035714284 | Take profit: 2022.029519642857 +2025-03-10 16:07:08,763 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.18, Avg Loss=$-0.28 +2025-03-10 16:07:08,763 - INFO - Episode 49: Reward=19.13, Balance=$106.82, Win Rate=85.7%, Trades=7, Episode PnL=$6.35, Total PnL=$178.15, Max Drawdown=0.0%, Pred Accuracy=98.4% +2025-03-10 16:07:08,924 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 16:07:08,924 - INFO - New best PnL model saved: $6.35 +2025-03-10 16:07:08,924 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:07:08,924 - INFO - Early stopping triggered after 50 episodes without improvement +2025-03-10 16:07:09,080 - INFO - Model saved to models/trading_agent_final.pt +2025-03-10 16:07:10,049 - INFO - Training results saved to training_results.png +2025-03-10 16:07:10,182 - INFO - Model saved to models/trading_agent_continuous_0.pt +2025-03-10 16:07:15,187 - INFO - Starting training batch 2 +2025-03-10 16:07:15,187 - INFO - Refreshing data for new training batch +2025-03-10 16:07:15,188 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:15,520 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 16:07:15,531 - INFO - Initialized environment with 500 candles +2025-03-10 16:07:15,531 - INFO - Updated environment with fresh candles +2025-03-10 16:07:15,531 - INFO - Starting training on device: cuda +2025-03-10 16:07:15,533 - INFO - Loading best model from models/trading_agent_best_pnl.pt to resume training +2025-03-10 16:07:15,533 - INFO - Loading model from models/trading_agent_best_pnl.pt +2025-03-10 16:07:15,778 - INFO - Model loaded successfully with weights_only=True +2025-03-10 16:07:15,778 - INFO - Resumed with best metrics - Reward: 202.74, PnL: $6.20, Win Rate: 66.7% +2025-03-10 16:07:15,782 - INFO - Refreshing data for episode 0 +2025-03-10 16:07:15,782 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:16,110 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:16,118 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:17,041 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7505142857144 | Take profit: 2093.1361285714283 +2025-03-10 16:07:17,716 - INFO - CLOSED short at 2116.06 | PnL: 0.42% | $0.64 +2025-03-10 16:07:17,741 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.8311642857143 | Take profit: 2083.4141785714287 +2025-03-10 16:07:18,037 - INFO - CLOSED short at 2091.36 | PnL: 1.13% | $2.02 +2025-03-10 16:07:18,037 - INFO - OPENED LONG at 2091.36 | Stop loss: 2080.8580857142856 | Take profit: 2122.7980714285713 +2025-03-10 16:07:18,063 - INFO - CLOSED long at 2100.05 | PnL: 0.42% | $0.63 +2025-03-10 16:07:18,063 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5953642857144 | Take profit: 2068.4815785714286 +2025-03-10 16:07:18,455 - INFO - CLOSED short at 2090.59 | PnL: 0.45% | $0.71 +2025-03-10 16:07:18,456 - INFO - OPENED LONG at 2090.59 | Stop loss: 2080.0919357142857 | Take profit: 2122.0165214285717 +2025-03-10 16:07:18,482 - INFO - CLOSED long at 2090.99 | PnL: 0.02% | $-0.16 +2025-03-10 16:07:18,483 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.490064285714 | Take profit: 2059.5574785714284 +2025-03-10 16:07:18,734 - INFO - TAKE PROFIT hit for short at 2059.5574785714284 | PnL: 1.50% | $2.85 +2025-03-10 16:07:18,758 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3001142857142 | Take profit: 2020.1673285714285 +2025-03-10 16:07:18,820 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.37, Avg Loss=$-0.16 +2025-03-10 16:07:18,821 - INFO - Episode 0: Reward=18.65, Balance=$106.69, Win Rate=83.3%, Trades=6, Episode PnL=$6.22, Total PnL=$184.84, Max Drawdown=0.0%, Pred Accuracy=99.5% +2025-03-10 16:07:18,963 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 16:07:18,963 - INFO - New best PnL model saved: $6.22 +2025-03-10 16:07:19,117 - INFO - Model saved to checkpoints/trading_agent_episode_0.pt +2025-03-10 16:07:19,118 - INFO - Checkpoint saved at episode 0 +2025-03-10 16:07:20,095 - INFO - Visualization saved for episode 0 +2025-03-10 16:07:21,873 - INFO - Visualization saved for episode 0 +2025-03-10 16:07:21,891 - INFO - Refreshing data for episode 1 +2025-03-10 16:07:21,891 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:22,189 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:22,198 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:22,292 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7507535714285 | Take profit: 2093.135769642857 +2025-03-10 16:07:22,814 - INFO - CLOSED short at 2115.52 | PnL: 0.45% | $0.69 +2025-03-10 16:07:22,838 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.3691035714282 | Take profit: 2082.9607196428574 +2025-03-10 16:07:23,558 - INFO - TAKE PROFIT hit for short at 2082.9607196428574 | PnL: 1.50% | $2.77 +2025-03-10 16:07:23,582 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2191035714286 | Take profit: 2053.410719642857 +2025-03-10 16:07:23,758 - INFO - TAKE PROFIT hit for short at 2053.410719642857 | PnL: 1.50% | $2.84 +2025-03-10 16:07:23,783 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.300353571429 | Take profit: 2020.166969642857 +2025-03-10 16:07:23,850 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.10, Avg Loss=$0.00 +2025-03-10 16:07:23,851 - INFO - Episode 1: Reward=15.40, Balance=$106.29, Win Rate=100.0%, Trades=3, Episode PnL=$6.29, Total PnL=$191.14, Max Drawdown=0.0%, Pred Accuracy=99.5% +2025-03-10 16:07:23,985 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 16:07:23,986 - INFO - New best PnL model saved: $6.29 +2025-03-10 16:07:23,986 - INFO - Refreshing data for episode 2 +2025-03-10 16:07:23,987 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:24,302 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:24,313 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:24,332 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7507535714285 | Take profit: 2093.135769642857 +2025-03-10 16:07:24,435 - INFO - CLOSED short at 2122.01 | PnL: 0.14% | $0.09 +2025-03-10 16:07:24,436 - INFO - OPENED LONG at 2122.01 | Stop loss: 2111.3545964285718 | Take profit: 2153.908180357143 +2025-03-10 16:07:24,456 - INFO - CLOSED long at 2122.17 | PnL: 0.01% | $-0.18 +2025-03-10 16:07:24,456 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.826203571429 | Take profit: 2090.2694196428574 +2025-03-10 16:07:25,129 - INFO - TAKE PROFIT hit for short at 2090.2694196428574 | PnL: 1.50% | $2.75 +2025-03-10 16:07:25,158 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.334553571429 | Take profit: 2058.4243696428575 +2025-03-10 16:07:25,227 - INFO - CLOSED short at 2102.83 | PnL: -0.62% | $-1.45 +2025-03-10 16:07:25,228 - INFO - OPENED LONG at 2102.83 | Stop loss: 2092.2704964285713 | Take profit: 2134.440480357143 +2025-03-10 16:07:25,250 - INFO - CLOSED long at 2103.41 | PnL: 0.03% | $-0.14 +2025-03-10 16:07:25,251 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9724035714285 | Take profit: 2071.790819642857 +2025-03-10 16:07:25,669 - INFO - TAKE PROFIT hit for short at 2071.790819642857 | PnL: 1.50% | $2.78 +2025-03-10 16:07:25,696 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.586853571429 | Take profit: 2017.5074696428571 +2025-03-10 16:07:25,779 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$1.87, Avg Loss=$-0.59 +2025-03-10 16:07:25,780 - INFO - Episode 2: Reward=9.12, Balance=$103.83, Win Rate=50.0%, Trades=6, Episode PnL=$4.16, Total PnL=$194.97, Max Drawdown=0.0%, Pred Accuracy=99.6% +2025-03-10 16:07:25,780 - INFO - Refreshing data for episode 3 +2025-03-10 16:07:25,780 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:26,090 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:26,101 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:26,122 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7507535714285 | Take profit: 2093.135769642857 +2025-03-10 16:07:26,717 - INFO - CLOSED short at 2114.32 | PnL: 0.51% | $0.80 +2025-03-10 16:07:26,740 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.188203571429 | Take profit: 2082.783419642857 +2025-03-10 16:07:27,202 - INFO - CLOSED short at 2096.96 | PnL: 0.83% | $1.45 +2025-03-10 16:07:27,203 - INFO - OPENED LONG at 2096.96 | Stop loss: 2086.4298464285716 | Take profit: 2128.4824303571427 +2025-03-10 16:07:27,223 - INFO - CLOSED long at 2098.66 | PnL: 0.08% | $-0.04 +2025-03-10 16:07:27,224 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.198653571428 | Take profit: 2067.112069642857 +2025-03-10 16:07:27,293 - INFO - CLOSED short at 2084.95 | PnL: 0.65% | $1.11 +2025-03-10 16:07:27,318 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.028253571428 | Take profit: 2049.3032696428572 +2025-03-10 16:07:27,515 - INFO - TAKE PROFIT hit for short at 2049.3032696428572 | PnL: 1.50% | $2.84 +2025-03-10 16:07:27,537 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.300353571429 | Take profit: 2020.166969642857 +2025-03-10 16:07:27,606 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.55, Avg Loss=$-0.04 +2025-03-10 16:07:27,606 - INFO - Episode 3: Reward=17.53, Balance=$106.15, Win Rate=80.0%, Trades=5, Episode PnL=$6.19, Total PnL=$201.12, Max Drawdown=0.0%, Pred Accuracy=99.6% +2025-03-10 16:07:27,607 - INFO - Refreshing data for episode 4 +2025-03-10 16:07:27,607 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:27,942 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:27,954 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:27,977 - INFO - OPENED LONG at 2125.08 | Stop loss: 2114.4092464285714 | Take profit: 2157.0242303571426 +2025-03-10 16:07:27,999 - INFO - CLOSED long at 2125.77 | PnL: 0.03% | $-0.13 +2025-03-10 16:07:27,999 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.4442035714287 | Take profit: 2093.8154196428573 +2025-03-10 16:07:28,743 - INFO - TAKE PROFIT hit for short at 2093.8154196428573 | PnL: 1.50% | $2.74 +2025-03-10 16:07:28,764 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.595603571429 | Take profit: 2068.4812196428575 +2025-03-10 16:07:28,878 - INFO - CLOSED short at 2100.0 | PnL: 0.00% | $-0.20 +2025-03-10 16:07:28,903 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3895035714286 | Take profit: 2071.219519642857 +2025-03-10 16:07:29,341 - INFO - CLOSED short at 2075.07 | PnL: 1.32% | $2.45 +2025-03-10 16:07:29,365 - INFO - OPENED SHORT at 2067.71 | Stop loss: 2078.0939035714287 | Take profit: 2036.6263196428572 +2025-03-10 16:07:29,478 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.60, Avg Loss=$-0.16 +2025-03-10 16:07:29,479 - INFO - Episode 4: Reward=27.24, Balance=$104.86, Win Rate=50.0%, Trades=4, Episode PnL=$4.99, Total PnL=$205.98, Max Drawdown=0.2%, Pred Accuracy=99.6% +2025-03-10 16:07:29,479 - INFO - Refreshing data for episode 5 +2025-03-10 16:07:29,480 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:29,796 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:29,806 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:30,722 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7507535714285 | Take profit: 2093.135769642857 +2025-03-10 16:07:31,259 - INFO - CLOSED short at 2115.21 | PnL: 0.46% | $0.71 +2025-03-10 16:07:31,284 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.7158535714284 | Take profit: 2082.320469642857 +2025-03-10 16:07:31,309 - INFO - CLOSED short at 2115.11 | PnL: -0.05% | $-0.29 +2025-03-10 16:07:31,333 - INFO - OPENED SHORT at 2114.32 | Stop loss: 2124.936953571429 | Take profit: 2082.5371696428574 +2025-03-10 16:07:31,956 - INFO - TAKE PROFIT hit for short at 2082.5371696428574 | PnL: 1.50% | $2.76 +2025-03-10 16:07:31,983 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2191035714286 | Take profit: 2053.410719642857 +2025-03-10 16:07:32,177 - INFO - TAKE PROFIT hit for short at 2053.410719642857 | PnL: 1.50% | $2.83 +2025-03-10 16:07:32,205 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.300353571429 | Take profit: 2020.166969642857 +2025-03-10 16:07:32,274 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.10, Avg Loss=$-0.29 +2025-03-10 16:07:32,274 - INFO - Episode 5: Reward=27.84, Balance=$106.02, Win Rate=75.0%, Trades=4, Episode PnL=$6.02, Total PnL=$212.00, Max Drawdown=0.3%, Pred Accuracy=99.7% +2025-03-10 16:07:32,275 - INFO - Refreshing data for episode 6 +2025-03-10 16:07:32,275 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:32,582 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:32,594 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:32,620 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7507535714285 | Take profit: 2093.135769642857 +2025-03-10 16:07:33,440 - INFO - TAKE PROFIT hit for short at 2093.135769642857 | PnL: 1.50% | $2.75 +2025-03-10 16:07:33,469 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.595603571429 | Take profit: 2068.4812196428575 +2025-03-10 16:07:33,872 - INFO - CLOSED short at 2084.95 | PnL: 0.72% | $1.25 +2025-03-10 16:07:33,899 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.028253571428 | Take profit: 2049.3032696428572 +2025-03-10 16:07:34,090 - INFO - CLOSED short at 2048.3 | PnL: 1.55% | $2.95 +2025-03-10 16:07:34,090 - INFO - OPENED LONG at 2048.3 | Stop loss: 2038.0131464285716 | Take profit: 2079.092530357143 +2025-03-10 16:07:34,114 - INFO - CLOSED long at 2051.0 | PnL: 0.13% | $0.07 +2025-03-10 16:07:34,115 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.300353571429 | Take profit: 2020.166969642857 +2025-03-10 16:07:34,178 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.75, Avg Loss=$0.00 +2025-03-10 16:07:34,179 - INFO - Episode 6: Reward=33.22, Balance=$107.01, Win Rate=100.0%, Trades=4, Episode PnL=$6.95, Total PnL=$219.01, Max Drawdown=0.0%, Pred Accuracy=99.7% +2025-03-10 16:07:34,315 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 16:07:34,315 - INFO - New best PnL model saved: $6.95 +2025-03-10 16:07:34,316 - INFO - Refreshing data for episode 7 +2025-03-10 16:07:34,316 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:34,623 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:34,634 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:34,655 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7507535714285 | Take profit: 2093.135769642857 +2025-03-10 16:07:34,696 - INFO - CLOSED short at 2126.13 | PnL: -0.05% | $-0.29 +2025-03-10 16:07:34,720 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9969535714285 | Take profit: 2094.357169642857 +2025-03-10 16:07:34,804 - INFO - CLOSED short at 2122.24 | PnL: 0.19% | $0.18 +2025-03-10 16:07:34,827 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1277535714285 | Take profit: 2088.6047696428573 +2025-03-10 16:07:34,946 - INFO - CLOSED short at 2119.02 | PnL: 0.07% | $-0.06 +2025-03-10 16:07:34,968 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6101535714283 | Take profit: 2089.0775696428573 +2025-03-10 16:07:35,486 - INFO - TAKE PROFIT hit for short at 2089.0775696428573 | PnL: 1.50% | $2.74 +2025-03-10 16:07:35,507 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.334553571429 | Take profit: 2058.4243696428575 +2025-03-10 16:07:35,577 - INFO - STOP LOSS hit for short at 2100.334553571429 | PnL: -0.50% | $-1.21 +2025-03-10 16:07:35,602 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9724035714285 | Take profit: 2071.790819642857 +2025-03-10 16:07:36,036 - INFO - TAKE PROFIT hit for short at 2071.790819642857 | PnL: 1.50% | $2.78 +2025-03-10 16:07:36,060 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.586853571429 | Take profit: 2017.5074696428571 +2025-03-10 16:07:36,152 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.90, Avg Loss=$-0.52 +2025-03-10 16:07:36,153 - INFO - Episode 7: Reward=26.45, Balance=$104.14, Win Rate=50.0%, Trades=6, Episode PnL=$4.14, Total PnL=$223.16, Max Drawdown=1.2%, Pred Accuracy=99.8% +2025-03-10 16:07:36,153 - INFO - Refreshing data for episode 8 +2025-03-10 16:07:36,153 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:36,446 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:36,456 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:36,480 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7507535714285 | Take profit: 2093.135769642857 +2025-03-10 16:07:36,636 - INFO - CLOSED short at 2122.24 | PnL: 0.13% | $0.07 +2025-03-10 16:07:36,636 - INFO - OPENED LONG at 2122.24 | Stop loss: 2111.5834464285713 | Take profit: 2154.1416303571427 +2025-03-10 16:07:36,659 - INFO - CLOSED long at 2120.48 | PnL: -0.08% | $-0.36 +2025-03-10 16:07:36,659 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1277535714285 | Take profit: 2088.6047696428573 +2025-03-10 16:07:36,681 - INFO - CLOSED short at 2120.54 | PnL: -0.00% | $-0.20 +2025-03-10 16:07:36,681 - INFO - OPENED LONG at 2120.54 | Stop loss: 2109.8919464285714 | Take profit: 2152.4161303571427 +2025-03-10 16:07:36,705 - INFO - CLOSED long at 2118.0 | PnL: -0.12% | $-0.43 +2025-03-10 16:07:36,705 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.635353571429 | Take profit: 2086.161969642857 +2025-03-10 16:07:36,775 - INFO - CLOSED short at 2116.52 | PnL: 0.07% | $-0.06 +2025-03-10 16:07:36,775 - INFO - OPENED LONG at 2116.52 | Stop loss: 2105.8920464285716 | Take profit: 2148.3358303571426 +2025-03-10 16:07:36,797 - INFO - CLOSED long at 2119.02 | PnL: 0.12% | $0.04 +2025-03-10 16:07:36,798 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.660453571428 | Take profit: 2087.1666696428574 +2025-03-10 16:07:37,113 - INFO - CLOSED short at 2114.57 | PnL: 0.21% | $0.21 +2025-03-10 16:07:37,114 - INFO - OPENED LONG at 2114.57 | Stop loss: 2103.9517964285715 | Take profit: 2146.3565803571432 +2025-03-10 16:07:37,140 - INFO - CLOSED long at 2112.57 | PnL: -0.09% | $-0.38 +2025-03-10 16:07:37,140 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.1782035714286 | Take profit: 2080.8134196428573 +2025-03-10 16:07:37,661 - INFO - CLOSED short at 2098.66 | PnL: 0.66% | $1.08 +2025-03-10 16:07:37,662 - INFO - OPENED LONG at 2098.66 | Stop loss: 2088.1213464285715 | Take profit: 2130.207930357143 +2025-03-10 16:07:37,683 - INFO - CLOSED long at 2090.59 | PnL: -0.38% | $-0.95 +2025-03-10 16:07:37,684 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.0883035714287 | Take profit: 2059.1631196428575 +2025-03-10 16:07:37,966 - INFO - TAKE PROFIT hit for short at 2059.1631196428575 | PnL: 1.50% | $2.72 +2025-03-10 16:07:38,003 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.300353571429 | Take profit: 2020.166969642857 +2025-03-10 16:07:38,077 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$0.82, Avg Loss=$-0.40 +2025-03-10 16:07:38,077 - INFO - Episode 8: Reward=22.09, Balance=$101.74, Win Rate=45.5%, Trades=11, Episode PnL=$3.82, Total PnL=$224.90, Max Drawdown=0.0%, Pred Accuracy=99.8% +2025-03-10 16:07:38,078 - INFO - Refreshing data for episode 9 +2025-03-10 16:07:38,078 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:38,389 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:38,401 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:38,428 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7507535714285 | Take profit: 2093.135769642857 +2025-03-10 16:07:39,391 - INFO - TAKE PROFIT hit for short at 2093.135769642857 | PnL: 1.50% | $2.75 +2025-03-10 16:07:39,421 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.595603571429 | Take profit: 2068.4812196428575 +2025-03-10 16:07:40,106 - INFO - CLOSED short at 2083.07 | PnL: 0.81% | $1.43 +2025-03-10 16:07:40,106 - INFO - OPENED LONG at 2083.07 | Stop loss: 2072.6092964285713 | Take profit: 2114.384080357143 +2025-03-10 16:07:40,138 - INFO - CLOSED long at 2075.07 | PnL: -0.38% | $-0.99 +2025-03-10 16:07:40,138 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.4907035714286 | Take profit: 2043.8759196428573 +2025-03-10 16:07:40,247 - INFO - TAKE PROFIT hit for short at 2043.8759196428573 | PnL: 1.50% | $2.83 +2025-03-10 16:07:40,277 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.199803571428 | Take profit: 2022.028619642857 +2025-03-10 16:07:40,295 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.34, Avg Loss=$-0.99 +2025-03-10 16:07:40,296 - INFO - Episode 9: Reward=27.53, Balance=$106.02, Win Rate=75.0%, Trades=4, Episode PnL=$7.01, Total PnL=$230.92, Max Drawdown=0.0%, Pred Accuracy=99.8% +2025-03-10 16:07:40,439 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 16:07:40,440 - INFO - New best PnL model saved: $7.01 +2025-03-10 16:07:40,440 - INFO - Refreshing data for episode 10 +2025-03-10 16:07:40,440 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:40,764 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:40,774 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:41,530 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7507535714285 | Take profit: 2093.135769642857 +2025-03-10 16:07:41,817 - INFO - CLOSED short at 2121.42 | PnL: 0.17% | $0.14 +2025-03-10 16:07:41,841 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1479535714284 | Take profit: 2084.7041696428573 +2025-03-10 16:07:41,936 - INFO - STOP LOSS hit for short at 2127.1479535714284 | PnL: -0.50% | $-1.18 +2025-03-10 16:07:41,965 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.439203571428 | Take profit: 2092.830419642857 +2025-03-10 16:07:42,419 - INFO - TAKE PROFIT hit for short at 2092.830419642857 | PnL: 1.50% | $2.72 +2025-03-10 16:07:42,452 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.595603571429 | Take profit: 2068.4812196428575 +2025-03-10 16:07:43,125 - INFO - TAKE PROFIT hit for short at 2068.4812196428575 | PnL: 1.50% | $2.79 +2025-03-10 16:07:43,151 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.586853571429 | Take profit: 2017.5074696428571 +2025-03-10 16:07:43,240 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.88, Avg Loss=$-1.18 +2025-03-10 16:07:43,241 - INFO - Episode 10: Reward=28.98, Balance=$104.47, Win Rate=75.0%, Trades=4, Episode PnL=$4.47, Total PnL=$235.39, Max Drawdown=1.2%, Pred Accuracy=99.7% +2025-03-10 16:07:43,390 - INFO - Model saved to checkpoints/trading_agent_episode_10.pt +2025-03-10 16:07:43,391 - INFO - Checkpoint saved at episode 10 +2025-03-10 16:07:44,445 - INFO - Visualization saved for episode 10 +2025-03-10 16:07:46,306 - INFO - Visualization saved for episode 10 +2025-03-10 16:07:46,325 - INFO - Refreshing data for episode 11 +2025-03-10 16:07:46,326 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:46,626 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:46,637 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:46,708 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7508285714284 | Take profit: 2093.135657142857 +2025-03-10 16:07:47,697 - INFO - TAKE PROFIT hit for short at 2093.135657142857 | PnL: 1.50% | $2.75 +2025-03-10 16:07:47,721 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.595678571429 | Take profit: 2068.4811071428576 +2025-03-10 16:07:47,965 - INFO - CLOSED short at 2104.22 | PnL: -0.20% | $-0.60 +2025-03-10 16:07:47,993 - INFO - OPENED SHORT at 2104.67 | Stop loss: 2115.2387785714286 | Take profit: 2073.0318071428574 +2025-03-10 16:07:48,573 - INFO - TAKE PROFIT hit for short at 2073.0318071428574 | PnL: 1.50% | $2.81 +2025-03-10 16:07:48,606 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.586928571429 | Take profit: 2017.5073571428572 +2025-03-10 16:07:48,726 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$-0.60 +2025-03-10 16:07:48,727 - INFO - Episode 11: Reward=12.37, Balance=$104.95, Win Rate=66.7%, Trades=3, Episode PnL=$4.95, Total PnL=$240.35, Max Drawdown=0.6%, Pred Accuracy=99.4% +2025-03-10 16:07:48,727 - INFO - Refreshing data for episode 12 +2025-03-10 16:07:48,728 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:49,027 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:49,034 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:49,065 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7508285714284 | Take profit: 2093.135657142857 +2025-03-10 16:07:49,939 - INFO - TAKE PROFIT hit for short at 2093.135657142857 | PnL: 1.50% | $2.75 +2025-03-10 16:07:49,961 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.595678571429 | Take profit: 2068.4811071428576 +2025-03-10 16:07:50,611 - INFO - TAKE PROFIT hit for short at 2068.4811071428576 | PnL: 1.50% | $2.82 +2025-03-10 16:07:50,639 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.586928571429 | Take profit: 2017.5073571428572 +2025-03-10 16:07:50,741 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.79, Avg Loss=$0.00 +2025-03-10 16:07:50,742 - INFO - Episode 12: Reward=14.10, Balance=$105.57, Win Rate=100.0%, Trades=2, Episode PnL=$5.57, Total PnL=$245.92, Max Drawdown=0.0%, Pred Accuracy=98.8% +2025-03-10 16:07:50,742 - INFO - Refreshing data for episode 13 +2025-03-10 16:07:50,743 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:51,054 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:51,065 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:51,091 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7510964285716 | Take profit: 2093.135255357143 +2025-03-10 16:07:51,891 - INFO - CLOSED short at 2098.24 | PnL: 1.26% | $2.28 +2025-03-10 16:07:51,926 - INFO - OPENED SHORT at 2098.28 | Stop loss: 2108.817096428572 | Take profit: 2066.737255357143 +2025-03-10 16:07:52,169 - INFO - CLOSED short at 2104.67 | PnL: -0.30% | $-0.81 +2025-03-10 16:07:52,169 - INFO - OPENED LONG at 2104.67 | Stop loss: 2094.1009535714284 | Take profit: 2136.308594642857 +2025-03-10 16:07:52,190 - INFO - CLOSED long at 2105.26 | PnL: 0.03% | $-0.14 +2025-03-10 16:07:52,190 - INFO - OPENED SHORT at 2105.26 | Stop loss: 2115.8319964285715 | Take profit: 2073.612555357143 +2025-03-10 16:07:52,255 - INFO - CLOSED short at 2094.16 | PnL: 0.53% | $0.85 +2025-03-10 16:07:52,255 - INFO - OPENED LONG at 2094.16 | Stop loss: 2083.6435035714285 | Take profit: 2125.640944642857 +2025-03-10 16:07:52,276 - INFO - CLOSED long at 2096.96 | PnL: 0.13% | $0.07 +2025-03-10 16:07:52,277 - INFO - OPENED SHORT at 2096.96 | Stop loss: 2107.4904964285715 | Take profit: 2065.437055357143 +2025-03-10 16:07:52,635 - INFO - TAKE PROFIT hit for short at 2065.437055357143 | PnL: 1.50% | $2.81 +2025-03-10 16:07:52,660 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3006964285714 | Take profit: 2020.1664553571427 +2025-03-10 16:07:52,739 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.50, Avg Loss=$-0.48 +2025-03-10 16:07:52,740 - INFO - Episode 13: Reward=1.09, Balance=$105.05, Win Rate=66.7%, Trades=6, Episode PnL=$5.12, Total PnL=$250.96, Max Drawdown=0.0%, Pred Accuracy=97.6% +2025-03-10 16:07:52,740 - INFO - Refreshing data for episode 14 +2025-03-10 16:07:52,740 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:53,061 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:53,071 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:53,099 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7510964285716 | Take profit: 2093.135255357143 +2025-03-10 16:07:54,014 - INFO - TAKE PROFIT hit for short at 2093.135255357143 | PnL: 1.50% | $2.75 +2025-03-10 16:07:54,041 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5959464285716 | Take profit: 2068.480705357143 +2025-03-10 16:07:54,172 - INFO - CLOSED short at 2100.0 | PnL: 0.00% | $-0.20 +2025-03-10 16:07:54,173 - INFO - OPENED LONG at 2100.0 | Stop loss: 2089.4543035714287 | Take profit: 2131.5685446428574 +2025-03-10 16:07:54,195 - INFO - CLOSED long at 2102.83 | PnL: 0.13% | $0.07 +2025-03-10 16:07:54,195 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3898464285717 | Take profit: 2071.2190053571426 +2025-03-10 16:07:54,311 - INFO - CLOSED short at 2099.63 | PnL: 0.15% | $0.10 +2025-03-10 16:07:54,312 - INFO - OPENED LONG at 2099.63 | Stop loss: 2089.0861535714284 | Take profit: 2131.1929946428572 +2025-03-10 16:07:54,340 - INFO - CLOSED long at 2099.22 | PnL: -0.02% | $-0.24 +2025-03-10 16:07:54,340 - INFO - OPENED SHORT at 2099.22 | Stop loss: 2109.761796428571 | Take profit: 2067.663155357143 +2025-03-10 16:07:54,390 - INFO - CLOSED short at 2096.96 | PnL: 0.11% | $0.02 +2025-03-10 16:07:54,414 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.1989964285713 | Take profit: 2067.1115553571426 +2025-03-10 16:07:54,711 - INFO - TAKE PROFIT hit for short at 2067.1115553571426 | PnL: 1.50% | $2.82 +2025-03-10 16:07:54,734 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3006964285714 | Take profit: 2020.1664553571427 +2025-03-10 16:07:54,800 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$1.15, Avg Loss=$-0.22 +2025-03-10 16:07:54,801 - INFO - Episode 14: Reward=-0.07, Balance=$105.32, Win Rate=71.4%, Trades=7, Episode PnL=$5.49, Total PnL=$256.28, Max Drawdown=0.2%, Pred Accuracy=97.1% +2025-03-10 16:07:54,801 - INFO - Refreshing data for episode 15 +2025-03-10 16:07:54,802 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:55,111 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:55,120 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:56,097 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7510964285716 | Take profit: 2093.135255357143 +2025-03-10 16:07:56,510 - INFO - CLOSED short at 2124.77 | PnL: 0.01% | $-0.17 +2025-03-10 16:07:56,535 - INFO - OPENED SHORT at 2120.26 | Stop loss: 2130.906996428572 | Take profit: 2088.3875553571434 +2025-03-10 16:07:57,359 - INFO - TAKE PROFIT hit for short at 2088.3875553571434 | PnL: 1.50% | $2.74 +2025-03-10 16:07:57,387 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0285964285713 | Take profit: 2049.302755357143 +2025-03-10 16:07:57,437 - INFO - CLOSED short at 2081.0 | PnL: -0.02% | $-0.24 +2025-03-10 16:07:57,468 - INFO - OPENED SHORT at 2084.25 | Stop loss: 2094.7169464285716 | Take profit: 2052.917705357143 +2025-03-10 16:07:57,598 - INFO - TAKE PROFIT hit for short at 2052.917705357143 | PnL: 1.50% | $2.81 +2025-03-10 16:07:57,638 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.7732464285714 | Take profit: 2012.788805357143 +2025-03-10 16:07:57,683 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$-0.20 +2025-03-10 16:07:57,684 - INFO - Episode 15: Reward=-2.52, Balance=$105.14, Win Rate=50.0%, Trades=4, Episode PnL=$5.14, Total PnL=$261.42, Max Drawdown=0.2%, Pred Accuracy=97.6% +2025-03-10 16:07:57,684 - INFO - Refreshing data for episode 16 +2025-03-10 16:07:57,684 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:07:57,979 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:07:57,990 - INFO - Initialized environment with 100 candles +2025-03-10 16:07:58,018 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7510964285716 | Take profit: 2093.135255357143 +2025-03-10 16:07:58,884 - INFO - TAKE PROFIT hit for short at 2093.135255357143 | PnL: 1.50% | $2.75 +2025-03-10 16:07:58,916 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5959464285716 | Take profit: 2068.480705357143 +2025-03-10 16:07:59,659 - INFO - TAKE PROFIT hit for short at 2068.480705357143 | PnL: 1.50% | $2.82 +2025-03-10 16:07:59,683 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5871964285716 | Take profit: 2017.5069553571432 +2025-03-10 16:07:59,775 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$0.00 +2025-03-10 16:07:59,776 - INFO - Episode 16: Reward=14.10, Balance=$105.57, Win Rate=100.0%, Trades=2, Episode PnL=$5.57, Total PnL=$266.99, Max Drawdown=0.0%, Pred Accuracy=98.0% +2025-03-10 16:07:59,776 - INFO - Refreshing data for episode 17 +2025-03-10 16:07:59,778 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:00,090 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:00,103 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:00,132 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7510964285716 | Take profit: 2093.135255357143 +2025-03-10 16:08:01,012 - INFO - TAKE PROFIT hit for short at 2093.135255357143 | PnL: 1.50% | $2.75 +2025-03-10 16:08:01,037 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5959464285716 | Take profit: 2068.480705357143 +2025-03-10 16:08:01,221 - INFO - CLOSED short at 2104.22 | PnL: -0.20% | $-0.60 +2025-03-10 16:08:01,245 - INFO - OPENED SHORT at 2104.67 | Stop loss: 2115.2390464285713 | Take profit: 2073.031405357143 +2025-03-10 16:08:01,668 - INFO - TAKE PROFIT hit for short at 2073.031405357143 | PnL: 1.50% | $2.81 +2025-03-10 16:08:01,691 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5871964285716 | Take profit: 2017.5069553571432 +2025-03-10 16:08:01,791 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$-0.60 +2025-03-10 16:08:01,792 - INFO - Episode 17: Reward=12.40, Balance=$104.95, Win Rate=66.7%, Trades=3, Episode PnL=$4.95, Total PnL=$271.95, Max Drawdown=0.6%, Pred Accuracy=98.1% +2025-03-10 16:08:01,792 - INFO - Refreshing data for episode 18 +2025-03-10 16:08:01,793 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:02,117 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:02,129 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:02,154 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7510964285716 | Take profit: 2093.135255357143 +2025-03-10 16:08:02,208 - INFO - CLOSED short at 2126.13 | PnL: -0.05% | $-0.29 +2025-03-10 16:08:02,208 - INFO - OPENED LONG at 2126.13 | Stop loss: 2115.4536535714287 | Take profit: 2158.0904946428573 +2025-03-10 16:08:02,233 - INFO - CLOSED long at 2126.32 | PnL: 0.01% | $-0.18 +2025-03-10 16:08:02,234 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.997296428571 | Take profit: 2094.356655357143 +2025-03-10 16:08:03,164 - INFO - TAKE PROFIT hit for short at 2094.356655357143 | PnL: 1.50% | $2.73 +2025-03-10 16:08:03,214 - INFO - OPENED SHORT at 2096.36 | Stop loss: 2106.8874964285715 | Take profit: 2064.846055357143 +2025-03-10 16:08:03,590 - INFO - CLOSED short at 2098.66 | PnL: -0.11% | $-0.42 +2025-03-10 16:08:03,625 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.088646428572 | Take profit: 2059.162605357143 +2025-03-10 16:08:03,731 - INFO - CLOSED short at 2084.75 | PnL: 0.28% | $0.36 +2025-03-10 16:08:03,757 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.450696428571 | Take profit: 2049.716455357143 +2025-03-10 16:08:03,812 - INFO - CLOSED short at 2085.37 | PnL: -0.21% | $-0.62 +2025-03-10 16:08:03,841 - INFO - OPENED SHORT at 2084.11 | Stop loss: 2094.5762464285717 | Take profit: 2052.779805357143 +2025-03-10 16:08:03,936 - INFO - CLOSED short at 2048.3 | PnL: 1.72% | $3.22 +2025-03-10 16:08:03,958 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3006964285714 | Take profit: 2020.1664553571427 +2025-03-10 16:08:04,021 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$2.10, Avg Loss=$-0.38 +2025-03-10 16:08:04,022 - INFO - Episode 18: Reward=-2.31, Balance=$104.80, Win Rate=42.9%, Trades=7, Episode PnL=$4.98, Total PnL=$276.74, Max Drawdown=0.7%, Pred Accuracy=97.8% +2025-03-10 16:08:04,022 - INFO - Refreshing data for episode 19 +2025-03-10 16:08:04,023 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:04,337 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:04,346 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:04,372 - INFO - OPENED SHORT at 2125.08 | Stop loss: 2135.7510964285716 | Take profit: 2093.135255357143 +2025-03-10 16:08:04,728 - INFO - CLOSED short at 2124.9 | PnL: 0.01% | $-0.18 +2025-03-10 16:08:04,752 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0173464285713 | Take profit: 2096.336505357143 +2025-03-10 16:08:05,182 - INFO - TAKE PROFIT hit for short at 2096.336505357143 | PnL: 1.50% | $2.74 +2025-03-10 16:08:05,203 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5959464285716 | Take profit: 2068.480705357143 +2025-03-10 16:08:05,806 - INFO - TAKE PROFIT hit for short at 2068.480705357143 | PnL: 1.50% | $2.82 +2025-03-10 16:08:05,829 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5871964285716 | Take profit: 2017.5069553571432 +2025-03-10 16:08:05,916 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$-0.18 +2025-03-10 16:08:05,917 - INFO - Episode 19: Reward=-1.00, Balance=$105.38, Win Rate=66.7%, Trades=3, Episode PnL=$5.38, Total PnL=$282.13, Max Drawdown=0.2%, Pred Accuracy=97.6% +2025-03-10 16:08:05,918 - INFO - Refreshing data for episode 20 +2025-03-10 16:08:05,918 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:06,225 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:06,236 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:06,896 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.4422035714283 | Take profit: 2093.8184196428574 +2025-03-10 16:08:07,616 - INFO - CLOSED short at 2098.24 | PnL: 1.30% | $2.34 +2025-03-10 16:08:07,643 - INFO - OPENED SHORT at 2098.28 | Stop loss: 2108.814753571429 | Take profit: 2066.7407696428572 +2025-03-10 16:08:08,262 - INFO - TAKE PROFIT hit for short at 2066.7407696428572 | PnL: 1.50% | $2.81 +2025-03-10 16:08:08,283 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.2983535714284 | Take profit: 2020.169969642857 +2025-03-10 16:08:08,365 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.58, Avg Loss=$0.00 +2025-03-10 16:08:08,366 - INFO - Episode 20: Reward=2.48, Balance=$105.16, Win Rate=100.0%, Trades=2, Episode PnL=$5.16, Total PnL=$287.28, Max Drawdown=0.0%, Pred Accuracy=97.8% +2025-03-10 16:08:08,503 - INFO - Model saved to checkpoints/trading_agent_episode_20.pt +2025-03-10 16:08:08,504 - INFO - Checkpoint saved at episode 20 +2025-03-10 16:08:08,504 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:08:09,378 - INFO - Visualization saved for episode 20 +2025-03-10 16:08:10,935 - INFO - Visualization saved for episode 20 +2025-03-10 16:08:10,948 - INFO - Refreshing data for episode 21 +2025-03-10 16:08:10,948 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:11,269 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:11,279 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:11,378 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.4437464285716 | Take profit: 2093.816105357143 +2025-03-10 16:08:12,092 - INFO - CLOSED short at 2112.57 | PnL: 0.62% | $1.02 +2025-03-10 16:08:12,115 - INFO - OPENED SHORT at 2113.28 | Stop loss: 2123.891296428572 | Take profit: 2081.5134553571434 +2025-03-10 16:08:12,394 - INFO - CLOSED short at 2102.83 | PnL: 0.49% | $0.78 +2025-03-10 16:08:12,394 - INFO - OPENED LONG at 2102.83 | Stop loss: 2092.2709535714284 | Take profit: 2134.439794642857 +2025-03-10 16:08:12,417 - INFO - CLOSED long at 2103.41 | PnL: 0.03% | $-0.14 +2025-03-10 16:08:12,417 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9719464285713 | Take profit: 2071.791505357143 +2025-03-10 16:08:12,563 - INFO - CLOSED short at 2094.16 | PnL: 0.44% | $0.68 +2025-03-10 16:08:12,586 - INFO - OPENED SHORT at 2096.96 | Stop loss: 2107.4896964285713 | Take profit: 2065.4382553571427 +2025-03-10 16:08:12,612 - INFO - CLOSED short at 2098.66 | PnL: -0.08% | $-0.36 +2025-03-10 16:08:12,639 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.0878464285715 | Take profit: 2059.163805357143 +2025-03-10 16:08:12,907 - INFO - TAKE PROFIT hit for short at 2059.163805357143 | PnL: 1.50% | $2.80 +2025-03-10 16:08:12,953 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.7724464285716 | Take profit: 2012.790005357143 +2025-03-10 16:08:13,017 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.32, Avg Loss=$-0.25 +2025-03-10 16:08:13,018 - INFO - Episode 21: Reward=1.34, Balance=$104.77, Win Rate=66.7%, Trades=6, Episode PnL=$4.92, Total PnL=$292.05, Max Drawdown=0.4%, Pred Accuracy=97.9% +2025-03-10 16:08:13,018 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:08:13,018 - INFO - Refreshing data for episode 22 +2025-03-10 16:08:13,019 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:13,329 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:13,340 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:13,357 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.4443142857144 | Take profit: 2093.8152535714285 +2025-03-10 16:08:13,445 - INFO - CLOSED short at 2122.01 | PnL: 0.18% | $0.15 +2025-03-10 16:08:13,445 - INFO - OPENED LONG at 2122.01 | Stop loss: 2111.354485714286 | Take profit: 2153.908346428572 +2025-03-10 16:08:13,469 - INFO - CLOSED long at 2122.17 | PnL: 0.01% | $-0.18 +2025-03-10 16:08:13,471 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.8263142857145 | Take profit: 2090.2692535714286 +2025-03-10 16:08:13,575 - INFO - CLOSED short at 2121.8 | PnL: 0.02% | $-0.16 +2025-03-10 16:08:13,575 - INFO - OPENED LONG at 2121.8 | Stop loss: 2111.145535714286 | Take profit: 2153.6951964285713 +2025-03-10 16:08:13,596 - INFO - CLOSED long at 2121.42 | PnL: -0.02% | $-0.23 +2025-03-10 16:08:13,596 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0725642857146 | Take profit: 2089.5305035714287 +2025-03-10 16:08:13,779 - INFO - CLOSED short at 2114.78 | PnL: 0.31% | $0.42 +2025-03-10 16:08:13,780 - INFO - OPENED LONG at 2114.78 | Stop loss: 2104.160635714286 | Take profit: 2146.5698964285716 +2025-03-10 16:08:13,799 - INFO - CLOSED long at 2115.52 | PnL: 0.03% | $-0.13 +2025-03-10 16:08:13,800 - INFO - OPENED SHORT at 2115.52 | Stop loss: 2126.143064285714 | Take profit: 2083.7190035714284 +2025-03-10 16:08:14,327 - INFO - CLOSED short at 2105.26 | PnL: 0.48% | $0.75 +2025-03-10 16:08:14,328 - INFO - OPENED LONG at 2105.26 | Stop loss: 2094.688235714286 | Take profit: 2136.9070964285715 +2025-03-10 16:08:14,369 - INFO - CLOSED long at 2099.22 | PnL: -0.29% | $-0.76 +2025-03-10 16:08:14,369 - INFO - OPENED SHORT at 2099.22 | Stop loss: 2109.761564285714 | Take profit: 2067.6635035714285 +2025-03-10 16:08:14,561 - INFO - CLOSED short at 2081.0 | PnL: 0.87% | $1.50 +2025-03-10 16:08:14,586 - INFO - OPENED SHORT at 2084.25 | Stop loss: 2094.7167142857143 | Take profit: 2052.9180535714286 +2025-03-10 16:08:14,720 - INFO - TAKE PROFIT hit for short at 2052.9180535714286 | PnL: 1.50% | $2.78 +2025-03-10 16:08:14,746 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3004642857145 | Take profit: 2020.1668035714288 +2025-03-10 16:08:14,830 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 80.0% in downtrends | Avg Win=$1.12, Avg Loss=$-0.29 +2025-03-10 16:08:14,831 - INFO - Episode 22: Reward=-2.83, Balance=$104.14, Win Rate=50.0%, Trades=10, Episode PnL=$5.44, Total PnL=$296.19, Max Drawdown=0.0%, Pred Accuracy=98.0% +2025-03-10 16:08:14,831 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:08:14,832 - INFO - Refreshing data for episode 23 +2025-03-10 16:08:14,832 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:15,136 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:15,151 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:15,173 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.444610714286 | Take profit: 2093.8148089285714 +2025-03-10 16:08:15,364 - INFO - CLOSED short at 2118.0 | PnL: 0.37% | $0.52 +2025-03-10 16:08:15,394 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.454760714286 | Take profit: 2089.9043589285716 +2025-03-10 16:08:15,818 - INFO - CLOSED short at 2113.28 | PnL: 0.40% | $0.59 +2025-03-10 16:08:15,840 - INFO - OPENED SHORT at 2114.5 | Stop loss: 2125.1182607142855 | Take profit: 2082.7138589285714 +2025-03-10 16:08:16,303 - INFO - CLOSED short at 2090.99 | PnL: 1.11% | $2.00 +2025-03-10 16:08:16,326 - INFO - OPENED SHORT at 2084.95 | Stop loss: 2095.4205107142857 | Take profit: 2053.607108928571 +2025-03-10 16:08:16,371 - INFO - CLOSED short at 2084.75 | PnL: 0.01% | $-0.18 +2025-03-10 16:08:16,371 - INFO - OPENED LONG at 2084.75 | Stop loss: 2074.2804892857143 | Take profit: 2116.0898910714286 +2025-03-10 16:08:16,398 - INFO - CLOSED long at 2081.0 | PnL: -0.18% | $-0.56 +2025-03-10 16:08:16,398 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.4507607142855 | Take profit: 2049.7163589285715 +2025-03-10 16:08:16,552 - INFO - TAKE PROFIT hit for short at 2049.7163589285715 | PnL: 1.50% | $2.81 +2025-03-10 16:08:16,576 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3007607142854 | Take profit: 2020.1663589285715 +2025-03-10 16:08:16,661 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.48, Avg Loss=$-0.37 +2025-03-10 16:08:16,661 - INFO - Episode 23: Reward=1.51, Balance=$105.18, Win Rate=66.7%, Trades=6, Episode PnL=$5.74, Total PnL=$301.38, Max Drawdown=0.0%, Pred Accuracy=97.9% +2025-03-10 16:08:16,662 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:08:16,662 - INFO - Refreshing data for episode 24 +2025-03-10 16:08:16,663 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:16,972 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:16,981 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:17,005 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.444610714286 | Take profit: 2093.8148089285714 +2025-03-10 16:08:17,196 - INFO - CLOSED short at 2118.0 | PnL: 0.37% | $0.52 +2025-03-10 16:08:17,197 - INFO - OPENED LONG at 2118.0 | Stop loss: 2107.3642392857146 | Take profit: 2149.838641071429 +2025-03-10 16:08:17,215 - INFO - CLOSED long at 2121.8 | PnL: 0.18% | $0.16 +2025-03-10 16:08:17,242 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0728607142855 | Take profit: 2089.5300589285716 +2025-03-10 16:08:17,305 - INFO - CLOSED short at 2120.96 | PnL: 0.02% | $-0.15 +2025-03-10 16:08:17,326 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.5702607142857 | Take profit: 2092.9578589285716 +2025-03-10 16:08:17,347 - INFO - CLOSED short at 2128.33 | PnL: -0.16% | $-0.51 +2025-03-10 16:08:17,369 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4396107142857 | Take profit: 2092.8298089285713 +2025-03-10 16:08:17,777 - INFO - TAKE PROFIT hit for short at 2092.8298089285713 | PnL: 1.50% | $2.75 +2025-03-10 16:08:17,799 - INFO - OPENED LONG at 2100.05 | Stop loss: 2089.5039892857144 | Take profit: 2131.6193910714287 +2025-03-10 16:08:17,827 - INFO - CLOSED long at 2096.36 | PnL: -0.18% | $-0.55 +2025-03-10 16:08:17,827 - INFO - OPENED SHORT at 2096.36 | Stop loss: 2106.887560714286 | Take profit: 2064.8459589285717 +2025-03-10 16:08:18,444 - INFO - CLOSED short at 2048.3 | PnL: 2.29% | $4.39 +2025-03-10 16:08:18,445 - INFO - OPENED LONG at 2048.3 | Stop loss: 2038.0127392857146 | Take profit: 2079.093141071429 +2025-03-10 16:08:18,469 - INFO - CLOSED long at 2051.0 | PnL: 0.13% | $0.07 +2025-03-10 16:08:18,469 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3007607142854 | Take profit: 2020.1663589285715 +2025-03-10 16:08:18,562 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.58, Avg Loss=$-0.41 +2025-03-10 16:08:18,562 - INFO - Episode 24: Reward=2.07, Balance=$106.65, Win Rate=62.5%, Trades=8, Episode PnL=$7.14, Total PnL=$308.03, Max Drawdown=0.7%, Pred Accuracy=97.8% +2025-03-10 16:08:18,712 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 16:08:18,712 - INFO - New best PnL model saved: $7.14 +2025-03-10 16:08:18,713 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:08:18,713 - INFO - Refreshing data for episode 25 +2025-03-10 16:08:18,713 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:19,023 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:19,033 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:19,737 - INFO - OPENED LONG at 2125.77 | Stop loss: 2115.095389285714 | Take profit: 2157.725191071429 +2025-03-10 16:08:19,761 - INFO - CLOSED long at 2126.13 | PnL: 0.02% | $-0.16 +2025-03-10 16:08:19,762 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.806410714286 | Take profit: 2094.1694089285716 +2025-03-10 16:08:19,876 - INFO - CLOSED short at 2122.24 | PnL: 0.18% | $0.16 +2025-03-10 16:08:19,876 - INFO - OPENED LONG at 2122.24 | Stop loss: 2111.583039285714 | Take profit: 2154.142241071428 +2025-03-10 16:08:19,899 - INFO - CLOSED long at 2120.48 | PnL: -0.08% | $-0.36 +2025-03-10 16:08:19,899 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1281607142855 | Take profit: 2088.6041589285715 +2025-03-10 16:08:20,024 - INFO - CLOSED short at 2116.52 | PnL: 0.19% | $0.17 +2025-03-10 16:08:20,024 - INFO - OPENED LONG at 2116.52 | Stop loss: 2105.891639285714 | Take profit: 2148.3364410714285 +2025-03-10 16:08:20,073 - INFO - CLOSED long at 2120.96 | PnL: 0.21% | $0.21 +2025-03-10 16:08:20,073 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6105607142854 | Take profit: 2089.0769589285715 +2025-03-10 16:08:20,320 - INFO - CLOSED short at 2114.1 | PnL: 0.32% | $0.44 +2025-03-10 16:08:20,321 - INFO - OPENED LONG at 2114.1 | Stop loss: 2103.483739285714 | Take profit: 2145.880141071428 +2025-03-10 16:08:20,345 - INFO - CLOSED long at 2115.11 | PnL: 0.05% | $-0.10 +2025-03-10 16:08:20,346 - INFO - OPENED SHORT at 2115.11 | Stop loss: 2125.731310714286 | Take profit: 2083.3147089285717 +2025-03-10 16:08:20,371 - INFO - CLOSED short at 2114.32 | PnL: 0.04% | $-0.12 +2025-03-10 16:08:20,371 - INFO - OPENED LONG at 2114.32 | Stop loss: 2103.7026392857147 | Take profit: 2146.1034410714287 +2025-03-10 16:08:20,394 - INFO - CLOSED long at 2114.57 | PnL: 0.01% | $-0.17 +2025-03-10 16:08:20,395 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.188610714286 | Take profit: 2082.7828089285713 +2025-03-10 16:08:20,697 - INFO - CLOSED short at 2100.0 | PnL: 0.69% | $1.15 +2025-03-10 16:08:20,698 - INFO - OPENED LONG at 2100.0 | Stop loss: 2089.4542392857143 | Take profit: 2131.568641071429 +2025-03-10 16:08:20,725 - INFO - CLOSED long at 2102.83 | PnL: 0.13% | $0.07 +2025-03-10 16:08:20,725 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3899107142856 | Take profit: 2071.2189089285716 +2025-03-10 16:08:20,800 - INFO - CLOSED short at 2104.67 | PnL: -0.09% | $-0.37 +2025-03-10 16:08:20,801 - INFO - OPENED LONG at 2104.67 | Stop loss: 2094.1008892857144 | Take profit: 2136.3086910714287 +2025-03-10 16:08:20,826 - INFO - CLOSED long at 2105.26 | PnL: 0.03% | $-0.14 +2025-03-10 16:08:20,826 - INFO - OPENED SHORT at 2105.26 | Stop loss: 2115.832060714286 | Take profit: 2073.612458928572 +2025-03-10 16:08:20,946 - INFO - CLOSED short at 2098.66 | PnL: 0.31% | $0.42 +2025-03-10 16:08:20,947 - INFO - OPENED LONG at 2098.66 | Stop loss: 2088.120939285714 | Take profit: 2130.2085410714285 +2025-03-10 16:08:20,992 - INFO - CLOSED long at 2090.99 | PnL: -0.37% | $-0.92 +2025-03-10 16:08:20,993 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.4907107142853 | Take profit: 2059.556508928571 +2025-03-10 16:08:21,017 - INFO - CLOSED short at 2084.95 | PnL: 0.29% | $0.37 +2025-03-10 16:08:21,017 - INFO - OPENED LONG at 2084.95 | Stop loss: 2074.479489285714 | Take profit: 2116.292891071428 +2025-03-10 16:08:21,064 - INFO - CLOSED long at 2084.75 | PnL: -0.01% | $-0.22 +2025-03-10 16:08:21,064 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2195107142857 | Take profit: 2053.4101089285714 +2025-03-10 16:08:21,111 - INFO - CLOSED short at 2084.25 | PnL: 0.02% | $-0.15 +2025-03-10 16:08:21,112 - INFO - OPENED LONG at 2084.25 | Stop loss: 2073.7829892857144 | Take profit: 2115.582391071429 +2025-03-10 16:08:21,135 - INFO - CLOSED long at 2085.37 | PnL: 0.05% | $-0.09 +2025-03-10 16:08:21,136 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8426107142855 | Take profit: 2054.020808928571 +2025-03-10 16:08:21,186 - INFO - CLOSED short at 2083.07 | PnL: 0.11% | $0.02 +2025-03-10 16:08:21,186 - INFO - OPENED LONG at 2083.07 | Stop loss: 2072.608889285714 | Take profit: 2114.3846910714287 +2025-03-10 16:08:21,233 - INFO - STOP LOSS hit for long at 2072.608889285714 | PnL: -0.50% | $-1.18 +2025-03-10 16:08:21,255 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.587260714286 | Take profit: 2017.5068589285715 +2025-03-10 16:08:21,378 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 63.6% in downtrends | Avg Win=$0.34, Avg Loss=$-0.33 +2025-03-10 16:08:21,379 - INFO - Episode 25: Reward=-10.13, Balance=$99.03, Win Rate=42.9%, Trades=21, Episode PnL=$0.91, Total PnL=$307.05, Max Drawdown=1.0%, Pred Accuracy=97.9% +2025-03-10 16:08:21,380 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:08:21,380 - INFO - Refreshing data for episode 26 +2025-03-10 16:08:21,380 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:21,693 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:21,703 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:21,723 - INFO - OPENED LONG at 2125.77 | Stop loss: 2115.095389285714 | Take profit: 2157.725191071429 +2025-03-10 16:08:21,746 - INFO - CLOSED long at 2126.13 | PnL: 0.02% | $-0.16 +2025-03-10 16:08:21,747 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.806410714286 | Take profit: 2094.1694089285716 +2025-03-10 16:08:21,967 - INFO - CLOSED short at 2121.42 | PnL: 0.22% | $0.24 +2025-03-10 16:08:21,967 - INFO - OPENED LONG at 2121.42 | Stop loss: 2110.7671392857146 | Take profit: 2153.3099410714285 +2025-03-10 16:08:21,992 - INFO - CLOSED long at 2116.52 | PnL: -0.23% | $-0.65 +2025-03-10 16:08:21,992 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.148360714286 | Take profit: 2084.7035589285715 +2025-03-10 16:08:22,043 - INFO - CLOSED short at 2120.96 | PnL: -0.21% | $-0.60 +2025-03-10 16:08:22,043 - INFO - OPENED LONG at 2120.96 | Stop loss: 2110.3094392857142 | Take profit: 2152.8430410714286 +2025-03-10 16:08:22,065 - INFO - CLOSED long at 2124.9 | PnL: 0.19% | $0.17 +2025-03-10 16:08:22,065 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.5702607142857 | Take profit: 2092.9578589285716 +2025-03-10 16:08:22,357 - INFO - CLOSED short at 2114.57 | PnL: 0.49% | $0.75 +2025-03-10 16:08:22,385 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.1786107142857 | Take profit: 2080.8128089285715 +2025-03-10 16:08:22,781 - INFO - CLOSED short at 2099.22 | PnL: 0.63% | $1.04 +2025-03-10 16:08:22,781 - INFO - OPENED LONG at 2099.22 | Stop loss: 2088.678139285714 | Take profit: 2130.7769410714286 +2025-03-10 16:08:22,801 - INFO - CLOSED long at 2094.16 | PnL: -0.24% | $-0.67 +2025-03-10 16:08:22,801 - INFO - OPENED SHORT at 2094.16 | Stop loss: 2104.6765607142856 | Take profit: 2062.6789589285713 +2025-03-10 16:08:22,871 - INFO - CLOSED short at 2090.59 | PnL: 0.17% | $0.14 +2025-03-10 16:08:22,872 - INFO - OPENED LONG at 2090.59 | Stop loss: 2080.0912892857145 | Take profit: 2122.0174910714286 +2025-03-10 16:08:22,895 - INFO - CLOSED long at 2090.99 | PnL: 0.02% | $-0.16 +2025-03-10 16:08:22,895 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.4907107142853 | Take profit: 2059.556508928571 +2025-03-10 16:08:23,071 - INFO - CLOSED short at 2084.11 | PnL: 0.33% | $0.45 +2025-03-10 16:08:23,071 - INFO - OPENED LONG at 2084.11 | Stop loss: 2073.6436892857146 | Take profit: 2115.440291071429 +2025-03-10 16:08:23,119 - INFO - CLOSED long at 2075.07 | PnL: -0.43% | $-1.05 +2025-03-10 16:08:23,119 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.491110714286 | Take profit: 2043.8753089285715 +2025-03-10 16:08:23,222 - INFO - TAKE PROFIT hit for short at 2043.8753089285715 | PnL: 1.50% | $2.73 +2025-03-10 16:08:23,246 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.2002107142857 | Take profit: 2022.0280089285714 +2025-03-10 16:08:23,291 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 83.3% in downtrends | Avg Win=$0.79, Avg Loss=$-0.55 +2025-03-10 16:08:23,291 - INFO - Episode 26: Reward=-4.64, Balance=$102.21, Win Rate=53.8%, Trades=13, Episode PnL=$4.74, Total PnL=$309.27, Max Drawdown=0.3%, Pred Accuracy=98.0% +2025-03-10 16:08:23,292 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:08:23,292 - INFO - Refreshing data for episode 27 +2025-03-10 16:08:23,293 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:23,604 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:23,616 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:23,645 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.444610714286 | Take profit: 2093.8148089285714 +2025-03-10 16:08:23,701 - INFO - CLOSED short at 2126.32 | PnL: -0.03% | $-0.25 +2025-03-10 16:08:23,702 - INFO - OPENED LONG at 2126.32 | Stop loss: 2115.6426392857143 | Take profit: 2158.283441071429 +2025-03-10 16:08:23,738 - INFO - CLOSED long at 2126.7 | PnL: 0.02% | $-0.16 +2025-03-10 16:08:23,738 - INFO - OPENED SHORT at 2126.7 | Stop loss: 2137.3792607142855 | Take profit: 2094.7308589285713 +2025-03-10 16:08:23,790 - INFO - CLOSED short at 2122.17 | PnL: 0.21% | $0.22 +2025-03-10 16:08:23,790 - INFO - OPENED LONG at 2122.17 | Stop loss: 2111.5133892857143 | Take profit: 2154.0711910714285 +2025-03-10 16:08:23,814 - INFO - CLOSED long at 2122.24 | PnL: 0.00% | $-0.19 +2025-03-10 16:08:23,814 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.896960714286 | Take profit: 2090.3377589285715 +2025-03-10 16:08:23,883 - INFO - CLOSED short at 2118.0 | PnL: 0.20% | $0.19 +2025-03-10 16:08:23,884 - INFO - OPENED LONG at 2118.0 | Stop loss: 2107.3642392857146 | Take profit: 2149.838641071429 +2025-03-10 16:08:23,915 - INFO - CLOSED long at 2121.8 | PnL: 0.18% | $0.16 +2025-03-10 16:08:23,915 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.454760714286 | Take profit: 2089.9043589285716 +2025-03-10 16:08:24,250 - INFO - CLOSED short at 2115.21 | PnL: 0.31% | $0.41 +2025-03-10 16:08:24,250 - INFO - OPENED LONG at 2115.21 | Stop loss: 2104.588189285714 | Take profit: 2147.006791071429 +2025-03-10 16:08:24,294 - INFO - CLOSED long at 2115.11 | PnL: -0.00% | $-0.21 +2025-03-10 16:08:24,295 - INFO - OPENED SHORT at 2115.11 | Stop loss: 2125.731310714286 | Take profit: 2083.3147089285717 +2025-03-10 16:08:24,316 - INFO - CLOSED short at 2114.32 | PnL: 0.04% | $-0.12 +2025-03-10 16:08:24,341 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.188610714286 | Take profit: 2082.7828089285713 +2025-03-10 16:08:24,360 - INFO - CLOSED short at 2112.57 | PnL: 0.09% | $-0.01 +2025-03-10 16:08:24,382 - INFO - OPENED SHORT at 2113.28 | Stop loss: 2123.892160714286 | Take profit: 2081.512158928572 +2025-03-10 16:08:24,538 - INFO - CLOSED short at 2096.36 | PnL: 0.80% | $1.37 +2025-03-10 16:08:24,539 - INFO - OPENED LONG at 2096.36 | Stop loss: 2085.8324392857144 | Take profit: 2127.8740410714286 +2025-03-10 16:08:24,586 - INFO - CLOSED long at 2089.84 | PnL: -0.31% | $-0.82 +2025-03-10 16:08:24,617 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.716710714286 | Take profit: 2064.6785089285713 +2025-03-10 16:08:24,725 - INFO - CLOSED short at 2104.67 | PnL: -0.40% | $-0.99 +2025-03-10 16:08:24,725 - INFO - OPENED LONG at 2104.67 | Stop loss: 2094.1008892857144 | Take profit: 2136.3086910714287 +2025-03-10 16:08:24,747 - INFO - CLOSED long at 2105.26 | PnL: 0.03% | $-0.14 +2025-03-10 16:08:24,747 - INFO - OPENED SHORT at 2105.26 | Stop loss: 2115.832060714286 | Take profit: 2073.612458928572 +2025-03-10 16:08:24,876 - INFO - CLOSED short at 2090.59 | PnL: 0.70% | $1.16 +2025-03-10 16:08:24,876 - INFO - OPENED LONG at 2090.59 | Stop loss: 2080.0912892857145 | Take profit: 2122.0174910714286 +2025-03-10 16:08:24,897 - INFO - CLOSED long at 2090.99 | PnL: 0.02% | $-0.16 +2025-03-10 16:08:24,898 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.4907107142853 | Take profit: 2059.556508928571 +2025-03-10 16:08:24,922 - INFO - CLOSED short at 2084.95 | PnL: 0.29% | $0.37 +2025-03-10 16:08:24,922 - INFO - OPENED LONG at 2084.95 | Stop loss: 2074.479489285714 | Take profit: 2116.292891071428 +2025-03-10 16:08:24,968 - INFO - CLOSED long at 2084.75 | PnL: -0.01% | $-0.22 +2025-03-10 16:08:24,968 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2195107142857 | Take profit: 2053.4101089285714 +2025-03-10 16:08:25,016 - INFO - CLOSED short at 2084.25 | PnL: 0.02% | $-0.15 +2025-03-10 16:08:25,016 - INFO - OPENED LONG at 2084.25 | Stop loss: 2073.7829892857144 | Take profit: 2115.582391071429 +2025-03-10 16:08:25,039 - INFO - CLOSED long at 2085.37 | PnL: 0.05% | $-0.09 +2025-03-10 16:08:25,040 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8426107142855 | Take profit: 2054.020808928571 +2025-03-10 16:08:25,068 - INFO - CLOSED short at 2084.11 | PnL: 0.06% | $-0.08 +2025-03-10 16:08:25,068 - INFO - OPENED LONG at 2084.11 | Stop loss: 2073.6436892857146 | Take profit: 2115.440291071429 +2025-03-10 16:08:25,115 - INFO - CLOSED long at 2075.07 | PnL: -0.43% | $-1.05 +2025-03-10 16:08:25,115 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.491110714286 | Take profit: 2043.8753089285715 +2025-03-10 16:08:25,208 - INFO - TAKE PROFIT hit for short at 2043.8753089285715 | PnL: 1.50% | $2.73 +2025-03-10 16:08:25,232 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.2002107142857 | Take profit: 2022.0280089285714 +2025-03-10 16:08:25,255 - INFO - CLOSED short at 2053.22 | PnL: -0.02% | $-0.23 +2025-03-10 16:08:25,256 - INFO - OPENED LONG at 2053.22 | Stop loss: 2042.908139285714 | Take profit: 2084.0869410714286 +2025-03-10 16:08:25,275 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 58.3% in downtrends | Avg Win=$0.83, Avg Loss=$-0.30 +2025-03-10 16:08:25,276 - INFO - Episode 27: Reward=-18.52, Balance=$101.76, Win Rate=33.3%, Trades=24, Episode PnL=$3.81, Total PnL=$311.02, Max Drawdown=0.0%, Pred Accuracy=98.0% +2025-03-10 16:08:25,276 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:08:25,277 - INFO - Refreshing data for episode 28 +2025-03-10 16:08:25,277 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:25,580 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:25,590 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:25,615 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.444610714286 | Take profit: 2093.8148089285714 +2025-03-10 16:08:25,738 - INFO - CLOSED short at 2122.17 | PnL: 0.17% | $0.14 +2025-03-10 16:08:25,738 - INFO - OPENED LONG at 2122.17 | Stop loss: 2111.5133892857143 | Take profit: 2154.0711910714285 +2025-03-10 16:08:25,784 - INFO - CLOSED long at 2120.48 | PnL: -0.08% | $-0.35 +2025-03-10 16:08:25,784 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1281607142855 | Take profit: 2088.6041589285715 +2025-03-10 16:08:25,860 - INFO - CLOSED short at 2121.8 | PnL: -0.06% | $-0.32 +2025-03-10 16:08:25,860 - INFO - OPENED LONG at 2121.8 | Stop loss: 2111.1452392857145 | Take profit: 2153.695641071429 +2025-03-10 16:08:25,903 - INFO - CLOSED long at 2116.52 | PnL: -0.25% | $-0.68 +2025-03-10 16:08:25,903 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.148360714286 | Take profit: 2084.7035589285715 +2025-03-10 16:08:26,003 - INFO - CLOSED short at 2128.33 | PnL: -0.56% | $-1.27 +2025-03-10 16:08:26,003 - INFO - OPENED LONG at 2128.33 | Stop loss: 2117.642589285714 | Take profit: 2160.3235910714284 +2025-03-10 16:08:26,051 - INFO - CLOSED long at 2120.26 | PnL: -0.38% | $-0.91 +2025-03-10 16:08:26,052 - INFO - OPENED SHORT at 2120.26 | Stop loss: 2130.9070607142858 | Take profit: 2088.3874589285715 +2025-03-10 16:08:26,102 - INFO - CLOSED short at 2114.78 | PnL: 0.26% | $0.30 +2025-03-10 16:08:26,103 - INFO - OPENED LONG at 2114.78 | Stop loss: 2104.1603392857146 | Take profit: 2146.5703410714286 +2025-03-10 16:08:26,246 - INFO - CLOSED long at 2115.11 | PnL: 0.02% | $-0.16 +2025-03-10 16:08:26,246 - INFO - OPENED SHORT at 2115.11 | Stop loss: 2125.731310714286 | Take profit: 2083.3147089285717 +2025-03-10 16:08:26,292 - INFO - CLOSED short at 2114.57 | PnL: 0.03% | $-0.14 +2025-03-10 16:08:26,318 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.1786107142857 | Take profit: 2080.8128089285715 +2025-03-10 16:08:26,431 - INFO - CLOSED short at 2098.28 | PnL: 0.68% | $1.09 +2025-03-10 16:08:26,432 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.7428392857146 | Take profit: 2129.8228410714287 +2025-03-10 16:08:26,476 - INFO - CLOSED long at 2100.05 | PnL: 0.08% | $-0.03 +2025-03-10 16:08:26,476 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5960107142855 | Take profit: 2068.4806089285717 +2025-03-10 16:08:26,552 - INFO - CLOSED short at 2089.84 | PnL: 0.49% | $0.74 +2025-03-10 16:08:26,553 - INFO - OPENED LONG at 2089.84 | Stop loss: 2079.3450392857144 | Take profit: 2121.2562410714286 +2025-03-10 16:08:26,577 - INFO - CLOSED long at 2096.19 | PnL: 0.30% | $0.39 +2025-03-10 16:08:26,578 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.716710714286 | Take profit: 2064.6785089285713 +2025-03-10 16:08:26,602 - INFO - CLOSED short at 2100.0 | PnL: -0.18% | $-0.54 +2025-03-10 16:08:26,602 - INFO - OPENED LONG at 2100.0 | Stop loss: 2089.4542392857143 | Take profit: 2131.568641071429 +2025-03-10 16:08:26,626 - INFO - CLOSED long at 2102.83 | PnL: 0.13% | $0.07 +2025-03-10 16:08:26,626 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3899107142856 | Take profit: 2071.2189089285716 +2025-03-10 16:08:26,828 - INFO - CLOSED short at 2098.66 | PnL: 0.20% | $0.19 +2025-03-10 16:08:26,829 - INFO - OPENED LONG at 2098.66 | Stop loss: 2088.120939285714 | Take profit: 2130.2085410714285 +2025-03-10 16:08:26,895 - INFO - CLOSED long at 2084.95 | PnL: -0.65% | $-1.45 +2025-03-10 16:08:26,895 - INFO - OPENED SHORT at 2084.95 | Stop loss: 2095.4205107142857 | Take profit: 2053.607108928571 +2025-03-10 16:08:26,971 - INFO - CLOSED short at 2081.0 | PnL: 0.19% | $0.17 +2025-03-10 16:08:26,972 - INFO - OPENED LONG at 2081.0 | Stop loss: 2070.549239285714 | Take profit: 2112.2836410714285 +2025-03-10 16:08:27,106 - INFO - STOP LOSS hit for long at 2070.549239285714 | PnL: -0.50% | $-1.15 +2025-03-10 16:08:27,133 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.587260714286 | Take profit: 2017.5068589285715 +2025-03-10 16:08:27,155 - INFO - CLOSED short at 2051.0 | PnL: -0.13% | $-0.44 +2025-03-10 16:08:27,155 - INFO - OPENED LONG at 2051.0 | Stop loss: 2040.6992392857142 | Take profit: 2081.8336410714287 +2025-03-10 16:08:27,182 - INFO - CLOSED long at 2043.51 | PnL: -0.37% | $-0.87 +2025-03-10 16:08:27,182 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.773310714286 | Take profit: 2012.7887089285714 +2025-03-10 16:08:27,228 - INFO - CLOSED short at 2053.22 | PnL: -0.48% | $-1.07 +2025-03-10 16:08:27,228 - INFO - OPENED LONG at 2053.22 | Stop loss: 2042.908139285714 | Take profit: 2084.0869410714286 +2025-03-10 16:08:27,252 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$0.39, Avg Loss=$-0.67 +2025-03-10 16:08:27,253 - INFO - Episode 28: Reward=-11.47, Balance=$93.70, Win Rate=36.4%, Trades=22, Episode PnL=$-2.30, Total PnL=$304.72, Max Drawdown=3.9%, Pred Accuracy=98.1% +2025-03-10 16:08:27,254 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:08:27,254 - INFO - Refreshing data for episode 29 +2025-03-10 16:08:27,254 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:27,555 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:27,565 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:27,587 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.444610714286 | Take profit: 2093.8148089285714 +2025-03-10 16:08:27,657 - INFO - CLOSED short at 2126.7 | PnL: -0.04% | $-0.28 +2025-03-10 16:08:27,657 - INFO - OPENED LONG at 2126.7 | Stop loss: 2116.020739285714 | Take profit: 2158.6691410714284 +2025-03-10 16:08:27,704 - INFO - CLOSED long at 2122.17 | PnL: -0.21% | $-0.61 +2025-03-10 16:08:27,704 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.826610714286 | Take profit: 2090.2688089285716 +2025-03-10 16:08:27,745 - INFO - CLOSED short at 2120.48 | PnL: 0.08% | $-0.04 +2025-03-10 16:08:27,745 - INFO - OPENED LONG at 2120.48 | Stop loss: 2109.8318392857145 | Take profit: 2152.3558410714286 +2025-03-10 16:08:27,767 - INFO - CLOSED long at 2120.54 | PnL: 0.00% | $-0.19 +2025-03-10 16:08:27,767 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.1884607142856 | Take profit: 2088.6632589285714 +2025-03-10 16:08:27,788 - INFO - CLOSED short at 2118.0 | PnL: 0.12% | $0.04 +2025-03-10 16:08:27,788 - INFO - OPENED LONG at 2118.0 | Stop loss: 2107.3642392857146 | Take profit: 2149.838641071429 +2025-03-10 16:08:27,816 - INFO - CLOSED long at 2121.8 | PnL: 0.18% | $0.15 +2025-03-10 16:08:27,816 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.454760714286 | Take profit: 2089.9043589285716 +2025-03-10 16:08:27,903 - INFO - CLOSED short at 2120.96 | PnL: 0.04% | $-0.12 +2025-03-10 16:08:27,905 - INFO - OPENED LONG at 2120.96 | Stop loss: 2110.3094392857142 | Take profit: 2152.8430410714286 +2025-03-10 16:08:27,957 - INFO - CLOSED long at 2128.33 | PnL: 0.35% | $0.48 +2025-03-10 16:08:27,957 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0174107142857 | Take profit: 2096.3364089285715 +2025-03-10 16:08:28,037 - INFO - CLOSED short at 2116.81 | PnL: 0.54% | $0.86 +2025-03-10 16:08:28,037 - INFO - OPENED LONG at 2116.81 | Stop loss: 2106.1801892857143 | Take profit: 2148.630791071428 +2025-03-10 16:08:28,075 - INFO - CLOSED long at 2114.78 | PnL: -0.10% | $-0.38 +2025-03-10 16:08:28,075 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.399660714286 | Take profit: 2082.9896589285718 +2025-03-10 16:08:28,105 - INFO - CLOSED short at 2115.52 | PnL: -0.03% | $-0.26 +2025-03-10 16:08:28,106 - INFO - OPENED LONG at 2115.52 | Stop loss: 2104.896639285714 | Take profit: 2147.3214410714286 +2025-03-10 16:08:28,141 - INFO - CLOSED long at 2114.75 | PnL: -0.04% | $-0.27 +2025-03-10 16:08:28,142 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.3695107142858 | Take profit: 2082.9601089285716 +2025-03-10 16:08:28,230 - INFO - CLOSED short at 2114.1 | PnL: 0.03% | $-0.13 +2025-03-10 16:08:28,231 - INFO - OPENED LONG at 2114.1 | Stop loss: 2103.483739285714 | Take profit: 2145.880141071428 +2025-03-10 16:08:28,285 - INFO - CLOSED long at 2114.32 | PnL: 0.01% | $-0.17 +2025-03-10 16:08:28,286 - INFO - OPENED SHORT at 2114.32 | Stop loss: 2124.9373607142857 | Take profit: 2082.5365589285716 +2025-03-10 16:08:28,344 - INFO - CLOSED short at 2112.57 | PnL: 0.08% | $-0.03 +2025-03-10 16:08:28,345 - INFO - OPENED LONG at 2112.57 | Stop loss: 2101.9613892857146 | Take profit: 2144.327191071429 +2025-03-10 16:08:28,399 - INFO - CLOSED long at 2114.5 | PnL: 0.09% | $-0.02 +2025-03-10 16:08:28,399 - INFO - OPENED SHORT at 2114.5 | Stop loss: 2125.1182607142855 | Take profit: 2082.7138589285714 +2025-03-10 16:08:28,427 - INFO - CLOSED short at 2115.07 | PnL: -0.03% | $-0.25 +2025-03-10 16:08:28,427 - INFO - OPENED LONG at 2115.07 | Stop loss: 2104.4488892857144 | Take profit: 2146.8646910714288 +2025-03-10 16:08:28,456 - INFO - CLOSED long at 2098.24 | PnL: -0.80% | $-1.73 +2025-03-10 16:08:28,456 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.7769607142855 | Take profit: 2066.697758928571 +2025-03-10 16:08:28,553 - INFO - CLOSED short at 2100.05 | PnL: -0.09% | $-0.35 +2025-03-10 16:08:28,553 - INFO - OPENED LONG at 2100.05 | Stop loss: 2089.5039892857144 | Take profit: 2131.6193910714287 +2025-03-10 16:08:28,577 - INFO - CLOSED long at 2096.36 | PnL: -0.18% | $-0.52 +2025-03-10 16:08:28,578 - INFO - OPENED SHORT at 2096.36 | Stop loss: 2106.887560714286 | Take profit: 2064.8459589285717 +2025-03-10 16:08:28,626 - INFO - CLOSED short at 2089.84 | PnL: 0.31% | $0.40 +2025-03-10 16:08:28,660 - INFO - OPENED LONG at 2096.19 | Stop loss: 2085.663289285714 | Take profit: 2127.701491071429 +2025-03-10 16:08:28,690 - INFO - CLOSED long at 2100.0 | PnL: 0.18% | $0.15 +2025-03-10 16:08:28,691 - INFO - OPENED SHORT at 2100.0 | Stop loss: 2110.5457607142857 | Take profit: 2068.431358928571 +2025-03-10 16:08:28,783 - INFO - CLOSED short at 2104.67 | PnL: -0.22% | $-0.61 +2025-03-10 16:08:28,784 - INFO - OPENED LONG at 2104.67 | Stop loss: 2094.1008892857144 | Take profit: 2136.3086910714287 +2025-03-10 16:08:28,809 - INFO - CLOSED long at 2105.26 | PnL: 0.03% | $-0.14 +2025-03-10 16:08:28,809 - INFO - OPENED SHORT at 2105.26 | Stop loss: 2115.832060714286 | Take profit: 2073.612458928572 +2025-03-10 16:08:28,998 - INFO - CLOSED short at 2084.95 | PnL: 0.96% | $1.62 +2025-03-10 16:08:29,026 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0286607142857 | Take profit: 2049.3026589285714 +2025-03-10 16:08:29,093 - INFO - CLOSED short at 2084.25 | PnL: -0.18% | $-0.53 +2025-03-10 16:08:29,094 - INFO - OPENED LONG at 2084.25 | Stop loss: 2073.7829892857144 | Take profit: 2115.582391071429 +2025-03-10 16:08:29,125 - INFO - CLOSED long at 2085.37 | PnL: 0.05% | $-0.09 +2025-03-10 16:08:29,127 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8426107142855 | Take profit: 2054.020808928571 +2025-03-10 16:08:29,196 - INFO - CLOSED short at 2075.07 | PnL: 0.49% | $0.75 +2025-03-10 16:08:29,223 - INFO - OPENED SHORT at 2067.71 | Stop loss: 2078.0943107142857 | Take profit: 2036.6257089285714 +2025-03-10 16:08:29,387 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 16.7% in downtrends | Avg Win=$0.56, Avg Loss=$-0.34 +2025-03-10 16:08:29,388 - INFO - Episode 29: Reward=-24.92, Balance=$97.73, Win Rate=28.6%, Trades=28, Episode PnL=$1.06, Total PnL=$302.45, Max Drawdown=3.4%, Pred Accuracy=98.0% +2025-03-10 16:08:29,388 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:08:29,389 - INFO - Refreshing data for episode 30 +2025-03-10 16:08:29,389 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:29,700 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:29,715 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:30,800 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.444610714286 | Take profit: 2093.8148089285714 +2025-03-10 16:08:30,971 - INFO - CLOSED short at 2122.24 | PnL: 0.17% | $0.13 +2025-03-10 16:08:30,972 - INFO - OPENED LONG at 2122.24 | Stop loss: 2111.583039285714 | Take profit: 2154.142241071428 +2025-03-10 16:08:30,995 - INFO - CLOSED long at 2120.48 | PnL: -0.08% | $-0.36 +2025-03-10 16:08:30,997 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1281607142855 | Take profit: 2088.6041589285715 +2025-03-10 16:08:31,628 - INFO - CLOSED short at 2114.5 | PnL: 0.28% | $0.36 +2025-03-10 16:08:31,628 - INFO - OPENED LONG at 2114.5 | Stop loss: 2103.881739285714 | Take profit: 2146.2861410714286 +2025-03-10 16:08:31,656 - INFO - CLOSED long at 2115.07 | PnL: 0.03% | $-0.14 +2025-03-10 16:08:31,656 - INFO - OPENED SHORT at 2115.07 | Stop loss: 2125.691110714286 | Take profit: 2083.2753089285716 +2025-03-10 16:08:32,211 - INFO - TAKE PROFIT hit for short at 2083.2753089285716 | PnL: 1.50% | $2.75 +2025-03-10 16:08:32,240 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2195107142857 | Take profit: 2053.4101089285714 +2025-03-10 16:08:32,435 - INFO - TAKE PROFIT hit for short at 2053.4101089285714 | PnL: 1.50% | $2.82 +2025-03-10 16:08:32,473 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3007607142854 | Take profit: 2020.1663589285715 +2025-03-10 16:08:32,580 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.51, Avg Loss=$-0.25 +2025-03-10 16:08:32,581 - INFO - Episode 30: Reward=13.06, Balance=$105.55, Win Rate=66.7%, Trades=6, Episode PnL=$6.05, Total PnL=$308.00, Max Drawdown=0.0%, Pred Accuracy=98.0% +2025-03-10 16:08:32,743 - INFO - Model saved to checkpoints/trading_agent_episode_30.pt +2025-03-10 16:08:32,745 - INFO - Checkpoint saved at episode 30 +2025-03-10 16:08:32,745 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:08:33,806 - INFO - Visualization saved for episode 30 +2025-03-10 16:08:35,791 - INFO - Visualization saved for episode 30 +2025-03-10 16:08:35,806 - INFO - Refreshing data for episode 31 +2025-03-10 16:08:35,806 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:36,111 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:36,124 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:36,233 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.4450857142856 | Take profit: 2093.8140964285712 +2025-03-10 16:08:36,267 - INFO - CLOSED short at 2126.13 | PnL: -0.02% | $-0.23 +2025-03-10 16:08:36,304 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.997835714286 | Take profit: 2094.3558464285716 +2025-03-10 16:08:37,080 - INFO - CLOSED short at 2098.24 | PnL: 1.32% | $2.38 +2025-03-10 16:08:37,120 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.863035714286 | Take profit: 2059.9202464285718 +2025-03-10 16:08:37,288 - INFO - STOP LOSS hit for short at 2101.863035714286 | PnL: -0.50% | $-1.20 +2025-03-10 16:08:37,315 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9732857142853 | Take profit: 2071.789496428571 +2025-03-10 16:08:37,379 - INFO - CLOSED short at 2105.26 | PnL: -0.09% | $-0.37 +2025-03-10 16:08:37,379 - INFO - OPENED LONG at 2105.26 | Stop loss: 2094.6874642857147 | Take profit: 2136.9082535714288 +2025-03-10 16:08:37,402 - INFO - CLOSED long at 2099.63 | PnL: -0.27% | $-0.72 +2025-03-10 16:08:37,402 - INFO - OPENED SHORT at 2099.63 | Stop loss: 2110.1743857142856 | Take profit: 2068.0661964285714 +2025-03-10 16:08:37,790 - INFO - TAKE PROFIT hit for short at 2068.0661964285714 | PnL: 1.50% | $2.74 +2025-03-10 16:08:37,819 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.587735714286 | Take profit: 2017.5061464285716 +2025-03-10 16:08:37,936 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 33.3% in downtrends | Avg Win=$2.56, Avg Loss=$-0.63 +2025-03-10 16:08:37,937 - INFO - Episode 31: Reward=11.24, Balance=$102.60, Win Rate=33.3%, Trades=6, Episode PnL=$3.32, Total PnL=$310.60, Max Drawdown=1.2%, Pred Accuracy=98.1% +2025-03-10 16:08:37,938 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:08:37,938 - INFO - Refreshing data for episode 32 +2025-03-10 16:08:37,938 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:38,267 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:38,276 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:38,295 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.4450857142856 | Take profit: 2093.8140964285712 +2025-03-10 16:08:39,118 - INFO - CLOSED short at 2098.24 | PnL: 1.30% | $2.34 +2025-03-10 16:08:39,146 - INFO - OPENED SHORT at 2098.28 | Stop loss: 2108.817635714286 | Take profit: 2066.7364464285715 +2025-03-10 16:08:39,863 - INFO - TAKE PROFIT hit for short at 2066.7364464285715 | PnL: 1.50% | $2.81 +2025-03-10 16:08:39,893 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3012357142857 | Take profit: 2020.1656464285716 +2025-03-10 16:08:39,982 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.57, Avg Loss=$0.00 +2025-03-10 16:08:39,983 - INFO - Episode 32: Reward=16.30, Balance=$105.15, Win Rate=100.0%, Trades=2, Episode PnL=$5.15, Total PnL=$315.75, Max Drawdown=0.0%, Pred Accuracy=98.2% +2025-03-10 16:08:39,983 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:08:39,983 - INFO - Refreshing data for episode 33 +2025-03-10 16:08:39,983 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:40,314 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:40,324 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:40,346 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.4450857142856 | Take profit: 2093.8140964285712 +2025-03-10 16:08:41,265 - INFO - TAKE PROFIT hit for short at 2093.8140964285712 | PnL: 1.50% | $2.75 +2025-03-10 16:08:41,293 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.596485714286 | Take profit: 2068.4798964285715 +2025-03-10 16:08:41,629 - INFO - CLOSED short at 2099.22 | PnL: 0.04% | $-0.12 +2025-03-10 16:08:41,630 - INFO - OPENED LONG at 2099.22 | Stop loss: 2088.677664285714 | Take profit: 2130.7776535714283 +2025-03-10 16:08:41,662 - INFO - CLOSED long at 2094.16 | PnL: -0.24% | $-0.68 +2025-03-10 16:08:41,662 - INFO - OPENED SHORT at 2094.16 | Stop loss: 2104.6770357142855 | Take profit: 2062.678246428571 +2025-03-10 16:08:41,909 - INFO - CLOSED short at 2085.37 | PnL: 0.42% | $0.64 +2025-03-10 16:08:41,936 - INFO - OPENED SHORT at 2084.11 | Stop loss: 2094.5767857142855 | Take profit: 2052.7789964285716 +2025-03-10 16:08:42,034 - INFO - TAKE PROFIT hit for short at 2052.7789964285716 | PnL: 1.50% | $2.82 +2025-03-10 16:08:42,061 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3012357142857 | Take profit: 2020.1656464285716 +2025-03-10 16:08:42,172 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.07, Avg Loss=$-0.40 +2025-03-10 16:08:42,172 - INFO - Episode 33: Reward=12.05, Balance=$105.39, Win Rate=60.0%, Trades=5, Episode PnL=$6.08, Total PnL=$321.14, Max Drawdown=0.2%, Pred Accuracy=98.1% +2025-03-10 16:08:42,173 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:08:42,173 - INFO - Refreshing data for episode 34 +2025-03-10 16:08:42,173 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:42,505 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:42,515 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:42,543 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.4452464285714 | Take profit: 2093.813855357143 +2025-03-10 16:08:43,498 - INFO - TAKE PROFIT hit for short at 2093.813855357143 | PnL: 1.50% | $2.75 +2025-03-10 16:08:43,533 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5966464285716 | Take profit: 2068.479655357143 +2025-03-10 16:08:44,292 - INFO - TAKE PROFIT hit for short at 2068.479655357143 | PnL: 1.50% | $2.82 +2025-03-10 16:08:44,325 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5878964285716 | Take profit: 2017.505905357143 +2025-03-10 16:08:44,453 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$0.00 +2025-03-10 16:08:44,454 - INFO - Episode 34: Reward=14.10, Balance=$105.57, Win Rate=100.0%, Trades=2, Episode PnL=$5.57, Total PnL=$326.71, Max Drawdown=0.0%, Pred Accuracy=98.2% +2025-03-10 16:08:44,455 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:08:44,455 - INFO - Refreshing data for episode 35 +2025-03-10 16:08:44,455 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:44,768 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:44,784 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:45,590 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.4457285714284 | Take profit: 2093.8131321428573 +2025-03-10 16:08:46,440 - INFO - CLOSED short at 2115.07 | PnL: 0.50% | $0.79 +2025-03-10 16:08:46,441 - INFO - OPENED LONG at 2115.07 | Stop loss: 2104.4477714285717 | Take profit: 2146.8663678571434 +2025-03-10 16:08:46,471 - INFO - CLOSED long at 2098.24 | PnL: -0.80% | $-1.77 +2025-03-10 16:08:46,473 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.7780785714285 | Take profit: 2066.696082142857 +2025-03-10 16:08:46,603 - INFO - CLOSED short at 2089.04 | PnL: 0.44% | $0.66 +2025-03-10 16:08:46,631 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.336078571429 | Take profit: 2058.422082142857 +2025-03-10 16:08:46,714 - INFO - STOP LOSS hit for short at 2100.336078571429 | PnL: -0.50% | $-1.17 +2025-03-10 16:08:46,738 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9739285714286 | Take profit: 2071.788532142857 +2025-03-10 16:08:46,836 - INFO - CLOSED short at 2099.63 | PnL: 0.18% | $0.15 +2025-03-10 16:08:46,836 - INFO - OPENED LONG at 2099.63 | Stop loss: 2089.0849714285714 | Take profit: 2131.1947678571432 +2025-03-10 16:08:46,865 - INFO - CLOSED long at 2099.22 | PnL: -0.02% | $-0.23 +2025-03-10 16:08:46,866 - INFO - OPENED SHORT at 2099.22 | Stop loss: 2109.7629785714284 | Take profit: 2067.661382142857 +2025-03-10 16:08:47,301 - INFO - TAKE PROFIT hit for short at 2067.661382142857 | PnL: 1.50% | $2.70 +2025-03-10 16:08:47,329 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3018785714285 | Take profit: 2020.1646821428571 +2025-03-10 16:08:47,440 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$1.08, Avg Loss=$-1.06 +2025-03-10 16:08:47,441 - INFO - Episode 35: Reward=13.20, Balance=$101.13, Win Rate=57.1%, Trades=7, Episode PnL=$3.13, Total PnL=$327.84, Max Drawdown=1.5%, Pred Accuracy=98.3% +2025-03-10 16:08:47,443 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:08:47,443 - INFO - Refreshing data for episode 36 +2025-03-10 16:08:47,443 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:47,748 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:47,758 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:47,785 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.4457285714284 | Take profit: 2093.8131321428573 +2025-03-10 16:08:48,100 - INFO - CLOSED short at 2116.52 | PnL: 0.44% | $0.66 +2025-03-10 16:08:48,129 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6619785714283 | Take profit: 2087.164382142857 +2025-03-10 16:08:48,234 - INFO - CLOSED short at 2124.77 | PnL: -0.27% | $-0.73 +2025-03-10 16:08:48,262 - INFO - OPENED SHORT at 2120.26 | Stop loss: 2130.908178571429 | Take profit: 2088.3857821428574 +2025-03-10 16:08:48,607 - INFO - CLOSED short at 2113.28 | PnL: 0.33% | $0.45 +2025-03-10 16:08:48,607 - INFO - OPENED LONG at 2113.28 | Stop loss: 2102.6667214285717 | Take profit: 2145.0495178571427 +2025-03-10 16:08:48,628 - INFO - CLOSED long at 2114.5 | PnL: 0.06% | $-0.08 +2025-03-10 16:08:48,629 - INFO - OPENED SHORT at 2114.5 | Stop loss: 2125.1193785714286 | Take profit: 2082.7121821428573 +2025-03-10 16:08:49,215 - INFO - CLOSED short at 2096.96 | PnL: 0.83% | $1.43 +2025-03-10 16:08:49,216 - INFO - OPENED LONG at 2096.96 | Stop loss: 2086.4283214285715 | Take profit: 2128.4847178571426 +2025-03-10 16:08:49,244 - INFO - CLOSED long at 2098.66 | PnL: 0.08% | $-0.04 +2025-03-10 16:08:49,245 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.2001785714288 | Take profit: 2067.109782142857 +2025-03-10 16:08:49,542 - INFO - CLOSED short at 2083.07 | PnL: 0.74% | $1.28 +2025-03-10 16:08:49,545 - INFO - OPENED LONG at 2083.07 | Stop loss: 2072.6077714285716 | Take profit: 2114.3863678571433 +2025-03-10 16:08:49,571 - INFO - CLOSED long at 2075.07 | PnL: -0.38% | $-0.97 +2025-03-10 16:08:49,571 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.4922285714288 | Take profit: 2043.8736321428573 +2025-03-10 16:08:49,676 - INFO - TAKE PROFIT hit for short at 2043.8736321428573 | PnL: 1.50% | $2.80 +2025-03-10 16:08:49,710 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.2013285714283 | Take profit: 2022.026332142857 +2025-03-10 16:08:49,735 - INFO - CLOSED short at 2053.22 | PnL: -0.02% | $-0.24 +2025-03-10 16:08:49,735 - INFO - OPENED LONG at 2053.22 | Stop loss: 2042.9070214285712 | Take profit: 2084.0886178571427 +2025-03-10 16:08:49,758 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 80.0% in downtrends | Avg Win=$1.32, Avg Loss=$-0.41 +2025-03-10 16:08:49,758 - INFO - Episode 36: Reward=11.64, Balance=$104.55, Win Rate=50.0%, Trades=10, Episode PnL=$5.64, Total PnL=$332.39, Max Drawdown=0.7%, Pred Accuracy=98.3% +2025-03-10 16:08:49,760 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:08:49,760 - INFO - Refreshing data for episode 37 +2025-03-10 16:08:49,760 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:50,072 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:50,084 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:50,145 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.8077 | Take profit: 2094.167475 +2025-03-10 16:08:50,445 - INFO - CLOSED short at 2116.52 | PnL: 0.45% | $0.69 +2025-03-10 16:08:50,446 - INFO - OPENED LONG at 2116.52 | Stop loss: 2105.8903499999997 | Take profit: 2148.338375 +2025-03-10 16:08:50,477 - INFO - CLOSED long at 2119.02 | PnL: 0.12% | $0.04 +2025-03-10 16:08:50,477 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.66215 | Take profit: 2087.164125 +2025-03-10 16:08:50,536 - INFO - CLOSED short at 2124.9 | PnL: -0.28% | $-0.74 +2025-03-10 16:08:50,537 - INFO - OPENED LONG at 2124.9 | Stop loss: 2114.22845 | Take profit: 2156.844075 +2025-03-10 16:08:50,571 - INFO - CLOSED long at 2128.33 | PnL: 0.16% | $0.12 +2025-03-10 16:08:50,572 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0187 | Take profit: 2096.334475 +2025-03-10 16:08:50,630 - INFO - CLOSED short at 2120.26 | PnL: 0.38% | $0.55 +2025-03-10 16:08:50,660 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.4411 | Take profit: 2084.987275 +2025-03-10 16:08:51,589 - INFO - TAKE PROFIT hit for short at 2084.987275 | PnL: 1.50% | $2.76 +2025-03-10 16:08:51,617 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0299499999996 | Take profit: 2049.300725 +2025-03-10 16:08:51,837 - INFO - TAKE PROFIT hit for short at 2049.300725 | PnL: 1.50% | $2.84 +2025-03-10 16:08:51,868 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3020500000002 | Take profit: 2020.164425 +2025-03-10 16:08:51,976 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$1.17, Avg Loss=$-0.74 +2025-03-10 16:08:51,977 - INFO - Episode 37: Reward=15.88, Balance=$106.25, Win Rate=85.7%, Trades=7, Episode PnL=$6.09, Total PnL=$338.64, Max Drawdown=0.0%, Pred Accuracy=98.3% +2025-03-10 16:08:51,977 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:08:51,978 - INFO - Refreshing data for episode 38 +2025-03-10 16:08:51,978 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:52,750 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:52,759 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:52,814 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.808335714286 | Take profit: 2094.1665214285717 +2025-03-10 16:08:53,656 - INFO - CLOSED short at 2098.24 | PnL: 1.31% | $2.37 +2025-03-10 16:08:53,656 - INFO - OPENED LONG at 2098.24 | Stop loss: 2087.701114285714 | Take profit: 2129.7851285714282 +2025-03-10 16:08:53,684 - INFO - CLOSED long at 2098.28 | PnL: 0.00% | $-0.20 +2025-03-10 16:08:53,685 - INFO - OPENED SHORT at 2098.28 | Stop loss: 2108.819085714286 | Take profit: 2066.7342714285714 +2025-03-10 16:08:54,420 - INFO - TAKE PROFIT hit for short at 2066.7342714285714 | PnL: 1.50% | $2.80 +2025-03-10 16:08:54,447 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3026857142854 | Take profit: 2020.1634714285715 +2025-03-10 16:08:54,542 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.59, Avg Loss=$-0.20 +2025-03-10 16:08:54,543 - INFO - Episode 38: Reward=14.94, Balance=$104.98, Win Rate=66.7%, Trades=3, Episode PnL=$5.17, Total PnL=$343.62, Max Drawdown=0.0%, Pred Accuracy=98.4% +2025-03-10 16:08:54,543 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:08:54,544 - INFO - Refreshing data for episode 39 +2025-03-10 16:08:54,544 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:54,857 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:54,867 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:54,899 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.447067857143 | Take profit: 2093.811123214286 +2025-03-10 16:08:55,345 - INFO - CLOSED short at 2124.9 | PnL: 0.04% | $-0.12 +2025-03-10 16:08:55,345 - INFO - OPENED LONG at 2124.9 | Stop loss: 2114.2272821428573 | Take profit: 2156.8458267857145 +2025-03-10 16:08:55,370 - INFO - CLOSED long at 2128.33 | PnL: 0.16% | $0.12 +2025-03-10 16:08:55,370 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.019867857143 | Take profit: 2096.3327232142856 +2025-03-10 16:08:55,817 - INFO - CLOSED short at 2115.07 | PnL: 0.62% | $1.02 +2025-03-10 16:08:55,817 - INFO - OPENED LONG at 2115.07 | Stop loss: 2104.4464321428572 | Take profit: 2146.8683767857146 +2025-03-10 16:08:55,845 - INFO - CLOSED long at 2098.24 | PnL: -0.80% | $-1.77 +2025-03-10 16:08:55,846 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.779417857143 | Take profit: 2066.6940732142857 +2025-03-10 16:08:56,251 - INFO - CLOSED short at 2099.22 | PnL: -0.05% | $-0.28 +2025-03-10 16:08:56,276 - INFO - OPENED SHORT at 2094.16 | Stop loss: 2104.6790178571428 | Take profit: 2062.6752732142854 +2025-03-10 16:08:56,669 - INFO - TAKE PROFIT hit for short at 2062.6752732142854 | PnL: 1.50% | $2.72 +2025-03-10 16:08:56,697 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3032178571425 | Take profit: 2020.1626732142856 +2025-03-10 16:08:56,794 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.29, Avg Loss=$-0.72 +2025-03-10 16:08:56,795 - INFO - Episode 39: Reward=10.59, Balance=$101.69, Win Rate=50.0%, Trades=6, Episode PnL=$3.34, Total PnL=$345.31, Max Drawdown=1.0%, Pred Accuracy=98.5% +2025-03-10 16:08:56,796 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:08:56,796 - INFO - Refreshing data for episode 40 +2025-03-10 16:08:56,796 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:08:57,124 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:08:57,133 - INFO - Initialized environment with 100 candles +2025-03-10 16:08:57,968 - INFO - OPENED SHORT at 2125.77 | Stop loss: 2136.447067857143 | Take profit: 2093.811123214286 +2025-03-10 16:08:58,873 - INFO - TAKE PROFIT hit for short at 2093.811123214286 | PnL: 1.50% | $2.74 +2025-03-10 16:08:58,903 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.598467857143 | Take profit: 2068.4769232142858 +2025-03-10 16:08:59,065 - INFO - CLOSED short at 2102.83 | PnL: -0.13% | $-0.47 +2025-03-10 16:08:59,087 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9752678571426 | Take profit: 2071.786523214286 +2025-03-10 16:08:59,270 - INFO - CLOSED short at 2096.96 | PnL: 0.31% | $0.41 +2025-03-10 16:08:59,271 - INFO - OPENED LONG at 2096.96 | Stop loss: 2086.426982142857 | Take profit: 2128.4867267857144 +2025-03-10 16:08:59,293 - INFO - CLOSED long at 2098.66 | PnL: 0.08% | $-0.04 +2025-03-10 16:08:59,321 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.0911678571433 | Take profit: 2059.158823214286 +2025-03-10 16:08:59,638 - INFO - TAKE PROFIT hit for short at 2059.158823214286 | PnL: 1.50% | $2.82 +2025-03-10 16:08:59,689 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.775767857143 | Take profit: 2012.7850232142857 +2025-03-10 16:08:59,742 - INFO - CLOSED short at 2053.22 | PnL: -0.48% | $-1.19 +2025-03-10 16:08:59,765 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.99, Avg Loss=$-0.56 +2025-03-10 16:08:59,766 - INFO - Episode 40: Reward=9.65, Balance=$104.28, Win Rate=50.0%, Trades=6, Episode PnL=$4.28, Total PnL=$349.59, Max Drawdown=1.1%, Pred Accuracy=98.5% +2025-03-10 16:08:59,904 - INFO - Model saved to checkpoints/trading_agent_episode_40.pt +2025-03-10 16:08:59,905 - INFO - Checkpoint saved at episode 40 +2025-03-10 16:08:59,905 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:09:01,076 - INFO - Visualization saved for episode 40 +2025-03-10 16:09:02,689 - INFO - Visualization saved for episode 40 +2025-03-10 16:09:02,704 - INFO - Refreshing data for episode 41 +2025-03-10 16:09:02,704 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:03,009 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:03,019 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:03,080 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.807542857143 | Take profit: 2094.167710714286 +2025-03-10 16:09:03,333 - INFO - CLOSED short at 2121.42 | PnL: 0.22% | $0.24 +2025-03-10 16:09:03,333 - INFO - OPENED LONG at 2121.42 | Stop loss: 2110.7660071428572 | Take profit: 2153.3116392857146 +2025-03-10 16:09:03,358 - INFO - CLOSED long at 2116.52 | PnL: -0.23% | $-0.65 +2025-03-10 16:09:03,363 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.149492857143 | Take profit: 2084.701860714286 +2025-03-10 16:09:03,460 - INFO - STOP LOSS hit for short at 2127.149492857143 | PnL: -0.50% | $-1.17 +2025-03-10 16:09:03,486 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4407428571426 | Take profit: 2092.8281107142857 +2025-03-10 16:09:03,897 - INFO - TAKE PROFIT hit for short at 2092.8281107142857 | PnL: 1.50% | $2.70 +2025-03-10 16:09:03,918 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.597142857143 | Take profit: 2068.478910714286 +2025-03-10 16:09:04,133 - INFO - CLOSED short at 2104.67 | PnL: -0.22% | $-0.63 +2025-03-10 16:09:04,133 - INFO - OPENED LONG at 2104.67 | Stop loss: 2094.099757142857 | Take profit: 2136.3103892857143 +2025-03-10 16:09:04,156 - INFO - CLOSED long at 2105.26 | PnL: 0.03% | $-0.14 +2025-03-10 16:09:04,156 - INFO - OPENED SHORT at 2105.26 | Stop loss: 2115.8331928571433 | Take profit: 2073.610760714286 +2025-03-10 16:09:04,179 - INFO - CLOSED short at 2099.63 | PnL: 0.27% | $0.33 +2025-03-10 16:09:04,205 - INFO - OPENED SHORT at 2099.22 | Stop loss: 2109.7629928571428 | Take profit: 2067.6613607142854 +2025-03-10 16:09:04,476 - INFO - CLOSED short at 2084.11 | PnL: 0.72% | $1.22 +2025-03-10 16:09:04,501 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.532242857143 | Take profit: 2051.753610714286 +2025-03-10 16:09:04,572 - INFO - TAKE PROFIT hit for short at 2051.753610714286 | PnL: 1.50% | $2.80 +2025-03-10 16:09:04,596 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3018928571432 | Take profit: 2020.164660714286 +2025-03-10 16:09:04,701 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 60.0% in downtrends | Avg Win=$1.46, Avg Loss=$-0.65 +2025-03-10 16:09:04,701 - INFO - Episode 41: Reward=12.61, Balance=$104.69, Win Rate=55.6%, Trades=9, Episode PnL=$5.48, Total PnL=$354.28, Max Drawdown=1.6%, Pred Accuracy=98.7% +2025-03-10 16:09:04,703 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:09:04,703 - INFO - Refreshing data for episode 42 +2025-03-10 16:09:04,703 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:05,030 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:05,041 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:05,066 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.807542857143 | Take profit: 2094.167710714286 +2025-03-10 16:09:05,825 - INFO - TAKE PROFIT hit for short at 2094.167710714286 | PnL: 1.50% | $2.75 +2025-03-10 16:09:05,850 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.597142857143 | Take profit: 2068.478910714286 +2025-03-10 16:09:05,991 - INFO - CLOSED short at 2103.41 | PnL: -0.16% | $-0.52 +2025-03-10 16:09:06,011 - INFO - OPENED SHORT at 2104.22 | Stop loss: 2114.7879928571424 | Take profit: 2072.5863607142855 +2025-03-10 16:09:06,436 - INFO - TAKE PROFIT hit for short at 2072.5863607142855 | PnL: 1.50% | $2.81 +2025-03-10 16:09:06,461 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5883928571434 | Take profit: 2017.505160714286 +2025-03-10 16:09:06,588 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$-0.52 +2025-03-10 16:09:06,589 - INFO - Episode 42: Reward=12.47, Balance=$105.03, Win Rate=66.7%, Trades=3, Episode PnL=$5.03, Total PnL=$359.31, Max Drawdown=0.5%, Pred Accuracy=98.8% +2025-03-10 16:09:06,589 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:09:06,590 - INFO - Refreshing data for episode 43 +2025-03-10 16:09:06,590 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:06,914 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:06,924 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:06,950 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.8079464285715 | Take profit: 2094.167105357143 +2025-03-10 16:09:07,421 - INFO - CLOSED short at 2120.26 | PnL: 0.28% | $0.34 +2025-03-10 16:09:07,446 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.4413464285713 | Take profit: 2084.986905357143 +2025-03-10 16:09:08,219 - INFO - TAKE PROFIT hit for short at 2084.986905357143 | PnL: 1.50% | $2.75 +2025-03-10 16:09:08,242 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0301964285713 | Take profit: 2049.300355357143 +2025-03-10 16:09:08,430 - INFO - TAKE PROFIT hit for short at 2049.300355357143 | PnL: 1.50% | $2.83 +2025-03-10 16:09:08,457 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3022964285715 | Take profit: 2020.1640553571428 +2025-03-10 16:09:08,556 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.98, Avg Loss=$0.00 +2025-03-10 16:09:08,556 - INFO - Episode 43: Reward=15.20, Balance=$105.93, Win Rate=100.0%, Trades=3, Episode PnL=$5.93, Total PnL=$365.24, Max Drawdown=0.0%, Pred Accuracy=98.8% +2025-03-10 16:09:08,556 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:09:08,557 - INFO - Refreshing data for episode 44 +2025-03-10 16:09:08,557 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:08,871 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:08,883 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:08,906 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.8079464285715 | Take profit: 2094.167105357143 +2025-03-10 16:09:09,652 - INFO - TAKE PROFIT hit for short at 2094.167105357143 | PnL: 1.50% | $2.75 +2025-03-10 16:09:09,675 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5975464285716 | Take profit: 2068.478305357143 +2025-03-10 16:09:10,242 - INFO - TAKE PROFIT hit for short at 2068.478305357143 | PnL: 1.50% | $2.82 +2025-03-10 16:09:10,264 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5887964285716 | Take profit: 2017.504555357143 +2025-03-10 16:09:10,398 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$0.00 +2025-03-10 16:09:10,399 - INFO - Episode 44: Reward=14.10, Balance=$105.57, Win Rate=100.0%, Trades=2, Episode PnL=$5.57, Total PnL=$370.80, Max Drawdown=0.0%, Pred Accuracy=98.9% +2025-03-10 16:09:10,400 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:09:10,400 - INFO - Refreshing data for episode 45 +2025-03-10 16:09:10,401 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:10,701 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:10,710 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:11,394 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.8079464285715 | Take profit: 2094.167105357143 +2025-03-10 16:09:11,674 - INFO - CLOSED short at 2119.02 | PnL: 0.33% | $0.46 +2025-03-10 16:09:11,703 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6120964285715 | Take profit: 2089.074655357143 +2025-03-10 16:09:11,998 - INFO - CLOSED short at 2115.21 | PnL: 0.27% | $0.34 +2025-03-10 16:09:11,998 - INFO - OPENED LONG at 2115.21 | Stop loss: 2104.5866535714285 | Take profit: 2147.0090946428572 +2025-03-10 16:09:12,027 - INFO - CLOSED long at 2114.1 | PnL: -0.05% | $-0.30 +2025-03-10 16:09:12,027 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.717796428571 | Take profit: 2082.3175553571427 +2025-03-10 16:09:12,849 - INFO - TAKE PROFIT hit for short at 2082.3175553571427 | PnL: 1.50% | $2.76 +2025-03-10 16:09:12,878 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2210464285718 | Take profit: 2053.407805357143 +2025-03-10 16:09:13,111 - INFO - TAKE PROFIT hit for short at 2053.407805357143 | PnL: 1.50% | $2.83 +2025-03-10 16:09:13,141 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3022964285715 | Take profit: 2020.1640553571428 +2025-03-10 16:09:13,273 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.60, Avg Loss=$-0.30 +2025-03-10 16:09:13,274 - INFO - Episode 45: Reward=14.76, Balance=$106.09, Win Rate=80.0%, Trades=5, Episode PnL=$6.39, Total PnL=$376.89, Max Drawdown=0.0%, Pred Accuracy=99.0% +2025-03-10 16:09:13,274 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:09:13,274 - INFO - Refreshing data for episode 46 +2025-03-10 16:09:13,275 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:13,590 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:13,602 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:13,632 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.8079464285715 | Take profit: 2094.167105357143 +2025-03-10 16:09:13,688 - INFO - CLOSED short at 2126.7 | PnL: -0.03% | $-0.25 +2025-03-10 16:09:13,689 - INFO - OPENED LONG at 2126.7 | Stop loss: 2116.0192035714285 | Take profit: 2158.6714446428573 +2025-03-10 16:09:13,716 - INFO - CLOSED long at 2122.01 | PnL: -0.22% | $-0.63 +2025-03-10 16:09:13,716 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.667346428572 | Take profit: 2090.108905357143 +2025-03-10 16:09:14,683 - INFO - TAKE PROFIT hit for short at 2090.108905357143 | PnL: 1.50% | $2.72 +2025-03-10 16:09:14,718 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3364964285715 | Take profit: 2058.421455357143 +2025-03-10 16:09:14,805 - INFO - STOP LOSS hit for short at 2100.3364964285715 | PnL: -0.50% | $-1.20 +2025-03-10 16:09:14,834 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.974346428571 | Take profit: 2071.787905357143 +2025-03-10 16:09:15,100 - INFO - CLOSED short at 2084.95 | PnL: 0.88% | $1.53 +2025-03-10 16:09:15,123 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0301964285713 | Take profit: 2049.300355357143 +2025-03-10 16:09:15,329 - INFO - TAKE PROFIT hit for short at 2049.300355357143 | PnL: 1.50% | $2.80 +2025-03-10 16:09:15,353 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3022964285715 | Take profit: 2020.1640553571428 +2025-03-10 16:09:15,504 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$2.35, Avg Loss=$-0.69 +2025-03-10 16:09:15,505 - INFO - Episode 46: Reward=12.63, Balance=$104.98, Win Rate=50.0%, Trades=6, Episode PnL=$5.61, Total PnL=$381.87, Max Drawdown=1.2%, Pred Accuracy=99.0% +2025-03-10 16:09:15,505 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:09:15,505 - INFO - Refreshing data for episode 47 +2025-03-10 16:09:15,505 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:15,812 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:15,821 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:15,849 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.8079464285715 | Take profit: 2094.167105357143 +2025-03-10 16:09:16,728 - INFO - TAKE PROFIT hit for short at 2094.167105357143 | PnL: 1.50% | $2.75 +2025-03-10 16:09:16,760 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5975464285716 | Take profit: 2068.478305357143 +2025-03-10 16:09:17,432 - INFO - TAKE PROFIT hit for short at 2068.478305357143 | PnL: 1.50% | $2.82 +2025-03-10 16:09:17,458 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5887964285716 | Take profit: 2017.504555357143 +2025-03-10 16:09:17,609 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$0.00 +2025-03-10 16:09:17,610 - INFO - Episode 47: Reward=14.08, Balance=$105.57, Win Rate=100.0%, Trades=2, Episode PnL=$5.57, Total PnL=$387.44, Max Drawdown=0.0%, Pred Accuracy=99.1% +2025-03-10 16:09:17,610 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:09:17,611 - INFO - Refreshing data for episode 48 +2025-03-10 16:09:17,611 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:17,903 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:17,908 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:17,938 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.8079464285715 | Take profit: 2094.167105357143 +2025-03-10 16:09:18,764 - INFO - TAKE PROFIT hit for short at 2094.167105357143 | PnL: 1.50% | $2.75 +2025-03-10 16:09:18,794 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5975464285716 | Take profit: 2068.478305357143 +2025-03-10 16:09:18,971 - INFO - CLOSED short at 2104.22 | PnL: -0.20% | $-0.60 +2025-03-10 16:09:18,994 - INFO - OPENED SHORT at 2104.67 | Stop loss: 2115.240646428572 | Take profit: 2073.029005357143 +2025-03-10 16:09:19,114 - INFO - CLOSED short at 2098.66 | PnL: 0.29% | $0.37 +2025-03-10 16:09:19,139 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.0902464285714 | Take profit: 2059.1602053571432 +2025-03-10 16:09:19,341 - INFO - CLOSED short at 2084.11 | PnL: 0.31% | $0.42 +2025-03-10 16:09:19,342 - INFO - OPENED LONG at 2084.11 | Stop loss: 2073.6421535714285 | Take profit: 2115.442594642857 +2025-03-10 16:09:19,369 - INFO - CLOSED long at 2083.07 | PnL: -0.05% | $-0.30 +2025-03-10 16:09:19,370 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.5326464285718 | Take profit: 2051.753005357143 +2025-03-10 16:09:19,443 - INFO - TAKE PROFIT hit for short at 2051.753005357143 | PnL: 1.50% | $2.82 +2025-03-10 16:09:19,472 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3022964285715 | Take profit: 2020.1640553571428 +2025-03-10 16:09:19,579 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.59, Avg Loss=$-0.45 +2025-03-10 16:09:19,580 - INFO - Episode 48: Reward=13.09, Balance=$105.45, Win Rate=66.7%, Trades=6, Episode PnL=$5.75, Total PnL=$392.89, Max Drawdown=0.6%, Pred Accuracy=99.2% +2025-03-10 16:09:19,580 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:09:19,580 - INFO - Refreshing data for episode 49 +2025-03-10 16:09:19,582 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:19,881 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:19,894 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:19,921 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.8079464285715 | Take profit: 2094.167105357143 +2025-03-10 16:09:20,215 - INFO - CLOSED short at 2121.42 | PnL: 0.22% | $0.24 +2025-03-10 16:09:20,216 - INFO - OPENED LONG at 2121.42 | Stop loss: 2110.7656035714285 | Take profit: 2153.312244642857 +2025-03-10 16:09:20,240 - INFO - CLOSED long at 2116.52 | PnL: -0.23% | $-0.65 +2025-03-10 16:09:20,241 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1498964285715 | Take profit: 2084.7012553571426 +2025-03-10 16:09:20,344 - INFO - STOP LOSS hit for short at 2127.1498964285715 | PnL: -0.50% | $-1.17 +2025-03-10 16:09:20,366 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4411464285713 | Take profit: 2092.827505357143 +2025-03-10 16:09:20,793 - INFO - TAKE PROFIT hit for short at 2092.827505357143 | PnL: 1.50% | $2.70 +2025-03-10 16:09:20,825 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5975464285716 | Take profit: 2068.478305357143 +2025-03-10 16:09:21,417 - INFO - TAKE PROFIT hit for short at 2068.478305357143 | PnL: 1.50% | $2.78 +2025-03-10 16:09:21,439 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5887964285716 | Take profit: 2017.504555357143 +2025-03-10 16:09:21,572 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$1.91, Avg Loss=$-0.91 +2025-03-10 16:09:21,573 - INFO - Episode 49: Reward=13.28, Balance=$103.89, Win Rate=60.0%, Trades=5, Episode PnL=$4.54, Total PnL=$396.79, Max Drawdown=1.6%, Pred Accuracy=99.2% +2025-03-10 16:09:21,574 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:09:21,574 - INFO - Early stopping triggered after 50 episodes without improvement +2025-03-10 16:09:21,715 - INFO - Model saved to models/trading_agent_final.pt +2025-03-10 16:09:22,660 - INFO - Training results saved to training_results.png +2025-03-10 16:09:22,810 - INFO - Model saved to models/trading_agent_continuous_50.pt +2025-03-10 16:09:27,810 - INFO - Starting training batch 3 +2025-03-10 16:09:27,810 - INFO - Refreshing data for new training batch +2025-03-10 16:09:27,811 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:28,156 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 16:09:28,168 - INFO - Initialized environment with 500 candles +2025-03-10 16:09:28,168 - INFO - Updated environment with fresh candles +2025-03-10 16:09:28,168 - INFO - Starting training on device: cuda +2025-03-10 16:09:28,169 - INFO - Loading best model from models/trading_agent_best_pnl.pt to resume training +2025-03-10 16:09:28,169 - INFO - Loading model from models/trading_agent_best_pnl.pt +2025-03-10 16:09:28,429 - INFO - Model loaded successfully with weights_only=True +2025-03-10 16:09:28,435 - INFO - Resumed with best metrics - Reward: 202.74, PnL: $7.14, Win Rate: 66.7% +2025-03-10 16:09:28,442 - INFO - Refreshing data for episode 0 +2025-03-10 16:09:28,443 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:28,746 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:28,755 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:29,562 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.808217857143 | Take profit: 2094.1666982142856 +2025-03-10 16:09:29,733 - INFO - CLOSED short at 2122.24 | PnL: 0.18% | $0.16 +2025-03-10 16:09:29,733 - INFO - OPENED LONG at 2122.24 | Stop loss: 2111.581232142857 | Take profit: 2154.144951785714 +2025-03-10 16:09:29,767 - INFO - CLOSED long at 2120.48 | PnL: -0.08% | $-0.36 +2025-03-10 16:09:29,767 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.129967857143 | Take profit: 2088.6014482142855 +2025-03-10 16:09:30,062 - INFO - CLOSED short at 2120.26 | PnL: 0.01% | $-0.17 +2025-03-10 16:09:30,063 - INFO - OPENED LONG at 2120.26 | Stop loss: 2109.6111321428575 | Take profit: 2152.1352517857144 +2025-03-10 16:09:30,089 - INFO - CLOSED long at 2116.81 | PnL: -0.16% | $-0.51 +2025-03-10 16:09:30,089 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.441617857143 | Take profit: 2084.986498214286 +2025-03-10 16:09:30,308 - INFO - CLOSED short at 2114.32 | PnL: 0.12% | $0.03 +2025-03-10 16:09:30,308 - INFO - OPENED LONG at 2114.32 | Stop loss: 2103.700832142857 | Take profit: 2146.1061517857147 +2025-03-10 16:09:30,334 - INFO - CLOSED long at 2114.57 | PnL: 0.01% | $-0.17 +2025-03-10 16:09:30,335 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.190417857143 | Take profit: 2082.7800982142858 +2025-03-10 16:09:30,414 - INFO - CLOSED short at 2114.5 | PnL: 0.00% | $-0.19 +2025-03-10 16:09:30,440 - INFO - OPENED SHORT at 2115.07 | Stop loss: 2125.692917857143 | Take profit: 2083.272598214286 +2025-03-10 16:09:30,683 - INFO - CLOSED short at 2102.83 | PnL: 0.58% | $0.93 +2025-03-10 16:09:30,684 - INFO - OPENED LONG at 2102.83 | Stop loss: 2092.268282142857 | Take profit: 2134.443801785714 +2025-03-10 16:09:30,705 - INFO - CLOSED long at 2103.41 | PnL: 0.03% | $-0.14 +2025-03-10 16:09:30,705 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9746178571427 | Take profit: 2071.7874982142857 +2025-03-10 16:09:30,771 - INFO - CLOSED short at 2105.26 | PnL: -0.09% | $-0.37 +2025-03-10 16:09:30,771 - INFO - OPENED LONG at 2105.26 | Stop loss: 2094.6861321428573 | Take profit: 2136.9102517857145 +2025-03-10 16:09:30,788 - INFO - CLOSED long at 2099.63 | PnL: -0.27% | $-0.71 +2025-03-10 16:09:30,795 - INFO - OPENED SHORT at 2099.63 | Stop loss: 2110.175717857143 | Take profit: 2068.0641982142856 +2025-03-10 16:09:30,892 - INFO - CLOSED short at 2098.66 | PnL: 0.05% | $-0.10 +2025-03-10 16:09:30,921 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.090517857143 | Take profit: 2059.1597982142857 +2025-03-10 16:09:31,196 - INFO - TAKE PROFIT hit for short at 2059.1597982142857 | PnL: 1.50% | $2.70 +2025-03-10 16:09:31,226 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3025678571425 | Take profit: 2020.1636482142858 +2025-03-10 16:09:31,338 - INFO - CLOSED short at 2058.11 | PnL: -0.35% | $-0.88 +2025-03-10 16:09:31,338 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.7718821428573 | Take profit: 2089.0530017857145 +2025-03-10 16:09:31,358 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 57.1% in downtrends | Avg Win=$0.96, Avg Loss=$-0.36 +2025-03-10 16:09:31,359 - INFO - Episode 0: Reward=14.77, Balance=$100.21, Win Rate=28.6%, Trades=14, Episode PnL=$2.11, Total PnL=$397.00, Max Drawdown=1.6%, Pred Accuracy=99.6% +2025-03-10 16:09:31,504 - INFO - Model saved to checkpoints/trading_agent_episode_0.pt +2025-03-10 16:09:31,505 - INFO - Checkpoint saved at episode 0 +2025-03-10 16:09:32,552 - INFO - Visualization saved for episode 0 +2025-03-10 16:09:34,536 - INFO - Visualization saved for episode 0 +2025-03-10 16:09:34,551 - INFO - Refreshing data for episode 1 +2025-03-10 16:09:34,551 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:34,881 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:34,895 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:34,991 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.8088035714286 | Take profit: 2094.165819642857 +2025-03-10 16:09:35,867 - INFO - TAKE PROFIT hit for short at 2094.165819642857 | PnL: 1.50% | $2.74 +2025-03-10 16:09:35,892 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5984035714287 | Take profit: 2068.477019642857 +2025-03-10 16:09:36,670 - INFO - TAKE PROFIT hit for short at 2068.477019642857 | PnL: 1.50% | $2.82 +2025-03-10 16:09:36,700 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.589653571429 | Take profit: 2017.5032696428573 +2025-03-10 16:09:36,846 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$0.00 +2025-03-10 16:09:36,847 - INFO - Episode 1: Reward=27.89, Balance=$105.56, Win Rate=100.0%, Trades=2, Episode PnL=$5.56, Total PnL=$402.56, Max Drawdown=0.0%, Pred Accuracy=99.6% +2025-03-10 16:09:36,847 - INFO - Refreshing data for episode 2 +2025-03-10 16:09:36,848 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:37,187 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:37,200 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:37,221 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.8088035714286 | Take profit: 2094.165819642857 +2025-03-10 16:09:37,436 - INFO - CLOSED short at 2118.0 | PnL: 0.38% | $0.55 +2025-03-10 16:09:37,436 - INFO - OPENED LONG at 2118.0 | Stop loss: 2107.3618464285714 | Take profit: 2149.842230357143 +2025-03-10 16:09:37,469 - INFO - CLOSED long at 2121.8 | PnL: 0.18% | $0.16 +2025-03-10 16:09:37,470 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.457153571429 | Take profit: 2089.9007696428575 +2025-03-10 16:09:37,560 - INFO - CLOSED short at 2119.02 | PnL: 0.13% | $0.06 +2025-03-10 16:09:37,561 - INFO - OPENED LONG at 2119.02 | Stop loss: 2108.3767464285716 | Take profit: 2150.877530357143 +2025-03-10 16:09:37,589 - INFO - CLOSED long at 2120.96 | PnL: 0.09% | $-0.02 +2025-03-10 16:09:37,590 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.612953571429 | Take profit: 2089.0733696428574 +2025-03-10 16:09:37,939 - INFO - CLOSED short at 2114.32 | PnL: 0.31% | $0.42 +2025-03-10 16:09:37,940 - INFO - OPENED LONG at 2114.32 | Stop loss: 2103.7002464285715 | Take profit: 2146.107030357143 +2025-03-10 16:09:37,963 - INFO - CLOSED long at 2114.57 | PnL: 0.01% | $-0.17 +2025-03-10 16:09:37,963 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.191003571429 | Take profit: 2082.7792196428572 +2025-03-10 16:09:38,688 - INFO - TAKE PROFIT hit for short at 2082.7792196428572 | PnL: 1.50% | $2.77 +2025-03-10 16:09:38,714 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2219035714284 | Take profit: 2053.4065196428573 +2025-03-10 16:09:38,919 - INFO - TAKE PROFIT hit for short at 2053.4065196428573 | PnL: 1.50% | $2.85 +2025-03-10 16:09:38,945 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3031535714285 | Take profit: 2020.1627696428573 +2025-03-10 16:09:39,052 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.13, Avg Loss=$-0.10 +2025-03-10 16:09:39,053 - INFO - Episode 2: Reward=29.22, Balance=$106.62, Win Rate=75.0%, Trades=8, Episode PnL=$6.65, Total PnL=$409.18, Max Drawdown=0.0%, Pred Accuracy=99.6% +2025-03-10 16:09:39,053 - INFO - Refreshing data for episode 3 +2025-03-10 16:09:39,053 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:39,379 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:39,389 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:39,413 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.8088035714286 | Take profit: 2094.165819642857 +2025-03-10 16:09:39,841 - INFO - CLOSED short at 2114.78 | PnL: 0.53% | $0.85 +2025-03-10 16:09:39,859 - INFO - OPENED SHORT at 2115.52 | Stop loss: 2126.1457535714285 | Take profit: 2083.714969642857 +2025-03-10 16:09:40,060 - INFO - CLOSED short at 2114.57 | PnL: 0.04% | $-0.11 +2025-03-10 16:09:40,089 - INFO - OPENED LONG at 2112.57 | Stop loss: 2101.9589964285715 | Take profit: 2144.3307803571433 +2025-03-10 16:09:40,120 - INFO - CLOSED long at 2113.28 | PnL: 0.03% | $-0.13 +2025-03-10 16:09:40,120 - INFO - OPENED SHORT at 2113.28 | Stop loss: 2123.894553571429 | Take profit: 2081.5085696428573 +2025-03-10 16:09:40,727 - INFO - TAKE PROFIT hit for short at 2081.5085696428573 | PnL: 1.50% | $2.76 +2025-03-10 16:09:40,754 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2219035714284 | Take profit: 2053.4065196428573 +2025-03-10 16:09:40,945 - INFO - TAKE PROFIT hit for short at 2053.4065196428573 | PnL: 1.50% | $2.84 +2025-03-10 16:09:40,976 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3031535714285 | Take profit: 2020.1627696428573 +2025-03-10 16:09:41,013 - INFO - CLOSED short at 2052.89 | PnL: -0.09% | $-0.40 +2025-03-10 16:09:41,036 - INFO - OPENED SHORT at 2053.22 | Stop loss: 2063.534253571428 | Take profit: 2022.349469642857 +2025-03-10 16:09:41,080 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.15, Avg Loss=$-0.21 +2025-03-10 16:09:41,081 - INFO - Episode 3: Reward=24.80, Balance=$105.81, Win Rate=50.0%, Trades=6, Episode PnL=$5.94, Total PnL=$414.99, Max Drawdown=0.4%, Pred Accuracy=99.7% +2025-03-10 16:09:41,082 - INFO - Refreshing data for episode 4 +2025-03-10 16:09:41,082 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:41,378 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:41,388 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:41,407 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.808910714286 | Take profit: 2094.1656589285717 +2025-03-10 16:09:42,127 - INFO - TAKE PROFIT hit for short at 2094.1656589285717 | PnL: 1.50% | $2.74 +2025-03-10 16:09:42,174 - INFO - OPENED SHORT at 2096.36 | Stop loss: 2106.890060714286 | Take profit: 2064.8422089285714 +2025-03-10 16:09:42,807 - INFO - TAKE PROFIT hit for short at 2064.8422089285714 | PnL: 1.50% | $2.82 +2025-03-10 16:09:42,830 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.303260714286 | Take profit: 2020.1626089285712 +2025-03-10 16:09:42,935 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$0.00 +2025-03-10 16:09:42,935 - INFO - Episode 4: Reward=27.69, Balance=$105.56, Win Rate=100.0%, Trades=2, Episode PnL=$5.56, Total PnL=$420.55, Max Drawdown=0.0%, Pred Accuracy=99.7% +2025-03-10 16:09:42,935 - INFO - Refreshing data for episode 5 +2025-03-10 16:09:42,936 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:43,267 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:43,277 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:43,963 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.808975 | Take profit: 2094.1655625000003 +2025-03-10 16:09:44,370 - INFO - CLOSED short at 2120.26 | PnL: 0.28% | $0.34 +2025-03-10 16:09:44,391 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.442375 | Take profit: 2084.9853625 +2025-03-10 16:09:45,183 - INFO - TAKE PROFIT hit for short at 2084.9853625 | PnL: 1.50% | $2.75 +2025-03-10 16:09:45,208 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0312249999997 | Take profit: 2049.2988124999997 +2025-03-10 16:09:45,414 - INFO - TAKE PROFIT hit for short at 2049.2988124999997 | PnL: 1.50% | $2.83 +2025-03-10 16:09:45,434 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3033250000003 | Take profit: 2020.1625125 +2025-03-10 16:09:45,540 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.98, Avg Loss=$0.00 +2025-03-10 16:09:45,541 - INFO - Episode 5: Reward=29.01, Balance=$105.93, Win Rate=100.0%, Trades=3, Episode PnL=$5.93, Total PnL=$426.48, Max Drawdown=0.0%, Pred Accuracy=99.8% +2025-03-10 16:09:45,542 - INFO - Refreshing data for episode 6 +2025-03-10 16:09:45,542 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:45,847 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:45,857 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:45,880 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.808975 | Take profit: 2094.1655625000003 +2025-03-10 16:09:46,591 - INFO - CLOSED short at 2098.28 | PnL: 1.31% | $2.37 +2025-03-10 16:09:46,592 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.740275 | Take profit: 2129.8266875 +2025-03-10 16:09:46,612 - INFO - CLOSED long at 2091.36 | PnL: -0.33% | $-0.86 +2025-03-10 16:09:46,613 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.8651250000003 | Take profit: 2059.9171125000003 +2025-03-10 16:09:46,769 - INFO - STOP LOSS hit for short at 2101.8651250000003 | PnL: -0.50% | $-1.20 +2025-03-10 16:09:46,792 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.975375 | Take profit: 2071.7863624999995 +2025-03-10 16:09:47,224 - INFO - TAKE PROFIT hit for short at 2071.7863624999995 | PnL: 1.50% | $2.75 +2025-03-10 16:09:47,247 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.589825 | Take profit: 2017.5030125000003 +2025-03-10 16:09:47,378 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.56, Avg Loss=$-1.03 +2025-03-10 16:09:47,379 - INFO - Episode 6: Reward=28.36, Balance=$103.06, Win Rate=50.0%, Trades=4, Episode PnL=$3.92, Total PnL=$429.54, Max Drawdown=0.0%, Pred Accuracy=99.7% +2025-03-10 16:09:47,379 - INFO - Refreshing data for episode 7 +2025-03-10 16:09:47,379 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:47,715 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:47,724 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:47,752 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.8090392857143 | Take profit: 2094.165466071429 +2025-03-10 16:09:47,933 - INFO - CLOSED short at 2118.0 | PnL: 0.38% | $0.55 +2025-03-10 16:09:47,956 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.4573892857147 | Take profit: 2089.9004160714285 +2025-03-10 16:09:48,577 - INFO - TAKE PROFIT hit for short at 2089.9004160714285 | PnL: 1.50% | $2.76 +2025-03-10 16:09:48,602 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3375892857143 | Take profit: 2058.4198160714286 +2025-03-10 16:09:48,678 - INFO - STOP LOSS hit for short at 2100.3375892857143 | PnL: -0.50% | $-1.22 +2025-03-10 16:09:48,702 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.975439285714 | Take profit: 2071.786266071428 +2025-03-10 16:09:49,188 - INFO - TAKE PROFIT hit for short at 2071.786266071428 | PnL: 1.50% | $2.80 +2025-03-10 16:09:49,219 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5898892857144 | Take profit: 2017.5029160714287 +2025-03-10 16:09:49,358 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.04, Avg Loss=$-1.22 +2025-03-10 16:09:49,360 - INFO - Episode 7: Reward=29.21, Balance=$104.90, Win Rate=75.0%, Trades=4, Episode PnL=$4.90, Total PnL=$434.44, Max Drawdown=1.2%, Pred Accuracy=99.7% +2025-03-10 16:09:49,360 - INFO - Refreshing data for episode 8 +2025-03-10 16:09:49,361 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:49,671 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:49,683 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:49,708 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.8090392857143 | Take profit: 2094.165466071429 +2025-03-10 16:09:50,488 - INFO - TAKE PROFIT hit for short at 2094.165466071429 | PnL: 1.50% | $2.74 +2025-03-10 16:09:50,511 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5986392857144 | Take profit: 2068.4766660714286 +2025-03-10 16:09:51,050 - INFO - TAKE PROFIT hit for short at 2068.4766660714286 | PnL: 1.50% | $2.82 +2025-03-10 16:09:51,075 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5898892857144 | Take profit: 2017.5029160714287 +2025-03-10 16:09:51,203 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$0.00 +2025-03-10 16:09:51,204 - INFO - Episode 8: Reward=27.90, Balance=$105.56, Win Rate=100.0%, Trades=2, Episode PnL=$5.56, Total PnL=$440.00, Max Drawdown=0.0%, Pred Accuracy=99.6% +2025-03-10 16:09:51,204 - INFO - Refreshing data for episode 9 +2025-03-10 16:09:51,204 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:51,512 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:51,522 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:51,548 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.809192857143 | Take profit: 2094.1652357142857 +2025-03-10 16:09:51,963 - INFO - CLOSED short at 2115.52 | PnL: 0.50% | $0.78 +2025-03-10 16:09:51,984 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.372292857143 | Take profit: 2082.9559357142857 +2025-03-10 16:09:52,662 - INFO - TAKE PROFIT hit for short at 2082.9559357142857 | PnL: 1.50% | $2.77 +2025-03-10 16:09:52,689 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2222928571427 | Take profit: 2053.4059357142855 +2025-03-10 16:09:52,869 - INFO - TAKE PROFIT hit for short at 2053.4059357142855 | PnL: 1.50% | $2.84 +2025-03-10 16:09:52,913 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.776092857143 | Take profit: 2012.7845357142858 +2025-03-10 16:09:52,976 - INFO - STOP LOSS hit for short at 2053.776092857143 | PnL: -0.50% | $-1.25 +2025-03-10 16:09:52,998 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.13, Avg Loss=$-1.25 +2025-03-10 16:09:52,998 - INFO - Episode 9: Reward=29.06, Balance=$105.13, Win Rate=75.0%, Trades=4, Episode PnL=$5.13, Total PnL=$445.13, Max Drawdown=1.2%, Pred Accuracy=99.5% +2025-03-10 16:09:52,998 - INFO - Refreshing data for episode 10 +2025-03-10 16:09:52,999 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:53,299 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:53,309 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:53,990 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.809228571429 | Take profit: 2094.1651821428572 +2025-03-10 16:09:54,712 - INFO - TAKE PROFIT hit for short at 2094.1651821428572 | PnL: 1.50% | $2.74 +2025-03-10 16:09:54,732 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.598828571429 | Take profit: 2068.4763821428573 +2025-03-10 16:09:55,348 - INFO - TAKE PROFIT hit for short at 2068.4763821428573 | PnL: 1.50% | $2.82 +2025-03-10 16:09:55,371 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.590078571429 | Take profit: 2017.5026321428572 +2025-03-10 16:09:55,503 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$0.00 +2025-03-10 16:09:55,504 - INFO - Episode 10: Reward=14.10, Balance=$105.56, Win Rate=100.0%, Trades=2, Episode PnL=$5.56, Total PnL=$450.70, Max Drawdown=0.0%, Pred Accuracy=99.4% +2025-03-10 16:09:55,518 - ERROR - Failed to save model: File checkpoints/trading_agent_episode_10.pt cannot be opened. +2025-03-10 16:09:55,523 - ERROR - Traceback: Traceback (most recent call last): + File "main.py", line 1601, in save + torch.save({ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\serialization.py", line 943, in save + with _open_zipfile_writer(f) as opened_zipfile: + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\serialization.py", line 810, in _open_zipfile_writer + return container(name_or_buffer) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\popov\miniforge3\Lib\site-packages\torch\serialization.py", line 781, in __init__ + super().__init__(torch._C.PyTorchFileWriter(self.name, _compute_crc32)) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RuntimeError: File checkpoints/trading_agent_episode_10.pt cannot be opened. + +2025-03-10 16:09:55,523 - INFO - Checkpoint saved at episode 10 +2025-03-10 16:09:56,399 - INFO - Visualization saved for episode 10 +2025-03-10 16:09:58,230 - INFO - Visualization saved for episode 10 +2025-03-10 16:09:58,243 - INFO - Refreshing data for episode 11 +2025-03-10 16:09:58,243 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:09:58,590 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:09:58,601 - INFO - Initialized environment with 100 candles +2025-03-10 16:09:58,673 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.809228571429 | Take profit: 2094.1651821428572 +2025-03-10 16:09:58,748 - INFO - CLOSED short at 2122.01 | PnL: 0.19% | $0.18 +2025-03-10 16:09:58,773 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.8294285714287 | Take profit: 2090.2645821428573 +2025-03-10 16:09:59,092 - INFO - CLOSED short at 2116.81 | PnL: 0.25% | $0.30 +2025-03-10 16:09:59,117 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.4024785714287 | Take profit: 2082.9854321428575 +2025-03-10 16:09:59,445 - INFO - CLOSED short at 2091.36 | PnL: 1.11% | $1.98 +2025-03-10 16:09:59,446 - INFO - OPENED LONG at 2091.36 | Stop loss: 2080.8546214285716 | Take profit: 2122.803267857143 +2025-03-10 16:09:59,468 - INFO - CLOSED long at 2100.05 | PnL: 0.42% | $0.63 +2025-03-10 16:09:59,468 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.598828571429 | Take profit: 2068.4763821428573 +2025-03-10 16:10:00,038 - INFO - TAKE PROFIT hit for short at 2068.4763821428573 | PnL: 1.50% | $2.83 +2025-03-10 16:10:00,059 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.590078571429 | Take profit: 2017.5026321428572 +2025-03-10 16:10:00,193 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.18, Avg Loss=$0.00 +2025-03-10 16:10:00,195 - INFO - Episode 11: Reward=19.51, Balance=$105.92, Win Rate=100.0%, Trades=5, Episode PnL=$5.29, Total PnL=$456.62, Max Drawdown=0.0%, Pred Accuracy=99.0% +2025-03-10 16:10:00,195 - INFO - Refreshing data for episode 12 +2025-03-10 16:10:00,196 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:00,517 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:00,527 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:00,550 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.809228571429 | Take profit: 2094.1651821428572 +2025-03-10 16:10:01,289 - INFO - TAKE PROFIT hit for short at 2094.1651821428572 | PnL: 1.50% | $2.74 +2025-03-10 16:10:01,315 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.598828571429 | Take profit: 2068.4763821428573 +2025-03-10 16:10:01,918 - INFO - TAKE PROFIT hit for short at 2068.4763821428573 | PnL: 1.50% | $2.82 +2025-03-10 16:10:01,944 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.590078571429 | Take profit: 2017.5026321428572 +2025-03-10 16:10:02,076 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$0.00 +2025-03-10 16:10:02,076 - INFO - Episode 12: Reward=14.09, Balance=$105.56, Win Rate=100.0%, Trades=2, Episode PnL=$5.56, Total PnL=$462.18, Max Drawdown=0.0%, Pred Accuracy=98.3% +2025-03-10 16:10:02,076 - INFO - Refreshing data for episode 13 +2025-03-10 16:10:02,076 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:02,381 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:02,390 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:02,415 - INFO - OPENED SHORT at 2126.13 | Stop loss: 2136.8094035714284 | Take profit: 2094.1649196428575 +2025-03-10 16:10:03,165 - INFO - TAKE PROFIT hit for short at 2094.1649196428575 | PnL: 1.50% | $2.74 +2025-03-10 16:10:03,197 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5990035714285 | Take profit: 2068.476119642857 +2025-03-10 16:10:03,729 - INFO - CLOSED short at 2083.07 | PnL: 0.81% | $1.42 +2025-03-10 16:10:03,730 - INFO - OPENED LONG at 2083.07 | Stop loss: 2072.6058964285717 | Take profit: 2114.3891803571432 +2025-03-10 16:10:03,754 - INFO - CLOSED long at 2075.07 | PnL: -0.38% | $-0.99 +2025-03-10 16:10:03,754 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.4941035714287 | Take profit: 2043.8708196428572 +2025-03-10 16:10:03,851 - INFO - TAKE PROFIT hit for short at 2043.8708196428572 | PnL: 1.50% | $2.83 +2025-03-10 16:10:03,875 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.2032035714283 | Take profit: 2022.0235196428569 +2025-03-10 16:10:03,945 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.33, Avg Loss=$-0.99 +2025-03-10 16:10:03,946 - INFO - Episode 13: Reward=-0.09, Balance=$106.01, Win Rate=75.0%, Trades=4, Episode PnL=$7.00, Total PnL=$468.19, Max Drawdown=0.0%, Pred Accuracy=97.4% +2025-03-10 16:10:03,947 - INFO - Refreshing data for episode 14 +2025-03-10 16:10:03,947 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:04,251 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:04,261 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:04,286 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9977857142862 | Take profit: 2094.3559214285715 +2025-03-10 16:10:04,310 - INFO - CLOSED short at 2126.7 | PnL: -0.02% | $-0.23 +2025-03-10 16:10:04,334 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.666235714286 | Take profit: 2090.1105714285713 +2025-03-10 16:10:04,680 - INFO - CLOSED short at 2114.78 | PnL: 0.34% | $0.47 +2025-03-10 16:10:04,681 - INFO - OPENED LONG at 2114.78 | Stop loss: 2104.1599142857144 | Take profit: 2146.570978571429 +2025-03-10 16:10:04,706 - INFO - CLOSED long at 2115.52 | PnL: 0.03% | $-0.13 +2025-03-10 16:10:04,706 - INFO - OPENED SHORT at 2115.52 | Stop loss: 2126.1437857142855 | Take profit: 2083.7179214285716 +2025-03-10 16:10:05,507 - INFO - TAKE PROFIT hit for short at 2083.7179214285716 | PnL: 1.50% | $2.75 +2025-03-10 16:10:05,531 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.219935714286 | Take profit: 2053.4094714285716 +2025-03-10 16:10:05,714 - INFO - CLOSED short at 2048.3 | PnL: 1.75% | $3.32 +2025-03-10 16:10:05,740 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.301185714286 | Take profit: 2020.1657214285715 +2025-03-10 16:10:05,872 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.18, Avg Loss=$-0.18 +2025-03-10 16:10:05,873 - INFO - Episode 14: Reward=1.54, Balance=$106.18, Win Rate=60.0%, Trades=5, Episode PnL=$6.31, Total PnL=$474.37, Max Drawdown=0.2%, Pred Accuracy=97.9% +2025-03-10 16:10:05,873 - INFO - Refreshing data for episode 15 +2025-03-10 16:10:05,873 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:06,178 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:06,188 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:06,862 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9980535714285 | Take profit: 2094.3555196428574 +2025-03-10 16:10:07,139 - INFO - CLOSED short at 2120.96 | PnL: 0.25% | $0.30 +2025-03-10 16:10:07,163 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.5709535714286 | Take profit: 2092.956819642857 +2025-03-10 16:10:07,621 - INFO - TAKE PROFIT hit for short at 2092.956819642857 | PnL: 1.50% | $2.75 +2025-03-10 16:10:07,644 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.596703571429 | Take profit: 2068.4795696428573 +2025-03-10 16:10:08,218 - INFO - TAKE PROFIT hit for short at 2068.4795696428573 | PnL: 1.50% | $2.83 +2025-03-10 16:10:08,244 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5879535714284 | Take profit: 2017.5058196428574 +2025-03-10 16:10:08,414 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.96, Avg Loss=$0.00 +2025-03-10 16:10:08,415 - INFO - Episode 15: Reward=15.18, Balance=$105.88, Win Rate=100.0%, Trades=3, Episode PnL=$5.88, Total PnL=$480.25, Max Drawdown=0.0%, Pred Accuracy=98.3% +2025-03-10 16:10:08,415 - INFO - Refreshing data for episode 16 +2025-03-10 16:10:08,416 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:08,743 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:08,753 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:08,776 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9981464285715 | Take profit: 2094.355380357143 +2025-03-10 16:10:09,462 - INFO - TAKE PROFIT hit for short at 2094.355380357143 | PnL: 1.50% | $2.75 +2025-03-10 16:10:09,486 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.596796428572 | Take profit: 2068.479430357143 +2025-03-10 16:10:09,922 - INFO - CLOSED short at 2084.75 | PnL: 0.73% | $1.26 +2025-03-10 16:10:09,923 - INFO - OPENED LONG at 2084.75 | Stop loss: 2074.2797035714284 | Take profit: 2116.0910696428573 +2025-03-10 16:10:09,943 - INFO - CLOSED long at 2081.0 | PnL: -0.18% | $-0.57 +2025-03-10 16:10:09,943 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.4515464285714 | Take profit: 2049.715180357143 +2025-03-10 16:10:10,097 - INFO - TAKE PROFIT hit for short at 2049.715180357143 | PnL: 1.50% | $2.84 +2025-03-10 16:10:10,118 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3015464285713 | Take profit: 2020.1651803571428 +2025-03-10 16:10:10,245 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.28, Avg Loss=$-0.57 +2025-03-10 16:10:10,245 - INFO - Episode 16: Reward=14.02, Balance=$106.28, Win Rate=75.0%, Trades=4, Episode PnL=$6.85, Total PnL=$486.53, Max Drawdown=0.0%, Pred Accuracy=98.4% +2025-03-10 16:10:10,245 - INFO - Refreshing data for episode 17 +2025-03-10 16:10:10,246 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:10,557 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:10,566 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:10,593 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9981821428573 | Take profit: 2094.3553267857146 +2025-03-10 16:10:10,890 - INFO - CLOSED short at 2124.77 | PnL: 0.07% | $-0.05 +2025-03-10 16:10:10,890 - INFO - OPENED LONG at 2124.77 | Stop loss: 2114.099567857143 | Take profit: 2156.711423214286 +2025-03-10 16:10:10,920 - INFO - CLOSED long at 2120.26 | PnL: -0.21% | $-0.61 +2025-03-10 16:10:10,920 - INFO - OPENED SHORT at 2120.26 | Stop loss: 2130.9078821428575 | Take profit: 2088.386226785715 +2025-03-10 16:10:11,178 - INFO - CLOSED short at 2113.28 | PnL: 0.33% | $0.45 +2025-03-10 16:10:11,178 - INFO - OPENED LONG at 2113.28 | Stop loss: 2102.667017857143 | Take profit: 2145.0490732142857 +2025-03-10 16:10:11,200 - INFO - CLOSED long at 2114.5 | PnL: 0.06% | $-0.08 +2025-03-10 16:10:11,200 - INFO - OPENED SHORT at 2114.5 | Stop loss: 2125.119082142857 | Take profit: 2082.7126267857143 +2025-03-10 16:10:11,717 - INFO - TAKE PROFIT hit for short at 2082.7126267857143 | PnL: 1.50% | $2.74 +2025-03-10 16:10:11,739 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.220332142857 | Take profit: 2053.4088767857143 +2025-03-10 16:10:11,917 - INFO - TAKE PROFIT hit for short at 2053.4088767857143 | PnL: 1.50% | $2.81 +2025-03-10 16:10:11,944 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.301582142857 | Take profit: 2020.1651267857144 +2025-03-10 16:10:12,071 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.00, Avg Loss=$-0.25 +2025-03-10 16:10:12,072 - INFO - Episode 17: Reward=10.69, Balance=$105.25, Win Rate=50.0%, Trades=6, Episode PnL=$5.94, Total PnL=$491.78, Max Drawdown=0.0%, Pred Accuracy=98.4% +2025-03-10 16:10:12,073 - INFO - Refreshing data for episode 18 +2025-03-10 16:10:12,073 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:12,383 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:12,393 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:12,417 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.998407142857 | Take profit: 2094.3549892857145 +2025-03-10 16:10:13,008 - INFO - CLOSED short at 2114.57 | PnL: 0.55% | $0.89 +2025-03-10 16:10:13,031 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.179657142857 | Take profit: 2080.8112392857142 +2025-03-10 16:10:13,596 - INFO - TAKE PROFIT hit for short at 2080.8112392857142 | PnL: 1.50% | $2.77 +2025-03-10 16:10:13,623 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.220557142857 | Take profit: 2053.408539285714 +2025-03-10 16:10:13,806 - INFO - TAKE PROFIT hit for short at 2053.408539285714 | PnL: 1.50% | $2.85 +2025-03-10 16:10:13,830 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.301807142857 | Take profit: 2020.1647892857143 +2025-03-10 16:10:13,970 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.17, Avg Loss=$0.00 +2025-03-10 16:10:13,971 - INFO - Episode 18: Reward=15.52, Balance=$106.50, Win Rate=100.0%, Trades=3, Episode PnL=$6.50, Total PnL=$498.28, Max Drawdown=0.0%, Pred Accuracy=98.1% +2025-03-10 16:10:13,971 - INFO - Refreshing data for episode 19 +2025-03-10 16:10:13,971 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:14,306 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:14,317 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:14,342 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.998407142857 | Take profit: 2094.3549892857145 +2025-03-10 16:10:14,992 - INFO - CLOSED short at 2114.5 | PnL: 0.56% | $0.89 +2025-03-10 16:10:14,992 - INFO - OPENED LONG at 2114.5 | Stop loss: 2103.880692857143 | Take profit: 2146.287710714286 +2025-03-10 16:10:15,013 - INFO - CLOSED long at 2115.07 | PnL: 0.03% | $-0.14 +2025-03-10 16:10:15,013 - INFO - OPENED SHORT at 2115.07 | Stop loss: 2125.6921571428575 | Take profit: 2083.2737392857143 +2025-03-10 16:10:15,522 - INFO - TAKE PROFIT hit for short at 2083.2737392857143 | PnL: 1.50% | $2.77 +2025-03-10 16:10:15,546 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.220557142857 | Take profit: 2053.408539285714 +2025-03-10 16:10:15,740 - INFO - TAKE PROFIT hit for short at 2053.408539285714 | PnL: 1.50% | $2.84 +2025-03-10 16:10:15,761 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.301807142857 | Take profit: 2020.1647892857143 +2025-03-10 16:10:15,884 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.17, Avg Loss=$-0.14 +2025-03-10 16:10:15,885 - INFO - Episode 19: Reward=0.37, Balance=$106.36, Win Rate=75.0%, Trades=4, Episode PnL=$6.50, Total PnL=$504.64, Max Drawdown=0.0%, Pred Accuracy=98.1% +2025-03-10 16:10:15,885 - INFO - Refreshing data for episode 20 +2025-03-10 16:10:15,885 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:16,182 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:16,193 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:16,874 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.998417857143 | Take profit: 2094.354973214286 +2025-03-10 16:10:17,595 - INFO - TAKE PROFIT hit for short at 2094.354973214286 | PnL: 1.50% | $2.75 +2025-03-10 16:10:17,621 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5970678571434 | Take profit: 2068.479023214286 +2025-03-10 16:10:18,159 - INFO - CLOSED short at 2084.11 | PnL: 0.76% | $1.32 +2025-03-10 16:10:18,182 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.532167857143 | Take profit: 2051.753723214286 +2025-03-10 16:10:18,251 - INFO - TAKE PROFIT hit for short at 2051.753723214286 | PnL: 1.50% | $2.86 +2025-03-10 16:10:18,274 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.301817857143 | Take profit: 2020.1647732142858 +2025-03-10 16:10:18,406 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.31, Avg Loss=$0.00 +2025-03-10 16:10:18,407 - INFO - Episode 20: Reward=1.98, Balance=$106.93, Win Rate=100.0%, Trades=3, Episode PnL=$6.93, Total PnL=$511.57, Max Drawdown=0.0%, Pred Accuracy=98.1% +2025-03-10 16:10:18,543 - INFO - Model saved to checkpoints/trading_agent_episode_20.pt +2025-03-10 16:10:18,544 - INFO - Checkpoint saved at episode 20 +2025-03-10 16:10:18,544 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:10:19,387 - INFO - Visualization saved for episode 20 +2025-03-10 16:10:21,432 - INFO - Visualization saved for episode 20 +2025-03-10 16:10:21,448 - INFO - Refreshing data for episode 21 +2025-03-10 16:10:21,448 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:21,791 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:21,802 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:21,822 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9990071428574 | Take profit: 2094.3540892857145 +2025-03-10 16:10:22,540 - INFO - TAKE PROFIT hit for short at 2094.3540892857145 | PnL: 1.50% | $2.75 +2025-03-10 16:10:22,565 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5976571428573 | Take profit: 2068.4781392857144 +2025-03-10 16:10:23,130 - INFO - TAKE PROFIT hit for short at 2068.4781392857144 | PnL: 1.50% | $2.82 +2025-03-10 16:10:23,154 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5889071428574 | Take profit: 2017.5043892857145 +2025-03-10 16:10:23,306 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$0.00 +2025-03-10 16:10:23,308 - INFO - Episode 21: Reward=0.29, Balance=$105.57, Win Rate=100.0%, Trades=2, Episode PnL=$5.57, Total PnL=$517.13, Max Drawdown=0.0%, Pred Accuracy=98.2% +2025-03-10 16:10:23,309 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:10:23,309 - INFO - Refreshing data for episode 22 +2025-03-10 16:10:23,309 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:23,606 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:23,616 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:23,636 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9990071428574 | Take profit: 2094.3540892857145 +2025-03-10 16:10:24,355 - INFO - TAKE PROFIT hit for short at 2094.3540892857145 | PnL: 1.50% | $2.75 +2025-03-10 16:10:24,379 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5976571428573 | Take profit: 2068.4781392857144 +2025-03-10 16:10:24,988 - INFO - TAKE PROFIT hit for short at 2068.4781392857144 | PnL: 1.50% | $2.82 +2025-03-10 16:10:25,009 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5889071428574 | Take profit: 2017.5043892857145 +2025-03-10 16:10:25,166 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$0.00 +2025-03-10 16:10:25,167 - INFO - Episode 22: Reward=14.10, Balance=$105.57, Win Rate=100.0%, Trades=2, Episode PnL=$5.57, Total PnL=$522.70, Max Drawdown=0.0%, Pred Accuracy=98.3% +2025-03-10 16:10:25,167 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:10:25,167 - INFO - Refreshing data for episode 23 +2025-03-10 16:10:25,168 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:25,471 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:25,482 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:25,501 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9990071428574 | Take profit: 2094.3540892857145 +2025-03-10 16:10:26,263 - INFO - TAKE PROFIT hit for short at 2094.3540892857145 | PnL: 1.50% | $2.75 +2025-03-10 16:10:26,290 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5976571428573 | Take profit: 2068.4781392857144 +2025-03-10 16:10:26,409 - INFO - CLOSED short at 2100.0 | PnL: 0.00% | $-0.20 +2025-03-10 16:10:26,435 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.391557142857 | Take profit: 2071.2164392857144 +2025-03-10 16:10:26,916 - INFO - TAKE PROFIT hit for short at 2071.2164392857144 | PnL: 1.50% | $2.81 +2025-03-10 16:10:26,938 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5889071428574 | Take profit: 2017.5043892857145 +2025-03-10 16:10:27,092 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$-0.20 +2025-03-10 16:10:27,093 - INFO - Episode 23: Reward=12.79, Balance=$105.36, Win Rate=66.7%, Trades=3, Episode PnL=$5.36, Total PnL=$528.06, Max Drawdown=0.2%, Pred Accuracy=98.3% +2025-03-10 16:10:27,094 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:10:27,094 - INFO - Refreshing data for episode 24 +2025-03-10 16:10:27,095 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:27,418 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:27,428 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:27,450 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9990071428574 | Take profit: 2094.3540892857145 +2025-03-10 16:10:28,228 - INFO - TAKE PROFIT hit for short at 2094.3540892857145 | PnL: 1.50% | $2.75 +2025-03-10 16:10:28,249 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5976571428573 | Take profit: 2068.4781392857144 +2025-03-10 16:10:28,271 - INFO - CLOSED short at 2096.36 | PnL: 0.18% | $0.15 +2025-03-10 16:10:28,271 - INFO - OPENED LONG at 2096.36 | Stop loss: 2085.830792857143 | Take profit: 2127.876510714286 +2025-03-10 16:10:28,297 - INFO - CLOSED long at 2089.04 | PnL: -0.35% | $-0.90 +2025-03-10 16:10:28,298 - INFO - OPENED SHORT at 2089.04 | Stop loss: 2099.532607142857 | Take profit: 2057.633289285714 +2025-03-10 16:10:28,371 - INFO - STOP LOSS hit for short at 2099.532607142857 | PnL: -0.50% | $-1.20 +2025-03-10 16:10:28,397 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.391557142857 | Take profit: 2071.2164392857144 +2025-03-10 16:10:28,860 - INFO - TAKE PROFIT hit for short at 2071.2164392857144 | PnL: 1.50% | $2.77 +2025-03-10 16:10:28,882 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5889071428574 | Take profit: 2017.5043892857145 +2025-03-10 16:10:29,030 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$1.89, Avg Loss=$-1.05 +2025-03-10 16:10:29,031 - INFO - Episode 24: Reward=12.96, Balance=$103.56, Win Rate=60.0%, Trades=5, Episode PnL=$4.46, Total PnL=$531.62, Max Drawdown=1.9%, Pred Accuracy=98.2% +2025-03-10 16:10:29,032 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:10:29,032 - INFO - Refreshing data for episode 25 +2025-03-10 16:10:29,032 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:29,347 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:29,356 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:30,037 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9990071428574 | Take profit: 2094.3540892857145 +2025-03-10 16:10:30,764 - INFO - TAKE PROFIT hit for short at 2094.3540892857145 | PnL: 1.50% | $2.75 +2025-03-10 16:10:30,789 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5976571428573 | Take profit: 2068.4781392857144 +2025-03-10 16:10:30,891 - INFO - CLOSED short at 2100.0 | PnL: 0.00% | $-0.20 +2025-03-10 16:10:30,915 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.391557142857 | Take profit: 2071.2164392857144 +2025-03-10 16:10:31,312 - INFO - CLOSED short at 2083.07 | PnL: 0.94% | $1.68 +2025-03-10 16:10:31,331 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.492757142857 | Take profit: 2043.8728392857145 +2025-03-10 16:10:31,422 - INFO - TAKE PROFIT hit for short at 2043.8728392857145 | PnL: 1.50% | $2.86 +2025-03-10 16:10:31,441 - INFO - OPENED LONG at 2052.89 | Stop loss: 2042.5781428571427 | Take profit: 2083.754460714286 +2025-03-10 16:10:31,463 - INFO - CLOSED long at 2053.22 | PnL: 0.02% | $-0.18 +2025-03-10 16:10:31,463 - INFO - OPENED SHORT at 2053.22 | Stop loss: 2063.5335071428567 | Take profit: 2022.350589285714 +2025-03-10 16:10:31,523 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.43, Avg Loss=$-0.19 +2025-03-10 16:10:31,524 - INFO - Episode 25: Reward=-0.96, Balance=$106.92, Win Rate=60.0%, Trades=5, Episode PnL=$7.09, Total PnL=$538.54, Max Drawdown=0.2%, Pred Accuracy=98.2% +2025-03-10 16:10:31,524 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:10:31,524 - INFO - Refreshing data for episode 26 +2025-03-10 16:10:31,525 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:31,827 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:31,837 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:31,858 - INFO - OPENED LONG at 2126.32 | Stop loss: 2115.640992857143 | Take profit: 2158.285910714286 +2025-03-10 16:10:31,880 - INFO - CLOSED long at 2126.7 | PnL: 0.02% | $-0.16 +2025-03-10 16:10:31,880 - INFO - OPENED SHORT at 2126.7 | Stop loss: 2137.3809071428573 | Take profit: 2094.728389285714 +2025-03-10 16:10:32,561 - INFO - TAKE PROFIT hit for short at 2094.728389285714 | PnL: 1.50% | $2.74 +2025-03-10 16:10:32,580 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5976571428573 | Take profit: 2068.4781392857144 +2025-03-10 16:10:33,160 - INFO - TAKE PROFIT hit for short at 2068.4781392857144 | PnL: 1.50% | $2.82 +2025-03-10 16:10:33,186 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5889071428574 | Take profit: 2017.5043892857145 +2025-03-10 16:10:33,336 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$-0.16 +2025-03-10 16:10:33,336 - INFO - Episode 26: Reward=12.43, Balance=$105.40, Win Rate=66.7%, Trades=3, Episode PnL=$5.56, Total PnL=$543.94, Max Drawdown=0.0%, Pred Accuracy=98.3% +2025-03-10 16:10:33,337 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:10:33,337 - INFO - Refreshing data for episode 27 +2025-03-10 16:10:33,337 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:33,654 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:33,664 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:33,687 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9990071428574 | Take profit: 2094.3540892857145 +2025-03-10 16:10:33,946 - INFO - CLOSED short at 2120.96 | PnL: 0.25% | $0.30 +2025-03-10 16:10:33,970 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.571907142857 | Take profit: 2092.9553892857143 +2025-03-10 16:10:34,405 - INFO - CLOSED short at 2091.36 | PnL: 1.58% | $2.90 +2025-03-10 16:10:34,405 - INFO - OPENED LONG at 2091.36 | Stop loss: 2080.855792857143 | Take profit: 2122.801510714286 +2025-03-10 16:10:34,427 - INFO - CLOSED long at 2100.05 | PnL: 0.42% | $0.64 +2025-03-10 16:10:34,427 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5976571428573 | Take profit: 2068.4781392857144 +2025-03-10 16:10:35,053 - INFO - TAKE PROFIT hit for short at 2068.4781392857144 | PnL: 1.50% | $2.85 +2025-03-10 16:10:35,078 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5889071428574 | Take profit: 2017.5043892857145 +2025-03-10 16:10:35,106 - INFO - CLOSED short at 2051.0 | PnL: -0.13% | $-0.48 +2025-03-10 16:10:35,106 - INFO - OPENED LONG at 2051.0 | Stop loss: 2040.6975928571428 | Take profit: 2081.8361107142855 +2025-03-10 16:10:35,128 - INFO - CLOSED long at 2043.51 | PnL: -0.37% | $-0.97 +2025-03-10 16:10:35,128 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.774957142857 | Take profit: 2012.7862392857144 +2025-03-10 16:10:35,197 - INFO - STOP LOSS hit for short at 2053.774957142857 | PnL: -0.50% | $-1.24 +2025-03-10 16:10:35,221 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.347557142857 | Take profit: 2023.1484392857146 +2025-03-10 16:10:35,242 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.67, Avg Loss=$-0.90 +2025-03-10 16:10:35,243 - INFO - Episode 27: Reward=15.28, Balance=$104.00, Win Rate=57.1%, Trades=7, Episode PnL=$4.33, Total PnL=$547.93, Max Drawdown=2.5%, Pred Accuracy=98.2% +2025-03-10 16:10:35,243 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:10:35,243 - INFO - Refreshing data for episode 28 +2025-03-10 16:10:35,244 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:35,552 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:35,562 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:35,589 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9990071428574 | Take profit: 2094.3540892857145 +2025-03-10 16:10:35,681 - INFO - CLOSED short at 2122.24 | PnL: 0.19% | $0.18 +2025-03-10 16:10:35,681 - INFO - OPENED LONG at 2122.24 | Stop loss: 2111.5813928571424 | Take profit: 2154.144710714286 +2025-03-10 16:10:35,707 - INFO - CLOSED long at 2120.48 | PnL: -0.08% | $-0.36 +2025-03-10 16:10:35,708 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1298071428573 | Take profit: 2088.601689285714 +2025-03-10 16:10:36,747 - INFO - TAKE PROFIT hit for short at 2088.601689285714 | PnL: 1.50% | $2.74 +2025-03-10 16:10:36,768 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.030307142857 | Take profit: 2049.300189285714 +2025-03-10 16:10:36,965 - INFO - TAKE PROFIT hit for short at 2049.300189285714 | PnL: 1.50% | $2.81 +2025-03-10 16:10:36,989 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.302407142857 | Take profit: 2020.1638892857143 +2025-03-10 16:10:37,112 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.91, Avg Loss=$-0.36 +2025-03-10 16:10:37,112 - INFO - Episode 28: Reward=13.41, Balance=$105.38, Win Rate=75.0%, Trades=4, Episode PnL=$5.73, Total PnL=$553.31, Max Drawdown=0.0%, Pred Accuracy=98.3% +2025-03-10 16:10:37,112 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:10:37,113 - INFO - Refreshing data for episode 29 +2025-03-10 16:10:37,113 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:37,443 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:37,452 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:37,478 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9990071428574 | Take profit: 2094.3540892857145 +2025-03-10 16:10:38,233 - INFO - TAKE PROFIT hit for short at 2094.3540892857145 | PnL: 1.50% | $2.75 +2025-03-10 16:10:38,255 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5976571428573 | Take profit: 2068.4781392857144 +2025-03-10 16:10:38,571 - INFO - CLOSED short at 2098.66 | PnL: 0.07% | $-0.07 +2025-03-10 16:10:38,571 - INFO - OPENED LONG at 2098.66 | Stop loss: 2088.1192928571427 | Take profit: 2130.2110107142857 +2025-03-10 16:10:38,597 - INFO - CLOSED long at 2090.59 | PnL: -0.38% | $-0.97 +2025-03-10 16:10:38,598 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.0903571428576 | Take profit: 2059.1600392857144 +2025-03-10 16:10:38,855 - INFO - TAKE PROFIT hit for short at 2059.1600392857144 | PnL: 1.50% | $2.79 +2025-03-10 16:10:38,876 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.302407142857 | Take profit: 2020.1638892857143 +2025-03-10 16:10:38,985 - INFO - CLOSED short at 2054.03 | PnL: -0.15% | $-0.51 +2025-03-10 16:10:39,007 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.77, Avg Loss=$-0.52 +2025-03-10 16:10:39,008 - INFO - Episode 29: Reward=8.81, Balance=$103.99, Win Rate=40.0%, Trades=5, Episode PnL=$4.96, Total PnL=$557.30, Max Drawdown=0.5%, Pred Accuracy=98.3% +2025-03-10 16:10:39,008 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:10:39,009 - INFO - Refreshing data for episode 30 +2025-03-10 16:10:39,009 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:39,315 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:39,324 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:40,002 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.99905 | Take profit: 2094.354025 +2025-03-10 16:10:40,783 - INFO - TAKE PROFIT hit for short at 2094.354025 | PnL: 1.50% | $2.75 +2025-03-10 16:10:40,804 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5977 | Take profit: 2068.4780750000004 +2025-03-10 16:10:41,213 - INFO - CLOSED short at 2084.95 | PnL: 0.72% | $1.24 +2025-03-10 16:10:41,213 - INFO - OPENED LONG at 2084.95 | Stop loss: 2074.4778 | Take profit: 2116.295425 +2025-03-10 16:10:41,236 - INFO - CLOSED long at 2080.58 | PnL: -0.21% | $-0.63 +2025-03-10 16:10:41,237 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.03035 | Take profit: 2049.3001249999998 +2025-03-10 16:10:41,423 - INFO - TAKE PROFIT hit for short at 2049.3001249999998 | PnL: 1.50% | $2.84 +2025-03-10 16:10:41,448 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3024499999997 | Take profit: 2020.1638249999999 +2025-03-10 16:10:41,570 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.28, Avg Loss=$-0.63 +2025-03-10 16:10:41,570 - INFO - Episode 30: Reward=13.95, Balance=$106.20, Win Rate=75.0%, Trades=4, Episode PnL=$6.83, Total PnL=$563.50, Max Drawdown=0.0%, Pred Accuracy=98.3% +2025-03-10 16:10:41,715 - INFO - Model saved to checkpoints/trading_agent_episode_30.pt +2025-03-10 16:10:41,716 - INFO - Checkpoint saved at episode 30 +2025-03-10 16:10:41,716 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:10:42,601 - INFO - Visualization saved for episode 30 +2025-03-10 16:10:44,168 - INFO - Visualization saved for episode 30 +2025-03-10 16:10:44,181 - INFO - Refreshing data for episode 31 +2025-03-10 16:10:44,181 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:44,524 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:44,533 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:44,620 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9991821428575 | Take profit: 2094.3538267857143 +2025-03-10 16:10:44,815 - INFO - CLOSED short at 2121.8 | PnL: 0.21% | $0.22 +2025-03-10 16:10:44,815 - INFO - OPENED LONG at 2121.8 | Stop loss: 2111.143417857143 | Take profit: 2153.6983732142858 +2025-03-10 16:10:44,840 - INFO - CLOSED long at 2121.42 | PnL: -0.02% | $-0.23 +2025-03-10 16:10:44,842 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.074682142857 | Take profit: 2089.527326785714 +2025-03-10 16:10:45,412 - INFO - TAKE PROFIT hit for short at 2089.527326785714 | PnL: 1.50% | $2.74 +2025-03-10 16:10:45,434 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3367821428574 | Take profit: 2058.4210267857143 +2025-03-10 16:10:45,500 - INFO - STOP LOSS hit for short at 2100.3367821428574 | PnL: -0.50% | $-1.21 +2025-03-10 16:10:45,523 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.974632142857 | Take profit: 2071.7874767857143 +2025-03-10 16:10:45,803 - INFO - CLOSED short at 2081.0 | PnL: 1.07% | $1.92 +2025-03-10 16:10:45,803 - INFO - OPENED LONG at 2081.0 | Stop loss: 2070.547417857143 | Take profit: 2112.2863732142855 +2025-03-10 16:10:45,825 - INFO - CLOSED long at 2084.25 | PnL: 0.16% | $0.11 +2025-03-10 16:10:45,826 - INFO - OPENED SHORT at 2084.25 | Stop loss: 2094.7188321428575 | Take profit: 2052.914876785714 +2025-03-10 16:10:45,957 - INFO - TAKE PROFIT hit for short at 2052.914876785714 | PnL: 1.50% | $2.84 +2025-03-10 16:10:45,979 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3025821428573 | Take profit: 2020.1636267857143 +2025-03-10 16:10:46,106 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 80.0% in downtrends | Avg Win=$1.57, Avg Loss=$-0.72 +2025-03-10 16:10:46,107 - INFO - Episode 31: Reward=16.72, Balance=$106.40, Win Rate=71.4%, Trades=7, Episode PnL=$6.51, Total PnL=$569.89, Max Drawdown=1.2%, Pred Accuracy=98.4% +2025-03-10 16:10:46,107 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:10:46,107 - INFO - Refreshing data for episode 32 +2025-03-10 16:10:46,108 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:46,440 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:46,451 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:46,470 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9991821428575 | Take profit: 2094.3538267857143 +2025-03-10 16:10:46,905 - INFO - CLOSED short at 2114.75 | PnL: 0.54% | $0.87 +2025-03-10 16:10:46,926 - INFO - OPENED SHORT at 2116.06 | Stop loss: 2126.687882142857 | Take profit: 2084.2477267857143 +2025-03-10 16:10:47,641 - INFO - TAKE PROFIT hit for short at 2084.2477267857143 | PnL: 1.50% | $2.77 +2025-03-10 16:10:47,662 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.221332142857 | Take profit: 2053.4073767857144 +2025-03-10 16:10:47,728 - INFO - CLOSED short at 2085.37 | PnL: -0.03% | $-0.26 +2025-03-10 16:10:47,729 - INFO - OPENED LONG at 2085.37 | Stop loss: 2074.895567857143 | Take profit: 2116.7219232142857 +2025-03-10 16:10:47,751 - INFO - CLOSED long at 2084.11 | PnL: -0.06% | $-0.32 +2025-03-10 16:10:47,753 - INFO - OPENED SHORT at 2084.11 | Stop loss: 2094.5781321428576 | Take profit: 2052.7769767857144 +2025-03-10 16:10:47,841 - INFO - TAKE PROFIT hit for short at 2052.7769767857144 | PnL: 1.50% | $2.83 +2025-03-10 16:10:47,865 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3025821428573 | Take profit: 2020.1636267857143 +2025-03-10 16:10:47,988 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.16, Avg Loss=$-0.29 +2025-03-10 16:10:47,989 - INFO - Episode 32: Reward=12.42, Balance=$105.88, Win Rate=60.0%, Trades=5, Episode PnL=$6.20, Total PnL=$575.77, Max Drawdown=0.0%, Pred Accuracy=98.4% +2025-03-10 16:10:47,989 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:10:47,989 - INFO - Refreshing data for episode 33 +2025-03-10 16:10:47,989 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:48,309 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:48,318 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:48,340 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9991821428575 | Take profit: 2094.3538267857143 +2025-03-10 16:10:48,467 - INFO - CLOSED short at 2120.54 | PnL: 0.27% | $0.34 +2025-03-10 16:10:48,467 - INFO - OPENED LONG at 2120.54 | Stop loss: 2109.889717857143 | Take profit: 2152.419473214286 +2025-03-10 16:10:48,491 - INFO - CLOSED long at 2118.0 | PnL: -0.12% | $-0.43 +2025-03-10 16:10:48,492 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.637582142857 | Take profit: 2086.158626785714 +2025-03-10 16:10:48,606 - INFO - CLOSED short at 2120.96 | PnL: -0.14% | $-0.47 +2025-03-10 16:10:48,635 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.572082142857 | Take profit: 2092.955126785714 +2025-03-10 16:10:49,075 - INFO - TAKE PROFIT hit for short at 2092.955126785714 | PnL: 1.50% | $2.73 +2025-03-10 16:10:49,099 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5978321428574 | Take profit: 2068.4778767857147 +2025-03-10 16:10:49,695 - INFO - TAKE PROFIT hit for short at 2068.4778767857147 | PnL: 1.50% | $2.80 +2025-03-10 16:10:49,721 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5890821428575 | Take profit: 2017.5041267857143 +2025-03-10 16:10:49,914 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.96, Avg Loss=$-0.45 +2025-03-10 16:10:49,915 - INFO - Episode 33: Reward=11.89, Balance=$104.97, Win Rate=60.0%, Trades=5, Episode PnL=$5.40, Total PnL=$580.74, Max Drawdown=0.6%, Pred Accuracy=98.4% +2025-03-10 16:10:49,916 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:10:49,916 - INFO - Refreshing data for episode 34 +2025-03-10 16:10:49,917 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:50,298 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:50,308 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:50,337 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9991821428575 | Take profit: 2094.3538267857143 +2025-03-10 16:10:51,058 - INFO - TAKE PROFIT hit for short at 2094.3538267857143 | PnL: 1.50% | $2.75 +2025-03-10 16:10:51,080 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5978321428574 | Take profit: 2068.4778767857147 +2025-03-10 16:10:51,263 - INFO - CLOSED short at 2104.22 | PnL: -0.20% | $-0.60 +2025-03-10 16:10:51,263 - INFO - OPENED LONG at 2104.22 | Stop loss: 2093.6513178571427 | Take profit: 2135.8546732142854 +2025-03-10 16:10:51,285 - INFO - CLOSED long at 2104.67 | PnL: 0.02% | $-0.16 +2025-03-10 16:10:51,285 - INFO - OPENED SHORT at 2104.67 | Stop loss: 2115.240932142857 | Take profit: 2073.0285767857144 +2025-03-10 16:10:51,665 - INFO - TAKE PROFIT hit for short at 2073.0285767857144 | PnL: 1.50% | $2.80 +2025-03-10 16:10:51,692 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5890821428575 | Take profit: 2017.5041267857143 +2025-03-10 16:10:51,852 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.77, Avg Loss=$-0.38 +2025-03-10 16:10:51,853 - INFO - Episode 34: Reward=10.73, Balance=$104.79, Win Rate=50.0%, Trades=4, Episode PnL=$4.94, Total PnL=$585.53, Max Drawdown=0.0%, Pred Accuracy=98.5% +2025-03-10 16:10:51,853 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:10:51,853 - INFO - Refreshing data for episode 35 +2025-03-10 16:10:51,855 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:52,163 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:52,175 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:53,139 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9991821428575 | Take profit: 2094.3538267857143 +2025-03-10 16:10:53,321 - INFO - CLOSED short at 2121.8 | PnL: 0.21% | $0.22 +2025-03-10 16:10:53,352 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.074682142857 | Take profit: 2089.527326785714 +2025-03-10 16:10:53,965 - INFO - TAKE PROFIT hit for short at 2089.527326785714 | PnL: 1.50% | $2.75 +2025-03-10 16:10:53,985 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3367821428574 | Take profit: 2058.4210267857143 +2025-03-10 16:10:54,050 - INFO - STOP LOSS hit for short at 2100.3367821428574 | PnL: -0.50% | $-1.21 +2025-03-10 16:10:54,077 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.974632142857 | Take profit: 2071.7874767857143 +2025-03-10 16:10:54,179 - INFO - CLOSED short at 2099.22 | PnL: 0.20% | $0.20 +2025-03-10 16:10:54,180 - INFO - OPENED LONG at 2099.22 | Stop loss: 2088.6763178571427 | Take profit: 2130.7796732142856 +2025-03-10 16:10:54,208 - INFO - CLOSED long at 2094.16 | PnL: -0.24% | $-0.68 +2025-03-10 16:10:54,209 - INFO - OPENED SHORT at 2094.16 | Stop loss: 2104.678382142857 | Take profit: 2062.6762267857143 +2025-03-10 16:10:54,535 - INFO - TAKE PROFIT hit for short at 2062.6762267857143 | PnL: 1.50% | $2.78 +2025-03-10 16:10:54,556 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3025821428573 | Take profit: 2020.1636267857143 +2025-03-10 16:10:54,684 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$1.49, Avg Loss=$-0.95 +2025-03-10 16:10:54,690 - INFO - Episode 35: Reward=14.24, Balance=$104.06, Win Rate=66.7%, Trades=6, Episode PnL=$4.74, Total PnL=$589.58, Max Drawdown=1.2%, Pred Accuracy=98.4% +2025-03-10 16:10:54,690 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:10:54,690 - INFO - Refreshing data for episode 36 +2025-03-10 16:10:54,690 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:55,030 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:55,038 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:55,060 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9991821428575 | Take profit: 2094.3538267857143 +2025-03-10 16:10:55,102 - INFO - CLOSED short at 2122.01 | PnL: 0.20% | $0.20 +2025-03-10 16:10:55,102 - INFO - OPENED LONG at 2122.01 | Stop loss: 2111.3523678571432 | Take profit: 2153.911523214286 +2025-03-10 16:10:55,123 - INFO - CLOSED long at 2122.17 | PnL: 0.01% | $-0.18 +2025-03-10 16:10:55,123 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.8284321428573 | Take profit: 2090.266076785714 +2025-03-10 16:10:55,817 - INFO - TAKE PROFIT hit for short at 2090.266076785714 | PnL: 1.50% | $2.75 +2025-03-10 16:10:55,842 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3367821428574 | Take profit: 2058.4210267857143 +2025-03-10 16:10:55,906 - INFO - STOP LOSS hit for short at 2100.3367821428574 | PnL: -0.50% | $-1.21 +2025-03-10 16:10:55,931 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.974632142857 | Take profit: 2071.7874767857143 +2025-03-10 16:10:56,343 - INFO - TAKE PROFIT hit for short at 2071.7874767857143 | PnL: 1.50% | $2.79 +2025-03-10 16:10:56,368 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5890821428575 | Take profit: 2017.5041267857143 +2025-03-10 16:10:56,512 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$1.91, Avg Loss=$-0.70 +2025-03-10 16:10:56,513 - INFO - Episode 36: Reward=13.70, Balance=$104.34, Win Rate=60.0%, Trades=5, Episode PnL=$4.52, Total PnL=$593.93, Max Drawdown=1.2%, Pred Accuracy=98.5% +2025-03-10 16:10:56,513 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:10:56,514 - INFO - Refreshing data for episode 37 +2025-03-10 16:10:56,514 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:56,816 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:56,826 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:56,850 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9991821428575 | Take profit: 2094.3538267857143 +2025-03-10 16:10:57,538 - INFO - TAKE PROFIT hit for short at 2094.3538267857143 | PnL: 1.50% | $2.75 +2025-03-10 16:10:57,562 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5978321428574 | Take profit: 2068.4778767857147 +2025-03-10 16:10:57,846 - INFO - CLOSED short at 2094.16 | PnL: 0.28% | $0.36 +2025-03-10 16:10:57,870 - INFO - OPENED SHORT at 2096.96 | Stop loss: 2107.492382142857 | Take profit: 2065.434226785714 +2025-03-10 16:10:58,085 - INFO - CLOSED short at 2084.11 | PnL: 0.61% | $1.03 +2025-03-10 16:10:58,109 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.532932142857 | Take profit: 2051.7525767857146 +2025-03-10 16:10:58,177 - INFO - TAKE PROFIT hit for short at 2051.7525767857146 | PnL: 1.50% | $2.86 +2025-03-10 16:10:58,202 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3025821428573 | Take profit: 2020.1636267857143 +2025-03-10 16:10:58,336 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.75, Avg Loss=$0.00 +2025-03-10 16:10:58,337 - INFO - Episode 37: Reward=16.73, Balance=$107.00, Win Rate=100.0%, Trades=4, Episode PnL=$7.00, Total PnL=$600.93, Max Drawdown=0.0%, Pred Accuracy=98.5% +2025-03-10 16:10:58,337 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:10:58,337 - INFO - Refreshing data for episode 38 +2025-03-10 16:10:58,338 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:10:58,642 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:10:58,651 - INFO - Initialized environment with 100 candles +2025-03-10 16:10:58,674 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.9991821428575 | Take profit: 2094.3538267857143 +2025-03-10 16:10:59,415 - INFO - TAKE PROFIT hit for short at 2094.3538267857143 | PnL: 1.50% | $2.75 +2025-03-10 16:10:59,439 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5978321428574 | Take profit: 2068.4778767857147 +2025-03-10 16:10:59,886 - INFO - CLOSED short at 2080.58 | PnL: 0.93% | $1.66 +2025-03-10 16:10:59,913 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.221332142857 | Take profit: 2053.4073767857144 +2025-03-10 16:11:00,108 - INFO - TAKE PROFIT hit for short at 2053.4073767857144 | PnL: 1.50% | $2.87 +2025-03-10 16:11:00,131 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3025821428573 | Take profit: 2020.1636267857143 +2025-03-10 16:11:00,260 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.42, Avg Loss=$0.00 +2025-03-10 16:11:00,261 - INFO - Episode 38: Reward=16.00, Balance=$107.27, Win Rate=100.0%, Trades=3, Episode PnL=$7.27, Total PnL=$608.20, Max Drawdown=0.0%, Pred Accuracy=98.5% +2025-03-10 16:11:00,399 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 16:11:00,399 - INFO - New best PnL model saved: $7.27 +2025-03-10 16:11:00,399 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:11:00,400 - INFO - Refreshing data for episode 39 +2025-03-10 16:11:00,400 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:11:00,756 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:11:00,766 - INFO - Initialized environment with 100 candles +2025-03-10 16:11:00,791 - INFO - OPENED SHORT at 2126.32 | Stop loss: 2136.999342857143 | Take profit: 2094.353585714286 +2025-03-10 16:11:01,541 - INFO - TAKE PROFIT hit for short at 2094.353585714286 | PnL: 1.50% | $2.75 +2025-03-10 16:11:01,570 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.597992857143 | Take profit: 2068.477635714286 +2025-03-10 16:11:02,072 - INFO - CLOSED short at 2084.95 | PnL: 0.72% | $1.24 +2025-03-10 16:11:02,073 - INFO - OPENED LONG at 2084.95 | Stop loss: 2074.477507142857 | Take profit: 2116.2958642857143 +2025-03-10 16:11:02,099 - INFO - CLOSED long at 2080.58 | PnL: -0.21% | $-0.63 +2025-03-10 16:11:02,100 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0306428571425 | Take profit: 2049.2996857142857 +2025-03-10 16:11:02,310 - INFO - TAKE PROFIT hit for short at 2049.2996857142857 | PnL: 1.50% | $2.84 +2025-03-10 16:11:02,332 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3027428571427 | Take profit: 2020.1633857142856 +2025-03-10 16:11:02,382 - INFO - CLOSED short at 2052.89 | PnL: -0.09% | $-0.40 +2025-03-10 16:11:02,383 - INFO - OPENED LONG at 2052.89 | Stop loss: 2042.577807142857 | Take profit: 2083.754964285714 +2025-03-10 16:11:02,406 - INFO - CLOSED long at 2053.22 | PnL: 0.02% | $-0.17 +2025-03-10 16:11:02,406 - INFO - OPENED SHORT at 2053.22 | Stop loss: 2063.5338428571426 | Take profit: 2022.3500857142856 +2025-03-10 16:11:02,471 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.27, Avg Loss=$-0.40 +2025-03-10 16:11:02,472 - INFO - Episode 39: Reward=10.83, Balance=$105.62, Win Rate=50.0%, Trades=6, Episode PnL=$6.43, Total PnL=$613.82, Max Drawdown=0.0%, Pred Accuracy=98.6% +2025-03-10 16:11:02,472 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:11:02,472 - INFO - Refreshing data for episode 40 +2025-03-10 16:11:02,473 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:11:02,778 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:11:02,787 - INFO - Initialized environment with 100 candles +2025-03-10 16:11:03,471 - INFO - OPENED SHORT at 2126.7 | Stop loss: 2137.379857142857 | Take profit: 2094.7299642857142 +2025-03-10 16:11:03,535 - INFO - CLOSED short at 2122.24 | PnL: 0.21% | $0.21 +2025-03-10 16:11:03,536 - INFO - OPENED LONG at 2122.24 | Stop loss: 2111.5824428571427 | Take profit: 2154.1431357142856 +2025-03-10 16:11:03,567 - INFO - CLOSED long at 2120.48 | PnL: -0.08% | $-0.36 +2025-03-10 16:11:03,567 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.128757142857 | Take profit: 2088.6032642857144 +2025-03-10 16:11:04,622 - INFO - TAKE PROFIT hit for short at 2088.6032642857144 | PnL: 1.50% | $2.74 +2025-03-10 16:11:04,645 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.029257142857 | Take profit: 2049.3017642857144 +2025-03-10 16:11:04,860 - INFO - TAKE PROFIT hit for short at 2049.3017642857144 | PnL: 1.50% | $2.82 +2025-03-10 16:11:04,888 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.301357142857 | Take profit: 2020.1654642857143 +2025-03-10 16:11:05,061 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.92, Avg Loss=$-0.36 +2025-03-10 16:11:05,062 - INFO - Episode 40: Reward=13.43, Balance=$105.42, Win Rate=75.0%, Trades=4, Episode PnL=$5.77, Total PnL=$619.24, Max Drawdown=0.0%, Pred Accuracy=98.7% +2025-03-10 16:11:05,204 - INFO - Model saved to checkpoints/trading_agent_episode_40.pt +2025-03-10 16:11:05,204 - INFO - Checkpoint saved at episode 40 +2025-03-10 16:11:05,204 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:11:06,102 - INFO - Visualization saved for episode 40 +2025-03-10 16:11:07,793 - INFO - Visualization saved for episode 40 +2025-03-10 16:11:07,808 - INFO - Refreshing data for episode 41 +2025-03-10 16:11:07,808 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:11:08,122 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:11:08,133 - INFO - Initialized environment with 100 candles +2025-03-10 16:11:08,217 - INFO - OPENED SHORT at 2126.7 | Stop loss: 2137.3799249999997 | Take profit: 2094.7298625 +2025-03-10 16:11:08,488 - INFO - CLOSED short at 2116.52 | PnL: 0.48% | $0.74 +2025-03-10 16:11:08,489 - INFO - OPENED LONG at 2116.52 | Stop loss: 2105.890975 | Take profit: 2148.3374375 +2025-03-10 16:11:08,519 - INFO - CLOSED long at 2119.02 | PnL: 0.12% | $0.04 +2025-03-10 16:11:08,519 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.661525 | Take profit: 2087.1650625 +2025-03-10 16:11:08,876 - INFO - CLOSED short at 2115.11 | PnL: 0.18% | $0.17 +2025-03-10 16:11:08,876 - INFO - OPENED LONG at 2115.11 | Stop loss: 2104.488025 | Take profit: 2146.9062875000004 +2025-03-10 16:11:08,910 - INFO - CLOSED long at 2114.32 | PnL: -0.04% | $-0.27 +2025-03-10 16:11:08,910 - INFO - OPENED SHORT at 2114.32 | Stop loss: 2124.938025 | Take profit: 2082.5355625 +2025-03-10 16:11:09,644 - INFO - TAKE PROFIT hit for short at 2082.5355625 | PnL: 1.50% | $2.76 +2025-03-10 16:11:09,668 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.220175 | Take profit: 2053.4091125 +2025-03-10 16:11:09,865 - INFO - TAKE PROFIT hit for short at 2053.4091125 | PnL: 1.50% | $2.84 +2025-03-10 16:11:09,896 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.301425 | Take profit: 2020.1653625 +2025-03-10 16:11:10,092 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.31, Avg Loss=$-0.27 +2025-03-10 16:11:10,093 - INFO - Episode 41: Reward=15.63, Balance=$106.28, Win Rate=83.3%, Trades=6, Episode PnL=$6.51, Total PnL=$625.51, Max Drawdown=0.0%, Pred Accuracy=98.8% +2025-03-10 16:11:10,093 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:11:10,094 - INFO - Refreshing data for episode 42 +2025-03-10 16:11:10,094 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:11:10,406 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:11:10,416 - INFO - Initialized environment with 100 candles +2025-03-10 16:11:10,444 - INFO - OPENED SHORT at 2126.7 | Stop loss: 2137.3802035714284 | Take profit: 2094.729444642857 +2025-03-10 16:11:11,255 - INFO - TAKE PROFIT hit for short at 2094.729444642857 | PnL: 1.50% | $2.75 +2025-03-10 16:11:11,285 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.596953571429 | Take profit: 2068.4791946428572 +2025-03-10 16:11:11,749 - INFO - CLOSED short at 2090.99 | PnL: 0.43% | $0.67 +2025-03-10 16:11:11,782 - INFO - OPENED SHORT at 2084.95 | Stop loss: 2095.421453571428 | Take profit: 2053.605694642857 +2025-03-10 16:11:12,045 - INFO - TAKE PROFIT hit for short at 2053.605694642857 | PnL: 1.50% | $2.84 +2025-03-10 16:11:12,077 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3017035714283 | Take profit: 2020.164944642857 +2025-03-10 16:11:12,266 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.08, Avg Loss=$0.00 +2025-03-10 16:11:12,267 - INFO - Episode 42: Reward=15.39, Balance=$106.25, Win Rate=100.0%, Trades=3, Episode PnL=$6.25, Total PnL=$631.77, Max Drawdown=0.0%, Pred Accuracy=98.8% +2025-03-10 16:11:12,268 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:11:12,268 - INFO - Refreshing data for episode 43 +2025-03-10 16:11:12,268 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:11:12,616 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:11:12,626 - INFO - Initialized environment with 100 candles +2025-03-10 16:11:12,654 - INFO - OPENED SHORT at 2126.7 | Stop loss: 2137.3802035714284 | Take profit: 2094.729444642857 +2025-03-10 16:11:13,440 - INFO - TAKE PROFIT hit for short at 2094.729444642857 | PnL: 1.50% | $2.75 +2025-03-10 16:11:13,500 - INFO - OPENED SHORT at 2096.36 | Stop loss: 2106.8885035714284 | Take profit: 2064.8445446428573 +2025-03-10 16:11:14,254 - INFO - TAKE PROFIT hit for short at 2064.8445446428573 | PnL: 1.50% | $2.82 +2025-03-10 16:11:14,282 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3017035714283 | Take profit: 2020.164944642857 +2025-03-10 16:11:14,459 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$0.00 +2025-03-10 16:11:14,460 - INFO - Episode 43: Reward=13.88, Balance=$105.57, Win Rate=100.0%, Trades=2, Episode PnL=$5.57, Total PnL=$637.33, Max Drawdown=0.0%, Pred Accuracy=98.9% +2025-03-10 16:11:14,460 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:11:14,460 - INFO - Refreshing data for episode 44 +2025-03-10 16:11:14,460 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:11:14,769 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:11:14,782 - INFO - Initialized environment with 100 candles +2025-03-10 16:11:14,810 - INFO - OPENED SHORT at 2126.7 | Stop loss: 2137.3802035714284 | Take profit: 2094.729444642857 +2025-03-10 16:11:15,419 - INFO - CLOSED short at 2115.11 | PnL: 0.54% | $0.87 +2025-03-10 16:11:15,420 - INFO - OPENED LONG at 2115.11 | Stop loss: 2104.487746428572 | Take profit: 2146.906705357143 +2025-03-10 16:11:15,473 - INFO - CLOSED long at 2114.57 | PnL: -0.03% | $-0.25 +2025-03-10 16:11:15,474 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.189553571429 | Take profit: 2082.7813946428573 +2025-03-10 16:11:16,168 - INFO - TAKE PROFIT hit for short at 2082.7813946428573 | PnL: 1.50% | $2.76 +2025-03-10 16:11:16,191 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2204535714286 | Take profit: 2053.408694642857 +2025-03-10 16:11:16,372 - INFO - CLOSED short at 2067.71 | PnL: 0.82% | $1.45 +2025-03-10 16:11:16,393 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5882035714285 | Take profit: 2017.5054446428574 +2025-03-10 16:11:16,569 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.69, Avg Loss=$-0.25 +2025-03-10 16:11:16,569 - INFO - Episode 44: Reward=15.20, Balance=$104.84, Win Rate=75.0%, Trades=4, Episode PnL=$5.08, Total PnL=$642.17, Max Drawdown=0.0%, Pred Accuracy=98.9% +2025-03-10 16:11:16,570 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:11:16,570 - INFO - Refreshing data for episode 45 +2025-03-10 16:11:16,571 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:11:16,883 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:11:16,894 - INFO - Initialized environment with 100 candles +2025-03-10 16:11:17,727 - INFO - OPENED SHORT at 2126.7 | Stop loss: 2137.3809357142854 | Take profit: 2094.728346428571 +2025-03-10 16:11:18,320 - INFO - CLOSED short at 2115.21 | PnL: 0.54% | $0.86 +2025-03-10 16:11:18,351 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.7179357142854 | Take profit: 2082.3173464285715 +2025-03-10 16:11:19,083 - INFO - TAKE PROFIT hit for short at 2082.3173464285715 | PnL: 1.50% | $2.77 +2025-03-10 16:11:19,109 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2211857142856 | Take profit: 2053.4075964285717 +2025-03-10 16:11:19,372 - INFO - TAKE PROFIT hit for short at 2053.4075964285717 | PnL: 1.50% | $2.84 +2025-03-10 16:11:19,398 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.302435714286 | Take profit: 2020.1638464285713 +2025-03-10 16:11:19,562 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.16, Avg Loss=$0.00 +2025-03-10 16:11:19,563 - INFO - Episode 45: Reward=15.51, Balance=$106.47, Win Rate=100.0%, Trades=3, Episode PnL=$6.47, Total PnL=$648.64, Max Drawdown=0.0%, Pred Accuracy=99.0% +2025-03-10 16:11:19,564 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:11:19,564 - INFO - Refreshing data for episode 46 +2025-03-10 16:11:19,564 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:11:19,876 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:11:19,888 - INFO - Initialized environment with 100 candles +2025-03-10 16:11:19,915 - INFO - OPENED SHORT at 2126.7 | Stop loss: 2137.3809357142854 | Take profit: 2094.728346428571 +2025-03-10 16:11:20,722 - INFO - TAKE PROFIT hit for short at 2094.728346428571 | PnL: 1.50% | $2.75 +2025-03-10 16:11:20,754 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.597685714286 | Take profit: 2068.4780964285715 +2025-03-10 16:11:21,204 - INFO - CLOSED short at 2084.95 | PnL: 0.72% | $1.24 +2025-03-10 16:11:21,233 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0303357142857 | Take profit: 2049.300146428571 +2025-03-10 16:11:21,357 - INFO - CLOSED short at 2084.11 | PnL: -0.17% | $-0.55 +2025-03-10 16:11:21,358 - INFO - OPENED LONG at 2084.11 | Stop loss: 2073.6420142857146 | Take profit: 2115.4428035714286 +2025-03-10 16:11:21,386 - INFO - CLOSED long at 2083.07 | PnL: -0.05% | $-0.30 +2025-03-10 16:11:21,386 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.5327857142856 | Take profit: 2051.752796428572 +2025-03-10 16:11:21,461 - INFO - CLOSED short at 2048.3 | PnL: 1.67% | $3.16 +2025-03-10 16:11:21,462 - INFO - OPENED LONG at 2048.3 | Stop loss: 2038.0110642857144 | Take profit: 2079.095653571429 +2025-03-10 16:11:21,491 - INFO - CLOSED long at 2051.0 | PnL: 0.13% | $0.07 +2025-03-10 16:11:21,492 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.302435714286 | Take profit: 2020.1638464285713 +2025-03-10 16:11:21,654 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.81, Avg Loss=$-0.43 +2025-03-10 16:11:21,655 - INFO - Episode 46: Reward=16.16, Balance=$106.37, Win Rate=66.7%, Trades=6, Episode PnL=$6.61, Total PnL=$655.01, Max Drawdown=0.0%, Pred Accuracy=99.1% +2025-03-10 16:11:21,655 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:11:21,655 - INFO - Refreshing data for episode 47 +2025-03-10 16:11:21,656 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:11:21,957 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:11:21,969 - INFO - Initialized environment with 100 candles +2025-03-10 16:11:21,998 - INFO - OPENED SHORT at 2126.7 | Stop loss: 2137.3809357142854 | Take profit: 2094.728346428571 +2025-03-10 16:11:22,820 - INFO - TAKE PROFIT hit for short at 2094.728346428571 | PnL: 1.50% | $2.75 +2025-03-10 16:11:22,844 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.597685714286 | Take profit: 2068.4780964285715 +2025-03-10 16:11:23,040 - INFO - CLOSED short at 2104.22 | PnL: -0.20% | $-0.60 +2025-03-10 16:11:23,040 - INFO - OPENED LONG at 2104.22 | Stop loss: 2093.651464285714 | Take profit: 2135.854453571428 +2025-03-10 16:11:23,071 - INFO - CLOSED long at 2104.67 | PnL: 0.02% | $-0.16 +2025-03-10 16:11:23,071 - INFO - OPENED SHORT at 2104.67 | Stop loss: 2115.2407857142857 | Take profit: 2073.0287964285717 +2025-03-10 16:11:23,565 - INFO - TAKE PROFIT hit for short at 2073.0287964285717 | PnL: 1.50% | $2.80 +2025-03-10 16:11:23,593 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5889357142855 | Take profit: 2017.5043464285718 +2025-03-10 16:11:23,793 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.77, Avg Loss=$-0.38 +2025-03-10 16:11:23,793 - INFO - Episode 47: Reward=10.74, Balance=$104.79, Win Rate=50.0%, Trades=4, Episode PnL=$4.94, Total PnL=$659.80, Max Drawdown=0.0%, Pred Accuracy=99.1% +2025-03-10 16:11:23,794 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:11:23,794 - INFO - Refreshing data for episode 48 +2025-03-10 16:11:23,795 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:11:24,092 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:11:24,106 - INFO - Initialized environment with 100 candles +2025-03-10 16:11:24,133 - INFO - OPENED SHORT at 2126.7 | Stop loss: 2137.3809357142854 | Take profit: 2094.728346428571 +2025-03-10 16:11:24,842 - INFO - CLOSED short at 2114.57 | PnL: 0.57% | $0.92 +2025-03-10 16:11:24,870 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.180285714286 | Take profit: 2080.8102964285717 +2025-03-10 16:11:25,608 - INFO - TAKE PROFIT hit for short at 2080.8102964285717 | PnL: 1.50% | $2.77 +2025-03-10 16:11:25,633 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2211857142856 | Take profit: 2053.4075964285717 +2025-03-10 16:11:25,853 - INFO - TAKE PROFIT hit for short at 2053.4075964285717 | PnL: 1.50% | $2.85 +2025-03-10 16:11:25,880 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.302435714286 | Take profit: 2020.1638464285713 +2025-03-10 16:11:26,057 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.18, Avg Loss=$0.00 +2025-03-10 16:11:26,058 - INFO - Episode 48: Reward=15.55, Balance=$106.54, Win Rate=100.0%, Trades=3, Episode PnL=$6.54, Total PnL=$666.34, Max Drawdown=0.0%, Pred Accuracy=99.2% +2025-03-10 16:11:26,058 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:11:26,058 - INFO - Refreshing data for episode 49 +2025-03-10 16:11:26,059 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:11:26,358 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:11:26,375 - INFO - Initialized environment with 100 candles +2025-03-10 16:11:26,404 - INFO - OPENED SHORT at 2126.7 | Stop loss: 2137.3809357142854 | Take profit: 2094.728346428571 +2025-03-10 16:11:27,224 - INFO - TAKE PROFIT hit for short at 2094.728346428571 | PnL: 1.50% | $2.75 +2025-03-10 16:11:27,250 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.597685714286 | Take profit: 2068.4780964285715 +2025-03-10 16:11:27,970 - INFO - TAKE PROFIT hit for short at 2068.4780964285715 | PnL: 1.50% | $2.82 +2025-03-10 16:11:27,995 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5889357142855 | Take profit: 2017.5043464285718 +2025-03-10 16:11:28,196 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$0.00 +2025-03-10 16:11:28,197 - INFO - Episode 49: Reward=14.09, Balance=$105.57, Win Rate=100.0%, Trades=2, Episode PnL=$5.57, Total PnL=$671.90, Max Drawdown=0.0%, Pred Accuracy=99.2% +2025-03-10 16:11:28,198 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:11:28,198 - INFO - Early stopping triggered after 50 episodes without improvement +2025-03-10 16:11:28,347 - INFO - Model saved to models/trading_agent_final.pt +2025-03-10 16:11:29,390 - INFO - Training results saved to training_results.png +2025-03-10 16:11:29,530 - INFO - Model saved to models/trading_agent_continuous_100.pt +2025-03-10 16:11:34,534 - INFO - Starting training batch 4 +2025-03-10 16:11:34,535 - INFO - Refreshing data for new training batch +2025-03-10 16:11:34,535 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:11:34,866 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 16:11:34,878 - INFO - Initialized environment with 500 candles +2025-03-10 16:11:34,878 - INFO - Updated environment with fresh candles +2025-03-10 16:11:34,879 - INFO - Starting training on device: cuda +2025-03-10 16:11:34,879 - INFO - Loading best model from models/trading_agent_best_pnl.pt to resume training +2025-03-10 16:11:34,879 - INFO - Loading model from models/trading_agent_best_pnl.pt +2025-03-10 16:11:35,163 - INFO - Model loaded successfully with weights_only=True +2025-03-10 16:11:35,168 - INFO - Resumed with best metrics - Reward: 202.74, PnL: $7.27, Win Rate: 66.7% +2025-03-10 16:11:35,177 - INFO - Refreshing data for episode 0 +2025-03-10 16:11:35,177 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:11:35,476 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:11:35,488 - INFO - Initialized environment with 100 candles +2025-03-10 16:11:36,691 - INFO - OPENED SHORT at 2126.7 | Stop loss: 2137.3811357142854 | Take profit: 2094.7280464285714 +2025-03-10 16:11:37,653 - INFO - TAKE PROFIT hit for short at 2094.7280464285714 | PnL: 1.50% | $2.75 +2025-03-10 16:11:37,683 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.597885714286 | Take profit: 2068.4777964285718 +2025-03-10 16:11:38,301 - INFO - CLOSED short at 2084.11 | PnL: 0.76% | $1.32 +2025-03-10 16:11:38,354 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.492985714286 | Take profit: 2043.8724964285716 +2025-03-10 16:11:38,475 - INFO - TAKE PROFIT hit for short at 2043.8724964285716 | PnL: 1.50% | $2.86 +2025-03-10 16:11:38,500 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.2020857142857 | Take profit: 2022.0251964285712 +2025-03-10 16:11:38,608 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.31, Avg Loss=$0.00 +2025-03-10 16:11:38,609 - INFO - Episode 0: Reward=29.38, Balance=$106.92, Win Rate=100.0%, Trades=3, Episode PnL=$6.92, Total PnL=$678.83, Max Drawdown=0.0%, Pred Accuracy=99.7% +2025-03-10 16:12:01,487 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 16:12:01,517 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 16:12:01,517 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:01,518 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:05,377 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 16:12:05,399 - INFO - Initialized environment with 500 candles +2025-03-10 16:12:08,202 - INFO - Starting continuous training mode. Press Ctrl+C to stop. +2025-03-10 16:12:08,202 - INFO - Starting training batch 1 +2025-03-10 16:12:08,202 - INFO - Refreshing data for new training batch +2025-03-10 16:12:08,203 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:08,535 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 16:12:08,554 - INFO - Initialized environment with 500 candles +2025-03-10 16:12:08,554 - INFO - Updated environment with fresh candles +2025-03-10 16:12:08,555 - INFO - Starting training on device: cuda +2025-03-10 16:12:08,555 - INFO - Loading best model from models/trading_agent_best_pnl.pt to resume training +2025-03-10 16:12:08,556 - INFO - Loading model from models/trading_agent_best_pnl.pt +2025-03-10 16:12:08,719 - INFO - Model loaded successfully with weights_only=True +2025-03-10 16:12:08,720 - INFO - Resumed with best metrics - Reward: 202.74, PnL: $7.27, Win Rate: 66.7% +2025-03-10 16:12:08,722 - INFO - Refreshing data for episode 0 +2025-03-10 16:12:08,723 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:09,048 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:09,057 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:10,183 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.6686892857147 | Take profit: 2090.106891071429 +2025-03-10 16:12:10,268 - INFO - CLOSED short at 2098.28 | PnL: 1.12% | $1.99 +2025-03-10 16:12:10,268 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.739960714286 | Take profit: 2129.8271589285714 +2025-03-10 16:12:10,276 - INFO - CLOSED long at 2091.36 | PnL: -0.33% | $-0.86 +2025-03-10 16:12:10,276 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.8654392857143 | Take profit: 2059.916641071429 +2025-03-10 16:12:10,293 - INFO - STOP LOSS hit for short at 2101.8654392857143 | PnL: -0.50% | $-1.19 +2025-03-10 16:12:10,304 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9756892857145 | Take profit: 2071.7858910714285 +2025-03-10 16:12:10,305 - INFO - CLOSED short at 2104.22 | PnL: -0.04% | $-0.27 +2025-03-10 16:12:10,310 - INFO - OPENED SHORT at 2104.67 | Stop loss: 2115.2419892857147 | Take profit: 2073.0269910714287 +2025-03-10 16:12:10,372 - INFO - TAKE PROFIT hit for short at 2073.0269910714287 | PnL: 1.50% | $2.73 +2025-03-10 16:12:10,376 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5901392857145 | Take profit: 2017.5025410714286 +2025-03-10 16:12:10,604 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.36, Avg Loss=$-0.77 +2025-03-10 16:12:10,606 - INFO - Episode 0: Reward=12.93, Balance=$102.41, Win Rate=40.0%, Trades=5, Episode PnL=$3.26, Total PnL=$2.41, Max Drawdown=0.3%, Pred Accuracy=99.7% +2025-03-10 16:12:10,751 - INFO - Model saved to checkpoints/trading_agent_episode_0.pt +2025-03-10 16:12:10,752 - INFO - Checkpoint saved at episode 0 +2025-03-10 16:12:11,867 - INFO - Visualization saved for episode 0 +2025-03-10 16:12:13,677 - INFO - Visualization saved for episode 0 +2025-03-10 16:12:13,690 - INFO - Refreshing data for episode 1 +2025-03-10 16:12:13,690 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:14,013 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:14,023 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:14,078 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.6690964285717 | Take profit: 2090.106280357143 +2025-03-10 16:12:14,375 - INFO - CLOSED short at 2120.96 | PnL: 0.05% | $-0.10 +2025-03-10 16:12:14,400 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.5735464285717 | Take profit: 2092.952930357143 +2025-03-10 16:12:14,961 - INFO - TAKE PROFIT hit for short at 2092.952930357143 | PnL: 1.50% | $2.74 +2025-03-10 16:12:14,987 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5992964285715 | Take profit: 2068.475680357143 +2025-03-10 16:12:15,443 - INFO - CLOSED short at 2090.59 | PnL: 0.45% | $0.70 +2025-03-10 16:12:15,443 - INFO - OPENED LONG at 2090.59 | Stop loss: 2080.0880035714285 | Take profit: 2122.0224196428576 +2025-03-10 16:12:15,471 - INFO - CLOSED long at 2090.99 | PnL: 0.02% | $-0.16 +2025-03-10 16:12:15,472 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.4939964285713 | Take profit: 2059.5515803571425 +2025-03-10 16:12:15,704 - INFO - TAKE PROFIT hit for short at 2059.5515803571425 | PnL: 1.50% | $2.83 +2025-03-10 16:12:15,733 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3040464285714 | Take profit: 2020.1614303571428 +2025-03-10 16:12:15,949 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.09, Avg Loss=$-0.13 +2025-03-10 16:12:15,949 - INFO - Episode 1: Reward=12.81, Balance=$106.01, Win Rate=60.0%, Trades=5, Episode PnL=$6.18, Total PnL=$8.42, Max Drawdown=0.1%, Pred Accuracy=99.7% +2025-03-10 16:12:15,949 - INFO - Refreshing data for episode 2 +2025-03-10 16:12:15,949 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:16,274 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:16,287 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:16,319 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.6690964285717 | Take profit: 2090.106280357143 +2025-03-10 16:12:16,607 - INFO - CLOSED short at 2120.96 | PnL: 0.05% | $-0.10 +2025-03-10 16:12:16,630 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.5735464285717 | Take profit: 2092.952930357143 +2025-03-10 16:12:17,140 - INFO - TAKE PROFIT hit for short at 2092.952930357143 | PnL: 1.50% | $2.74 +2025-03-10 16:12:17,165 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5992964285715 | Take profit: 2068.475680357143 +2025-03-10 16:12:17,499 - INFO - CLOSED short at 2096.96 | PnL: 0.15% | $0.09 +2025-03-10 16:12:17,524 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.202346428571 | Take profit: 2067.1065303571427 +2025-03-10 16:12:17,817 - INFO - TAKE PROFIT hit for short at 2067.1065303571427 | PnL: 1.50% | $2.82 +2025-03-10 16:12:17,846 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3040464285714 | Take profit: 2020.1614303571428 +2025-03-10 16:12:18,035 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.88, Avg Loss=$-0.10 +2025-03-10 16:12:18,035 - INFO - Episode 2: Reward=27.66, Balance=$105.55, Win Rate=75.0%, Trades=4, Episode PnL=$5.55, Total PnL=$13.97, Max Drawdown=0.1%, Pred Accuracy=99.7% +2025-03-10 16:12:18,035 - INFO - Refreshing data for episode 3 +2025-03-10 16:12:18,035 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:18,339 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:18,349 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:18,377 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.6690964285717 | Take profit: 2090.106280357143 +2025-03-10 16:12:19,076 - INFO - CLOSED short at 2100.05 | PnL: 1.03% | $1.83 +2025-03-10 16:12:19,076 - INFO - OPENED LONG at 2100.05 | Stop loss: 2089.500703571429 | Take profit: 2131.6243196428572 +2025-03-10 16:12:19,101 - INFO - CLOSED long at 2096.36 | PnL: -0.18% | $-0.55 +2025-03-10 16:12:19,127 - INFO - OPENED SHORT at 2089.04 | Stop loss: 2099.5342464285714 | Take profit: 2057.6308303571427 +2025-03-10 16:12:19,206 - INFO - STOP LOSS hit for short at 2099.5342464285714 | PnL: -0.50% | $-1.19 +2025-03-10 16:12:19,232 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3931964285716 | Take profit: 2071.2139803571426 +2025-03-10 16:12:19,727 - INFO - TAKE PROFIT hit for short at 2071.2139803571426 | PnL: 1.50% | $2.75 +2025-03-10 16:12:19,757 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5905464285715 | Take profit: 2017.501930357143 +2025-03-10 16:12:19,784 - INFO - CLOSED short at 2051.0 | PnL: -0.13% | $-0.47 +2025-03-10 16:12:19,784 - INFO - OPENED LONG at 2051.0 | Stop loss: 2040.6959535714286 | Take profit: 2081.8385696428572 +2025-03-10 16:12:19,814 - INFO - CLOSED long at 2043.51 | PnL: -0.37% | $-0.93 +2025-03-10 16:12:19,814 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.7765964285713 | Take profit: 2012.7837803571429 +2025-03-10 16:12:19,893 - INFO - STOP LOSS hit for short at 2053.7765964285713 | PnL: -0.50% | $-1.19 +2025-03-10 16:12:19,922 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.3491964285718 | Take profit: 2023.1459803571431 +2025-03-10 16:12:20,003 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 40.0% in downtrends | Avg Win=$2.29, Avg Loss=$-0.87 +2025-03-10 16:12:20,003 - INFO - Episode 3: Reward=24.32, Balance=$100.24, Win Rate=28.6%, Trades=7, Episode PnL=$1.17, Total PnL=$14.22, Max Drawdown=2.5%, Pred Accuracy=99.7% +2025-03-10 16:12:20,004 - INFO - Refreshing data for episode 4 +2025-03-10 16:12:20,005 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:20,432 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:20,442 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:20,467 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.6690964285717 | Take profit: 2090.106280357143 +2025-03-10 16:12:20,812 - INFO - CLOSED short at 2120.26 | PnL: 0.08% | $-0.03 +2025-03-10 16:12:20,812 - INFO - OPENED LONG at 2120.26 | Stop loss: 2109.6096535714287 | Take profit: 2152.1374696428575 +2025-03-10 16:12:20,844 - INFO - CLOSED long at 2116.81 | PnL: -0.16% | $-0.51 +2025-03-10 16:12:20,845 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.443096428571 | Take profit: 2084.984280357143 +2025-03-10 16:12:21,121 - INFO - CLOSED short at 2113.28 | PnL: 0.17% | $0.13 +2025-03-10 16:12:21,122 - INFO - OPENED LONG at 2113.28 | Stop loss: 2102.6645535714288 | Take profit: 2145.052769642857 +2025-03-10 16:12:21,143 - INFO - CLOSED long at 2114.5 | PnL: 0.06% | $-0.08 +2025-03-10 16:12:21,144 - INFO - OPENED SHORT at 2114.5 | Stop loss: 2125.121546428571 | Take profit: 2082.708930357143 +2025-03-10 16:12:21,197 - INFO - CLOSED short at 2098.24 | PnL: 0.77% | $1.30 +2025-03-10 16:12:21,197 - INFO - OPENED LONG at 2098.24 | Stop loss: 2087.699753571428 | Take profit: 2129.787169642857 +2025-03-10 16:12:21,224 - INFO - CLOSED long at 2098.28 | PnL: 0.00% | $-0.19 +2025-03-10 16:12:21,224 - INFO - OPENED SHORT at 2098.28 | Stop loss: 2108.8204464285714 | Take profit: 2066.732230357143 +2025-03-10 16:12:21,276 - INFO - CLOSED short at 2100.05 | PnL: -0.08% | $-0.36 +2025-03-10 16:12:21,277 - INFO - OPENED LONG at 2100.05 | Stop loss: 2089.500703571429 | Take profit: 2131.6243196428572 +2025-03-10 16:12:21,298 - INFO - CLOSED long at 2096.36 | PnL: -0.18% | $-0.54 +2025-03-10 16:12:21,298 - INFO - OPENED SHORT at 2096.36 | Stop loss: 2106.8908464285714 | Take profit: 2064.8410303571427 +2025-03-10 16:12:21,553 - INFO - CLOSED short at 2099.22 | PnL: -0.14% | $-0.46 +2025-03-10 16:12:21,553 - INFO - OPENED LONG at 2099.22 | Stop loss: 2088.6748535714282 | Take profit: 2130.781869642857 +2025-03-10 16:12:21,625 - INFO - CLOSED long at 2098.66 | PnL: -0.03% | $-0.25 +2025-03-10 16:12:21,626 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.202346428571 | Take profit: 2067.1065303571427 +2025-03-10 16:12:21,648 - INFO - CLOSED short at 2090.59 | PnL: 0.38% | $0.55 +2025-03-10 16:12:21,648 - INFO - OPENED LONG at 2090.59 | Stop loss: 2080.0880035714285 | Take profit: 2122.0224196428576 +2025-03-10 16:12:21,670 - INFO - CLOSED long at 2090.99 | PnL: 0.02% | $-0.16 +2025-03-10 16:12:21,671 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.4939964285713 | Take profit: 2059.5515803571425 +2025-03-10 16:12:21,714 - INFO - CLOSED short at 2080.58 | PnL: 0.50% | $0.77 +2025-03-10 16:12:21,714 - INFO - OPENED LONG at 2080.58 | Stop loss: 2070.1280535714286 | Take profit: 2111.8622696428574 +2025-03-10 16:12:21,736 - INFO - CLOSED long at 2084.75 | PnL: 0.20% | $0.20 +2025-03-10 16:12:21,737 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2227964285717 | Take profit: 2053.405180357143 +2025-03-10 16:12:21,834 - INFO - CLOSED short at 2084.11 | PnL: 0.03% | $-0.14 +2025-03-10 16:12:21,834 - INFO - OPENED LONG at 2084.11 | Stop loss: 2073.6404035714286 | Take profit: 2115.445219642857 +2025-03-10 16:12:21,858 - INFO - CLOSED long at 2083.07 | PnL: -0.05% | $-0.29 +2025-03-10 16:12:21,859 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.5343964285717 | Take profit: 2051.750380357143 +2025-03-10 16:12:21,913 - INFO - CLOSED short at 2067.71 | PnL: 0.74% | $1.24 +2025-03-10 16:12:21,914 - INFO - OPENED LONG at 2067.71 | Stop loss: 2057.322403571429 | Take profit: 2098.799219642857 +2025-03-10 16:12:21,942 - INFO - CLOSED long at 2048.3 | PnL: -0.94% | $-2.05 +2025-03-10 16:12:21,943 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5905464285715 | Take profit: 2017.501930357143 +2025-03-10 16:12:22,067 - INFO - CLOSED short at 2053.22 | PnL: -0.24% | $-0.66 +2025-03-10 16:12:22,067 - INFO - OPENED LONG at 2053.22 | Stop loss: 2042.9048535714282 | Take profit: 2084.0918696428566 +2025-03-10 16:12:22,101 - INFO - CLOSED long at 2058.11 | PnL: 0.24% | $0.27 +2025-03-10 16:12:22,101 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.4495964285716 | Take profit: 2027.164780357143 +2025-03-10 16:12:22,191 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$0.64, Avg Loss=$-0.44 +2025-03-10 16:12:22,193 - INFO - Episode 4: Reward=13.23, Balance=$98.73, Win Rate=35.0%, Trades=20, Episode PnL=$2.35, Total PnL=$12.95, Max Drawdown=0.0%, Pred Accuracy=99.7% +2025-03-10 16:12:22,193 - INFO - Refreshing data for episode 5 +2025-03-10 16:12:22,193 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:22,502 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:22,511 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:23,275 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.6690964285717 | Take profit: 2090.106280357143 +2025-03-10 16:12:23,387 - INFO - CLOSED short at 2120.54 | PnL: 0.07% | $-0.06 +2025-03-10 16:12:23,401 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.6390464285714 | Take profit: 2086.1564303571427 +2025-03-10 16:12:23,538 - INFO - CLOSED short at 2119.02 | PnL: -0.05% | $-0.29 +2025-03-10 16:12:23,538 - INFO - OPENED LONG at 2119.02 | Stop loss: 2108.3758535714287 | Take profit: 2150.8788696428574 +2025-03-10 16:12:23,570 - INFO - CLOSED long at 2120.96 | PnL: 0.09% | $-0.02 +2025-03-10 16:12:23,571 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6138464285714 | Take profit: 2089.072030357143 +2025-03-10 16:12:23,704 - INFO - CLOSED short at 2114.78 | PnL: 0.29% | $0.37 +2025-03-10 16:12:23,705 - INFO - OPENED LONG at 2114.78 | Stop loss: 2104.1570535714286 | Take profit: 2146.575269642857 +2025-03-10 16:12:23,728 - INFO - CLOSED long at 2115.52 | PnL: 0.03% | $-0.13 +2025-03-10 16:12:23,729 - INFO - OPENED SHORT at 2115.52 | Stop loss: 2126.1466464285713 | Take profit: 2083.713630357143 +2025-03-10 16:12:23,866 - INFO - CLOSED short at 2115.11 | PnL: 0.02% | $-0.16 +2025-03-10 16:12:23,867 - INFO - OPENED LONG at 2115.11 | Stop loss: 2104.4854035714284 | Take profit: 2146.910219642857 +2025-03-10 16:12:23,958 - INFO - CLOSED long at 2112.57 | PnL: -0.12% | $-0.43 +2025-03-10 16:12:23,959 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.1818964285717 | Take profit: 2080.807880357143 +2025-03-10 16:12:24,203 - INFO - CLOSED short at 2089.04 | PnL: 1.11% | $1.97 +2025-03-10 16:12:24,204 - INFO - OPENED LONG at 2089.04 | Stop loss: 2078.5457535714286 | Take profit: 2120.4491696428568 +2025-03-10 16:12:24,230 - INFO - CLOSED long at 2089.84 | PnL: 0.04% | $-0.12 +2025-03-10 16:12:24,231 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3382464285714 | Take profit: 2058.418830357143 +2025-03-10 16:12:24,302 - INFO - CLOSED short at 2102.83 | PnL: -0.62% | $-1.43 +2025-03-10 16:12:24,303 - INFO - OPENED LONG at 2102.83 | Stop loss: 2092.266803571428 | Take profit: 2134.4460196428568 +2025-03-10 16:12:24,334 - INFO - CLOSED long at 2103.41 | PnL: 0.03% | $-0.14 +2025-03-10 16:12:24,335 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9760964285715 | Take profit: 2071.7852803571427 +2025-03-10 16:12:24,390 - INFO - CLOSED short at 2104.67 | PnL: -0.06% | $-0.31 +2025-03-10 16:12:24,390 - INFO - OPENED LONG at 2104.67 | Stop loss: 2094.0976035714284 | Take profit: 2136.3136196428572 +2025-03-10 16:12:24,414 - INFO - CLOSED long at 2105.26 | PnL: 0.03% | $-0.14 +2025-03-10 16:12:24,415 - INFO - OPENED SHORT at 2105.26 | Stop loss: 2115.835346428572 | Take profit: 2073.607530357143 +2025-03-10 16:12:24,464 - INFO - CLOSED short at 2099.22 | PnL: 0.29% | $0.36 +2025-03-10 16:12:24,464 - INFO - OPENED LONG at 2099.22 | Stop loss: 2088.6748535714282 | Take profit: 2130.781869642857 +2025-03-10 16:12:24,488 - INFO - CLOSED long at 2094.16 | PnL: -0.24% | $-0.66 +2025-03-10 16:12:24,489 - INFO - OPENED SHORT at 2094.16 | Stop loss: 2104.679846428571 | Take profit: 2062.674030357143 +2025-03-10 16:12:24,520 - INFO - CLOSED short at 2096.96 | PnL: -0.13% | $-0.45 +2025-03-10 16:12:24,521 - INFO - OPENED LONG at 2096.96 | Stop loss: 2086.4261535714286 | Take profit: 2128.487969642857 +2025-03-10 16:12:24,555 - INFO - CLOSED long at 2098.66 | PnL: 0.08% | $-0.04 +2025-03-10 16:12:24,555 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.202346428571 | Take profit: 2067.1065303571427 +2025-03-10 16:12:24,955 - INFO - CLOSED short at 2048.3 | PnL: 2.40% | $4.42 +2025-03-10 16:12:24,955 - INFO - OPENED LONG at 2048.3 | Stop loss: 2038.0094535714286 | Take profit: 2079.0980696428574 +2025-03-10 16:12:24,989 - INFO - CLOSED long at 2051.0 | PnL: 0.13% | $0.06 +2025-03-10 16:12:24,989 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3040464285714 | Take profit: 2020.1614303571428 +2025-03-10 16:12:25,044 - INFO - CLOSED short at 2052.89 | PnL: -0.09% | $-0.39 +2025-03-10 16:12:25,044 - INFO - OPENED LONG at 2052.89 | Stop loss: 2042.5765035714285 | Take profit: 2083.756919642857 +2025-03-10 16:12:25,074 - INFO - CLOSED long at 2053.22 | PnL: 0.02% | $-0.17 +2025-03-10 16:12:25,075 - INFO - OPENED SHORT at 2053.22 | Stop loss: 2063.535146428571 | Take profit: 2022.3481303571425 +2025-03-10 16:12:25,180 - INFO - CLOSED short at 2046.76 | PnL: 0.31% | $0.43 +2025-03-10 16:12:25,180 - INFO - OPENED LONG at 2046.76 | Stop loss: 2036.4771535714285 | Take profit: 2077.534969642857 +2025-03-10 16:12:25,204 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 45.5% in downtrends | Avg Win=$1.27, Avg Loss=$-0.31 +2025-03-10 16:12:25,205 - INFO - Episode 5: Reward=11.68, Balance=$102.69, Win Rate=27.3%, Trades=22, Episode PnL=$4.47, Total PnL=$15.64, Max Drawdown=0.1%, Pred Accuracy=99.7% +2025-03-10 16:12:25,206 - INFO - Refreshing data for episode 6 +2025-03-10 16:12:25,206 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:25,500 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:25,510 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:25,536 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.6690964285717 | Take profit: 2090.106280357143 +2025-03-10 16:12:25,580 - INFO - CLOSED short at 2122.24 | PnL: -0.01% | $-0.22 +2025-03-10 16:12:25,580 - INFO - OPENED LONG at 2122.24 | Stop loss: 2111.5797535714282 | Take profit: 2154.1471696428566 +2025-03-10 16:12:25,604 - INFO - CLOSED long at 2120.48 | PnL: -0.08% | $-0.36 +2025-03-10 16:12:25,605 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.131446428571 | Take profit: 2088.599230357143 +2025-03-10 16:12:25,754 - INFO - CLOSED short at 2119.02 | PnL: 0.07% | $-0.06 +2025-03-10 16:12:25,755 - INFO - OPENED LONG at 2119.02 | Stop loss: 2108.3758535714287 | Take profit: 2150.8788696428574 +2025-03-10 16:12:25,787 - INFO - CLOSED long at 2120.96 | PnL: 0.09% | $-0.02 +2025-03-10 16:12:25,788 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6138464285714 | Take profit: 2089.072030357143 +2025-03-10 16:12:26,358 - INFO - TAKE PROFIT hit for short at 2089.072030357143 | PnL: 1.50% | $2.73 +2025-03-10 16:12:26,383 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3382464285714 | Take profit: 2058.418830357143 +2025-03-10 16:12:26,464 - INFO - STOP LOSS hit for short at 2100.3382464285714 | PnL: -0.50% | $-1.20 +2025-03-10 16:12:26,489 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9760964285715 | Take profit: 2071.7852803571427 +2025-03-10 16:12:26,988 - INFO - TAKE PROFIT hit for short at 2071.7852803571427 | PnL: 1.50% | $2.77 +2025-03-10 16:12:27,013 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5905464285715 | Take profit: 2017.501930357143 +2025-03-10 16:12:27,248 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 40.0% in downtrends | Avg Win=$2.75, Avg Loss=$-0.37 +2025-03-10 16:12:27,249 - INFO - Episode 6: Reward=22.30, Balance=$103.64, Win Rate=28.6%, Trades=7, Episode PnL=$4.01, Total PnL=$19.28, Max Drawdown=1.2%, Pred Accuracy=99.7% +2025-03-10 16:12:27,249 - INFO - Refreshing data for episode 7 +2025-03-10 16:12:27,250 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:27,551 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:27,561 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:27,586 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.6690964285717 | Take profit: 2090.106280357143 +2025-03-10 16:12:28,400 - INFO - TAKE PROFIT hit for short at 2090.106280357143 | PnL: 1.50% | $2.74 +2025-03-10 16:12:28,427 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3382464285714 | Take profit: 2058.418830357143 +2025-03-10 16:12:28,510 - INFO - STOP LOSS hit for short at 2100.3382464285714 | PnL: -0.50% | $-1.21 +2025-03-10 16:12:28,532 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9760964285715 | Take profit: 2071.7852803571427 +2025-03-10 16:12:29,110 - INFO - TAKE PROFIT hit for short at 2071.7852803571427 | PnL: 1.50% | $2.79 +2025-03-10 16:12:29,143 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5905464285715 | Take profit: 2017.501930357143 +2025-03-10 16:12:29,384 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.76, Avg Loss=$-1.21 +2025-03-10 16:12:29,385 - INFO - Episode 7: Reward=28.00, Balance=$104.32, Win Rate=66.7%, Trades=3, Episode PnL=$4.32, Total PnL=$23.60, Max Drawdown=1.2%, Pred Accuracy=99.6% +2025-03-10 16:12:29,386 - INFO - Refreshing data for episode 8 +2025-03-10 16:12:29,386 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:29,809 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:29,822 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:29,855 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.6692642857147 | Take profit: 2090.106028571429 +2025-03-10 16:12:30,273 - INFO - CLOSED short at 2114.75 | PnL: 0.34% | $0.47 +2025-03-10 16:12:30,303 - INFO - OPENED SHORT at 2116.06 | Stop loss: 2126.689514285714 | Take profit: 2084.2452785714286 +2025-03-10 16:12:31,129 - INFO - TAKE PROFIT hit for short at 2084.2452785714286 | PnL: 1.50% | $2.76 +2025-03-10 16:12:31,155 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.222964285714 | Take profit: 2053.4049285714286 +2025-03-10 16:12:31,345 - INFO - TAKE PROFIT hit for short at 2053.4049285714286 | PnL: 1.50% | $2.83 +2025-03-10 16:12:31,370 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3042142857144 | Take profit: 2020.1611785714288 +2025-03-10 16:12:31,552 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.02, Avg Loss=$0.00 +2025-03-10 16:12:31,553 - INFO - Episode 8: Reward=29.05, Balance=$106.06, Win Rate=100.0%, Trades=3, Episode PnL=$6.06, Total PnL=$29.66, Max Drawdown=0.0%, Pred Accuracy=99.6% +2025-03-10 16:12:31,553 - INFO - Refreshing data for episode 9 +2025-03-10 16:12:31,553 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:31,875 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:31,887 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:31,913 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.669367857143 | Take profit: 2090.105873214286 +2025-03-10 16:12:32,750 - INFO - CLOSED short at 2096.36 | PnL: 1.21% | $2.17 +2025-03-10 16:12:32,750 - INFO - OPENED LONG at 2096.36 | Stop loss: 2085.8288821428573 | Take profit: 2127.8793767857146 +2025-03-10 16:12:32,783 - INFO - CLOSED long at 2089.04 | PnL: -0.35% | $-0.90 +2025-03-10 16:12:32,783 - INFO - OPENED SHORT at 2089.04 | Stop loss: 2099.534517857143 | Take profit: 2057.6304232142857 +2025-03-10 16:12:32,860 - INFO - STOP LOSS hit for short at 2099.534517857143 | PnL: -0.50% | $-1.19 +2025-03-10 16:12:32,891 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3934678571427 | Take profit: 2071.2135732142856 +2025-03-10 16:12:33,331 - INFO - TAKE PROFIT hit for short at 2071.2135732142856 | PnL: 1.50% | $2.74 +2025-03-10 16:12:33,350 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.590817857143 | Take profit: 2017.501523214286 +2025-03-10 16:12:33,546 - INFO - CLOSED short at 2046.76 | PnL: 0.08% | $-0.05 +2025-03-10 16:12:33,547 - INFO - OPENED LONG at 2046.76 | Stop loss: 2036.4768821428572 | Take profit: 2077.5353767857146 +2025-03-10 16:12:33,573 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$2.46, Avg Loss=$-0.71 +2025-03-10 16:12:33,573 - INFO - Episode 9: Reward=26.60, Balance=$102.77, Win Rate=40.0%, Trades=5, Episode PnL=$3.67, Total PnL=$32.43, Max Drawdown=0.0%, Pred Accuracy=99.5% +2025-03-10 16:12:33,574 - INFO - Refreshing data for episode 10 +2025-03-10 16:12:33,574 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:33,865 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:33,877 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:34,690 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.669367857143 | Take profit: 2090.105873214286 +2025-03-10 16:12:35,402 - INFO - CLOSED short at 2098.24 | PnL: 1.12% | $1.99 +2025-03-10 16:12:35,430 - INFO - OPENED SHORT at 2098.28 | Stop loss: 2108.820717857143 | Take profit: 2066.7318232142857 +2025-03-10 16:12:35,725 - INFO - CLOSED short at 2104.67 | PnL: -0.30% | $-0.81 +2025-03-10 16:12:35,748 - INFO - OPENED SHORT at 2105.26 | Stop loss: 2115.835617857143 | Take profit: 2073.607123214286 +2025-03-10 16:12:36,136 - INFO - TAKE PROFIT hit for short at 2073.607123214286 | PnL: 1.50% | $2.78 +2025-03-10 16:12:36,163 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.590817857143 | Take profit: 2017.501523214286 +2025-03-10 16:12:36,320 - INFO - CLOSED short at 2050.18 | PnL: -0.09% | $-0.39 +2025-03-10 16:12:36,320 - INFO - OPENED LONG at 2050.18 | Stop loss: 2039.879782142857 | Take profit: 2081.0066767857143 +2025-03-10 16:12:36,346 - INFO - CLOSED long at 2046.76 | PnL: -0.17% | $-0.54 +2025-03-10 16:12:36,347 - INFO - OPENED SHORT at 2046.76 | Stop loss: 2057.043117857143 | Take profit: 2015.9846232142859 +2025-03-10 16:12:36,372 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$2.38, Avg Loss=$-0.58 +2025-03-10 16:12:36,373 - INFO - Episode 10: Reward=10.71, Balance=$103.03, Win Rate=40.0%, Trades=5, Episode PnL=$3.57, Total PnL=$35.46, Max Drawdown=0.8%, Pred Accuracy=99.3% +2025-03-10 16:12:36,537 - INFO - Model saved to checkpoints/trading_agent_episode_10.pt +2025-03-10 16:12:36,538 - INFO - Checkpoint saved at episode 10 +2025-03-10 16:12:37,880 - INFO - Visualization saved for episode 10 +2025-03-10 16:12:39,839 - INFO - Visualization saved for episode 10 +2025-03-10 16:12:39,855 - INFO - Refreshing data for episode 11 +2025-03-10 16:12:39,855 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:40,160 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:40,171 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:40,252 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.669367857143 | Take profit: 2090.105873214286 +2025-03-10 16:12:41,039 - INFO - TAKE PROFIT hit for short at 2090.105873214286 | PnL: 1.50% | $2.74 +2025-03-10 16:12:41,064 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3385178571434 | Take profit: 2058.418423214286 +2025-03-10 16:12:41,133 - INFO - STOP LOSS hit for short at 2100.3385178571434 | PnL: -0.50% | $-1.21 +2025-03-10 16:12:41,156 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9763678571426 | Take profit: 2071.7848732142857 +2025-03-10 16:12:41,247 - INFO - CLOSED short at 2099.63 | PnL: 0.18% | $0.16 +2025-03-10 16:12:41,271 - INFO - OPENED SHORT at 2099.22 | Stop loss: 2109.765417857143 | Take profit: 2067.6577232142854 +2025-03-10 16:12:41,424 - INFO - CLOSED short at 2080.58 | PnL: 0.89% | $1.57 +2025-03-10 16:12:41,448 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2230678571427 | Take profit: 2053.404773214286 +2025-03-10 16:12:41,666 - INFO - TAKE PROFIT hit for short at 2053.404773214286 | PnL: 1.50% | $2.83 +2025-03-10 16:12:41,696 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3043178571425 | Take profit: 2020.1610232142857 +2025-03-10 16:12:41,876 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.82, Avg Loss=$-1.21 +2025-03-10 16:12:41,876 - INFO - Episode 11: Reward=17.01, Balance=$106.09, Win Rate=80.0%, Trades=5, Episode PnL=$6.09, Total PnL=$41.55, Max Drawdown=1.2%, Pred Accuracy=98.8% +2025-03-10 16:12:41,877 - INFO - Refreshing data for episode 12 +2025-03-10 16:12:41,877 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:42,205 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:42,216 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:42,233 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.669367857143 | Take profit: 2090.105873214286 +2025-03-10 16:12:42,754 - INFO - CLOSED short at 2114.32 | PnL: 0.36% | $0.51 +2025-03-10 16:12:42,776 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.192167857143 | Take profit: 2082.7774732142857 +2025-03-10 16:12:42,952 - INFO - CLOSED short at 2100.05 | PnL: 0.69% | $1.15 +2025-03-10 16:12:42,974 - INFO - OPENED SHORT at 2096.36 | Stop loss: 2106.891117857143 | Take profit: 2064.8406232142856 +2025-03-10 16:12:43,048 - INFO - CLOSED short at 2096.19 | PnL: 0.01% | $-0.18 +2025-03-10 16:12:43,048 - INFO - OPENED LONG at 2096.19 | Stop loss: 2085.659732142857 | Take profit: 2127.7068267857144 +2025-03-10 16:12:43,076 - INFO - CLOSED long at 2100.0 | PnL: 0.18% | $0.16 +2025-03-10 16:12:43,076 - INFO - OPENED SHORT at 2100.0 | Stop loss: 2110.549317857143 | Take profit: 2068.426023214286 +2025-03-10 16:12:43,625 - INFO - TAKE PROFIT hit for short at 2068.426023214286 | PnL: 1.50% | $2.79 +2025-03-10 16:12:43,650 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.590817857143 | Take profit: 2017.501523214286 +2025-03-10 16:12:43,870 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.15, Avg Loss=$-0.18 +2025-03-10 16:12:43,871 - INFO - Episode 12: Reward=2.40, Balance=$104.43, Win Rate=80.0%, Trades=5, Episode PnL=$4.27, Total PnL=$45.99, Max Drawdown=0.0%, Pred Accuracy=98.0% +2025-03-10 16:12:43,871 - INFO - Refreshing data for episode 13 +2025-03-10 16:12:43,872 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:44,176 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:44,185 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:44,209 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.669367857143 | Take profit: 2090.105873214286 +2025-03-10 16:12:44,996 - INFO - TAKE PROFIT hit for short at 2090.105873214286 | PnL: 1.50% | $2.74 +2025-03-10 16:12:45,022 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3385178571434 | Take profit: 2058.418423214286 +2025-03-10 16:12:45,091 - INFO - STOP LOSS hit for short at 2100.3385178571434 | PnL: -0.50% | $-1.21 +2025-03-10 16:12:45,115 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9763678571426 | Take profit: 2071.7848732142857 +2025-03-10 16:12:45,435 - INFO - CLOSED short at 2084.25 | PnL: 0.91% | $1.61 +2025-03-10 16:12:45,456 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.846167857143 | Take profit: 2054.0154732142855 +2025-03-10 16:12:45,578 - INFO - TAKE PROFIT hit for short at 2054.0154732142855 | PnL: 1.50% | $2.83 +2025-03-10 16:12:45,605 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3043178571425 | Take profit: 2020.1610232142857 +2025-03-10 16:12:45,798 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.39, Avg Loss=$-1.21 +2025-03-10 16:12:45,799 - INFO - Episode 13: Reward=2.26, Balance=$105.97, Win Rate=75.0%, Trades=4, Episode PnL=$5.97, Total PnL=$51.96, Max Drawdown=1.2%, Pred Accuracy=97.6% +2025-03-10 16:12:45,799 - INFO - Refreshing data for episode 14 +2025-03-10 16:12:45,800 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:46,125 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:46,137 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:46,167 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.669367857143 | Take profit: 2090.105873214286 +2025-03-10 16:12:47,001 - INFO - TAKE PROFIT hit for short at 2090.105873214286 | PnL: 1.50% | $2.74 +2025-03-10 16:12:47,028 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3385178571434 | Take profit: 2058.418423214286 +2025-03-10 16:12:47,096 - INFO - STOP LOSS hit for short at 2100.3385178571434 | PnL: -0.50% | $-1.21 +2025-03-10 16:12:47,119 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9763678571426 | Take profit: 2071.7848732142857 +2025-03-10 16:12:47,581 - INFO - TAKE PROFIT hit for short at 2071.7848732142857 | PnL: 1.50% | $2.78 +2025-03-10 16:12:47,608 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.590817857143 | Take profit: 2017.501523214286 +2025-03-10 16:12:47,809 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.76, Avg Loss=$-1.21 +2025-03-10 16:12:47,810 - INFO - Episode 14: Reward=0.39, Balance=$104.32, Win Rate=66.7%, Trades=3, Episode PnL=$4.32, Total PnL=$56.28, Max Drawdown=1.2%, Pred Accuracy=98.1% +2025-03-10 16:12:47,810 - INFO - Refreshing data for episode 15 +2025-03-10 16:12:47,810 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:48,106 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:48,115 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:48,880 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.669367857143 | Take profit: 2090.105873214286 +2025-03-10 16:12:49,763 - INFO - TAKE PROFIT hit for short at 2090.105873214286 | PnL: 1.50% | $2.74 +2025-03-10 16:12:49,791 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3385178571434 | Take profit: 2058.418423214286 +2025-03-10 16:12:49,864 - INFO - STOP LOSS hit for short at 2100.3385178571434 | PnL: -0.50% | $-1.21 +2025-03-10 16:12:49,888 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9763678571426 | Take profit: 2071.7848732142857 +2025-03-10 16:12:50,398 - INFO - TAKE PROFIT hit for short at 2071.7848732142857 | PnL: 1.50% | $2.78 +2025-03-10 16:12:50,424 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.590817857143 | Take profit: 2017.501523214286 +2025-03-10 16:12:50,561 - INFO - CLOSED short at 2058.11 | PnL: -0.48% | $-1.18 +2025-03-10 16:12:50,562 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.7701321428572 | Take profit: 2089.055626785714 +2025-03-10 16:12:50,592 - INFO - CLOSED long at 2054.03 | PnL: -0.20% | $-0.60 +2025-03-10 16:12:50,593 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.3494678571433 | Take profit: 2023.145573214286 +2025-03-10 16:12:50,670 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$2.76, Avg Loss=$-1.00 +2025-03-10 16:12:50,671 - INFO - Episode 15: Reward=9.67, Balance=$102.54, Win Rate=40.0%, Trades=5, Episode PnL=$3.14, Total PnL=$58.82, Max Drawdown=1.2%, Pred Accuracy=98.4% +2025-03-10 16:12:50,671 - INFO - Refreshing data for episode 16 +2025-03-10 16:12:50,672 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:51,021 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:51,036 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:51,068 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.669725 | Take profit: 2090.1053375 +2025-03-10 16:12:52,015 - INFO - TAKE PROFIT hit for short at 2090.1053375 | PnL: 1.50% | $2.74 +2025-03-10 16:12:52,044 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.338875 | Take profit: 2058.4178875000002 +2025-03-10 16:12:52,128 - INFO - STOP LOSS hit for short at 2100.338875 | PnL: -0.50% | $-1.21 +2025-03-10 16:12:52,176 - INFO - OPENED SHORT at 2104.22 | Stop loss: 2114.790775 | Take profit: 2072.5821874999997 +2025-03-10 16:12:52,651 - INFO - TAKE PROFIT hit for short at 2072.5821874999997 | PnL: 1.50% | $2.78 +2025-03-10 16:12:52,675 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.591175 | Take profit: 2017.5009875 +2025-03-10 16:12:52,874 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.76, Avg Loss=$-1.21 +2025-03-10 16:12:52,875 - INFO - Episode 16: Reward=14.00, Balance=$104.32, Win Rate=66.7%, Trades=3, Episode PnL=$4.32, Total PnL=$63.13, Max Drawdown=1.2%, Pred Accuracy=98.4% +2025-03-10 16:12:52,875 - INFO - Refreshing data for episode 17 +2025-03-10 16:12:52,876 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:53,179 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:53,189 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:53,215 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.6700285714287 | Take profit: 2090.1048821428576 +2025-03-10 16:12:53,402 - INFO - CLOSED short at 2116.52 | PnL: 0.26% | $0.31 +2025-03-10 16:12:53,403 - INFO - OPENED LONG at 2116.52 | Stop loss: 2105.8874214285715 | Take profit: 2148.342767857143 +2025-03-10 16:12:53,426 - INFO - CLOSED long at 2119.02 | PnL: 0.12% | $0.04 +2025-03-10 16:12:53,426 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6650785714287 | Take profit: 2087.159732142857 +2025-03-10 16:12:53,562 - INFO - CLOSED short at 2116.81 | PnL: 0.10% | $0.01 +2025-03-10 16:12:53,562 - INFO - OPENED LONG at 2116.81 | Stop loss: 2106.1759714285713 | Take profit: 2148.6371178571426 +2025-03-10 16:12:53,589 - INFO - CLOSED long at 2114.78 | PnL: -0.10% | $-0.38 +2025-03-10 16:12:53,589 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.403878571429 | Take profit: 2082.9833321428573 +2025-03-10 16:12:53,813 - INFO - CLOSED short at 2113.28 | PnL: 0.07% | $-0.06 +2025-03-10 16:12:53,841 - INFO - OPENED SHORT at 2114.5 | Stop loss: 2125.1224785714285 | Take profit: 2082.707532142857 +2025-03-10 16:12:54,416 - INFO - TAKE PROFIT hit for short at 2082.707532142857 | PnL: 1.50% | $2.74 +2025-03-10 16:12:54,446 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2237285714286 | Take profit: 2053.4037821428574 +2025-03-10 16:12:54,531 - INFO - CLOSED short at 2085.37 | PnL: -0.03% | $-0.26 +2025-03-10 16:12:54,562 - INFO - OPENED SHORT at 2084.11 | Stop loss: 2094.5805285714287 | Take profit: 2052.7733821428574 +2025-03-10 16:12:54,648 - INFO - TAKE PROFIT hit for short at 2052.7733821428574 | PnL: 1.50% | $2.81 +2025-03-10 16:12:54,669 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3049785714284 | Take profit: 2020.160032142857 +2025-03-10 16:12:54,835 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.18, Avg Loss=$-0.23 +2025-03-10 16:12:54,836 - INFO - Episode 17: Reward=-1.25, Balance=$105.20, Win Rate=62.5%, Trades=8, Episode PnL=$5.55, Total PnL=$68.33, Max Drawdown=0.3%, Pred Accuracy=98.3% +2025-03-10 16:12:54,836 - INFO - Refreshing data for episode 18 +2025-03-10 16:12:54,836 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:55,161 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:55,173 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:55,200 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.6700285714287 | Take profit: 2090.1048821428576 +2025-03-10 16:12:55,917 - INFO - CLOSED short at 2098.28 | PnL: 1.12% | $1.99 +2025-03-10 16:12:55,918 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.7386214285716 | Take profit: 2129.829167857143 +2025-03-10 16:12:55,946 - INFO - CLOSED long at 2091.36 | PnL: -0.33% | $-0.86 +2025-03-10 16:12:55,946 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.8667785714288 | Take profit: 2059.9146321428575 +2025-03-10 16:12:56,115 - INFO - STOP LOSS hit for short at 2101.8667785714288 | PnL: -0.50% | $-1.19 +2025-03-10 16:12:56,138 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9770285714285 | Take profit: 2071.7838821428572 +2025-03-10 16:12:56,607 - INFO - TAKE PROFIT hit for short at 2071.7838821428572 | PnL: 1.50% | $2.74 +2025-03-10 16:12:56,634 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5914785714285 | Take profit: 2017.5005321428573 +2025-03-10 16:12:56,860 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.37, Avg Loss=$-1.02 +2025-03-10 16:12:56,861 - INFO - Episode 18: Reward=0.49, Balance=$102.68, Win Rate=50.0%, Trades=4, Episode PnL=$3.54, Total PnL=$71.02, Max Drawdown=0.1%, Pred Accuracy=98.1% +2025-03-10 16:12:56,862 - INFO - Refreshing data for episode 19 +2025-03-10 16:12:56,862 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:57,186 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:57,198 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:57,229 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.6701000000003 | Take profit: 2090.1047750000002 +2025-03-10 16:12:58,001 - INFO - TAKE PROFIT hit for short at 2090.1047750000002 | PnL: 1.50% | $2.74 +2025-03-10 16:12:58,027 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.33925 | Take profit: 2058.417325 +2025-03-10 16:12:58,099 - INFO - STOP LOSS hit for short at 2100.33925 | PnL: -0.50% | $-1.21 +2025-03-10 16:12:58,122 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9770999999996 | Take profit: 2071.783775 +2025-03-10 16:12:58,298 - INFO - CLOSED short at 2096.96 | PnL: 0.31% | $0.41 +2025-03-10 16:12:58,298 - INFO - OPENED LONG at 2096.96 | Stop loss: 2086.42515 | Take profit: 2128.489475 +2025-03-10 16:12:58,325 - INFO - CLOSED long at 2098.66 | PnL: 0.08% | $-0.04 +2025-03-10 16:12:58,326 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.20335 | Take profit: 2067.105025 +2025-03-10 16:12:58,633 - INFO - TAKE PROFIT hit for short at 2067.105025 | PnL: 1.50% | $2.79 +2025-03-10 16:12:58,655 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.30505 | Take profit: 2020.159925 +2025-03-10 16:12:58,699 - INFO - CLOSED short at 2052.89 | PnL: -0.09% | $-0.39 +2025-03-10 16:12:58,699 - INFO - OPENED LONG at 2052.89 | Stop loss: 2042.5755 | Take profit: 2083.758425 +2025-03-10 16:12:58,729 - INFO - CLOSED long at 2053.22 | PnL: 0.02% | $-0.17 +2025-03-10 16:12:58,730 - INFO - OPENED SHORT at 2053.22 | Stop loss: 2063.53615 | Take profit: 2022.3466249999997 +2025-03-10 16:12:58,854 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 60.0% in downtrends | Avg Win=$1.98, Avg Loss=$-0.45 +2025-03-10 16:12:58,854 - INFO - Episode 19: Reward=-2.89, Balance=$104.14, Win Rate=42.9%, Trades=7, Episode PnL=$4.34, Total PnL=$75.15, Max Drawdown=1.2%, Pred Accuracy=98.1% +2025-03-10 16:12:58,855 - INFO - Refreshing data for episode 20 +2025-03-10 16:12:58,855 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:12:59,180 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:12:59,193 - INFO - Initialized environment with 100 candles +2025-03-10 16:12:59,959 - INFO - OPENED SHORT at 2122.01 | Stop loss: 2132.6701000000003 | Take profit: 2090.1047750000002 +2025-03-10 16:13:00,824 - INFO - TAKE PROFIT hit for short at 2090.1047750000002 | PnL: 1.50% | $2.74 +2025-03-10 16:13:00,856 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.33925 | Take profit: 2058.417325 +2025-03-10 16:13:00,937 - INFO - STOP LOSS hit for short at 2100.33925 | PnL: -0.50% | $-1.21 +2025-03-10 16:13:00,962 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9770999999996 | Take profit: 2071.783775 +2025-03-10 16:13:01,482 - INFO - TAKE PROFIT hit for short at 2071.783775 | PnL: 1.50% | $2.78 +2025-03-10 16:13:01,510 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5915500000006 | Take profit: 2017.5004250000002 +2025-03-10 16:13:01,740 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.76, Avg Loss=$-1.21 +2025-03-10 16:13:01,741 - INFO - Episode 20: Reward=0.40, Balance=$104.32, Win Rate=66.7%, Trades=3, Episode PnL=$4.32, Total PnL=$79.47, Max Drawdown=1.2%, Pred Accuracy=98.2% +2025-03-10 16:13:01,887 - INFO - Model saved to checkpoints/trading_agent_episode_20.pt +2025-03-10 16:13:01,888 - INFO - Checkpoint saved at episode 20 +2025-03-10 16:13:01,888 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:02,896 - INFO - Visualization saved for episode 20 +2025-03-10 16:13:05,106 - INFO - Visualization saved for episode 20 +2025-03-10 16:13:05,125 - INFO - Refreshing data for episode 21 +2025-03-10 16:13:05,125 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:05,441 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:05,453 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:05,535 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.8299107142857 | Take profit: 2090.2638589285716 +2025-03-10 16:13:06,367 - INFO - TAKE PROFIT hit for short at 2090.2638589285716 | PnL: 1.50% | $2.74 +2025-03-10 16:13:06,397 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3382607142858 | Take profit: 2058.4188089285717 +2025-03-10 16:13:06,483 - INFO - STOP LOSS hit for short at 2100.3382607142858 | PnL: -0.50% | $-1.21 +2025-03-10 16:13:06,512 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9761107142854 | Take profit: 2071.7852589285712 +2025-03-10 16:13:06,697 - INFO - CLOSED short at 2096.96 | PnL: 0.31% | $0.41 +2025-03-10 16:13:06,697 - INFO - OPENED LONG at 2096.96 | Stop loss: 2086.4261392857143 | Take profit: 2128.4879910714285 +2025-03-10 16:13:06,721 - INFO - CLOSED long at 2098.66 | PnL: 0.08% | $-0.04 +2025-03-10 16:13:06,722 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.2023607142855 | Take profit: 2067.106508928571 +2025-03-10 16:13:07,025 - INFO - TAKE PROFIT hit for short at 2067.106508928571 | PnL: 1.50% | $2.80 +2025-03-10 16:13:07,052 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3040607142857 | Take profit: 2020.1614089285713 +2025-03-10 16:13:07,099 - INFO - CLOSED short at 2052.89 | PnL: -0.09% | $-0.39 +2025-03-10 16:13:07,100 - INFO - OPENED LONG at 2052.89 | Stop loss: 2042.5764892857142 | Take profit: 2083.7569410714286 +2025-03-10 16:13:07,123 - INFO - CLOSED long at 2053.22 | PnL: 0.02% | $-0.17 +2025-03-10 16:13:07,124 - INFO - OPENED SHORT at 2053.22 | Stop loss: 2063.535160714285 | Take profit: 2022.3481089285713 +2025-03-10 16:13:07,256 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 60.0% in downtrends | Avg Win=$1.98, Avg Loss=$-0.45 +2025-03-10 16:13:07,257 - INFO - Episode 21: Reward=-2.91, Balance=$104.14, Win Rate=42.9%, Trades=7, Episode PnL=$4.35, Total PnL=$83.61, Max Drawdown=1.2%, Pred Accuracy=98.2% +2025-03-10 16:13:07,258 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:07,258 - INFO - Refreshing data for episode 22 +2025-03-10 16:13:07,258 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:07,577 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:07,588 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:07,609 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.8299107142857 | Take profit: 2090.2638589285716 +2025-03-10 16:13:08,383 - INFO - TAKE PROFIT hit for short at 2090.2638589285716 | PnL: 1.50% | $2.74 +2025-03-10 16:13:08,410 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3382607142858 | Take profit: 2058.4188089285717 +2025-03-10 16:13:08,488 - INFO - STOP LOSS hit for short at 2100.3382607142858 | PnL: -0.50% | $-1.21 +2025-03-10 16:13:08,514 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9761107142854 | Take profit: 2071.7852589285712 +2025-03-10 16:13:09,009 - INFO - TAKE PROFIT hit for short at 2071.7852589285712 | PnL: 1.50% | $2.79 +2025-03-10 16:13:09,040 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.590560714286 | Take profit: 2017.5019089285715 +2025-03-10 16:13:09,145 - INFO - CLOSED short at 2053.22 | PnL: -0.24% | $-0.69 +2025-03-10 16:13:09,146 - INFO - OPENED LONG at 2053.22 | Stop loss: 2042.9048392857142 | Take profit: 2084.0918910714286 +2025-03-10 16:13:09,173 - INFO - CLOSED long at 2058.11 | PnL: 0.24% | $0.28 +2025-03-10 16:13:09,173 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.449610714286 | Take profit: 2027.1647589285715 +2025-03-10 16:13:09,197 - INFO - CLOSED short at 2054.03 | PnL: 0.20% | $0.20 +2025-03-10 16:13:09,198 - INFO - OPENED LONG at 2054.03 | Stop loss: 2043.7107892857143 | Take profit: 2084.914041071429 +2025-03-10 16:13:09,227 - INFO - CLOSED long at 2050.18 | PnL: -0.19% | $-0.58 +2025-03-10 16:13:09,228 - INFO - OPENED SHORT at 2050.18 | Stop loss: 2060.479960714286 | Take profit: 2019.3537089285712 +2025-03-10 16:13:09,315 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 60.0% in downtrends | Avg Win=$1.50, Avg Loss=$-0.83 +2025-03-10 16:13:09,316 - INFO - Episode 22: Reward=12.16, Balance=$103.52, Win Rate=57.1%, Trades=7, Episode PnL=$3.83, Total PnL=$87.13, Max Drawdown=1.2%, Pred Accuracy=98.2% +2025-03-10 16:13:09,316 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:09,317 - INFO - Refreshing data for episode 23 +2025-03-10 16:13:09,317 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:09,661 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:09,673 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:09,699 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.8299107142857 | Take profit: 2090.2638589285716 +2025-03-10 16:13:10,547 - INFO - TAKE PROFIT hit for short at 2090.2638589285716 | PnL: 1.50% | $2.74 +2025-03-10 16:13:10,576 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3382607142858 | Take profit: 2058.4188089285717 +2025-03-10 16:13:10,667 - INFO - STOP LOSS hit for short at 2100.3382607142858 | PnL: -0.50% | $-1.21 +2025-03-10 16:13:10,703 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9761107142854 | Take profit: 2071.7852589285712 +2025-03-10 16:13:11,250 - INFO - TAKE PROFIT hit for short at 2071.7852589285712 | PnL: 1.50% | $2.79 +2025-03-10 16:13:11,279 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.590560714286 | Take profit: 2017.5019089285715 +2025-03-10 16:13:11,544 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.76, Avg Loss=$-1.21 +2025-03-10 16:13:11,545 - INFO - Episode 23: Reward=14.20, Balance=$104.32, Win Rate=66.7%, Trades=3, Episode PnL=$4.32, Total PnL=$91.45, Max Drawdown=1.2%, Pred Accuracy=98.2% +2025-03-10 16:13:11,546 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:11,546 - INFO - Refreshing data for episode 24 +2025-03-10 16:13:11,547 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:11,857 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:11,871 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:11,902 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.8301714285712 | Take profit: 2090.263467857143 +2025-03-10 16:13:12,463 - INFO - CLOSED short at 2115.11 | PnL: 0.33% | $0.45 +2025-03-10 16:13:12,485 - INFO - OPENED SHORT at 2114.32 | Stop loss: 2124.9409214285715 | Take profit: 2082.531217857143 +2025-03-10 16:13:13,182 - INFO - TAKE PROFIT hit for short at 2082.531217857143 | PnL: 1.50% | $2.76 +2025-03-10 16:13:13,209 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2230714285715 | Take profit: 2053.404767857143 +2025-03-10 16:13:13,432 - INFO - TAKE PROFIT hit for short at 2053.404767857143 | PnL: 1.50% | $2.83 +2025-03-10 16:13:13,462 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3043214285713 | Take profit: 2020.1610178571427 +2025-03-10 16:13:13,647 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.01, Avg Loss=$0.00 +2025-03-10 16:13:13,648 - INFO - Episode 24: Reward=15.27, Balance=$106.04, Win Rate=100.0%, Trades=3, Episode PnL=$6.04, Total PnL=$97.49, Max Drawdown=0.0%, Pred Accuracy=98.2% +2025-03-10 16:13:13,648 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:13,649 - INFO - Refreshing data for episode 25 +2025-03-10 16:13:13,649 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:13,976 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:13,990 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:14,803 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.8301714285712 | Take profit: 2090.263467857143 +2025-03-10 16:13:15,639 - INFO - TAKE PROFIT hit for short at 2090.263467857143 | PnL: 1.50% | $2.74 +2025-03-10 16:13:15,668 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3385214285718 | Take profit: 2058.418417857143 +2025-03-10 16:13:15,737 - INFO - STOP LOSS hit for short at 2100.3385214285718 | PnL: -0.50% | $-1.21 +2025-03-10 16:13:15,765 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9763714285714 | Take profit: 2071.7848678571427 +2025-03-10 16:13:16,244 - INFO - CLOSED short at 2083.07 | PnL: 0.97% | $1.72 +2025-03-10 16:13:16,265 - INFO - OPENED LONG at 2075.07 | Stop loss: 2064.6453285714288 | Take profit: 2106.2700321428574 +2025-03-10 16:13:16,289 - INFO - CLOSED long at 2067.71 | PnL: -0.35% | $-0.92 +2025-03-10 16:13:16,290 - INFO - OPENED SHORT at 2067.71 | Stop loss: 2078.0978714285716 | Take profit: 2036.620367857143 +2025-03-10 16:13:16,582 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$2.23, Avg Loss=$-1.06 +2025-03-10 16:13:16,583 - INFO - Episode 25: Reward=13.76, Balance=$102.34, Win Rate=50.0%, Trades=4, Episode PnL=$3.25, Total PnL=$99.83, Max Drawdown=1.2%, Pred Accuracy=98.2% +2025-03-10 16:13:16,583 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:16,583 - INFO - Refreshing data for episode 26 +2025-03-10 16:13:16,584 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:16,919 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:16,933 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:16,959 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.8302785714286 | Take profit: 2090.2633071428572 +2025-03-10 16:13:17,712 - INFO - CLOSED short at 2098.28 | PnL: 1.13% | $2.00 +2025-03-10 16:13:17,713 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.739171428572 | Take profit: 2129.828342857143 +2025-03-10 16:13:17,738 - INFO - CLOSED long at 2091.36 | PnL: -0.33% | $-0.86 +2025-03-10 16:13:17,738 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.8662285714286 | Take profit: 2059.9154571428576 +2025-03-10 16:13:17,938 - INFO - STOP LOSS hit for short at 2101.8662285714286 | PnL: -0.50% | $-1.19 +2025-03-10 16:13:17,963 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9764785714283 | Take profit: 2071.784707142857 +2025-03-10 16:13:18,463 - INFO - TAKE PROFIT hit for short at 2071.784707142857 | PnL: 1.50% | $2.74 +2025-03-10 16:13:18,501 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.590928571429 | Take profit: 2017.5013571428574 +2025-03-10 16:13:18,744 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.37, Avg Loss=$-1.02 +2025-03-10 16:13:18,745 - INFO - Episode 26: Reward=14.28, Balance=$102.70, Win Rate=50.0%, Trades=4, Episode PnL=$3.56, Total PnL=$102.53, Max Drawdown=0.0%, Pred Accuracy=98.3% +2025-03-10 16:13:18,745 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:18,746 - INFO - Refreshing data for episode 27 +2025-03-10 16:13:18,746 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:19,068 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:19,083 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:19,111 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.8302785714286 | Take profit: 2090.2633071428572 +2025-03-10 16:13:19,862 - INFO - TAKE PROFIT hit for short at 2090.2633071428572 | PnL: 1.50% | $2.74 +2025-03-10 16:13:19,881 - INFO - OPENED LONG at 2089.84 | Stop loss: 2079.3413714285716 | Take profit: 2121.261742857143 +2025-03-10 16:13:19,906 - INFO - CLOSED long at 2096.19 | PnL: 0.30% | $0.41 +2025-03-10 16:13:19,906 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.7203785714287 | Take profit: 2064.673007142857 +2025-03-10 16:13:20,536 - INFO - TAKE PROFIT hit for short at 2064.673007142857 | PnL: 1.50% | $2.83 +2025-03-10 16:13:20,560 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.304428571428 | Take profit: 2020.1608571428571 +2025-03-10 16:13:20,773 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.99, Avg Loss=$0.00 +2025-03-10 16:13:20,775 - INFO - Episode 27: Reward=14.98, Balance=$105.98, Win Rate=100.0%, Trades=3, Episode PnL=$5.57, Total PnL=$108.51, Max Drawdown=0.0%, Pred Accuracy=98.3% +2025-03-10 16:13:20,775 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:20,776 - INFO - Refreshing data for episode 28 +2025-03-10 16:13:20,776 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:21,087 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:21,101 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:21,126 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.8302821428574 | Take profit: 2090.2633017857142 +2025-03-10 16:13:21,149 - INFO - CLOSED short at 2122.24 | PnL: -0.00% | $-0.20 +2025-03-10 16:13:21,174 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.131832142857 | Take profit: 2088.5986517857145 +2025-03-10 16:13:22,324 - INFO - TAKE PROFIT hit for short at 2088.5986517857145 | PnL: 1.50% | $2.74 +2025-03-10 16:13:22,357 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0323321428573 | Take profit: 2049.2971517857145 +2025-03-10 16:13:22,587 - INFO - TAKE PROFIT hit for short at 2049.2971517857145 | PnL: 1.50% | $2.81 +2025-03-10 16:13:22,616 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.304432142857 | Take profit: 2020.1608517857144 +2025-03-10 16:13:22,838 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.77, Avg Loss=$-0.20 +2025-03-10 16:13:22,839 - INFO - Episode 28: Reward=12.80, Balance=$105.35, Win Rate=66.7%, Trades=3, Episode PnL=$5.35, Total PnL=$113.85, Max Drawdown=0.2%, Pred Accuracy=98.3% +2025-03-10 16:13:22,839 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:22,840 - INFO - Refreshing data for episode 29 +2025-03-10 16:13:22,840 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:23,179 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:23,191 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:23,217 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.8304749999998 | Take profit: 2090.2630125 +2025-03-10 16:13:23,579 - INFO - CLOSED short at 2115.52 | PnL: 0.31% | $0.42 +2025-03-10 16:13:23,611 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.3733749999997 | Take profit: 2082.9543125 +2025-03-10 16:13:23,895 - INFO - CLOSED short at 2098.24 | PnL: 0.78% | $1.34 +2025-03-10 16:13:23,895 - INFO - OPENED LONG at 2098.24 | Stop loss: 2087.6991749999997 | Take profit: 2129.7880375 +2025-03-10 16:13:23,920 - INFO - CLOSED long at 2098.28 | PnL: 0.00% | $-0.20 +2025-03-10 16:13:23,920 - INFO - OPENED SHORT at 2098.28 | Stop loss: 2108.821025 | Take profit: 2066.7313625 +2025-03-10 16:13:24,144 - INFO - CLOSED short at 2104.22 | PnL: -0.28% | $-0.76 +2025-03-10 16:13:24,145 - INFO - OPENED LONG at 2104.22 | Stop loss: 2093.6492749999998 | Take profit: 2135.8577375 +2025-03-10 16:13:24,172 - INFO - CLOSED long at 2104.67 | PnL: 0.02% | $-0.15 +2025-03-10 16:13:24,173 - INFO - OPENED SHORT at 2104.67 | Stop loss: 2115.242975 | Take profit: 2073.0255125000003 +2025-03-10 16:13:24,245 - INFO - CLOSED short at 2099.22 | PnL: 0.26% | $0.31 +2025-03-10 16:13:24,272 - INFO - OPENED SHORT at 2094.16 | Stop loss: 2104.6804249999996 | Take profit: 2062.6731624999998 +2025-03-10 16:13:24,650 - INFO - TAKE PROFIT hit for short at 2062.6731624999998 | PnL: 1.50% | $2.77 +2025-03-10 16:13:24,675 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.304625 | Take profit: 2020.1605625 +2025-03-10 16:13:24,906 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.21, Avg Loss=$-0.37 +2025-03-10 16:13:24,906 - INFO - Episode 29: Reward=13.04, Balance=$103.72, Win Rate=57.1%, Trades=7, Episode PnL=$4.07, Total PnL=$117.58, Max Drawdown=0.0%, Pred Accuracy=98.4% +2025-03-10 16:13:24,907 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:24,907 - INFO - Refreshing data for episode 30 +2025-03-10 16:13:24,908 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:25,216 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:25,226 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:26,075 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.830753571429 | Take profit: 2090.262594642857 +2025-03-10 16:13:26,684 - INFO - CLOSED short at 2114.57 | PnL: 0.36% | $0.50 +2025-03-10 16:13:26,710 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.1827535714287 | Take profit: 2080.8065946428574 +2025-03-10 16:13:26,739 - INFO - CLOSED short at 2113.28 | PnL: -0.03% | $-0.26 +2025-03-10 16:13:26,765 - INFO - OPENED SHORT at 2114.5 | Stop loss: 2125.1224035714285 | Take profit: 2082.7076446428573 +2025-03-10 16:13:27,276 - INFO - CLOSED short at 2098.66 | PnL: 0.75% | $1.27 +2025-03-10 16:13:27,277 - INFO - OPENED LONG at 2098.66 | Stop loss: 2088.1167964285714 | Take profit: 2130.214755357143 +2025-03-10 16:13:27,302 - INFO - CLOSED long at 2090.59 | PnL: -0.38% | $-0.96 +2025-03-10 16:13:27,303 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.092853571429 | Take profit: 2059.156294642857 +2025-03-10 16:13:27,603 - INFO - TAKE PROFIT hit for short at 2059.156294642857 | PnL: 1.50% | $2.76 +2025-03-10 16:13:27,629 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.304903571429 | Take profit: 2020.1601446428572 +2025-03-10 16:13:27,874 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.51, Avg Loss=$-0.61 +2025-03-10 16:13:27,875 - INFO - Episode 30: Reward=13.37, Balance=$103.31, Win Rate=60.0%, Trades=5, Episode PnL=$4.27, Total PnL=$120.89, Max Drawdown=0.3%, Pred Accuracy=98.4% +2025-03-10 16:13:28,020 - INFO - Model saved to checkpoints/trading_agent_episode_30.pt +2025-03-10 16:13:28,021 - INFO - Checkpoint saved at episode 30 +2025-03-10 16:13:28,021 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:29,039 - INFO - Visualization saved for episode 30 +2025-03-10 16:13:31,082 - INFO - Visualization saved for episode 30 +2025-03-10 16:13:31,103 - INFO - Refreshing data for episode 31 +2025-03-10 16:13:31,104 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:31,417 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:31,428 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:31,569 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.901382142857 | Take profit: 2090.331126785714 +2025-03-10 16:13:32,333 - INFO - TAKE PROFIT hit for short at 2090.331126785714 | PnL: 1.50% | $2.74 +2025-03-10 16:13:32,359 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.339382142857 | Take profit: 2058.4171267857146 +2025-03-10 16:13:32,435 - INFO - STOP LOSS hit for short at 2100.339382142857 | PnL: -0.50% | $-1.21 +2025-03-10 16:13:32,460 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9772321428572 | Take profit: 2071.783576785714 +2025-03-10 16:13:32,908 - INFO - TAKE PROFIT hit for short at 2071.783576785714 | PnL: 1.50% | $2.78 +2025-03-10 16:13:32,932 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5916821428573 | Take profit: 2017.5002267857146 +2025-03-10 16:13:33,160 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.76, Avg Loss=$-1.21 +2025-03-10 16:13:33,162 - INFO - Episode 31: Reward=13.98, Balance=$104.32, Win Rate=66.7%, Trades=3, Episode PnL=$4.32, Total PnL=$125.20, Max Drawdown=1.2%, Pred Accuracy=98.5% +2025-03-10 16:13:33,162 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:33,163 - INFO - Refreshing data for episode 32 +2025-03-10 16:13:33,163 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:33,466 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:33,476 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:33,494 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.831032142857 | Take profit: 2090.2621767857145 +2025-03-10 16:13:33,586 - INFO - CLOSED short at 2118.0 | PnL: 0.20% | $0.19 +2025-03-10 16:13:33,586 - INFO - OPENED LONG at 2118.0 | Stop loss: 2107.359817857143 | Take profit: 2149.845273214286 +2025-03-10 16:13:33,628 - INFO - CLOSED long at 2121.42 | PnL: 0.16% | $0.12 +2025-03-10 16:13:33,628 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0772821428573 | Take profit: 2089.5234267857145 +2025-03-10 16:13:33,830 - INFO - CLOSED short at 2116.81 | PnL: 0.22% | $0.23 +2025-03-10 16:13:33,830 - INFO - OPENED LONG at 2116.81 | Stop loss: 2106.175767857143 | Take profit: 2148.6374232142857 +2025-03-10 16:13:33,859 - INFO - CLOSED long at 2114.78 | PnL: -0.10% | $-0.38 +2025-03-10 16:13:33,859 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.404082142857 | Take profit: 2082.9830267857146 +2025-03-10 16:13:34,016 - INFO - CLOSED short at 2114.32 | PnL: 0.02% | $-0.15 +2025-03-10 16:13:34,043 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.193032142857 | Take profit: 2082.7761767857146 +2025-03-10 16:13:34,175 - INFO - CLOSED short at 2098.24 | PnL: 0.77% | $1.31 +2025-03-10 16:13:34,203 - INFO - OPENED SHORT at 2098.28 | Stop loss: 2108.821582142857 | Take profit: 2066.7305267857146 +2025-03-10 16:13:34,958 - INFO - TAKE PROFIT hit for short at 2066.7305267857146 | PnL: 1.50% | $2.78 +2025-03-10 16:13:34,985 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305182142857 | Take profit: 2020.1597267857144 +2025-03-10 16:13:35,233 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$0.93, Avg Loss=$-0.27 +2025-03-10 16:13:35,234 - INFO - Episode 32: Reward=15.04, Balance=$104.09, Win Rate=71.4%, Trades=7, Episode PnL=$4.36, Total PnL=$129.30, Max Drawdown=0.0%, Pred Accuracy=98.5% +2025-03-10 16:13:35,235 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:35,235 - INFO - Refreshing data for episode 33 +2025-03-10 16:13:35,235 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:35,539 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:35,552 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:35,577 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.831032142857 | Take profit: 2090.2621767857145 +2025-03-10 16:13:36,400 - INFO - TAKE PROFIT hit for short at 2090.2621767857145 | PnL: 1.50% | $2.74 +2025-03-10 16:13:36,426 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.339382142857 | Take profit: 2058.4171267857146 +2025-03-10 16:13:36,501 - INFO - STOP LOSS hit for short at 2100.339382142857 | PnL: -0.50% | $-1.21 +2025-03-10 16:13:36,530 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9772321428572 | Take profit: 2071.783576785714 +2025-03-10 16:13:37,008 - INFO - TAKE PROFIT hit for short at 2071.783576785714 | PnL: 1.50% | $2.78 +2025-03-10 16:13:37,032 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5916821428573 | Take profit: 2017.5002267857146 +2025-03-10 16:13:37,278 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.76, Avg Loss=$-1.21 +2025-03-10 16:13:37,279 - INFO - Episode 33: Reward=14.16, Balance=$104.32, Win Rate=66.7%, Trades=3, Episode PnL=$4.32, Total PnL=$133.61, Max Drawdown=1.2%, Pred Accuracy=98.6% +2025-03-10 16:13:37,279 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:37,280 - INFO - Refreshing data for episode 34 +2025-03-10 16:13:37,280 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:37,706 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:37,717 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:37,747 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.831032142857 | Take profit: 2090.2621767857145 +2025-03-10 16:13:38,567 - INFO - TAKE PROFIT hit for short at 2090.2621767857145 | PnL: 1.50% | $2.74 +2025-03-10 16:13:38,594 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.339382142857 | Take profit: 2058.4171267857146 +2025-03-10 16:13:38,675 - INFO - STOP LOSS hit for short at 2100.339382142857 | PnL: -0.50% | $-1.21 +2025-03-10 16:13:38,701 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9772321428572 | Take profit: 2071.783576785714 +2025-03-10 16:13:38,724 - INFO - CLOSED short at 2104.22 | PnL: -0.04% | $-0.27 +2025-03-10 16:13:38,725 - INFO - OPENED LONG at 2104.22 | Stop loss: 2093.6487178571424 | Take profit: 2135.8585732142856 +2025-03-10 16:13:38,751 - INFO - CLOSED long at 2104.67 | PnL: 0.02% | $-0.16 +2025-03-10 16:13:38,752 - INFO - OPENED SHORT at 2104.67 | Stop loss: 2115.2435321428575 | Take profit: 2073.0246767857143 +2025-03-10 16:13:39,210 - INFO - TAKE PROFIT hit for short at 2073.0246767857143 | PnL: 1.50% | $2.77 +2025-03-10 16:13:39,266 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305182142857 | Take profit: 2020.1597267857144 +2025-03-10 16:13:39,486 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$2.76, Avg Loss=$-0.55 +2025-03-10 16:13:39,487 - INFO - Episode 34: Reward=10.92, Balance=$103.88, Win Rate=40.0%, Trades=5, Episode PnL=$4.03, Total PnL=$137.49, Max Drawdown=1.2%, Pred Accuracy=98.6% +2025-03-10 16:13:39,487 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:39,488 - INFO - Refreshing data for episode 35 +2025-03-10 16:13:39,489 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:39,807 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:39,823 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:40,727 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.831032142857 | Take profit: 2090.2621767857145 +2025-03-10 16:13:41,649 - INFO - TAKE PROFIT hit for short at 2090.2621767857145 | PnL: 1.50% | $2.74 +2025-03-10 16:13:41,682 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.339382142857 | Take profit: 2058.4171267857146 +2025-03-10 16:13:41,766 - INFO - STOP LOSS hit for short at 2100.339382142857 | PnL: -0.50% | $-1.21 +2025-03-10 16:13:41,814 - INFO - OPENED SHORT at 2104.22 | Stop loss: 2114.7912821428567 | Take profit: 2072.581426785714 +2025-03-10 16:13:42,322 - INFO - TAKE PROFIT hit for short at 2072.581426785714 | PnL: 1.50% | $2.78 +2025-03-10 16:13:42,381 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305182142857 | Take profit: 2020.1597267857144 +2025-03-10 16:13:42,625 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.76, Avg Loss=$-1.21 +2025-03-10 16:13:42,626 - INFO - Episode 35: Reward=13.64, Balance=$104.32, Win Rate=66.7%, Trades=3, Episode PnL=$4.32, Total PnL=$141.81, Max Drawdown=1.2%, Pred Accuracy=98.7% +2025-03-10 16:13:42,626 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:42,627 - INFO - Refreshing data for episode 36 +2025-03-10 16:13:42,627 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:42,958 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:42,971 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:43,002 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.831032142857 | Take profit: 2090.2621767857145 +2025-03-10 16:13:43,480 - INFO - CLOSED short at 2116.06 | PnL: 0.29% | $0.37 +2025-03-10 16:13:43,507 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.836232142857 | Take profit: 2083.406576785714 +2025-03-10 16:13:44,263 - INFO - TAKE PROFIT hit for short at 2083.406576785714 | PnL: 1.50% | $2.75 +2025-03-10 16:13:44,289 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2239321428574 | Take profit: 2053.4034767857142 +2025-03-10 16:13:44,498 - INFO - TAKE PROFIT hit for short at 2053.4034767857142 | PnL: 1.50% | $2.83 +2025-03-10 16:13:44,543 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.777732142857 | Take profit: 2012.7820767857143 +2025-03-10 16:13:44,613 - INFO - STOP LOSS hit for short at 2053.777732142857 | PnL: -0.50% | $-1.25 +2025-03-10 16:13:44,636 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.350332142857 | Take profit: 2023.1442767857145 +2025-03-10 16:13:44,732 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.98, Avg Loss=$-1.25 +2025-03-10 16:13:44,733 - INFO - Episode 36: Reward=14.96, Balance=$104.70, Win Rate=75.0%, Trades=4, Episode PnL=$4.70, Total PnL=$146.51, Max Drawdown=1.2%, Pred Accuracy=98.7% +2025-03-10 16:13:44,734 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:44,734 - INFO - Refreshing data for episode 37 +2025-03-10 16:13:44,734 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:45,047 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:45,058 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:45,190 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.6401821428567 | Take profit: 2086.154726785714 +2025-03-10 16:13:45,462 - INFO - CLOSED short at 2116.81 | PnL: 0.06% | $-0.09 +2025-03-10 16:13:45,462 - INFO - OPENED LONG at 2116.81 | Stop loss: 2106.175767857143 | Take profit: 2148.6374232142857 +2025-03-10 16:13:45,518 - INFO - CLOSED long at 2115.52 | PnL: -0.06% | $-0.31 +2025-03-10 16:13:45,519 - INFO - OPENED SHORT at 2115.52 | Stop loss: 2126.147782142857 | Take profit: 2083.7119267857142 +2025-03-10 16:13:46,529 - INFO - TAKE PROFIT hit for short at 2083.7119267857142 | PnL: 1.50% | $2.73 +2025-03-10 16:13:46,558 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2239321428574 | Take profit: 2053.4034767857142 +2025-03-10 16:13:46,733 - INFO - TAKE PROFIT hit for short at 2053.4034767857142 | PnL: 1.50% | $2.81 +2025-03-10 16:13:46,780 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.777732142857 | Take profit: 2012.7820767857143 +2025-03-10 16:13:46,859 - INFO - CLOSED short at 2058.11 | PnL: -0.71% | $-1.67 +2025-03-10 16:13:46,860 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.769267857143 | Take profit: 2089.0569232142857 +2025-03-10 16:13:46,936 - INFO - STOP LOSS hit for long at 2047.769267857143 | PnL: -0.50% | $-1.22 +2025-03-10 16:13:46,978 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 40.0% in downtrends | Avg Win=$2.77, Avg Loss=$-0.82 +2025-03-10 16:13:46,979 - INFO - Episode 37: Reward=3.97, Balance=$102.25, Win Rate=33.3%, Trades=6, Episode PnL=$2.56, Total PnL=$148.75, Max Drawdown=2.7%, Pred Accuracy=98.8% +2025-03-10 16:13:46,979 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:46,980 - INFO - Refreshing data for episode 38 +2025-03-10 16:13:46,980 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:47,303 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:47,317 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:47,505 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0772821428573 | Take profit: 2089.5234267857145 +2025-03-10 16:13:48,151 - INFO - TAKE PROFIT hit for short at 2089.5234267857145 | PnL: 1.50% | $2.74 +2025-03-10 16:13:48,176 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.339382142857 | Take profit: 2058.4171267857146 +2025-03-10 16:13:48,251 - INFO - STOP LOSS hit for short at 2100.339382142857 | PnL: -0.50% | $-1.21 +2025-03-10 16:13:48,294 - INFO - OPENED SHORT at 2104.22 | Stop loss: 2114.7912821428567 | Take profit: 2072.581426785714 +2025-03-10 16:13:48,580 - INFO - CLOSED short at 2084.75 | PnL: 0.93% | $1.64 +2025-03-10 16:13:48,581 - INFO - OPENED LONG at 2084.75 | Stop loss: 2074.2760678571426 | Take profit: 2116.0965232142858 +2025-03-10 16:13:48,628 - INFO - CLOSED long at 2084.25 | PnL: -0.02% | $-0.25 +2025-03-10 16:13:48,628 - INFO - OPENED SHORT at 2084.25 | Stop loss: 2094.721432142857 | Take profit: 2052.9109767857144 +2025-03-10 16:13:48,768 - INFO - TAKE PROFIT hit for short at 2052.9109767857144 | PnL: 1.50% | $2.82 +2025-03-10 16:13:48,790 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305182142857 | Take profit: 2020.1597267857144 +2025-03-10 16:13:48,995 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.40, Avg Loss=$-0.73 +2025-03-10 16:13:48,996 - INFO - Episode 38: Reward=12.45, Balance=$105.74, Win Rate=60.0%, Trades=5, Episode PnL=$5.99, Total PnL=$154.50, Max Drawdown=1.2%, Pred Accuracy=98.9% +2025-03-10 16:13:48,996 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:48,997 - INFO - Refreshing data for episode 39 +2025-03-10 16:13:48,997 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:49,320 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:49,331 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:49,356 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.831032142857 | Take profit: 2090.2621767857145 +2025-03-10 16:13:49,549 - INFO - CLOSED short at 2116.52 | PnL: 0.27% | $0.32 +2025-03-10 16:13:49,550 - INFO - OPENED LONG at 2116.52 | Stop loss: 2105.887217857143 | Take profit: 2148.3430732142856 +2025-03-10 16:13:49,636 - INFO - CLOSED long at 2124.9 | PnL: 0.40% | $0.58 +2025-03-10 16:13:49,636 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.574682142857 | Take profit: 2092.9512267857144 +2025-03-10 16:13:50,070 - INFO - TAKE PROFIT hit for short at 2092.9512267857144 | PnL: 1.50% | $2.77 +2025-03-10 16:13:50,096 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.6004321428577 | Take profit: 2068.4739767857145 +2025-03-10 16:13:50,696 - INFO - CLOSED short at 2084.11 | PnL: 0.76% | $1.33 +2025-03-10 16:13:50,742 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.495532142857 | Take profit: 2043.8686767857146 +2025-03-10 16:13:50,843 - INFO - TAKE PROFIT hit for short at 2043.8686767857146 | PnL: 1.50% | $2.88 +2025-03-10 16:13:50,870 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.204632142857 | Take profit: 2022.0213767857142 +2025-03-10 16:13:51,048 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.58, Avg Loss=$0.00 +2025-03-10 16:13:51,048 - INFO - Episode 39: Reward=16.65, Balance=$107.88, Win Rate=100.0%, Trades=5, Episode PnL=$7.30, Total PnL=$162.38, Max Drawdown=0.0%, Pred Accuracy=98.9% +2025-03-10 16:13:51,215 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 16:13:51,216 - INFO - New best PnL model saved: $7.30 +2025-03-10 16:13:51,216 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:51,216 - INFO - Refreshing data for episode 40 +2025-03-10 16:13:51,217 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:51,529 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:51,544 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:52,384 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.831032142857 | Take profit: 2090.2621767857145 +2025-03-10 16:13:53,084 - INFO - TAKE PROFIT hit for short at 2090.2621767857145 | PnL: 1.50% | $2.74 +2025-03-10 16:13:53,100 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.339382142857 | Take profit: 2058.4171267857146 +2025-03-10 16:13:53,190 - INFO - STOP LOSS hit for short at 2100.339382142857 | PnL: -0.50% | $-1.21 +2025-03-10 16:13:53,217 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9772321428572 | Take profit: 2071.783576785714 +2025-03-10 16:13:53,490 - INFO - CLOSED short at 2090.99 | PnL: 0.59% | $0.97 +2025-03-10 16:13:53,490 - INFO - OPENED LONG at 2090.99 | Stop loss: 2080.4848678571425 | Take profit: 2122.4301232142857 +2025-03-10 16:13:53,516 - INFO - CLOSED long at 2084.95 | PnL: -0.29% | $-0.78 +2025-03-10 16:13:53,516 - INFO - OPENED SHORT at 2084.95 | Stop loss: 2095.424932142857 | Take profit: 2053.6004767857144 +2025-03-10 16:13:53,757 - INFO - TAKE PROFIT hit for short at 2053.6004767857144 | PnL: 1.50% | $2.79 +2025-03-10 16:13:53,784 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305182142857 | Take profit: 2020.1597267857144 +2025-03-10 16:13:53,981 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.17, Avg Loss=$-0.99 +2025-03-10 16:13:53,982 - INFO - Episode 40: Reward=13.59, Balance=$104.52, Win Rate=60.0%, Trades=5, Episode PnL=$5.29, Total PnL=$166.90, Max Drawdown=1.2%, Pred Accuracy=99.0% +2025-03-10 16:13:54,120 - INFO - Model saved to checkpoints/trading_agent_episode_40.pt +2025-03-10 16:13:54,121 - INFO - Checkpoint saved at episode 40 +2025-03-10 16:13:54,121 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:55,131 - INFO - Visualization saved for episode 40 +2025-03-10 16:13:57,136 - INFO - Visualization saved for episode 40 +2025-03-10 16:13:57,149 - INFO - Refreshing data for episode 41 +2025-03-10 16:13:57,150 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:57,502 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:57,513 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:57,591 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.831032142857 | Take profit: 2090.2621767857145 +2025-03-10 16:13:57,915 - INFO - CLOSED short at 2124.77 | PnL: -0.12% | $-0.43 +2025-03-10 16:13:57,939 - INFO - OPENED SHORT at 2120.26 | Stop loss: 2130.9114821428575 | Take profit: 2088.3808267857144 +2025-03-10 16:13:58,198 - INFO - CLOSED short at 2113.28 | PnL: 0.33% | $0.45 +2025-03-10 16:13:58,198 - INFO - OPENED LONG at 2113.28 | Stop loss: 2102.663417857143 | Take profit: 2145.054473214286 +2025-03-10 16:13:58,242 - INFO - CLOSED long at 2115.07 | PnL: 0.08% | $-0.03 +2025-03-10 16:13:58,243 - INFO - OPENED SHORT at 2115.07 | Stop loss: 2125.6955321428572 | Take profit: 2083.2686767857144 +2025-03-10 16:13:58,528 - INFO - CLOSED short at 2104.67 | PnL: 0.49% | $0.77 +2025-03-10 16:13:58,550 - INFO - OPENED SHORT at 2105.26 | Stop loss: 2115.836482142857 | Take profit: 2073.6058267857143 +2025-03-10 16:13:58,979 - INFO - TAKE PROFIT hit for short at 2073.6058267857143 | PnL: 1.50% | $2.76 +2025-03-10 16:13:59,007 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5916821428573 | Take profit: 2017.5002267857146 +2025-03-10 16:13:59,055 - INFO - CLOSED short at 2043.51 | PnL: 0.23% | $0.27 +2025-03-10 16:13:59,056 - INFO - OPENED LONG at 2043.51 | Stop loss: 2033.2422678571427 | Take profit: 2074.2379232142857 +2025-03-10 16:13:59,082 - INFO - CLOSED long at 2052.89 | PnL: 0.46% | $0.73 +2025-03-10 16:13:59,082 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.204632142857 | Take profit: 2022.0213767857142 +2025-03-10 16:13:59,236 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$0.99, Avg Loss=$-0.23 +2025-03-10 16:13:59,237 - INFO - Episode 41: Reward=15.29, Balance=$104.51, Win Rate=71.4%, Trades=7, Episode PnL=$3.81, Total PnL=$171.40, Max Drawdown=0.4%, Pred Accuracy=99.1% +2025-03-10 16:13:59,238 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:13:59,238 - INFO - Refreshing data for episode 42 +2025-03-10 16:13:59,238 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:13:59,542 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:13:59,552 - INFO - Initialized environment with 100 candles +2025-03-10 16:13:59,579 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.831032142857 | Take profit: 2090.2621767857145 +2025-03-10 16:13:59,885 - INFO - CLOSED short at 2124.77 | PnL: -0.12% | $-0.43 +2025-03-10 16:13:59,914 - INFO - OPENED SHORT at 2120.26 | Stop loss: 2130.9114821428575 | Take profit: 2088.3808267857144 +2025-03-10 16:14:00,290 - INFO - CLOSED short at 2115.07 | PnL: 0.24% | $0.28 +2025-03-10 16:14:00,290 - INFO - OPENED LONG at 2115.07 | Stop loss: 2104.444467857143 | Take profit: 2146.871323214286 +2025-03-10 16:14:00,323 - INFO - CLOSED long at 2098.24 | PnL: -0.80% | $-1.75 +2025-03-10 16:14:00,324 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.7813821428567 | Take profit: 2066.691126785714 +2025-03-10 16:14:01,128 - INFO - TAKE PROFIT hit for short at 2066.691126785714 | PnL: 1.50% | $2.69 +2025-03-10 16:14:01,156 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305182142857 | Take profit: 2020.1597267857144 +2025-03-10 16:14:01,371 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.49, Avg Loss=$-1.09 +2025-03-10 16:14:01,372 - INFO - Episode 42: Reward=10.44, Balance=$100.79, Win Rate=50.0%, Trades=4, Episode PnL=$2.54, Total PnL=$172.19, Max Drawdown=0.4%, Pred Accuracy=99.2% +2025-03-10 16:14:01,372 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:14:01,372 - INFO - Refreshing data for episode 43 +2025-03-10 16:14:01,373 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:01,686 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:01,698 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:01,731 - INFO - OPENED SHORT at 2122.17 | Stop loss: 2132.831032142857 | Take profit: 2090.2621767857145 +2025-03-10 16:14:02,583 - INFO - TAKE PROFIT hit for short at 2090.2621767857145 | PnL: 1.50% | $2.74 +2025-03-10 16:14:02,633 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.721132142857 | Take profit: 2064.671876785714 +2025-03-10 16:14:03,180 - INFO - CLOSED short at 2067.71 | PnL: 1.36% | $2.53 +2025-03-10 16:14:03,181 - INFO - OPENED LONG at 2067.71 | Stop loss: 2057.321267857143 | Take profit: 2098.8009232142854 +2025-03-10 16:14:03,208 - INFO - CLOSED long at 2048.3 | PnL: -0.94% | $-2.14 +2025-03-10 16:14:03,209 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5916821428573 | Take profit: 2017.5002267857146 +2025-03-10 16:14:03,428 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.63, Avg Loss=$-2.14 +2025-03-10 16:14:03,429 - INFO - Episode 43: Reward=13.00, Balance=$103.13, Win Rate=66.7%, Trades=3, Episode PnL=$5.27, Total PnL=$175.33, Max Drawdown=0.0%, Pred Accuracy=99.2% +2025-03-10 16:14:03,430 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:14:03,430 - INFO - Refreshing data for episode 44 +2025-03-10 16:14:03,430 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:03,747 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:03,756 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:03,808 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1313964285714 | Take profit: 2088.599305357143 +2025-03-10 16:14:04,093 - INFO - CLOSED short at 2128.33 | PnL: -0.37% | $-0.92 +2025-03-10 16:14:04,152 - INFO - OPENED SHORT at 2120.26 | Stop loss: 2130.9102964285717 | Take profit: 2088.382605357143 +2025-03-10 16:14:04,871 - INFO - CLOSED short at 2099.22 | PnL: 0.99% | $1.73 +2025-03-10 16:14:04,896 - INFO - OPENED SHORT at 2094.16 | Stop loss: 2104.679796428571 | Take profit: 2062.6741053571427 +2025-03-10 16:14:05,290 - INFO - TAKE PROFIT hit for short at 2062.6741053571427 | PnL: 1.50% | $2.77 +2025-03-10 16:14:05,339 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.7765464285717 | Take profit: 2012.7838553571428 +2025-03-10 16:14:05,423 - INFO - STOP LOSS hit for short at 2053.7765464285717 | PnL: -0.50% | $-1.22 +2025-03-10 16:14:05,452 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.3491464285717 | Take profit: 2023.146055357143 +2025-03-10 16:14:05,566 - INFO - CLOSED short at 2044.1 | PnL: 0.48% | $0.77 +2025-03-10 16:14:05,593 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.75, Avg Loss=$-1.07 +2025-03-10 16:14:05,595 - INFO - Episode 44: Reward=14.40, Balance=$103.12, Win Rate=60.0%, Trades=5, Episode PnL=$3.12, Total PnL=$178.45, Max Drawdown=1.2%, Pred Accuracy=99.3% +2025-03-10 16:14:05,595 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:14:05,595 - INFO - Refreshing data for episode 45 +2025-03-10 16:14:05,596 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:05,899 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:05,910 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:06,756 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.9001964285712 | Take profit: 2090.3329053571424 +2025-03-10 16:14:07,665 - INFO - TAKE PROFIT hit for short at 2090.3329053571424 | PnL: 1.50% | $2.74 +2025-03-10 16:14:07,711 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.7199464285713 | Take profit: 2064.6736553571427 +2025-03-10 16:14:07,914 - INFO - CLOSED short at 2099.22 | PnL: -0.14% | $-0.49 +2025-03-10 16:14:07,915 - INFO - OPENED LONG at 2099.22 | Stop loss: 2088.6749035714283 | Take profit: 2130.7817946428568 +2025-03-10 16:14:07,941 - INFO - CLOSED long at 2094.16 | PnL: -0.24% | $-0.68 +2025-03-10 16:14:07,941 - INFO - OPENED SHORT at 2094.16 | Stop loss: 2104.679796428571 | Take profit: 2062.6741053571427 +2025-03-10 16:14:08,324 - INFO - TAKE PROFIT hit for short at 2062.6741053571427 | PnL: 1.50% | $2.79 +2025-03-10 16:14:08,347 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3039964285713 | Take profit: 2020.161505357143 +2025-03-10 16:14:08,617 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.76, Avg Loss=$-0.59 +2025-03-10 16:14:08,619 - INFO - Episode 45: Reward=9.97, Balance=$104.36, Win Rate=50.0%, Trades=4, Episode PnL=$5.04, Total PnL=$182.80, Max Drawdown=0.0%, Pred Accuracy=99.4% +2025-03-10 16:14:08,619 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:14:08,620 - INFO - Refreshing data for episode 46 +2025-03-10 16:14:08,620 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:08,928 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:08,938 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:08,969 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.900532142857 | Take profit: 2090.332401785714 +2025-03-10 16:14:09,860 - INFO - TAKE PROFIT hit for short at 2090.332401785714 | PnL: 1.50% | $2.74 +2025-03-10 16:14:09,915 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.7202821428573 | Take profit: 2064.6731517857143 +2025-03-10 16:14:09,970 - INFO - CLOSED short at 2102.83 | PnL: -0.32% | $-0.84 +2025-03-10 16:14:09,971 - INFO - OPENED LONG at 2102.83 | Stop loss: 2092.266517857143 | Take profit: 2134.4464482142857 +2025-03-10 16:14:10,004 - INFO - CLOSED long at 2103.41 | PnL: 0.03% | $-0.14 +2025-03-10 16:14:10,005 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.976382142857 | Take profit: 2071.784851785714 +2025-03-10 16:14:10,027 - INFO - CLOSED short at 2104.22 | PnL: -0.04% | $-0.28 +2025-03-10 16:14:10,027 - INFO - OPENED LONG at 2104.22 | Stop loss: 2093.6495678571428 | Take profit: 2135.8572982142855 +2025-03-10 16:14:10,055 - INFO - CLOSED long at 2104.67 | PnL: 0.02% | $-0.16 +2025-03-10 16:14:10,056 - INFO - OPENED SHORT at 2104.67 | Stop loss: 2115.242682142857 | Take profit: 2073.0259517857144 +2025-03-10 16:14:10,328 - INFO - CLOSED short at 2084.75 | PnL: 0.95% | $1.68 +2025-03-10 16:14:10,359 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.454332142857 | Take profit: 2049.7110017857144 +2025-03-10 16:14:10,548 - INFO - TAKE PROFIT hit for short at 2049.7110017857144 | PnL: 1.50% | $2.82 +2025-03-10 16:14:10,575 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.304332142857 | Take profit: 2020.1610017857142 +2025-03-10 16:14:10,785 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$2.41, Avg Loss=$-0.35 +2025-03-10 16:14:10,785 - INFO - Episode 46: Reward=23.01, Balance=$105.83, Win Rate=42.9%, Trades=7, Episode PnL=$6.13, Total PnL=$188.64, Max Drawdown=0.0%, Pred Accuracy=99.4% +2025-03-10 16:14:10,785 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:14:10,785 - INFO - Refreshing data for episode 47 +2025-03-10 16:14:10,785 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:11,100 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:11,111 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:11,139 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.900532142857 | Take profit: 2090.332401785714 +2025-03-10 16:14:11,617 - INFO - CLOSED short at 2114.32 | PnL: 0.37% | $0.53 +2025-03-10 16:14:11,642 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.1921821428573 | Take profit: 2082.777451785714 +2025-03-10 16:14:12,261 - INFO - TAKE PROFIT hit for short at 2082.777451785714 | PnL: 1.50% | $2.76 +2025-03-10 16:14:12,295 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.223082142857 | Take profit: 2053.4047517857143 +2025-03-10 16:14:12,474 - INFO - TAKE PROFIT hit for short at 2053.4047517857143 | PnL: 1.50% | $2.83 +2025-03-10 16:14:12,504 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.304332142857 | Take profit: 2020.1610017857142 +2025-03-10 16:14:12,554 - INFO - CLOSED short at 2052.89 | PnL: -0.09% | $-0.40 +2025-03-10 16:14:12,554 - INFO - OPENED LONG at 2052.89 | Stop loss: 2042.5762178571426 | Take profit: 2083.7573482142857 +2025-03-10 16:14:12,582 - INFO - CLOSED long at 2053.22 | PnL: 0.02% | $-0.17 +2025-03-10 16:14:12,582 - INFO - OPENED SHORT at 2053.22 | Stop loss: 2063.5354321428567 | Take profit: 2022.3477017857142 +2025-03-10 16:14:12,677 - INFO - CLOSED short at 2046.76 | PnL: 0.31% | $0.44 +2025-03-10 16:14:12,678 - INFO - OPENED LONG at 2046.76 | Stop loss: 2036.476867857143 | Take profit: 2077.535398214286 +2025-03-10 16:14:12,700 - INFO - CLOSED long at 2043.95 | PnL: -0.14% | $-0.49 +2025-03-10 16:14:12,700 - INFO - OPENED SHORT at 2043.95 | Stop loss: 2054.219082142857 | Take profit: 2013.2167517857145 +2025-03-10 16:14:12,744 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$1.64, Avg Loss=$-0.35 +2025-03-10 16:14:12,745 - INFO - Episode 47: Reward=25.38, Balance=$105.50, Win Rate=57.1%, Trades=7, Episode PnL=$6.17, Total PnL=$194.14, Max Drawdown=0.0%, Pred Accuracy=99.4% +2025-03-10 16:14:12,746 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:14:12,746 - INFO - Refreshing data for episode 48 +2025-03-10 16:14:12,747 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:13,062 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:13,071 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:13,100 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.900532142857 | Take profit: 2090.332401785714 +2025-03-10 16:14:13,243 - INFO - CLOSED short at 2116.52 | PnL: 0.27% | $0.33 +2025-03-10 16:14:13,267 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.664432142857 | Take profit: 2087.1607017857145 +2025-03-10 16:14:13,379 - INFO - CLOSED short at 2120.26 | PnL: -0.06% | $-0.31 +2025-03-10 16:14:13,401 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.443382142857 | Take profit: 2084.9838517857143 +2025-03-10 16:14:14,128 - INFO - CLOSED short at 2096.96 | PnL: 0.94% | $1.64 +2025-03-10 16:14:14,131 - INFO - OPENED LONG at 2096.96 | Stop loss: 2086.4258678571427 | Take profit: 2128.4883982142856 +2025-03-10 16:14:14,163 - INFO - CLOSED long at 2098.66 | PnL: 0.08% | $-0.04 +2025-03-10 16:14:14,164 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.202632142857 | Take profit: 2067.106101785714 +2025-03-10 16:14:14,283 - INFO - CLOSED short at 2084.75 | PnL: 0.66% | $1.12 +2025-03-10 16:14:14,283 - INFO - OPENED LONG at 2084.75 | Stop loss: 2074.276917857143 | Take profit: 2116.0952482142857 +2025-03-10 16:14:14,312 - INFO - CLOSED long at 2081.0 | PnL: -0.18% | $-0.56 +2025-03-10 16:14:14,312 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.454332142857 | Take profit: 2049.7110017857144 +2025-03-10 16:14:14,482 - INFO - TAKE PROFIT hit for short at 2049.7110017857144 | PnL: 1.50% | $2.80 +2025-03-10 16:14:14,509 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.304332142857 | Take profit: 2020.1610017857142 +2025-03-10 16:14:14,596 - INFO - CLOSED short at 2058.11 | PnL: -0.35% | $-0.92 +2025-03-10 16:14:14,621 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.349482142857 | Take profit: 2023.1455517857146 +2025-03-10 16:14:14,734 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.47, Avg Loss=$-0.46 +2025-03-10 16:14:14,735 - INFO - Episode 48: Reward=26.05, Balance=$104.06, Win Rate=50.0%, Trades=8, Episode PnL=$4.66, Total PnL=$198.20, Max Drawdown=0.9%, Pred Accuracy=99.4% +2025-03-10 16:14:14,736 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:14:14,736 - INFO - Refreshing data for episode 49 +2025-03-10 16:14:14,738 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:15,063 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:15,079 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:15,109 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.900532142857 | Take profit: 2090.332401785714 +2025-03-10 16:14:15,787 - INFO - CLOSED short at 2091.36 | PnL: 1.46% | $2.65 +2025-03-10 16:14:15,811 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5995821428573 | Take profit: 2068.4752517857146 +2025-03-10 16:14:16,450 - INFO - TAKE PROFIT hit for short at 2068.4752517857146 | PnL: 1.50% | $2.82 +2025-03-10 16:14:16,481 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.590832142857 | Take profit: 2017.5015017857145 +2025-03-10 16:14:16,617 - INFO - CLOSED short at 2058.11 | PnL: -0.48% | $-1.19 +2025-03-10 16:14:16,647 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.349482142857 | Take profit: 2023.1455517857146 +2025-03-10 16:14:16,753 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.73, Avg Loss=$-1.19 +2025-03-10 16:14:16,755 - INFO - Episode 49: Reward=27.99, Balance=$104.27, Win Rate=66.7%, Trades=3, Episode PnL=$4.27, Total PnL=$202.47, Max Drawdown=1.1%, Pred Accuracy=99.4% +2025-03-10 16:14:16,755 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:14:16,755 - INFO - Early stopping triggered after 50 episodes without improvement +2025-03-10 16:14:16,904 - INFO - Model saved to models/trading_agent_final.pt +2025-03-10 16:14:17,918 - INFO - Training results saved to training_results.png +2025-03-10 16:14:18,061 - INFO - Model saved to models/trading_agent_continuous_0.pt +2025-03-10 16:14:23,065 - INFO - Starting training batch 2 +2025-03-10 16:14:23,065 - INFO - Refreshing data for new training batch +2025-03-10 16:14:23,066 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:23,395 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 16:14:23,406 - INFO - Initialized environment with 500 candles +2025-03-10 16:14:23,406 - INFO - Updated environment with fresh candles +2025-03-10 16:14:23,406 - INFO - Starting training on device: cuda +2025-03-10 16:14:23,408 - INFO - Loading best model from models/trading_agent_best_pnl.pt to resume training +2025-03-10 16:14:23,408 - INFO - Loading model from models/trading_agent_best_pnl.pt +2025-03-10 16:14:23,640 - INFO - Model loaded successfully with weights_only=True +2025-03-10 16:14:23,649 - INFO - Resumed with best metrics - Reward: 202.74, PnL: $7.30, Win Rate: 66.7% +2025-03-10 16:14:23,653 - INFO - Refreshing data for episode 0 +2025-03-10 16:14:23,654 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:23,982 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:23,993 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:24,878 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.900532142857 | Take profit: 2090.332401785714 +2025-03-10 16:14:25,442 - INFO - CLOSED short at 2115.11 | PnL: 0.34% | $0.46 +2025-03-10 16:14:25,476 - INFO - OPENED SHORT at 2114.32 | Stop loss: 2124.940932142857 | Take profit: 2082.5312017857145 +2025-03-10 16:14:26,215 - INFO - TAKE PROFIT hit for short at 2082.5312017857145 | PnL: 1.50% | $2.76 +2025-03-10 16:14:26,240 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.223082142857 | Take profit: 2053.4047517857143 +2025-03-10 16:14:26,449 - INFO - TAKE PROFIT hit for short at 2053.4047517857143 | PnL: 1.50% | $2.83 +2025-03-10 16:14:26,473 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.304332142857 | Take profit: 2020.1610017857142 +2025-03-10 16:14:26,698 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.02, Avg Loss=$0.00 +2025-03-10 16:14:26,699 - INFO - Episode 0: Reward=29.02, Balance=$106.05, Win Rate=100.0%, Trades=3, Episode PnL=$6.05, Total PnL=$208.52, Max Drawdown=0.0%, Pred Accuracy=99.8% +2025-03-10 16:14:26,852 - INFO - Model saved to checkpoints/trading_agent_episode_0.pt +2025-03-10 16:14:26,853 - INFO - Checkpoint saved at episode 0 +2025-03-10 16:14:27,772 - INFO - Visualization saved for episode 0 +2025-03-10 16:14:29,664 - INFO - Visualization saved for episode 0 +2025-03-10 16:14:29,675 - INFO - Refreshing data for episode 1 +2025-03-10 16:14:29,675 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:30,005 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:30,015 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:30,110 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.9013678571428 | Take profit: 2090.3311482142853 +2025-03-10 16:14:30,274 - INFO - CLOSED short at 2121.42 | PnL: 0.04% | $-0.12 +2025-03-10 16:14:30,301 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.152767857143 | Take profit: 2084.696948214286 +2025-03-10 16:14:30,394 - INFO - STOP LOSS hit for short at 2127.152767857143 | PnL: -0.50% | $-1.18 +2025-03-10 16:14:30,416 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4440178571426 | Take profit: 2092.8231982142856 +2025-03-10 16:14:30,527 - INFO - CLOSED short at 2114.75 | PnL: 0.47% | $0.72 +2025-03-10 16:14:30,527 - INFO - OPENED LONG at 2114.75 | Stop loss: 2104.1260821428573 | Take profit: 2146.546501785714 +2025-03-10 16:14:30,549 - INFO - CLOSED long at 2116.06 | PnL: 0.06% | $-0.07 +2025-03-10 16:14:30,550 - INFO - OPENED SHORT at 2116.06 | Stop loss: 2126.6904678571427 | Take profit: 2084.2438482142857 +2025-03-10 16:14:31,241 - INFO - TAKE PROFIT hit for short at 2084.2438482142857 | PnL: 1.50% | $2.72 +2025-03-10 16:14:31,263 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2239178571426 | Take profit: 2053.4034982142857 +2025-03-10 16:14:31,456 - INFO - TAKE PROFIT hit for short at 2053.4034982142857 | PnL: 1.50% | $2.80 +2025-03-10 16:14:31,479 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305167857143 | Take profit: 2020.1597482142859 +2025-03-10 16:14:31,501 - INFO - CLOSED short at 2043.51 | PnL: 0.37% | $0.54 +2025-03-10 16:14:31,501 - INFO - OPENED LONG at 2043.51 | Stop loss: 2033.2422821428572 | Take profit: 2074.2379017857143 +2025-03-10 16:14:31,528 - INFO - CLOSED long at 2052.89 | PnL: 0.46% | $0.74 +2025-03-10 16:14:31,529 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.2046178571427 | Take profit: 2022.0213982142857 +2025-03-10 16:14:31,553 - INFO - CLOSED short at 2053.22 | PnL: -0.02% | $-0.24 +2025-03-10 16:14:31,553 - INFO - OPENED LONG at 2053.22 | Stop loss: 2042.903732142857 | Take profit: 2084.093551785714 +2025-03-10 16:14:31,580 - INFO - CLOSED long at 2058.11 | PnL: 0.24% | $0.29 +2025-03-10 16:14:31,581 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.450717857143 | Take profit: 2027.1630982142858 +2025-03-10 16:14:31,733 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.30, Avg Loss=$-0.40 +2025-03-10 16:14:31,734 - INFO - Episode 1: Reward=28.62, Balance=$106.20, Win Rate=60.0%, Trades=10, Episode PnL=$5.25, Total PnL=$214.72, Max Drawdown=1.3%, Pred Accuracy=99.8% +2025-03-10 16:14:31,735 - INFO - Refreshing data for episode 2 +2025-03-10 16:14:31,735 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:32,050 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:32,059 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:32,080 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.9013678571428 | Take profit: 2090.3311482142853 +2025-03-10 16:14:32,392 - INFO - CLOSED short at 2114.78 | PnL: 0.35% | $0.49 +2025-03-10 16:14:32,413 - INFO - OPENED SHORT at 2115.52 | Stop loss: 2126.147767857143 | Take profit: 2083.7119482142857 +2025-03-10 16:14:33,211 - INFO - TAKE PROFIT hit for short at 2083.7119482142857 | PnL: 1.50% | $2.76 +2025-03-10 16:14:33,235 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2239178571426 | Take profit: 2053.4034982142857 +2025-03-10 16:14:33,434 - INFO - TAKE PROFIT hit for short at 2053.4034982142857 | PnL: 1.50% | $2.83 +2025-03-10 16:14:33,460 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305167857143 | Take profit: 2020.1597482142859 +2025-03-10 16:14:33,683 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.03, Avg Loss=$0.00 +2025-03-10 16:14:33,684 - INFO - Episode 2: Reward=29.09, Balance=$106.08, Win Rate=100.0%, Trades=3, Episode PnL=$6.08, Total PnL=$220.79, Max Drawdown=0.0%, Pred Accuracy=99.9% +2025-03-10 16:14:33,684 - INFO - Refreshing data for episode 3 +2025-03-10 16:14:33,685 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:34,005 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:34,016 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:34,041 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.9013678571428 | Take profit: 2090.3311482142853 +2025-03-10 16:14:34,333 - INFO - CLOSED short at 2116.81 | PnL: 0.26% | $0.30 +2025-03-10 16:14:34,359 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.4040678571428 | Take profit: 2082.983048214286 +2025-03-10 16:14:34,850 - INFO - CLOSED short at 2100.0 | PnL: 0.70% | $1.17 +2025-03-10 16:14:34,878 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.394317857143 | Take profit: 2071.2122982142855 +2025-03-10 16:14:35,366 - INFO - TAKE PROFIT hit for short at 2071.2122982142855 | PnL: 1.50% | $2.78 +2025-03-10 16:14:35,388 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.591667857143 | Take profit: 2017.5002482142859 +2025-03-10 16:14:35,624 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.42, Avg Loss=$0.00 +2025-03-10 16:14:35,625 - INFO - Episode 3: Reward=30.47, Balance=$104.26, Win Rate=100.0%, Trades=3, Episode PnL=$4.26, Total PnL=$225.05, Max Drawdown=0.0%, Pred Accuracy=99.9% +2025-03-10 16:14:35,625 - INFO - Refreshing data for episode 4 +2025-03-10 16:14:35,626 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:35,932 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:35,941 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:36,017 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.192867857143 | Take profit: 2088.6566482142857 +2025-03-10 16:14:36,610 - INFO - CLOSED short at 2098.28 | PnL: 1.05% | $1.86 +2025-03-10 16:14:36,636 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.866967857143 | Take profit: 2059.914348214286 +2025-03-10 16:14:36,793 - INFO - STOP LOSS hit for short at 2101.866967857143 | PnL: -0.50% | $-1.20 +2025-03-10 16:14:36,817 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9772178571425 | Take profit: 2071.7835982142856 +2025-03-10 16:14:37,307 - INFO - TAKE PROFIT hit for short at 2071.7835982142856 | PnL: 1.50% | $2.76 +2025-03-10 16:14:37,330 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.591667857143 | Take profit: 2017.5002482142859 +2025-03-10 16:14:37,634 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$2.31, Avg Loss=$-1.20 +2025-03-10 16:14:37,635 - INFO - Episode 4: Reward=29.46, Balance=$103.42, Win Rate=66.7%, Trades=3, Episode PnL=$3.42, Total PnL=$228.47, Max Drawdown=1.2%, Pred Accuracy=99.9% +2025-03-10 16:14:37,635 - INFO - Refreshing data for episode 5 +2025-03-10 16:14:37,636 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:37,978 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:37,988 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:39,067 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.9013678571428 | Take profit: 2090.3311482142853 +2025-03-10 16:14:39,328 - INFO - CLOSED short at 2128.33 | PnL: -0.29% | $-0.76 +2025-03-10 16:14:39,355 - INFO - OPENED LONG at 2124.77 | Stop loss: 2114.095982142857 | Take profit: 2156.7168017857143 +2025-03-10 16:14:39,385 - INFO - CLOSED long at 2120.26 | PnL: -0.21% | $-0.61 +2025-03-10 16:14:39,386 - INFO - OPENED SHORT at 2120.26 | Stop loss: 2130.911467857143 | Take profit: 2088.380848214286 +2025-03-10 16:14:40,272 - INFO - TAKE PROFIT hit for short at 2088.380848214286 | PnL: 1.50% | $2.70 +2025-03-10 16:14:40,295 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0330678571427 | Take profit: 2049.2960482142857 +2025-03-10 16:14:40,535 - INFO - TAKE PROFIT hit for short at 2049.2960482142857 | PnL: 1.50% | $2.78 +2025-03-10 16:14:40,561 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305167857143 | Take profit: 2020.1597482142859 +2025-03-10 16:14:40,668 - INFO - CLOSED short at 2058.11 | PnL: -0.35% | $-0.91 +2025-03-10 16:14:40,668 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.7692821428573 | Take profit: 2089.056901785714 +2025-03-10 16:14:40,688 - INFO - CLOSED long at 2054.03 | PnL: -0.20% | $-0.60 +2025-03-10 16:14:40,688 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.350317857143 | Take profit: 2023.144298214286 +2025-03-10 16:14:40,817 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.74, Avg Loss=$-0.72 +2025-03-10 16:14:40,817 - INFO - Episode 5: Reward=19.89, Balance=$102.61, Win Rate=33.3%, Trades=6, Episode PnL=$3.82, Total PnL=$231.08, Max Drawdown=0.8%, Pred Accuracy=99.9% +2025-03-10 16:14:40,818 - INFO - Refreshing data for episode 6 +2025-03-10 16:14:40,819 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:41,371 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:41,381 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:41,412 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.9013678571428 | Take profit: 2090.3311482142853 +2025-03-10 16:14:41,996 - INFO - CLOSED short at 2112.57 | PnL: 0.46% | $0.69 +2025-03-10 16:14:41,996 - INFO - OPENED LONG at 2112.57 | Stop loss: 2101.956982142857 | Take profit: 2144.3338017857145 +2025-03-10 16:14:42,026 - INFO - CLOSED long at 2113.28 | PnL: 0.03% | $-0.13 +2025-03-10 16:14:42,026 - INFO - OPENED SHORT at 2113.28 | Stop loss: 2123.896567857143 | Take profit: 2081.5055482142857 +2025-03-10 16:14:42,614 - INFO - CLOSED short at 2084.95 | PnL: 1.34% | $2.44 +2025-03-10 16:14:42,614 - INFO - OPENED LONG at 2084.95 | Stop loss: 2074.475082142857 | Take profit: 2116.2995017857143 +2025-03-10 16:14:42,641 - INFO - CLOSED long at 2080.58 | PnL: -0.21% | $-0.62 +2025-03-10 16:14:42,641 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0330678571427 | Take profit: 2049.2960482142857 +2025-03-10 16:14:42,829 - INFO - TAKE PROFIT hit for short at 2049.2960482142857 | PnL: 1.50% | $2.81 +2025-03-10 16:14:42,852 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305167857143 | Take profit: 2020.1597482142859 +2025-03-10 16:14:43,081 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.98, Avg Loss=$-0.38 +2025-03-10 16:14:43,083 - INFO - Episode 6: Reward=28.51, Balance=$105.19, Win Rate=60.0%, Trades=5, Episode PnL=$5.94, Total PnL=$236.27, Max Drawdown=0.0%, Pred Accuracy=99.9% +2025-03-10 16:14:43,083 - INFO - Refreshing data for episode 7 +2025-03-10 16:14:43,084 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:43,409 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:43,419 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:43,442 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.9013678571428 | Take profit: 2090.3311482142853 +2025-03-10 16:14:43,629 - INFO - CLOSED short at 2119.02 | PnL: 0.15% | $0.10 +2025-03-10 16:14:43,629 - INFO - OPENED LONG at 2119.02 | Stop loss: 2108.3747321428573 | Take profit: 2150.8805517857145 +2025-03-10 16:14:43,655 - INFO - CLOSED long at 2120.96 | PnL: 0.09% | $-0.02 +2025-03-10 16:14:43,655 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.614967857143 | Take profit: 2089.070348214286 +2025-03-10 16:14:44,199 - INFO - TAKE PROFIT hit for short at 2089.070348214286 | PnL: 1.50% | $2.74 +2025-03-10 16:14:44,228 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.339367857143 | Take profit: 2058.4171482142856 +2025-03-10 16:14:44,296 - INFO - STOP LOSS hit for short at 2100.339367857143 | PnL: -0.50% | $-1.21 +2025-03-10 16:14:44,318 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9772178571425 | Take profit: 2071.7835982142856 +2025-03-10 16:14:44,806 - INFO - TAKE PROFIT hit for short at 2071.7835982142856 | PnL: 1.50% | $2.79 +2025-03-10 16:14:44,833 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.591667857143 | Take profit: 2017.5002482142859 +2025-03-10 16:14:45,086 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$1.88, Avg Loss=$-0.61 +2025-03-10 16:14:45,086 - INFO - Episode 7: Reward=27.60, Balance=$104.41, Win Rate=60.0%, Trades=5, Episode PnL=$4.42, Total PnL=$240.67, Max Drawdown=1.2%, Pred Accuracy=99.9% +2025-03-10 16:14:45,086 - INFO - Refreshing data for episode 8 +2025-03-10 16:14:45,094 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:45,426 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:45,436 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:45,462 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.90145 | Take profit: 2090.3310249999995 +2025-03-10 16:14:45,825 - INFO - CLOSED short at 2114.75 | PnL: 0.35% | $0.49 +2025-03-10 16:14:45,826 - INFO - OPENED LONG at 2114.75 | Stop loss: 2104.126 | Take profit: 2146.546625 +2025-03-10 16:14:45,852 - INFO - CLOSED long at 2116.06 | PnL: 0.06% | $-0.07 +2025-03-10 16:14:45,852 - INFO - OPENED SHORT at 2116.06 | Stop loss: 2126.69055 | Take profit: 2084.243725 +2025-03-10 16:14:45,873 - INFO - CLOSED short at 2115.21 | PnL: 0.04% | $-0.12 +2025-03-10 16:14:45,873 - INFO - OPENED LONG at 2115.21 | Stop loss: 2104.5837 | Take profit: 2147.013525 +2025-03-10 16:14:45,903 - INFO - CLOSED long at 2114.1 | PnL: -0.05% | $-0.30 +2025-03-10 16:14:45,903 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.72075 | Take profit: 2082.313125 +2025-03-10 16:14:46,164 - INFO - CLOSED short at 2098.28 | PnL: 0.75% | $1.27 +2025-03-10 16:14:46,164 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.73835 | Take profit: 2129.829575 +2025-03-10 16:14:46,188 - INFO - CLOSED long at 2091.36 | PnL: -0.33% | $-0.85 +2025-03-10 16:14:46,188 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.86705 | Take profit: 2059.914225 +2025-03-10 16:14:46,361 - INFO - STOP LOSS hit for short at 2101.86705 | PnL: -0.50% | $-1.18 +2025-03-10 16:14:46,391 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9773 | Take profit: 2071.7834749999997 +2025-03-10 16:14:46,851 - INFO - TAKE PROFIT hit for short at 2071.7834749999997 | PnL: 1.50% | $2.72 +2025-03-10 16:14:46,871 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5917500000005 | Take profit: 2017.500125 +2025-03-10 16:14:47,125 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 60.0% in downtrends | Avg Win=$1.49, Avg Loss=$-0.50 +2025-03-10 16:14:47,126 - INFO - Episode 8: Reward=24.47, Balance=$101.96, Win Rate=37.5%, Trades=8, Episode PnL=$3.18, Total PnL=$242.63, Max Drawdown=0.8%, Pred Accuracy=99.8% +2025-03-10 16:14:47,127 - INFO - Refreshing data for episode 9 +2025-03-10 16:14:47,127 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:47,598 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:47,608 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:47,658 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.13265 | Take profit: 2088.597425 +2025-03-10 16:14:47,912 - INFO - CLOSED short at 2116.81 | PnL: 0.17% | $0.14 +2025-03-10 16:14:47,941 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.4041500000003 | Take profit: 2082.9829250000003 +2025-03-10 16:14:48,371 - INFO - CLOSED short at 2096.19 | PnL: 0.88% | $1.52 +2025-03-10 16:14:48,402 - INFO - OPENED SHORT at 2100.0 | Stop loss: 2110.5502500000002 | Take profit: 2068.424625 +2025-03-10 16:14:48,658 - INFO - CLOSED short at 2098.66 | PnL: 0.06% | $-0.07 +2025-03-10 16:14:48,682 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.0932000000003 | Take profit: 2059.155775 +2025-03-10 16:14:48,823 - INFO - CLOSED short at 2084.25 | PnL: 0.30% | $0.40 +2025-03-10 16:14:48,846 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8471 | Take profit: 2054.014075 +2025-03-10 16:14:48,956 - INFO - TAKE PROFIT hit for short at 2054.014075 | PnL: 1.50% | $2.80 +2025-03-10 16:14:48,977 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.30525 | Take profit: 2020.159625 +2025-03-10 16:14:49,066 - INFO - CLOSED short at 2058.11 | PnL: -0.35% | $-0.91 +2025-03-10 16:14:49,067 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.7692000000002 | Take profit: 2089.057025 +2025-03-10 16:14:49,088 - INFO - CLOSED long at 2054.03 | PnL: -0.20% | $-0.60 +2025-03-10 16:14:49,088 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.3504000000003 | Take profit: 2023.1441750000001 +2025-03-10 16:14:49,193 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.22, Avg Loss=$-0.53 +2025-03-10 16:14:49,194 - INFO - Episode 9: Reward=12.37, Balance=$103.28, Win Rate=57.1%, Trades=7, Episode PnL=$3.88, Total PnL=$245.91, Max Drawdown=0.1%, Pred Accuracy=99.7% +2025-03-10 16:14:49,194 - INFO - Refreshing data for episode 10 +2025-03-10 16:14:49,195 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:49,521 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:49,531 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:50,313 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.90145 | Take profit: 2090.3310249999995 +2025-03-10 16:14:50,479 - INFO - CLOSED short at 2119.02 | PnL: 0.15% | $0.10 +2025-03-10 16:14:50,479 - INFO - OPENED LONG at 2119.02 | Stop loss: 2108.37465 | Take profit: 2150.8806750000003 +2025-03-10 16:14:50,501 - INFO - CLOSED long at 2120.96 | PnL: 0.09% | $-0.02 +2025-03-10 16:14:50,501 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.61505 | Take profit: 2089.070225 +2025-03-10 16:14:51,157 - INFO - TAKE PROFIT hit for short at 2089.070225 | PnL: 1.50% | $2.74 +2025-03-10 16:14:51,192 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.33945 | Take profit: 2058.417025 +2025-03-10 16:14:51,275 - INFO - STOP LOSS hit for short at 2100.33945 | PnL: -0.50% | $-1.21 +2025-03-10 16:14:51,305 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9773 | Take profit: 2071.7834749999997 +2025-03-10 16:14:51,794 - INFO - CLOSED short at 2084.11 | PnL: 0.92% | $1.62 +2025-03-10 16:14:51,819 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.5356 | Take profit: 2051.748575 +2025-03-10 16:14:51,908 - INFO - TAKE PROFIT hit for short at 2051.748575 | PnL: 1.50% | $2.83 +2025-03-10 16:14:51,945 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.30525 | Take profit: 2020.159625 +2025-03-10 16:14:52,267 - INFO - CLOSED short at 2044.1 | PnL: 0.34% | $0.49 +2025-03-10 16:14:52,298 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$1.56, Avg Loss=$-0.61 +2025-03-10 16:14:52,299 - INFO - Episode 10: Reward=16.76, Balance=$106.56, Win Rate=71.4%, Trades=7, Episode PnL=$6.58, Total PnL=$252.47, Max Drawdown=1.2%, Pred Accuracy=99.5% +2025-03-10 16:14:52,484 - INFO - Model saved to checkpoints/trading_agent_episode_10.pt +2025-03-10 16:14:52,485 - INFO - Checkpoint saved at episode 10 +2025-03-10 16:14:53,495 - INFO - Visualization saved for episode 10 +2025-03-10 16:14:55,358 - INFO - Visualization saved for episode 10 +2025-03-10 16:14:55,374 - INFO - Refreshing data for episode 11 +2025-03-10 16:14:55,375 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:55,688 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:55,697 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:55,787 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.901621428571 | Take profit: 2090.3307678571427 +2025-03-10 16:14:56,413 - INFO - CLOSED short at 2113.28 | PnL: 0.42% | $0.63 +2025-03-10 16:14:56,413 - INFO - OPENED LONG at 2113.28 | Stop loss: 2102.663178571429 | Take profit: 2145.0548321428573 +2025-03-10 16:14:56,442 - INFO - CLOSED long at 2114.5 | PnL: 0.06% | $-0.08 +2025-03-10 16:14:56,442 - INFO - OPENED SHORT at 2114.5 | Stop loss: 2125.1229214285718 | Take profit: 2082.7068678571427 +2025-03-10 16:14:57,027 - INFO - TAKE PROFIT hit for short at 2082.7068678571427 | PnL: 1.50% | $2.76 +2025-03-10 16:14:57,052 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2241714285715 | Take profit: 2053.403117857143 +2025-03-10 16:14:57,244 - INFO - TAKE PROFIT hit for short at 2053.403117857143 | PnL: 1.50% | $2.83 +2025-03-10 16:14:57,273 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305421428571 | Take profit: 2020.159367857143 +2025-03-10 16:14:57,477 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.07, Avg Loss=$-0.08 +2025-03-10 16:14:57,478 - INFO - Episode 11: Reward=14.01, Balance=$106.13, Win Rate=75.0%, Trades=4, Episode PnL=$6.22, Total PnL=$258.61, Max Drawdown=0.0%, Pred Accuracy=99.2% +2025-03-10 16:14:57,479 - INFO - Refreshing data for episode 12 +2025-03-10 16:14:57,479 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:57,817 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:57,826 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:57,852 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.901621428571 | Take profit: 2090.3307678571427 +2025-03-10 16:14:57,952 - INFO - CLOSED short at 2121.8 | PnL: 0.02% | $-0.15 +2025-03-10 16:14:57,985 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0775214285713 | Take profit: 2089.523067857143 +2025-03-10 16:14:58,381 - INFO - CLOSED short at 2112.57 | PnL: 0.42% | $0.62 +2025-03-10 16:14:58,402 - INFO - OPENED SHORT at 2113.28 | Stop loss: 2123.8968214285715 | Take profit: 2081.505167857143 +2025-03-10 16:14:58,926 - INFO - CLOSED short at 2090.99 | PnL: 1.05% | $1.87 +2025-03-10 16:14:58,926 - INFO - OPENED LONG at 2090.99 | Stop loss: 2080.4846285714284 | Take profit: 2122.430482142857 +2025-03-10 16:14:58,950 - INFO - CLOSED long at 2084.95 | PnL: -0.29% | $-0.78 +2025-03-10 16:14:58,950 - INFO - OPENED SHORT at 2084.95 | Stop loss: 2095.425171428571 | Take profit: 2053.600117857143 +2025-03-10 16:14:59,197 - INFO - TAKE PROFIT hit for short at 2053.600117857143 | PnL: 1.50% | $2.78 +2025-03-10 16:14:59,232 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305421428571 | Take profit: 2020.159367857143 +2025-03-10 16:14:59,259 - INFO - CLOSED short at 2043.51 | PnL: 0.37% | $0.54 +2025-03-10 16:14:59,259 - INFO - OPENED LONG at 2043.51 | Stop loss: 2033.2420285714286 | Take profit: 2074.2382821428573 +2025-03-10 16:14:59,292 - INFO - CLOSED long at 2052.89 | PnL: 0.46% | $0.73 +2025-03-10 16:14:59,292 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.204871428571 | Take profit: 2022.0210178571426 +2025-03-10 16:14:59,341 - INFO - CLOSED short at 2058.11 | PnL: -0.25% | $-0.73 +2025-03-10 16:14:59,373 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.3505714285716 | Take profit: 2023.1439178571432 +2025-03-10 16:14:59,507 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.31, Avg Loss=$-0.55 +2025-03-10 16:14:59,508 - INFO - Episode 12: Reward=14.76, Balance=$104.89, Win Rate=62.5%, Trades=8, Episode PnL=$4.93, Total PnL=$263.49, Max Drawdown=0.2%, Pred Accuracy=98.8% +2025-03-10 16:14:59,508 - INFO - Refreshing data for episode 13 +2025-03-10 16:14:59,509 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:14:59,848 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:14:59,858 - INFO - Initialized environment with 100 candles +2025-03-10 16:14:59,883 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.901621428571 | Take profit: 2090.3307678571427 +2025-03-10 16:14:59,976 - INFO - CLOSED short at 2121.8 | PnL: 0.02% | $-0.15 +2025-03-10 16:14:59,976 - INFO - OPENED LONG at 2121.8 | Stop loss: 2111.1405785714287 | Take profit: 2153.7026321428575 +2025-03-10 16:15:00,001 - INFO - CLOSED long at 2121.42 | PnL: -0.02% | $-0.23 +2025-03-10 16:15:00,001 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0775214285713 | Take profit: 2089.523067857143 +2025-03-10 16:15:00,529 - INFO - CLOSED short at 2098.28 | PnL: 1.09% | $1.93 +2025-03-10 16:15:00,530 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.7381785714288 | Take profit: 2129.829832142857 +2025-03-10 16:15:00,554 - INFO - CLOSED long at 2091.36 | PnL: -0.33% | $-0.85 +2025-03-10 16:15:00,554 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.8672214285716 | Take profit: 2059.9139678571432 +2025-03-10 16:15:00,741 - INFO - STOP LOSS hit for short at 2101.8672214285716 | PnL: -0.50% | $-1.18 +2025-03-10 16:15:00,770 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9774714285713 | Take profit: 2071.783217857143 +2025-03-10 16:15:00,931 - INFO - CLOSED short at 2094.16 | PnL: 0.44% | $0.66 +2025-03-10 16:15:00,931 - INFO - OPENED LONG at 2094.16 | Stop loss: 2083.6387785714282 | Take profit: 2125.648032142857 +2025-03-10 16:15:00,956 - INFO - CLOSED long at 2096.96 | PnL: 0.13% | $0.07 +2025-03-10 16:15:00,957 - INFO - OPENED SHORT at 2096.96 | Stop loss: 2107.4952214285713 | Take profit: 2065.429967857143 +2025-03-10 16:15:01,274 - INFO - TAKE PROFIT hit for short at 2065.429967857143 | PnL: 1.50% | $2.75 +2025-03-10 16:15:01,298 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305421428571 | Take profit: 2020.159367857143 +2025-03-10 16:15:01,546 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 60.0% in downtrends | Avg Win=$1.35, Avg Loss=$-0.61 +2025-03-10 16:15:01,547 - INFO - Episode 13: Reward=-0.35, Balance=$102.98, Win Rate=50.0%, Trades=8, Episode PnL=$4.00, Total PnL=$266.47, Max Drawdown=0.5%, Pred Accuracy=97.9% +2025-03-10 16:15:01,548 - INFO - Refreshing data for episode 14 +2025-03-10 16:15:01,548 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:01,870 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:01,880 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:01,903 - INFO - OPENED SHORT at 2122.24 | Stop loss: 2132.901621428571 | Take profit: 2090.3307678571427 +2025-03-10 16:15:02,232 - INFO - CLOSED short at 2114.78 | PnL: 0.35% | $0.49 +2025-03-10 16:15:02,257 - INFO - OPENED SHORT at 2115.52 | Stop loss: 2126.1480214285716 | Take profit: 2083.7115678571427 +2025-03-10 16:15:03,084 - INFO - TAKE PROFIT hit for short at 2083.7115678571427 | PnL: 1.50% | $2.76 +2025-03-10 16:15:03,122 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2241714285715 | Take profit: 2053.403117857143 +2025-03-10 16:15:03,311 - INFO - TAKE PROFIT hit for short at 2053.403117857143 | PnL: 1.50% | $2.83 +2025-03-10 16:15:03,336 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305421428571 | Take profit: 2020.159367857143 +2025-03-10 16:15:03,615 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.03, Avg Loss=$0.00 +2025-03-10 16:15:03,616 - INFO - Episode 14: Reward=1.49, Balance=$106.08, Win Rate=100.0%, Trades=3, Episode PnL=$6.08, Total PnL=$272.55, Max Drawdown=0.0%, Pred Accuracy=97.7% +2025-03-10 16:15:03,616 - INFO - Refreshing data for episode 15 +2025-03-10 16:15:03,617 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:04,029 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:04,039 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:05,061 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.12925 | Take profit: 2088.602525 +2025-03-10 16:15:05,863 - INFO - CLOSED short at 2089.04 | PnL: 1.48% | $2.71 +2025-03-10 16:15:05,863 - INFO - OPENED LONG at 2089.04 | Stop loss: 2078.54795 | Take profit: 2120.445875 +2025-03-10 16:15:05,890 - INFO - CLOSED long at 2089.84 | PnL: 0.04% | $-0.12 +2025-03-10 16:15:05,890 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.33605 | Take profit: 2058.422125 +2025-03-10 16:15:05,987 - INFO - STOP LOSS hit for short at 2100.33605 | PnL: -0.50% | $-1.21 +2025-03-10 16:15:06,019 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9739 | Take profit: 2071.788575 +2025-03-10 16:15:06,103 - INFO - CLOSED short at 2105.26 | PnL: -0.09% | $-0.37 +2025-03-10 16:15:06,104 - INFO - OPENED LONG at 2105.26 | Stop loss: 2094.68685 | Take profit: 2136.9091750000002 +2025-03-10 16:15:06,130 - INFO - CLOSED long at 2099.63 | PnL: -0.27% | $-0.73 +2025-03-10 16:15:06,130 - INFO - OPENED SHORT at 2099.63 | Stop loss: 2110.175 | Take profit: 2068.065275 +2025-03-10 16:15:06,532 - INFO - TAKE PROFIT hit for short at 2068.065275 | PnL: 1.50% | $2.75 +2025-03-10 16:15:06,559 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.58835 | Take profit: 2017.505225 +2025-03-10 16:15:06,859 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$2.73, Avg Loss=$-0.61 +2025-03-10 16:15:06,860 - INFO - Episode 15: Reward=-1.89, Balance=$103.03, Win Rate=33.3%, Trades=6, Episode PnL=$3.88, Total PnL=$275.58, Max Drawdown=0.0%, Pred Accuracy=98.1% +2025-03-10 16:15:06,860 - INFO - Refreshing data for episode 16 +2025-03-10 16:15:06,861 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:07,212 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:07,223 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:07,252 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.130003571429 | Take profit: 2088.601394642857 +2025-03-10 16:15:08,293 - INFO - CLOSED short at 2098.66 | PnL: 1.03% | $1.82 +2025-03-10 16:15:08,320 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.0905535714287 | Take profit: 2059.1597446428573 +2025-03-10 16:15:08,599 - INFO - TAKE PROFIT hit for short at 2059.1597446428573 | PnL: 1.50% | $2.79 +2025-03-10 16:15:08,626 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.302603571429 | Take profit: 2020.1635946428573 +2025-03-10 16:15:08,920 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.31, Avg Loss=$0.00 +2025-03-10 16:15:08,920 - INFO - Episode 16: Reward=2.18, Balance=$104.61, Win Rate=100.0%, Trades=2, Episode PnL=$4.61, Total PnL=$280.19, Max Drawdown=0.0%, Pred Accuracy=98.3% +2025-03-10 16:15:08,921 - INFO - Refreshing data for episode 17 +2025-03-10 16:15:08,921 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:09,339 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:09,350 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:09,383 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.130182142857 | Take profit: 2088.6011267857143 +2025-03-10 16:15:10,288 - INFO - CLOSED short at 2104.22 | PnL: 0.77% | $1.30 +2025-03-10 16:15:10,289 - INFO - OPENED LONG at 2104.22 | Stop loss: 2093.6511178571427 | Take profit: 2135.8549732142856 +2025-03-10 16:15:10,332 - INFO - CLOSED long at 2104.67 | PnL: 0.02% | $-0.16 +2025-03-10 16:15:10,333 - INFO - OPENED SHORT at 2104.67 | Stop loss: 2115.241132142857 | Take profit: 2073.0282767857143 +2025-03-10 16:15:10,460 - INFO - CLOSED short at 2094.16 | PnL: 0.50% | $0.79 +2025-03-10 16:15:10,488 - INFO - OPENED SHORT at 2096.96 | Stop loss: 2107.492582142857 | Take profit: 2065.4339267857144 +2025-03-10 16:15:10,787 - INFO - CLOSED short at 2067.71 | PnL: 1.39% | $2.58 +2025-03-10 16:15:10,813 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5892821428574 | Take profit: 2017.5038267857144 +2025-03-10 16:15:11,031 - INFO - CLOSED short at 2043.95 | PnL: 0.21% | $0.23 +2025-03-10 16:15:11,056 - INFO - OPENED SHORT at 2044.1 | Stop loss: 2054.368282142857 | Take profit: 2013.366826785714 +2025-03-10 16:15:11,101 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.23, Avg Loss=$-0.16 +2025-03-10 16:15:11,102 - INFO - Episode 17: Reward=5.32, Balance=$104.75, Win Rate=80.0%, Trades=5, Episode PnL=$4.90, Total PnL=$284.94, Max Drawdown=0.0%, Pred Accuracy=98.3% +2025-03-10 16:15:11,103 - INFO - Refreshing data for episode 18 +2025-03-10 16:15:11,103 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:11,400 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:11,409 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:11,435 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.130182142857 | Take profit: 2088.6011267857143 +2025-03-10 16:15:11,817 - INFO - CLOSED short at 2116.06 | PnL: 0.21% | $0.21 +2025-03-10 16:15:11,843 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.8338321428573 | Take profit: 2083.410176785714 +2025-03-10 16:15:12,051 - INFO - CLOSED short at 2098.28 | PnL: 0.80% | $1.37 +2025-03-10 16:15:12,082 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.864582142857 | Take profit: 2059.9179267857144 +2025-03-10 16:15:12,104 - INFO - CLOSED short at 2100.05 | PnL: -0.42% | $-1.02 +2025-03-10 16:15:12,150 - INFO - OPENED SHORT at 2089.04 | Stop loss: 2099.5329821428572 | Take profit: 2057.6327267857146 +2025-03-10 16:15:12,196 - INFO - CLOSED short at 2096.19 | PnL: -0.34% | $-0.87 +2025-03-10 16:15:12,404 - INFO - OPENED SHORT at 2099.22 | Stop loss: 2109.763882142857 | Take profit: 2067.6600267857143 +2025-03-10 16:15:12,434 - INFO - CLOSED short at 2094.16 | PnL: 0.24% | $0.27 +2025-03-10 16:15:12,530 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.492732142857 | Take profit: 2059.553476785714 +2025-03-10 16:15:12,556 - INFO - CLOSED short at 2084.95 | PnL: 0.29% | $0.37 +2025-03-10 16:15:12,618 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2215321428575 | Take profit: 2053.4070767857143 +2025-03-10 16:15:12,638 - INFO - CLOSED short at 2081.0 | PnL: 0.18% | $0.16 +2025-03-10 16:15:12,939 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.347932142857 | Take profit: 2023.1478767857145 +2025-03-10 16:15:12,965 - INFO - CLOSED short at 2050.18 | PnL: 0.19% | $0.17 +2025-03-10 16:15:12,988 - INFO - OPENED SHORT at 2046.76 | Stop loss: 2057.0415821428574 | Take profit: 2015.9869267857143 +2025-03-10 16:15:13,016 - INFO - CLOSED short at 2043.95 | PnL: 0.14% | $0.07 +2025-03-10 16:15:13,085 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.38, Avg Loss=$-0.95 +2025-03-10 16:15:13,086 - INFO - Episode 18: Reward=-1.49, Balance=$100.74, Win Rate=77.8%, Trades=9, Episode PnL=$0.74, Total PnL=$285.68, Max Drawdown=1.9%, Pred Accuracy=98.1% +2025-03-10 16:15:13,086 - INFO - Refreshing data for episode 19 +2025-03-10 16:15:13,087 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:13,394 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:13,405 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:13,540 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1503821428573 | Take profit: 2084.7005267857144 +2025-03-10 16:15:13,591 - INFO - CLOSED short at 2120.96 | PnL: -0.21% | $-0.61 +2025-03-10 16:15:13,618 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.5722821428576 | Take profit: 2092.9548267857144 +2025-03-10 16:15:13,642 - INFO - CLOSED short at 2128.33 | PnL: -0.16% | $-0.51 +2025-03-10 16:15:13,672 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.441632142857 | Take profit: 2092.826776785714 +2025-03-10 16:15:13,722 - INFO - CLOSED short at 2116.81 | PnL: 0.37% | $0.53 +2025-03-10 16:15:13,793 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.371532142857 | Take profit: 2082.9570767857144 +2025-03-10 16:15:13,865 - INFO - CLOSED short at 2114.1 | PnL: 0.03% | $-0.13 +2025-03-10 16:15:13,911 - INFO - OPENED SHORT at 2114.32 | Stop loss: 2124.9393821428575 | Take profit: 2082.5335267857145 +2025-03-10 16:15:14,060 - INFO - CLOSED short at 2098.28 | PnL: 0.76% | $1.28 +2025-03-10 16:15:14,245 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.391932142857 | Take profit: 2071.2158767857145 +2025-03-10 16:15:14,271 - INFO - CLOSED short at 2103.41 | PnL: -0.03% | $-0.25 +2025-03-10 16:15:14,271 - INFO - OPENED LONG at 2103.41 | Stop loss: 2092.8451678571428 | Take profit: 2135.0328232142856 +2025-03-10 16:15:14,328 - INFO - CLOSED long at 2104.67 | PnL: 0.06% | $-0.08 +2025-03-10 16:15:14,455 - INFO - OPENED LONG at 2096.96 | Stop loss: 2086.4274178571427 | Take profit: 2128.4860732142856 +2025-03-10 16:15:14,541 - INFO - CLOSED long at 2090.99 | PnL: -0.28% | $-0.75 +2025-03-10 16:15:14,654 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.452782142857 | Take profit: 2049.7133267857143 +2025-03-10 16:15:14,681 - INFO - CLOSED short at 2084.25 | PnL: -0.16% | $-0.50 +2025-03-10 16:15:14,902 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.2022321428567 | Take profit: 2022.0249767857142 +2025-03-10 16:15:14,973 - INFO - CLOSED short at 2054.03 | PnL: -0.06% | $-0.30 +2025-03-10 16:15:15,044 - INFO - OPENED SHORT at 2043.95 | Stop loss: 2054.217532142857 | Take profit: 2013.2190767857142 +2025-03-10 16:15:15,067 - INFO - CLOSED short at 2044.1 | PnL: -0.01% | $-0.21 +2025-03-10 16:15:15,119 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.91, Avg Loss=$-0.37 +2025-03-10 16:15:15,120 - INFO - Episode 19: Reward=-19.42, Balance=$98.47, Win Rate=18.2%, Trades=11, Episode PnL=$-1.53, Total PnL=$284.15, Max Drawdown=2.1%, Pred Accuracy=98.0% +2025-03-10 16:15:15,120 - INFO - Refreshing data for episode 20 +2025-03-10 16:15:15,121 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:15,448 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:15,460 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:16,699 - INFO - OPENED SHORT at 2115.52 | Stop loss: 2126.145382142857 | Take profit: 2083.7155267857142 +2025-03-10 16:15:16,726 - INFO - CLOSED short at 2114.75 | PnL: 0.04% | $-0.12 +2025-03-10 16:15:16,938 - INFO - OPENED LONG at 2113.28 | Stop loss: 2102.665817857143 | Take profit: 2145.050873214286 +2025-03-10 16:15:17,022 - INFO - CLOSED long at 2098.24 | PnL: -0.71% | $-1.59 +2025-03-10 16:15:17,141 - INFO - OPENED LONG at 2089.04 | Stop loss: 2078.5470178571427 | Take profit: 2120.4472732142854 +2025-03-10 16:15:17,170 - INFO - CLOSED long at 2089.84 | PnL: 0.04% | $-0.12 +2025-03-10 16:15:17,272 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.974832142857 | Take profit: 2071.787176785714 +2025-03-10 16:15:17,305 - INFO - CLOSED short at 2104.22 | PnL: -0.04% | $-0.27 +2025-03-10 16:15:17,568 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0306821428567 | Take profit: 2049.2996267857143 +2025-03-10 16:15:17,675 - INFO - CLOSED short at 2085.37 | PnL: -0.23% | $-0.63 +2025-03-10 16:15:17,722 - INFO - OPENED LONG at 2083.07 | Stop loss: 2072.6068678571432 | Take profit: 2114.387723214286 +2025-03-10 16:15:17,745 - INFO - CLOSED long at 2075.07 | PnL: -0.38% | $-0.92 +2025-03-10 16:15:17,745 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.4931321428576 | Take profit: 2043.8722767857143 +2025-03-10 16:15:17,860 - INFO - TAKE PROFIT hit for short at 2043.8722767857143 | PnL: 1.50% | $2.64 +2025-03-10 16:15:17,980 - INFO - OPENED SHORT at 2050.18 | Stop loss: 2060.478682142857 | Take profit: 2019.355626785714 +2025-03-10 16:15:18,004 - INFO - CLOSED short at 2046.76 | PnL: 0.17% | $0.13 +2025-03-10 16:15:18,030 - INFO - OPENED SHORT at 2043.95 | Stop loss: 2054.217532142857 | Take profit: 2013.2190767857142 +2025-03-10 16:15:18,107 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.39, Avg Loss=$-0.61 +2025-03-10 16:15:18,108 - INFO - Episode 20: Reward=-19.78, Balance=$99.13, Win Rate=25.0%, Trades=8, Episode PnL=$0.05, Total PnL=$283.27, Max Drawdown=2.7%, Pred Accuracy=98.1% +2025-03-10 16:15:18,257 - INFO - Model saved to checkpoints/trading_agent_episode_20.pt +2025-03-10 16:15:18,259 - INFO - Checkpoint saved at episode 20 +2025-03-10 16:15:18,260 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:15:19,241 - INFO - Visualization saved for episode 20 +2025-03-10 16:15:21,209 - INFO - Visualization saved for episode 20 +2025-03-10 16:15:21,230 - INFO - Refreshing data for episode 21 +2025-03-10 16:15:21,230 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:21,552 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:21,562 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:21,724 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.6383250000003 | Take profit: 2086.1575125 +2025-03-10 16:15:21,868 - INFO - CLOSED short at 2120.96 | PnL: -0.14% | $-0.47 +2025-03-10 16:15:21,868 - INFO - OPENED LONG at 2120.96 | Stop loss: 2110.306875 | Take profit: 2152.8468875 +2025-03-10 16:15:21,895 - INFO - CLOSED long at 2124.9 | PnL: 0.19% | $0.17 +2025-03-10 16:15:21,895 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.572825 | Take profit: 2092.9540125000003 +2025-03-10 16:15:21,992 - INFO - CLOSED short at 2116.81 | PnL: 0.38% | $0.55 +2025-03-10 16:15:22,079 - INFO - OPENED LONG at 2114.75 | Stop loss: 2104.1279250000002 | Take profit: 2146.5437374999997 +2025-03-10 16:15:22,106 - INFO - CLOSED long at 2116.06 | PnL: 0.06% | $-0.07 +2025-03-10 16:15:22,107 - INFO - OPENED SHORT at 2116.06 | Stop loss: 2126.688625 | Take profit: 2084.2466125 +2025-03-10 16:15:22,139 - INFO - CLOSED short at 2115.21 | PnL: 0.04% | $-0.12 +2025-03-10 16:15:22,191 - INFO - OPENED SHORT at 2115.11 | Stop loss: 2125.733875 | Take profit: 2083.3108625 +2025-03-10 16:15:22,217 - INFO - CLOSED short at 2114.32 | PnL: 0.04% | $-0.12 +2025-03-10 16:15:22,241 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.191175 | Take profit: 2082.7789625 +2025-03-10 16:15:22,287 - INFO - CLOSED short at 2113.28 | PnL: 0.06% | $-0.08 +2025-03-10 16:15:22,316 - INFO - OPENED SHORT at 2114.5 | Stop loss: 2125.120825 | Take profit: 2082.7100125 +2025-03-10 16:15:22,733 - INFO - CLOSED short at 2096.96 | PnL: 0.83% | $1.42 +2025-03-10 16:15:22,764 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.2016249999997 | Take profit: 2067.1076125 +2025-03-10 16:15:23,103 - INFO - TAKE PROFIT hit for short at 2067.1076125 | PnL: 1.50% | $2.78 +2025-03-10 16:15:23,139 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3033250000003 | Take profit: 2020.1625125 +2025-03-10 16:15:23,325 - INFO - CLOSED short at 2046.76 | PnL: 0.21% | $0.22 +2025-03-10 16:15:23,355 - INFO - OPENED SHORT at 2043.95 | Stop loss: 2054.218075 | Take profit: 2013.2182625 +2025-03-10 16:15:23,429 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.03, Avg Loss=$-0.17 +2025-03-10 16:15:23,429 - INFO - Episode 21: Reward=11.01, Balance=$104.28, Win Rate=50.0%, Trades=10, Episode PnL=$4.18, Total PnL=$287.55, Max Drawdown=0.4%, Pred Accuracy=98.2% +2025-03-10 16:15:23,430 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:15:23,430 - INFO - Refreshing data for episode 22 +2025-03-10 16:15:23,430 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:23,757 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:23,768 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:23,793 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.130725 | Take profit: 2088.6003125 +2025-03-10 16:15:24,741 - INFO - CLOSED short at 2104.22 | PnL: 0.77% | $1.30 +2025-03-10 16:15:24,741 - INFO - OPENED LONG at 2104.22 | Stop loss: 2093.650575 | Take profit: 2135.8557874999997 +2025-03-10 16:15:24,776 - INFO - CLOSED long at 2104.67 | PnL: 0.02% | $-0.16 +2025-03-10 16:15:24,776 - INFO - OPENED SHORT at 2104.67 | Stop loss: 2115.241675 | Take profit: 2073.0274625 +2025-03-10 16:15:25,226 - INFO - TAKE PROFIT hit for short at 2073.0274625 | PnL: 1.50% | $2.78 +2025-03-10 16:15:25,258 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.589825 | Take profit: 2017.5030125000003 +2025-03-10 16:15:25,606 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.04, Avg Loss=$-0.16 +2025-03-10 16:15:25,608 - INFO - Episode 22: Reward=14.37, Balance=$103.92, Win Rate=66.7%, Trades=3, Episode PnL=$4.08, Total PnL=$291.47, Max Drawdown=0.0%, Pred Accuracy=98.3% +2025-03-10 16:15:25,608 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:15:25,608 - INFO - Refreshing data for episode 23 +2025-03-10 16:15:25,609 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:25,948 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:25,958 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:25,983 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1317642857143 | Take profit: 2088.5987535714285 +2025-03-10 16:15:26,035 - INFO - CLOSED short at 2118.0 | PnL: 0.12% | $0.03 +2025-03-10 16:15:26,063 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.4583642857147 | Take profit: 2089.8989535714286 +2025-03-10 16:15:26,767 - INFO - TAKE PROFIT hit for short at 2089.8989535714286 | PnL: 1.50% | $2.74 +2025-03-10 16:15:26,792 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3385642857143 | Take profit: 2058.4183535714287 +2025-03-10 16:15:26,870 - INFO - STOP LOSS hit for short at 2100.3385642857143 | PnL: -0.50% | $-1.21 +2025-03-10 16:15:26,897 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9764142857143 | Take profit: 2071.7848035714283 +2025-03-10 16:15:27,356 - INFO - TAKE PROFIT hit for short at 2071.7848035714283 | PnL: 1.50% | $2.79 +2025-03-10 16:15:27,378 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5908642857144 | Take profit: 2017.5014535714288 +2025-03-10 16:15:27,678 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.85, Avg Loss=$-1.21 +2025-03-10 16:15:27,686 - INFO - Episode 23: Reward=15.12, Balance=$104.35, Win Rate=75.0%, Trades=4, Episode PnL=$4.35, Total PnL=$295.83, Max Drawdown=1.2%, Pred Accuracy=98.3% +2025-03-10 16:15:27,686 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:15:27,686 - INFO - Refreshing data for episode 24 +2025-03-10 16:15:27,686 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:28,039 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:28,050 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:28,078 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1317642857143 | Take profit: 2088.5987535714285 +2025-03-10 16:15:28,657 - INFO - CLOSED short at 2115.07 | PnL: 0.26% | $0.30 +2025-03-10 16:15:28,681 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.7805642857143 | Take profit: 2066.692353571428 +2025-03-10 16:15:28,826 - INFO - CLOSED short at 2089.84 | PnL: 0.40% | $0.59 +2025-03-10 16:15:28,849 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.7203142857143 | Take profit: 2064.6731035714283 +2025-03-10 16:15:29,286 - INFO - CLOSED short at 2084.11 | PnL: 0.58% | $0.94 +2025-03-10 16:15:29,316 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.5347142857145 | Take profit: 2051.7499035714286 +2025-03-10 16:15:29,395 - INFO - TAKE PROFIT hit for short at 2051.7499035714286 | PnL: 1.50% | $2.79 +2025-03-10 16:15:29,417 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3043642857147 | Take profit: 2020.1609535714285 +2025-03-10 16:15:29,653 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.16, Avg Loss=$0.00 +2025-03-10 16:15:29,653 - INFO - Episode 24: Reward=17.80, Balance=$104.62, Win Rate=100.0%, Trades=4, Episode PnL=$4.62, Total PnL=$300.45, Max Drawdown=0.0%, Pred Accuracy=98.4% +2025-03-10 16:15:29,655 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:15:29,655 - INFO - Refreshing data for episode 25 +2025-03-10 16:15:29,655 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:30,013 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:30,028 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:30,888 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1319392857145 | Take profit: 2088.5984910714287 +2025-03-10 16:15:31,662 - INFO - CLOSED short at 2100.05 | PnL: 0.96% | $1.69 +2025-03-10 16:15:31,693 - INFO - OPENED SHORT at 2096.36 | Stop loss: 2106.8913392857144 | Take profit: 2064.8402910714285 +2025-03-10 16:15:32,405 - INFO - TAKE PROFIT hit for short at 2064.8402910714285 | PnL: 1.50% | $2.79 +2025-03-10 16:15:32,436 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3045392857143 | Take profit: 2020.1606910714286 +2025-03-10 16:15:32,732 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.24, Avg Loss=$0.00 +2025-03-10 16:15:32,733 - INFO - Episode 25: Reward=15.88, Balance=$104.48, Win Rate=100.0%, Trades=2, Episode PnL=$4.48, Total PnL=$304.92, Max Drawdown=0.0%, Pred Accuracy=98.3% +2025-03-10 16:15:32,734 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:15:32,734 - INFO - Refreshing data for episode 26 +2025-03-10 16:15:32,735 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:33,039 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:33,051 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:33,080 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1323964285716 | Take profit: 2088.597805357143 +2025-03-10 16:15:33,364 - INFO - CLOSED short at 2124.77 | PnL: -0.20% | $-0.59 +2025-03-10 16:15:33,364 - INFO - OPENED LONG at 2124.77 | Stop loss: 2114.0961535714287 | Take profit: 2156.716544642857 +2025-03-10 16:15:33,391 - INFO - CLOSED long at 2120.26 | PnL: -0.21% | $-0.61 +2025-03-10 16:15:33,391 - INFO - OPENED SHORT at 2120.26 | Stop loss: 2130.9112964285714 | Take profit: 2088.381105357143 +2025-03-10 16:15:34,384 - INFO - TAKE PROFIT hit for short at 2088.381105357143 | PnL: 1.50% | $2.71 +2025-03-10 16:15:34,418 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0328964285713 | Take profit: 2049.296305357143 +2025-03-10 16:15:34,667 - INFO - TAKE PROFIT hit for short at 2049.296305357143 | PnL: 1.50% | $2.78 +2025-03-10 16:15:34,692 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3049964285715 | Take profit: 2020.1600053571428 +2025-03-10 16:15:34,975 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.75, Avg Loss=$-0.60 +2025-03-10 16:15:34,976 - INFO - Episode 26: Reward=10.29, Balance=$104.30, Win Rate=50.0%, Trades=4, Episode PnL=$4.90, Total PnL=$309.22, Max Drawdown=0.0%, Pred Accuracy=98.4% +2025-03-10 16:15:34,977 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:15:34,977 - INFO - Refreshing data for episode 27 +2025-03-10 16:15:34,978 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:35,303 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:35,314 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:35,339 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1323964285716 | Take profit: 2088.597805357143 +2025-03-10 16:15:36,475 - INFO - TAKE PROFIT hit for short at 2088.597805357143 | PnL: 1.50% | $2.74 +2025-03-10 16:15:36,502 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0328964285713 | Take profit: 2049.296305357143 +2025-03-10 16:15:36,741 - INFO - TAKE PROFIT hit for short at 2049.296305357143 | PnL: 1.50% | $2.82 +2025-03-10 16:15:36,766 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3049964285715 | Take profit: 2020.1600053571428 +2025-03-10 16:15:36,833 - INFO - CLOSED short at 2052.89 | PnL: -0.09% | $-0.40 +2025-03-10 16:15:36,860 - INFO - OPENED SHORT at 2053.22 | Stop loss: 2063.5360964285715 | Take profit: 2022.3467053571426 +2025-03-10 16:15:37,063 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$-0.40 +2025-03-10 16:15:37,064 - INFO - Episode 27: Reward=12.57, Balance=$105.16, Win Rate=66.7%, Trades=3, Episode PnL=$5.16, Total PnL=$314.38, Max Drawdown=0.4%, Pred Accuracy=98.4% +2025-03-10 16:15:37,065 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:15:37,065 - INFO - Refreshing data for episode 28 +2025-03-10 16:15:37,066 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:37,379 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:37,389 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:37,418 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1323964285716 | Take profit: 2088.597805357143 +2025-03-10 16:15:38,497 - INFO - CLOSED short at 2090.59 | PnL: 1.41% | $2.56 +2025-03-10 16:15:38,530 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.494946428571 | Take profit: 2059.5501553571426 +2025-03-10 16:15:38,763 - INFO - TAKE PROFIT hit for short at 2059.5501553571426 | PnL: 1.50% | $2.81 +2025-03-10 16:15:38,791 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3049964285715 | Take profit: 2020.1600053571428 +2025-03-10 16:15:39,006 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.69, Avg Loss=$0.00 +2025-03-10 16:15:39,007 - INFO - Episode 28: Reward=16.42, Balance=$105.37, Win Rate=100.0%, Trades=2, Episode PnL=$5.37, Total PnL=$319.75, Max Drawdown=0.0%, Pred Accuracy=98.5% +2025-03-10 16:15:39,007 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:15:39,008 - INFO - Refreshing data for episode 29 +2025-03-10 16:15:39,008 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:39,317 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:39,326 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:39,352 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1323964285716 | Take profit: 2088.597805357143 +2025-03-10 16:15:40,436 - INFO - TAKE PROFIT hit for short at 2088.597805357143 | PnL: 1.50% | $2.74 +2025-03-10 16:15:40,471 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0328964285713 | Take profit: 2049.296305357143 +2025-03-10 16:15:40,692 - INFO - TAKE PROFIT hit for short at 2049.296305357143 | PnL: 1.50% | $2.82 +2025-03-10 16:15:40,718 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3049964285715 | Take profit: 2020.1600053571428 +2025-03-10 16:15:40,843 - INFO - CLOSED short at 2058.11 | PnL: -0.35% | $-0.92 +2025-03-10 16:15:40,844 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.7694535714288 | Take profit: 2089.056644642857 +2025-03-10 16:15:40,867 - INFO - CLOSED long at 2054.03 | PnL: -0.20% | $-0.61 +2025-03-10 16:15:40,868 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.350146428572 | Take profit: 2023.144555357143 +2025-03-10 16:15:41,025 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.78, Avg Loss=$-0.76 +2025-03-10 16:15:41,026 - INFO - Episode 29: Reward=9.90, Balance=$104.03, Win Rate=50.0%, Trades=4, Episode PnL=$4.64, Total PnL=$323.78, Max Drawdown=0.0%, Pred Accuracy=98.4% +2025-03-10 16:15:41,026 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:15:41,026 - INFO - Refreshing data for episode 30 +2025-03-10 16:15:41,027 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:41,502 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:41,512 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:42,547 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1323964285716 | Take profit: 2088.597805357143 +2025-03-10 16:15:42,964 - INFO - CLOSED short at 2116.06 | PnL: 0.21% | $0.21 +2025-03-10 16:15:42,988 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.8360464285715 | Take profit: 2083.406855357143 +2025-03-10 16:15:43,553 - INFO - CLOSED short at 2104.22 | PnL: 0.52% | $0.82 +2025-03-10 16:15:43,580 - INFO - OPENED SHORT at 2104.67 | Stop loss: 2115.2433464285714 | Take profit: 2073.024955357143 +2025-03-10 16:15:44,008 - INFO - TAKE PROFIT hit for short at 2073.024955357143 | PnL: 1.50% | $2.77 +2025-03-10 16:15:44,032 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.591496428571 | Take profit: 2017.500505357143 +2025-03-10 16:15:44,330 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.27, Avg Loss=$0.00 +2025-03-10 16:15:44,330 - INFO - Episode 30: Reward=16.40, Balance=$103.80, Win Rate=100.0%, Trades=3, Episode PnL=$3.80, Total PnL=$327.59, Max Drawdown=0.0%, Pred Accuracy=98.6% +2025-03-10 16:15:44,476 - INFO - Model saved to checkpoints/trading_agent_episode_30.pt +2025-03-10 16:15:44,477 - INFO - Checkpoint saved at episode 30 +2025-03-10 16:15:44,477 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:15:45,503 - INFO - Visualization saved for episode 30 +2025-03-10 16:15:47,275 - INFO - Visualization saved for episode 30 +2025-03-10 16:15:47,296 - INFO - Refreshing data for episode 31 +2025-03-10 16:15:47,296 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:47,605 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:47,616 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:47,721 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1323964285716 | Take profit: 2088.597805357143 +2025-03-10 16:15:48,879 - INFO - TAKE PROFIT hit for short at 2088.597805357143 | PnL: 1.50% | $2.74 +2025-03-10 16:15:48,915 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0328964285713 | Take profit: 2049.296305357143 +2025-03-10 16:15:49,180 - INFO - TAKE PROFIT hit for short at 2049.296305357143 | PnL: 1.50% | $2.82 +2025-03-10 16:15:49,204 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3049964285715 | Take profit: 2020.1600053571428 +2025-03-10 16:15:49,460 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$0.00 +2025-03-10 16:15:49,460 - INFO - Episode 31: Reward=14.10, Balance=$105.56, Win Rate=100.0%, Trades=2, Episode PnL=$5.56, Total PnL=$333.14, Max Drawdown=0.0%, Pred Accuracy=98.6% +2025-03-10 16:15:49,465 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:15:49,465 - INFO - Refreshing data for episode 32 +2025-03-10 16:15:49,466 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:49,789 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:49,798 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:49,817 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1323964285716 | Take profit: 2088.597805357143 +2025-03-10 16:15:49,935 - INFO - CLOSED short at 2116.52 | PnL: 0.19% | $0.17 +2025-03-10 16:15:49,935 - INFO - OPENED LONG at 2116.52 | Stop loss: 2105.8874035714284 | Take profit: 2148.342794642857 +2025-03-10 16:15:49,968 - INFO - CLOSED long at 2119.02 | PnL: 0.12% | $0.04 +2025-03-10 16:15:49,968 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6650964285714 | Take profit: 2087.1597053571427 +2025-03-10 16:15:50,473 - INFO - CLOSED short at 2115.07 | PnL: 0.19% | $0.17 +2025-03-10 16:15:50,497 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.781196428571 | Take profit: 2066.6914053571427 +2025-03-10 16:15:50,874 - INFO - CLOSED short at 2098.66 | PnL: -0.02% | $-0.24 +2025-03-10 16:15:50,896 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.0929464285714 | Take profit: 2059.1561553571432 +2025-03-10 16:15:51,010 - INFO - CLOSED short at 2084.75 | PnL: 0.28% | $0.35 +2025-03-10 16:15:51,011 - INFO - OPENED LONG at 2084.75 | Stop loss: 2074.2762535714287 | Take profit: 2116.096244642857 +2025-03-10 16:15:51,041 - INFO - CLOSED long at 2081.0 | PnL: -0.18% | $-0.55 +2025-03-10 16:15:51,041 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.4549964285716 | Take profit: 2049.710005357143 +2025-03-10 16:15:51,203 - INFO - TAKE PROFIT hit for short at 2049.710005357143 | PnL: 1.50% | $2.74 +2025-03-10 16:15:51,229 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3049964285715 | Take profit: 2020.1600053571428 +2025-03-10 16:15:51,491 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$0.69, Avg Loss=$-0.39 +2025-03-10 16:15:51,492 - INFO - Episode 32: Reward=14.61, Balance=$102.68, Win Rate=71.4%, Trades=7, Episode PnL=$3.19, Total PnL=$335.82, Max Drawdown=0.2%, Pred Accuracy=98.6% +2025-03-10 16:15:51,492 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:15:51,492 - INFO - Refreshing data for episode 33 +2025-03-10 16:15:51,494 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:51,843 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:51,852 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:51,880 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1323964285716 | Take profit: 2088.597805357143 +2025-03-10 16:15:52,532 - INFO - CLOSED short at 2114.5 | PnL: 0.28% | $0.36 +2025-03-10 16:15:52,532 - INFO - OPENED LONG at 2114.5 | Stop loss: 2103.8775035714284 | Take profit: 2146.292494642857 +2025-03-10 16:15:52,560 - INFO - CLOSED long at 2115.07 | PnL: 0.03% | $-0.14 +2025-03-10 16:15:52,561 - INFO - OPENED SHORT at 2115.07 | Stop loss: 2125.6953464285716 | Take profit: 2083.268955357143 +2025-03-10 16:15:53,167 - INFO - CLOSED short at 2098.66 | PnL: 0.78% | $1.32 +2025-03-10 16:15:53,191 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.0929464285714 | Take profit: 2059.1561553571432 +2025-03-10 16:15:53,303 - INFO - CLOSED short at 2084.75 | PnL: 0.28% | $0.36 +2025-03-10 16:15:53,330 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.4549964285716 | Take profit: 2049.710005357143 +2025-03-10 16:15:53,515 - INFO - TAKE PROFIT hit for short at 2049.710005357143 | PnL: 1.50% | $2.79 +2025-03-10 16:15:53,540 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3049964285715 | Take profit: 2020.1600053571428 +2025-03-10 16:15:53,815 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.21, Avg Loss=$-0.14 +2025-03-10 16:15:53,815 - INFO - Episode 33: Reward=16.47, Balance=$104.68, Win Rate=80.0%, Trades=5, Episode PnL=$4.83, Total PnL=$340.51, Max Drawdown=0.0%, Pred Accuracy=98.7% +2025-03-10 16:15:53,815 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:15:53,824 - INFO - Refreshing data for episode 34 +2025-03-10 16:15:53,824 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:54,165 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:54,177 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:54,206 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1323964285716 | Take profit: 2088.597805357143 +2025-03-10 16:15:55,222 - INFO - CLOSED short at 2098.66 | PnL: 1.03% | $1.82 +2025-03-10 16:15:55,252 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.0929464285714 | Take profit: 2059.1561553571432 +2025-03-10 16:15:55,547 - INFO - TAKE PROFIT hit for short at 2059.1561553571432 | PnL: 1.50% | $2.79 +2025-03-10 16:15:55,569 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3049964285715 | Take profit: 2020.1600053571428 +2025-03-10 16:15:55,825 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.30, Avg Loss=$0.00 +2025-03-10 16:15:55,826 - INFO - Episode 34: Reward=15.99, Balance=$104.61, Win Rate=100.0%, Trades=2, Episode PnL=$4.61, Total PnL=$345.12, Max Drawdown=0.0%, Pred Accuracy=98.7% +2025-03-10 16:15:55,826 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:15:55,826 - INFO - Refreshing data for episode 35 +2025-03-10 16:15:55,826 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:56,136 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:56,147 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:56,895 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1323964285716 | Take profit: 2088.597805357143 +2025-03-10 16:15:56,918 - INFO - CLOSED short at 2120.54 | PnL: -0.00% | $-0.20 +2025-03-10 16:15:56,939 - INFO - OPENED LONG at 2118.0 | Stop loss: 2107.3600035714285 | Take profit: 2149.8449946428573 +2025-03-10 16:15:56,965 - INFO - CLOSED long at 2121.8 | PnL: 0.18% | $0.15 +2025-03-10 16:15:56,965 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.458996428572 | Take profit: 2089.898005357143 +2025-03-10 16:15:57,153 - INFO - CLOSED short at 2120.26 | PnL: 0.07% | $-0.05 +2025-03-10 16:15:57,153 - INFO - OPENED LONG at 2120.26 | Stop loss: 2109.6087035714286 | Take profit: 2152.1388946428574 +2025-03-10 16:15:57,183 - INFO - CLOSED long at 2116.81 | PnL: -0.16% | $-0.51 +2025-03-10 16:15:57,184 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.4440464285713 | Take profit: 2084.982855357143 +2025-03-10 16:15:58,026 - INFO - TAKE PROFIT hit for short at 2084.982855357143 | PnL: 1.50% | $2.73 +2025-03-10 16:15:58,049 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0328964285713 | Take profit: 2049.296305357143 +2025-03-10 16:15:58,247 - INFO - CLOSED short at 2048.3 | PnL: 1.55% | $2.89 +2025-03-10 16:15:58,269 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3049964285715 | Take profit: 2020.1600053571428 +2025-03-10 16:15:58,512 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.93, Avg Loss=$-0.26 +2025-03-10 16:15:58,512 - INFO - Episode 35: Reward=12.97, Balance=$105.01, Win Rate=50.0%, Trades=6, Episode PnL=$5.37, Total PnL=$350.12, Max Drawdown=0.2%, Pred Accuracy=98.8% +2025-03-10 16:15:58,513 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:15:58,513 - INFO - Refreshing data for episode 36 +2025-03-10 16:15:58,514 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:15:58,832 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:15:58,842 - INFO - Initialized environment with 100 candles +2025-03-10 16:15:58,868 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1323964285716 | Take profit: 2088.597805357143 +2025-03-10 16:15:59,760 - INFO - CLOSED short at 2099.63 | PnL: 0.98% | $1.73 +2025-03-10 16:15:59,781 - INFO - OPENED SHORT at 2099.22 | Stop loss: 2109.766096428571 | Take profit: 2067.6567053571425 +2025-03-10 16:16:00,093 - INFO - CLOSED short at 2075.07 | PnL: 1.15% | $2.09 +2025-03-10 16:16:00,094 - INFO - OPENED LONG at 2075.07 | Stop loss: 2064.644653571429 | Take profit: 2106.2710446428573 +2025-03-10 16:16:00,120 - INFO - CLOSED long at 2067.71 | PnL: -0.35% | $-0.92 +2025-03-10 16:16:00,121 - INFO - OPENED SHORT at 2067.71 | Stop loss: 2078.0985464285714 | Take profit: 2036.619355357143 +2025-03-10 16:16:00,425 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.91, Avg Loss=$-0.92 +2025-03-10 16:16:00,426 - INFO - Episode 36: Reward=16.02, Balance=$102.89, Win Rate=66.7%, Trades=3, Episode PnL=$3.81, Total PnL=$353.02, Max Drawdown=0.0%, Pred Accuracy=98.9% +2025-03-10 16:16:00,426 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:16:00,427 - INFO - Refreshing data for episode 37 +2025-03-10 16:16:00,427 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:16:00,779 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:16:00,791 - INFO - Initialized environment with 100 candles +2025-03-10 16:16:00,817 - INFO - OPENED SHORT at 2120.48 | Stop loss: 2131.1323964285716 | Take profit: 2088.597805357143 +2025-03-10 16:16:01,174 - INFO - CLOSED short at 2115.52 | PnL: 0.23% | $0.26 +2025-03-10 16:16:01,212 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.3737464285714 | Take profit: 2082.9537553571427 +2025-03-10 16:16:01,300 - INFO - CLOSED short at 2115.11 | PnL: -0.02% | $-0.23 +2025-03-10 16:16:01,328 - INFO - OPENED SHORT at 2114.32 | Stop loss: 2124.9415964285713 | Take profit: 2082.530205357143 +2025-03-10 16:16:01,947 - INFO - TAKE PROFIT hit for short at 2082.530205357143 | PnL: 1.50% | $2.74 +2025-03-10 16:16:01,976 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2237464285713 | Take profit: 2053.403755357143 +2025-03-10 16:16:02,088 - INFO - CLOSED short at 2084.11 | PnL: 0.03% | $-0.14 +2025-03-10 16:16:02,114 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.5353464285718 | Take profit: 2051.748955357143 +2025-03-10 16:16:02,190 - INFO - TAKE PROFIT hit for short at 2051.748955357143 | PnL: 1.50% | $2.81 +2025-03-10 16:16:02,215 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3049964285715 | Take profit: 2020.1600053571428 +2025-03-10 16:16:02,259 - INFO - CLOSED short at 2052.89 | PnL: -0.09% | $-0.40 +2025-03-10 16:16:02,290 - INFO - OPENED SHORT at 2053.22 | Stop loss: 2063.5360964285715 | Take profit: 2022.3467053571426 +2025-03-10 16:16:02,476 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.94, Avg Loss=$-0.25 +2025-03-10 16:16:02,478 - INFO - Episode 37: Reward=11.09, Balance=$105.05, Win Rate=50.0%, Trades=6, Episode PnL=$5.05, Total PnL=$358.07, Max Drawdown=0.4%, Pred Accuracy=99.0% +2025-03-10 16:16:02,478 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:16:02,479 - INFO - Refreshing data for episode 38 +2025-03-10 16:16:02,479 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:16:02,796 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:16:02,807 - INFO - Initialized environment with 100 candles +2025-03-10 16:16:02,837 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.1892857142857 | Take profit: 2088.6620214285713 +2025-03-10 16:16:03,926 - INFO - TAKE PROFIT hit for short at 2088.6620214285713 | PnL: 1.50% | $2.75 +2025-03-10 16:16:03,958 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.029485714286 | Take profit: 2049.3014214285713 +2025-03-10 16:16:04,159 - INFO - TAKE PROFIT hit for short at 2049.3014214285713 | PnL: 1.50% | $2.82 +2025-03-10 16:16:04,183 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3015857142855 | Take profit: 2020.1651214285714 +2025-03-10 16:16:04,511 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$0.00 +2025-03-10 16:16:04,512 - INFO - Episode 38: Reward=14.09, Balance=$105.57, Win Rate=100.0%, Trades=2, Episode PnL=$5.57, Total PnL=$363.64, Max Drawdown=0.0%, Pred Accuracy=98.9% +2025-03-10 16:16:04,512 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:16:04,514 - INFO - Refreshing data for episode 39 +2025-03-10 16:16:04,514 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:16:04,825 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:16:04,830 - INFO - Initialized environment with 100 candles +2025-03-10 16:16:04,865 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.1892892857145 | Take profit: 2088.6620160714283 +2025-03-10 16:16:05,962 - INFO - TAKE PROFIT hit for short at 2088.6620160714283 | PnL: 1.50% | $2.75 +2025-03-10 16:16:05,984 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.029489285714 | Take profit: 2049.3014160714283 +2025-03-10 16:16:06,198 - INFO - TAKE PROFIT hit for short at 2049.3014160714283 | PnL: 1.50% | $2.82 +2025-03-10 16:16:06,225 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3015892857143 | Take profit: 2020.1651160714287 +2025-03-10 16:16:06,250 - INFO - CLOSED short at 2043.51 | PnL: 0.37% | $0.55 +2025-03-10 16:16:06,250 - INFO - OPENED LONG at 2043.51 | Stop loss: 2033.2458607142858 | Take profit: 2074.2325339285717 +2025-03-10 16:16:06,277 - INFO - CLOSED long at 2052.89 | PnL: 0.46% | $0.74 +2025-03-10 16:16:06,277 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.201039285714 | Take profit: 2022.0267660714285 +2025-03-10 16:16:06,508 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.71, Avg Loss=$0.00 +2025-03-10 16:16:06,509 - INFO - Episode 39: Reward=16.50, Balance=$106.86, Win Rate=100.0%, Trades=4, Episode PnL=$6.11, Total PnL=$370.50, Max Drawdown=0.0%, Pred Accuracy=99.1% +2025-03-10 16:16:06,509 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:16:06,509 - INFO - Refreshing data for episode 40 +2025-03-10 16:16:06,511 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:16:06,835 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:16:06,847 - INFO - Initialized environment with 100 candles +2025-03-10 16:16:07,619 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.189292857143 | Take profit: 2088.6620107142858 +2025-03-10 16:16:08,747 - INFO - TAKE PROFIT hit for short at 2088.6620107142858 | PnL: 1.50% | $2.75 +2025-03-10 16:16:08,771 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.029492857143 | Take profit: 2049.301410714286 +2025-03-10 16:16:08,978 - INFO - TAKE PROFIT hit for short at 2049.301410714286 | PnL: 1.50% | $2.82 +2025-03-10 16:16:09,003 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3015928571426 | Take profit: 2020.1651107142857 +2025-03-10 16:16:09,310 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$0.00 +2025-03-10 16:16:09,312 - INFO - Episode 40: Reward=14.07, Balance=$105.57, Win Rate=100.0%, Trades=2, Episode PnL=$5.57, Total PnL=$376.06, Max Drawdown=0.0%, Pred Accuracy=99.1% +2025-03-10 16:16:09,463 - INFO - Model saved to checkpoints/trading_agent_episode_40.pt +2025-03-10 16:16:09,463 - INFO - Checkpoint saved at episode 40 +2025-03-10 16:16:09,463 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:16:10,745 - INFO - Visualization saved for episode 40 +2025-03-10 16:16:12,580 - INFO - Visualization saved for episode 40 +2025-03-10 16:16:12,598 - INFO - Refreshing data for episode 41 +2025-03-10 16:16:12,598 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:16:12,895 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:16:12,904 - INFO - Initialized environment with 100 candles +2025-03-10 16:16:12,994 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.190178571429 | Take profit: 2088.6606821428572 +2025-03-10 16:16:13,630 - INFO - CLOSED short at 2115.07 | PnL: 0.26% | $0.31 +2025-03-10 16:16:13,631 - INFO - OPENED LONG at 2115.07 | Stop loss: 2104.4471714285714 | Take profit: 2146.867267857143 +2025-03-10 16:16:13,664 - INFO - CLOSED long at 2098.24 | PnL: -0.80% | $-1.76 +2025-03-10 16:16:13,665 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.7786785714284 | Take profit: 2066.695182142857 +2025-03-10 16:16:14,138 - INFO - CLOSED short at 2090.99 | PnL: 0.35% | $0.47 +2025-03-10 16:16:14,138 - INFO - OPENED LONG at 2090.99 | Stop loss: 2080.4875714285713 | Take profit: 2122.4260678571427 +2025-03-10 16:16:14,161 - INFO - CLOSED long at 2084.95 | PnL: -0.29% | $-0.75 +2025-03-10 16:16:14,161 - INFO - OPENED SHORT at 2084.95 | Stop loss: 2095.422228571428 | Take profit: 2053.604532142857 +2025-03-10 16:16:14,405 - INFO - TAKE PROFIT hit for short at 2053.604532142857 | PnL: 1.50% | $2.70 +2025-03-10 16:16:14,436 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3024785714288 | Take profit: 2020.1637821428571 +2025-03-10 16:16:14,723 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.16, Avg Loss=$-1.26 +2025-03-10 16:16:14,724 - INFO - Episode 41: Reward=11.14, Balance=$100.97, Win Rate=60.0%, Trades=5, Episode PnL=$3.48, Total PnL=$377.03, Max Drawdown=0.0%, Pred Accuracy=99.2% +2025-03-10 16:16:14,724 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:16:14,724 - INFO - Refreshing data for episode 42 +2025-03-10 16:16:14,725 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:16:15,053 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:16:15,064 - INFO - Initialized environment with 100 candles +2025-03-10 16:16:15,102 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.190178571429 | Take profit: 2088.6606821428572 +2025-03-10 16:16:15,177 - INFO - CLOSED short at 2121.42 | PnL: -0.04% | $-0.28 +2025-03-10 16:16:15,200 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1500785714284 | Take profit: 2084.700982142857 +2025-03-10 16:16:15,319 - INFO - STOP LOSS hit for short at 2127.1500785714284 | PnL: -0.50% | $-1.17 +2025-03-10 16:16:15,348 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4413285714286 | Take profit: 2092.827232142857 +2025-03-10 16:16:15,932 - INFO - TAKE PROFIT hit for short at 2092.827232142857 | PnL: 1.50% | $2.71 +2025-03-10 16:16:16,021 - INFO - OPENED SHORT at 2096.36 | Stop loss: 2106.8892785714283 | Take profit: 2064.8433821428575 +2025-03-10 16:16:16,912 - INFO - TAKE PROFIT hit for short at 2064.8433821428575 | PnL: 1.50% | $2.78 +2025-03-10 16:16:16,945 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3024785714288 | Take profit: 2020.1637821428571 +2025-03-10 16:16:17,313 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.74, Avg Loss=$-0.73 +2025-03-10 16:16:17,313 - INFO - Episode 42: Reward=12.60, Balance=$104.03, Win Rate=50.0%, Trades=4, Episode PnL=$4.03, Total PnL=$381.06, Max Drawdown=1.5%, Pred Accuracy=99.2% +2025-03-10 16:16:17,313 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:16:17,313 - INFO - Refreshing data for episode 43 +2025-03-10 16:16:17,313 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:16:17,639 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:16:17,648 - INFO - Initialized environment with 100 candles +2025-03-10 16:16:17,686 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.190178571429 | Take profit: 2088.6606821428572 +2025-03-10 16:16:18,962 - INFO - TAKE PROFIT hit for short at 2088.6606821428572 | PnL: 1.50% | $2.75 +2025-03-10 16:16:18,988 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0303785714286 | Take profit: 2049.3000821428573 +2025-03-10 16:16:19,207 - INFO - CLOSED short at 2084.11 | PnL: -0.17% | $-0.54 +2025-03-10 16:16:19,207 - INFO - OPENED LONG at 2084.11 | Stop loss: 2073.6419714285717 | Take profit: 2115.442867857143 +2025-03-10 16:16:19,239 - INFO - CLOSED long at 2083.07 | PnL: -0.05% | $-0.30 +2025-03-10 16:16:19,239 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.5328285714286 | Take profit: 2051.7527321428574 +2025-03-10 16:16:19,311 - INFO - TAKE PROFIT hit for short at 2051.7527321428574 | PnL: 1.50% | $2.80 +2025-03-10 16:16:19,339 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3024785714288 | Take profit: 2020.1637821428571 +2025-03-10 16:16:19,710 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.77, Avg Loss=$-0.42 +2025-03-10 16:16:19,711 - INFO - Episode 43: Reward=10.64, Balance=$104.70, Win Rate=50.0%, Trades=4, Episode PnL=$5.00, Total PnL=$385.76, Max Drawdown=0.0%, Pred Accuracy=99.3% +2025-03-10 16:16:19,711 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:16:19,711 - INFO - Refreshing data for episode 44 +2025-03-10 16:16:19,712 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:16:20,025 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:16:20,035 - INFO - Initialized environment with 100 candles +2025-03-10 16:16:20,071 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.190178571429 | Take profit: 2088.6606821428572 +2025-03-10 16:16:20,416 - INFO - CLOSED short at 2116.81 | PnL: 0.18% | $0.15 +2025-03-10 16:16:20,440 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.4013785714287 | Take profit: 2082.987082142857 +2025-03-10 16:16:21,386 - INFO - TAKE PROFIT hit for short at 2082.987082142857 | PnL: 1.50% | $2.75 +2025-03-10 16:16:21,408 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2212285714286 | Take profit: 2053.4075321428572 +2025-03-10 16:16:21,688 - INFO - TAKE PROFIT hit for short at 2053.4075321428572 | PnL: 1.50% | $2.82 +2025-03-10 16:16:21,711 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3024785714288 | Take profit: 2020.1637821428571 +2025-03-10 16:16:22,060 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.91, Avg Loss=$0.00 +2025-03-10 16:16:22,061 - INFO - Episode 44: Reward=14.97, Balance=$105.72, Win Rate=100.0%, Trades=3, Episode PnL=$5.72, Total PnL=$391.49, Max Drawdown=0.0%, Pred Accuracy=99.3% +2025-03-10 16:16:22,061 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:16:22,062 - INFO - Refreshing data for episode 45 +2025-03-10 16:16:22,062 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:16:22,378 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:16:22,388 - INFO - Initialized environment with 100 candles +2025-03-10 16:16:23,158 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.190178571429 | Take profit: 2088.6606821428572 +2025-03-10 16:16:24,475 - INFO - TAKE PROFIT hit for short at 2088.6606821428572 | PnL: 1.50% | $2.75 +2025-03-10 16:16:24,495 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0303785714286 | Take profit: 2049.3000821428573 +2025-03-10 16:16:24,570 - INFO - CLOSED short at 2084.25 | PnL: -0.18% | $-0.56 +2025-03-10 16:16:24,594 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8443285714284 | Take profit: 2054.018232142857 +2025-03-10 16:16:24,782 - INFO - TAKE PROFIT hit for short at 2054.018232142857 | PnL: 1.50% | $2.80 +2025-03-10 16:16:24,817 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3024785714288 | Take profit: 2020.1637821428571 +2025-03-10 16:16:25,064 - INFO - CLOSED short at 2044.1 | PnL: 0.34% | $0.49 +2025-03-10 16:16:25,114 - INFO - OPENED SHORT at 2043.59 | Stop loss: 2053.8554285714285 | Take profit: 2012.864932142857 +2025-03-10 16:16:25,210 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.01, Avg Loss=$-0.56 +2025-03-10 16:16:25,211 - INFO - Episode 45: Reward=13.55, Balance=$105.48, Win Rate=75.0%, Trades=4, Episode PnL=$5.48, Total PnL=$396.97, Max Drawdown=0.5%, Pred Accuracy=99.3% +2025-03-10 16:16:25,211 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:16:25,212 - INFO - Refreshing data for episode 46 +2025-03-10 16:16:25,212 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:16:25,530 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:16:25,539 - INFO - Initialized environment with 100 candles +2025-03-10 16:16:25,577 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.190178571429 | Take profit: 2088.6606821428572 +2025-03-10 16:16:26,943 - INFO - TAKE PROFIT hit for short at 2088.6606821428572 | PnL: 1.50% | $2.75 +2025-03-10 16:16:26,971 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0303785714286 | Take profit: 2049.3000821428573 +2025-03-10 16:16:27,293 - INFO - TAKE PROFIT hit for short at 2049.3000821428573 | PnL: 1.50% | $2.82 +2025-03-10 16:16:27,318 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3024785714288 | Take profit: 2020.1637821428571 +2025-03-10 16:16:27,363 - INFO - CLOSED short at 2052.89 | PnL: -0.09% | $-0.40 +2025-03-10 16:16:27,389 - INFO - OPENED SHORT at 2053.22 | Stop loss: 2063.5335785714287 | Take profit: 2022.3504821428571 +2025-03-10 16:16:27,686 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$-0.40 +2025-03-10 16:16:27,686 - INFO - Episode 46: Reward=12.60, Balance=$105.17, Win Rate=66.7%, Trades=3, Episode PnL=$5.17, Total PnL=$402.13, Max Drawdown=0.4%, Pred Accuracy=99.4% +2025-03-10 16:16:27,687 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:16:27,687 - INFO - Refreshing data for episode 47 +2025-03-10 16:16:27,687 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:16:27,991 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:16:28,001 - INFO - Initialized environment with 100 candles +2025-03-10 16:16:28,039 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.1912464285715 | Take profit: 2088.659080357143 +2025-03-10 16:16:29,360 - INFO - TAKE PROFIT hit for short at 2088.659080357143 | PnL: 1.50% | $2.74 +2025-03-10 16:16:29,378 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0314464285716 | Take profit: 2049.2984803571426 +2025-03-10 16:16:29,700 - INFO - TAKE PROFIT hit for short at 2049.2984803571426 | PnL: 1.50% | $2.82 +2025-03-10 16:16:29,726 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3035464285713 | Take profit: 2020.162180357143 +2025-03-10 16:16:30,095 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$0.00 +2025-03-10 16:16:30,096 - INFO - Episode 47: Reward=14.07, Balance=$105.56, Win Rate=100.0%, Trades=2, Episode PnL=$5.56, Total PnL=$407.70, Max Drawdown=0.0%, Pred Accuracy=99.3% +2025-03-10 16:16:30,096 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:16:30,097 - INFO - Refreshing data for episode 48 +2025-03-10 16:16:30,097 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:16:30,435 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:16:30,446 - INFO - Initialized environment with 100 candles +2025-03-10 16:16:30,487 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.191603571429 | Take profit: 2088.658544642857 +2025-03-10 16:16:31,127 - INFO - CLOSED short at 2115.07 | PnL: 0.26% | $0.31 +2025-03-10 16:16:31,127 - INFO - OPENED LONG at 2115.07 | Stop loss: 2104.4457464285715 | Take profit: 2146.869405357143 +2025-03-10 16:16:31,152 - INFO - CLOSED long at 2098.24 | PnL: -0.80% | $-1.76 +2025-03-10 16:16:31,152 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.7801035714283 | Take profit: 2066.693044642857 +2025-03-10 16:16:31,395 - INFO - CLOSED short at 2096.19 | PnL: 0.10% | $-0.00 +2025-03-10 16:16:31,424 - INFO - OPENED SHORT at 2100.0 | Stop loss: 2110.5489035714286 | Take profit: 2068.426644642857 +2025-03-10 16:16:32,037 - INFO - TAKE PROFIT hit for short at 2068.426644642857 | PnL: 1.50% | $2.70 +2025-03-10 16:16:32,086 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.590403571429 | Take profit: 2017.5021446428575 +2025-03-10 16:16:32,453 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.51, Avg Loss=$-0.88 +2025-03-10 16:16:32,454 - INFO - Episode 48: Reward=10.90, Balance=$101.25, Win Rate=50.0%, Trades=4, Episode PnL=$3.01, Total PnL=$408.95, Max Drawdown=1.5%, Pred Accuracy=99.4% +2025-03-10 16:16:32,454 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:16:32,455 - INFO - Refreshing data for episode 49 +2025-03-10 16:16:32,455 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:16:32,788 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:16:32,800 - INFO - Initialized environment with 100 candles +2025-03-10 16:16:32,948 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.191603571429 | Take profit: 2088.658544642857 +2025-03-10 16:16:34,363 - INFO - TAKE PROFIT hit for short at 2088.658544642857 | PnL: 1.50% | $2.74 +2025-03-10 16:16:34,386 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0318035714286 | Take profit: 2049.297944642857 +2025-03-10 16:16:34,697 - INFO - CLOSED short at 2048.3 | PnL: 1.55% | $2.91 +2025-03-10 16:16:34,727 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3039035714287 | Take profit: 2020.1616446428573 +2025-03-10 16:16:35,141 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.83, Avg Loss=$0.00 +2025-03-10 16:16:35,142 - INFO - Episode 49: Reward=16.65, Balance=$105.66, Win Rate=100.0%, Trades=2, Episode PnL=$5.66, Total PnL=$414.61, Max Drawdown=0.0%, Pred Accuracy=99.4% +2025-03-10 16:16:35,142 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:16:35,143 - INFO - Early stopping triggered after 50 episodes without improvement +2025-03-10 16:16:35,291 - INFO - Model saved to models/trading_agent_final.pt +2025-03-10 16:16:36,316 - INFO - Training results saved to training_results.png +2025-03-10 16:16:36,470 - INFO - Model saved to models/trading_agent_continuous_50.pt +2025-03-10 16:16:41,485 - INFO - Starting training batch 3 +2025-03-10 16:16:41,486 - INFO - Refreshing data for new training batch +2025-03-10 16:16:41,486 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:16:41,849 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 16:16:41,854 - INFO - Initialized environment with 500 candles +2025-03-10 16:16:41,854 - INFO - Updated environment with fresh candles +2025-03-10 16:16:41,860 - INFO - Starting training on device: cuda +2025-03-10 16:16:41,860 - INFO - Loading best model from models/trading_agent_best_pnl.pt to resume training +2025-03-10 16:16:41,860 - INFO - Loading model from models/trading_agent_best_pnl.pt +2025-03-10 16:16:42,055 - INFO - Model loaded successfully with weights_only=True +2025-03-10 16:16:42,062 - INFO - Resumed with best metrics - Reward: 202.74, PnL: $7.30, Win Rate: 66.7% +2025-03-10 16:16:42,067 - INFO - Refreshing data for episode 0 +2025-03-10 16:16:42,067 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:16:42,374 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:16:42,384 - INFO - Initialized environment with 100 candles +2025-03-10 16:16:43,194 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.639667857143 | Take profit: 2086.1554982142857 +2025-03-10 16:16:43,759 - INFO - CLOSED short at 2115.07 | PnL: 0.14% | $0.07 +2025-03-10 16:16:43,787 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.7808678571423 | Take profit: 2066.6918982142856 +2025-03-10 16:16:44,396 - INFO - CLOSED short at 2085.37 | PnL: 0.61% | $1.00 +2025-03-10 16:16:44,420 - INFO - OPENED SHORT at 2084.11 | Stop loss: 2094.580217857143 | Take profit: 2052.773848214286 +2025-03-10 16:16:44,523 - INFO - TAKE PROFIT hit for short at 2052.773848214286 | PnL: 1.50% | $2.77 +2025-03-10 16:16:44,552 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3046678571427 | Take profit: 2020.1604982142856 +2025-03-10 16:16:44,834 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.28, Avg Loss=$0.00 +2025-03-10 16:16:44,834 - INFO - Episode 0: Reward=29.97, Balance=$103.85, Win Rate=100.0%, Trades=3, Episode PnL=$3.85, Total PnL=$418.46, Max Drawdown=0.0%, Pred Accuracy=99.7% +2025-03-10 16:16:44,974 - INFO - Model saved to checkpoints/trading_agent_episode_0.pt +2025-03-10 16:16:44,976 - INFO - Checkpoint saved at episode 0 +2025-03-10 16:16:46,370 - INFO - Visualization saved for episode 0 +2025-03-10 16:16:48,207 - INFO - Visualization saved for episode 0 +2025-03-10 16:16:48,226 - INFO - Refreshing data for episode 1 +2025-03-10 16:16:48,227 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:16:48,542 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:16:48,554 - INFO - Initialized environment with 100 candles +2025-03-10 16:16:48,853 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.193389285714 | Take profit: 2088.6558660714286 +2025-03-10 16:16:48,970 - INFO - CLOSED short at 2119.02 | PnL: 0.07% | $-0.06 +2025-03-10 16:16:49,001 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6154892857144 | Take profit: 2089.0695660714287 +2025-03-10 16:16:49,846 - INFO - TAKE PROFIT hit for short at 2089.0695660714287 | PnL: 1.50% | $2.74 +2025-03-10 16:16:49,875 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3398892857144 | Take profit: 2058.4163660714285 +2025-03-10 16:16:49,951 - INFO - STOP LOSS hit for short at 2100.3398892857144 | PnL: -0.50% | $-1.21 +2025-03-10 16:16:49,974 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.977739285714 | Take profit: 2071.7828160714284 +2025-03-10 16:16:50,588 - INFO - CLOSED short at 2083.07 | PnL: 0.97% | $1.72 +2025-03-10 16:16:50,588 - INFO - OPENED LONG at 2083.07 | Stop loss: 2072.6039607142857 | Take profit: 2114.3920839285715 +2025-03-10 16:16:50,625 - INFO - CLOSED long at 2075.07 | PnL: -0.38% | $-0.98 +2025-03-10 16:16:50,625 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.4960392857142 | Take profit: 2043.8679160714287 +2025-03-10 16:16:50,721 - INFO - TAKE PROFIT hit for short at 2043.8679160714287 | PnL: 1.50% | $2.80 +2025-03-10 16:16:50,747 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.2051392857143 | Take profit: 2022.0206160714283 +2025-03-10 16:16:51,084 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.42, Avg Loss=$-0.75 +2025-03-10 16:16:51,085 - INFO - Episode 1: Reward=12.89, Balance=$105.02, Win Rate=50.0%, Trades=6, Episode PnL=$6.00, Total PnL=$423.48, Max Drawdown=1.2%, Pred Accuracy=99.7% +2025-03-10 16:16:51,086 - INFO - Refreshing data for episode 2 +2025-03-10 16:16:51,086 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:16:51,380 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:16:51,390 - INFO - Initialized environment with 100 candles +2025-03-10 16:16:51,424 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.193389285714 | Take profit: 2088.6558660714286 +2025-03-10 16:16:52,258 - INFO - CLOSED short at 2098.24 | PnL: 1.05% | $1.86 +2025-03-10 16:16:52,259 - INFO - OPENED LONG at 2098.24 | Stop loss: 2087.6981107142856 | Take profit: 2129.789633928571 +2025-03-10 16:16:52,287 - INFO - CLOSED long at 2098.28 | PnL: 0.00% | $-0.20 +2025-03-10 16:16:52,287 - INFO - OPENED SHORT at 2098.28 | Stop loss: 2108.8220892857144 | Take profit: 2066.729766071429 +2025-03-10 16:16:53,118 - INFO - CLOSED short at 2084.25 | PnL: 0.67% | $1.13 +2025-03-10 16:16:53,119 - INFO - OPENED LONG at 2084.25 | Stop loss: 2073.778060714286 | Take profit: 2115.5897839285717 +2025-03-10 16:16:53,152 - INFO - CLOSED long at 2085.37 | PnL: 0.05% | $-0.09 +2025-03-10 16:16:53,152 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8475392857144 | Take profit: 2054.0134160714283 +2025-03-10 16:16:53,408 - INFO - TAKE PROFIT hit for short at 2054.0134160714283 | PnL: 1.50% | $2.81 +2025-03-10 16:16:53,443 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305689285714 | Take profit: 2020.1589660714285 +2025-03-10 16:16:53,865 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.93, Avg Loss=$-0.14 +2025-03-10 16:16:53,865 - INFO - Episode 2: Reward=15.07, Balance=$105.51, Win Rate=60.0%, Trades=5, Episode PnL=$5.80, Total PnL=$428.99, Max Drawdown=0.0%, Pred Accuracy=99.8% +2025-03-10 16:16:53,866 - INFO - Refreshing data for episode 3 +2025-03-10 16:16:53,866 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:16:54,174 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:16:54,187 - INFO - Initialized environment with 100 candles +2025-03-10 16:16:54,227 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.193389285714 | Take profit: 2088.6558660714286 +2025-03-10 16:16:54,389 - INFO - CLOSED short at 2120.96 | PnL: -0.02% | $-0.23 +2025-03-10 16:16:54,445 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.5751892857147 | Take profit: 2092.9504660714288 +2025-03-10 16:16:55,053 - INFO - CLOSED short at 2115.07 | PnL: 0.46% | $0.71 +2025-03-10 16:16:55,053 - INFO - OPENED LONG at 2115.07 | Stop loss: 2104.443960714286 | Take profit: 2146.872083928572 +2025-03-10 16:16:55,080 - INFO - CLOSED long at 2098.24 | PnL: -0.80% | $-1.76 +2025-03-10 16:16:55,080 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.781889285714 | Take profit: 2066.6903660714283 +2025-03-10 16:16:55,105 - INFO - CLOSED short at 2098.28 | PnL: -0.00% | $-0.20 +2025-03-10 16:16:55,105 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.737910714286 | Take profit: 2129.8302339285715 +2025-03-10 16:16:55,133 - INFO - CLOSED long at 2091.36 | PnL: -0.33% | $-0.83 +2025-03-10 16:16:55,133 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.8674892857143 | Take profit: 2059.9135660714287 +2025-03-10 16:16:55,229 - INFO - CLOSED short at 2089.04 | PnL: 0.11% | $0.02 +2025-03-10 16:16:55,283 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3398892857144 | Take profit: 2058.4163660714285 +2025-03-10 16:16:55,435 - INFO - STOP LOSS hit for short at 2100.3398892857144 | PnL: -0.50% | $-1.15 +2025-03-10 16:16:55,467 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.977739285714 | Take profit: 2071.7828160714284 +2025-03-10 16:16:55,821 - INFO - CLOSED short at 2084.95 | PnL: 0.88% | $1.47 +2025-03-10 16:16:55,849 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0335892857142 | Take profit: 2049.2952660714286 +2025-03-10 16:16:56,116 - INFO - TAKE PROFIT hit for short at 2049.2952660714286 | PnL: 1.50% | $2.69 +2025-03-10 16:16:56,148 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305689285714 | Take profit: 2020.1589660714285 +2025-03-10 16:16:56,484 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.22, Avg Loss=$-0.83 +2025-03-10 16:16:56,486 - INFO - Episode 3: Reward=10.26, Balance=$100.72, Win Rate=44.4%, Trades=9, Episode PnL=$3.30, Total PnL=$429.71, Max Drawdown=3.4%, Pred Accuracy=99.8% +2025-03-10 16:16:56,486 - INFO - Refreshing data for episode 4 +2025-03-10 16:16:56,486 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:16:56,781 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:16:56,795 - INFO - Initialized environment with 100 candles +2025-03-10 16:16:56,831 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.193389285714 | Take profit: 2088.6558660714286 +2025-03-10 16:16:56,935 - INFO - CLOSED short at 2116.52 | PnL: 0.19% | $0.17 +2025-03-10 16:16:56,961 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6657892857143 | Take profit: 2087.158666071429 +2025-03-10 16:16:57,244 - INFO - CLOSED short at 2114.1 | PnL: 0.23% | $0.26 +2025-03-10 16:16:57,245 - INFO - OPENED LONG at 2114.1 | Stop loss: 2103.478810714286 | Take profit: 2145.8875339285714 +2025-03-10 16:16:57,269 - INFO - CLOSED long at 2115.11 | PnL: 0.05% | $-0.10 +2025-03-10 16:16:57,269 - INFO - OPENED SHORT at 2115.11 | Stop loss: 2125.7362392857144 | Take profit: 2083.307316071429 +2025-03-10 16:16:57,469 - INFO - CLOSED short at 2098.28 | PnL: 0.80% | $1.36 +2025-03-10 16:16:57,470 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.737910714286 | Take profit: 2129.8302339285715 +2025-03-10 16:16:57,502 - INFO - CLOSED long at 2091.36 | PnL: -0.33% | $-0.85 +2025-03-10 16:16:57,503 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.8674892857143 | Take profit: 2059.9135660714287 +2025-03-10 16:16:57,668 - INFO - STOP LOSS hit for short at 2101.8674892857143 | PnL: -0.50% | $-1.19 +2025-03-10 16:16:57,695 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.977739285714 | Take profit: 2071.7828160714284 +2025-03-10 16:16:58,074 - INFO - CLOSED short at 2084.25 | PnL: 0.91% | $1.58 +2025-03-10 16:16:58,074 - INFO - OPENED LONG at 2084.25 | Stop loss: 2073.778060714286 | Take profit: 2115.5897839285717 +2025-03-10 16:16:58,097 - INFO - CLOSED long at 2085.37 | PnL: 0.05% | $-0.09 +2025-03-10 16:16:58,098 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8475392857144 | Take profit: 2054.0134160714283 +2025-03-10 16:16:58,225 - INFO - TAKE PROFIT hit for short at 2054.0134160714283 | PnL: 1.50% | $2.77 +2025-03-10 16:16:58,248 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305689285714 | Take profit: 2020.1589660714285 +2025-03-10 16:16:58,545 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 80.0% in downtrends | Avg Win=$1.23, Avg Loss=$-0.56 +2025-03-10 16:16:58,546 - INFO - Episode 4: Reward=28.92, Balance=$103.91, Win Rate=55.6%, Trades=9, Episode PnL=$4.96, Total PnL=$433.62, Max Drawdown=0.5%, Pred Accuracy=99.8% +2025-03-10 16:16:58,547 - INFO - Refreshing data for episode 5 +2025-03-10 16:16:58,547 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:16:58,864 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:16:58,878 - INFO - Initialized environment with 100 candles +2025-03-10 16:16:59,640 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.193389285714 | Take profit: 2088.6558660714286 +2025-03-10 16:17:00,211 - INFO - CLOSED short at 2116.06 | PnL: 0.21% | $0.22 +2025-03-10 16:17:00,255 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.8367392857144 | Take profit: 2083.4058160714285 +2025-03-10 16:17:00,674 - INFO - CLOSED short at 2089.04 | PnL: 1.24% | $2.23 +2025-03-10 16:17:00,731 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3398892857144 | Take profit: 2058.4163660714285 +2025-03-10 16:17:00,835 - INFO - STOP LOSS hit for short at 2100.3398892857144 | PnL: -0.50% | $-1.21 +2025-03-10 16:17:00,862 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.977739285714 | Take profit: 2071.7828160714284 +2025-03-10 16:17:01,369 - INFO - TAKE PROFIT hit for short at 2071.7828160714284 | PnL: 1.50% | $2.78 +2025-03-10 16:17:01,396 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5921892857145 | Take profit: 2017.4994660714287 +2025-03-10 16:17:01,761 - INFO - CLOSED short at 2042.0 | PnL: 0.31% | $0.42 +2025-03-10 16:17:01,782 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.41, Avg Loss=$-1.21 +2025-03-10 16:17:01,782 - INFO - Episode 5: Reward=18.40, Balance=$104.43, Win Rate=80.0%, Trades=5, Episode PnL=$4.43, Total PnL=$438.06, Max Drawdown=1.2%, Pred Accuracy=99.8% +2025-03-10 16:17:01,783 - INFO - Refreshing data for episode 6 +2025-03-10 16:17:01,783 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:17:02,116 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:17:02,127 - INFO - Initialized environment with 100 candles +2025-03-10 16:17:02,263 - INFO - OPENED SHORT at 2120.54 | Stop loss: 2131.193389285714 | Take profit: 2088.6558660714286 +2025-03-10 16:17:03,423 - INFO - CLOSED short at 2105.26 | PnL: 0.72% | $1.21 +2025-03-10 16:17:03,424 - INFO - OPENED LONG at 2105.26 | Stop loss: 2094.683010714286 | Take profit: 2136.914933928572 +2025-03-10 16:17:03,479 - INFO - CLOSED long at 2099.63 | PnL: -0.27% | $-0.73 +2025-03-10 16:17:03,479 - INFO - OPENED SHORT at 2099.63 | Stop loss: 2110.1788392857143 | Take profit: 2068.059516071429 +2025-03-10 16:17:03,981 - INFO - TAKE PROFIT hit for short at 2068.059516071429 | PnL: 1.50% | $2.75 +2025-03-10 16:17:04,036 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305689285714 | Take profit: 2020.1589660714285 +2025-03-10 16:17:04,100 - INFO - CLOSED short at 2053.22 | PnL: -0.11% | $-0.42 +2025-03-10 16:17:04,100 - INFO - OPENED LONG at 2053.22 | Stop loss: 2042.9032107142857 | Take profit: 2084.0943339285714 +2025-03-10 16:17:04,121 - INFO - CLOSED long at 2058.11 | PnL: 0.24% | $0.28 +2025-03-10 16:17:04,122 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.4512392857146 | Take profit: 2027.162316071429 +2025-03-10 16:17:04,344 - INFO - CLOSED short at 2042.0 | PnL: 0.78% | $1.37 +2025-03-10 16:17:04,385 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.40, Avg Loss=$-0.57 +2025-03-10 16:17:04,386 - INFO - Episode 6: Reward=28.09, Balance=$104.47, Win Rate=66.7%, Trades=6, Episode PnL=$4.92, Total PnL=$442.53, Max Drawdown=0.0%, Pred Accuracy=99.9% +2025-03-10 16:17:04,387 - INFO - Refreshing data for episode 7 +2025-03-10 16:17:04,387 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:17:04,712 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:17:04,724 - INFO - Initialized environment with 100 candles +2025-03-10 16:17:04,760 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.6301357142856 | Take profit: 2086.1697964285713 +2025-03-10 16:17:06,156 - INFO - TAKE PROFIT hit for short at 2086.1697964285713 | PnL: 1.50% | $2.75 +2025-03-10 16:17:06,179 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0230357142855 | Take profit: 2049.311096428571 +2025-03-10 16:17:06,500 - INFO - TAKE PROFIT hit for short at 2049.311096428571 | PnL: 1.50% | $2.83 +2025-03-10 16:17:06,524 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.2951357142856 | Take profit: 2020.1747964285714 +2025-03-10 16:17:06,857 - INFO - CLOSED short at 2043.59 | PnL: 0.36% | $0.54 +2025-03-10 16:17:06,880 - INFO - OPENED SHORT at 2042.0 | Stop loss: 2052.2501357142855 | Take profit: 2011.3097964285714 +2025-03-10 16:17:06,923 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.04, Avg Loss=$0.00 +2025-03-10 16:17:06,924 - INFO - Episode 7: Reward=15.31, Balance=$106.12, Win Rate=100.0%, Trades=3, Episode PnL=$6.12, Total PnL=$448.65, Max Drawdown=0.0%, Pred Accuracy=99.8% +2025-03-10 16:17:06,924 - INFO - Refreshing data for episode 8 +2025-03-10 16:17:06,924 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:17:07,243 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:17:07,254 - INFO - Initialized environment with 100 candles +2025-03-10 16:17:07,525 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.6308214285714 | Take profit: 2086.168767857143 +2025-03-10 16:17:08,197 - INFO - CLOSED short at 2089.84 | PnL: 1.33% | $2.41 +2025-03-10 16:17:08,224 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.7117714285714 | Take profit: 2064.685917857143 +2025-03-10 16:17:08,748 - INFO - TAKE PROFIT hit for short at 2064.685917857143 | PnL: 1.50% | $2.82 +2025-03-10 16:17:08,772 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.2958214285713 | Take profit: 2020.173767857143 +2025-03-10 16:17:09,081 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.62, Avg Loss=$0.00 +2025-03-10 16:17:09,082 - INFO - Episode 8: Reward=16.33, Balance=$105.23, Win Rate=100.0%, Trades=2, Episode PnL=$5.23, Total PnL=$453.88, Max Drawdown=0.0%, Pred Accuracy=99.8% +2025-03-10 16:17:09,082 - INFO - Refreshing data for episode 9 +2025-03-10 16:17:09,082 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:17:09,404 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:17:09,414 - INFO - Initialized environment with 100 candles +2025-03-10 16:17:09,456 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.6308214285714 | Take profit: 2086.168767857143 +2025-03-10 16:17:09,914 - INFO - CLOSED short at 2114.57 | PnL: 0.16% | $0.12 +2025-03-10 16:17:09,943 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.1736714285717 | Take profit: 2080.820217857143 +2025-03-10 16:17:10,603 - INFO - TAKE PROFIT hit for short at 2080.820217857143 | PnL: 1.50% | $2.76 +2025-03-10 16:17:10,675 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.214571428571 | Take profit: 2053.4175178571427 +2025-03-10 16:17:10,942 - INFO - TAKE PROFIT hit for short at 2053.4175178571427 | PnL: 1.50% | $2.83 +2025-03-10 16:17:10,969 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.2958214285713 | Take profit: 2020.173767857143 +2025-03-10 16:17:11,356 - INFO - CLOSED short at 2042.0 | PnL: 0.44% | $0.70 +2025-03-10 16:17:11,357 - INFO - OPENED LONG at 2042.0 | Stop loss: 2031.7491785714285 | Take profit: 2072.691232142857 +2025-03-10 16:17:11,407 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.60, Avg Loss=$0.00 +2025-03-10 16:17:11,408 - INFO - Episode 9: Reward=15.55, Balance=$106.41, Win Rate=100.0%, Trades=4, Episode PnL=$6.41, Total PnL=$460.29, Max Drawdown=0.0%, Pred Accuracy=99.7% +2025-03-10 16:17:11,410 - INFO - Refreshing data for episode 10 +2025-03-10 16:17:11,410 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:17:11,728 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:17:11,737 - INFO - Initialized environment with 100 candles +2025-03-10 16:17:12,671 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.630839285714 | Take profit: 2086.1687410714285 +2025-03-10 16:17:13,909 - INFO - CLOSED short at 2096.19 | PnL: 1.03% | $1.82 +2025-03-10 16:17:13,937 - INFO - OPENED SHORT at 2100.0 | Stop loss: 2110.5408392857144 | Take profit: 2068.4387410714285 +2025-03-10 16:17:14,679 - INFO - TAKE PROFIT hit for short at 2068.4387410714285 | PnL: 1.50% | $2.80 +2025-03-10 16:17:14,711 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.582339285714 | Take profit: 2017.5142410714288 +2025-03-10 16:17:15,154 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.31, Avg Loss=$0.00 +2025-03-10 16:17:15,154 - INFO - Episode 10: Reward=15.93, Balance=$104.63, Win Rate=100.0%, Trades=2, Episode PnL=$4.63, Total PnL=$464.92, Max Drawdown=0.0%, Pred Accuracy=99.6% +2025-03-10 16:17:15,312 - INFO - Model saved to checkpoints/trading_agent_episode_10.pt +2025-03-10 16:17:15,313 - INFO - Checkpoint saved at episode 10 +2025-03-10 16:17:16,340 - INFO - Visualization saved for episode 10 +2025-03-10 16:17:18,538 - INFO - Visualization saved for episode 10 +2025-03-10 16:17:18,554 - INFO - Refreshing data for episode 11 +2025-03-10 16:17:18,555 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:17:18,878 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:17:18,889 - INFO - Initialized environment with 100 candles +2025-03-10 16:17:19,231 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.630839285714 | Take profit: 2086.1687410714285 +2025-03-10 16:17:20,565 - INFO - TAKE PROFIT hit for short at 2086.1687410714285 | PnL: 1.50% | $2.75 +2025-03-10 16:17:20,592 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0237392857143 | Take profit: 2049.3100410714283 +2025-03-10 16:17:20,920 - INFO - TAKE PROFIT hit for short at 2049.3100410714283 | PnL: 1.50% | $2.83 +2025-03-10 16:17:20,946 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.2958392857145 | Take profit: 2020.1737410714286 +2025-03-10 16:17:21,361 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.79, Avg Loss=$0.00 +2025-03-10 16:17:21,362 - INFO - Episode 11: Reward=14.09, Balance=$105.58, Win Rate=100.0%, Trades=2, Episode PnL=$5.58, Total PnL=$470.50, Max Drawdown=0.0%, Pred Accuracy=99.3% +2025-03-10 16:17:21,363 - INFO - Refreshing data for episode 12 +2025-03-10 16:17:21,363 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:17:21,701 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:17:21,712 - INFO - Initialized environment with 100 candles +2025-03-10 16:17:21,992 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.449932142857 | Take profit: 2089.9116017857145 +2025-03-10 16:17:22,901 - INFO - TAKE PROFIT hit for short at 2089.9116017857145 | PnL: 1.50% | $2.75 +2025-03-10 16:17:22,926 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3301321428576 | Take profit: 2058.4310017857147 +2025-03-10 16:17:22,997 - INFO - STOP LOSS hit for short at 2100.3301321428576 | PnL: -0.50% | $-1.21 +2025-03-10 16:17:23,039 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9679821428567 | Take profit: 2071.797451785714 +2025-03-10 16:17:23,706 - INFO - TAKE PROFIT hit for short at 2071.797451785714 | PnL: 1.50% | $2.79 +2025-03-10 16:17:23,728 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.582432142857 | Take profit: 2017.5141017857145 +2025-03-10 16:17:24,159 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.77, Avg Loss=$-1.21 +2025-03-10 16:17:24,161 - INFO - Episode 12: Reward=13.92, Balance=$104.33, Win Rate=66.7%, Trades=3, Episode PnL=$4.33, Total PnL=$474.83, Max Drawdown=1.2%, Pred Accuracy=98.8% +2025-03-10 16:17:24,161 - INFO - Refreshing data for episode 13 +2025-03-10 16:17:24,162 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:17:24,509 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:17:24,519 - INFO - Initialized environment with 100 candles +2025-03-10 16:17:24,725 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.630932142857 | Take profit: 2086.1686017857146 +2025-03-10 16:17:25,699 - INFO - CLOSED short at 2103.41 | PnL: 0.69% | $1.16 +2025-03-10 16:17:25,699 - INFO - OPENED LONG at 2103.41 | Stop loss: 2092.8520178571425 | Take profit: 2135.022548214286 +2025-03-10 16:17:25,723 - INFO - CLOSED long at 2104.22 | PnL: 0.04% | $-0.12 +2025-03-10 16:17:25,723 - INFO - OPENED SHORT at 2104.22 | Stop loss: 2114.782032142857 | Take profit: 2072.595301785714 +2025-03-10 16:17:26,073 - INFO - CLOSED short at 2080.58 | PnL: 1.12% | $2.03 +2025-03-10 16:17:26,102 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.214682142857 | Take profit: 2053.4173517857143 +2025-03-10 16:17:26,374 - INFO - TAKE PROFIT hit for short at 2053.4173517857143 | PnL: 1.50% | $2.84 +2025-03-10 16:17:26,417 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.295932142857 | Take profit: 2020.1736017857143 +2025-03-10 16:17:26,822 - INFO - CLOSED short at 2036.71 | PnL: 0.70% | $1.24 +2025-03-10 16:17:26,822 - INFO - OPENED LONG at 2036.71 | Stop loss: 2026.485517857143 | Take profit: 2067.322048214286 +2025-03-10 16:17:26,845 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.81, Avg Loss=$-0.12 +2025-03-10 16:17:26,845 - INFO - Episode 13: Reward=4.01, Balance=$107.14, Win Rate=80.0%, Trades=5, Episode PnL=$7.26, Total PnL=$481.97, Max Drawdown=0.0%, Pred Accuracy=98.0% +2025-03-10 16:17:26,846 - INFO - Refreshing data for episode 14 +2025-03-10 16:17:26,846 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:17:27,163 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:17:27,174 - INFO - Initialized environment with 100 candles +2025-03-10 16:17:27,214 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.630932142857 | Take profit: 2086.1686017857146 +2025-03-10 16:17:27,241 - INFO - CLOSED short at 2121.8 | PnL: -0.18% | $-0.55 +2025-03-10 16:17:27,242 - INFO - OPENED LONG at 2121.8 | Stop loss: 2111.150067857143 | Take profit: 2153.688398214286 +2025-03-10 16:17:27,342 - INFO - CLOSED long at 2119.02 | PnL: -0.13% | $-0.45 +2025-03-10 16:17:27,343 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.656032142857 | Take profit: 2087.173301785714 +2025-03-10 16:17:27,730 - INFO - CLOSED short at 2114.1 | PnL: 0.23% | $0.26 +2025-03-10 16:17:27,759 - INFO - OPENED SHORT at 2115.11 | Stop loss: 2125.726482142857 | Take profit: 2083.3219517857146 +2025-03-10 16:17:28,726 - INFO - TAKE PROFIT hit for short at 2083.3219517857146 | PnL: 1.50% | $2.73 +2025-03-10 16:17:28,780 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.214682142857 | Take profit: 2053.4173517857143 +2025-03-10 16:17:29,024 - INFO - TAKE PROFIT hit for short at 2053.4173517857143 | PnL: 1.50% | $2.81 +2025-03-10 16:17:29,105 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.295932142857 | Take profit: 2020.1736017857143 +2025-03-10 16:17:29,609 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.93, Avg Loss=$-0.50 +2025-03-10 16:17:29,609 - INFO - Episode 14: Reward=-3.27, Balance=$104.80, Win Rate=60.0%, Trades=5, Episode PnL=$5.25, Total PnL=$486.77, Max Drawdown=0.7%, Pred Accuracy=97.5% +2025-03-10 16:17:29,609 - INFO - Refreshing data for episode 15 +2025-03-10 16:17:29,611 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:17:29,962 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:17:29,972 - INFO - Initialized environment with 100 candles +2025-03-10 16:17:30,807 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.632482142857 | Take profit: 2086.166276785714 +2025-03-10 16:17:31,331 - INFO - CLOSED short at 2113.28 | PnL: 0.22% | $0.24 +2025-03-10 16:17:31,331 - INFO - OPENED LONG at 2113.28 | Stop loss: 2102.671117857143 | Take profit: 2145.042923214286 +2025-03-10 16:17:31,398 - INFO - CLOSED long at 2115.07 | PnL: 0.08% | $-0.03 +2025-03-10 16:17:31,399 - INFO - OPENED SHORT at 2115.07 | Stop loss: 2125.687832142857 | Take profit: 2083.2802267857146 +2025-03-10 16:17:32,129 - INFO - TAKE PROFIT hit for short at 2083.2802267857146 | PnL: 1.50% | $2.76 +2025-03-10 16:17:32,155 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.216232142857 | Take profit: 2053.4150267857144 +2025-03-10 16:17:32,410 - INFO - CLOSED short at 2075.07 | PnL: 0.46% | $0.74 +2025-03-10 16:17:32,457 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.583982142857 | Take profit: 2017.5117767857146 +2025-03-10 16:17:32,835 - INFO - CLOSED short at 2043.59 | PnL: 0.23% | $0.26 +2025-03-10 16:17:32,862 - INFO - OPENED SHORT at 2042.0 | Stop loss: 2052.252482142857 | Take profit: 2011.3062767857143 +2025-03-10 16:17:32,908 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.00, Avg Loss=$-0.03 +2025-03-10 16:17:32,909 - INFO - Episode 15: Reward=1.51, Balance=$103.97, Win Rate=80.0%, Trades=5, Episode PnL=$4.00, Total PnL=$490.73, Max Drawdown=0.0%, Pred Accuracy=98.0% +2025-03-10 16:17:32,909 - INFO - Refreshing data for episode 16 +2025-03-10 16:17:32,910 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:17:33,232 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:17:33,245 - INFO - Initialized environment with 100 candles +2025-03-10 16:17:33,282 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.6331464285713 | Take profit: 2086.165280357143 +2025-03-10 16:17:34,200 - INFO - CLOSED short at 2089.84 | PnL: 1.33% | $2.41 +2025-03-10 16:17:34,235 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.7140964285713 | Take profit: 2064.682430357143 +2025-03-10 16:17:35,016 - INFO - TAKE PROFIT hit for short at 2064.682430357143 | PnL: 1.50% | $2.82 +2025-03-10 16:17:35,048 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.2981464285713 | Take profit: 2020.170280357143 +2025-03-10 16:17:35,479 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.61, Avg Loss=$0.00 +2025-03-10 16:17:35,480 - INFO - Episode 16: Reward=2.48, Balance=$105.23, Win Rate=100.0%, Trades=2, Episode PnL=$5.23, Total PnL=$495.96, Max Drawdown=0.0%, Pred Accuracy=98.3% +2025-03-10 16:17:35,481 - INFO - Refreshing data for episode 17 +2025-03-10 16:17:35,481 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:17:35,813 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:17:35,827 - INFO - Initialized environment with 100 candles +2025-03-10 16:17:35,864 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.6331464285713 | Take profit: 2086.165280357143 +2025-03-10 16:17:36,354 - INFO - CLOSED short at 2114.32 | PnL: 0.17% | $0.14 +2025-03-10 16:17:36,354 - INFO - OPENED LONG at 2114.32 | Stop loss: 2103.705253571429 | Take profit: 2146.099519642857 +2025-03-10 16:17:36,379 - INFO - CLOSED long at 2114.57 | PnL: 0.01% | $-0.17 +2025-03-10 16:17:36,379 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.185996428572 | Take profit: 2082.786730357143 +2025-03-10 16:17:37,362 - INFO - TAKE PROFIT hit for short at 2082.786730357143 | PnL: 1.50% | $2.75 +2025-03-10 16:17:37,401 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.216896428571 | Take profit: 2053.4140303571426 +2025-03-10 16:17:37,681 - INFO - TAKE PROFIT hit for short at 2053.4140303571426 | PnL: 1.50% | $2.82 +2025-03-10 16:17:37,742 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.2981464285713 | Take profit: 2020.170280357143 +2025-03-10 16:17:37,935 - INFO - CLOSED short at 2046.76 | PnL: 0.21% | $0.22 +2025-03-10 16:17:37,935 - INFO - OPENED LONG at 2046.76 | Stop loss: 2036.4830535714284 | Take profit: 2077.5261196428573 +2025-03-10 16:17:37,983 - INFO - CLOSED long at 2044.1 | PnL: -0.13% | $-0.48 +2025-03-10 16:17:37,984 - INFO - OPENED SHORT at 2044.1 | Stop loss: 2054.363646428571 | Take profit: 2013.3737803571428 +2025-03-10 16:17:38,130 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.48, Avg Loss=$-0.32 +2025-03-10 16:17:38,130 - INFO - Episode 17: Reward=-1.52, Balance=$105.29, Win Rate=66.7%, Trades=6, Episode PnL=$5.94, Total PnL=$501.25, Max Drawdown=0.0%, Pred Accuracy=98.3% +2025-03-10 16:17:38,130 - INFO - Refreshing data for episode 18 +2025-03-10 16:17:38,130 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:17:38,485 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:17:38,499 - INFO - Initialized environment with 100 candles +2025-03-10 16:17:38,789 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.633575 | Take profit: 2086.1646375 +2025-03-10 16:17:38,947 - INFO - CLOSED short at 2128.33 | PnL: -0.49% | $-1.15 +2025-03-10 16:17:38,948 - INFO - OPENED LONG at 2128.33 | Stop loss: 2117.6447749999998 | Take profit: 2160.3203124999995 +2025-03-10 16:17:38,969 - INFO - CLOSED long at 2124.77 | PnL: -0.17% | $-0.52 +2025-03-10 16:17:38,970 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.437425 | Take profit: 2092.8330875 +2025-03-10 16:17:39,579 - INFO - TAKE PROFIT hit for short at 2092.8330875 | PnL: 1.50% | $2.70 +2025-03-10 16:17:39,613 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5938250000004 | Take profit: 2068.4838875 +2025-03-10 16:17:40,043 - INFO - CLOSED short at 2098.66 | PnL: 0.07% | $-0.07 +2025-03-10 16:17:40,044 - INFO - OPENED LONG at 2098.66 | Stop loss: 2088.1231249999996 | Take profit: 2130.2052624999997 +2025-03-10 16:17:40,074 - INFO - CLOSED long at 2090.59 | PnL: -0.38% | $-0.96 +2025-03-10 16:17:40,074 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.0865249999997 | Take profit: 2059.1657875 +2025-03-10 16:17:40,484 - INFO - TAKE PROFIT hit for short at 2059.1657875 | PnL: 1.50% | $2.75 +2025-03-10 16:17:40,504 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.298575 | Take profit: 2020.1696375 +2025-03-10 16:17:40,716 - INFO - CLOSED short at 2050.18 | PnL: 0.04% | $-0.12 +2025-03-10 16:17:40,716 - INFO - OPENED LONG at 2050.18 | Stop loss: 2039.8855249999997 | Take profit: 2080.9980625 +2025-03-10 16:17:40,774 - INFO - CLOSED long at 2046.76 | PnL: -0.17% | $-0.54 +2025-03-10 16:17:40,774 - INFO - OPENED SHORT at 2046.76 | Stop loss: 2057.037375 | Take profit: 2015.9932375 +2025-03-10 16:17:40,831 - INFO - CLOSED short at 2044.1 | PnL: 0.13% | $0.06 +2025-03-10 16:17:40,832 - INFO - OPENED LONG at 2044.1 | Stop loss: 2033.8359249999999 | Take profit: 2074.8268625 +2025-03-10 16:17:40,858 - INFO - CLOSED long at 2043.59 | PnL: -0.02% | $-0.25 +2025-03-10 16:17:40,858 - INFO - OPENED SHORT at 2043.59 | Stop loss: 2053.8515249999996 | Take profit: 2012.8707875 +2025-03-10 16:17:40,934 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.84, Avg Loss=$-0.51 +2025-03-10 16:17:40,934 - INFO - Episode 18: Reward=-11.55, Balance=$101.91, Win Rate=30.0%, Trades=10, Episode PnL=$4.17, Total PnL=$503.16, Max Drawdown=0.0%, Pred Accuracy=98.1% +2025-03-10 16:17:40,935 - INFO - Refreshing data for episode 19 +2025-03-10 16:17:40,935 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:17:41,247 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:17:41,259 - INFO - Initialized environment with 100 candles +2025-03-10 16:17:41,594 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.6342178571426 | Take profit: 2086.1636732142856 +2025-03-10 16:17:41,933 - INFO - CLOSED short at 2114.75 | PnL: 0.15% | $0.10 +2025-03-10 16:17:41,976 - INFO - OPENED SHORT at 2116.06 | Stop loss: 2126.684517857143 | Take profit: 2084.2527732142858 +2025-03-10 16:17:42,188 - INFO - CLOSED short at 2115.07 | PnL: 0.05% | $-0.10 +2025-03-10 16:17:42,189 - INFO - OPENED LONG at 2115.07 | Stop loss: 2104.450432142857 | Take profit: 2146.8623767857143 +2025-03-10 16:17:42,227 - INFO - CLOSED long at 2098.24 | PnL: -0.80% | $-1.75 +2025-03-10 16:17:42,228 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.7754178571427 | Take profit: 2066.7000732142856 +2025-03-10 16:17:42,843 - INFO - CLOSED short at 2098.66 | PnL: -0.02% | $-0.23 +2025-03-10 16:17:42,844 - INFO - OPENED LONG at 2098.66 | Stop loss: 2088.122482142857 | Take profit: 2130.2062267857145 +2025-03-10 16:17:42,874 - INFO - CLOSED long at 2090.59 | PnL: -0.38% | $-0.93 +2025-03-10 16:17:42,876 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.087167857143 | Take profit: 2059.164823214286 +2025-03-10 16:17:42,950 - INFO - CLOSED short at 2080.58 | PnL: 0.48% | $0.72 +2025-03-10 16:17:42,950 - INFO - OPENED LONG at 2080.58 | Stop loss: 2070.132882142857 | Take profit: 2111.855026785714 +2025-03-10 16:17:42,974 - INFO - CLOSED long at 2084.75 | PnL: 0.20% | $0.19 +2025-03-10 16:17:42,974 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.217967857143 | Take profit: 2053.412423214286 +2025-03-10 16:17:43,073 - INFO - CLOSED short at 2085.37 | PnL: -0.03% | $-0.25 +2025-03-10 16:17:43,073 - INFO - OPENED LONG at 2085.37 | Stop loss: 2074.898932142857 | Take profit: 2116.7168767857142 +2025-03-10 16:17:43,110 - INFO - CLOSED long at 2084.11 | PnL: -0.06% | $-0.31 +2025-03-10 16:17:43,112 - INFO - OPENED SHORT at 2084.11 | Stop loss: 2094.574767857143 | Take profit: 2052.782023214286 +2025-03-10 16:17:43,200 - INFO - CLOSED short at 2075.07 | PnL: 0.43% | $0.64 +2025-03-10 16:17:43,200 - INFO - OPENED LONG at 2075.07 | Stop loss: 2064.6504321428574 | Take profit: 2106.2623767857144 +2025-03-10 16:17:43,231 - INFO - CLOSED long at 2067.71 | PnL: -0.35% | $-0.87 +2025-03-10 16:17:43,231 - INFO - OPENED SHORT at 2067.71 | Stop loss: 2078.092767857143 | Take profit: 2036.6280232142858 +2025-03-10 16:17:43,669 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 40.0% in downtrends | Avg Win=$0.41, Avg Loss=$-0.64 +2025-03-10 16:17:43,670 - INFO - Episode 19: Reward=-8.70, Balance=$97.20, Win Rate=36.4%, Trades=11, Episode PnL=$0.88, Total PnL=$500.36, Max Drawdown=0.0%, Pred Accuracy=97.9% +2025-03-10 16:17:43,670 - INFO - Refreshing data for episode 20 +2025-03-10 16:17:43,671 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:17:44,011 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:17:44,024 - INFO - Initialized environment with 100 candles +2025-03-10 16:17:44,837 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.6345928571427 | Take profit: 2086.1631107142857 +2025-03-10 16:17:44,890 - INFO - CLOSED short at 2121.42 | PnL: -0.16% | $-0.51 +2025-03-10 16:17:44,891 - INFO - OPENED LONG at 2121.42 | Stop loss: 2110.7683071428573 | Take profit: 2153.3081892857144 +2025-03-10 16:17:44,917 - INFO - CLOSED long at 2116.52 | PnL: -0.23% | $-0.65 +2025-03-10 16:17:44,943 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.659692857143 | Take profit: 2087.1678107142857 +2025-03-10 16:17:45,135 - INFO - CLOSED short at 2114.78 | PnL: 0.20% | $0.19 +2025-03-10 16:17:45,135 - INFO - OPENED LONG at 2114.78 | Stop loss: 2104.1615071428573 | Take profit: 2146.5685892857146 +2025-03-10 16:17:45,159 - INFO - CLOSED long at 2115.52 | PnL: 0.03% | $-0.13 +2025-03-10 16:17:45,159 - INFO - OPENED SHORT at 2115.52 | Stop loss: 2126.1421928571426 | Take profit: 2083.720310714286 +2025-03-10 16:17:45,502 - INFO - CLOSED short at 2114.5 | PnL: 0.05% | $-0.10 +2025-03-10 16:17:45,503 - INFO - OPENED LONG at 2114.5 | Stop loss: 2103.882907142857 | Take profit: 2146.284389285714 +2025-03-10 16:17:45,530 - INFO - CLOSED long at 2115.07 | PnL: 0.03% | $-0.14 +2025-03-10 16:17:45,530 - INFO - OPENED SHORT at 2115.07 | Stop loss: 2125.689942857143 | Take profit: 2083.2770607142857 +2025-03-10 16:17:45,582 - INFO - CLOSED short at 2098.28 | PnL: 0.79% | $1.34 +2025-03-10 16:17:45,583 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.7440071428573 | Take profit: 2129.8210892857146 +2025-03-10 16:17:45,625 - INFO - CLOSED long at 2091.36 | PnL: -0.33% | $-0.84 +2025-03-10 16:17:45,626 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.861392857143 | Take profit: 2059.9227107142856 +2025-03-10 16:17:45,800 - INFO - CLOSED short at 2089.84 | PnL: 0.07% | $-0.05 +2025-03-10 16:17:45,800 - INFO - OPENED LONG at 2089.84 | Stop loss: 2079.346207142857 | Take profit: 2121.2544892857145 +2025-03-10 16:17:45,834 - INFO - CLOSED long at 2096.19 | PnL: 0.30% | $0.40 +2025-03-10 16:17:45,835 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.715542857143 | Take profit: 2064.680260714286 +2025-03-10 16:17:45,889 - INFO - CLOSED short at 2102.83 | PnL: -0.32% | $-0.81 +2025-03-10 16:17:45,889 - INFO - OPENED LONG at 2102.83 | Stop loss: 2092.271257142857 | Take profit: 2134.439339285714 +2025-03-10 16:17:45,912 - INFO - CLOSED long at 2103.41 | PnL: 0.03% | $-0.14 +2025-03-10 16:17:45,913 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.971642857143 | Take profit: 2071.791960714286 +2025-03-10 16:17:45,936 - INFO - CLOSED short at 2104.22 | PnL: -0.04% | $-0.27 +2025-03-10 16:17:45,937 - INFO - OPENED LONG at 2104.22 | Stop loss: 2093.654307142857 | Take profit: 2135.850189285714 +2025-03-10 16:17:45,966 - INFO - CLOSED long at 2104.67 | PnL: 0.02% | $-0.15 +2025-03-10 16:17:45,967 - INFO - OPENED SHORT at 2104.67 | Stop loss: 2115.2379428571426 | Take profit: 2073.0330607142855 +2025-03-10 16:17:46,067 - INFO - CLOSED short at 2099.63 | PnL: 0.24% | $0.27 +2025-03-10 16:17:46,068 - INFO - OPENED LONG at 2099.63 | Stop loss: 2089.087257142857 | Take profit: 2131.1913392857145 +2025-03-10 16:17:46,124 - INFO - CLOSED long at 2099.22 | PnL: -0.02% | $-0.23 +2025-03-10 16:17:46,124 - INFO - OPENED SHORT at 2099.22 | Stop loss: 2109.7606928571427 | Take profit: 2067.6648107142855 +2025-03-10 16:17:46,201 - INFO - CLOSED short at 2096.96 | PnL: 0.11% | $0.01 +2025-03-10 16:17:46,202 - INFO - OPENED LONG at 2096.96 | Stop loss: 2086.4306071428573 | Take profit: 2128.4812892857144 +2025-03-10 16:17:46,233 - INFO - CLOSED long at 2098.66 | PnL: 0.08% | $-0.04 +2025-03-10 16:17:46,233 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.197892857143 | Take profit: 2067.1132107142857 +2025-03-10 16:17:46,444 - INFO - CLOSED short at 2081.0 | PnL: 0.84% | $1.43 +2025-03-10 16:17:46,444 - INFO - OPENED LONG at 2081.0 | Stop loss: 2070.5504071428572 | Take profit: 2112.2818892857144 +2025-03-10 16:17:46,497 - INFO - CLOSED long at 2084.25 | PnL: 0.16% | $0.11 +2025-03-10 16:17:46,497 - INFO - OPENED SHORT at 2084.25 | Stop loss: 2094.715842857143 | Take profit: 2052.9193607142856 +2025-03-10 16:17:46,597 - INFO - CLOSED short at 2084.11 | PnL: 0.01% | $-0.18 +2025-03-10 16:17:46,597 - INFO - OPENED LONG at 2084.11 | Stop loss: 2073.6448571428573 | Take profit: 2115.438539285715 +2025-03-10 16:17:46,623 - INFO - CLOSED long at 2083.07 | PnL: -0.05% | $-0.29 +2025-03-10 16:17:46,623 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.529942857143 | Take profit: 2051.7570607142857 +2025-03-10 16:17:46,675 - INFO - CLOSED short at 2067.71 | PnL: 0.74% | $1.24 +2025-03-10 16:17:46,676 - INFO - OPENED LONG at 2067.71 | Stop loss: 2057.326857142857 | Take profit: 2098.792539285714 +2025-03-10 16:17:46,699 - INFO - CLOSED long at 2048.3 | PnL: -0.94% | $-2.04 +2025-03-10 16:17:46,699 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.586092857143 | Take profit: 2017.5086107142859 +2025-03-10 16:17:46,725 - INFO - CLOSED short at 2051.0 | PnL: -0.13% | $-0.45 +2025-03-10 16:17:46,725 - INFO - OPENED LONG at 2051.0 | Stop loss: 2040.700407142857 | Take profit: 2081.831889285714 +2025-03-10 16:17:46,807 - INFO - CLOSED long at 2053.22 | PnL: 0.11% | $0.02 +2025-03-10 16:17:46,808 - INFO - OPENED SHORT at 2053.22 | Stop loss: 2063.5306928571426 | Take profit: 2022.3548107142856 +2025-03-10 16:17:46,858 - INFO - CLOSED short at 2058.11 | PnL: -0.24% | $-0.65 +2025-03-10 16:17:46,858 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.7748571428572 | Take profit: 2089.0485392857145 +2025-03-10 16:17:46,947 - INFO - CLOSED long at 2050.18 | PnL: -0.39% | $-0.92 +2025-03-10 16:17:46,948 - INFO - OPENED SHORT at 2050.18 | Stop loss: 2060.4754928571424 | Take profit: 2019.3604107142858 +2025-03-10 16:17:47,017 - INFO - CLOSED short at 2043.95 | PnL: 0.30% | $0.38 +2025-03-10 16:17:47,018 - INFO - OPENED LONG at 2043.95 | Stop loss: 2033.6856571428573 | Take profit: 2074.6761392857143 +2025-03-10 16:17:47,044 - INFO - CLOSED long at 2044.1 | PnL: 0.01% | $-0.18 +2025-03-10 16:17:47,045 - INFO - OPENED SHORT at 2044.1 | Stop loss: 2054.365092857143 | Take profit: 2013.3716107142857 +2025-03-10 16:17:47,149 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 46.7% in downtrends | Avg Win=$0.54, Avg Loss=$-0.44 +2025-03-10 16:17:47,150 - INFO - Episode 20: Reward=-23.94, Balance=$96.62, Win Rate=33.3%, Trades=30, Episode PnL=$1.20, Total PnL=$496.98, Max Drawdown=1.2%, Pred Accuracy=97.9% +2025-03-10 16:17:47,317 - INFO - Model saved to checkpoints/trading_agent_episode_20.pt +2025-03-10 16:17:47,318 - INFO - Checkpoint saved at episode 20 +2025-03-10 16:17:47,318 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:17:48,422 - INFO - Visualization saved for episode 20 +2025-03-10 16:17:50,704 - INFO - Visualization saved for episode 20 +2025-03-10 16:17:50,720 - INFO - Refreshing data for episode 21 +2025-03-10 16:17:50,720 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:17:51,107 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:17:51,119 - INFO - Initialized environment with 100 candles +2025-03-10 16:17:51,419 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.6345928571427 | Take profit: 2086.1631107142857 +2025-03-10 16:17:51,493 - INFO - CLOSED short at 2116.52 | PnL: 0.07% | $-0.06 +2025-03-10 16:17:51,493 - INFO - OPENED LONG at 2116.52 | Stop loss: 2105.8928071428572 | Take profit: 2148.3346892857144 +2025-03-10 16:17:51,518 - INFO - CLOSED long at 2119.02 | PnL: 0.12% | $0.04 +2025-03-10 16:17:51,518 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.659692857143 | Take profit: 2087.1678107142857 +2025-03-10 16:17:51,953 - INFO - CLOSED short at 2115.21 | PnL: 0.18% | $0.16 +2025-03-10 16:17:51,954 - INFO - OPENED LONG at 2115.21 | Stop loss: 2104.5893571428574 | Take profit: 2147.0050392857142 +2025-03-10 16:17:52,004 - INFO - CLOSED long at 2114.1 | PnL: -0.05% | $-0.30 +2025-03-10 16:17:52,004 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.7150928571427 | Take profit: 2082.3216107142857 +2025-03-10 16:17:52,032 - INFO - CLOSED short at 2115.11 | PnL: -0.05% | $-0.29 +2025-03-10 16:17:52,033 - INFO - OPENED LONG at 2115.11 | Stop loss: 2104.489857142857 | Take profit: 2146.9035392857145 +2025-03-10 16:17:52,062 - INFO - CLOSED long at 2114.32 | PnL: -0.04% | $-0.27 +2025-03-10 16:17:52,062 - INFO - OPENED SHORT at 2114.32 | Stop loss: 2124.936192857143 | Take profit: 2082.5383107142857 +2025-03-10 16:17:52,889 - INFO - TAKE PROFIT hit for short at 2082.5383107142857 | PnL: 1.50% | $2.73 +2025-03-10 16:17:52,919 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.218342857143 | Take profit: 2053.411860714286 +2025-03-10 16:17:52,948 - INFO - CLOSED short at 2081.0 | PnL: 0.18% | $0.16 +2025-03-10 16:17:52,948 - INFO - OPENED LONG at 2081.0 | Stop loss: 2070.5504071428572 | Take profit: 2112.2818892857144 +2025-03-10 16:17:53,023 - INFO - CLOSED long at 2085.37 | PnL: 0.21% | $0.22 +2025-03-10 16:17:53,024 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8414428571427 | Take profit: 2054.0225607142856 +2025-03-10 16:17:53,220 - INFO - TAKE PROFIT hit for short at 2054.0225607142856 | PnL: 1.50% | $2.81 +2025-03-10 16:17:53,277 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.772142857143 | Take profit: 2012.7904607142857 +2025-03-10 16:17:53,354 - INFO - CLOSED short at 2053.22 | PnL: -0.48% | $-1.18 +2025-03-10 16:17:53,355 - INFO - OPENED LONG at 2053.22 | Stop loss: 2042.909307142857 | Take profit: 2084.085189285714 +2025-03-10 16:17:53,444 - INFO - CLOSED long at 2054.03 | PnL: 0.04% | $-0.12 +2025-03-10 16:17:53,446 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.344742857143 | Take profit: 2023.152660714286 +2025-03-10 16:17:53,687 - INFO - CLOSED short at 2042.0 | PnL: 0.59% | $0.99 +2025-03-10 16:17:53,687 - INFO - OPENED LONG at 2042.0 | Stop loss: 2031.745407142857 | Take profit: 2072.6968892857144 +2025-03-10 16:17:53,747 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 62.5% in downtrends | Avg Win=$1.01, Avg Loss=$-0.37 +2025-03-10 16:17:53,748 - INFO - Episode 21: Reward=-6.70, Balance=$104.88, Win Rate=53.8%, Trades=13, Episode PnL=$5.31, Total PnL=$501.86, Max Drawdown=0.0%, Pred Accuracy=98.1% +2025-03-10 16:17:53,749 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:17:53,749 - INFO - Refreshing data for episode 22 +2025-03-10 16:17:53,750 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:17:54,064 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:17:54,079 - INFO - Initialized environment with 100 candles +2025-03-10 16:17:54,119 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.6345928571427 | Take profit: 2086.1631107142857 +2025-03-10 16:17:54,153 - INFO - CLOSED short at 2121.8 | PnL: -0.18% | $-0.55 +2025-03-10 16:17:54,154 - INFO - OPENED LONG at 2121.8 | Stop loss: 2111.1464071428572 | Take profit: 2153.6938892857142 +2025-03-10 16:17:54,185 - INFO - CLOSED long at 2121.42 | PnL: -0.02% | $-0.23 +2025-03-10 16:17:54,185 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0716928571433 | Take profit: 2089.5318107142857 +2025-03-10 16:17:54,326 - INFO - CLOSED short at 2124.9 | PnL: -0.16% | $-0.51 +2025-03-10 16:17:54,360 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.016242857143 | Take profit: 2096.3381607142856 +2025-03-10 16:17:54,570 - INFO - CLOSED short at 2115.21 | PnL: 0.62% | $1.00 +2025-03-10 16:17:54,571 - INFO - OPENED LONG at 2115.21 | Stop loss: 2104.5893571428574 | Take profit: 2147.0050392857142 +2025-03-10 16:17:54,632 - INFO - CLOSED long at 2114.1 | PnL: -0.05% | $-0.30 +2025-03-10 16:17:54,632 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.7150928571427 | Take profit: 2082.3216107142857 +2025-03-10 16:17:54,768 - INFO - CLOSED short at 2114.57 | PnL: -0.02% | $-0.24 +2025-03-10 16:17:54,769 - INFO - OPENED LONG at 2114.57 | Stop loss: 2103.952557142857 | Take profit: 2146.3554392857145 +2025-03-10 16:17:54,795 - INFO - CLOSED long at 2112.57 | PnL: -0.09% | $-0.38 +2025-03-10 16:17:54,795 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.177442857143 | Take profit: 2080.814560714286 +2025-03-10 16:17:54,844 - INFO - CLOSED short at 2114.5 | PnL: -0.09% | $-0.37 +2025-03-10 16:17:54,845 - INFO - OPENED LONG at 2114.5 | Stop loss: 2103.882907142857 | Take profit: 2146.284389285714 +2025-03-10 16:17:54,867 - INFO - CLOSED long at 2115.07 | PnL: 0.03% | $-0.14 +2025-03-10 16:17:54,867 - INFO - OPENED SHORT at 2115.07 | Stop loss: 2125.689942857143 | Take profit: 2083.2770607142857 +2025-03-10 16:17:54,918 - INFO - CLOSED short at 2098.28 | PnL: 0.79% | $1.34 +2025-03-10 16:17:54,919 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.7440071428573 | Take profit: 2129.8210892857146 +2025-03-10 16:17:54,943 - INFO - CLOSED long at 2091.36 | PnL: -0.33% | $-0.84 +2025-03-10 16:17:54,943 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.861392857143 | Take profit: 2059.9227107142856 +2025-03-10 16:17:55,050 - INFO - CLOSED short at 2089.04 | PnL: 0.11% | $0.02 +2025-03-10 16:17:55,051 - INFO - OPENED LONG at 2089.04 | Stop loss: 2078.5502071428573 | Take profit: 2120.442489285714 +2025-03-10 16:17:55,137 - INFO - CLOSED long at 2096.19 | PnL: 0.34% | $0.47 +2025-03-10 16:17:55,138 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.715542857143 | Take profit: 2064.680260714286 +2025-03-10 16:17:55,340 - INFO - CLOSED short at 2099.22 | PnL: -0.14% | $-0.48 +2025-03-10 16:17:55,340 - INFO - OPENED LONG at 2099.22 | Stop loss: 2088.679307142857 | Take profit: 2130.775189285714 +2025-03-10 16:17:55,366 - INFO - CLOSED long at 2094.16 | PnL: -0.24% | $-0.66 +2025-03-10 16:17:55,366 - INFO - OPENED SHORT at 2094.16 | Stop loss: 2104.6753928571425 | Take profit: 2062.680710714286 +2025-03-10 16:17:55,534 - INFO - CLOSED short at 2090.99 | PnL: 0.15% | $0.10 +2025-03-10 16:17:55,534 - INFO - OPENED LONG at 2090.99 | Stop loss: 2080.490457142857 | Take profit: 2122.421739285714 +2025-03-10 16:17:55,631 - INFO - CLOSED long at 2084.75 | PnL: -0.30% | $-0.77 +2025-03-10 16:17:55,632 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.218342857143 | Take profit: 2053.411860714286 +2025-03-10 16:17:55,747 - INFO - CLOSED short at 2083.07 | PnL: 0.08% | $-0.04 +2025-03-10 16:17:55,819 - INFO - OPENED SHORT at 2067.71 | Stop loss: 2078.093142857143 | Take profit: 2036.6274607142857 +2025-03-10 16:17:56,260 - INFO - CLOSED short at 2036.71 | PnL: 1.50% | $2.67 +2025-03-10 16:17:56,261 - INFO - OPENED LONG at 2036.71 | Stop loss: 2026.4818571428573 | Take profit: 2067.3275392857145 +2025-03-10 16:17:56,301 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 55.6% in downtrends | Avg Win=$0.93, Avg Loss=$-0.42 +2025-03-10 16:17:56,302 - INFO - Episode 22: Reward=-14.67, Balance=$100.10, Win Rate=31.6%, Trades=19, Episode PnL=$2.94, Total PnL=$501.96, Max Drawdown=2.6%, Pred Accuracy=98.1% +2025-03-10 16:17:56,302 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:17:56,303 - INFO - Refreshing data for episode 23 +2025-03-10 16:17:56,303 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:17:56,624 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:17:56,634 - INFO - Initialized environment with 100 candles +2025-03-10 16:17:56,723 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.6345928571427 | Take profit: 2086.1631107142857 +2025-03-10 16:17:56,796 - INFO - CLOSED short at 2116.52 | PnL: 0.07% | $-0.06 +2025-03-10 16:17:56,796 - INFO - OPENED LONG at 2116.52 | Stop loss: 2105.8928071428572 | Take profit: 2148.3346892857144 +2025-03-10 16:17:56,820 - INFO - CLOSED long at 2119.02 | PnL: 0.12% | $0.04 +2025-03-10 16:17:56,820 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.659692857143 | Take profit: 2087.1678107142857 +2025-03-10 16:17:56,955 - INFO - CLOSED short at 2116.81 | PnL: 0.10% | $0.01 +2025-03-10 16:17:56,956 - INFO - OPENED LONG at 2116.81 | Stop loss: 2106.181357142857 | Take profit: 2148.6290392857145 +2025-03-10 16:17:57,002 - INFO - CLOSED long at 2115.52 | PnL: -0.06% | $-0.32 +2025-03-10 16:17:57,003 - INFO - OPENED SHORT at 2115.52 | Stop loss: 2126.1421928571426 | Take profit: 2083.720310714286 +2025-03-10 16:17:57,168 - INFO - CLOSED short at 2114.57 | PnL: 0.04% | $-0.11 +2025-03-10 16:17:57,168 - INFO - OPENED LONG at 2114.57 | Stop loss: 2103.952557142857 | Take profit: 2146.3554392857145 +2025-03-10 16:17:57,202 - INFO - CLOSED long at 2112.57 | PnL: -0.09% | $-0.38 +2025-03-10 16:17:57,203 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.177442857143 | Take profit: 2080.814560714286 +2025-03-10 16:17:57,316 - INFO - CLOSED short at 2098.28 | PnL: 0.68% | $1.12 +2025-03-10 16:17:57,317 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.7440071428573 | Take profit: 2129.8210892857146 +2025-03-10 16:17:57,343 - INFO - CLOSED long at 2091.36 | PnL: -0.33% | $-0.84 +2025-03-10 16:17:57,343 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.861392857143 | Take profit: 2059.9227107142856 +2025-03-10 16:17:57,513 - INFO - STOP LOSS hit for short at 2101.861392857143 | PnL: -0.50% | $-1.17 +2025-03-10 16:17:57,534 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.971642857143 | Take profit: 2071.791960714286 +2025-03-10 16:17:57,939 - INFO - CLOSED short at 2084.11 | PnL: 0.92% | $1.57 +2025-03-10 16:17:57,940 - INFO - OPENED LONG at 2084.11 | Stop loss: 2073.6448571428573 | Take profit: 2115.438539285715 +2025-03-10 16:17:57,968 - INFO - CLOSED long at 2083.07 | PnL: -0.05% | $-0.29 +2025-03-10 16:17:57,969 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.529942857143 | Take profit: 2051.7570607142857 +2025-03-10 16:17:58,058 - INFO - TAKE PROFIT hit for short at 2051.7570607142857 | PnL: 1.50% | $2.74 +2025-03-10 16:17:58,088 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.299592857143 | Take profit: 2020.1681107142858 +2025-03-10 16:17:58,115 - INFO - CLOSED short at 2043.51 | PnL: 0.37% | $0.53 +2025-03-10 16:17:58,115 - INFO - OPENED LONG at 2043.51 | Stop loss: 2033.2478571428571 | Take profit: 2074.2295392857145 +2025-03-10 16:17:58,144 - INFO - CLOSED long at 2052.89 | PnL: 0.46% | $0.72 +2025-03-10 16:17:58,144 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.1990428571426 | Take profit: 2022.0297607142857 +2025-03-10 16:17:58,419 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 62.5% in downtrends | Avg Win=$0.96, Avg Loss=$-0.45 +2025-03-10 16:17:58,420 - INFO - Episode 23: Reward=-2.21, Balance=$103.56, Win Rate=50.0%, Trades=14, Episode PnL=$4.63, Total PnL=$505.52, Max Drawdown=1.7%, Pred Accuracy=98.1% +2025-03-10 16:17:58,420 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:17:58,421 - INFO - Refreshing data for episode 24 +2025-03-10 16:17:58,421 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:17:58,732 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:17:58,743 - INFO - Initialized environment with 100 candles +2025-03-10 16:17:58,779 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.6345928571427 | Take profit: 2086.1631107142857 +2025-03-10 16:17:59,920 - INFO - TAKE PROFIT hit for short at 2086.1631107142857 | PnL: 1.50% | $2.75 +2025-03-10 16:17:59,945 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0274928571425 | Take profit: 2049.3044107142855 +2025-03-10 16:18:00,039 - INFO - CLOSED short at 2084.25 | PnL: -0.18% | $-0.56 +2025-03-10 16:18:00,040 - INFO - OPENED LONG at 2084.25 | Stop loss: 2073.784157142857 | Take profit: 2115.580639285714 +2025-03-10 16:18:00,069 - INFO - CLOSED long at 2085.37 | PnL: 0.05% | $-0.09 +2025-03-10 16:18:00,070 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8414428571427 | Take profit: 2054.0225607142856 +2025-03-10 16:18:00,185 - INFO - TAKE PROFIT hit for short at 2054.0225607142856 | PnL: 1.50% | $2.81 +2025-03-10 16:18:00,214 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.299592857143 | Take profit: 2020.1681107142858 +2025-03-10 16:18:00,555 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.78, Avg Loss=$-0.32 +2025-03-10 16:18:00,556 - INFO - Episode 24: Reward=-2.94, Balance=$104.91, Win Rate=50.0%, Trades=4, Episode PnL=$5.00, Total PnL=$510.42, Max Drawdown=0.0%, Pred Accuracy=98.1% +2025-03-10 16:18:00,556 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:18:00,557 - INFO - Refreshing data for episode 25 +2025-03-10 16:18:00,557 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:18:00,876 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:18:00,888 - INFO - Initialized environment with 100 candles +2025-03-10 16:18:01,958 - INFO - OPENED LONG at 2118.0 | Stop loss: 2107.3654071428573 | Take profit: 2149.8368892857143 +2025-03-10 16:18:02,000 - INFO - CLOSED long at 2121.8 | PnL: 0.18% | $0.16 +2025-03-10 16:18:02,001 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.4535928571427 | Take profit: 2089.906110714286 +2025-03-10 16:18:02,025 - INFO - CLOSED short at 2121.42 | PnL: 0.02% | $-0.16 +2025-03-10 16:18:02,027 - INFO - OPENED LONG at 2121.42 | Stop loss: 2110.7683071428573 | Take profit: 2153.3081892857144 +2025-03-10 16:18:02,055 - INFO - CLOSED long at 2116.52 | PnL: -0.23% | $-0.65 +2025-03-10 16:18:02,055 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1471928571427 | Take profit: 2084.7053107142856 +2025-03-10 16:18:02,152 - INFO - STOP LOSS hit for short at 2127.1471928571427 | PnL: -0.50% | $-1.17 +2025-03-10 16:18:02,177 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4384428571425 | Take profit: 2092.831560714286 +2025-03-10 16:18:02,497 - INFO - CLOSED short at 2114.32 | PnL: 0.49% | $0.75 +2025-03-10 16:18:02,525 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.187442857143 | Take profit: 2082.784560714286 +2025-03-10 16:18:02,930 - INFO - CLOSED short at 2100.0 | PnL: 0.69% | $1.14 +2025-03-10 16:18:02,962 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3887428571425 | Take profit: 2071.2206607142857 +2025-03-10 16:18:03,343 - INFO - CLOSED short at 2090.59 | PnL: 0.58% | $0.94 +2025-03-10 16:18:03,344 - INFO - OPENED LONG at 2090.59 | Stop loss: 2080.0924571428573 | Take profit: 2122.0157392857145 +2025-03-10 16:18:03,371 - INFO - CLOSED long at 2090.99 | PnL: 0.02% | $-0.16 +2025-03-10 16:18:03,372 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.4895428571426 | Take profit: 2059.5582607142856 +2025-03-10 16:18:03,668 - INFO - CLOSED short at 2083.07 | PnL: 0.38% | $0.55 +2025-03-10 16:18:03,669 - INFO - OPENED LONG at 2083.07 | Stop loss: 2072.6100571428574 | Take profit: 2114.382939285714 +2025-03-10 16:18:03,697 - INFO - CLOSED long at 2075.07 | PnL: -0.38% | $-0.96 +2025-03-10 16:18:03,697 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.489942857143 | Take profit: 2043.8770607142858 +2025-03-10 16:18:03,802 - INFO - TAKE PROFIT hit for short at 2043.8770607142858 | PnL: 1.50% | $2.76 +2025-03-10 16:18:03,856 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.1990428571426 | Take profit: 2022.0297607142857 +2025-03-10 16:18:03,897 - INFO - CLOSED short at 2053.22 | PnL: -0.02% | $-0.23 +2025-03-10 16:18:03,898 - INFO - OPENED LONG at 2053.22 | Stop loss: 2042.909307142857 | Take profit: 2084.085189285714 +2025-03-10 16:18:03,965 - INFO - CLOSED long at 2058.11 | PnL: 0.24% | $0.28 +2025-03-10 16:18:03,966 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.445142857143 | Take profit: 2027.1714607142858 +2025-03-10 16:18:04,192 - INFO - CLOSED short at 2042.0 | PnL: 0.78% | $1.38 +2025-03-10 16:18:04,192 - INFO - OPENED LONG at 2042.0 | Stop loss: 2031.745407142857 | Take profit: 2072.6968892857144 +2025-03-10 16:18:04,225 - INFO - CLOSED long at 2036.71 | PnL: -0.26% | $-0.74 +2025-03-10 16:18:04,225 - INFO - OPENED SHORT at 2036.71 | Stop loss: 2046.9381428571428 | Take profit: 2006.0924607142858 +2025-03-10 16:18:04,252 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 57.1% in downtrends | Avg Win=$1.00, Avg Loss=$-0.58 +2025-03-10 16:18:04,253 - INFO - Episode 25: Reward=-1.11, Balance=$103.89, Win Rate=53.3%, Trades=15, Episode PnL=$5.96, Total PnL=$514.31, Max Drawdown=1.8%, Pred Accuracy=98.1% +2025-03-10 16:18:04,253 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:18:04,255 - INFO - Refreshing data for episode 26 +2025-03-10 16:18:04,255 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:18:04,588 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:18:04,599 - INFO - Initialized environment with 100 candles +2025-03-10 16:18:04,637 - INFO - OPENED SHORT at 2118.0 | Stop loss: 2128.6345928571427 | Take profit: 2086.1631107142857 +2025-03-10 16:18:05,110 - INFO - CLOSED short at 2114.1 | PnL: 0.18% | $0.16 +2025-03-10 16:18:05,111 - INFO - OPENED LONG at 2114.1 | Stop loss: 2103.484907142857 | Take profit: 2145.878389285714 +2025-03-10 16:18:05,133 - INFO - CLOSED long at 2115.11 | PnL: 0.05% | $-0.10 +2025-03-10 16:18:05,134 - INFO - OPENED SHORT at 2115.11 | Stop loss: 2125.730142857143 | Take profit: 2083.3164607142858 +2025-03-10 16:18:05,188 - INFO - CLOSED short at 2114.57 | PnL: 0.03% | $-0.15 +2025-03-10 16:18:05,189 - INFO - OPENED LONG at 2114.57 | Stop loss: 2103.952557142857 | Take profit: 2146.3554392857145 +2025-03-10 16:18:05,243 - INFO - CLOSED long at 2112.57 | PnL: -0.09% | $-0.38 +2025-03-10 16:18:05,244 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.177442857143 | Take profit: 2080.814560714286 +2025-03-10 16:18:05,466 - INFO - CLOSED short at 2100.05 | PnL: 0.59% | $0.96 +2025-03-10 16:18:05,491 - INFO - OPENED SHORT at 2096.36 | Stop loss: 2106.8863928571427 | Take profit: 2064.8477107142858 +2025-03-10 16:18:06,201 - INFO - CLOSED short at 2084.11 | PnL: 0.58% | $0.95 +2025-03-10 16:18:06,201 - INFO - OPENED LONG at 2084.11 | Stop loss: 2073.6448571428573 | Take profit: 2115.438539285715 +2025-03-10 16:18:06,234 - INFO - CLOSED long at 2083.07 | PnL: -0.05% | $-0.30 +2025-03-10 16:18:06,234 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.529942857143 | Take profit: 2051.7570607142857 +2025-03-10 16:18:06,313 - INFO - TAKE PROFIT hit for short at 2051.7570607142857 | PnL: 1.50% | $2.78 +2025-03-10 16:18:06,340 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.299592857143 | Take profit: 2020.1681107142858 +2025-03-10 16:18:06,728 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$1.21, Avg Loss=$-0.23 +2025-03-10 16:18:06,729 - INFO - Episode 26: Reward=-1.84, Balance=$103.93, Win Rate=50.0%, Trades=8, Episode PnL=$4.71, Total PnL=$518.24, Max Drawdown=0.0%, Pred Accuracy=98.2% +2025-03-10 16:18:06,730 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:18:06,731 - INFO - Refreshing data for episode 27 +2025-03-10 16:18:06,731 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:18:07,091 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:18:07,102 - INFO - Initialized environment with 100 candles +2025-03-10 16:18:07,263 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.451875 | Take profit: 2089.9086875000003 +2025-03-10 16:18:07,407 - INFO - CLOSED short at 2119.02 | PnL: 0.13% | $0.06 +2025-03-10 16:18:07,408 - INFO - OPENED LONG at 2119.02 | Stop loss: 2108.382025 | Take profit: 2150.8696124999997 +2025-03-10 16:18:07,440 - INFO - CLOSED long at 2120.96 | PnL: 0.09% | $-0.02 +2025-03-10 16:18:07,441 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.607675 | Take profit: 2089.0812875 +2025-03-10 16:18:07,955 - INFO - CLOSED short at 2113.28 | PnL: 0.36% | $0.51 +2025-03-10 16:18:07,955 - INFO - OPENED LONG at 2113.28 | Stop loss: 2102.6707250000004 | Take profit: 2145.0435125000004 +2025-03-10 16:18:07,983 - INFO - CLOSED long at 2114.5 | PnL: 0.06% | $-0.08 +2025-03-10 16:18:07,983 - INFO - OPENED SHORT at 2114.5 | Stop loss: 2125.115375 | Take profit: 2082.7181875 +2025-03-10 16:18:08,277 - INFO - CLOSED short at 2089.84 | PnL: 1.17% | $2.10 +2025-03-10 16:18:08,277 - INFO - OPENED LONG at 2089.84 | Stop loss: 2079.347925 | Take profit: 2121.2519125000003 +2025-03-10 16:18:08,307 - INFO - CLOSED long at 2096.19 | PnL: 0.30% | $0.41 +2025-03-10 16:18:08,307 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.7138250000003 | Take profit: 2064.6828375 +2025-03-10 16:18:08,745 - INFO - CLOSED short at 2084.95 | PnL: 0.54% | $0.88 +2025-03-10 16:18:08,746 - INFO - OPENED LONG at 2084.95 | Stop loss: 2074.4823749999996 | Take profit: 2116.2885625 +2025-03-10 16:18:08,841 - INFO - CLOSED long at 2081.0 | PnL: -0.19% | $-0.59 +2025-03-10 16:18:08,841 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.447875 | Take profit: 2049.7206875 +2025-03-10 16:18:08,930 - INFO - CLOSED short at 2085.37 | PnL: -0.21% | $-0.63 +2025-03-10 16:18:08,930 - INFO - OPENED LONG at 2085.37 | Stop loss: 2074.900275 | Take profit: 2116.7148625 +2025-03-10 16:18:08,969 - INFO - CLOSED long at 2084.11 | PnL: -0.06% | $-0.32 +2025-03-10 16:18:08,969 - INFO - OPENED SHORT at 2084.11 | Stop loss: 2094.573425 | Take profit: 2052.7840375 +2025-03-10 16:18:09,091 - INFO - CLOSED short at 2048.3 | PnL: 1.72% | $3.25 +2025-03-10 16:18:09,091 - INFO - OPENED LONG at 2048.3 | Stop loss: 2038.0156250000002 | Take profit: 2079.0888125 +2025-03-10 16:18:09,118 - INFO - CLOSED long at 2051.0 | PnL: 0.13% | $0.07 +2025-03-10 16:18:09,119 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.297875 | Take profit: 2020.1706875 +2025-03-10 16:18:09,180 - INFO - CLOSED short at 2052.89 | PnL: -0.09% | $-0.40 +2025-03-10 16:18:09,180 - INFO - OPENED LONG at 2052.89 | Stop loss: 2042.5826749999999 | Take profit: 2083.7476625 +2025-03-10 16:18:09,253 - INFO - CLOSED long at 2053.22 | PnL: 0.02% | $-0.17 +2025-03-10 16:18:09,254 - INFO - OPENED SHORT at 2053.22 | Stop loss: 2063.5289749999997 | Take profit: 2022.3573874999997 +2025-03-10 16:18:09,351 - INFO - CLOSED short at 2054.03 | PnL: -0.04% | $-0.29 +2025-03-10 16:18:09,352 - INFO - OPENED LONG at 2054.03 | Stop loss: 2043.716975 | Take profit: 2084.9047625000003 +2025-03-10 16:18:09,396 - INFO - CLOSED long at 2050.18 | PnL: -0.19% | $-0.59 +2025-03-10 16:18:09,397 - INFO - OPENED SHORT at 2050.18 | Stop loss: 2060.473775 | Take profit: 2019.3629875 +2025-03-10 16:18:09,420 - INFO - CLOSED short at 2046.76 | PnL: 0.17% | $0.14 +2025-03-10 16:18:09,421 - INFO - OPENED LONG at 2046.76 | Stop loss: 2036.483325 | Take profit: 2077.5257125 +2025-03-10 16:18:09,446 - INFO - CLOSED long at 2043.95 | PnL: -0.14% | $-0.48 +2025-03-10 16:18:09,446 - INFO - OPENED SHORT at 2043.95 | Stop loss: 2054.212625 | Take profit: 2013.2264375000002 +2025-03-10 16:18:09,497 - INFO - CLOSED short at 2043.59 | PnL: 0.02% | $-0.17 +2025-03-10 16:18:09,497 - INFO - OPENED LONG at 2043.59 | Stop loss: 2033.3291749999999 | Take profit: 2074.3081624999995 +2025-03-10 16:18:09,557 - INFO - CLOSED long at 2036.71 | PnL: -0.34% | $-0.89 +2025-03-10 16:18:09,557 - INFO - OPENED SHORT at 2036.71 | Stop loss: 2046.9364249999999 | Take profit: 2006.0950375000002 +2025-03-10 16:18:09,607 - INFO - CLOSED short at 2027.51 | PnL: 0.45% | $0.71 +2025-03-10 16:18:09,608 - INFO - OPENED LONG at 2027.51 | Stop loss: 2017.329575 | Take profit: 2057.9869625 +2025-03-10 16:18:09,660 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 63.6% in downtrends | Avg Win=$0.90, Avg Loss=$-0.39 +2025-03-10 16:18:09,661 - INFO - Episode 27: Reward=-8.33, Balance=$103.49, Win Rate=42.9%, Trades=21, Episode PnL=$6.17, Total PnL=$521.74, Max Drawdown=0.0%, Pred Accuracy=98.1% +2025-03-10 16:18:09,661 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:18:09,661 - INFO - Refreshing data for episode 28 +2025-03-10 16:18:09,662 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:18:09,971 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:18:09,981 - INFO - Initialized environment with 100 candles +2025-03-10 16:18:10,228 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.4522535714286 | Take profit: 2089.9081196428574 +2025-03-10 16:18:10,312 - INFO - CLOSED short at 2119.02 | PnL: 0.13% | $0.06 +2025-03-10 16:18:10,312 - INFO - OPENED LONG at 2119.02 | Stop loss: 2108.3816464285715 | Take profit: 2150.870180357143 +2025-03-10 16:18:10,336 - INFO - CLOSED long at 2120.96 | PnL: 0.09% | $-0.02 +2025-03-10 16:18:10,336 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6080535714286 | Take profit: 2089.0807196428573 +2025-03-10 16:18:10,582 - INFO - CLOSED short at 2115.52 | PnL: 0.26% | $0.31 +2025-03-10 16:18:10,583 - INFO - OPENED LONG at 2115.52 | Stop loss: 2104.8991464285714 | Take profit: 2147.3176803571428 +2025-03-10 16:18:10,686 - INFO - CLOSED long at 2114.1 | PnL: -0.07% | $-0.33 +2025-03-10 16:18:10,686 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.7137535714282 | Take profit: 2082.323619642857 +2025-03-10 16:18:10,852 - INFO - CLOSED short at 2113.28 | PnL: 0.04% | $-0.12 +2025-03-10 16:18:10,852 - INFO - OPENED LONG at 2113.28 | Stop loss: 2102.6703464285715 | Take profit: 2145.0440803571432 +2025-03-10 16:18:10,942 - INFO - CLOSED long at 2115.07 | PnL: 0.08% | $-0.03 +2025-03-10 16:18:10,942 - INFO - OPENED SHORT at 2115.07 | Stop loss: 2125.6886035714288 | Take profit: 2083.2790696428574 +2025-03-10 16:18:11,003 - INFO - CLOSED short at 2098.28 | PnL: 0.79% | $1.36 +2025-03-10 16:18:11,004 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.745346428572 | Take profit: 2129.8190803571433 +2025-03-10 16:18:11,031 - INFO - CLOSED long at 2091.36 | PnL: -0.33% | $-0.85 +2025-03-10 16:18:11,031 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.8600535714286 | Take profit: 2059.9247196428573 +2025-03-10 16:18:11,165 - INFO - CLOSED short at 2096.19 | PnL: -0.23% | $-0.65 +2025-03-10 16:18:11,165 - INFO - OPENED LONG at 2096.19 | Stop loss: 2085.6657964285714 | Take profit: 2127.697730357143 +2025-03-10 16:18:11,194 - INFO - CLOSED long at 2100.0 | PnL: 0.18% | $0.16 +2025-03-10 16:18:11,195 - INFO - OPENED SHORT at 2100.0 | Stop loss: 2110.5432535714285 | Take profit: 2068.435119642857 +2025-03-10 16:18:11,301 - INFO - CLOSED short at 2103.41 | PnL: -0.16% | $-0.51 +2025-03-10 16:18:11,301 - INFO - OPENED LONG at 2103.41 | Stop loss: 2092.8496964285714 | Take profit: 2135.0260303571426 +2025-03-10 16:18:11,355 - INFO - CLOSED long at 2104.22 | PnL: 0.04% | $-0.12 +2025-03-10 16:18:11,357 - INFO - OPENED SHORT at 2104.22 | Stop loss: 2114.7843535714287 | Take profit: 2072.591819642857 +2025-03-10 16:18:11,417 - INFO - CLOSED short at 2105.26 | PnL: -0.05% | $-0.29 +2025-03-10 16:18:11,418 - INFO - OPENED LONG at 2105.26 | Stop loss: 2094.6904464285717 | Take profit: 2136.903780357143 +2025-03-10 16:18:11,446 - INFO - CLOSED long at 2099.63 | PnL: -0.27% | $-0.71 +2025-03-10 16:18:11,446 - INFO - OPENED SHORT at 2099.63 | Stop loss: 2110.1714035714285 | Take profit: 2068.0706696428574 +2025-03-10 16:18:11,507 - INFO - CLOSED short at 2094.16 | PnL: 0.26% | $0.31 +2025-03-10 16:18:11,507 - INFO - OPENED LONG at 2094.16 | Stop loss: 2083.6459464285713 | Take profit: 2125.637280357143 +2025-03-10 16:18:11,532 - INFO - CLOSED long at 2096.96 | PnL: 0.13% | $0.07 +2025-03-10 16:18:11,532 - INFO - OPENED SHORT at 2096.96 | Stop loss: 2107.4880535714287 | Take profit: 2065.440719642857 +2025-03-10 16:18:11,842 - INFO - CLOSED short at 2085.37 | PnL: 0.55% | $0.87 +2025-03-10 16:18:11,868 - INFO - OPENED LONG at 2084.11 | Stop loss: 2073.6461964285713 | Take profit: 2115.4365303571426 +2025-03-10 16:18:11,893 - INFO - CLOSED long at 2083.07 | PnL: -0.05% | $-0.29 +2025-03-10 16:18:11,894 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.528603571429 | Take profit: 2051.7590696428574 +2025-03-10 16:18:11,971 - INFO - TAKE PROFIT hit for short at 2051.7590696428574 | PnL: 1.50% | $2.73 +2025-03-10 16:18:12,015 - INFO - OPENED LONG at 2051.0 | Stop loss: 2040.7017464285714 | Take profit: 2081.829880357143 +2025-03-10 16:18:12,062 - INFO - CLOSED long at 2043.51 | PnL: -0.37% | $-0.93 +2025-03-10 16:18:12,063 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.7708035714286 | Take profit: 2012.7924696428572 +2025-03-10 16:18:12,187 - INFO - STOP LOSS hit for short at 2053.7708035714286 | PnL: -0.50% | $-1.19 +2025-03-10 16:18:12,216 - INFO - OPENED LONG at 2054.03 | Stop loss: 2043.7165964285716 | Take profit: 2084.9053303571427 +2025-03-10 16:18:12,242 - INFO - CLOSED long at 2050.18 | PnL: -0.19% | $-0.56 +2025-03-10 16:18:12,243 - INFO - OPENED SHORT at 2050.18 | Stop loss: 2060.4741535714284 | Take profit: 2019.362419642857 +2025-03-10 16:18:12,347 - INFO - CLOSED short at 2043.59 | PnL: 0.32% | $0.43 +2025-03-10 16:18:12,348 - INFO - OPENED LONG at 2043.59 | Stop loss: 2033.3287964285714 | Take profit: 2074.308730357143 +2025-03-10 16:18:12,372 - INFO - CLOSED long at 2042.0 | PnL: -0.08% | $-0.35 +2025-03-10 16:18:12,372 - INFO - OPENED SHORT at 2042.0 | Stop loss: 2052.2532535714286 | Take profit: 2011.305119642857 +2025-03-10 16:18:12,437 - INFO - CLOSED short at 2027.51 | PnL: 0.71% | $1.19 +2025-03-10 16:18:12,437 - INFO - OPENED LONG at 2027.51 | Stop loss: 2017.3291964285713 | Take profit: 2057.987530357143 +2025-03-10 16:18:12,485 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 58.3% in downtrends | Avg Win=$0.75, Avg Loss=$-0.46 +2025-03-10 16:18:12,486 - INFO - Episode 28: Reward=-15.13, Balance=$100.52, Win Rate=40.0%, Trades=25, Episode PnL=$4.49, Total PnL=$522.26, Max Drawdown=2.1%, Pred Accuracy=98.1% +2025-03-10 16:18:12,487 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:18:12,487 - INFO - Refreshing data for episode 29 +2025-03-10 16:18:12,487 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:18:12,805 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:18:12,816 - INFO - Initialized environment with 100 candles +2025-03-10 16:18:13,147 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.4522535714286 | Take profit: 2089.9081196428574 +2025-03-10 16:18:13,295 - INFO - CLOSED short at 2124.9 | PnL: -0.15% | $-0.48 +2025-03-10 16:18:13,295 - INFO - OPENED LONG at 2124.9 | Stop loss: 2114.2322464285717 | Take profit: 2156.8383803571433 +2025-03-10 16:18:13,331 - INFO - CLOSED long at 2128.33 | PnL: 0.16% | $0.12 +2025-03-10 16:18:13,332 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0149035714285 | Take profit: 2096.3401696428573 +2025-03-10 16:18:13,398 - INFO - CLOSED short at 2120.26 | PnL: 0.38% | $0.55 +2025-03-10 16:18:13,398 - INFO - OPENED LONG at 2120.26 | Stop loss: 2109.615446428572 | Take profit: 2152.128780357143 +2025-03-10 16:18:13,508 - INFO - CLOSED long at 2114.78 | PnL: -0.26% | $-0.70 +2025-03-10 16:18:13,508 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.397153571429 | Take profit: 2082.993419642857 +2025-03-10 16:18:13,847 - INFO - CLOSED short at 2115.07 | PnL: -0.01% | $-0.22 +2025-03-10 16:18:13,847 - INFO - OPENED LONG at 2115.07 | Stop loss: 2104.4513964285716 | Take profit: 2146.860930357143 +2025-03-10 16:18:13,873 - INFO - CLOSED long at 2098.24 | PnL: -0.80% | $-1.74 +2025-03-10 16:18:13,875 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.7744535714287 | Take profit: 2066.701519642857 +2025-03-10 16:18:13,908 - INFO - CLOSED short at 2098.28 | PnL: -0.00% | $-0.19 +2025-03-10 16:18:13,909 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.745346428572 | Take profit: 2129.8190803571433 +2025-03-10 16:18:13,942 - INFO - CLOSED long at 2091.36 | PnL: -0.33% | $-0.82 +2025-03-10 16:18:13,943 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.8600535714286 | Take profit: 2059.9247196428573 +2025-03-10 16:18:13,998 - INFO - CLOSED short at 2096.36 | PnL: -0.24% | $-0.64 +2025-03-10 16:18:13,999 - INFO - OPENED LONG at 2096.36 | Stop loss: 2085.8349464285716 | Take profit: 2127.870280357143 +2025-03-10 16:18:14,032 - INFO - CLOSED long at 2089.04 | PnL: -0.35% | $-0.84 +2025-03-10 16:18:14,032 - INFO - OPENED SHORT at 2089.04 | Stop loss: 2099.5284535714286 | Take profit: 2057.639519642857 +2025-03-10 16:18:14,083 - INFO - CLOSED short at 2096.19 | PnL: -0.34% | $-0.82 +2025-03-10 16:18:14,084 - INFO - OPENED LONG at 2096.19 | Stop loss: 2085.6657964285714 | Take profit: 2127.697730357143 +2025-03-10 16:18:14,116 - INFO - CLOSED long at 2100.0 | PnL: 0.18% | $0.15 +2025-03-10 16:18:14,117 - INFO - OPENED SHORT at 2100.0 | Stop loss: 2110.5432535714285 | Take profit: 2068.435119642857 +2025-03-10 16:18:14,333 - INFO - CLOSED short at 2096.96 | PnL: 0.14% | $0.08 +2025-03-10 16:18:14,334 - INFO - OPENED LONG at 2096.96 | Stop loss: 2086.431946428572 | Take profit: 2128.4792803571427 +2025-03-10 16:18:14,359 - INFO - CLOSED long at 2098.66 | PnL: 0.08% | $-0.04 +2025-03-10 16:18:14,360 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.196553571428 | Take profit: 2067.115219642857 +2025-03-10 16:18:14,474 - INFO - CLOSED short at 2084.75 | PnL: 0.66% | $1.04 +2025-03-10 16:18:14,474 - INFO - OPENED LONG at 2084.75 | Stop loss: 2074.2829964285716 | Take profit: 2116.086130357143 +2025-03-10 16:18:14,502 - INFO - CLOSED long at 2081.0 | PnL: -0.18% | $-0.52 +2025-03-10 16:18:14,502 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.4482535714287 | Take profit: 2049.720119642857 +2025-03-10 16:18:14,686 - INFO - TAKE PROFIT hit for short at 2049.720119642857 | PnL: 1.50% | $2.61 +2025-03-10 16:18:14,710 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.2982535714286 | Take profit: 2020.1701196428571 +2025-03-10 16:18:14,959 - INFO - CLOSED short at 2043.59 | PnL: 0.36% | $0.50 +2025-03-10 16:18:14,960 - INFO - OPENED LONG at 2043.59 | Stop loss: 2033.3287964285714 | Take profit: 2074.308730357143 +2025-03-10 16:18:14,983 - INFO - CLOSED long at 2042.0 | PnL: -0.08% | $-0.34 +2025-03-10 16:18:14,983 - INFO - OPENED SHORT at 2042.0 | Stop loss: 2052.2532535714286 | Take profit: 2011.305119642857 +2025-03-10 16:18:15,007 - INFO - CLOSED short at 2036.71 | PnL: 0.26% | $0.30 +2025-03-10 16:18:15,009 - INFO - OPENED LONG at 2036.71 | Stop loss: 2026.4831964285713 | Take profit: 2067.3255303571427 +2025-03-10 16:18:15,033 - INFO - CLOSED long at 2027.51 | PnL: -0.45% | $-1.06 +2025-03-10 16:18:15,034 - INFO - OPENED SHORT at 2027.51 | Stop loss: 2037.6908035714284 | Take profit: 1997.0324696428572 +2025-03-10 16:18:15,059 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 54.5% in downtrends | Avg Win=$0.67, Avg Loss=$-0.65 +2025-03-10 16:18:15,060 - INFO - Episode 29: Reward=-17.80, Balance=$96.92, Win Rate=38.1%, Trades=21, Episode PnL=$2.72, Total PnL=$519.18, Max Drawdown=0.0%, Pred Accuracy=98.2% +2025-03-10 16:18:15,061 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:18:15,061 - INFO - Refreshing data for episode 30 +2025-03-10 16:18:15,061 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:18:15,376 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:18:15,387 - INFO - Initialized environment with 100 candles +2025-03-10 16:18:16,196 - INFO - OPENED LONG at 2121.8 | Stop loss: 2111.1477464285717 | Take profit: 2153.691880357143 +2025-03-10 16:18:16,250 - INFO - CLOSED long at 2116.52 | PnL: -0.25% | $-0.68 +2025-03-10 16:18:16,250 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1458535714282 | Take profit: 2084.707319642857 +2025-03-10 16:18:16,281 - INFO - CLOSED short at 2119.02 | PnL: -0.12% | $-0.42 +2025-03-10 16:18:16,281 - INFO - OPENED LONG at 2119.02 | Stop loss: 2108.3816464285715 | Take profit: 2150.870180357143 +2025-03-10 16:18:16,310 - INFO - CLOSED long at 2120.96 | PnL: 0.09% | $-0.02 +2025-03-10 16:18:16,311 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6080535714286 | Take profit: 2089.0807196428573 +2025-03-10 16:18:16,340 - INFO - CLOSED short at 2124.9 | PnL: -0.19% | $-0.55 +2025-03-10 16:18:16,341 - INFO - OPENED LONG at 2124.9 | Stop loss: 2114.2322464285717 | Take profit: 2156.8383803571433 +2025-03-10 16:18:16,369 - INFO - CLOSED long at 2128.33 | PnL: 0.16% | $0.12 +2025-03-10 16:18:16,369 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0149035714285 | Take profit: 2096.3401696428573 +2025-03-10 16:18:16,509 - INFO - CLOSED short at 2114.75 | PnL: 0.64% | $1.04 +2025-03-10 16:18:16,510 - INFO - OPENED LONG at 2114.75 | Stop loss: 2104.1329964285715 | Take profit: 2146.5361303571426 +2025-03-10 16:18:16,544 - INFO - CLOSED long at 2116.06 | PnL: 0.06% | $-0.07 +2025-03-10 16:18:16,545 - INFO - OPENED SHORT at 2116.06 | Stop loss: 2126.6835535714285 | Take profit: 2084.254219642857 +2025-03-10 16:18:16,771 - INFO - CLOSED short at 2115.07 | PnL: 0.05% | $-0.10 +2025-03-10 16:18:16,773 - INFO - OPENED LONG at 2115.07 | Stop loss: 2104.4513964285716 | Take profit: 2146.860930357143 +2025-03-10 16:18:16,797 - INFO - CLOSED long at 2098.24 | PnL: -0.80% | $-1.74 +2025-03-10 16:18:16,797 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.7744535714287 | Take profit: 2066.701519642857 +2025-03-10 16:18:16,894 - INFO - CLOSED short at 2096.36 | PnL: 0.09% | $-0.02 +2025-03-10 16:18:16,894 - INFO - OPENED LONG at 2096.36 | Stop loss: 2085.8349464285716 | Take profit: 2127.870280357143 +2025-03-10 16:18:16,953 - INFO - CLOSED long at 2089.84 | PnL: -0.31% | $-0.79 +2025-03-10 16:18:16,953 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3324535714287 | Take profit: 2058.4275196428575 +2025-03-10 16:18:17,053 - INFO - STOP LOSS hit for short at 2100.3324535714287 | PnL: -0.50% | $-1.14 +2025-03-10 16:18:17,076 - INFO - OPENED LONG at 2103.41 | Stop loss: 2092.8496964285714 | Take profit: 2135.0260303571426 +2025-03-10 16:18:17,105 - INFO - CLOSED long at 2104.22 | PnL: 0.04% | $-0.12 +2025-03-10 16:18:17,106 - INFO - OPENED SHORT at 2104.22 | Stop loss: 2114.7843535714287 | Take profit: 2072.591819642857 +2025-03-10 16:18:17,178 - INFO - CLOSED short at 2105.26 | PnL: -0.05% | $-0.28 +2025-03-10 16:18:17,178 - INFO - OPENED LONG at 2105.26 | Stop loss: 2094.6904464285717 | Take profit: 2136.903780357143 +2025-03-10 16:18:17,209 - INFO - CLOSED long at 2099.63 | PnL: -0.27% | $-0.69 +2025-03-10 16:18:17,210 - INFO - OPENED SHORT at 2099.63 | Stop loss: 2110.1714035714285 | Take profit: 2068.0706696428574 +2025-03-10 16:18:17,290 - INFO - CLOSED short at 2096.96 | PnL: 0.13% | $0.05 +2025-03-10 16:18:17,291 - INFO - OPENED LONG at 2096.96 | Stop loss: 2086.431946428572 | Take profit: 2128.4792803571427 +2025-03-10 16:18:17,314 - INFO - CLOSED long at 2098.66 | PnL: 0.08% | $-0.04 +2025-03-10 16:18:17,316 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.196553571428 | Take profit: 2067.115219642857 +2025-03-10 16:18:17,435 - INFO - CLOSED short at 2084.75 | PnL: 0.66% | $1.04 +2025-03-10 16:18:17,435 - INFO - OPENED LONG at 2084.75 | Stop loss: 2074.2829964285716 | Take profit: 2116.086130357143 +2025-03-10 16:18:17,482 - INFO - CLOSED long at 2084.25 | PnL: -0.02% | $-0.23 +2025-03-10 16:18:17,482 - INFO - OPENED SHORT at 2084.25 | Stop loss: 2094.714503571429 | Take profit: 2052.9213696428574 +2025-03-10 16:18:17,655 - INFO - TAKE PROFIT hit for short at 2052.9213696428574 | PnL: 1.50% | $2.62 +2025-03-10 16:18:17,699 - INFO - OPENED LONG at 2051.0 | Stop loss: 2040.7017464285714 | Take profit: 2081.829880357143 +2025-03-10 16:18:17,750 - INFO - CLOSED long at 2043.51 | PnL: -0.37% | $-0.89 +2025-03-10 16:18:17,750 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.7708035714286 | Take profit: 2012.7924696428572 +2025-03-10 16:18:17,787 - INFO - CLOSED short at 2052.89 | PnL: -0.46% | $-1.06 +2025-03-10 16:18:17,788 - INFO - OPENED LONG at 2052.89 | Stop loss: 2042.5822964285715 | Take profit: 2083.748230357143 +2025-03-10 16:18:17,813 - INFO - CLOSED long at 2053.22 | PnL: 0.02% | $-0.16 +2025-03-10 16:18:17,813 - INFO - OPENED SHORT at 2053.22 | Stop loss: 2063.529353571428 | Take profit: 2022.356819642857 +2025-03-10 16:18:17,867 - INFO - CLOSED short at 2054.03 | PnL: -0.04% | $-0.26 +2025-03-10 16:18:17,867 - INFO - OPENED LONG at 2054.03 | Stop loss: 2043.7165964285716 | Take profit: 2084.9053303571427 +2025-03-10 16:18:17,898 - INFO - CLOSED long at 2050.18 | PnL: -0.19% | $-0.54 +2025-03-10 16:18:17,898 - INFO - OPENED SHORT at 2050.18 | Stop loss: 2060.4741535714284 | Take profit: 2019.362419642857 +2025-03-10 16:18:17,949 - INFO - CLOSED short at 2043.95 | PnL: 0.30% | $0.38 +2025-03-10 16:18:17,950 - INFO - OPENED LONG at 2043.95 | Stop loss: 2033.6869964285715 | Take profit: 2074.674130357143 +2025-03-10 16:18:17,980 - INFO - CLOSED long at 2044.1 | PnL: 0.01% | $-0.17 +2025-03-10 16:18:17,980 - INFO - OPENED SHORT at 2044.1 | Stop loss: 2054.363753571429 | Take profit: 2013.373619642857 +2025-03-10 16:18:18,049 - INFO - CLOSED short at 2043.59 | PnL: 0.02% | $-0.14 +2025-03-10 16:18:18,049 - INFO - OPENED LONG at 2043.59 | Stop loss: 2033.3287964285714 | Take profit: 2074.308730357143 +2025-03-10 16:18:18,105 - INFO - CLOSED long at 2042.0 | PnL: -0.08% | $-0.33 +2025-03-10 16:18:18,106 - INFO - OPENED SHORT at 2042.0 | Stop loss: 2052.2532535714286 | Take profit: 2011.305119642857 +2025-03-10 16:18:18,209 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 35.7% in downtrends | Avg Win=$0.88, Avg Loss=$-0.45 +2025-03-10 16:18:18,210 - INFO - Episode 30: Reward=-32.92, Balance=$94.80, Win Rate=20.7%, Trades=29, Episode PnL=$1.14, Total PnL=$513.98, Max Drawdown=4.4%, Pred Accuracy=98.3% +2025-03-10 16:18:18,358 - INFO - Model saved to checkpoints/trading_agent_episode_30.pt +2025-03-10 16:18:18,359 - INFO - Checkpoint saved at episode 30 +2025-03-10 16:18:18,360 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:18:19,431 - INFO - Visualization saved for episode 30 +2025-03-10 16:18:21,353 - INFO - Visualization saved for episode 30 +2025-03-10 16:18:21,379 - INFO - Refreshing data for episode 31 +2025-03-10 16:18:21,380 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:18:21,718 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:18:21,730 - INFO - Initialized environment with 100 candles +2025-03-10 16:18:22,001 - INFO - OPENED LONG at 2121.8 | Stop loss: 2111.1476142857146 | Take profit: 2153.6920785714287 +2025-03-10 16:18:22,033 - INFO - CLOSED long at 2121.42 | PnL: -0.02% | $-0.23 +2025-03-10 16:18:22,033 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.070485714286 | Take profit: 2089.533621428571 +2025-03-10 16:18:22,225 - INFO - CLOSED short at 2116.81 | PnL: 0.22% | $0.23 +2025-03-10 16:18:22,226 - INFO - OPENED LONG at 2116.81 | Stop loss: 2106.1825642857143 | Take profit: 2148.6272285714285 +2025-03-10 16:18:22,322 - INFO - CLOSED long at 2114.75 | PnL: -0.10% | $-0.39 +2025-03-10 16:18:22,322 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.3671357142857 | Take profit: 2082.9636714285716 +2025-03-10 16:18:22,346 - INFO - CLOSED short at 2116.06 | PnL: -0.06% | $-0.32 +2025-03-10 16:18:22,374 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.829435714286 | Take profit: 2083.4167714285713 +2025-03-10 16:18:22,452 - INFO - CLOSED short at 2114.32 | PnL: 0.04% | $-0.11 +2025-03-10 16:18:22,452 - INFO - OPENED LONG at 2114.32 | Stop loss: 2103.7050142857147 | Take profit: 2146.099878571429 +2025-03-10 16:18:22,479 - INFO - CLOSED long at 2114.57 | PnL: 0.01% | $-0.17 +2025-03-10 16:18:22,480 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.186235714286 | Take profit: 2082.786371428572 +2025-03-10 16:18:22,534 - INFO - CLOSED short at 2113.28 | PnL: 0.06% | $-0.08 +2025-03-10 16:18:22,534 - INFO - OPENED LONG at 2113.28 | Stop loss: 2102.6702142857143 | Take profit: 2145.044278571429 +2025-03-10 16:18:22,559 - INFO - CLOSED long at 2114.5 | PnL: 0.06% | $-0.08 +2025-03-10 16:18:22,560 - INFO - OPENED SHORT at 2114.5 | Stop loss: 2125.115885714286 | Take profit: 2082.7174214285715 +2025-03-10 16:18:22,613 - INFO - CLOSED short at 2098.24 | PnL: 0.77% | $1.30 +2025-03-10 16:18:22,643 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.7452142857146 | Take profit: 2129.8192785714286 +2025-03-10 16:18:22,701 - INFO - CLOSED long at 2100.05 | PnL: 0.08% | $-0.03 +2025-03-10 16:18:22,701 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.593635714286 | Take profit: 2068.4841714285717 +2025-03-10 16:18:23,084 - INFO - CLOSED short at 2090.59 | PnL: 0.45% | $0.69 +2025-03-10 16:18:23,084 - INFO - OPENED LONG at 2090.59 | Stop loss: 2080.0936642857146 | Take profit: 2122.013928571429 +2025-03-10 16:18:23,133 - INFO - CLOSED long at 2084.95 | PnL: -0.27% | $-0.73 +2025-03-10 16:18:23,133 - INFO - OPENED SHORT at 2084.95 | Stop loss: 2095.4181357142857 | Take profit: 2053.610671428571 +2025-03-10 16:18:23,390 - INFO - CLOSED short at 2067.71 | PnL: 0.83% | $1.43 +2025-03-10 16:18:23,391 - INFO - OPENED LONG at 2067.71 | Stop loss: 2057.3280642857144 | Take profit: 2098.7907285714286 +2025-03-10 16:18:23,423 - INFO - CLOSED long at 2048.3 | PnL: -0.94% | $-2.07 +2025-03-10 16:18:23,424 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.584885714286 | Take profit: 2017.5104214285716 +2025-03-10 16:18:23,451 - INFO - CLOSED short at 2051.0 | PnL: -0.13% | $-0.45 +2025-03-10 16:18:23,452 - INFO - OPENED LONG at 2051.0 | Stop loss: 2040.7016142857144 | Take profit: 2081.8300785714287 +2025-03-10 16:18:23,480 - INFO - CLOSED long at 2043.51 | PnL: -0.37% | $-0.90 +2025-03-10 16:18:23,480 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.7709357142853 | Take profit: 2012.7922714285714 +2025-03-10 16:18:23,509 - INFO - CLOSED short at 2052.89 | PnL: -0.46% | $-1.07 +2025-03-10 16:18:23,510 - INFO - OPENED LONG at 2052.89 | Stop loss: 2042.582164285714 | Take profit: 2083.7484285714286 +2025-03-10 16:18:23,537 - INFO - CLOSED long at 2053.22 | PnL: 0.02% | $-0.16 +2025-03-10 16:18:23,538 - INFO - OPENED SHORT at 2053.22 | Stop loss: 2063.5294857142853 | Take profit: 2022.3566214285713 +2025-03-10 16:18:23,616 - INFO - CLOSED short at 2050.18 | PnL: 0.15% | $0.09 +2025-03-10 16:18:23,618 - INFO - OPENED LONG at 2050.18 | Stop loss: 2039.8857142857141 | Take profit: 2080.9977785714286 +2025-03-10 16:18:23,642 - INFO - CLOSED long at 2046.76 | PnL: -0.17% | $-0.51 +2025-03-10 16:18:23,644 - INFO - OPENED SHORT at 2046.76 | Stop loss: 2057.0371857142854 | Take profit: 2015.9935214285715 +2025-03-10 16:18:23,806 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$0.75, Avg Loss=$-0.49 +2025-03-10 16:18:23,807 - INFO - Episode 31: Reward=-21.63, Balance=$96.43, Win Rate=25.0%, Trades=20, Episode PnL=$1.70, Total PnL=$510.41, Max Drawdown=0.7%, Pred Accuracy=98.3% +2025-03-10 16:18:23,808 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:18:23,808 - INFO - Refreshing data for episode 32 +2025-03-10 16:18:23,809 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:18:24,204 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:18:24,217 - INFO - Initialized environment with 100 candles +2025-03-10 16:18:24,255 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.4527142857146 | Take profit: 2089.9074285714287 +2025-03-10 16:18:24,390 - INFO - CLOSED short at 2128.33 | PnL: -0.31% | $-0.80 +2025-03-10 16:18:24,391 - INFO - OPENED LONG at 2128.33 | Stop loss: 2117.6446357142854 | Take profit: 2160.3205214285713 +2025-03-10 16:18:24,416 - INFO - CLOSED long at 2124.77 | PnL: -0.17% | $-0.52 +2025-03-10 16:18:24,416 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.437564285714 | Take profit: 2092.8328785714284 +2025-03-10 16:18:24,462 - INFO - CLOSED short at 2116.81 | PnL: 0.37% | $0.53 +2025-03-10 16:18:24,463 - INFO - OPENED LONG at 2116.81 | Stop loss: 2106.1822357142855 | Take profit: 2148.6277214285715 +2025-03-10 16:18:24,486 - INFO - CLOSED long at 2114.78 | PnL: -0.10% | $-0.38 +2025-03-10 16:18:24,486 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.3976142857146 | Take profit: 2082.992728571429 +2025-03-10 16:18:24,583 - INFO - CLOSED short at 2115.21 | PnL: -0.02% | $-0.23 +2025-03-10 16:18:24,584 - INFO - OPENED LONG at 2115.21 | Stop loss: 2104.590235714286 | Take profit: 2147.003721428571 +2025-03-10 16:18:24,632 - INFO - CLOSED long at 2115.11 | PnL: -0.00% | $-0.20 +2025-03-10 16:18:24,633 - INFO - OPENED SHORT at 2115.11 | Stop loss: 2125.729264285714 | Take profit: 2083.317778571429 +2025-03-10 16:18:24,869 - INFO - CLOSED short at 2091.36 | PnL: 1.12% | $1.97 +2025-03-10 16:18:24,869 - INFO - OPENED LONG at 2091.36 | Stop loss: 2080.8594857142857 | Take profit: 2122.795971428571 +2025-03-10 16:18:24,897 - INFO - CLOSED long at 2100.05 | PnL: 0.42% | $0.62 +2025-03-10 16:18:24,897 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5939642857143 | Take profit: 2068.4836785714288 +2025-03-10 16:18:24,963 - INFO - CLOSED short at 2089.04 | PnL: 0.52% | $0.84 +2025-03-10 16:18:24,963 - INFO - OPENED LONG at 2089.04 | Stop loss: 2078.551085714286 | Take profit: 2120.441171428571 +2025-03-10 16:18:24,988 - INFO - CLOSED long at 2089.84 | PnL: 0.04% | $-0.12 +2025-03-10 16:18:24,988 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.332914285714 | Take profit: 2058.426828571429 +2025-03-10 16:18:25,013 - INFO - CLOSED short at 2096.19 | PnL: -0.30% | $-0.80 +2025-03-10 16:18:25,014 - INFO - OPENED LONG at 2096.19 | Stop loss: 2085.665335714286 | Take profit: 2127.6984214285717 +2025-03-10 16:18:25,066 - INFO - CLOSED long at 2102.83 | PnL: 0.32% | $0.43 +2025-03-10 16:18:25,067 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3878642857144 | Take profit: 2071.2219785714283 +2025-03-10 16:18:25,223 - INFO - CLOSED short at 2099.63 | PnL: 0.15% | $0.10 +2025-03-10 16:18:25,224 - INFO - OPENED LONG at 2099.63 | Stop loss: 2089.0881357142857 | Take profit: 2131.1900214285715 +2025-03-10 16:18:25,285 - INFO - CLOSED long at 2094.16 | PnL: -0.26% | $-0.72 +2025-03-10 16:18:25,285 - INFO - OPENED SHORT at 2094.16 | Stop loss: 2104.6745142857144 | Take profit: 2062.6820285714284 +2025-03-10 16:18:25,320 - INFO - CLOSED short at 2096.96 | PnL: -0.13% | $-0.46 +2025-03-10 16:18:25,320 - INFO - OPENED LONG at 2096.96 | Stop loss: 2086.431485714286 | Take profit: 2128.4799714285714 +2025-03-10 16:18:25,348 - INFO - CLOSED long at 2098.66 | PnL: 0.08% | $-0.04 +2025-03-10 16:18:25,349 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.197014285714 | Take profit: 2067.1145285714283 +2025-03-10 16:18:25,776 - INFO - TAKE PROFIT hit for short at 2067.1145285714283 | PnL: 1.50% | $2.75 +2025-03-10 16:18:25,803 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.2987142857146 | Take profit: 2020.1694285714286 +2025-03-10 16:18:26,210 - INFO - CLOSED short at 2036.71 | PnL: 0.70% | $1.20 +2025-03-10 16:18:26,211 - INFO - OPENED LONG at 2036.71 | Stop loss: 2026.4827357142858 | Take profit: 2067.3262214285714 +2025-03-10 16:18:26,263 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 60.0% in downtrends | Avg Win=$1.06, Avg Loss=$-0.43 +2025-03-10 16:18:26,264 - INFO - Episode 32: Reward=-9.60, Balance=$104.18, Win Rate=44.4%, Trades=18, Episode PnL=$5.11, Total PnL=$514.59, Max Drawdown=0.0%, Pred Accuracy=98.4% +2025-03-10 16:18:26,264 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:18:26,265 - INFO - Refreshing data for episode 33 +2025-03-10 16:18:26,265 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:18:26,582 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:18:26,594 - INFO - Initialized environment with 100 candles +2025-03-10 16:18:26,633 - INFO - OPENED LONG at 2121.8 | Stop loss: 2111.1467500000003 | Take profit: 2153.6933750000003 +2025-03-10 16:18:26,659 - INFO - CLOSED long at 2121.42 | PnL: -0.02% | $-0.23 +2025-03-10 16:18:26,659 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.07135 | Take profit: 2089.532325 +2025-03-10 16:18:26,679 - INFO - CLOSED short at 2116.52 | PnL: 0.23% | $0.26 +2025-03-10 16:18:26,717 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.65935 | Take profit: 2087.168325 +2025-03-10 16:18:26,754 - INFO - CLOSED short at 2120.96 | PnL: -0.09% | $-0.38 +2025-03-10 16:18:26,754 - INFO - OPENED LONG at 2120.96 | Stop loss: 2110.31095 | Take profit: 2152.840775 +2025-03-10 16:18:26,779 - INFO - CLOSED long at 2124.9 | PnL: 0.19% | $0.17 +2025-03-10 16:18:26,779 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.5687500000004 | Take profit: 2092.960125 +2025-03-10 16:18:26,828 - INFO - CLOSED short at 2124.77 | PnL: 0.01% | $-0.18 +2025-03-10 16:18:26,829 - INFO - OPENED LONG at 2124.77 | Stop loss: 2114.1019 | Take profit: 2156.707925 +2025-03-10 16:18:26,861 - INFO - CLOSED long at 2120.26 | PnL: -0.21% | $-0.61 +2025-03-10 16:18:26,862 - INFO - OPENED SHORT at 2120.26 | Stop loss: 2130.9055500000004 | Take profit: 2088.3897250000005 +2025-03-10 16:18:27,067 - INFO - CLOSED short at 2115.21 | PnL: 0.24% | $0.27 +2025-03-10 16:18:27,068 - INFO - OPENED LONG at 2115.21 | Stop loss: 2104.5897 | Take profit: 2147.0045250000003 +2025-03-10 16:18:27,117 - INFO - CLOSED long at 2114.1 | PnL: -0.05% | $-0.30 +2025-03-10 16:18:27,118 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.7147499999996 | Take profit: 2082.3221249999997 +2025-03-10 16:18:27,292 - INFO - CLOSED short at 2114.5 | PnL: -0.02% | $-0.23 +2025-03-10 16:18:27,293 - INFO - OPENED LONG at 2114.5 | Stop loss: 2103.88325 | Take profit: 2146.283875 +2025-03-10 16:18:27,315 - INFO - CLOSED long at 2115.07 | PnL: 0.03% | $-0.14 +2025-03-10 16:18:27,315 - INFO - OPENED SHORT at 2115.07 | Stop loss: 2125.6896 | Take profit: 2083.277575 +2025-03-10 16:18:27,525 - INFO - CLOSED short at 2089.04 | PnL: 1.23% | $2.18 +2025-03-10 16:18:27,573 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.33345 | Take profit: 2058.426025 +2025-03-10 16:18:27,599 - INFO - CLOSED short at 2096.19 | PnL: -0.30% | $-0.80 +2025-03-10 16:18:27,600 - INFO - OPENED LONG at 2096.19 | Stop loss: 2085.6648 | Take profit: 2127.6992250000003 +2025-03-10 16:18:27,631 - INFO - CLOSED long at 2100.0 | PnL: 0.18% | $0.16 +2025-03-10 16:18:27,632 - INFO - OPENED SHORT at 2100.0 | Stop loss: 2110.54425 | Take profit: 2068.433625 +2025-03-10 16:18:27,706 - INFO - CLOSED short at 2104.22 | PnL: -0.20% | $-0.59 +2025-03-10 16:18:27,706 - INFO - OPENED LONG at 2104.22 | Stop loss: 2093.65465 | Take profit: 2135.849675 +2025-03-10 16:18:27,734 - INFO - CLOSED long at 2104.67 | PnL: 0.02% | $-0.15 +2025-03-10 16:18:27,735 - INFO - OPENED SHORT at 2104.67 | Stop loss: 2115.2376000000004 | Take profit: 2073.033575 +2025-03-10 16:18:27,765 - INFO - CLOSED short at 2105.26 | PnL: -0.03% | $-0.25 +2025-03-10 16:18:27,766 - INFO - OPENED LONG at 2105.26 | Stop loss: 2094.6894500000003 | Take profit: 2136.9052750000005 +2025-03-10 16:18:27,822 - INFO - CLOSED long at 2099.63 | PnL: -0.27% | $-0.71 +2025-03-10 16:18:27,822 - INFO - OPENED SHORT at 2099.63 | Stop loss: 2110.1724 | Take profit: 2068.069175 +2025-03-10 16:18:28,342 - INFO - TAKE PROFIT hit for short at 2068.069175 | PnL: 1.50% | $2.71 +2025-03-10 16:18:28,385 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.58575 | Take profit: 2017.5091250000003 +2025-03-10 16:18:28,491 - INFO - CLOSED short at 2053.22 | PnL: -0.24% | $-0.67 +2025-03-10 16:18:28,492 - INFO - OPENED LONG at 2053.22 | Stop loss: 2042.9096499999998 | Take profit: 2084.0846749999996 +2025-03-10 16:18:28,517 - INFO - CLOSED long at 2058.11 | PnL: 0.24% | $0.27 +2025-03-10 16:18:28,517 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.4447999999998 | Take profit: 2027.1719750000002 +2025-03-10 16:18:28,737 - INFO - CLOSED short at 2044.1 | PnL: 0.68% | $1.15 +2025-03-10 16:18:28,738 - INFO - OPENED LONG at 2044.1 | Stop loss: 2033.8352499999999 | Take profit: 2074.827875 +2025-03-10 16:18:28,784 - INFO - CLOSED long at 2043.59 | PnL: -0.02% | $-0.25 +2025-03-10 16:18:28,784 - INFO - OPENED SHORT at 2043.59 | Stop loss: 2053.8522 | Take profit: 2012.869775 +2025-03-10 16:18:28,805 - INFO - CLOSED short at 2042.0 | PnL: 0.08% | $-0.04 +2025-03-10 16:18:28,805 - INFO - OPENED LONG at 2042.0 | Stop loss: 2031.7457499999998 | Take profit: 2072.696375 +2025-03-10 16:18:28,831 - INFO - CLOSED long at 2036.71 | PnL: -0.26% | $-0.71 +2025-03-10 16:18:28,831 - INFO - OPENED SHORT at 2036.71 | Stop loss: 2046.9378 | Take profit: 2006.092975 +2025-03-10 16:18:28,889 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 27.3% in downtrends | Avg Win=$0.89, Avg Loss=$-0.39 +2025-03-10 16:18:28,890 - INFO - Episode 33: Reward=-18.12, Balance=$100.91, Win Rate=33.3%, Trades=24, Episode PnL=$3.42, Total PnL=$515.49, Max Drawdown=0.0%, Pred Accuracy=98.4% +2025-03-10 16:18:28,890 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:18:28,890 - INFO - Refreshing data for episode 34 +2025-03-10 16:18:28,891 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:18:29,220 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:18:29,233 - INFO - Initialized environment with 100 candles +2025-03-10 16:18:29,267 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.454828571429 | Take profit: 2089.904257142857 +2025-03-10 16:18:29,550 - INFO - CLOSED short at 2115.52 | PnL: 0.30% | $0.38 +2025-03-10 16:18:29,551 - INFO - OPENED LONG at 2115.52 | Stop loss: 2104.8965714285714 | Take profit: 2147.321542857143 +2025-03-10 16:18:29,573 - INFO - CLOSED long at 2114.75 | PnL: -0.04% | $-0.27 +2025-03-10 16:18:29,574 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.369578571429 | Take profit: 2082.960007142857 +2025-03-10 16:18:29,638 - INFO - CLOSED short at 2116.06 | PnL: -0.06% | $-0.32 +2025-03-10 16:18:29,638 - INFO - OPENED LONG at 2116.06 | Stop loss: 2105.4338714285714 | Take profit: 2147.869642857143 +2025-03-10 16:18:29,781 - INFO - CLOSED long at 2115.11 | PnL: -0.04% | $-0.28 +2025-03-10 16:18:29,781 - INFO - OPENED SHORT at 2115.11 | Stop loss: 2125.731378571429 | Take profit: 2083.3146071428573 +2025-03-10 16:18:29,809 - INFO - CLOSED short at 2114.32 | PnL: 0.04% | $-0.12 +2025-03-10 16:18:29,809 - INFO - OPENED LONG at 2114.32 | Stop loss: 2103.7025714285714 | Take profit: 2146.103542857143 +2025-03-10 16:18:29,837 - INFO - CLOSED long at 2114.57 | PnL: 0.01% | $-0.17 +2025-03-10 16:18:29,837 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.188678571429 | Take profit: 2082.7827071428574 +2025-03-10 16:18:30,005 - INFO - CLOSED short at 2098.24 | PnL: 0.77% | $1.31 +2025-03-10 16:18:30,006 - INFO - OPENED LONG at 2098.24 | Stop loss: 2087.7029714285713 | Take profit: 2129.7823428571423 +2025-03-10 16:18:30,071 - INFO - CLOSED long at 2098.28 | PnL: 0.00% | $-0.19 +2025-03-10 16:18:30,071 - INFO - OPENED SHORT at 2098.28 | Stop loss: 2108.8172285714286 | Take profit: 2066.7370571428573 +2025-03-10 16:18:30,256 - INFO - CLOSED short at 2089.84 | PnL: 0.40% | $0.59 +2025-03-10 16:18:30,256 - INFO - OPENED LONG at 2089.84 | Stop loss: 2079.3449714285716 | Take profit: 2121.256342857143 +2025-03-10 16:18:30,286 - INFO - CLOSED long at 2096.19 | PnL: 0.30% | $0.40 +2025-03-10 16:18:30,287 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.7167785714287 | Take profit: 2064.678407142857 +2025-03-10 16:18:30,579 - INFO - CLOSED short at 2094.16 | PnL: 0.10% | $-0.01 +2025-03-10 16:18:30,579 - INFO - OPENED LONG at 2094.16 | Stop loss: 2083.6433714285713 | Take profit: 2125.6411428571428 +2025-03-10 16:18:30,629 - INFO - CLOSED long at 2098.66 | PnL: 0.21% | $0.23 +2025-03-10 16:18:30,629 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.1991285714284 | Take profit: 2067.111357142857 +2025-03-10 16:18:30,725 - INFO - CLOSED short at 2080.58 | PnL: 0.86% | $1.51 +2025-03-10 16:18:30,726 - INFO - OPENED LONG at 2080.58 | Stop loss: 2070.1312714285714 | Take profit: 2111.857442857143 +2025-03-10 16:18:30,826 - INFO - CLOSED long at 2084.25 | PnL: 0.18% | $0.15 +2025-03-10 16:18:30,827 - INFO - OPENED SHORT at 2084.25 | Stop loss: 2094.717078571429 | Take profit: 2052.917507142857 +2025-03-10 16:18:30,870 - INFO - CLOSED short at 2085.37 | PnL: -0.05% | $-0.31 +2025-03-10 16:18:30,871 - INFO - OPENED LONG at 2085.37 | Stop loss: 2074.897321428571 | Take profit: 2116.719292857143 +2025-03-10 16:18:30,932 - INFO - CLOSED long at 2084.11 | PnL: -0.06% | $-0.32 +2025-03-10 16:18:30,935 - INFO - OPENED SHORT at 2084.11 | Stop loss: 2094.576378571429 | Take profit: 2052.7796071428575 +2025-03-10 16:18:31,229 - INFO - TAKE PROFIT hit for short at 2052.7796071428575 | PnL: 1.50% | $2.82 +2025-03-10 16:18:31,254 - INFO - OPENED LONG at 2051.0 | Stop loss: 2040.6991714285714 | Take profit: 2081.8337428571426 +2025-03-10 16:18:31,309 - INFO - CLOSED long at 2052.89 | PnL: 0.09% | $-0.02 +2025-03-10 16:18:31,310 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.200278571428 | Take profit: 2022.027907142857 +2025-03-10 16:18:31,704 - INFO - CLOSED short at 2036.71 | PnL: 0.79% | $1.42 +2025-03-10 16:18:31,705 - INFO - OPENED LONG at 2036.71 | Stop loss: 2026.4806214285713 | Take profit: 2067.329392857143 +2025-03-10 16:18:31,735 - INFO - CLOSED long at 2027.51 | PnL: -0.45% | $-1.15 +2025-03-10 16:18:31,735 - INFO - OPENED SHORT at 2027.51 | Stop loss: 2037.6933785714286 | Take profit: 1997.028607142857 +2025-03-10 16:18:31,764 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 60.0% in downtrends | Avg Win=$0.98, Avg Loss=$-0.29 +2025-03-10 16:18:31,765 - INFO - Episode 34: Reward=-9.35, Balance=$105.65, Win Rate=45.0%, Trades=20, Episode PnL=$7.28, Total PnL=$521.15, Max Drawdown=0.0%, Pred Accuracy=98.4% +2025-03-10 16:18:31,765 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:18:31,766 - INFO - Refreshing data for episode 35 +2025-03-10 16:18:31,767 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:18:32,075 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:18:32,085 - INFO - Initialized environment with 100 candles +2025-03-10 16:18:33,478 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.454828571429 | Take profit: 2089.904257142857 +2025-03-10 16:18:33,534 - INFO - CLOSED short at 2116.52 | PnL: 0.25% | $0.29 +2025-03-10 16:18:33,535 - INFO - OPENED LONG at 2116.52 | Stop loss: 2105.8915714285713 | Take profit: 2148.336542857143 +2025-03-10 16:18:33,592 - INFO - CLOSED long at 2120.96 | PnL: 0.21% | $0.22 +2025-03-10 16:18:33,593 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6106285714286 | Take profit: 2089.076857142857 +2025-03-10 16:18:33,623 - INFO - CLOSED short at 2124.9 | PnL: -0.19% | $-0.56 +2025-03-10 16:18:33,623 - INFO - OPENED LONG at 2124.9 | Stop loss: 2114.2296714285717 | Take profit: 2156.842242857143 +2025-03-10 16:18:33,654 - INFO - CLOSED long at 2128.33 | PnL: 0.16% | $0.12 +2025-03-10 16:18:33,654 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0174785714285 | Take profit: 2096.336307142857 +2025-03-10 16:18:34,119 - INFO - CLOSED short at 2115.07 | PnL: 0.62% | $1.02 +2025-03-10 16:18:34,119 - INFO - OPENED LONG at 2115.07 | Stop loss: 2104.4488214285716 | Take profit: 2146.864792857143 +2025-03-10 16:18:34,149 - INFO - STOP LOSS hit for long at 2104.4488214285716 | PnL: -0.50% | $-1.19 +2025-03-10 16:18:34,179 - INFO - OPENED SHORT at 2098.28 | Stop loss: 2108.8172285714286 | Take profit: 2066.7370571428573 +2025-03-10 16:18:34,244 - INFO - CLOSED short at 2091.36 | PnL: 0.33% | $0.45 +2025-03-10 16:18:34,245 - INFO - OPENED LONG at 2091.36 | Stop loss: 2080.8573714285712 | Take profit: 2122.799142857143 +2025-03-10 16:18:34,345 - INFO - CLOSED long at 2096.36 | PnL: 0.24% | $0.27 +2025-03-10 16:18:34,345 - INFO - OPENED SHORT at 2096.36 | Stop loss: 2106.8876285714286 | Take profit: 2064.8458571428573 +2025-03-10 16:18:34,771 - INFO - CLOSED short at 2094.16 | PnL: 0.10% | $0.01 +2025-03-10 16:18:34,798 - INFO - OPENED SHORT at 2096.96 | Stop loss: 2107.4906285714283 | Take profit: 2065.436857142857 +2025-03-10 16:18:34,823 - INFO - CLOSED short at 2098.66 | PnL: -0.08% | $-0.36 +2025-03-10 16:18:34,824 - INFO - OPENED LONG at 2098.66 | Stop loss: 2088.1208714285713 | Take profit: 2130.208642857143 +2025-03-10 16:18:34,879 - INFO - CLOSED long at 2090.99 | PnL: -0.37% | $-0.91 +2025-03-10 16:18:34,879 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.490778571428 | Take profit: 2059.556407142857 +2025-03-10 16:18:34,937 - INFO - CLOSED short at 2080.58 | PnL: 0.50% | $0.77 +2025-03-10 16:18:34,938 - INFO - OPENED LONG at 2080.58 | Stop loss: 2070.1312714285714 | Take profit: 2111.857442857143 +2025-03-10 16:18:34,968 - INFO - CLOSED long at 2084.75 | PnL: 0.20% | $0.20 +2025-03-10 16:18:34,969 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2195785714284 | Take profit: 2053.410007142857 +2025-03-10 16:18:35,076 - INFO - CLOSED short at 2084.25 | PnL: 0.02% | $-0.15 +2025-03-10 16:18:35,076 - INFO - OPENED LONG at 2084.25 | Stop loss: 2073.782921428571 | Take profit: 2115.582492857143 +2025-03-10 16:18:35,138 - INFO - CLOSED long at 2085.37 | PnL: 0.05% | $-0.09 +2025-03-10 16:18:35,139 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8426785714287 | Take profit: 2054.020707142857 +2025-03-10 16:18:35,296 - INFO - TAKE PROFIT hit for short at 2054.020707142857 | PnL: 1.50% | $2.75 +2025-03-10 16:18:35,330 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3008285714286 | Take profit: 2020.1662571428571 +2025-03-10 16:18:35,362 - INFO - CLOSED short at 2043.51 | PnL: 0.37% | $0.53 +2025-03-10 16:18:35,362 - INFO - OPENED LONG at 2043.51 | Stop loss: 2033.2466214285714 | Take profit: 2074.2313928571425 +2025-03-10 16:18:35,469 - INFO - CLOSED long at 2053.22 | PnL: 0.48% | $0.76 +2025-03-10 16:18:35,469 - INFO - OPENED SHORT at 2053.22 | Stop loss: 2063.531928571428 | Take profit: 2022.3529571428571 +2025-03-10 16:18:35,577 - INFO - CLOSED short at 2054.03 | PnL: -0.04% | $-0.28 +2025-03-10 16:18:35,577 - INFO - OPENED LONG at 2054.03 | Stop loss: 2043.7140214285714 | Take profit: 2084.909192857143 +2025-03-10 16:18:35,613 - INFO - CLOSED long at 2050.18 | PnL: -0.19% | $-0.58 +2025-03-10 16:18:35,613 - INFO - OPENED SHORT at 2050.18 | Stop loss: 2060.4767285714283 | Take profit: 2019.3585571428569 +2025-03-10 16:18:35,684 - INFO - CLOSED short at 2043.95 | PnL: 0.30% | $0.41 +2025-03-10 16:18:35,685 - INFO - OPENED LONG at 2043.95 | Stop loss: 2033.6844214285716 | Take profit: 2074.677992857143 +2025-03-10 16:18:35,722 - INFO - CLOSED long at 2044.1 | PnL: 0.01% | $-0.19 +2025-03-10 16:18:35,722 - INFO - OPENED SHORT at 2044.1 | Stop loss: 2054.3663285714283 | Take profit: 2013.3697571428572 +2025-03-10 16:18:35,753 - INFO - CLOSED short at 2043.59 | PnL: 0.02% | $-0.15 +2025-03-10 16:18:35,754 - INFO - OPENED LONG at 2043.59 | Stop loss: 2033.3262214285712 | Take profit: 2074.312592857143 +2025-03-10 16:18:35,784 - INFO - CLOSED long at 2042.0 | PnL: -0.08% | $-0.36 +2025-03-10 16:18:35,784 - INFO - OPENED SHORT at 2042.0 | Stop loss: 2052.2558285714285 | Take profit: 2011.3012571428571 +2025-03-10 16:18:35,966 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 53.8% in downtrends | Avg Win=$0.60, Avg Loss=$-0.44 +2025-03-10 16:18:35,967 - INFO - Episode 35: Reward=-5.86, Balance=$102.98, Win Rate=54.2%, Trades=24, Episode PnL=$3.55, Total PnL=$524.12, Max Drawdown=0.1%, Pred Accuracy=98.5% +2025-03-10 16:18:35,967 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:18:35,968 - INFO - Refreshing data for episode 36 +2025-03-10 16:18:35,968 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:18:36,268 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:18:36,281 - INFO - Initialized environment with 100 candles +2025-03-10 16:18:36,320 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.456160714286 | Take profit: 2089.9022589285714 +2025-03-10 16:18:36,441 - INFO - CLOSED short at 2120.96 | PnL: 0.04% | $-0.12 +2025-03-10 16:18:36,441 - INFO - OPENED LONG at 2120.96 | Stop loss: 2110.308039285714 | Take profit: 2152.8451410714283 +2025-03-10 16:18:36,589 - INFO - CLOSED long at 2116.81 | PnL: -0.20% | $-0.58 +2025-03-10 16:18:36,590 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.4412107142857 | Take profit: 2084.9871089285716 +2025-03-10 16:18:36,658 - INFO - CLOSED short at 2115.52 | PnL: 0.06% | $-0.08 +2025-03-10 16:18:36,658 - INFO - OPENED LONG at 2115.52 | Stop loss: 2104.8952392857145 | Take profit: 2147.3235410714283 +2025-03-10 16:18:36,720 - INFO - CLOSED long at 2116.06 | PnL: 0.03% | $-0.14 +2025-03-10 16:18:36,721 - INFO - OPENED SHORT at 2116.06 | Stop loss: 2126.687460714286 | Take profit: 2084.2483589285716 +2025-03-10 16:18:36,788 - INFO - CLOSED short at 2114.1 | PnL: 0.09% | $-0.01 +2025-03-10 16:18:36,788 - INFO - OPENED LONG at 2114.1 | Stop loss: 2103.4823392857143 | Take profit: 2145.882241071429 +2025-03-10 16:18:37,005 - INFO - STOP LOSS hit for long at 2103.4823392857143 | PnL: -0.50% | $-1.17 +2025-03-10 16:18:37,038 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.7414392857145 | Take profit: 2129.824941071429 +2025-03-10 16:18:37,065 - INFO - CLOSED long at 2091.36 | PnL: -0.33% | $-0.82 +2025-03-10 16:18:37,065 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.863960714286 | Take profit: 2059.918858928572 +2025-03-10 16:18:37,163 - INFO - CLOSED short at 2089.04 | PnL: 0.11% | $0.02 +2025-03-10 16:18:37,163 - INFO - OPENED LONG at 2089.04 | Stop loss: 2078.5476392857145 | Take profit: 2120.4463410714284 +2025-03-10 16:18:37,199 - INFO - CLOSED long at 2089.84 | PnL: 0.04% | $-0.12 +2025-03-10 16:18:37,199 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.336360714286 | Take profit: 2058.4216589285716 +2025-03-10 16:18:37,238 - INFO - CLOSED short at 2096.19 | PnL: -0.30% | $-0.77 +2025-03-10 16:18:37,238 - INFO - OPENED LONG at 2096.19 | Stop loss: 2085.661889285714 | Take profit: 2127.703591071429 +2025-03-10 16:18:37,265 - INFO - CLOSED long at 2100.0 | PnL: 0.18% | $0.15 +2025-03-10 16:18:37,266 - INFO - OPENED SHORT at 2100.0 | Stop loss: 2110.5471607142854 | Take profit: 2068.4292589285715 +2025-03-10 16:18:37,304 - INFO - CLOSED short at 2102.83 | PnL: -0.13% | $-0.44 +2025-03-10 16:18:37,304 - INFO - OPENED LONG at 2102.83 | Stop loss: 2092.268689285714 | Take profit: 2134.4431910714284 +2025-03-10 16:18:37,366 - INFO - CLOSED long at 2104.22 | PnL: 0.07% | $-0.06 +2025-03-10 16:18:37,367 - INFO - OPENED SHORT at 2104.22 | Stop loss: 2114.7882607142856 | Take profit: 2072.585958928571 +2025-03-10 16:18:37,436 - INFO - CLOSED short at 2105.26 | PnL: -0.05% | $-0.28 +2025-03-10 16:18:37,436 - INFO - OPENED LONG at 2105.26 | Stop loss: 2094.6865392857144 | Take profit: 2136.9096410714287 +2025-03-10 16:18:37,496 - INFO - CLOSED long at 2099.22 | PnL: -0.29% | $-0.72 +2025-03-10 16:18:37,497 - INFO - OPENED SHORT at 2099.22 | Stop loss: 2109.7632607142855 | Take profit: 2067.6609589285713 +2025-03-10 16:18:37,520 - INFO - CLOSED short at 2094.16 | PnL: 0.24% | $0.26 +2025-03-10 16:18:37,520 - INFO - OPENED LONG at 2094.16 | Stop loss: 2083.6420392857144 | Take profit: 2125.6431410714285 +2025-03-10 16:18:37,626 - INFO - CLOSED long at 2090.99 | PnL: -0.15% | $-0.47 +2025-03-10 16:18:37,626 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.4921107142854 | Take profit: 2059.5544089285713 +2025-03-10 16:18:37,659 - INFO - CLOSED short at 2084.95 | PnL: 0.29% | $0.35 +2025-03-10 16:18:37,659 - INFO - OPENED LONG at 2084.95 | Stop loss: 2074.4780892857143 | Take profit: 2116.2949910714287 +2025-03-10 16:18:37,689 - INFO - CLOSED long at 2080.58 | PnL: -0.21% | $-0.58 +2025-03-10 16:18:37,689 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0300607142854 | Take profit: 2049.3005589285713 +2025-03-10 16:18:37,811 - INFO - CLOSED short at 2085.37 | PnL: -0.23% | $-0.61 +2025-03-10 16:18:37,811 - INFO - OPENED LONG at 2085.37 | Stop loss: 2074.895989285714 | Take profit: 2116.7212910714284 +2025-03-10 16:18:37,943 - INFO - CLOSED long at 2075.07 | PnL: -0.49% | $-1.09 +2025-03-10 16:18:37,943 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.4925107142863 | Take profit: 2043.8732089285716 +2025-03-10 16:18:37,999 - INFO - CLOSED short at 2067.71 | PnL: 0.35% | $0.46 +2025-03-10 16:18:38,000 - INFO - OPENED LONG at 2067.71 | Stop loss: 2057.3242892857143 | Take profit: 2098.7963910714284 +2025-03-10 16:18:38,097 - INFO - CLOSED long at 2048.3 | PnL: -0.94% | $-1.89 +2025-03-10 16:18:38,097 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.588660714286 | Take profit: 2017.5047589285716 +2025-03-10 16:18:38,177 - INFO - CLOSED short at 2051.0 | PnL: -0.13% | $-0.41 +2025-03-10 16:18:38,178 - INFO - OPENED LONG at 2051.0 | Stop loss: 2040.6978392857145 | Take profit: 2081.8357410714284 +2025-03-10 16:18:38,204 - INFO - CLOSED long at 2043.51 | PnL: -0.37% | $-0.83 +2025-03-10 16:18:38,205 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.774710714286 | Take profit: 2012.7866089285715 +2025-03-10 16:18:38,280 - INFO - CLOSED short at 2058.11 | PnL: -0.71% | $-1.43 +2025-03-10 16:18:38,280 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.7722892857144 | Take profit: 2089.0523910714287 +2025-03-10 16:18:38,335 - INFO - CLOSED long at 2050.18 | PnL: -0.39% | $-0.84 +2025-03-10 16:18:38,336 - INFO - OPENED SHORT at 2050.18 | Stop loss: 2060.4780607142857 | Take profit: 2019.356558928571 +2025-03-10 16:18:38,361 - INFO - CLOSED short at 2046.76 | PnL: 0.17% | $0.11 +2025-03-10 16:18:38,361 - INFO - OPENED LONG at 2046.76 | Stop loss: 2036.4790392857142 | Take profit: 2077.5321410714287 +2025-03-10 16:18:38,411 - INFO - CLOSED long at 2043.95 | PnL: -0.14% | $-0.41 +2025-03-10 16:18:38,413 - INFO - OPENED SHORT at 2043.95 | Stop loss: 2054.216910714286 | Take profit: 2013.2200089285714 +2025-03-10 16:18:38,511 - INFO - CLOSED short at 2043.59 | PnL: 0.02% | $-0.14 +2025-03-10 16:18:38,511 - INFO - OPENED LONG at 2043.59 | Stop loss: 2033.3248892857143 | Take profit: 2074.3145910714284 +2025-03-10 16:18:38,583 - INFO - CLOSED long at 2036.71 | PnL: -0.34% | $-0.75 +2025-03-10 16:18:38,584 - INFO - OPENED SHORT at 2036.71 | Stop loss: 2046.9407107142856 | Take profit: 2006.0886089285716 +2025-03-10 16:18:38,619 - INFO - CLOSED short at 2027.51 | PnL: 0.45% | $0.60 +2025-03-10 16:18:38,619 - INFO - OPENED LONG at 2027.51 | Stop loss: 2017.3252892857142 | Take profit: 2057.9933910714285 +2025-03-10 16:18:38,647 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 35.3% in downtrends | Avg Win=$0.28, Avg Loss=$-0.59 +2025-03-10 16:18:38,648 - INFO - Episode 36: Reward=-48.87, Balance=$87.20, Win Rate=21.9%, Trades=32, Episode PnL=$-3.66, Total PnL=$511.32, Max Drawdown=2.1%, Pred Accuracy=98.5% +2025-03-10 16:18:38,649 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:18:38,650 - INFO - Refreshing data for episode 37 +2025-03-10 16:18:38,650 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:18:39,041 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:18:39,053 - INFO - Initialized environment with 100 candles +2025-03-10 16:18:39,091 - INFO - OPENED LONG at 2121.8 | Stop loss: 2111.143735714286 | Take profit: 2153.6978964285713 +2025-03-10 16:18:39,268 - INFO - CLOSED long at 2124.77 | PnL: 0.14% | $0.08 +2025-03-10 16:18:39,322 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.4413142857143 | Take profit: 2084.9869535714283 +2025-03-10 16:18:39,386 - INFO - CLOSED short at 2115.52 | PnL: 0.06% | $-0.08 +2025-03-10 16:18:39,386 - INFO - OPENED LONG at 2115.52 | Stop loss: 2104.895135714286 | Take profit: 2147.3236964285716 +2025-03-10 16:18:39,453 - INFO - CLOSED long at 2114.75 | PnL: -0.04% | $-0.27 +2025-03-10 16:18:39,453 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.371014285714 | Take profit: 2082.9578535714286 +2025-03-10 16:18:39,506 - INFO - CLOSED short at 2116.06 | PnL: -0.06% | $-0.32 +2025-03-10 16:18:39,507 - INFO - OPENED LONG at 2116.06 | Stop loss: 2105.4324357142855 | Take profit: 2147.8717964285715 +2025-03-10 16:18:39,634 - INFO - CLOSED long at 2114.32 | PnL: -0.08% | $-0.35 +2025-03-10 16:18:39,635 - INFO - OPENED SHORT at 2114.32 | Stop loss: 2124.9388642857148 | Take profit: 2082.5343035714286 +2025-03-10 16:18:39,999 - INFO - CLOSED short at 2096.36 | PnL: 0.85% | $1.45 +2025-03-10 16:18:39,999 - INFO - OPENED LONG at 2096.36 | Stop loss: 2085.8309357142857 | Take profit: 2127.8762964285715 +2025-03-10 16:18:40,053 - INFO - CLOSED long at 2089.84 | PnL: -0.31% | $-0.81 +2025-03-10 16:18:40,054 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3364642857146 | Take profit: 2058.4215035714287 +2025-03-10 16:18:40,140 - INFO - STOP LOSS hit for short at 2100.3364642857146 | PnL: -0.50% | $-1.17 +2025-03-10 16:18:40,169 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.974314285714 | Take profit: 2071.7879535714283 +2025-03-10 16:18:40,347 - INFO - CLOSED short at 2099.63 | PnL: 0.18% | $0.15 +2025-03-10 16:18:40,347 - INFO - OPENED LONG at 2099.63 | Stop loss: 2089.084585714286 | Take profit: 2131.195346428571 +2025-03-10 16:18:40,431 - INFO - CLOSED long at 2096.96 | PnL: -0.13% | $-0.44 +2025-03-10 16:18:40,432 - INFO - OPENED SHORT at 2096.96 | Stop loss: 2107.4920642857146 | Take profit: 2065.4347035714286 +2025-03-10 16:18:40,488 - INFO - CLOSED short at 2090.59 | PnL: 0.30% | $0.39 +2025-03-10 16:18:40,488 - INFO - OPENED LONG at 2090.59 | Stop loss: 2080.089785714286 | Take profit: 2122.0197464285716 +2025-03-10 16:18:40,549 - INFO - CLOSED long at 2084.95 | PnL: -0.27% | $-0.71 +2025-03-10 16:18:40,550 - INFO - OPENED SHORT at 2084.95 | Stop loss: 2095.4220142857143 | Take profit: 2053.6048535714285 +2025-03-10 16:18:40,825 - INFO - CLOSED short at 2083.07 | PnL: 0.09% | $-0.02 +2025-03-10 16:18:40,825 - INFO - OPENED LONG at 2083.07 | Stop loss: 2072.607385714286 | Take profit: 2114.3869464285717 +2025-03-10 16:18:40,856 - INFO - CLOSED long at 2075.07 | PnL: -0.38% | $-0.93 +2025-03-10 16:18:40,857 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.4926142857144 | Take profit: 2043.8730535714287 +2025-03-10 16:18:40,960 - INFO - TAKE PROFIT hit for short at 2043.8730535714287 | PnL: 1.50% | $2.66 +2025-03-10 16:18:41,014 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.2017142857144 | Take profit: 2022.0257535714286 +2025-03-10 16:18:41,287 - INFO - CLOSED short at 2043.59 | PnL: 0.45% | $0.69 +2025-03-10 16:18:41,287 - INFO - OPENED LONG at 2043.59 | Stop loss: 2033.3247857142856 | Take profit: 2074.314746428571 +2025-03-10 16:18:41,313 - INFO - CLOSED long at 2042.0 | PnL: -0.08% | $-0.35 +2025-03-10 16:18:41,345 - INFO - OPENED SHORT at 2036.71 | Stop loss: 2046.9408142857142 | Take profit: 2006.0884535714285 +2025-03-10 16:18:41,427 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 55.6% in downtrends | Avg Win=$0.90, Avg Loss=$-0.49 +2025-03-10 16:18:41,428 - INFO - Episode 37: Reward=-17.69, Balance=$99.98, Win Rate=35.3%, Trades=17, Episode PnL=$3.49, Total PnL=$511.31, Max Drawdown=1.5%, Pred Accuracy=98.5% +2025-03-10 16:18:41,428 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:18:41,429 - INFO - Refreshing data for episode 38 +2025-03-10 16:18:41,429 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:18:41,888 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:18:41,900 - INFO - Initialized environment with 100 candles +2025-03-10 16:18:42,041 - INFO - OPENED LONG at 2121.8 | Stop loss: 2111.1425785714287 | Take profit: 2153.6996321428574 +2025-03-10 16:18:42,109 - INFO - CLOSED long at 2121.42 | PnL: -0.02% | $-0.23 +2025-03-10 16:18:42,110 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0755214285714 | Take profit: 2089.526067857143 +2025-03-10 16:18:42,301 - INFO - CLOSED short at 2124.77 | PnL: -0.16% | $-0.50 +2025-03-10 16:18:42,301 - INFO - OPENED LONG at 2124.77 | Stop loss: 2114.0977285714284 | Take profit: 2156.7141821428568 +2025-03-10 16:18:42,327 - INFO - CLOSED long at 2120.26 | PnL: -0.21% | $-0.61 +2025-03-10 16:18:42,328 - INFO - OPENED SHORT at 2120.26 | Stop loss: 2130.909721428572 | Take profit: 2088.383467857143 +2025-03-10 16:18:42,532 - INFO - CLOSED short at 2116.06 | PnL: 0.20% | $0.19 +2025-03-10 16:18:42,532 - INFO - OPENED LONG at 2116.06 | Stop loss: 2105.4312785714283 | Take profit: 2147.873532142857 +2025-03-10 16:18:42,576 - INFO - CLOSED long at 2115.21 | PnL: -0.04% | $-0.27 +2025-03-10 16:18:42,576 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.8344714285718 | Take profit: 2083.4092178571427 +2025-03-10 16:18:42,615 - INFO - CLOSED short at 2114.1 | PnL: 0.05% | $-0.09 +2025-03-10 16:18:42,615 - INFO - OPENED LONG at 2114.1 | Stop loss: 2103.4810785714285 | Take profit: 2145.884132142857 +2025-03-10 16:18:42,822 - INFO - CLOSED long at 2114.5 | PnL: 0.02% | $-0.16 +2025-03-10 16:18:42,823 - INFO - OPENED SHORT at 2114.5 | Stop loss: 2125.1209214285714 | Take profit: 2082.709867857143 +2025-03-10 16:18:42,877 - INFO - CLOSED short at 2115.07 | PnL: -0.03% | $-0.24 +2025-03-10 16:18:42,877 - INFO - OPENED LONG at 2115.07 | Stop loss: 2104.4462285714285 | Take profit: 2146.8686821428573 +2025-03-10 16:18:42,947 - INFO - CLOSED long at 2098.24 | PnL: -0.80% | $-1.72 +2025-03-10 16:18:42,947 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.7796214285713 | Take profit: 2066.6937678571426 +2025-03-10 16:18:42,985 - INFO - CLOSED short at 2098.28 | PnL: -0.00% | $-0.19 +2025-03-10 16:18:42,986 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.7401785714287 | Take profit: 2129.8268321428577 +2025-03-10 16:18:43,040 - INFO - CLOSED long at 2100.05 | PnL: 0.08% | $-0.03 +2025-03-10 16:18:43,040 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.598671428572 | Take profit: 2068.476617857143 +2025-03-10 16:18:43,067 - INFO - CLOSED short at 2096.36 | PnL: 0.18% | $0.14 +2025-03-10 16:18:43,067 - INFO - OPENED LONG at 2096.36 | Stop loss: 2085.8297785714285 | Take profit: 2127.8780321428576 +2025-03-10 16:18:43,094 - INFO - CLOSED long at 2089.04 | PnL: -0.35% | $-0.85 +2025-03-10 16:18:43,094 - INFO - OPENED SHORT at 2089.04 | Stop loss: 2099.5336214285717 | Take profit: 2057.6317678571427 +2025-03-10 16:18:43,127 - INFO - CLOSED short at 2089.84 | PnL: -0.04% | $-0.26 +2025-03-10 16:18:43,128 - INFO - OPENED LONG at 2089.84 | Stop loss: 2079.3423785714285 | Take profit: 2121.260232142857 +2025-03-10 16:18:43,388 - INFO - CLOSED long at 2105.26 | PnL: 0.74% | $1.19 +2025-03-10 16:18:43,388 - INFO - OPENED SHORT at 2105.26 | Stop loss: 2115.834721428572 | Take profit: 2073.608467857143 +2025-03-10 16:18:43,447 - INFO - CLOSED short at 2099.22 | PnL: 0.29% | $0.35 +2025-03-10 16:18:43,448 - INFO - OPENED LONG at 2099.22 | Stop loss: 2088.6754785714284 | Take profit: 2130.7809321428567 +2025-03-10 16:18:43,478 - INFO - CLOSED long at 2094.16 | PnL: -0.24% | $-0.64 +2025-03-10 16:18:43,478 - INFO - OPENED SHORT at 2094.16 | Stop loss: 2104.679221428571 | Take profit: 2062.6749678571427 +2025-03-10 16:18:43,712 - INFO - CLOSED short at 2084.75 | PnL: 0.45% | $0.66 +2025-03-10 16:18:43,712 - INFO - OPENED LONG at 2084.75 | Stop loss: 2074.2778285714285 | Take profit: 2116.093882142857 +2025-03-10 16:18:43,791 - INFO - CLOSED long at 2084.25 | PnL: -0.02% | $-0.23 +2025-03-10 16:18:43,791 - INFO - OPENED SHORT at 2084.25 | Stop loss: 2094.7196714285715 | Take profit: 2052.913617857143 +2025-03-10 16:18:43,917 - INFO - CLOSED short at 2067.71 | PnL: 0.79% | $1.31 +2025-03-10 16:18:43,917 - INFO - OPENED LONG at 2067.71 | Stop loss: 2057.3230285714285 | Take profit: 2098.7982821428573 +2025-03-10 16:18:43,946 - INFO - STOP LOSS hit for long at 2057.3230285714285 | PnL: -0.50% | $-1.15 +2025-03-10 16:18:44,035 - INFO - OPENED LONG at 2043.51 | Stop loss: 2033.2440285714285 | Take profit: 2074.235282142857 +2025-03-10 16:18:44,083 - INFO - CLOSED long at 2052.89 | PnL: 0.46% | $0.68 +2025-03-10 16:18:44,084 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.202871428571 | Take profit: 2022.0240178571428 +2025-03-10 16:18:44,135 - INFO - CLOSED short at 2053.22 | PnL: -0.02% | $-0.22 +2025-03-10 16:18:44,135 - INFO - OPENED LONG at 2053.22 | Stop loss: 2042.9054785714284 | Take profit: 2084.0909321428567 +2025-03-10 16:18:44,182 - INFO - CLOSED long at 2058.11 | PnL: 0.24% | $0.26 +2025-03-10 16:18:44,182 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.4489714285714 | Take profit: 2027.1657178571431 +2025-03-10 16:18:44,213 - INFO - CLOSED short at 2054.03 | PnL: 0.20% | $0.19 +2025-03-10 16:18:44,214 - INFO - OPENED LONG at 2054.03 | Stop loss: 2043.7114285714288 | Take profit: 2084.9130821428575 +2025-03-10 16:18:44,244 - INFO - CLOSED long at 2050.18 | PnL: -0.19% | $-0.55 +2025-03-10 16:18:44,244 - INFO - OPENED SHORT at 2050.18 | Stop loss: 2060.4793214285714 | Take profit: 2019.3546678571427 +2025-03-10 16:18:44,277 - INFO - CLOSED short at 2046.76 | PnL: 0.17% | $0.13 +2025-03-10 16:18:44,277 - INFO - OPENED LONG at 2046.76 | Stop loss: 2036.4777785714286 | Take profit: 2077.534032142857 +2025-03-10 16:18:44,358 - INFO - CLOSED long at 2043.59 | PnL: -0.15% | $-0.48 +2025-03-10 16:18:44,359 - INFO - OPENED SHORT at 2043.59 | Stop loss: 2053.8563714285715 | Take profit: 2012.8635178571428 +2025-03-10 16:18:44,518 - INFO - CLOSED short at 2027.51 | PnL: 0.79% | $1.30 +2025-03-10 16:18:44,519 - INFO - OPENED LONG at 2027.51 | Stop loss: 2017.3240285714285 | Take profit: 2057.9952821428574 +2025-03-10 16:18:44,573 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 53.3% in downtrends | Avg Win=$0.58, Avg Loss=$-0.47 +2025-03-10 16:18:44,573 - INFO - Episode 38: Reward=-24.22, Balance=$97.96, Win Rate=37.9%, Trades=29, Episode PnL=$1.60, Total PnL=$509.26, Max Drawdown=3.3%, Pred Accuracy=98.6% +2025-03-10 16:18:44,574 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:18:44,574 - INFO - Refreshing data for episode 39 +2025-03-10 16:18:44,574 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:18:44,922 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:18:44,936 - INFO - Initialized environment with 100 candles +2025-03-10 16:18:44,974 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.457767857143 | Take profit: 2089.899848214286 +2025-03-10 16:18:45,036 - INFO - CLOSED short at 2116.52 | PnL: 0.25% | $0.29 +2025-03-10 16:18:45,037 - INFO - OPENED LONG at 2116.52 | Stop loss: 2105.888632142857 | Take profit: 2148.3409517857144 +2025-03-10 16:18:45,066 - INFO - CLOSED long at 2119.02 | PnL: 0.12% | $0.04 +2025-03-10 16:18:45,066 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.663867857143 | Take profit: 2087.1615482142856 +2025-03-10 16:18:45,165 - INFO - CLOSED short at 2128.33 | PnL: -0.44% | $-1.06 +2025-03-10 16:18:45,165 - INFO - OPENED LONG at 2128.33 | Stop loss: 2117.639582142857 | Take profit: 2160.3281017857144 +2025-03-10 16:18:45,295 - INFO - CLOSED long at 2120.26 | PnL: -0.38% | $-0.93 +2025-03-10 16:18:45,296 - INFO - OPENED SHORT at 2120.26 | Stop loss: 2130.910067857143 | Take profit: 2088.382948214286 +2025-03-10 16:18:45,349 - INFO - CLOSED short at 2116.81 | PnL: 0.16% | $0.12 +2025-03-10 16:18:45,350 - INFO - OPENED LONG at 2116.81 | Stop loss: 2106.177182142857 | Take profit: 2148.6353017857145 +2025-03-10 16:18:45,468 - INFO - CLOSED long at 2116.06 | PnL: -0.04% | $-0.26 +2025-03-10 16:18:45,469 - INFO - OPENED SHORT at 2116.06 | Stop loss: 2126.6890678571426 | Take profit: 2084.245948214286 +2025-03-10 16:18:45,507 - INFO - CLOSED short at 2115.21 | PnL: 0.04% | $-0.11 +2025-03-10 16:18:45,507 - INFO - OPENED LONG at 2115.21 | Stop loss: 2104.5851821428573 | Take profit: 2147.0113017857143 +2025-03-10 16:18:45,535 - INFO - CLOSED long at 2114.1 | PnL: -0.05% | $-0.29 +2025-03-10 16:18:45,536 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.7192678571428 | Take profit: 2082.3153482142857 +2025-03-10 16:18:45,611 - INFO - CLOSED short at 2114.32 | PnL: -0.01% | $-0.21 +2025-03-10 16:18:45,612 - INFO - OPENED LONG at 2114.32 | Stop loss: 2103.6996321428574 | Take profit: 2146.1079517857142 +2025-03-10 16:18:45,675 - INFO - CLOSED long at 2114.57 | PnL: 0.01% | $-0.17 +2025-03-10 16:18:45,675 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.191617857143 | Take profit: 2082.7782982142858 +2025-03-10 16:18:45,816 - INFO - CLOSED short at 2114.5 | PnL: 0.00% | $-0.18 +2025-03-10 16:18:45,818 - INFO - OPENED LONG at 2114.5 | Stop loss: 2103.878732142857 | Take profit: 2146.2906517857145 +2025-03-10 16:18:45,848 - INFO - CLOSED long at 2115.07 | PnL: 0.03% | $-0.14 +2025-03-10 16:18:45,848 - INFO - OPENED SHORT at 2115.07 | Stop loss: 2125.694117857143 | Take profit: 2083.270798214286 +2025-03-10 16:18:45,909 - INFO - CLOSED short at 2098.28 | PnL: 0.79% | $1.32 +2025-03-10 16:18:45,910 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.7398321428573 | Take profit: 2129.8273517857147 +2025-03-10 16:18:45,975 - INFO - CLOSED long at 2100.05 | PnL: 0.08% | $-0.03 +2025-03-10 16:18:45,976 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.599017857143 | Take profit: 2068.4760982142857 +2025-03-10 16:18:46,090 - INFO - CLOSED short at 2089.04 | PnL: 0.52% | $0.82 +2025-03-10 16:18:46,091 - INFO - OPENED LONG at 2089.04 | Stop loss: 2078.546032142857 | Take profit: 2120.448751785714 +2025-03-10 16:18:46,274 - INFO - CLOSED long at 2103.41 | PnL: 0.69% | $1.14 +2025-03-10 16:18:46,275 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.975817857143 | Take profit: 2071.7856982142853 +2025-03-10 16:18:46,309 - INFO - CLOSED short at 2104.22 | PnL: -0.04% | $-0.27 +2025-03-10 16:18:46,309 - INFO - OPENED LONG at 2104.22 | Stop loss: 2093.650132142857 | Take profit: 2135.856451785714 +2025-03-10 16:18:46,341 - INFO - CLOSED long at 2104.67 | PnL: 0.02% | $-0.15 +2025-03-10 16:18:46,341 - INFO - OPENED SHORT at 2104.67 | Stop loss: 2115.2421178571426 | Take profit: 2073.026798214286 +2025-03-10 16:18:46,467 - INFO - CLOSED short at 2099.22 | PnL: 0.26% | $0.31 +2025-03-10 16:18:46,467 - INFO - OPENED LONG at 2099.22 | Stop loss: 2088.675132142857 | Take profit: 2130.781451785714 +2025-03-10 16:18:46,529 - INFO - CLOSED long at 2094.16 | PnL: -0.24% | $-0.67 +2025-03-10 16:18:46,529 - INFO - OPENED SHORT at 2094.16 | Stop loss: 2104.679567857143 | Take profit: 2062.674448214286 +2025-03-10 16:18:46,575 - INFO - CLOSED short at 2096.96 | PnL: -0.13% | $-0.45 +2025-03-10 16:18:46,575 - INFO - OPENED LONG at 2096.96 | Stop loss: 2086.4264321428573 | Take profit: 2128.4875517857145 +2025-03-10 16:18:46,639 - INFO - CLOSED long at 2090.59 | PnL: -0.30% | $-0.78 +2025-03-10 16:18:46,639 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.091717857143 | Take profit: 2059.1579982142857 +2025-03-10 16:18:46,698 - INFO - CLOSED short at 2084.95 | PnL: 0.27% | $0.33 +2025-03-10 16:18:46,699 - INFO - OPENED LONG at 2084.95 | Stop loss: 2074.476482142857 | Take profit: 2116.297401785714 +2025-03-10 16:18:47,043 - INFO - STOP LOSS hit for long at 2074.476482142857 | PnL: -0.50% | $-1.16 +2025-03-10 16:18:47,071 - INFO - OPENED LONG at 2048.3 | Stop loss: 2038.0097321428573 | Take profit: 2079.0976517857143 +2025-03-10 16:18:47,096 - INFO - CLOSED long at 2051.0 | PnL: 0.13% | $0.06 +2025-03-10 16:18:47,097 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3037678571427 | Take profit: 2020.1618482142856 +2025-03-10 16:18:47,122 - INFO - CLOSED short at 2043.51 | PnL: 0.37% | $0.51 +2025-03-10 16:18:47,122 - INFO - OPENED LONG at 2043.51 | Stop loss: 2033.243682142857 | Take profit: 2074.235801785714 +2025-03-10 16:18:47,214 - INFO - CLOSED long at 2053.22 | PnL: 0.48% | $0.72 +2025-03-10 16:18:47,215 - INFO - OPENED SHORT at 2053.22 | Stop loss: 2063.5348678571427 | Take profit: 2022.3485482142855 +2025-03-10 16:18:47,274 - INFO - CLOSED short at 2058.11 | PnL: -0.24% | $-0.65 +2025-03-10 16:18:47,275 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.7706821428571 | Take profit: 2089.0548017857145 +2025-03-10 16:18:47,411 - INFO - STOP LOSS hit for long at 2047.7706821428571 | PnL: -0.50% | $-1.15 +2025-03-10 16:18:47,443 - INFO - OPENED LONG at 2043.95 | Stop loss: 2033.6814821428572 | Take profit: 2074.6824017857143 +2025-03-10 16:18:47,482 - INFO - CLOSED long at 2044.1 | PnL: 0.01% | $-0.18 +2025-03-10 16:18:47,482 - INFO - OPENED SHORT at 2044.1 | Stop loss: 2054.369267857143 | Take profit: 2013.3653482142856 +2025-03-10 16:18:47,519 - INFO - CLOSED short at 2043.59 | PnL: 0.02% | $-0.14 +2025-03-10 16:18:47,520 - INFO - OPENED LONG at 2043.59 | Stop loss: 2033.3232821428571 | Take profit: 2074.317001785714 +2025-03-10 16:18:47,593 - INFO - CLOSED long at 2036.71 | PnL: -0.34% | $-0.82 +2025-03-10 16:18:47,594 - INFO - OPENED SHORT at 2036.71 | Stop loss: 2046.9423178571428 | Take profit: 2006.0861982142856 +2025-03-10 16:18:47,677 - INFO - CLOSED short at 2027.51 | PnL: 0.45% | $0.66 +2025-03-10 16:18:47,678 - INFO - OPENED LONG at 2027.51 | Stop loss: 2017.3236821428573 | Take profit: 2057.995801785714 +2025-03-10 16:18:47,759 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 44.4% in downtrends | Avg Win=$0.52, Avg Loss=$-0.47 +2025-03-10 16:18:47,760 - INFO - Episode 39: Reward=-30.51, Balance=$96.47, Win Rate=36.4%, Trades=33, Episode PnL=$-1.06, Total PnL=$505.73, Max Drawdown=3.0%, Pred Accuracy=98.7% +2025-03-10 16:18:47,761 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:18:47,761 - INFO - Refreshing data for episode 40 +2025-03-10 16:18:47,761 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:18:48,058 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:18:48,069 - INFO - Initialized environment with 100 candles +2025-03-10 16:18:48,975 - INFO - OPENED LONG at 2121.42 | Stop loss: 2110.7633642857145 | Take profit: 2153.3156035714283 +2025-03-10 16:18:49,029 - INFO - CLOSED long at 2119.02 | PnL: -0.11% | $-0.42 +2025-03-10 16:18:49,029 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.664635714286 | Take profit: 2087.1603964285714 +2025-03-10 16:18:49,061 - INFO - CLOSED short at 2120.96 | PnL: -0.09% | $-0.37 +2025-03-10 16:18:49,062 - INFO - OPENED LONG at 2120.96 | Stop loss: 2110.305664285714 | Take profit: 2152.848703571429 +2025-03-10 16:18:49,158 - INFO - CLOSED long at 2124.77 | PnL: 0.18% | $0.15 +2025-03-10 16:18:49,158 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.443385714286 | Take profit: 2092.8241464285716 +2025-03-10 16:18:49,274 - INFO - CLOSED short at 2115.52 | PnL: 0.44% | $0.65 +2025-03-10 16:18:49,275 - INFO - OPENED LONG at 2115.52 | Stop loss: 2104.892864285714 | Take profit: 2147.327103571429 +2025-03-10 16:18:49,327 - INFO - CLOSED long at 2116.06 | PnL: 0.03% | $-0.15 +2025-03-10 16:18:49,328 - INFO - OPENED SHORT at 2116.06 | Stop loss: 2126.689835714286 | Take profit: 2084.244796428571 +2025-03-10 16:18:49,354 - INFO - CLOSED short at 2115.21 | PnL: 0.04% | $-0.12 +2025-03-10 16:18:49,355 - INFO - OPENED LONG at 2115.21 | Stop loss: 2104.5844142857145 | Take profit: 2147.0124535714285 +2025-03-10 16:18:49,416 - INFO - CLOSED long at 2114.1 | PnL: -0.05% | $-0.30 +2025-03-10 16:18:49,416 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.720035714286 | Take profit: 2082.3141964285714 +2025-03-10 16:18:49,568 - INFO - CLOSED short at 2114.57 | PnL: -0.02% | $-0.24 +2025-03-10 16:18:49,568 - INFO - OPENED LONG at 2114.57 | Stop loss: 2103.9476142857143 | Take profit: 2146.362853571429 +2025-03-10 16:18:49,715 - INFO - STOP LOSS hit for long at 2103.9476142857143 | PnL: -0.50% | $-1.17 +2025-03-10 16:18:49,752 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.7390642857144 | Take profit: 2129.828503571429 +2025-03-10 16:18:49,958 - INFO - CLOSED long at 2089.04 | PnL: -0.44% | $-1.04 +2025-03-10 16:18:49,958 - INFO - OPENED SHORT at 2089.04 | Stop loss: 2099.5347357142855 | Take profit: 2057.6300964285715 +2025-03-10 16:18:49,993 - INFO - CLOSED short at 2089.84 | PnL: -0.04% | $-0.26 +2025-03-10 16:18:49,993 - INFO - OPENED LONG at 2089.84 | Stop loss: 2079.3412642857143 | Take profit: 2121.261903571429 +2025-03-10 16:18:50,023 - INFO - CLOSED long at 2096.19 | PnL: 0.30% | $0.39 +2025-03-10 16:18:50,024 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.7204857142856 | Take profit: 2064.6728464285716 +2025-03-10 16:18:50,055 - INFO - CLOSED short at 2100.0 | PnL: -0.18% | $-0.53 +2025-03-10 16:18:50,056 - INFO - OPENED LONG at 2100.0 | Stop loss: 2089.450464285714 | Take profit: 2131.5743035714286 +2025-03-10 16:18:50,317 - INFO - CLOSED long at 2099.22 | PnL: -0.04% | $-0.26 +2025-03-10 16:18:50,317 - INFO - OPENED SHORT at 2099.22 | Stop loss: 2109.7656357142855 | Take profit: 2067.6573964285712 +2025-03-10 16:18:50,375 - INFO - CLOSED short at 2094.16 | PnL: 0.24% | $0.27 +2025-03-10 16:18:50,376 - INFO - OPENED LONG at 2094.16 | Stop loss: 2083.639664285714 | Take profit: 2125.6467035714286 +2025-03-10 16:18:50,406 - INFO - CLOSED long at 2096.96 | PnL: 0.13% | $0.06 +2025-03-10 16:18:50,406 - INFO - OPENED SHORT at 2096.96 | Stop loss: 2107.4943357142856 | Take profit: 2065.4312964285714 +2025-03-10 16:18:50,496 - INFO - CLOSED short at 2090.99 | PnL: 0.28% | $0.35 +2025-03-10 16:18:50,497 - INFO - OPENED LONG at 2090.99 | Stop loss: 2080.485514285714 | Take profit: 2122.4291535714283 +2025-03-10 16:18:50,643 - INFO - CLOSED long at 2081.0 | PnL: -0.48% | $-1.10 +2025-03-10 16:18:50,710 - INFO - OPENED LONG at 2084.25 | Stop loss: 2073.7792142857143 | Take profit: 2115.5880535714286 +2025-03-10 16:18:50,796 - INFO - CLOSED long at 2084.11 | PnL: -0.01% | $-0.20 +2025-03-10 16:18:50,796 - INFO - OPENED SHORT at 2084.11 | Stop loss: 2094.580085714286 | Take profit: 2052.7740464285716 +2025-03-10 16:18:50,825 - INFO - CLOSED short at 2083.07 | PnL: 0.05% | $-0.09 +2025-03-10 16:18:50,826 - INFO - OPENED LONG at 2083.07 | Stop loss: 2072.6051142857145 | Take profit: 2114.390353571429 +2025-03-10 16:18:50,855 - INFO - CLOSED long at 2075.07 | PnL: -0.38% | $-0.90 +2025-03-10 16:18:50,855 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.494885714286 | Take profit: 2043.8696464285717 +2025-03-10 16:18:50,882 - INFO - CLOSED short at 2067.71 | PnL: 0.35% | $0.47 +2025-03-10 16:18:50,882 - INFO - OPENED LONG at 2067.71 | Stop loss: 2057.3219142857142 | Take profit: 2098.799953571429 +2025-03-10 16:18:50,910 - INFO - STOP LOSS hit for long at 2057.3219142857142 | PnL: -0.50% | $-1.12 +2025-03-10 16:18:50,938 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3045357142855 | Take profit: 2020.1606964285713 +2025-03-10 16:18:50,967 - INFO - CLOSED short at 2043.51 | PnL: 0.37% | $0.49 +2025-03-10 16:18:50,968 - INFO - OPENED LONG at 2043.51 | Stop loss: 2033.2429142857143 | Take profit: 2074.2369535714283 +2025-03-10 16:18:51,024 - INFO - CLOSED long at 2052.89 | PnL: 0.46% | $0.66 +2025-03-10 16:18:51,024 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.2039857142854 | Take profit: 2022.0223464285714 +2025-03-10 16:18:51,090 - INFO - CLOSED short at 2053.22 | PnL: -0.02% | $-0.22 +2025-03-10 16:18:51,091 - INFO - OPENED LONG at 2053.22 | Stop loss: 2042.904364285714 | Take profit: 2084.0926035714283 +2025-03-10 16:18:51,237 - INFO - CLOSED long at 2046.76 | PnL: -0.31% | $-0.77 +2025-03-10 16:18:51,238 - INFO - OPENED SHORT at 2046.76 | Stop loss: 2057.0433357142856 | Take profit: 2015.9842964285715 +2025-03-10 16:18:51,267 - INFO - CLOSED short at 2043.95 | PnL: 0.14% | $0.07 +2025-03-10 16:18:51,267 - INFO - OPENED LONG at 2043.95 | Stop loss: 2033.6807142857144 | Take profit: 2074.6835535714285 +2025-03-10 16:18:51,352 - INFO - CLOSED long at 2042.0 | PnL: -0.10% | $-0.36 +2025-03-10 16:18:51,352 - INFO - OPENED SHORT at 2042.0 | Stop loss: 2052.259535714286 | Take profit: 2011.2956964285715 +2025-03-10 16:18:51,400 - INFO - CLOSED short at 2036.71 | PnL: 0.26% | $0.29 +2025-03-10 16:18:51,400 - INFO - OPENED LONG at 2036.71 | Stop loss: 2026.4769142857144 | Take profit: 2067.3349535714287 +2025-03-10 16:18:51,512 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 43.8% in downtrends | Avg Win=$0.35, Avg Loss=$-0.51 +2025-03-10 16:18:51,513 - INFO - Episode 40: Reward=-33.04, Balance=$94.25, Win Rate=36.7%, Trades=30, Episode PnL=$-2.63, Total PnL=$499.98, Max Drawdown=5.9%, Pred Accuracy=98.7% +2025-03-10 16:18:51,679 - INFO - Model saved to checkpoints/trading_agent_episode_40.pt +2025-03-10 16:18:51,680 - INFO - Checkpoint saved at episode 40 +2025-03-10 16:18:51,680 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:18:52,848 - INFO - Visualization saved for episode 40 +2025-03-10 16:18:55,007 - INFO - Visualization saved for episode 40 +2025-03-10 16:18:55,022 - INFO - Refreshing data for episode 41 +2025-03-10 16:18:55,022 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:18:55,354 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:18:55,366 - INFO - Initialized environment with 100 candles +2025-03-10 16:18:55,454 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.458535714286 | Take profit: 2089.898696428572 +2025-03-10 16:18:56,051 - INFO - TAKE PROFIT hit for short at 2089.898696428572 | PnL: 1.50% | $2.74 +2025-03-10 16:18:56,073 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.338735714286 | Take profit: 2058.4180964285715 +2025-03-10 16:18:56,142 - INFO - STOP LOSS hit for short at 2100.338735714286 | PnL: -0.50% | $-1.21 +2025-03-10 16:18:56,166 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9765857142856 | Take profit: 2071.7845464285715 +2025-03-10 16:18:56,458 - INFO - CLOSED short at 2084.75 | PnL: 0.89% | $1.56 +2025-03-10 16:18:56,459 - INFO - OPENED LONG at 2084.75 | Stop loss: 2074.276714285714 | Take profit: 2116.0955535714284 +2025-03-10 16:18:56,482 - INFO - CLOSED long at 2081.0 | PnL: -0.18% | $-0.56 +2025-03-10 16:18:56,482 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.454535714286 | Take profit: 2049.7106964285713 +2025-03-10 16:18:56,627 - INFO - TAKE PROFIT hit for short at 2049.7106964285713 | PnL: 1.50% | $2.81 +2025-03-10 16:18:56,670 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.7770857142855 | Take profit: 2012.7830464285714 +2025-03-10 16:18:56,736 - INFO - STOP LOSS hit for short at 2053.7770857142855 | PnL: -0.50% | $-1.24 +2025-03-10 16:18:56,763 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.349685714286 | Take profit: 2023.1452464285717 +2025-03-10 16:18:56,950 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 60.0% in downtrends | Avg Win=$2.37, Avg Loss=$-1.00 +2025-03-10 16:18:56,951 - INFO - Episode 41: Reward=0.39, Balance=$104.10, Win Rate=50.0%, Trades=6, Episode PnL=$4.67, Total PnL=$504.08, Max Drawdown=1.2%, Pred Accuracy=98.8% +2025-03-10 16:18:56,951 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:18:56,951 - INFO - Refreshing data for episode 42 +2025-03-10 16:18:56,952 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:18:57,275 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:18:57,287 - INFO - Initialized environment with 100 candles +2025-03-10 16:18:57,321 - INFO - OPENED LONG at 2121.8 | Stop loss: 2111.1414642857144 | Take profit: 2153.701303571429 +2025-03-10 16:18:57,342 - INFO - CLOSED long at 2121.42 | PnL: -0.02% | $-0.23 +2025-03-10 16:18:57,343 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0766357142857 | Take profit: 2089.5243964285714 +2025-03-10 16:18:57,472 - INFO - CLOSED short at 2124.77 | PnL: -0.16% | $-0.50 +2025-03-10 16:18:57,474 - INFO - OPENED LONG at 2124.77 | Stop loss: 2114.096614285714 | Take profit: 2156.715853571429 +2025-03-10 16:18:57,506 - INFO - CLOSED long at 2120.26 | PnL: -0.21% | $-0.61 +2025-03-10 16:18:57,506 - INFO - OPENED SHORT at 2120.26 | Stop loss: 2130.910835714286 | Take profit: 2088.3817964285718 +2025-03-10 16:18:57,665 - INFO - CLOSED short at 2114.1 | PnL: 0.29% | $0.37 +2025-03-10 16:18:57,666 - INFO - OPENED LONG at 2114.1 | Stop loss: 2103.4799642857142 | Take profit: 2145.885803571429 +2025-03-10 16:18:57,689 - INFO - CLOSED long at 2115.11 | PnL: 0.05% | $-0.10 +2025-03-10 16:18:57,689 - INFO - OPENED SHORT at 2115.11 | Stop loss: 2125.7350857142856 | Take profit: 2083.3090464285715 +2025-03-10 16:18:57,984 - INFO - CLOSED short at 2089.84 | PnL: 1.19% | $2.12 +2025-03-10 16:18:57,985 - INFO - OPENED LONG at 2089.84 | Stop loss: 2079.3412642857143 | Take profit: 2121.261903571429 +2025-03-10 16:18:58,061 - INFO - CLOSED long at 2102.83 | PnL: 0.62% | $1.03 +2025-03-10 16:18:58,062 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3936857142858 | Take profit: 2071.2132464285714 +2025-03-10 16:18:58,450 - INFO - CLOSED short at 2084.11 | PnL: 0.89% | $1.58 +2025-03-10 16:18:58,450 - INFO - OPENED LONG at 2084.11 | Stop loss: 2073.6399142857144 | Take profit: 2115.4459535714286 +2025-03-10 16:18:58,472 - INFO - CLOSED long at 2083.07 | PnL: -0.05% | $-0.30 +2025-03-10 16:18:58,472 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.534885714286 | Take profit: 2051.7496464285714 +2025-03-10 16:18:58,544 - INFO - CLOSED short at 2048.3 | PnL: 1.67% | $3.17 +2025-03-10 16:18:58,545 - INFO - OPENED LONG at 2048.3 | Stop loss: 2038.0089642857147 | Take profit: 2079.0988035714286 +2025-03-10 16:18:58,568 - INFO - CLOSED long at 2051.0 | PnL: 0.13% | $0.07 +2025-03-10 16:18:58,568 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3045357142855 | Take profit: 2020.1606964285713 +2025-03-10 16:18:59,025 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 80.0% in downtrends | Avg Win=$1.39, Avg Loss=$-0.35 +2025-03-10 16:18:59,026 - INFO - Episode 42: Reward=1.57, Balance=$106.58, Win Rate=54.5%, Trades=11, Episode PnL=$6.73, Total PnL=$510.66, Max Drawdown=0.0%, Pred Accuracy=98.8% +2025-03-10 16:18:59,027 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:18:59,027 - INFO - Refreshing data for episode 43 +2025-03-10 16:18:59,027 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:18:59,337 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:18:59,346 - INFO - Initialized environment with 100 candles +2025-03-10 16:18:59,377 - INFO - OPENED LONG at 2121.8 | Stop loss: 2111.1414642857144 | Take profit: 2153.701303571429 +2025-03-10 16:18:59,399 - INFO - CLOSED long at 2121.42 | PnL: -0.02% | $-0.23 +2025-03-10 16:18:59,400 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0766357142857 | Take profit: 2089.5243964285714 +2025-03-10 16:19:00,124 - INFO - TAKE PROFIT hit for short at 2089.5243964285714 | PnL: 1.50% | $2.74 +2025-03-10 16:19:00,162 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.338735714286 | Take profit: 2058.4180964285715 +2025-03-10 16:19:00,236 - INFO - STOP LOSS hit for short at 2100.338735714286 | PnL: -0.50% | $-1.21 +2025-03-10 16:19:00,262 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9765857142856 | Take profit: 2071.7845464285715 +2025-03-10 16:19:00,381 - INFO - CLOSED short at 2099.22 | PnL: 0.20% | $0.20 +2025-03-10 16:19:00,432 - INFO - OPENED SHORT at 2094.16 | Stop loss: 2104.680335714286 | Take profit: 2062.673296428571 +2025-03-10 16:19:00,469 - INFO - CLOSED short at 2096.96 | PnL: -0.13% | $-0.46 +2025-03-10 16:19:00,470 - INFO - OPENED LONG at 2096.96 | Stop loss: 2086.4256642857144 | Take profit: 2128.4887035714282 +2025-03-10 16:19:00,515 - INFO - CLOSED long at 2098.66 | PnL: 0.08% | $-0.04 +2025-03-10 16:19:00,515 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.2028357142854 | Take profit: 2067.105796428571 +2025-03-10 16:19:00,808 - INFO - CLOSED short at 2075.07 | PnL: 1.12% | $2.02 +2025-03-10 16:19:00,809 - INFO - OPENED LONG at 2075.07 | Stop loss: 2064.6451142857145 | Take profit: 2106.2703535714286 +2025-03-10 16:19:00,896 - INFO - CLOSED long at 2048.3 | PnL: -1.29% | $-2.80 +2025-03-10 16:19:00,897 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.591035714286 | Take profit: 2017.5011964285716 +2025-03-10 16:19:01,263 - INFO - CLOSED short at 2036.71 | PnL: 0.57% | $0.91 +2025-03-10 16:19:01,304 - INFO - OPENED SHORT at 2027.51 | Stop loss: 2037.6970857142855 | Take profit: 1997.0230464285714 +2025-03-10 16:19:01,347 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.47, Avg Loss=$-0.95 +2025-03-10 16:19:01,348 - INFO - Episode 43: Reward=-4.17, Balance=$101.13, Win Rate=44.4%, Trades=9, Episode PnL=$4.20, Total PnL=$511.79, Max Drawdown=1.3%, Pred Accuracy=98.9% +2025-03-10 16:19:01,349 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:19:01,349 - INFO - Refreshing data for episode 44 +2025-03-10 16:19:01,350 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:19:02,095 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:19:02,108 - INFO - Initialized environment with 100 candles +2025-03-10 16:19:02,143 - INFO - OPENED SHORT at 2121.8 | Stop loss: 2132.458535714286 | Take profit: 2089.898696428572 +2025-03-10 16:19:02,911 - INFO - TAKE PROFIT hit for short at 2089.898696428572 | PnL: 1.50% | $2.74 +2025-03-10 16:19:02,958 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.338735714286 | Take profit: 2058.4180964285715 +2025-03-10 16:19:03,039 - INFO - STOP LOSS hit for short at 2100.338735714286 | PnL: -0.50% | $-1.21 +2025-03-10 16:19:03,061 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9765857142856 | Take profit: 2071.7845464285715 +2025-03-10 16:19:03,604 - INFO - TAKE PROFIT hit for short at 2071.7845464285715 | PnL: 1.50% | $2.78 +2025-03-10 16:19:03,649 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.591035714286 | Take profit: 2017.5011964285716 +2025-03-10 16:19:03,794 - INFO - CLOSED short at 2053.22 | PnL: -0.24% | $-0.69 +2025-03-10 16:19:03,794 - INFO - OPENED LONG at 2053.22 | Stop loss: 2042.904364285714 | Take profit: 2084.0926035714283 +2025-03-10 16:19:03,817 - INFO - CLOSED long at 2058.11 | PnL: 0.24% | $0.28 +2025-03-10 16:19:03,817 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.4500857142857 | Take profit: 2027.1640464285715 +2025-03-10 16:19:04,156 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.94, Avg Loss=$-0.95 +2025-03-10 16:19:04,157 - INFO - Episode 44: Reward=-0.82, Balance=$103.90, Win Rate=60.0%, Trades=5, Episode PnL=$3.63, Total PnL=$515.70, Max Drawdown=1.2%, Pred Accuracy=99.0% +2025-03-10 16:19:04,158 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:19:04,158 - INFO - Refreshing data for episode 45 +2025-03-10 16:19:04,159 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:19:04,896 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:19:04,906 - INFO - Initialized environment with 100 candles +2025-03-10 16:19:05,769 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0713142857144 | Take profit: 2089.5323785714286 +2025-03-10 16:19:06,685 - INFO - TAKE PROFIT hit for short at 2089.5323785714286 | PnL: 1.50% | $2.75 +2025-03-10 16:19:06,741 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3334142857143 | Take profit: 2058.4260785714287 +2025-03-10 16:19:06,813 - INFO - STOP LOSS hit for short at 2100.3334142857143 | PnL: -0.50% | $-1.21 +2025-03-10 16:19:06,846 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.971264285714 | Take profit: 2071.7925285714286 +2025-03-10 16:19:07,408 - INFO - TAKE PROFIT hit for short at 2071.7925285714286 | PnL: 1.50% | $2.79 +2025-03-10 16:19:07,457 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5857142857144 | Take profit: 2017.5091785714287 +2025-03-10 16:19:07,897 - INFO - TAKE PROFIT hit for short at 2017.5091785714287 | PnL: 1.50% | $2.87 +2025-03-10 16:19:07,938 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.80, Avg Loss=$-1.21 +2025-03-10 16:19:07,939 - INFO - Episode 45: Reward=0.38, Balance=$107.19, Win Rate=75.0%, Trades=4, Episode PnL=$7.19, Total PnL=$522.89, Max Drawdown=1.2%, Pred Accuracy=98.8% +2025-03-10 16:19:07,939 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:19:07,940 - INFO - Refreshing data for episode 46 +2025-03-10 16:19:07,940 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:19:08,300 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:19:08,311 - INFO - Initialized environment with 100 candles +2025-03-10 16:19:08,345 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.072092857143 | Take profit: 2089.531210714286 +2025-03-10 16:19:09,085 - INFO - TAKE PROFIT hit for short at 2089.531210714286 | PnL: 1.50% | $2.75 +2025-03-10 16:19:09,131 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3341928571426 | Take profit: 2058.424910714286 +2025-03-10 16:19:09,214 - INFO - STOP LOSS hit for short at 2100.3341928571426 | PnL: -0.50% | $-1.21 +2025-03-10 16:19:09,241 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9720428571427 | Take profit: 2071.7913607142855 +2025-03-10 16:19:09,817 - INFO - TAKE PROFIT hit for short at 2071.7913607142855 | PnL: 1.50% | $2.79 +2025-03-10 16:19:09,854 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5864928571427 | Take profit: 2017.508010714286 +2025-03-10 16:19:10,302 - INFO - TAKE PROFIT hit for short at 2017.508010714286 | PnL: 1.50% | $2.87 +2025-03-10 16:19:10,347 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.80, Avg Loss=$-1.21 +2025-03-10 16:19:10,348 - INFO - Episode 46: Reward=0.40, Balance=$107.19, Win Rate=75.0%, Trades=4, Episode PnL=$7.19, Total PnL=$530.09, Max Drawdown=1.2%, Pred Accuracy=98.8% +2025-03-10 16:19:10,348 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:19:10,348 - INFO - Refreshing data for episode 47 +2025-03-10 16:19:10,348 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:19:10,662 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:19:10,672 - INFO - Initialized environment with 100 candles +2025-03-10 16:19:10,707 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.072092857143 | Take profit: 2089.531210714286 +2025-03-10 16:19:11,424 - INFO - TAKE PROFIT hit for short at 2089.531210714286 | PnL: 1.50% | $2.75 +2025-03-10 16:19:11,474 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3341928571426 | Take profit: 2058.424910714286 +2025-03-10 16:19:11,569 - INFO - STOP LOSS hit for short at 2100.3341928571426 | PnL: -0.50% | $-1.21 +2025-03-10 16:19:11,593 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9720428571427 | Take profit: 2071.7913607142855 +2025-03-10 16:19:11,835 - INFO - CLOSED short at 2090.59 | PnL: 0.61% | $1.01 +2025-03-10 16:19:11,836 - INFO - OPENED LONG at 2090.59 | Stop loss: 2080.0920571428574 | Take profit: 2122.0163392857144 +2025-03-10 16:19:11,884 - INFO - CLOSED long at 2090.99 | PnL: 0.02% | $-0.16 +2025-03-10 16:19:11,884 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.4899428571425 | Take profit: 2059.5576607142857 +2025-03-10 16:19:12,151 - INFO - TAKE PROFIT hit for short at 2059.5576607142857 | PnL: 1.50% | $2.81 +2025-03-10 16:19:12,187 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.2999928571426 | Take profit: 2020.1675107142858 +2025-03-10 16:19:12,545 - INFO - TAKE PROFIT hit for short at 2020.1675107142858 | PnL: 1.50% | $2.89 +2025-03-10 16:19:12,575 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 80.0% in downtrends | Avg Win=$2.37, Avg Loss=$-0.69 +2025-03-10 16:19:12,576 - INFO - Episode 47: Reward=0.54, Balance=$108.09, Win Rate=66.7%, Trades=6, Episode PnL=$8.25, Total PnL=$538.17, Max Drawdown=1.2%, Pred Accuracy=98.8% +2025-03-10 16:19:12,723 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 16:19:12,723 - INFO - New best PnL model saved: $8.25 +2025-03-10 16:19:12,724 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:19:12,724 - INFO - Refreshing data for episode 48 +2025-03-10 16:19:12,724 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:19:13,046 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:19:13,056 - INFO - Initialized environment with 100 candles +2025-03-10 16:19:13,194 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.072092857143 | Take profit: 2089.531210714286 +2025-03-10 16:19:13,389 - INFO - CLOSED short at 2120.96 | PnL: 0.02% | $-0.15 +2025-03-10 16:19:13,414 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.569492857143 | Take profit: 2092.959010714286 +2025-03-10 16:19:13,868 - INFO - CLOSED short at 2115.07 | PnL: 0.46% | $0.71 +2025-03-10 16:19:13,895 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.7761928571426 | Take profit: 2066.6989107142854 +2025-03-10 16:19:14,692 - INFO - TAKE PROFIT hit for short at 2066.6989107142854 | PnL: 1.50% | $2.76 +2025-03-10 16:19:14,713 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.2999928571426 | Take profit: 2020.1675107142858 +2025-03-10 16:19:15,085 - INFO - TAKE PROFIT hit for short at 2020.1675107142858 | PnL: 1.50% | $2.84 +2025-03-10 16:19:15,110 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.10, Avg Loss=$-0.15 +2025-03-10 16:19:15,111 - INFO - Episode 48: Reward=0.27, Balance=$106.16, Win Rate=75.0%, Trades=4, Episode PnL=$6.16, Total PnL=$544.33, Max Drawdown=0.2%, Pred Accuracy=98.8% +2025-03-10 16:19:15,111 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:19:15,112 - INFO - Refreshing data for episode 49 +2025-03-10 16:19:15,112 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:19:15,416 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:19:15,426 - INFO - Initialized environment with 100 candles +2025-03-10 16:19:15,553 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.073464285714 | Take profit: 2089.5291535714287 +2025-03-10 16:19:15,750 - INFO - CLOSED short at 2119.02 | PnL: 0.11% | $0.03 +2025-03-10 16:19:15,788 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.611164285714 | Take profit: 2089.0760535714285 +2025-03-10 16:19:16,412 - INFO - TAKE PROFIT hit for short at 2089.0760535714285 | PnL: 1.50% | $2.75 +2025-03-10 16:19:16,488 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.717314285714 | Take profit: 2064.677603571429 +2025-03-10 16:19:17,148 - INFO - TAKE PROFIT hit for short at 2064.677603571429 | PnL: 1.50% | $2.82 +2025-03-10 16:19:17,194 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.301364285714 | Take profit: 2020.1654535714285 +2025-03-10 16:19:17,542 - INFO - TAKE PROFIT hit for short at 2020.1654535714285 | PnL: 1.50% | $2.90 +2025-03-10 16:19:17,570 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.12, Avg Loss=$0.00 +2025-03-10 16:19:17,571 - INFO - Episode 49: Reward=0.95, Balance=$108.49, Win Rate=100.0%, Trades=4, Episode PnL=$8.49, Total PnL=$552.82, Max Drawdown=0.0%, Pred Accuracy=98.8% +2025-03-10 16:19:17,718 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 16:19:17,718 - INFO - New best PnL model saved: $8.49 +2025-03-10 16:19:17,719 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:19:17,719 - INFO - Early stopping triggered after 50 episodes without improvement +2025-03-10 16:19:17,866 - INFO - Model saved to models/trading_agent_final.pt +2025-03-10 16:19:19,039 - INFO - Training results saved to training_results.png +2025-03-10 16:19:19,201 - INFO - Model saved to models/trading_agent_continuous_100.pt +2025-03-10 16:19:24,210 - INFO - Starting training batch 4 +2025-03-10 16:19:24,210 - INFO - Refreshing data for new training batch +2025-03-10 16:19:24,211 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:19:24,537 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 16:19:24,547 - INFO - Initialized environment with 500 candles +2025-03-10 16:19:24,547 - INFO - Updated environment with fresh candles +2025-03-10 16:19:24,548 - INFO - Starting training on device: cuda +2025-03-10 16:19:24,548 - INFO - Loading best model from models/trading_agent_best_pnl.pt to resume training +2025-03-10 16:19:24,549 - INFO - Loading model from models/trading_agent_best_pnl.pt +2025-03-10 16:19:24,868 - INFO - Model loaded successfully with weights_only=True +2025-03-10 16:19:24,874 - INFO - Resumed with best metrics - Reward: 202.74, PnL: $7.30, Win Rate: 66.7% +2025-03-10 16:19:24,889 - INFO - Refreshing data for episode 0 +2025-03-10 16:19:24,889 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:19:25,218 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:19:25,229 - INFO - Initialized environment with 100 candles +2025-03-10 16:19:26,019 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0751714285716 | Take profit: 2089.526592857143 +2025-03-10 16:19:26,258 - INFO - CLOSED short at 2114.75 | PnL: 0.31% | $0.42 +2025-03-10 16:19:26,283 - INFO - OPENED SHORT at 2116.06 | Stop loss: 2126.6883714285714 | Take profit: 2084.2469928571427 +2025-03-10 16:19:26,995 - INFO - TAKE PROFIT hit for short at 2084.2469928571427 | PnL: 1.50% | $2.76 +2025-03-10 16:19:27,020 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2218214285717 | Take profit: 2053.4066428571427 +2025-03-10 16:19:27,215 - INFO - TAKE PROFIT hit for short at 2053.4066428571427 | PnL: 1.50% | $2.83 +2025-03-10 16:19:27,242 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3030714285715 | Take profit: 2020.1628928571429 +2025-03-10 16:19:27,543 - INFO - TAKE PROFIT hit for short at 2020.1628928571429 | PnL: 1.50% | $2.91 +2025-03-10 16:19:27,564 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.23, Avg Loss=$0.00 +2025-03-10 16:19:27,564 - INFO - Episode 0: Reward=29.03, Balance=$108.91, Win Rate=100.0%, Trades=4, Episode PnL=$8.91, Total PnL=$561.74, Max Drawdown=0.0%, Pred Accuracy=99.2% +2025-03-10 16:19:27,707 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 16:19:27,708 - INFO - New best PnL model saved: $8.91 +2025-03-10 16:19:27,850 - INFO - Model saved to checkpoints/trading_agent_episode_0.pt +2025-03-10 16:19:27,851 - INFO - Checkpoint saved at episode 0 +2025-03-10 16:19:28,855 - INFO - Visualization saved for episode 0 +2025-03-10 16:19:30,658 - INFO - Visualization saved for episode 0 +2025-03-10 16:19:30,672 - INFO - Refreshing data for episode 1 +2025-03-10 16:19:30,672 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:19:31,025 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:19:31,034 - INFO - Initialized environment with 100 candles +2025-03-10 16:19:31,361 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0751714285716 | Take profit: 2089.526592857143 +2025-03-10 16:19:31,922 - INFO - TAKE PROFIT hit for short at 2089.526592857143 | PnL: 1.50% | $2.74 +2025-03-10 16:19:31,947 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3372714285715 | Take profit: 2058.420292857143 +2025-03-10 16:19:32,020 - INFO - STOP LOSS hit for short at 2100.3372714285715 | PnL: -0.50% | $-1.21 +2025-03-10 16:19:32,043 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.975121428571 | Take profit: 2071.7867428571426 +2025-03-10 16:19:32,091 - INFO - CLOSED short at 2104.67 | PnL: -0.06% | $-0.32 +2025-03-10 16:19:32,091 - INFO - OPENED LONG at 2104.67 | Stop loss: 2094.098578571429 | Take profit: 2136.312157142857 +2025-03-10 16:19:32,117 - INFO - CLOSED long at 2105.26 | PnL: 0.03% | $-0.14 +2025-03-10 16:19:32,117 - INFO - OPENED SHORT at 2105.26 | Stop loss: 2115.8343714285716 | Take profit: 2073.6089928571428 +2025-03-10 16:19:32,333 - INFO - CLOSED short at 2080.58 | PnL: 1.17% | $2.12 +2025-03-10 16:19:32,356 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2218214285717 | Take profit: 2053.4066428571427 +2025-03-10 16:19:32,529 - INFO - TAKE PROFIT hit for short at 2053.4066428571427 | PnL: 1.50% | $2.83 +2025-03-10 16:19:32,552 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3030714285715 | Take profit: 2020.1628928571429 +2025-03-10 16:19:32,861 - INFO - TAKE PROFIT hit for short at 2020.1628928571429 | PnL: 1.50% | $2.91 +2025-03-10 16:19:32,881 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 60.0% in downtrends | Avg Win=$2.65, Avg Loss=$-0.56 +2025-03-10 16:19:32,881 - INFO - Episode 1: Reward=27.17, Balance=$108.93, Win Rate=57.1%, Trades=7, Episode PnL=$9.08, Total PnL=$570.67, Max Drawdown=1.2%, Pred Accuracy=99.3% +2025-03-10 16:19:33,023 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 16:19:33,024 - INFO - New best PnL model saved: $9.08 +2025-03-10 16:19:33,024 - INFO - Refreshing data for episode 2 +2025-03-10 16:19:33,024 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:19:33,345 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:19:33,355 - INFO - Initialized environment with 100 candles +2025-03-10 16:19:33,388 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.07595 | Take profit: 2089.525425 +2025-03-10 16:19:34,019 - INFO - CLOSED short at 2089.04 | PnL: 1.53% | $2.79 +2025-03-10 16:19:34,020 - INFO - OPENED LONG at 2089.04 | Stop loss: 2078.54595 | Take profit: 2120.4488749999996 +2025-03-10 16:19:34,046 - INFO - CLOSED long at 2089.84 | PnL: 0.04% | $-0.12 +2025-03-10 16:19:34,046 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.33805 | Take profit: 2058.4191250000003 +2025-03-10 16:19:34,124 - INFO - STOP LOSS hit for short at 2100.33805 | PnL: -0.50% | $-1.21 +2025-03-10 16:19:34,150 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9758999999995 | Take profit: 2071.785575 +2025-03-10 16:19:34,503 - INFO - CLOSED short at 2084.25 | PnL: 0.91% | $1.61 +2025-03-10 16:19:34,531 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8457 | Take profit: 2054.016175 +2025-03-10 16:19:34,664 - INFO - TAKE PROFIT hit for short at 2054.016175 | PnL: 1.50% | $2.83 +2025-03-10 16:19:34,707 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3038500000002 | Take profit: 2020.1617250000002 +2025-03-10 16:19:35,118 - INFO - TAKE PROFIT hit for short at 2020.1617250000002 | PnL: 1.50% | $2.90 +2025-03-10 16:19:35,137 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.53, Avg Loss=$-0.67 +2025-03-10 16:19:35,138 - INFO - Episode 2: Reward=31.30, Balance=$108.79, Win Rate=66.7%, Trades=6, Episode PnL=$8.92, Total PnL=$579.47, Max Drawdown=0.0%, Pred Accuracy=99.3% +2025-03-10 16:19:35,138 - INFO - Refreshing data for episode 3 +2025-03-10 16:19:35,139 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:19:35,457 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:19:35,466 - INFO - Initialized environment with 100 candles +2025-03-10 16:19:35,573 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0768428571428 | Take profit: 2089.524085714286 +2025-03-10 16:19:35,717 - INFO - CLOSED short at 2124.9 | PnL: -0.16% | $-0.52 +2025-03-10 16:19:35,752 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.021392857143 | Take profit: 2096.3304357142856 +2025-03-10 16:19:36,220 - INFO - TAKE PROFIT hit for short at 2096.3304357142856 | PnL: 1.50% | $2.73 +2025-03-10 16:19:36,245 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.599992857143 | Take profit: 2068.474635714286 +2025-03-10 16:19:36,631 - INFO - CLOSED short at 2098.66 | PnL: 0.07% | $-0.07 +2025-03-10 16:19:36,632 - INFO - OPENED LONG at 2098.66 | Stop loss: 2088.116957142857 | Take profit: 2130.2145142857144 +2025-03-10 16:19:36,655 - INFO - CLOSED long at 2090.59 | PnL: -0.38% | $-0.97 +2025-03-10 16:19:36,656 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.092692857143 | Take profit: 2059.156535714286 +2025-03-10 16:19:36,701 - INFO - CLOSED short at 2084.95 | PnL: 0.27% | $0.34 +2025-03-10 16:19:36,723 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.032642857143 | Take profit: 2049.2966857142856 +2025-03-10 16:19:36,751 - INFO - CLOSED short at 2084.75 | PnL: -0.20% | $-0.60 +2025-03-10 16:19:36,751 - INFO - OPENED LONG at 2084.75 | Stop loss: 2074.276507142857 | Take profit: 2116.095864285714 +2025-03-10 16:19:36,789 - INFO - CLOSED long at 2081.0 | PnL: -0.18% | $-0.55 +2025-03-10 16:19:36,790 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.4547428571427 | Take profit: 2049.7103857142856 +2025-03-10 16:19:37,010 - INFO - TAKE PROFIT hit for short at 2049.7103857142856 | PnL: 1.50% | $2.75 +2025-03-10 16:19:37,033 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.304742857143 | Take profit: 2020.160385714286 +2025-03-10 16:19:37,098 - INFO - CLOSED short at 2053.22 | PnL: -0.11% | $-0.42 +2025-03-10 16:19:37,098 - INFO - OPENED LONG at 2053.22 | Stop loss: 2042.904157142857 | Take profit: 2084.092914285714 +2025-03-10 16:19:37,122 - INFO - CLOSED long at 2058.11 | PnL: 0.24% | $0.28 +2025-03-10 16:19:37,122 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.4502928571433 | Take profit: 2027.1637357142858 +2025-03-10 16:19:37,422 - INFO - TAKE PROFIT hit for short at 2027.1637357142858 | PnL: 1.50% | $2.82 +2025-03-10 16:19:37,444 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.78, Avg Loss=$-0.52 +2025-03-10 16:19:37,444 - INFO - Episode 3: Reward=19.23, Balance=$105.80, Win Rate=45.5%, Trades=11, Episode PnL=$7.04, Total PnL=$585.26, Max Drawdown=0.7%, Pred Accuracy=99.3% +2025-03-10 16:19:37,445 - INFO - Refreshing data for episode 4 +2025-03-10 16:19:37,445 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:19:37,747 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:19:37,758 - INFO - Initialized environment with 100 candles +2025-03-10 16:19:37,792 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0768428571428 | Take profit: 2089.524085714286 +2025-03-10 16:19:38,188 - INFO - CLOSED short at 2115.11 | PnL: 0.30% | $0.39 +2025-03-10 16:19:38,188 - INFO - OPENED LONG at 2115.11 | Stop loss: 2104.484707142857 | Take profit: 2146.911264285714 +2025-03-10 16:19:38,212 - INFO - CLOSED long at 2114.32 | PnL: -0.04% | $-0.27 +2025-03-10 16:19:38,214 - INFO - OPENED SHORT at 2114.32 | Stop loss: 2124.941342857143 | Take profit: 2082.5305857142857 +2025-03-10 16:19:38,998 - INFO - TAKE PROFIT hit for short at 2082.5305857142857 | PnL: 1.50% | $2.75 +2025-03-10 16:19:39,021 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.223492857143 | Take profit: 2053.4041357142855 +2025-03-10 16:19:39,266 - INFO - TAKE PROFIT hit for short at 2053.4041357142855 | PnL: 1.50% | $2.82 +2025-03-10 16:19:39,310 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.304742857143 | Take profit: 2020.160385714286 +2025-03-10 16:19:39,747 - INFO - TAKE PROFIT hit for short at 2020.160385714286 | PnL: 1.50% | $2.90 +2025-03-10 16:19:39,768 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.21, Avg Loss=$-0.27 +2025-03-10 16:19:39,770 - INFO - Episode 4: Reward=27.41, Balance=$108.58, Win Rate=80.0%, Trades=5, Episode PnL=$8.85, Total PnL=$593.84, Max Drawdown=0.0%, Pred Accuracy=99.4% +2025-03-10 16:19:39,771 - INFO - Refreshing data for episode 5 +2025-03-10 16:19:39,771 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:19:40,078 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:19:40,089 - INFO - Initialized environment with 100 candles +2025-03-10 16:19:40,845 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0768428571428 | Take profit: 2089.524085714286 +2025-03-10 16:19:41,490 - INFO - TAKE PROFIT hit for short at 2089.524085714286 | PnL: 1.50% | $2.74 +2025-03-10 16:19:41,514 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3389428571427 | Take profit: 2058.417785714286 +2025-03-10 16:19:41,621 - INFO - STOP LOSS hit for short at 2100.3389428571427 | PnL: -0.50% | $-1.21 +2025-03-10 16:19:41,657 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9767928571423 | Take profit: 2071.7842357142854 +2025-03-10 16:19:41,692 - INFO - CLOSED short at 2104.22 | PnL: -0.04% | $-0.27 +2025-03-10 16:19:41,692 - INFO - OPENED LONG at 2104.22 | Stop loss: 2093.649157142857 | Take profit: 2135.857914285714 +2025-03-10 16:19:41,729 - INFO - CLOSED long at 2104.67 | PnL: 0.02% | $-0.16 +2025-03-10 16:19:41,758 - INFO - OPENED SHORT at 2105.26 | Stop loss: 2115.8360428571427 | Take profit: 2073.606485714286 +2025-03-10 16:19:41,913 - INFO - CLOSED short at 2090.99 | PnL: 0.68% | $1.14 +2025-03-10 16:19:41,913 - INFO - OPENED LONG at 2090.99 | Stop loss: 2080.485307142857 | Take profit: 2122.429464285714 +2025-03-10 16:19:41,940 - INFO - CLOSED long at 2084.95 | PnL: -0.29% | $-0.78 +2025-03-10 16:19:41,940 - INFO - OPENED SHORT at 2084.95 | Stop loss: 2095.4244928571425 | Take profit: 2053.6011357142856 +2025-03-10 16:19:42,242 - INFO - TAKE PROFIT hit for short at 2053.6011357142856 | PnL: 1.50% | $2.78 +2025-03-10 16:19:42,265 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.304742857143 | Take profit: 2020.160385714286 +2025-03-10 16:19:42,652 - INFO - TAKE PROFIT hit for short at 2020.160385714286 | PnL: 1.50% | $2.86 +2025-03-10 16:19:42,672 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.38, Avg Loss=$-0.60 +2025-03-10 16:19:42,673 - INFO - Episode 5: Reward=24.57, Balance=$107.11, Win Rate=50.0%, Trades=8, Episode PnL=$7.88, Total PnL=$600.95, Max Drawdown=1.6%, Pred Accuracy=99.5% +2025-03-10 16:19:42,673 - INFO - Refreshing data for episode 6 +2025-03-10 16:19:42,673 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:19:43,020 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:19:43,029 - INFO - Initialized environment with 100 candles +2025-03-10 16:19:43,066 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0771571428572 | Take profit: 2089.5236142857143 +2025-03-10 16:19:43,527 - INFO - CLOSED short at 2113.28 | PnL: 0.38% | $0.55 +2025-03-10 16:19:43,527 - INFO - OPENED LONG at 2113.28 | Stop loss: 2102.663542857143 | Take profit: 2145.054285714286 +2025-03-10 16:19:43,553 - INFO - CLOSED long at 2114.5 | PnL: 0.06% | $-0.08 +2025-03-10 16:19:43,553 - INFO - OPENED SHORT at 2114.5 | Stop loss: 2125.122557142857 | Take profit: 2082.707414285714 +2025-03-10 16:19:44,128 - INFO - TAKE PROFIT hit for short at 2082.707414285714 | PnL: 1.50% | $2.76 +2025-03-10 16:19:44,156 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.223807142857 | Take profit: 2053.4036642857145 +2025-03-10 16:19:44,405 - INFO - TAKE PROFIT hit for short at 2053.4036642857145 | PnL: 1.50% | $2.83 +2025-03-10 16:19:44,431 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305057142857 | Take profit: 2020.1599142857144 +2025-03-10 16:19:44,804 - INFO - TAKE PROFIT hit for short at 2020.1599142857144 | PnL: 1.50% | $2.91 +2025-03-10 16:19:44,824 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.26, Avg Loss=$-0.08 +2025-03-10 16:19:44,825 - INFO - Episode 6: Reward=27.77, Balance=$108.96, Win Rate=80.0%, Trades=5, Episode PnL=$9.05, Total PnL=$609.91, Max Drawdown=0.0%, Pred Accuracy=99.5% +2025-03-10 16:19:44,825 - INFO - Refreshing data for episode 7 +2025-03-10 16:19:44,826 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:19:45,154 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:19:45,163 - INFO - Initialized environment with 100 candles +2025-03-10 16:19:45,199 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0771571428572 | Take profit: 2089.5236142857143 +2025-03-10 16:19:45,944 - INFO - TAKE PROFIT hit for short at 2089.5236142857143 | PnL: 1.50% | $2.74 +2025-03-10 16:19:45,971 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3392571428576 | Take profit: 2058.4173142857144 +2025-03-10 16:19:46,050 - INFO - STOP LOSS hit for short at 2100.3392571428576 | PnL: -0.50% | $-1.21 +2025-03-10 16:19:46,077 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.977107142857 | Take profit: 2071.7837642857144 +2025-03-10 16:19:46,371 - INFO - CLOSED short at 2090.99 | PnL: 0.59% | $0.97 +2025-03-10 16:19:46,372 - INFO - OPENED LONG at 2090.99 | Stop loss: 2080.4849928571425 | Take profit: 2122.4299357142854 +2025-03-10 16:19:46,395 - INFO - CLOSED long at 2084.95 | PnL: -0.29% | $-0.78 +2025-03-10 16:19:46,395 - INFO - OPENED SHORT at 2084.95 | Stop loss: 2095.424807142857 | Take profit: 2053.600664285714 +2025-03-10 16:19:46,746 - INFO - CLOSED short at 2048.3 | PnL: 1.76% | $3.29 +2025-03-10 16:19:46,771 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305057142857 | Take profit: 2020.1599142857144 +2025-03-10 16:19:47,178 - INFO - TAKE PROFIT hit for short at 2020.1599142857144 | PnL: 1.50% | $2.88 +2025-03-10 16:19:47,201 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.47, Avg Loss=$-0.99 +2025-03-10 16:19:47,202 - INFO - Episode 7: Reward=30.26, Balance=$107.90, Win Rate=66.7%, Trades=6, Episode PnL=$8.68, Total PnL=$617.81, Max Drawdown=1.2%, Pred Accuracy=99.5% +2025-03-10 16:19:47,202 - INFO - Refreshing data for episode 8 +2025-03-10 16:19:47,203 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:19:47,948 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:19:47,958 - INFO - Initialized environment with 100 candles +2025-03-10 16:19:47,996 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0771571428572 | Take profit: 2089.5236142857143 +2025-03-10 16:19:48,731 - INFO - TAKE PROFIT hit for short at 2089.5236142857143 | PnL: 1.50% | $2.74 +2025-03-10 16:19:48,758 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3392571428576 | Take profit: 2058.4173142857144 +2025-03-10 16:19:48,836 - INFO - STOP LOSS hit for short at 2100.3392571428576 | PnL: -0.50% | $-1.21 +2025-03-10 16:19:48,861 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.977107142857 | Take profit: 2071.7837642857144 +2025-03-10 16:19:49,435 - INFO - TAKE PROFIT hit for short at 2071.7837642857144 | PnL: 1.50% | $2.78 +2025-03-10 16:19:49,524 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305057142857 | Take profit: 2020.1599142857144 +2025-03-10 16:19:49,951 - INFO - TAKE PROFIT hit for short at 2020.1599142857144 | PnL: 1.50% | $2.86 +2025-03-10 16:19:49,973 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.80, Avg Loss=$-1.21 +2025-03-10 16:19:49,974 - INFO - Episode 8: Reward=27.79, Balance=$107.18, Win Rate=75.0%, Trades=4, Episode PnL=$7.18, Total PnL=$624.99, Max Drawdown=1.2%, Pred Accuracy=99.5% +2025-03-10 16:19:49,974 - INFO - Refreshing data for episode 9 +2025-03-10 16:19:49,975 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:19:50,282 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:19:50,292 - INFO - Initialized environment with 100 candles +2025-03-10 16:19:50,328 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0776321428575 | Take profit: 2089.522901785714 +2025-03-10 16:19:51,239 - INFO - TAKE PROFIT hit for short at 2089.522901785714 | PnL: 1.50% | $2.74 +2025-03-10 16:19:51,294 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3397321428574 | Take profit: 2058.4166017857146 +2025-03-10 16:19:51,389 - INFO - STOP LOSS hit for short at 2100.3397321428574 | PnL: -0.50% | $-1.21 +2025-03-10 16:19:51,419 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.977582142857 | Take profit: 2071.783051785714 +2025-03-10 16:19:52,091 - INFO - TAKE PROFIT hit for short at 2071.783051785714 | PnL: 1.50% | $2.78 +2025-03-10 16:19:52,141 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5920321428575 | Take profit: 2017.4997017857143 +2025-03-10 16:19:52,567 - INFO - TAKE PROFIT hit for short at 2017.4997017857143 | PnL: 1.50% | $2.86 +2025-03-10 16:19:52,585 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.79, Avg Loss=$-1.21 +2025-03-10 16:19:52,587 - INFO - Episode 9: Reward=27.98, Balance=$107.17, Win Rate=75.0%, Trades=4, Episode PnL=$7.17, Total PnL=$632.16, Max Drawdown=1.2%, Pred Accuracy=99.4% +2025-03-10 16:19:52,587 - INFO - Refreshing data for episode 10 +2025-03-10 16:19:52,587 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:19:52,906 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:19:52,917 - INFO - Initialized environment with 100 candles +2025-03-10 16:19:53,947 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0776321428575 | Take profit: 2089.522901785714 +2025-03-10 16:19:54,759 - INFO - TAKE PROFIT hit for short at 2089.522901785714 | PnL: 1.50% | $2.74 +2025-03-10 16:19:54,799 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3397321428574 | Take profit: 2058.4166017857146 +2025-03-10 16:19:54,910 - INFO - CLOSED short at 2102.83 | PnL: -0.62% | $-1.45 +2025-03-10 16:19:54,948 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.977582142857 | Take profit: 2071.783051785714 +2025-03-10 16:19:55,443 - INFO - CLOSED short at 2084.75 | PnL: 0.89% | $1.56 +2025-03-10 16:19:55,444 - INFO - OPENED LONG at 2084.75 | Stop loss: 2074.275717857143 | Take profit: 2116.0970482142857 +2025-03-10 16:19:55,476 - INFO - CLOSED long at 2081.0 | PnL: -0.18% | $-0.56 +2025-03-10 16:19:55,477 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.455532142857 | Take profit: 2049.7092017857144 +2025-03-10 16:19:55,655 - INFO - TAKE PROFIT hit for short at 2049.7092017857144 | PnL: 1.50% | $2.80 +2025-03-10 16:19:55,683 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305532142857 | Take profit: 2020.1592017857145 +2025-03-10 16:19:56,092 - INFO - TAKE PROFIT hit for short at 2020.1592017857145 | PnL: 1.50% | $2.88 +2025-03-10 16:19:56,118 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.50, Avg Loss=$-1.00 +2025-03-10 16:19:56,119 - INFO - Episode 10: Reward=25.49, Balance=$107.97, Win Rate=66.7%, Trades=6, Episode PnL=$8.53, Total PnL=$640.14, Max Drawdown=1.4%, Pred Accuracy=99.4% +2025-03-10 16:19:56,292 - INFO - Model saved to checkpoints/trading_agent_episode_10.pt +2025-03-10 16:19:56,292 - INFO - Checkpoint saved at episode 10 +2025-03-10 16:19:57,454 - INFO - Visualization saved for episode 10 +2025-03-10 16:19:59,454 - INFO - Visualization saved for episode 10 +2025-03-10 16:19:59,479 - INFO - Refreshing data for episode 11 +2025-03-10 16:19:59,480 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:19:59,820 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:19:59,831 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:00,198 - INFO - OPENED SHORT at 2121.42 | Stop loss: 2132.0776321428575 | Take profit: 2089.522901785714 +2025-03-10 16:20:00,678 - INFO - CLOSED short at 2115.21 | PnL: 0.29% | $0.38 +2025-03-10 16:20:00,707 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.721032142857 | Take profit: 2082.312701785714 +2025-03-10 16:20:01,752 - INFO - TAKE PROFIT hit for short at 2082.312701785714 | PnL: 1.50% | $2.75 +2025-03-10 16:20:01,782 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.224282142857 | Take profit: 2053.4029517857143 +2025-03-10 16:20:02,050 - INFO - TAKE PROFIT hit for short at 2053.4029517857143 | PnL: 1.50% | $2.83 +2025-03-10 16:20:02,099 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305532142857 | Take profit: 2020.1592017857145 +2025-03-10 16:20:02,516 - INFO - TAKE PROFIT hit for short at 2020.1592017857145 | PnL: 1.50% | $2.90 +2025-03-10 16:20:02,548 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.21, Avg Loss=$0.00 +2025-03-10 16:20:02,549 - INFO - Episode 11: Reward=15.21, Balance=$108.86, Win Rate=100.0%, Trades=4, Episode PnL=$8.86, Total PnL=$648.99, Max Drawdown=0.0%, Pred Accuracy=99.2% +2025-03-10 16:20:02,549 - INFO - Refreshing data for episode 12 +2025-03-10 16:20:02,549 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:20:02,882 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:20:02,894 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:02,930 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1489785714284 | Take profit: 2084.702632142857 +2025-03-10 16:20:03,029 - INFO - STOP LOSS hit for short at 2127.1489785714284 | PnL: -0.50% | $-1.18 +2025-03-10 16:20:03,053 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4402285714286 | Take profit: 2092.8288821428573 +2025-03-10 16:20:03,660 - INFO - TAKE PROFIT hit for short at 2092.8288821428573 | PnL: 1.50% | $2.71 +2025-03-10 16:20:03,681 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.596628571429 | Take profit: 2068.479682142857 +2025-03-10 16:20:04,459 - INFO - TAKE PROFIT hit for short at 2068.479682142857 | PnL: 1.50% | $2.79 +2025-03-10 16:20:04,483 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.587878571429 | Take profit: 2017.5059321428573 +2025-03-10 16:20:04,904 - INFO - TAKE PROFIT hit for short at 2017.5059321428573 | PnL: 1.50% | $2.86 +2025-03-10 16:20:04,927 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6640785714287 | Take profit: 1985.2373321428572 +2025-03-10 16:20:04,969 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.79, Avg Loss=$-1.18 +2025-03-10 16:20:04,970 - INFO - Episode 12: Reward=14.27, Balance=$107.19, Win Rate=75.0%, Trades=4, Episode PnL=$7.19, Total PnL=$656.18, Max Drawdown=1.2%, Pred Accuracy=98.4% +2025-03-10 16:20:04,970 - INFO - Refreshing data for episode 13 +2025-03-10 16:20:04,971 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:20:05,301 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:20:05,314 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:05,429 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1494357142856 | Take profit: 2084.7019464285713 +2025-03-10 16:20:05,563 - INFO - STOP LOSS hit for short at 2127.1494357142856 | PnL: -0.50% | $-1.18 +2025-03-10 16:20:05,587 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.440685714286 | Take profit: 2092.8281964285716 +2025-03-10 16:20:05,794 - INFO - CLOSED short at 2115.11 | PnL: 0.45% | $0.69 +2025-03-10 16:20:05,828 - INFO - OPENED SHORT at 2114.32 | Stop loss: 2124.938435714286 | Take profit: 2082.5349464285714 +2025-03-10 16:20:06,532 - INFO - TAKE PROFIT hit for short at 2082.5349464285714 | PnL: 1.50% | $2.73 +2025-03-10 16:20:06,569 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.220585714286 | Take profit: 2053.4084964285717 +2025-03-10 16:20:06,808 - INFO - TAKE PROFIT hit for short at 2053.4084964285717 | PnL: 1.50% | $2.81 +2025-03-10 16:20:06,830 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.301835714286 | Take profit: 2020.1647464285716 +2025-03-10 16:20:07,215 - INFO - TAKE PROFIT hit for short at 2020.1647464285716 | PnL: 1.50% | $2.88 +2025-03-10 16:20:07,239 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6645357142859 | Take profit: 1985.2366464285715 +2025-03-10 16:20:07,266 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.28, Avg Loss=$-1.18 +2025-03-10 16:20:07,267 - INFO - Episode 13: Reward=1.75, Balance=$107.93, Win Rate=80.0%, Trades=5, Episode PnL=$7.93, Total PnL=$664.11, Max Drawdown=1.2%, Pred Accuracy=97.1% +2025-03-10 16:20:07,267 - INFO - Refreshing data for episode 14 +2025-03-10 16:20:07,269 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:20:07,571 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:20:07,580 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:07,615 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1495321428574 | Take profit: 2084.7018017857145 +2025-03-10 16:20:07,697 - INFO - CLOSED short at 2128.33 | PnL: -0.56% | $-1.29 +2025-03-10 16:20:07,697 - INFO - OPENED LONG at 2128.33 | Stop loss: 2117.6414178571426 | Take profit: 2160.3253482142854 +2025-03-10 16:20:07,720 - INFO - CLOSED long at 2124.77 | PnL: -0.17% | $-0.52 +2025-03-10 16:20:07,720 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.440782142857 | Take profit: 2092.8280517857143 +2025-03-10 16:20:08,244 - INFO - TAKE PROFIT hit for short at 2092.8280517857143 | PnL: 1.50% | $2.70 +2025-03-10 16:20:08,289 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.597182142857 | Take profit: 2068.4788517857146 +2025-03-10 16:20:08,397 - INFO - CLOSED short at 2096.19 | PnL: 0.18% | $0.17 +2025-03-10 16:20:08,421 - INFO - OPENED SHORT at 2100.0 | Stop loss: 2110.5469321428573 | Take profit: 2068.429601785714 +2025-03-10 16:20:08,962 - INFO - CLOSED short at 2067.71 | PnL: 1.54% | $2.84 +2025-03-10 16:20:08,962 - INFO - OPENED LONG at 2067.71 | Stop loss: 2057.324517857143 | Take profit: 2098.7960482142857 +2025-03-10 16:20:09,012 - INFO - CLOSED long at 2048.3 | PnL: -0.94% | $-2.11 +2025-03-10 16:20:09,013 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5884321428575 | Take profit: 2017.5051017857143 +2025-03-10 16:20:09,492 - INFO - TAKE PROFIT hit for short at 2017.5051017857143 | PnL: 1.50% | $2.79 +2025-03-10 16:20:09,533 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6646321428573 | Take profit: 1985.2365017857144 +2025-03-10 16:20:09,553 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.12, Avg Loss=$-1.30 +2025-03-10 16:20:09,554 - INFO - Episode 14: Reward=-3.77, Balance=$104.58, Win Rate=57.1%, Trades=7, Episode PnL=$7.21, Total PnL=$668.69, Max Drawdown=0.0%, Pred Accuracy=96.7% +2025-03-10 16:20:09,554 - INFO - Refreshing data for episode 15 +2025-03-10 16:20:09,555 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:20:09,859 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:20:09,870 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:10,656 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1501 | Take profit: 2084.70095 +2025-03-10 16:20:10,748 - INFO - STOP LOSS hit for short at 2127.1501 | PnL: -0.50% | $-1.18 +2025-03-10 16:20:10,770 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.44135 | Take profit: 2092.8272 +2025-03-10 16:20:10,856 - INFO - CLOSED short at 2115.52 | PnL: 0.44% | $0.65 +2025-03-10 16:20:10,856 - INFO - OPENED LONG at 2115.52 | Stop loss: 2104.8949 | Take profit: 2147.3240499999997 +2025-03-10 16:20:10,877 - INFO - CLOSED long at 2114.75 | PnL: -0.04% | $-0.27 +2025-03-10 16:20:10,878 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.3712499999997 | Take profit: 2082.9575 +2025-03-10 16:20:11,121 - INFO - CLOSED short at 2113.28 | PnL: 0.07% | $-0.06 +2025-03-10 16:20:11,152 - INFO - OPENED SHORT at 2114.5 | Stop loss: 2125.12 | Take profit: 2082.7112500000003 +2025-03-10 16:20:11,777 - INFO - TAKE PROFIT hit for short at 2082.7112500000003 | PnL: 1.50% | $2.72 +2025-03-10 16:20:11,817 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.22125 | Take profit: 2053.4075 +2025-03-10 16:20:12,053 - INFO - TAKE PROFIT hit for short at 2053.4075 | PnL: 1.50% | $2.80 +2025-03-10 16:20:12,086 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3025000000002 | Take profit: 2020.16375 +2025-03-10 16:20:12,497 - INFO - TAKE PROFIT hit for short at 2020.16375 | PnL: 1.50% | $2.87 +2025-03-10 16:20:12,521 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6652 | Take profit: 1985.23565 +2025-03-10 16:20:12,552 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 80.0% in downtrends | Avg Win=$2.26, Avg Loss=$-0.50 +2025-03-10 16:20:12,553 - INFO - Episode 15: Reward=-0.92, Balance=$107.53, Win Rate=57.1%, Trades=7, Episode PnL=$7.80, Total PnL=$676.23, Max Drawdown=1.2%, Pred Accuracy=97.5% +2025-03-10 16:20:12,553 - INFO - Refreshing data for episode 16 +2025-03-10 16:20:12,554 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:20:12,869 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:20:12,880 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:12,999 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1507357142855 | Take profit: 2084.6999964285715 +2025-03-10 16:20:13,148 - INFO - STOP LOSS hit for short at 2127.1507357142855 | PnL: -0.50% | $-1.18 +2025-03-10 16:20:13,171 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4419857142857 | Take profit: 2092.8262464285713 +2025-03-10 16:20:13,750 - INFO - TAKE PROFIT hit for short at 2092.8262464285713 | PnL: 1.50% | $2.71 +2025-03-10 16:20:13,775 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5983857142855 | Take profit: 2068.4770464285716 +2025-03-10 16:20:13,978 - INFO - CLOSED short at 2104.22 | PnL: -0.20% | $-0.59 +2025-03-10 16:20:14,021 - INFO - OPENED SHORT at 2104.67 | Stop loss: 2115.241485714286 | Take profit: 2073.0277464285714 +2025-03-10 16:20:14,303 - INFO - CLOSED short at 2080.58 | PnL: 1.14% | $2.06 +2025-03-10 16:20:14,304 - INFO - OPENED LONG at 2080.58 | Stop loss: 2070.128964285714 | Take profit: 2111.8609035714285 +2025-03-10 16:20:14,328 - INFO - CLOSED long at 2084.75 | PnL: 0.20% | $0.20 +2025-03-10 16:20:14,329 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.221885714286 | Take profit: 2053.4065464285713 +2025-03-10 16:20:14,359 - INFO - CLOSED short at 2081.0 | PnL: 0.18% | $0.16 +2025-03-10 16:20:14,409 - INFO - OPENED SHORT at 2084.25 | Stop loss: 2094.7193857142856 | Take profit: 2052.9140464285715 +2025-03-10 16:20:14,597 - INFO - TAKE PROFIT hit for short at 2052.9140464285715 | PnL: 1.50% | $2.84 +2025-03-10 16:20:14,619 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.303135714286 | Take profit: 2020.1627964285715 +2025-03-10 16:20:15,002 - INFO - TAKE PROFIT hit for short at 2020.1627964285715 | PnL: 1.50% | $2.91 +2025-03-10 16:20:15,026 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6658357142858 | Take profit: 1985.2346964285714 +2025-03-10 16:20:15,052 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 80.0% in downtrends | Avg Win=$1.81, Avg Loss=$-0.89 +2025-03-10 16:20:15,052 - INFO - Episode 16: Reward=2.99, Balance=$109.12, Win Rate=75.0%, Trades=8, Episode PnL=$8.91, Total PnL=$685.34, Max Drawdown=1.2%, Pred Accuracy=97.7% +2025-03-10 16:20:15,053 - INFO - Refreshing data for episode 17 +2025-03-10 16:20:15,053 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:20:15,353 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:20:15,363 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:15,397 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1507357142855 | Take profit: 2084.6999964285715 +2025-03-10 16:20:15,485 - INFO - STOP LOSS hit for short at 2127.1507357142855 | PnL: -0.50% | $-1.18 +2025-03-10 16:20:15,509 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4419857142857 | Take profit: 2092.8262464285713 +2025-03-10 16:20:15,974 - INFO - CLOSED short at 2098.28 | PnL: 1.25% | $2.22 +2025-03-10 16:20:16,015 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.864935714286 | Take profit: 2059.9173964285715 +2025-03-10 16:20:16,228 - INFO - STOP LOSS hit for short at 2101.864935714286 | PnL: -0.50% | $-1.19 +2025-03-10 16:20:16,260 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9751857142855 | Take profit: 2071.786646428571 +2025-03-10 16:20:16,454 - INFO - CLOSED short at 2099.22 | PnL: 0.20% | $0.19 +2025-03-10 16:20:16,503 - INFO - OPENED SHORT at 2094.16 | Stop loss: 2104.6789357142857 | Take profit: 2062.6753964285713 +2025-03-10 16:20:16,636 - INFO - CLOSED short at 2084.95 | PnL: 0.44% | $0.66 +2025-03-10 16:20:16,636 - INFO - OPENED LONG at 2084.95 | Stop loss: 2074.4771142857144 | Take profit: 2116.296453571428 +2025-03-10 16:20:16,660 - INFO - CLOSED long at 2080.58 | PnL: -0.21% | $-0.61 +2025-03-10 16:20:16,660 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0310357142857 | Take profit: 2049.2990964285714 +2025-03-10 16:20:16,952 - INFO - TAKE PROFIT hit for short at 2049.2990964285714 | PnL: 1.50% | $2.75 +2025-03-10 16:20:16,977 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.303135714286 | Take profit: 2020.1627964285715 +2025-03-10 16:20:17,291 - INFO - CLOSED short at 2042.0 | PnL: 0.44% | $0.68 +2025-03-10 16:20:17,342 - INFO - OPENED SHORT at 2036.71 | Stop loss: 2046.9416857142855 | Take profit: 2006.0871464285715 +2025-03-10 16:20:17,427 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.30, Avg Loss=$-0.99 +2025-03-10 16:20:17,428 - INFO - Episode 17: Reward=4.39, Balance=$103.52, Win Rate=62.5%, Trades=8, Episode PnL=$4.13, Total PnL=$688.87, Max Drawdown=1.2%, Pred Accuracy=97.7% +2025-03-10 16:20:17,428 - INFO - Refreshing data for episode 18 +2025-03-10 16:20:17,429 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:20:17,739 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:20:17,748 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:17,782 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1507357142855 | Take profit: 2084.6999964285715 +2025-03-10 16:20:17,872 - INFO - STOP LOSS hit for short at 2127.1507357142855 | PnL: -0.50% | $-1.18 +2025-03-10 16:20:17,893 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4419857142857 | Take profit: 2092.8262464285713 +2025-03-10 16:20:18,365 - INFO - CLOSED short at 2091.36 | PnL: 1.57% | $2.85 +2025-03-10 16:20:18,406 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5983857142855 | Take profit: 2068.4770464285716 +2025-03-10 16:20:18,687 - INFO - CLOSED short at 2099.63 | PnL: 0.02% | $-0.16 +2025-03-10 16:20:18,709 - INFO - OPENED SHORT at 2099.22 | Stop loss: 2109.764235714286 | Take profit: 2067.659496428571 +2025-03-10 16:20:18,841 - INFO - CLOSED short at 2090.59 | PnL: 0.41% | $0.62 +2025-03-10 16:20:18,841 - INFO - OPENED LONG at 2090.59 | Stop loss: 2080.0889142857145 | Take profit: 2122.0210535714286 +2025-03-10 16:20:18,884 - INFO - CLOSED long at 2090.99 | PnL: 0.02% | $-0.16 +2025-03-10 16:20:18,884 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.493085714286 | Take profit: 2059.5529464285714 +2025-03-10 16:20:19,161 - INFO - TAKE PROFIT hit for short at 2059.5529464285714 | PnL: 1.50% | $2.80 +2025-03-10 16:20:19,203 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.303135714286 | Take profit: 2020.1627964285715 +2025-03-10 16:20:19,618 - INFO - TAKE PROFIT hit for short at 2020.1627964285715 | PnL: 1.50% | $2.87 +2025-03-10 16:20:19,668 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6658357142858 | Take profit: 1985.2346964285714 +2025-03-10 16:20:19,709 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.28, Avg Loss=$-0.50 +2025-03-10 16:20:19,710 - INFO - Episode 18: Reward=1.55, Balance=$107.64, Win Rate=57.1%, Trades=7, Episode PnL=$7.80, Total PnL=$696.50, Max Drawdown=1.2%, Pred Accuracy=97.3% +2025-03-10 16:20:19,711 - INFO - Refreshing data for episode 19 +2025-03-10 16:20:19,711 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:20:20,021 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:20:20,032 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:20,069 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1507357142855 | Take profit: 2084.6999964285715 +2025-03-10 16:20:20,162 - INFO - STOP LOSS hit for short at 2127.1507357142855 | PnL: -0.50% | $-1.18 +2025-03-10 16:20:20,187 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4419857142857 | Take profit: 2092.8262464285713 +2025-03-10 16:20:20,558 - INFO - CLOSED short at 2114.5 | PnL: 0.48% | $0.74 +2025-03-10 16:20:20,622 - INFO - OPENED SHORT at 2098.28 | Stop loss: 2108.819535714286 | Take profit: 2066.7335964285717 +2025-03-10 16:20:21,448 - INFO - TAKE PROFIT hit for short at 2066.7335964285717 | PnL: 1.50% | $2.73 +2025-03-10 16:20:21,473 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.303135714286 | Take profit: 2020.1627964285715 +2025-03-10 16:20:21,699 - INFO - CLOSED short at 2046.76 | PnL: 0.21% | $0.21 +2025-03-10 16:20:21,738 - INFO - OPENED SHORT at 2043.95 | Stop loss: 2054.217885714286 | Take profit: 2013.2185464285715 +2025-03-10 16:20:21,873 - INFO - TAKE PROFIT hit for short at 2013.2185464285715 | PnL: 1.50% | $2.81 +2025-03-10 16:20:21,899 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6658357142858 | Take profit: 1985.2346964285714 +2025-03-10 16:20:21,921 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.62, Avg Loss=$-1.18 +2025-03-10 16:20:21,922 - INFO - Episode 19: Reward=2.28, Balance=$105.32, Win Rate=80.0%, Trades=5, Episode PnL=$5.32, Total PnL=$701.82, Max Drawdown=1.2%, Pred Accuracy=97.1% +2025-03-10 16:20:21,922 - INFO - Refreshing data for episode 20 +2025-03-10 16:20:21,923 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:20:22,218 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:20:22,229 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:23,077 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1507357142855 | Take profit: 2084.6999964285715 +2025-03-10 16:20:23,377 - INFO - STOP LOSS hit for short at 2127.1507357142855 | PnL: -0.50% | $-1.18 +2025-03-10 16:20:23,406 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4419857142857 | Take profit: 2092.8262464285713 +2025-03-10 16:20:23,862 - INFO - TAKE PROFIT hit for short at 2092.8262464285713 | PnL: 1.50% | $2.71 +2025-03-10 16:20:23,883 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5983857142855 | Take profit: 2068.4770464285716 +2025-03-10 16:20:24,557 - INFO - CLOSED short at 2083.07 | PnL: 0.81% | $1.41 +2025-03-10 16:20:24,583 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.4934857142857 | Take profit: 2043.8717464285714 +2025-03-10 16:20:24,679 - INFO - TAKE PROFIT hit for short at 2043.8717464285714 | PnL: 1.50% | $2.82 +2025-03-10 16:20:24,700 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.2025857142858 | Take profit: 2022.0244464285713 +2025-03-10 16:20:25,051 - INFO - TAKE PROFIT hit for short at 2022.0244464285713 | PnL: 1.50% | $2.90 +2025-03-10 16:20:25,075 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6658357142858 | Take profit: 1985.2346964285714 +2025-03-10 16:20:25,099 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.46, Avg Loss=$-1.18 +2025-03-10 16:20:25,100 - INFO - Episode 20: Reward=2.23, Balance=$108.67, Win Rate=80.0%, Trades=5, Episode PnL=$8.67, Total PnL=$710.49, Max Drawdown=1.2%, Pred Accuracy=97.4% +2025-03-10 16:20:25,249 - INFO - Model saved to checkpoints/trading_agent_episode_20.pt +2025-03-10 16:20:25,250 - INFO - Checkpoint saved at episode 20 +2025-03-10 16:20:25,251 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:20:26,514 - INFO - Visualization saved for episode 20 +2025-03-10 16:20:28,295 - INFO - Visualization saved for episode 20 +2025-03-10 16:20:28,309 - INFO - Refreshing data for episode 21 +2025-03-10 16:20:28,309 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:20:28,624 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:20:28,633 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:28,976 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6632357142857 | Take profit: 2087.1624964285716 +2025-03-10 16:20:29,046 - INFO - CLOSED short at 2128.33 | PnL: -0.44% | $-1.05 +2025-03-10 16:20:29,070 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4419857142857 | Take profit: 2092.8262464285713 +2025-03-10 16:20:29,482 - INFO - CLOSED short at 2115.07 | PnL: 0.46% | $0.69 +2025-03-10 16:20:29,535 - INFO - OPENED SHORT at 2098.28 | Stop loss: 2108.819535714286 | Take profit: 2066.7335964285717 +2025-03-10 16:20:29,903 - INFO - CLOSED short at 2099.22 | PnL: -0.04% | $-0.28 +2025-03-10 16:20:29,930 - INFO - OPENED SHORT at 2094.16 | Stop loss: 2104.6789357142857 | Take profit: 2062.6753964285713 +2025-03-10 16:20:30,458 - INFO - TAKE PROFIT hit for short at 2062.6753964285713 | PnL: 1.50% | $2.73 +2025-03-10 16:20:30,485 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.303135714286 | Take profit: 2020.1627964285715 +2025-03-10 16:20:30,872 - INFO - TAKE PROFIT hit for short at 2020.1627964285715 | PnL: 1.50% | $2.80 +2025-03-10 16:20:30,893 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6658357142858 | Take profit: 1985.2346964285714 +2025-03-10 16:20:30,913 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.07, Avg Loss=$-0.67 +2025-03-10 16:20:30,914 - INFO - Episode 21: Reward=-2.42, Balance=$104.88, Win Rate=60.0%, Trades=5, Episode PnL=$4.88, Total PnL=$715.37, Max Drawdown=1.1%, Pred Accuracy=97.5% +2025-03-10 16:20:30,915 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:20:30,915 - INFO - Refreshing data for episode 22 +2025-03-10 16:20:30,915 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:20:31,236 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:20:31,246 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:31,359 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1507357142855 | Take profit: 2084.6999964285715 +2025-03-10 16:20:31,501 - INFO - STOP LOSS hit for short at 2127.1507357142855 | PnL: -0.50% | $-1.18 +2025-03-10 16:20:31,544 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4419857142857 | Take profit: 2092.8262464285713 +2025-03-10 16:20:32,016 - INFO - TAKE PROFIT hit for short at 2092.8262464285713 | PnL: 1.50% | $2.71 +2025-03-10 16:20:32,041 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5983857142855 | Take profit: 2068.4770464285716 +2025-03-10 16:20:32,464 - INFO - CLOSED short at 2090.59 | PnL: 0.45% | $0.70 +2025-03-10 16:20:32,489 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.493085714286 | Take profit: 2059.5529464285714 +2025-03-10 16:20:32,789 - INFO - CLOSED short at 2067.71 | PnL: 1.11% | $2.03 +2025-03-10 16:20:32,789 - INFO - OPENED LONG at 2067.71 | Stop loss: 2057.3233142857143 | Take profit: 2098.7978535714287 +2025-03-10 16:20:32,815 - INFO - CLOSED long at 2048.3 | PnL: -0.94% | $-2.12 +2025-03-10 16:20:32,815 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5896357142856 | Take profit: 2017.5032964285715 +2025-03-10 16:20:33,217 - INFO - TAKE PROFIT hit for short at 2017.5032964285715 | PnL: 1.50% | $2.80 +2025-03-10 16:20:33,239 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6658357142858 | Take profit: 1985.2346964285714 +2025-03-10 16:20:33,262 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.06, Avg Loss=$-1.65 +2025-03-10 16:20:33,262 - INFO - Episode 22: Reward=0.62, Balance=$104.94, Win Rate=66.7%, Trades=6, Episode PnL=$7.06, Total PnL=$720.31, Max Drawdown=1.2%, Pred Accuracy=97.5% +2025-03-10 16:20:33,263 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:20:33,263 - INFO - Refreshing data for episode 23 +2025-03-10 16:20:33,263 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:20:33,576 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:20:33,587 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:33,621 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1507357142855 | Take profit: 2084.6999964285715 +2025-03-10 16:20:33,715 - INFO - STOP LOSS hit for short at 2127.1507357142855 | PnL: -0.50% | $-1.18 +2025-03-10 16:20:33,737 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4419857142857 | Take profit: 2092.8262464285713 +2025-03-10 16:20:34,202 - INFO - TAKE PROFIT hit for short at 2092.8262464285713 | PnL: 1.50% | $2.71 +2025-03-10 16:20:34,232 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5983857142855 | Take profit: 2068.4770464285716 +2025-03-10 16:20:34,770 - INFO - CLOSED short at 2084.75 | PnL: 0.73% | $1.25 +2025-03-10 16:20:34,851 - INFO - OPENED SHORT at 2084.25 | Stop loss: 2094.7193857142856 | Take profit: 2052.9140464285715 +2025-03-10 16:20:34,891 - INFO - CLOSED short at 2085.37 | PnL: -0.05% | $-0.31 +2025-03-10 16:20:34,892 - INFO - OPENED LONG at 2085.37 | Stop loss: 2074.8950142857143 | Take profit: 2116.7227535714287 +2025-03-10 16:20:34,935 - INFO - CLOSED long at 2084.11 | PnL: -0.06% | $-0.32 +2025-03-10 16:20:34,935 - INFO - OPENED SHORT at 2084.11 | Stop loss: 2094.5786857142857 | Take profit: 2052.7761464285713 +2025-03-10 16:20:35,041 - INFO - TAKE PROFIT hit for short at 2052.7761464285713 | PnL: 1.50% | $2.80 +2025-03-10 16:20:35,066 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.303135714286 | Take profit: 2020.1627964285715 +2025-03-10 16:20:35,366 - INFO - CLOSED short at 2044.1 | PnL: 0.34% | $0.48 +2025-03-10 16:20:35,387 - INFO - OPENED SHORT at 2043.59 | Stop loss: 2053.8560857142857 | Take profit: 2012.8639464285714 +2025-03-10 16:20:35,412 - INFO - CLOSED short at 2042.0 | PnL: 0.08% | $-0.05 +2025-03-10 16:20:35,438 - INFO - OPENED SHORT at 2036.71 | Stop loss: 2046.9416857142855 | Take profit: 2006.0871464285715 +2025-03-10 16:20:35,521 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.81, Avg Loss=$-0.46 +2025-03-10 16:20:35,522 - INFO - Episode 23: Reward=-1.29, Balance=$105.39, Win Rate=50.0%, Trades=8, Episode PnL=$5.72, Total PnL=$725.70, Max Drawdown=1.2%, Pred Accuracy=97.4% +2025-03-10 16:20:35,522 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:20:35,523 - INFO - Refreshing data for episode 24 +2025-03-10 16:20:35,523 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:20:35,856 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:20:35,867 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:35,974 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1507357142855 | Take profit: 2084.6999964285715 +2025-03-10 16:20:36,131 - INFO - CLOSED short at 2128.33 | PnL: -0.56% | $-1.29 +2025-03-10 16:20:36,157 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4419857142857 | Take profit: 2092.8262464285713 +2025-03-10 16:20:36,627 - INFO - TAKE PROFIT hit for short at 2092.8262464285713 | PnL: 1.50% | $2.71 +2025-03-10 16:20:36,650 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5983857142855 | Take profit: 2068.4770464285716 +2025-03-10 16:20:36,774 - INFO - CLOSED short at 2100.0 | PnL: 0.00% | $-0.19 +2025-03-10 16:20:36,774 - INFO - OPENED LONG at 2100.0 | Stop loss: 2089.4518642857142 | Take profit: 2131.5722035714284 +2025-03-10 16:20:36,810 - INFO - CLOSED long at 2102.83 | PnL: 0.13% | $0.07 +2025-03-10 16:20:36,811 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3922857142857 | Take profit: 2071.215346428571 +2025-03-10 16:20:37,437 - INFO - TAKE PROFIT hit for short at 2071.215346428571 | PnL: 1.50% | $2.78 +2025-03-10 16:20:37,463 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5896357142856 | Take profit: 2017.5032964285715 +2025-03-10 16:20:37,665 - INFO - CLOSED short at 2054.03 | PnL: -0.28% | $-0.77 +2025-03-10 16:20:37,709 - INFO - OPENED SHORT at 2050.18 | Stop loss: 2060.479035714285 | Take profit: 2019.3550964285712 +2025-03-10 16:20:37,884 - INFO - TAKE PROFIT hit for short at 2019.3550964285712 | PnL: 1.50% | $2.83 +2025-03-10 16:20:37,926 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.10, Avg Loss=$-0.75 +2025-03-10 16:20:37,927 - INFO - Episode 24: Reward=-4.92, Balance=$106.14, Win Rate=57.1%, Trades=7, Episode PnL=$6.07, Total PnL=$731.84, Max Drawdown=1.3%, Pred Accuracy=97.4% +2025-03-10 16:20:37,927 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:20:37,927 - INFO - Refreshing data for episode 25 +2025-03-10 16:20:37,928 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:20:38,279 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:20:38,288 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:39,098 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1507357142855 | Take profit: 2084.6999964285715 +2025-03-10 16:20:39,255 - INFO - STOP LOSS hit for short at 2127.1507357142855 | PnL: -0.50% | $-1.18 +2025-03-10 16:20:39,298 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4419857142857 | Take profit: 2092.8262464285713 +2025-03-10 16:20:39,471 - INFO - CLOSED short at 2115.21 | PnL: 0.45% | $0.68 +2025-03-10 16:20:39,499 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.7186357142855 | Take profit: 2082.316296428571 +2025-03-10 16:20:39,749 - INFO - CLOSED short at 2114.5 | PnL: -0.02% | $-0.23 +2025-03-10 16:20:39,776 - INFO - OPENED SHORT at 2115.07 | Stop loss: 2125.693485714286 | Take profit: 2083.2717464285715 +2025-03-10 16:20:40,060 - INFO - CLOSED short at 2100.0 | PnL: 0.71% | $1.19 +2025-03-10 16:20:40,135 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9751857142855 | Take profit: 2071.786646428571 +2025-03-10 16:20:40,263 - INFO - CLOSED short at 2094.16 | PnL: 0.44% | $0.67 +2025-03-10 16:20:40,264 - INFO - OPENED LONG at 2094.16 | Stop loss: 2083.641064285714 | Take profit: 2125.6446035714284 +2025-03-10 16:20:40,288 - INFO - CLOSED long at 2096.96 | PnL: 0.13% | $0.07 +2025-03-10 16:20:40,290 - INFO - OPENED SHORT at 2096.96 | Stop loss: 2107.492935714286 | Take profit: 2065.4333964285715 +2025-03-10 16:20:40,666 - INFO - TAKE PROFIT hit for short at 2065.4333964285715 | PnL: 1.50% | $2.78 +2025-03-10 16:20:40,688 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.303135714286 | Take profit: 2020.1627964285715 +2025-03-10 16:20:40,911 - INFO - CLOSED short at 2046.76 | PnL: 0.21% | $0.22 +2025-03-10 16:20:40,939 - INFO - OPENED SHORT at 2043.95 | Stop loss: 2054.217885714286 | Take profit: 2013.2185464285715 +2025-03-10 16:20:40,989 - INFO - CLOSED short at 2043.59 | PnL: 0.02% | $-0.17 +2025-03-10 16:20:41,020 - INFO - OPENED SHORT at 2042.0 | Stop loss: 2052.258135714286 | Take profit: 2011.2977964285712 +2025-03-10 16:20:41,092 - INFO - CLOSED short at 2010.35 | PnL: 1.55% | $2.95 +2025-03-10 16:20:41,116 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6658357142858 | Take profit: 1985.2346964285714 +2025-03-10 16:20:41,156 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.22, Avg Loss=$-0.53 +2025-03-10 16:20:41,157 - INFO - Episode 25: Reward=6.13, Balance=$106.96, Win Rate=70.0%, Trades=10, Episode PnL=$6.90, Total PnL=$738.80, Max Drawdown=1.2%, Pred Accuracy=97.5% +2025-03-10 16:20:41,311 - INFO - Model saved to models/trading_agent_best_winrate.pt +2025-03-10 16:20:41,311 - INFO - New best win rate model saved: 70.0% +2025-03-10 16:20:41,312 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:20:41,312 - INFO - Refreshing data for episode 26 +2025-03-10 16:20:41,312 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:20:41,624 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:20:41,633 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:41,818 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1507357142855 | Take profit: 2084.6999964285715 +2025-03-10 16:20:41,999 - INFO - STOP LOSS hit for short at 2127.1507357142855 | PnL: -0.50% | $-1.18 +2025-03-10 16:20:42,045 - INFO - OPENED SHORT at 2120.26 | Stop loss: 2130.9094357142862 | Take profit: 2088.3838964285715 +2025-03-10 16:20:42,140 - INFO - CLOSED short at 2114.75 | PnL: 0.26% | $0.31 +2025-03-10 16:20:42,182 - INFO - OPENED SHORT at 2116.06 | Stop loss: 2126.688435714286 | Take profit: 2084.2468964285713 +2025-03-10 16:20:42,570 - INFO - CLOSED short at 2096.36 | PnL: 0.93% | $1.61 +2025-03-10 16:20:42,571 - INFO - OPENED LONG at 2096.36 | Stop loss: 2085.8300642857143 | Take profit: 2127.877603571429 +2025-03-10 16:20:42,609 - INFO - CLOSED long at 2089.04 | PnL: -0.35% | $-0.88 +2025-03-10 16:20:42,610 - INFO - OPENED SHORT at 2089.04 | Stop loss: 2099.533335714286 | Take profit: 2057.6321964285717 +2025-03-10 16:20:42,728 - INFO - STOP LOSS hit for short at 2099.533335714286 | PnL: -0.50% | $-1.18 +2025-03-10 16:20:42,751 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3922857142857 | Take profit: 2071.215346428571 +2025-03-10 16:20:43,423 - INFO - TAKE PROFIT hit for short at 2071.215346428571 | PnL: 1.50% | $2.71 +2025-03-10 16:20:43,447 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5896357142856 | Take profit: 2017.5032964285715 +2025-03-10 16:20:43,848 - INFO - TAKE PROFIT hit for short at 2017.5032964285715 | PnL: 1.50% | $2.78 +2025-03-10 16:20:43,868 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6658357142858 | Take profit: 1985.2346964285714 +2025-03-10 16:20:43,888 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 60.0% in downtrends | Avg Win=$1.85, Avg Loss=$-1.08 +2025-03-10 16:20:43,889 - INFO - Episode 26: Reward=1.27, Balance=$104.17, Win Rate=57.1%, Trades=7, Episode PnL=$5.05, Total PnL=$742.97, Max Drawdown=1.3%, Pred Accuracy=97.6% +2025-03-10 16:20:43,889 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:20:43,890 - INFO - Refreshing data for episode 27 +2025-03-10 16:20:43,890 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:20:44,205 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:20:44,214 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:44,334 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1507357142855 | Take profit: 2084.6999964285715 +2025-03-10 16:20:44,532 - INFO - CLOSED short at 2120.96 | PnL: -0.21% | $-0.61 +2025-03-10 16:20:44,563 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.5726357142858 | Take profit: 2092.9542964285715 +2025-03-10 16:20:44,706 - INFO - CLOSED short at 2114.75 | PnL: 0.48% | $0.73 +2025-03-10 16:20:44,707 - INFO - OPENED LONG at 2114.75 | Stop loss: 2104.128114285714 | Take profit: 2146.5434535714285 +2025-03-10 16:20:44,728 - INFO - CLOSED long at 2116.06 | PnL: 0.06% | $-0.07 +2025-03-10 16:20:44,728 - INFO - OPENED SHORT at 2116.06 | Stop loss: 2126.688435714286 | Take profit: 2084.2468964285713 +2025-03-10 16:20:44,772 - INFO - CLOSED short at 2115.21 | PnL: 0.04% | $-0.12 +2025-03-10 16:20:44,811 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.7186357142855 | Take profit: 2082.316296428571 +2025-03-10 16:20:45,340 - INFO - CLOSED short at 2103.41 | PnL: 0.51% | $0.79 +2025-03-10 16:20:45,365 - INFO - OPENED SHORT at 2104.22 | Stop loss: 2114.7892357142855 | Take profit: 2072.584496428571 +2025-03-10 16:20:45,439 - INFO - CLOSED short at 2099.63 | PnL: 0.22% | $0.23 +2025-03-10 16:20:45,463 - INFO - OPENED SHORT at 2099.22 | Stop loss: 2109.764235714286 | Take profit: 2067.659496428571 +2025-03-10 16:20:45,508 - INFO - CLOSED short at 2096.96 | PnL: 0.11% | $0.02 +2025-03-10 16:20:45,508 - INFO - OPENED LONG at 2096.96 | Stop loss: 2086.427064285714 | Take profit: 2128.4866035714285 +2025-03-10 16:20:45,532 - INFO - CLOSED long at 2098.66 | PnL: 0.08% | $-0.04 +2025-03-10 16:20:45,532 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.2014357142857 | Take profit: 2067.107896428571 +2025-03-10 16:20:45,788 - INFO - CLOSED short at 2085.37 | PnL: 0.63% | $1.05 +2025-03-10 16:20:45,788 - INFO - OPENED LONG at 2085.37 | Stop loss: 2074.8950142857143 | Take profit: 2116.7227535714287 +2025-03-10 16:20:45,811 - INFO - CLOSED long at 2084.11 | PnL: -0.06% | $-0.32 +2025-03-10 16:20:45,812 - INFO - OPENED SHORT at 2084.11 | Stop loss: 2094.5786857142857 | Take profit: 2052.7761464285713 +2025-03-10 16:20:45,903 - INFO - TAKE PROFIT hit for short at 2052.7761464285713 | PnL: 1.50% | $2.79 +2025-03-10 16:20:45,926 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.303135714286 | Take profit: 2020.1627964285715 +2025-03-10 16:20:46,233 - INFO - CLOSED short at 2043.59 | PnL: 0.36% | $0.53 +2025-03-10 16:20:46,259 - INFO - OPENED SHORT at 2042.0 | Stop loss: 2052.258135714286 | Take profit: 2011.2977964285712 +2025-03-10 16:20:46,349 - INFO - TAKE PROFIT hit for short at 2011.2977964285712 | PnL: 1.50% | $2.88 +2025-03-10 16:20:46,418 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.13, Avg Loss=$-0.23 +2025-03-10 16:20:46,419 - INFO - Episode 27: Reward=0.27, Balance=$107.87, Win Rate=61.5%, Trades=13, Episode PnL=$8.31, Total PnL=$750.85, Max Drawdown=0.6%, Pred Accuracy=97.5% +2025-03-10 16:20:46,419 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:20:46,420 - INFO - Refreshing data for episode 28 +2025-03-10 16:20:46,420 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:20:46,738 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:20:46,749 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:46,962 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1507357142855 | Take profit: 2084.6999964285715 +2025-03-10 16:20:47,065 - INFO - STOP LOSS hit for short at 2127.1507357142855 | PnL: -0.50% | $-1.18 +2025-03-10 16:20:47,086 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4419857142857 | Take profit: 2092.8262464285713 +2025-03-10 16:20:47,672 - INFO - TAKE PROFIT hit for short at 2092.8262464285713 | PnL: 1.50% | $2.71 +2025-03-10 16:20:47,703 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5983857142855 | Take profit: 2068.4770464285716 +2025-03-10 16:20:48,112 - INFO - CLOSED short at 2098.66 | PnL: 0.07% | $-0.07 +2025-03-10 16:20:48,112 - INFO - OPENED LONG at 2098.66 | Stop loss: 2088.118564285714 | Take profit: 2130.2121035714285 +2025-03-10 16:20:48,159 - INFO - CLOSED long at 2090.59 | PnL: -0.38% | $-0.96 +2025-03-10 16:20:48,160 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.0910857142862 | Take profit: 2059.1589464285717 +2025-03-10 16:20:48,481 - INFO - TAKE PROFIT hit for short at 2059.1589464285717 | PnL: 1.50% | $2.76 +2025-03-10 16:20:48,503 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.303135714286 | Take profit: 2020.1627964285715 +2025-03-10 16:20:48,869 - INFO - TAKE PROFIT hit for short at 2020.1627964285715 | PnL: 1.50% | $2.83 +2025-03-10 16:20:48,890 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6658357142858 | Take profit: 1985.2346964285714 +2025-03-10 16:20:48,909 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 60.0% in downtrends | Avg Win=$2.77, Avg Loss=$-0.74 +2025-03-10 16:20:48,910 - INFO - Episode 28: Reward=-3.12, Balance=$106.10, Win Rate=50.0%, Trades=6, Episode PnL=$7.06, Total PnL=$756.94, Max Drawdown=1.2%, Pred Accuracy=97.6% +2025-03-10 16:20:48,911 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:20:48,911 - INFO - Refreshing data for episode 29 +2025-03-10 16:20:48,911 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:20:49,218 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:20:49,229 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:49,402 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1507357142855 | Take profit: 2084.6999964285715 +2025-03-10 16:20:49,571 - INFO - STOP LOSS hit for short at 2127.1507357142855 | PnL: -0.50% | $-1.18 +2025-03-10 16:20:49,599 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4419857142857 | Take profit: 2092.8262464285713 +2025-03-10 16:20:49,839 - INFO - CLOSED short at 2114.32 | PnL: 0.49% | $0.76 +2025-03-10 16:20:49,865 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.190985714286 | Take profit: 2082.7792464285717 +2025-03-10 16:20:50,069 - INFO - CLOSED short at 2096.36 | PnL: 0.86% | $1.48 +2025-03-10 16:20:50,093 - INFO - OPENED SHORT at 2089.04 | Stop loss: 2099.533335714286 | Take profit: 2057.6321964285717 +2025-03-10 16:20:50,115 - INFO - CLOSED short at 2089.84 | PnL: -0.04% | $-0.27 +2025-03-10 16:20:50,141 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.719085714286 | Take profit: 2064.6749464285713 +2025-03-10 16:20:50,351 - INFO - CLOSED short at 2096.96 | PnL: -0.04% | $-0.27 +2025-03-10 16:20:50,396 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.0910857142862 | Take profit: 2059.1589464285717 +2025-03-10 16:20:50,484 - INFO - CLOSED short at 2084.75 | PnL: 0.28% | $0.35 +2025-03-10 16:20:50,507 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.4531357142855 | Take profit: 2049.7127964285714 +2025-03-10 16:20:50,663 - INFO - TAKE PROFIT hit for short at 2049.7127964285714 | PnL: 1.50% | $2.77 +2025-03-10 16:20:50,688 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.303135714286 | Take profit: 2020.1627964285715 +2025-03-10 16:20:50,961 - INFO - CLOSED short at 2036.71 | PnL: 0.70% | $1.21 +2025-03-10 16:20:50,987 - INFO - OPENED SHORT at 2027.51 | Stop loss: 2037.6956857142857 | Take profit: 1997.0251464285714 +2025-03-10 16:20:51,066 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.31, Avg Loss=$-0.57 +2025-03-10 16:20:51,067 - INFO - Episode 29: Reward=3.24, Balance=$104.85, Win Rate=62.5%, Trades=8, Episode PnL=$4.85, Total PnL=$761.79, Max Drawdown=1.2%, Pred Accuracy=97.6% +2025-03-10 16:20:51,067 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:20:51,068 - INFO - Refreshing data for episode 30 +2025-03-10 16:20:51,068 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:20:51,384 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:20:51,393 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:52,143 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1507357142855 | Take profit: 2084.6999964285715 +2025-03-10 16:20:52,237 - INFO - STOP LOSS hit for short at 2127.1507357142855 | PnL: -0.50% | $-1.18 +2025-03-10 16:20:52,261 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4419857142857 | Take profit: 2092.8262464285713 +2025-03-10 16:20:52,645 - INFO - TAKE PROFIT hit for short at 2092.8262464285713 | PnL: 1.50% | $2.71 +2025-03-10 16:20:52,680 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5983857142855 | Take profit: 2068.4770464285716 +2025-03-10 16:20:52,817 - INFO - CLOSED short at 2096.19 | PnL: 0.18% | $0.17 +2025-03-10 16:20:52,857 - INFO - OPENED SHORT at 2100.0 | Stop loss: 2110.5481357142858 | Take profit: 2068.4277964285716 +2025-03-10 16:20:53,276 - INFO - CLOSED short at 2084.75 | PnL: 0.73% | $1.25 +2025-03-10 16:20:53,321 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.4531357142855 | Take profit: 2049.7127964285714 +2025-03-10 16:20:53,485 - INFO - TAKE PROFIT hit for short at 2049.7127964285714 | PnL: 1.50% | $2.82 +2025-03-10 16:20:53,508 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.303135714286 | Take profit: 2020.1627964285715 +2025-03-10 16:20:53,685 - INFO - CLOSED short at 2054.03 | PnL: -0.15% | $-0.51 +2025-03-10 16:20:53,731 - INFO - OPENED SHORT at 2050.18 | Stop loss: 2060.479035714285 | Take profit: 2019.3550964285712 +2025-03-10 16:20:53,895 - INFO - TAKE PROFIT hit for short at 2019.3550964285712 | PnL: 1.50% | $2.89 +2025-03-10 16:20:53,918 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6658357142858 | Take profit: 1985.2346964285714 +2025-03-10 16:20:53,955 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$1.97, Avg Loss=$-0.84 +2025-03-10 16:20:53,956 - INFO - Episode 30: Reward=1.50, Balance=$108.15, Win Rate=71.4%, Trades=7, Episode PnL=$8.15, Total PnL=$769.94, Max Drawdown=1.2%, Pred Accuracy=97.7% +2025-03-10 16:20:54,121 - INFO - Model saved to checkpoints/trading_agent_episode_30.pt +2025-03-10 16:20:54,122 - INFO - Checkpoint saved at episode 30 +2025-03-10 16:20:54,122 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:20:55,192 - INFO - Visualization saved for episode 30 +2025-03-10 16:20:57,456 - INFO - Visualization saved for episode 30 +2025-03-10 16:20:57,473 - INFO - Refreshing data for episode 31 +2025-03-10 16:20:57,473 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:20:57,782 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:20:57,793 - INFO - Initialized environment with 100 candles +2025-03-10 16:20:58,131 - INFO - OPENED LONG at 2116.52 | Stop loss: 2105.8890714285712 | Take profit: 2148.340292857143 +2025-03-10 16:20:58,157 - INFO - CLOSED long at 2119.02 | PnL: 0.12% | $0.04 +2025-03-10 16:20:58,158 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6634285714285 | Take profit: 2087.1622071428574 +2025-03-10 16:20:58,750 - INFO - CLOSED short at 2098.28 | PnL: 0.98% | $1.72 +2025-03-10 16:20:58,797 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.8651285714286 | Take profit: 2059.9171071428573 +2025-03-10 16:20:58,995 - INFO - STOP LOSS hit for short at 2101.8651285714286 | PnL: -0.50% | $-1.20 +2025-03-10 16:20:59,019 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9753785714283 | Take profit: 2071.786357142857 +2025-03-10 16:20:59,467 - INFO - CLOSED short at 2084.11 | PnL: 0.92% | $1.61 +2025-03-10 16:20:59,491 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.533678571429 | Take profit: 2051.7514571428574 +2025-03-10 16:20:59,597 - INFO - TAKE PROFIT hit for short at 2051.7514571428574 | PnL: 1.50% | $2.80 +2025-03-10 16:20:59,636 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.303328571428 | Take profit: 2020.162507142857 +2025-03-10 16:20:59,736 - INFO - CLOSED short at 2053.22 | PnL: -0.11% | $-0.43 +2025-03-10 16:20:59,759 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.448878571429 | Take profit: 2027.1658571428572 +2025-03-10 16:20:59,927 - INFO - CLOSED short at 2042.0 | PnL: 0.78% | $1.39 +2025-03-10 16:20:59,968 - INFO - OPENED SHORT at 2036.71 | Stop loss: 2046.9418785714288 | Take profit: 2006.0868571428573 +2025-03-10 16:21:00,124 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.51, Avg Loss=$-0.81 +2025-03-10 16:21:00,125 - INFO - Episode 31: Reward=4.80, Balance=$105.93, Win Rate=71.4%, Trades=7, Episode PnL=$5.90, Total PnL=$775.87, Max Drawdown=1.2%, Pred Accuracy=97.7% +2025-03-10 16:21:00,125 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:21:00,126 - INFO - Refreshing data for episode 32 +2025-03-10 16:21:00,126 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:21:00,449 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:21:00,458 - INFO - Initialized environment with 100 candles +2025-03-10 16:21:00,492 - INFO - OPENED SHORT at 2116.52 | Stop loss: 2127.1513428571425 | Take profit: 2084.6990857142855 +2025-03-10 16:21:00,543 - INFO - CLOSED short at 2120.96 | PnL: -0.21% | $-0.61 +2025-03-10 16:21:00,567 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.573242857143 | Take profit: 2092.953385714286 +2025-03-10 16:21:00,726 - INFO - CLOSED short at 2114.75 | PnL: 0.48% | $0.73 +2025-03-10 16:21:00,756 - INFO - OPENED SHORT at 2116.06 | Stop loss: 2126.689042857143 | Take profit: 2084.245985714286 +2025-03-10 16:21:00,895 - INFO - CLOSED short at 2114.32 | PnL: 0.08% | $-0.03 +2025-03-10 16:21:00,895 - INFO - OPENED LONG at 2114.32 | Stop loss: 2103.699657142857 | Take profit: 2146.1079142857143 +2025-03-10 16:21:00,929 - INFO - CLOSED long at 2114.57 | PnL: 0.01% | $-0.17 +2025-03-10 16:21:00,929 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.191592857143 | Take profit: 2082.7783357142857 +2025-03-10 16:21:01,039 - INFO - CLOSED short at 2098.24 | PnL: 0.77% | $1.31 +2025-03-10 16:21:01,064 - INFO - OPENED SHORT at 2098.28 | Stop loss: 2108.8201428571433 | Take profit: 2066.7326857142857 +2025-03-10 16:21:01,857 - INFO - TAKE PROFIT hit for short at 2066.7326857142857 | PnL: 1.50% | $2.78 +2025-03-10 16:21:01,880 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.303742857143 | Take profit: 2020.1618857142857 +2025-03-10 16:21:02,012 - INFO - CLOSED short at 2058.11 | PnL: -0.35% | $-0.91 +2025-03-10 16:21:02,012 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.7707071428574 | Take profit: 2089.0547642857146 +2025-03-10 16:21:02,075 - INFO - CLOSED long at 2054.03 | PnL: -0.20% | $-0.60 +2025-03-10 16:21:02,075 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.3488928571433 | Take profit: 2023.146435714286 +2025-03-10 16:21:02,311 - INFO - CLOSED short at 2010.35 | PnL: 2.13% | $4.06 +2025-03-10 16:21:02,342 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6664428571428 | Take profit: 1985.2337857142857 +2025-03-10 16:21:02,391 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 33.3% in downtrends | Avg Win=$2.22, Avg Loss=$-0.46 +2025-03-10 16:21:02,391 - INFO - Episode 32: Reward=-2.09, Balance=$106.56, Win Rate=44.4%, Trades=9, Episode PnL=$7.33, Total PnL=$782.43, Max Drawdown=0.6%, Pred Accuracy=97.6% +2025-03-10 16:21:02,391 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:21:02,392 - INFO - Refreshing data for episode 33 +2025-03-10 16:21:02,392 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:21:02,710 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:21:02,721 - INFO - Initialized environment with 100 candles +2025-03-10 16:21:02,851 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6622035714286 | Take profit: 2087.1640446428573 +2025-03-10 16:21:03,014 - INFO - CLOSED short at 2116.81 | PnL: 0.10% | $0.01 +2025-03-10 16:21:03,038 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.401003571429 | Take profit: 2082.987644642857 +2025-03-10 16:21:04,061 - INFO - TAKE PROFIT hit for short at 2082.987644642857 | PnL: 1.50% | $2.75 +2025-03-10 16:21:04,093 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2208535714285 | Take profit: 2053.408094642857 +2025-03-10 16:21:04,385 - INFO - TAKE PROFIT hit for short at 2053.408094642857 | PnL: 1.50% | $2.82 +2025-03-10 16:21:04,413 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3021035714287 | Take profit: 2020.164344642857 +2025-03-10 16:21:04,835 - INFO - TAKE PROFIT hit for short at 2020.164344642857 | PnL: 1.50% | $2.90 +2025-03-10 16:21:04,866 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6648035714284 | Take profit: 1985.236244642857 +2025-03-10 16:21:04,915 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.12, Avg Loss=$0.00 +2025-03-10 16:21:04,917 - INFO - Episode 33: Reward=1.31, Balance=$108.47, Win Rate=100.0%, Trades=4, Episode PnL=$8.47, Total PnL=$790.90, Max Drawdown=0.0%, Pred Accuracy=97.6% +2025-03-10 16:21:04,917 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:21:04,917 - INFO - Refreshing data for episode 34 +2025-03-10 16:21:04,918 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:21:05,249 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:21:05,264 - INFO - Initialized environment with 100 candles +2025-03-10 16:21:05,402 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6631392857144 | Take profit: 2087.162641071429 +2025-03-10 16:21:05,771 - INFO - CLOSED short at 2115.21 | PnL: 0.18% | $0.16 +2025-03-10 16:21:05,815 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.718539285714 | Take profit: 2082.3164410714285 +2025-03-10 16:21:06,211 - INFO - CLOSED short at 2096.36 | PnL: 0.84% | $1.45 +2025-03-10 16:21:06,266 - INFO - OPENED SHORT at 2089.04 | Stop loss: 2099.5332392857144 | Take profit: 2057.6323410714285 +2025-03-10 16:21:06,375 - INFO - STOP LOSS hit for short at 2099.5332392857144 | PnL: -0.50% | $-1.20 +2025-03-10 16:21:06,401 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3921892857143 | Take profit: 2071.2154910714285 +2025-03-10 16:21:06,666 - INFO - CLOSED short at 2096.96 | PnL: 0.28% | $0.35 +2025-03-10 16:21:06,717 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.201339285714 | Take profit: 2067.1080410714285 +2025-03-10 16:21:07,076 - INFO - CLOSED short at 2067.71 | PnL: 1.47% | $2.71 +2025-03-10 16:21:07,077 - INFO - OPENED LONG at 2067.71 | Stop loss: 2057.3234107142857 | Take profit: 2098.7977089285714 +2025-03-10 16:21:07,132 - INFO - CLOSED long at 2048.3 | PnL: -0.94% | $-2.10 +2025-03-10 16:21:07,132 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5895392857146 | Take profit: 2017.5034410714288 +2025-03-10 16:21:07,610 - INFO - TAKE PROFIT hit for short at 2017.5034410714288 | PnL: 1.50% | $2.78 +2025-03-10 16:21:07,632 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6657392857142 | Take profit: 1985.2348410714285 +2025-03-10 16:21:07,680 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.49, Avg Loss=$-1.65 +2025-03-10 16:21:07,681 - INFO - Episode 34: Reward=3.61, Balance=$104.15, Win Rate=71.4%, Trades=7, Episode PnL=$6.25, Total PnL=$795.05, Max Drawdown=1.2%, Pred Accuracy=97.7% +2025-03-10 16:21:07,681 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:21:07,682 - INFO - Refreshing data for episode 35 +2025-03-10 16:21:07,682 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:21:08,005 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:21:08,021 - INFO - Initialized environment with 100 candles +2025-03-10 16:21:09,108 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6632964285714 | Take profit: 2087.1624053571427 +2025-03-10 16:21:09,357 - INFO - CLOSED short at 2116.06 | PnL: 0.14% | $0.08 +2025-03-10 16:21:09,357 - INFO - OPENED LONG at 2116.06 | Stop loss: 2105.4315035714285 | Take profit: 2147.873194642857 +2025-03-10 16:21:09,408 - INFO - CLOSED long at 2115.21 | PnL: -0.04% | $-0.27 +2025-03-10 16:21:09,409 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.8342464285715 | Take profit: 2083.409555357143 +2025-03-10 16:21:09,612 - INFO - CLOSED short at 2114.5 | PnL: 0.03% | $-0.13 +2025-03-10 16:21:09,612 - INFO - OPENED LONG at 2114.5 | Stop loss: 2103.879303571429 | Take profit: 2146.289794642857 +2025-03-10 16:21:09,645 - INFO - CLOSED long at 2115.07 | PnL: 0.03% | $-0.14 +2025-03-10 16:21:09,647 - INFO - OPENED SHORT at 2115.07 | Stop loss: 2125.6935464285716 | Take profit: 2083.271655357143 +2025-03-10 16:21:10,119 - INFO - CLOSED short at 2099.22 | PnL: 0.75% | $1.26 +2025-03-10 16:21:10,121 - INFO - OPENED LONG at 2099.22 | Stop loss: 2088.6757035714286 | Take profit: 2130.780594642857 +2025-03-10 16:21:10,177 - INFO - CLOSED long at 2094.16 | PnL: -0.24% | $-0.67 +2025-03-10 16:21:10,178 - INFO - OPENED SHORT at 2094.16 | Stop loss: 2104.6789964285713 | Take profit: 2062.675305357143 +2025-03-10 16:21:10,700 - INFO - TAKE PROFIT hit for short at 2062.675305357143 | PnL: 1.50% | $2.75 +2025-03-10 16:21:10,731 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3031964285715 | Take profit: 2020.1627053571428 +2025-03-10 16:21:10,889 - INFO - CLOSED short at 2050.18 | PnL: 0.04% | $-0.12 +2025-03-10 16:21:10,916 - INFO - OPENED SHORT at 2046.76 | Stop loss: 2057.0419964285716 | Take profit: 2015.986305357143 +2025-03-10 16:21:11,168 - INFO - TAKE PROFIT hit for short at 2015.986305357143 | PnL: 1.50% | $2.82 +2025-03-10 16:21:11,197 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6658964285714 | Take profit: 1985.2346053571428 +2025-03-10 16:21:11,253 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 80.0% in downtrends | Avg Win=$1.73, Avg Loss=$-0.27 +2025-03-10 16:21:11,255 - INFO - Episode 35: Reward=-4.57, Balance=$105.57, Win Rate=44.4%, Trades=9, Episode PnL=$6.66, Total PnL=$800.62, Max Drawdown=0.1%, Pred Accuracy=97.7% +2025-03-10 16:21:11,256 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:21:11,256 - INFO - Refreshing data for episode 36 +2025-03-10 16:21:11,257 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:21:11,633 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:21:11,644 - INFO - Initialized environment with 100 candles +2025-03-10 16:21:11,682 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6632964285714 | Take profit: 2087.1624053571427 +2025-03-10 16:21:12,950 - INFO - TAKE PROFIT hit for short at 2087.1624053571427 | PnL: 1.50% | $2.74 +2025-03-10 16:21:12,979 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0310964285713 | Take profit: 2049.2990053571425 +2025-03-10 16:21:13,262 - INFO - TAKE PROFIT hit for short at 2049.2990053571425 | PnL: 1.50% | $2.82 +2025-03-10 16:21:13,309 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3031964285715 | Take profit: 2020.1627053571428 +2025-03-10 16:21:13,716 - INFO - TAKE PROFIT hit for short at 2020.1627053571428 | PnL: 1.50% | $2.90 +2025-03-10 16:21:13,745 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6658964285714 | Take profit: 1985.2346053571428 +2025-03-10 16:21:13,795 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.82, Avg Loss=$0.00 +2025-03-10 16:21:13,796 - INFO - Episode 36: Reward=0.37, Balance=$108.46, Win Rate=100.0%, Trades=3, Episode PnL=$8.46, Total PnL=$809.07, Max Drawdown=0.0%, Pred Accuracy=97.8% +2025-03-10 16:21:13,796 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:21:13,796 - INFO - Refreshing data for episode 37 +2025-03-10 16:21:13,797 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:21:14,141 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:21:14,152 - INFO - Initialized environment with 100 candles +2025-03-10 16:21:14,209 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6129964285715 | Take profit: 2089.073305357143 +2025-03-10 16:21:14,863 - INFO - TAKE PROFIT hit for short at 2089.073305357143 | PnL: 1.50% | $2.74 +2025-03-10 16:21:14,890 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3373964285715 | Take profit: 2058.420105357143 +2025-03-10 16:21:15,001 - INFO - STOP LOSS hit for short at 2100.3373964285715 | PnL: -0.50% | $-1.21 +2025-03-10 16:21:15,050 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.975246428571 | Take profit: 2071.786555357143 +2025-03-10 16:21:15,345 - INFO - CLOSED short at 2090.99 | PnL: 0.59% | $0.97 +2025-03-10 16:21:15,387 - INFO - OPENED SHORT at 2084.95 | Stop loss: 2095.422946428571 | Take profit: 2053.6034553571426 +2025-03-10 16:21:15,676 - INFO - TAKE PROFIT hit for short at 2053.6034553571426 | PnL: 1.50% | $2.81 +2025-03-10 16:21:15,702 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3031964285715 | Take profit: 2020.1627053571428 +2025-03-10 16:21:16,169 - INFO - TAKE PROFIT hit for short at 2020.1627053571428 | PnL: 1.50% | $2.89 +2025-03-10 16:21:16,220 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6658964285714 | Take profit: 1985.2346053571428 +2025-03-10 16:21:16,317 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.35, Avg Loss=$-1.21 +2025-03-10 16:21:16,317 - INFO - Episode 37: Reward=1.78, Balance=$108.21, Win Rate=80.0%, Trades=5, Episode PnL=$8.21, Total PnL=$817.28, Max Drawdown=1.2%, Pred Accuracy=97.8% +2025-03-10 16:21:16,319 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:21:16,319 - INFO - Refreshing data for episode 38 +2025-03-10 16:21:16,319 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:21:16,647 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:21:16,664 - INFO - Initialized environment with 100 candles +2025-03-10 16:21:16,704 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6632964285714 | Take profit: 2087.1624053571427 +2025-03-10 16:21:16,902 - INFO - CLOSED short at 2114.78 | PnL: 0.20% | $0.20 +2025-03-10 16:21:16,902 - INFO - OPENED LONG at 2114.78 | Stop loss: 2104.1579035714285 | Take profit: 2146.573994642857 +2025-03-10 16:21:16,932 - INFO - CLOSED long at 2115.52 | PnL: 0.03% | $-0.13 +2025-03-10 16:21:16,933 - INFO - OPENED SHORT at 2115.52 | Stop loss: 2126.1457964285714 | Take profit: 2083.714905357143 +2025-03-10 16:21:17,100 - INFO - CLOSED short at 2114.32 | PnL: 0.06% | $-0.08 +2025-03-10 16:21:17,130 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.1910464285716 | Take profit: 2082.7791553571433 +2025-03-10 16:21:17,900 - INFO - TAKE PROFIT hit for short at 2082.7791553571433 | PnL: 1.50% | $2.74 +2025-03-10 16:21:17,948 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.4531964285716 | Take profit: 2049.7127053571426 +2025-03-10 16:21:18,142 - INFO - TAKE PROFIT hit for short at 2049.7127053571426 | PnL: 1.50% | $2.82 +2025-03-10 16:21:18,182 - INFO - OPENED LONG at 2051.0 | Stop loss: 2040.6968035714285 | Take profit: 2081.837294642857 +2025-03-10 16:21:18,234 - INFO - CLOSED long at 2043.51 | PnL: -0.37% | $-0.96 +2025-03-10 16:21:18,234 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.775746428571 | Take profit: 2012.7850553571427 +2025-03-10 16:21:18,359 - INFO - STOP LOSS hit for short at 2053.775746428571 | PnL: -0.50% | $-1.23 +2025-03-10 16:21:18,388 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.348346428572 | Take profit: 2023.1472553571432 +2025-03-10 16:21:18,417 - INFO - CLOSED short at 2050.18 | PnL: 0.19% | $0.18 +2025-03-10 16:21:18,442 - INFO - OPENED SHORT at 2046.76 | Stop loss: 2057.0419964285716 | Take profit: 2015.986305357143 +2025-03-10 16:21:18,726 - INFO - TAKE PROFIT hit for short at 2015.986305357143 | PnL: 1.50% | $2.84 +2025-03-10 16:21:18,757 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6658964285714 | Take profit: 1985.2346053571428 +2025-03-10 16:21:18,808 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 80.0% in downtrends | Avg Win=$1.75, Avg Loss=$-0.60 +2025-03-10 16:21:18,809 - INFO - Episode 38: Reward=-2.81, Balance=$106.37, Win Rate=55.6%, Trades=9, Episode PnL=$7.46, Total PnL=$823.66, Max Drawdown=2.1%, Pred Accuracy=97.9% +2025-03-10 16:21:18,810 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:21:18,810 - INFO - Refreshing data for episode 39 +2025-03-10 16:21:18,810 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:21:19,114 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:21:19,127 - INFO - Initialized environment with 100 candles +2025-03-10 16:21:19,163 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6641964285714 | Take profit: 2087.1610553571427 +2025-03-10 16:21:20,026 - INFO - CLOSED short at 2089.04 | PnL: 1.41% | $2.57 +2025-03-10 16:21:20,133 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.7200464285715 | Take profit: 2064.673505357143 +2025-03-10 16:21:20,938 - INFO - TAKE PROFIT hit for short at 2064.673505357143 | PnL: 1.50% | $2.81 +2025-03-10 16:21:20,967 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.304096428571 | Take profit: 2020.1613553571428 +2025-03-10 16:21:20,991 - INFO - CLOSED short at 2043.51 | PnL: 0.37% | $0.55 +2025-03-10 16:21:20,991 - INFO - OPENED LONG at 2043.51 | Stop loss: 2033.2433535714285 | Take profit: 2074.236294642857 +2025-03-10 16:21:21,023 - INFO - CLOSED long at 2052.89 | PnL: 0.46% | $0.74 +2025-03-10 16:21:21,024 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.2035464285714 | Take profit: 2022.0230053571427 +2025-03-10 16:21:21,416 - INFO - TAKE PROFIT hit for short at 2022.0230053571427 | PnL: 1.50% | $2.92 +2025-03-10 16:21:21,472 - INFO - OPENED SHORT at 2014.41 | Stop loss: 2024.5311464285714 | Take profit: 1984.1202053571428 +2025-03-10 16:21:21,493 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.92, Avg Loss=$0.00 +2025-03-10 16:21:21,494 - INFO - Episode 39: Reward=4.63, Balance=$109.60, Win Rate=100.0%, Trades=5, Episode PnL=$8.85, Total PnL=$833.25, Max Drawdown=0.0%, Pred Accuracy=98.0% +2025-03-10 16:21:21,494 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:21:21,494 - INFO - Refreshing data for episode 40 +2025-03-10 16:21:21,495 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:21:21,803 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:21:21,814 - INFO - Initialized environment with 100 candles +2025-03-10 16:21:22,856 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6643285714285 | Take profit: 2087.1608571428574 +2025-03-10 16:21:23,446 - INFO - CLOSED short at 2114.1 | PnL: 0.23% | $0.26 +2025-03-10 16:21:23,500 - INFO - OPENED SHORT at 2115.11 | Stop loss: 2125.7347785714287 | Take profit: 2083.309507142857 +2025-03-10 16:21:24,004 - INFO - CLOSED short at 2102.83 | PnL: 0.58% | $0.94 +2025-03-10 16:21:24,036 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9762785714283 | Take profit: 2071.785007142857 +2025-03-10 16:21:24,270 - INFO - CLOSED short at 2094.16 | PnL: 0.44% | $0.67 +2025-03-10 16:21:24,320 - INFO - OPENED SHORT at 2096.96 | Stop loss: 2107.4940285714288 | Take profit: 2065.4317571428574 +2025-03-10 16:21:24,733 - INFO - TAKE PROFIT hit for short at 2065.4317571428574 | PnL: 1.50% | $2.79 +2025-03-10 16:21:24,762 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3042285714287 | Take profit: 2020.161157142857 +2025-03-10 16:21:25,254 - INFO - TAKE PROFIT hit for short at 2020.161157142857 | PnL: 1.50% | $2.87 +2025-03-10 16:21:25,287 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6669285714283 | Take profit: 1985.2330571428572 +2025-03-10 16:21:25,363 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.51, Avg Loss=$0.00 +2025-03-10 16:21:25,364 - INFO - Episode 40: Reward=17.87, Balance=$107.54, Win Rate=100.0%, Trades=5, Episode PnL=$7.54, Total PnL=$840.79, Max Drawdown=0.0%, Pred Accuracy=98.1% +2025-03-10 16:21:25,527 - INFO - Model saved to checkpoints/trading_agent_episode_40.pt +2025-03-10 16:21:25,528 - INFO - Checkpoint saved at episode 40 +2025-03-10 16:21:25,529 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:21:26,719 - INFO - Visualization saved for episode 40 +2025-03-10 16:21:29,045 - INFO - Visualization saved for episode 40 +2025-03-10 16:21:29,060 - INFO - Refreshing data for episode 41 +2025-03-10 16:21:29,060 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:21:29,408 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:21:29,418 - INFO - Initialized environment with 100 candles +2025-03-10 16:21:29,742 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.665457142857 | Take profit: 2087.1591642857143 +2025-03-10 16:21:30,735 - INFO - CLOSED short at 2094.16 | PnL: 1.17% | $2.10 +2025-03-10 16:21:30,765 - INFO - OPENED SHORT at 2096.96 | Stop loss: 2107.4951571428574 | Take profit: 2065.4300642857143 +2025-03-10 16:21:31,129 - INFO - TAKE PROFIT hit for short at 2065.4300642857143 | PnL: 1.50% | $2.80 +2025-03-10 16:21:31,156 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305357142857 | Take profit: 2020.1594642857142 +2025-03-10 16:21:31,214 - INFO - CLOSED short at 2052.89 | PnL: -0.09% | $-0.39 +2025-03-10 16:21:31,240 - INFO - OPENED SHORT at 2053.22 | Stop loss: 2063.536457142857 | Take profit: 2022.3461642857142 +2025-03-10 16:21:31,293 - INFO - CLOSED short at 2054.03 | PnL: -0.04% | $-0.28 +2025-03-10 16:21:31,318 - INFO - OPENED SHORT at 2050.18 | Stop loss: 2060.481257142857 | Take profit: 2019.3517642857141 +2025-03-10 16:21:31,407 - INFO - CLOSED short at 2044.1 | PnL: 0.30% | $0.40 +2025-03-10 16:21:31,440 - INFO - OPENED SHORT at 2043.59 | Stop loss: 2053.858307142857 | Take profit: 2012.8606142857143 +2025-03-10 16:21:31,528 - INFO - CLOSED short at 2027.51 | PnL: 0.79% | $1.40 +2025-03-10 16:21:31,553 - INFO - OPENED SHORT at 2010.35 | Stop loss: 2020.4521071428571 | Take profit: 1980.1192142857142 +2025-03-10 16:21:31,628 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.67, Avg Loss=$-0.34 +2025-03-10 16:21:31,630 - INFO - Episode 41: Reward=16.13, Balance=$106.02, Win Rate=66.7%, Trades=6, Episode PnL=$6.02, Total PnL=$846.81, Max Drawdown=0.6%, Pred Accuracy=98.2% +2025-03-10 16:21:31,630 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:21:31,631 - INFO - Refreshing data for episode 42 +2025-03-10 16:21:31,631 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:21:31,971 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:21:31,981 - INFO - Initialized environment with 100 candles +2025-03-10 16:21:32,017 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6655178571427 | Take profit: 2087.159073214286 +2025-03-10 16:21:32,669 - INFO - CLOSED short at 2096.19 | PnL: 1.08% | $1.91 +2025-03-10 16:21:32,695 - INFO - OPENED SHORT at 2100.0 | Stop loss: 2110.550417857143 | Take profit: 2068.424373214286 +2025-03-10 16:21:33,293 - INFO - TAKE PROFIT hit for short at 2068.424373214286 | PnL: 1.50% | $2.79 +2025-03-10 16:21:33,357 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305417857143 | Take profit: 2020.1593732142856 +2025-03-10 16:21:33,763 - INFO - TAKE PROFIT hit for short at 2020.1593732142856 | PnL: 1.50% | $2.87 +2025-03-10 16:21:33,815 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6681178571428 | Take profit: 1985.2312732142855 +2025-03-10 16:21:33,905 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.52, Avg Loss=$0.00 +2025-03-10 16:21:33,907 - INFO - Episode 42: Reward=15.92, Balance=$107.57, Win Rate=100.0%, Trades=3, Episode PnL=$7.57, Total PnL=$854.38, Max Drawdown=0.0%, Pred Accuracy=98.3% +2025-03-10 16:21:33,908 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:21:33,908 - INFO - Refreshing data for episode 43 +2025-03-10 16:21:33,908 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:21:34,251 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:21:34,263 - INFO - Initialized environment with 100 candles +2025-03-10 16:21:34,304 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6655178571427 | Take profit: 2087.159073214286 +2025-03-10 16:21:34,533 - INFO - CLOSED short at 2115.52 | PnL: 0.17% | $0.13 +2025-03-10 16:21:34,534 - INFO - OPENED LONG at 2115.52 | Stop loss: 2104.891982142857 | Take profit: 2147.3284267857143 +2025-03-10 16:21:34,563 - INFO - CLOSED long at 2114.75 | PnL: -0.04% | $-0.27 +2025-03-10 16:21:34,563 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.3741678571428 | Take profit: 2082.953123214286 +2025-03-10 16:21:34,987 - INFO - CLOSED short at 2096.36 | PnL: 0.87% | $1.50 +2025-03-10 16:21:35,035 - INFO - OPENED SHORT at 2089.04 | Stop loss: 2099.535617857143 | Take profit: 2057.628773214286 +2025-03-10 16:21:35,148 - INFO - STOP LOSS hit for short at 2099.535617857143 | PnL: -0.50% | $-1.19 +2025-03-10 16:21:35,177 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3945678571426 | Take profit: 2071.2119232142854 +2025-03-10 16:21:35,610 - INFO - CLOSED short at 2084.75 | PnL: 0.86% | $1.49 +2025-03-10 16:21:35,643 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.455417857143 | Take profit: 2049.7093732142857 +2025-03-10 16:21:35,912 - INFO - TAKE PROFIT hit for short at 2049.7093732142857 | PnL: 1.50% | $2.79 +2025-03-10 16:21:35,938 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305417857143 | Take profit: 2020.1593732142856 +2025-03-10 16:21:36,386 - INFO - TAKE PROFIT hit for short at 2020.1593732142856 | PnL: 1.50% | $2.86 +2025-03-10 16:21:36,414 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6681178571428 | Take profit: 1985.2312732142855 +2025-03-10 16:21:36,461 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$1.75, Avg Loss=$-0.73 +2025-03-10 16:21:36,462 - INFO - Episode 43: Reward=17.16, Balance=$107.30, Win Rate=71.4%, Trades=7, Episode PnL=$7.57, Total PnL=$861.68, Max Drawdown=1.2%, Pred Accuracy=98.4% +2025-03-10 16:21:36,463 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:21:36,463 - INFO - Refreshing data for episode 44 +2025-03-10 16:21:36,463 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:21:36,767 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:21:36,778 - INFO - Initialized environment with 100 candles +2025-03-10 16:21:36,942 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6655178571427 | Take profit: 2087.159073214286 +2025-03-10 16:21:37,570 - INFO - CLOSED short at 2113.28 | PnL: 0.27% | $0.33 +2025-03-10 16:21:37,596 - INFO - OPENED SHORT at 2114.5 | Stop loss: 2125.122917857143 | Take profit: 2082.7068732142857 +2025-03-10 16:21:37,619 - INFO - CLOSED short at 2115.07 | PnL: -0.03% | $-0.25 +2025-03-10 16:21:37,650 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.781617857143 | Take profit: 2066.6907732142854 +2025-03-10 16:21:38,690 - INFO - TAKE PROFIT hit for short at 2066.6907732142854 | PnL: 1.50% | $2.74 +2025-03-10 16:21:38,716 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305417857143 | Take profit: 2020.1593732142856 +2025-03-10 16:21:39,201 - INFO - TAKE PROFIT hit for short at 2020.1593732142856 | PnL: 1.50% | $2.82 +2025-03-10 16:21:39,252 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6681178571428 | Take profit: 1985.2312732142855 +2025-03-10 16:21:39,332 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.97, Avg Loss=$-0.25 +2025-03-10 16:21:39,332 - INFO - Episode 44: Reward=13.83, Balance=$105.65, Win Rate=75.0%, Trades=4, Episode PnL=$5.65, Total PnL=$867.33, Max Drawdown=0.2%, Pred Accuracy=98.5% +2025-03-10 16:21:39,332 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:21:39,334 - INFO - Refreshing data for episode 45 +2025-03-10 16:21:39,334 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:21:39,643 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:21:39,653 - INFO - Initialized environment with 100 candles +2025-03-10 16:21:40,539 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6655178571427 | Take profit: 2087.159073214286 +2025-03-10 16:21:41,164 - INFO - CLOSED short at 2100.05 | PnL: 0.90% | $1.55 +2025-03-10 16:21:41,194 - INFO - OPENED SHORT at 2096.36 | Stop loss: 2106.892217857143 | Take profit: 2064.838973214286 +2025-03-10 16:21:41,250 - INFO - CLOSED short at 2089.84 | PnL: 0.31% | $0.42 +2025-03-10 16:21:41,277 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.721367857143 | Take profit: 2064.6715232142856 +2025-03-10 16:21:41,789 - INFO - CLOSED short at 2084.75 | PnL: 0.55% | $0.89 +2025-03-10 16:21:41,825 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.455417857143 | Take profit: 2049.7093732142857 +2025-03-10 16:21:42,057 - INFO - TAKE PROFIT hit for short at 2049.7093732142857 | PnL: 1.50% | $2.82 +2025-03-10 16:21:42,083 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.305417857143 | Take profit: 2020.1593732142856 +2025-03-10 16:21:42,537 - INFO - TAKE PROFIT hit for short at 2020.1593732142856 | PnL: 1.50% | $2.90 +2025-03-10 16:21:42,588 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6681178571428 | Take profit: 1985.2312732142855 +2025-03-10 16:21:42,683 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.71, Avg Loss=$0.00 +2025-03-10 16:21:42,683 - INFO - Episode 45: Reward=18.51, Balance=$108.57, Win Rate=100.0%, Trades=5, Episode PnL=$8.57, Total PnL=$875.90, Max Drawdown=0.0%, Pred Accuracy=98.7% +2025-03-10 16:21:42,684 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:21:42,685 - INFO - Refreshing data for episode 46 +2025-03-10 16:21:42,685 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:21:42,994 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:21:43,004 - INFO - Initialized environment with 100 candles +2025-03-10 16:21:43,326 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6655178571427 | Take profit: 2087.159073214286 +2025-03-10 16:21:43,356 - INFO - CLOSED short at 2120.96 | PnL: -0.09% | $-0.37 +2025-03-10 16:21:43,388 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.574917857143 | Take profit: 2092.950873214286 +2025-03-10 16:21:44,107 - INFO - TAKE PROFIT hit for short at 2092.950873214286 | PnL: 1.50% | $2.73 +2025-03-10 16:21:44,155 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.6006678571434 | Take profit: 2068.473623214286 +2025-03-10 16:21:45,049 - INFO - TAKE PROFIT hit for short at 2068.473623214286 | PnL: 1.50% | $2.81 +2025-03-10 16:21:45,101 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.591917857143 | Take profit: 2017.4998732142858 +2025-03-10 16:21:45,577 - INFO - TAKE PROFIT hit for short at 2017.4998732142858 | PnL: 1.50% | $2.88 +2025-03-10 16:21:45,629 - INFO - OPENED SHORT at 2014.41 | Stop loss: 2024.5324678571428 | Take profit: 1984.118223214286 +2025-03-10 16:21:45,657 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.81, Avg Loss=$-0.37 +2025-03-10 16:21:45,657 - INFO - Episode 46: Reward=12.53, Balance=$108.05, Win Rate=75.0%, Trades=4, Episode PnL=$8.05, Total PnL=$883.95, Max Drawdown=0.4%, Pred Accuracy=98.7% +2025-03-10 16:21:45,658 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:21:45,658 - INFO - Refreshing data for episode 47 +2025-03-10 16:21:45,659 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:21:45,963 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:21:45,973 - INFO - Initialized environment with 100 candles +2025-03-10 16:21:46,273 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6655178571427 | Take profit: 2087.159073214286 +2025-03-10 16:21:46,604 - INFO - CLOSED short at 2115.21 | PnL: 0.18% | $0.16 +2025-03-10 16:21:46,654 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.720917857143 | Take profit: 2082.3128732142854 +2025-03-10 16:21:46,923 - INFO - CLOSED short at 2114.5 | PnL: -0.02% | $-0.23 +2025-03-10 16:21:46,950 - INFO - OPENED SHORT at 2115.07 | Stop loss: 2125.695767857143 | Take profit: 2083.268323214286 +2025-03-10 16:21:47,108 - INFO - CLOSED short at 2089.04 | PnL: 1.23% | $2.21 +2025-03-10 16:21:47,206 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.721367857143 | Take profit: 2064.6715232142856 +2025-03-10 16:21:47,372 - INFO - CLOSED short at 2104.67 | PnL: -0.40% | $-1.01 +2025-03-10 16:21:47,404 - INFO - OPENED SHORT at 2105.26 | Stop loss: 2115.836717857143 | Take profit: 2073.605473214286 +2025-03-10 16:21:47,925 - INFO - TAKE PROFIT hit for short at 2073.605473214286 | PnL: 1.50% | $2.77 +2025-03-10 16:21:47,977 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.591917857143 | Take profit: 2017.4998732142858 +2025-03-10 16:21:48,370 - INFO - CLOSED short at 2042.0 | PnL: 0.31% | $0.42 +2025-03-10 16:21:48,415 - INFO - OPENED SHORT at 2036.71 | Stop loss: 2046.943967857143 | Take profit: 2006.0837232142858 +2025-03-10 16:21:48,524 - INFO - CLOSED short at 2015.54 | PnL: 1.04% | $1.91 +2025-03-10 16:21:48,549 - INFO - OPENED SHORT at 2014.41 | Stop loss: 2024.5324678571428 | Take profit: 1984.118223214286 +2025-03-10 16:21:48,569 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.49, Avg Loss=$-0.62 +2025-03-10 16:21:48,571 - INFO - Episode 47: Reward=16.75, Balance=$106.23, Win Rate=71.4%, Trades=7, Episode PnL=$6.23, Total PnL=$890.18, Max Drawdown=1.0%, Pred Accuracy=98.8% +2025-03-10 16:21:48,571 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:21:48,571 - INFO - Refreshing data for episode 48 +2025-03-10 16:21:48,572 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:21:48,863 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:21:48,874 - INFO - Initialized environment with 100 candles +2025-03-10 16:21:48,907 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6655178571427 | Take profit: 2087.159073214286 +2025-03-10 16:21:49,178 - INFO - CLOSED short at 2115.21 | PnL: 0.18% | $0.16 +2025-03-10 16:21:49,221 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.720917857143 | Take profit: 2082.3128732142854 +2025-03-10 16:21:49,301 - INFO - CLOSED short at 2114.32 | PnL: -0.01% | $-0.22 +2025-03-10 16:21:49,362 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.193267857143 | Take profit: 2082.775823214286 +2025-03-10 16:21:49,427 - INFO - CLOSED short at 2112.57 | PnL: 0.09% | $-0.01 +2025-03-10 16:21:49,498 - INFO - OPENED SHORT at 2113.28 | Stop loss: 2123.896817857143 | Take profit: 2081.505173214286 +2025-03-10 16:21:49,983 - INFO - CLOSED short at 2104.67 | PnL: 0.41% | $0.60 +2025-03-10 16:21:50,038 - INFO - OPENED SHORT at 2099.63 | Stop loss: 2110.178567857143 | Take profit: 2068.059923214286 +2025-03-10 16:21:50,267 - INFO - CLOSED short at 2084.95 | PnL: 0.70% | $1.18 +2025-03-10 16:21:50,312 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.033317857143 | Take profit: 2049.2956732142857 +2025-03-10 16:21:50,439 - INFO - CLOSED short at 2084.11 | PnL: -0.17% | $-0.54 +2025-03-10 16:21:50,489 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.495767857143 | Take profit: 2043.868323214286 +2025-03-10 16:21:50,604 - INFO - CLOSED short at 2051.0 | PnL: 1.16% | $2.09 +2025-03-10 16:21:50,648 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.777967857143 | Take profit: 2012.7817232142856 +2025-03-10 16:21:50,722 - INFO - CLOSED short at 2053.22 | PnL: -0.48% | $-1.16 +2025-03-10 16:21:50,746 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.450967857143 | Take profit: 2027.1627232142857 +2025-03-10 16:21:50,995 - INFO - CLOSED short at 2027.51 | PnL: 1.49% | $2.76 +2025-03-10 16:21:51,118 - INFO - OPENED SHORT at 2014.41 | Stop loss: 2024.5324678571428 | Take profit: 1984.118223214286 +2025-03-10 16:21:51,147 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.36, Avg Loss=$-0.48 +2025-03-10 16:21:51,149 - INFO - Episode 48: Reward=15.33, Balance=$104.87, Win Rate=55.6%, Trades=9, Episode PnL=$4.87, Total PnL=$895.05, Max Drawdown=1.1%, Pred Accuracy=98.9% +2025-03-10 16:21:51,149 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:21:51,150 - INFO - Refreshing data for episode 49 +2025-03-10 16:21:51,150 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:21:51,469 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:21:51,482 - INFO - Initialized environment with 100 candles +2025-03-10 16:21:51,518 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6655178571427 | Take profit: 2087.159073214286 +2025-03-10 16:21:51,590 - INFO - CLOSED short at 2128.33 | PnL: -0.44% | $-1.05 +2025-03-10 16:21:51,619 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.444267857143 | Take profit: 2092.822823214286 +2025-03-10 16:21:51,645 - INFO - CLOSED short at 2120.26 | PnL: 0.21% | $0.22 +2025-03-10 16:21:51,695 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.4043178571433 | Take profit: 2082.982673214286 +2025-03-10 16:21:51,853 - INFO - CLOSED short at 2115.21 | PnL: -0.02% | $-0.23 +2025-03-10 16:21:51,899 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.720917857143 | Take profit: 2082.3128732142854 +2025-03-10 16:21:51,963 - INFO - CLOSED short at 2115.11 | PnL: -0.05% | $-0.29 +2025-03-10 16:21:52,035 - INFO - OPENED SHORT at 2114.32 | Stop loss: 2124.9420178571427 | Take profit: 2082.529573214286 +2025-03-10 16:21:52,153 - INFO - CLOSED short at 2113.28 | PnL: 0.05% | $-0.10 +2025-03-10 16:21:52,203 - INFO - OPENED SHORT at 2115.07 | Stop loss: 2125.695767857143 | Take profit: 2083.268323214286 +2025-03-10 16:21:52,230 - INFO - CLOSED short at 2098.24 | PnL: 0.80% | $1.34 +2025-03-10 16:21:52,231 - INFO - OPENED LONG at 2098.24 | Stop loss: 2087.698382142857 | Take profit: 2129.789226785714 +2025-03-10 16:21:52,260 - INFO - CLOSED long at 2098.28 | PnL: 0.00% | $-0.19 +2025-03-10 16:21:52,579 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9774678571425 | Take profit: 2071.7832232142855 +2025-03-10 16:21:52,636 - INFO - CLOSED short at 2104.67 | PnL: -0.06% | $-0.31 +2025-03-10 16:21:52,732 - INFO - OPENED SHORT at 2099.22 | Stop loss: 2109.766517857143 | Take profit: 2067.6560732142857 +2025-03-10 16:21:52,969 - INFO - CLOSED short at 2080.58 | PnL: 0.89% | $1.53 +2025-03-10 16:21:52,970 - INFO - OPENED LONG at 2080.58 | Stop loss: 2070.126682142857 | Take profit: 2111.864326785714 +2025-03-10 16:21:52,997 - INFO - CLOSED long at 2084.75 | PnL: 0.20% | $0.20 +2025-03-10 16:21:53,044 - INFO - OPENED SHORT at 2084.25 | Stop loss: 2094.7216678571426 | Take profit: 2052.910623214286 +2025-03-10 16:21:53,075 - INFO - CLOSED short at 2085.37 | PnL: -0.05% | $-0.30 +2025-03-10 16:21:53,138 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.535767857143 | Take profit: 2051.748323214286 +2025-03-10 16:21:53,268 - INFO - TAKE PROFIT hit for short at 2051.748323214286 | PnL: 1.50% | $2.76 +2025-03-10 16:21:53,307 - INFO - OPENED LONG at 2051.0 | Stop loss: 2040.6945821428571 | Take profit: 2081.840626785714 +2025-03-10 16:21:53,335 - INFO - CLOSED long at 2043.51 | PnL: -0.37% | $-0.94 +2025-03-10 16:21:53,336 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.777967857143 | Take profit: 2012.7817232142856 +2025-03-10 16:21:53,404 - INFO - STOP LOSS hit for short at 2053.777967857143 | PnL: -0.50% | $-1.21 +2025-03-10 16:21:53,465 - INFO - OPENED SHORT at 2050.18 | Stop loss: 2060.481317857143 | Take profit: 2019.3516732142857 +2025-03-10 16:21:53,492 - INFO - CLOSED short at 2046.76 | PnL: 0.17% | $0.13 +2025-03-10 16:21:53,523 - INFO - OPENED SHORT at 2043.95 | Stop loss: 2054.220167857143 | Take profit: 2013.2151232142858 +2025-03-10 16:21:53,575 - INFO - CLOSED short at 2044.1 | PnL: -0.01% | $-0.21 +2025-03-10 16:21:53,733 - INFO - OPENED SHORT at 2027.51 | Stop loss: 2037.6979678571427 | Take profit: 1997.0217232142859 +2025-03-10 16:21:53,799 - INFO - CLOSED short at 2015.54 | PnL: 0.59% | $0.97 +2025-03-10 16:21:53,825 - INFO - OPENED SHORT at 2014.41 | Stop loss: 2024.5324678571428 | Take profit: 1984.118223214286 +2025-03-10 16:21:53,849 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$1.02, Avg Loss=$-0.48 +2025-03-10 16:21:53,850 - INFO - Episode 49: Reward=4.26, Balance=$102.31, Win Rate=41.2%, Trades=17, Episode PnL=$3.25, Total PnL=$897.36, Max Drawdown=2.2%, Pred Accuracy=99.0% +2025-03-10 16:21:53,850 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:21:53,851 - INFO - Early stopping triggered after 50 episodes without improvement +2025-03-10 16:21:54,005 - INFO - Model saved to models/trading_agent_final.pt +2025-03-10 16:21:55,106 - INFO - Training results saved to training_results.png +2025-03-10 16:21:55,264 - INFO - Model saved to models/trading_agent_continuous_150.pt +2025-03-10 16:22:00,275 - INFO - Starting training batch 5 +2025-03-10 16:22:00,275 - INFO - Refreshing data for new training batch +2025-03-10 16:22:00,276 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:22:00,665 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 16:22:00,679 - INFO - Initialized environment with 500 candles +2025-03-10 16:22:00,681 - INFO - Updated environment with fresh candles +2025-03-10 16:22:00,681 - INFO - Starting training on device: cuda +2025-03-10 16:22:00,682 - INFO - Loading best model from models/trading_agent_best_pnl.pt to resume training +2025-03-10 16:22:00,682 - INFO - Loading model from models/trading_agent_best_pnl.pt +2025-03-10 16:22:01,052 - INFO - Model loaded successfully with weights_only=True +2025-03-10 16:22:01,059 - INFO - Resumed with best metrics - Reward: 202.74, PnL: $9.08, Win Rate: 70.0% +2025-03-10 16:22:01,082 - INFO - Refreshing data for episode 0 +2025-03-10 16:22:01,083 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:22:01,452 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:22:01,464 - INFO - Initialized environment with 100 candles +2025-03-10 16:22:02,555 - INFO - OPENED SHORT at 2119.02 | Stop loss: 2129.6655178571427 | Take profit: 2087.159073214286 +2025-03-10 16:22:03,578 - INFO - CLOSED short at 2104.67 | PnL: 0.68% | $1.13 +2025-03-10 16:22:03,629 - INFO - OPENED SHORT at 2105.26 | Stop loss: 2115.836717857143 | Take profit: 2073.605473214286 +2025-03-10 16:22:04,205 - INFO - CLOSED short at 2067.71 | PnL: 1.78% | $3.33 +2025-03-10 16:22:04,236 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.591917857143 | Take profit: 2017.4998732142858 +2025-03-10 16:22:04,560 - INFO - CLOSED short at 2043.95 | PnL: 0.21% | $0.23 +2025-03-10 16:22:04,585 - INFO - OPENED SHORT at 2044.1 | Stop loss: 2054.3709178571426 | Take profit: 2013.3628732142856 +2025-03-10 16:22:04,756 - INFO - TAKE PROFIT hit for short at 2013.3628732142856 | PnL: 1.50% | $2.87 +2025-03-10 16:22:04,811 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6681178571428 | Take profit: 1985.2312732142855 +2025-03-10 16:22:04,905 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.89, Avg Loss=$0.00 +2025-03-10 16:22:04,905 - INFO - Episode 0: Reward=33.30, Balance=$107.55, Win Rate=100.0%, Trades=4, Episode PnL=$7.55, Total PnL=$904.91, Max Drawdown=0.0%, Pred Accuracy=99.8% +2025-03-10 16:22:05,057 - INFO - Model saved to checkpoints/trading_agent_episode_0.pt +2025-03-10 16:22:05,058 - INFO - Checkpoint saved at episode 0 +2025-03-10 16:22:06,293 - INFO - Visualization saved for episode 0 +2025-03-10 16:22:08,726 - INFO - Visualization saved for episode 0 +2025-03-10 16:22:08,745 - INFO - Refreshing data for episode 1 +2025-03-10 16:22:08,746 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:22:09,053 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:22:09,066 - INFO - Initialized environment with 100 candles +2025-03-10 16:22:09,148 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6117142857142 | Take profit: 2089.0752285714284 +2025-03-10 16:22:09,519 - INFO - CLOSED short at 2114.57 | PnL: 0.30% | $0.39 +2025-03-10 16:22:09,545 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.1797642857146 | Take profit: 2080.811078571429 +2025-03-10 16:22:09,718 - INFO - CLOSED short at 2100.05 | PnL: 0.59% | $0.97 +2025-03-10 16:22:09,719 - INFO - OPENED LONG at 2100.05 | Stop loss: 2089.502835714286 | Take profit: 2131.6211214285718 +2025-03-10 16:22:09,745 - INFO - CLOSED long at 2096.36 | PnL: -0.18% | $-0.55 +2025-03-10 16:22:09,745 - INFO - OPENED SHORT at 2096.36 | Stop loss: 2106.8887142857143 | Take profit: 2064.8442285714286 +2025-03-10 16:22:10,477 - INFO - TAKE PROFIT hit for short at 2064.8442285714286 | PnL: 1.50% | $2.77 +2025-03-10 16:22:10,505 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3019142857142 | Take profit: 2020.1646285714287 +2025-03-10 16:22:10,577 - INFO - CLOSED short at 2053.22 | PnL: -0.11% | $-0.42 +2025-03-10 16:22:10,609 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.4474642857144 | Take profit: 2027.1679785714289 +2025-03-10 16:22:10,878 - INFO - TAKE PROFIT hit for short at 2027.1679785714289 | PnL: 1.50% | $2.83 +2025-03-10 16:22:10,907 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6646142857142 | Take profit: 1985.2365285714286 +2025-03-10 16:22:10,985 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.74, Avg Loss=$-0.48 +2025-03-10 16:22:10,986 - INFO - Episode 1: Reward=13.45, Balance=$105.99, Win Rate=66.7%, Trades=6, Episode PnL=$6.54, Total PnL=$910.90, Max Drawdown=0.4%, Pred Accuracy=99.7% +2025-03-10 16:22:10,986 - INFO - Refreshing data for episode 2 +2025-03-10 16:22:10,986 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:22:11,758 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:22:11,772 - INFO - Initialized environment with 100 candles +2025-03-10 16:22:11,809 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6117142857142 | Take profit: 2089.0752285714284 +2025-03-10 16:22:11,859 - INFO - CLOSED short at 2128.33 | PnL: -0.35% | $-0.88 +2025-03-10 16:22:11,889 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.440764285714 | Take profit: 2092.8280785714287 +2025-03-10 16:22:12,323 - INFO - TAKE PROFIT hit for short at 2092.8280785714287 | PnL: 1.50% | $2.72 +2025-03-10 16:22:12,353 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5971642857144 | Take profit: 2068.4788785714286 +2025-03-10 16:22:12,436 - INFO - CLOSED short at 2089.84 | PnL: 0.49% | $0.77 +2025-03-10 16:22:12,466 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.7178642857143 | Take profit: 2064.6767785714287 +2025-03-10 16:22:13,189 - INFO - CLOSED short at 2048.3 | PnL: 2.28% | $4.39 +2025-03-10 16:22:13,230 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3019142857142 | Take profit: 2020.1646285714287 +2025-03-10 16:22:13,562 - INFO - CLOSED short at 2036.71 | PnL: 0.70% | $1.25 +2025-03-10 16:22:13,608 - INFO - OPENED SHORT at 2027.51 | Stop loss: 2037.6944642857143 | Take profit: 1997.0269785714286 +2025-03-10 16:22:13,774 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.28, Avg Loss=$-0.88 +2025-03-10 16:22:13,775 - INFO - Episode 2: Reward=18.57, Balance=$108.25, Win Rate=80.0%, Trades=5, Episode PnL=$8.25, Total PnL=$919.15, Max Drawdown=0.9%, Pred Accuracy=99.7% +2025-03-10 16:22:13,775 - INFO - Refreshing data for episode 3 +2025-03-10 16:22:13,777 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:22:14,306 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:22:14,317 - INFO - Initialized environment with 100 candles +2025-03-10 16:22:14,357 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6117142857142 | Take profit: 2089.0752285714284 +2025-03-10 16:22:15,084 - INFO - TAKE PROFIT hit for short at 2089.0752285714284 | PnL: 1.50% | $2.75 +2025-03-10 16:22:15,119 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3361142857143 | Take profit: 2058.4220285714287 +2025-03-10 16:22:15,198 - INFO - STOP LOSS hit for short at 2100.3361142857143 | PnL: -0.50% | $-1.21 +2025-03-10 16:22:15,229 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.973964285714 | Take profit: 2071.7884785714286 +2025-03-10 16:22:15,641 - INFO - CLOSED short at 2084.75 | PnL: 0.89% | $1.56 +2025-03-10 16:22:15,668 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.4519142857143 | Take profit: 2049.7146285714284 +2025-03-10 16:22:15,945 - INFO - TAKE PROFIT hit for short at 2049.7146285714284 | PnL: 1.50% | $2.83 +2025-03-10 16:22:15,974 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3019142857142 | Take profit: 2020.1646285714287 +2025-03-10 16:22:16,202 - INFO - CLOSED short at 2046.76 | PnL: 0.21% | $0.22 +2025-03-10 16:22:16,251 - INFO - OPENED SHORT at 2043.95 | Stop loss: 2054.216664285714 | Take profit: 2013.2203785714287 +2025-03-10 16:22:16,428 - INFO - TAKE PROFIT hit for short at 2013.2203785714287 | PnL: 1.50% | $2.91 +2025-03-10 16:22:16,452 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6646142857142 | Take profit: 1985.2365285714286 +2025-03-10 16:22:16,542 - INFO - CLOSED short at 2019.57 | PnL: -0.20% | $-0.64 +2025-03-10 16:22:16,590 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.05, Avg Loss=$-0.92 +2025-03-10 16:22:16,591 - INFO - Episode 3: Reward=15.33, Balance=$108.42, Win Rate=71.4%, Trades=7, Episode PnL=$8.42, Total PnL=$927.57, Max Drawdown=1.2%, Pred Accuracy=99.7% +2025-03-10 16:22:16,591 - INFO - Refreshing data for episode 4 +2025-03-10 16:22:16,591 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:22:17,059 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:22:17,074 - INFO - Initialized environment with 100 candles +2025-03-10 16:22:17,343 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.613057142857 | Take profit: 2089.0732142857146 +2025-03-10 16:22:17,543 - INFO - CLOSED short at 2114.75 | PnL: 0.29% | $0.38 +2025-03-10 16:22:17,578 - INFO - OPENED SHORT at 2116.06 | Stop loss: 2126.6885571428575 | Take profit: 2084.2467142857145 +2025-03-10 16:22:17,737 - INFO - CLOSED short at 2114.57 | PnL: 0.07% | $-0.06 +2025-03-10 16:22:17,760 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.1811071428574 | Take profit: 2080.8090642857146 +2025-03-10 16:22:18,557 - INFO - TAKE PROFIT hit for short at 2080.8090642857146 | PnL: 1.50% | $2.75 +2025-03-10 16:22:18,585 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2220071428574 | Take profit: 2053.4063642857145 +2025-03-10 16:22:18,853 - INFO - TAKE PROFIT hit for short at 2053.4063642857145 | PnL: 1.50% | $2.83 +2025-03-10 16:22:18,903 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.303257142857 | Take profit: 2020.1626142857142 +2025-03-10 16:22:19,337 - INFO - TAKE PROFIT hit for short at 2020.1626142857142 | PnL: 1.50% | $2.90 +2025-03-10 16:22:19,364 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6659571428572 | Take profit: 1985.2345142857143 +2025-03-10 16:22:19,388 - INFO - CLOSED short at 2014.41 | PnL: 0.06% | $-0.09 +2025-03-10 16:22:19,389 - INFO - OPENED LONG at 2014.41 | Stop loss: 2004.289692857143 | Take profit: 2044.698535714286 +2025-03-10 16:22:19,418 - INFO - CLOSED long at 2019.57 | PnL: 0.26% | $0.33 +2025-03-10 16:22:19,418 - INFO - OPENED SHORT at 2019.57 | Stop loss: 2029.716107142857 | Take profit: 1989.2040642857144 +2025-03-10 16:22:19,445 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$1.84, Avg Loss=$-0.08 +2025-03-10 16:22:19,446 - INFO - Episode 4: Reward=13.74, Balance=$109.04, Win Rate=71.4%, Trades=7, Episode PnL=$8.71, Total PnL=$936.62, Max Drawdown=0.1%, Pred Accuracy=99.6% +2025-03-10 16:22:19,446 - INFO - Refreshing data for episode 5 +2025-03-10 16:22:19,447 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:22:19,889 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:22:19,901 - INFO - Initialized environment with 100 candles +2025-03-10 16:22:21,058 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.5730464285716 | Take profit: 2092.9536803571427 +2025-03-10 16:22:21,276 - INFO - CLOSED short at 2114.75 | PnL: 0.48% | $0.74 +2025-03-10 16:22:21,355 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.8345964285713 | Take profit: 2083.409030357143 +2025-03-10 16:22:21,480 - INFO - CLOSED short at 2114.32 | PnL: 0.04% | $-0.11 +2025-03-10 16:22:21,508 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.1913964285714 | Take profit: 2082.778630357143 +2025-03-10 16:22:21,612 - INFO - CLOSED short at 2115.07 | PnL: -0.02% | $-0.24 +2025-03-10 16:22:21,640 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.7797464285713 | Take profit: 2066.6935803571428 +2025-03-10 16:22:21,686 - INFO - CLOSED short at 2091.36 | PnL: 0.33% | $0.45 +2025-03-10 16:22:21,743 - INFO - OPENED SHORT at 2096.36 | Stop loss: 2106.890346428572 | Take profit: 2064.841780357143 +2025-03-10 16:22:22,252 - INFO - CLOSED short at 2090.59 | PnL: 0.28% | $0.35 +2025-03-10 16:22:22,306 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.4934964285712 | Take profit: 2059.5523303571426 +2025-03-10 16:22:22,672 - INFO - TAKE PROFIT hit for short at 2059.5523303571426 | PnL: 1.50% | $2.78 +2025-03-10 16:22:22,713 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3035464285713 | Take profit: 2020.162180357143 +2025-03-10 16:22:22,820 - INFO - CLOSED short at 2058.11 | PnL: -0.35% | $-0.91 +2025-03-10 16:22:22,820 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.7709035714288 | Take profit: 2089.0544696428574 +2025-03-10 16:22:22,849 - INFO - CLOSED long at 2054.03 | PnL: -0.20% | $-0.60 +2025-03-10 16:22:22,850 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.3486964285717 | Take profit: 2023.146730357143 +2025-03-10 16:22:23,167 - INFO - CLOSED short at 2010.35 | PnL: 2.13% | $4.06 +2025-03-10 16:22:23,200 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6662464285714 | Take profit: 1985.2340803571428 +2025-03-10 16:22:23,283 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.67, Avg Loss=$-0.47 +2025-03-10 16:22:23,284 - INFO - Episode 5: Reward=13.58, Balance=$106.50, Win Rate=55.6%, Trades=9, Episode PnL=$7.10, Total PnL=$943.11, Max Drawdown=0.4%, Pred Accuracy=99.5% +2025-03-10 16:22:23,284 - INFO - Refreshing data for episode 6 +2025-03-10 16:22:23,284 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:22:23,609 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:22:23,621 - INFO - Initialized environment with 100 candles +2025-03-10 16:22:23,758 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6133464285713 | Take profit: 2089.0727803571426 +2025-03-10 16:22:24,214 - INFO - CLOSED short at 2114.57 | PnL: 0.30% | $0.39 +2025-03-10 16:22:24,264 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.1813964285716 | Take profit: 2080.808630357143 +2025-03-10 16:22:25,106 - INFO - CLOSED short at 2080.58 | PnL: 1.51% | $2.78 +2025-03-10 16:22:25,137 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2222964285716 | Take profit: 2053.4059303571426 +2025-03-10 16:22:25,351 - INFO - CLOSED short at 2067.71 | PnL: 0.82% | $1.45 +2025-03-10 16:22:25,407 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5900464285714 | Take profit: 2017.502680357143 +2025-03-10 16:22:25,625 - INFO - CLOSED short at 2050.18 | PnL: -0.09% | $-0.39 +2025-03-10 16:22:25,654 - INFO - OPENED SHORT at 2046.76 | Stop loss: 2057.0423464285714 | Take profit: 2015.9857803571429 +2025-03-10 16:22:25,799 - INFO - CLOSED short at 2042.0 | PnL: 0.23% | $0.27 +2025-03-10 16:22:25,800 - INFO - OPENED LONG at 2042.0 | Stop loss: 2031.7414535714286 | Take profit: 2072.702819642857 +2025-03-10 16:22:25,855 - INFO - CLOSED long at 2036.71 | PnL: -0.26% | $-0.73 +2025-03-10 16:22:25,856 - INFO - OPENED SHORT at 2036.71 | Stop loss: 2046.9420964285716 | Take profit: 2006.086530357143 +2025-03-10 16:22:26,034 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.22, Avg Loss=$-0.56 +2025-03-10 16:22:26,034 - INFO - Episode 6: Reward=16.89, Balance=$103.76, Win Rate=66.7%, Trades=6, Episode PnL=$4.49, Total PnL=$946.88, Max Drawdown=0.4%, Pred Accuracy=99.4% +2025-03-10 16:22:26,034 - INFO - Refreshing data for episode 7 +2025-03-10 16:22:26,034 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:22:26,348 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:22:26,359 - INFO - Initialized environment with 100 candles +2025-03-10 16:22:26,397 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6133464285713 | Take profit: 2089.0727803571426 +2025-03-10 16:22:26,521 - INFO - CLOSED short at 2116.81 | PnL: 0.20% | $0.19 +2025-03-10 16:22:26,559 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.4024464285712 | Take profit: 2082.985480357143 +2025-03-10 16:22:26,587 - INFO - CLOSED short at 2115.52 | PnL: -0.03% | $-0.26 +2025-03-10 16:22:26,641 - INFO - OPENED SHORT at 2116.06 | Stop loss: 2126.688846428571 | Take profit: 2084.246280357143 +2025-03-10 16:22:26,666 - INFO - CLOSED short at 2115.21 | PnL: 0.04% | $-0.12 +2025-03-10 16:22:26,667 - INFO - OPENED LONG at 2115.21 | Stop loss: 2104.5854035714287 | Take profit: 2147.0109696428576 +2025-03-10 16:22:26,697 - INFO - CLOSED long at 2114.1 | PnL: -0.05% | $-0.30 +2025-03-10 16:22:26,697 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.7190464285713 | Take profit: 2082.315680357143 +2025-03-10 16:22:26,780 - INFO - CLOSED short at 2114.57 | PnL: -0.02% | $-0.24 +2025-03-10 16:22:26,805 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.1813964285716 | Take profit: 2080.808630357143 +2025-03-10 16:22:26,931 - INFO - CLOSED short at 2098.24 | PnL: 0.68% | $1.12 +2025-03-10 16:22:26,978 - INFO - OPENED SHORT at 2098.28 | Stop loss: 2108.8199464285717 | Take profit: 2066.732980357143 +2025-03-10 16:22:27,084 - INFO - CLOSED short at 2100.05 | PnL: -0.08% | $-0.36 +2025-03-10 16:22:27,084 - INFO - OPENED LONG at 2100.05 | Stop loss: 2089.5012035714285 | Take profit: 2131.623569642857 +2025-03-10 16:22:27,118 - INFO - CLOSED long at 2096.36 | PnL: -0.18% | $-0.54 +2025-03-10 16:22:27,119 - INFO - OPENED SHORT at 2096.36 | Stop loss: 2106.890346428572 | Take profit: 2064.841780357143 +2025-03-10 16:22:27,249 - INFO - CLOSED short at 2102.83 | PnL: -0.31% | $-0.79 +2025-03-10 16:22:27,280 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9755964285714 | Take profit: 2071.786030357143 +2025-03-10 16:22:27,394 - INFO - CLOSED short at 2105.26 | PnL: -0.09% | $-0.36 +2025-03-10 16:22:27,441 - INFO - OPENED SHORT at 2099.63 | Stop loss: 2110.176696428571 | Take profit: 2068.0627303571428 +2025-03-10 16:22:27,559 - INFO - CLOSED short at 2098.66 | PnL: 0.05% | $-0.10 +2025-03-10 16:22:27,581 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.091496428571 | Take profit: 2059.158330357143 +2025-03-10 16:22:27,756 - INFO - CLOSED short at 2084.25 | PnL: 0.30% | $0.39 +2025-03-10 16:22:27,802 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8453964285713 | Take profit: 2054.0166303571427 +2025-03-10 16:22:27,964 - INFO - TAKE PROFIT hit for short at 2054.0166303571427 | PnL: 1.50% | $2.71 +2025-03-10 16:22:27,985 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3035464285713 | Take profit: 2020.162180357143 +2025-03-10 16:22:28,187 - INFO - CLOSED short at 2046.76 | PnL: 0.21% | $0.21 +2025-03-10 16:22:28,274 - INFO - OPENED SHORT at 2044.1 | Stop loss: 2054.3690464285714 | Take profit: 2013.3656803571428 +2025-03-10 16:22:28,418 - INFO - TAKE PROFIT hit for short at 2013.3656803571428 | PnL: 1.50% | $2.78 +2025-03-10 16:22:28,445 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6662464285714 | Take profit: 1985.2340803571428 +2025-03-10 16:22:28,536 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$1.23, Avg Loss=$-0.34 +2025-03-10 16:22:28,537 - INFO - Episode 7: Reward=4.80, Balance=$104.32, Win Rate=40.0%, Trades=15, Episode PnL=$5.16, Total PnL=$951.20, Max Drawdown=2.2%, Pred Accuracy=99.3% +2025-03-10 16:22:28,537 - INFO - Refreshing data for episode 8 +2025-03-10 16:22:28,538 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:22:28,849 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:22:28,862 - INFO - Initialized environment with 100 candles +2025-03-10 16:22:28,998 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6133464285713 | Take profit: 2089.0727803571426 +2025-03-10 16:22:29,045 - INFO - CLOSED short at 2124.9 | PnL: -0.19% | $-0.56 +2025-03-10 16:22:29,097 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0201964285716 | Take profit: 2096.3322303571426 +2025-03-10 16:22:29,168 - INFO - CLOSED short at 2116.81 | PnL: 0.54% | $0.86 +2025-03-10 16:22:29,199 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.4024464285712 | Take profit: 2082.985480357143 +2025-03-10 16:22:29,234 - INFO - CLOSED short at 2115.52 | PnL: -0.03% | $-0.26 +2025-03-10 16:22:29,263 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.3722964285716 | Take profit: 2082.9559303571427 +2025-03-10 16:22:29,336 - INFO - CLOSED short at 2115.21 | PnL: -0.02% | $-0.24 +2025-03-10 16:22:29,384 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.7190464285713 | Take profit: 2082.315680357143 +2025-03-10 16:22:29,476 - INFO - CLOSED short at 2114.32 | PnL: -0.01% | $-0.22 +2025-03-10 16:22:29,506 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.1913964285714 | Take profit: 2082.778630357143 +2025-03-10 16:22:29,622 - INFO - CLOSED short at 2115.07 | PnL: -0.02% | $-0.24 +2025-03-10 16:22:29,652 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.7797464285713 | Take profit: 2066.6935803571428 +2025-03-10 16:22:29,861 - INFO - CLOSED short at 2089.04 | PnL: 0.44% | $0.66 +2025-03-10 16:22:29,901 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3377464285713 | Take profit: 2058.419580357143 +2025-03-10 16:22:29,975 - INFO - STOP LOSS hit for short at 2100.3377464285713 | PnL: -0.50% | $-1.18 +2025-03-10 16:22:30,029 - INFO - OPENED SHORT at 2104.22 | Stop loss: 2114.789646428571 | Take profit: 2072.583880357143 +2025-03-10 16:22:30,247 - INFO - CLOSED short at 2096.96 | PnL: 0.35% | $0.47 +2025-03-10 16:22:30,292 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.201846428571 | Take profit: 2067.107280357143 +2025-03-10 16:22:30,660 - INFO - TAKE PROFIT hit for short at 2067.107280357143 | PnL: 1.50% | $2.72 +2025-03-10 16:22:30,698 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3035464285713 | Take profit: 2020.162180357143 +2025-03-10 16:22:31,108 - INFO - TAKE PROFIT hit for short at 2020.162180357143 | PnL: 1.50% | $2.80 +2025-03-10 16:22:31,166 - INFO - OPENED SHORT at 2014.41 | Stop loss: 2024.5305964285717 | Take profit: 1984.1210303571431 +2025-03-10 16:22:31,219 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.50, Avg Loss=$-0.45 +2025-03-10 16:22:31,220 - INFO - Episode 8: Reward=10.66, Balance=$104.82, Win Rate=45.5%, Trades=11, Episode PnL=$4.82, Total PnL=$956.01, Max Drawdown=1.5%, Pred Accuracy=99.1% +2025-03-10 16:22:31,220 - INFO - Refreshing data for episode 9 +2025-03-10 16:22:31,221 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:22:31,524 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:22:31,536 - INFO - Initialized environment with 100 candles +2025-03-10 16:22:31,594 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.5730464285716 | Take profit: 2092.9536803571427 +2025-03-10 16:22:32,104 - INFO - CLOSED short at 2098.24 | PnL: 1.25% | $2.26 +2025-03-10 16:22:32,166 - INFO - OPENED SHORT at 2098.28 | Stop loss: 2108.8199464285717 | Take profit: 2066.732980357143 +2025-03-10 16:22:32,335 - INFO - CLOSED short at 2089.04 | PnL: 0.44% | $0.68 +2025-03-10 16:22:32,368 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3377464285713 | Take profit: 2058.419580357143 +2025-03-10 16:22:32,458 - INFO - STOP LOSS hit for short at 2100.3377464285713 | PnL: -0.50% | $-1.21 +2025-03-10 16:22:32,486 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9755964285714 | Take profit: 2071.786030357143 +2025-03-10 16:22:32,820 - INFO - CLOSED short at 2090.59 | PnL: 0.61% | $1.01 +2025-03-10 16:22:32,849 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.4934964285712 | Take profit: 2059.5523303571426 +2025-03-10 16:22:32,898 - INFO - CLOSED short at 2080.58 | PnL: 0.50% | $0.80 +2025-03-10 16:22:33,035 - INFO - OPENED SHORT at 2084.25 | Stop loss: 2094.7197964285715 | Take profit: 2052.9134303571427 +2025-03-10 16:22:33,211 - INFO - TAKE PROFIT hit for short at 2052.9134303571427 | PnL: 1.50% | $2.84 +2025-03-10 16:22:33,238 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3035464285713 | Take profit: 2020.162180357143 +2025-03-10 16:22:33,428 - INFO - CLOSED short at 2054.03 | PnL: -0.15% | $-0.51 +2025-03-10 16:22:33,507 - INFO - OPENED SHORT at 2046.76 | Stop loss: 2057.0423464285714 | Take profit: 2015.9857803571429 +2025-03-10 16:22:33,558 - INFO - CLOSED short at 2044.1 | PnL: 0.13% | $0.06 +2025-03-10 16:22:33,581 - INFO - OPENED SHORT at 2043.59 | Stop loss: 2053.8564964285715 | Take profit: 2012.8633303571428 +2025-03-10 16:22:33,712 - INFO - TAKE PROFIT hit for short at 2012.8633303571428 | PnL: 1.50% | $2.90 +2025-03-10 16:22:33,811 - INFO - OPENED SHORT at 2014.41 | Stop loss: 2024.5305964285717 | Take profit: 1984.1210303571431 +2025-03-10 16:22:33,893 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.51, Avg Loss=$-0.86 +2025-03-10 16:22:33,894 - INFO - Episode 9: Reward=5.17, Balance=$108.83, Win Rate=77.8%, Trades=9, Episode PnL=$8.83, Total PnL=$964.84, Max Drawdown=1.2%, Pred Accuracy=98.9% +2025-03-10 16:22:33,894 - INFO - Refreshing data for episode 10 +2025-03-10 16:22:33,894 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:22:34,205 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:22:34,217 - INFO - Initialized environment with 100 candles +2025-03-10 16:22:35,021 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6133464285713 | Take profit: 2089.0727803571426 +2025-03-10 16:22:35,331 - INFO - CLOSED short at 2115.11 | PnL: 0.28% | $0.34 +2025-03-10 16:22:35,331 - INFO - OPENED LONG at 2115.11 | Stop loss: 2104.4859035714285 | Take profit: 2146.9094696428574 +2025-03-10 16:22:35,362 - INFO - CLOSED long at 2114.32 | PnL: -0.04% | $-0.27 +2025-03-10 16:22:35,363 - INFO - OPENED SHORT at 2114.32 | Stop loss: 2124.9401464285716 | Take profit: 2082.532380357143 +2025-03-10 16:22:35,480 - INFO - CLOSED short at 2114.5 | PnL: -0.01% | $-0.21 +2025-03-10 16:22:35,540 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.7797464285713 | Take profit: 2066.6935803571428 +2025-03-10 16:22:35,705 - INFO - CLOSED short at 2089.84 | PnL: 0.40% | $0.59 +2025-03-10 16:22:35,752 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.719496428572 | Take profit: 2064.674330357143 +2025-03-10 16:22:35,839 - INFO - CLOSED short at 2102.83 | PnL: -0.32% | $-0.82 +2025-03-10 16:22:35,886 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9755964285714 | Take profit: 2071.786030357143 +2025-03-10 16:22:35,915 - INFO - CLOSED short at 2104.22 | PnL: -0.04% | $-0.27 +2025-03-10 16:22:35,973 - INFO - OPENED SHORT at 2105.26 | Stop loss: 2115.834846428572 | Take profit: 2073.608280357143 +2025-03-10 16:22:35,999 - INFO - CLOSED short at 2099.63 | PnL: 0.27% | $0.33 +2025-03-10 16:22:36,105 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.201846428571 | Take profit: 2067.107280357143 +2025-03-10 16:22:36,188 - INFO - CLOSED short at 2090.99 | PnL: 0.37% | $0.52 +2025-03-10 16:22:36,236 - INFO - OPENED SHORT at 2084.95 | Stop loss: 2095.423296428571 | Take profit: 2053.6029303571427 +2025-03-10 16:22:36,359 - INFO - CLOSED short at 2084.25 | PnL: 0.03% | $-0.13 +2025-03-10 16:22:36,408 - INFO - OPENED SHORT at 2084.11 | Stop loss: 2094.5790964285716 | Take profit: 2052.775530357143 +2025-03-10 16:22:36,458 - INFO - CLOSED short at 2075.07 | PnL: 0.43% | $0.65 +2025-03-10 16:22:36,481 - INFO - OPENED SHORT at 2067.71 | Stop loss: 2078.0970964285716 | Take profit: 2036.621530357143 +2025-03-10 16:22:36,585 - INFO - CLOSED short at 2043.51 | PnL: 1.17% | $2.11 +2025-03-10 16:22:36,634 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.202996428571 | Take profit: 2022.0238303571427 +2025-03-10 16:22:36,674 - INFO - CLOSED short at 2053.22 | PnL: -0.02% | $-0.23 +2025-03-10 16:22:36,707 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.449096428572 | Take profit: 2027.165530357143 +2025-03-10 16:22:36,818 - INFO - CLOSED short at 2044.1 | PnL: 0.68% | $1.16 +2025-03-10 16:22:36,819 - INFO - OPENED LONG at 2044.1 | Stop loss: 2033.8309535714284 | Take profit: 2074.8343196428573 +2025-03-10 16:22:36,844 - INFO - CLOSED long at 2043.59 | PnL: -0.02% | $-0.25 +2025-03-10 16:22:36,880 - INFO - OPENED SHORT at 2042.0 | Stop loss: 2052.258546428571 | Take profit: 2011.297180357143 +2025-03-10 16:22:36,924 - INFO - CLOSED short at 2036.71 | PnL: 0.26% | $0.32 +2025-03-10 16:22:36,970 - INFO - OPENED SHORT at 2027.51 | Stop loss: 2037.6960964285713 | Take profit: 1997.024530357143 +2025-03-10 16:22:37,024 - INFO - CLOSED short at 2010.35 | PnL: 0.85% | $1.51 +2025-03-10 16:22:37,067 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6662464285714 | Take profit: 1985.2340803571428 +2025-03-10 16:22:37,155 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$0.84, Avg Loss=$-0.31 +2025-03-10 16:22:37,156 - INFO - Episode 10: Reward=1.26, Balance=$105.35, Win Rate=56.2%, Trades=16, Episode PnL=$5.61, Total PnL=$970.19, Max Drawdown=1.1%, Pred Accuracy=98.5% +2025-03-10 16:22:37,319 - INFO - Model saved to checkpoints/trading_agent_episode_10.pt +2025-03-10 16:22:37,319 - INFO - Checkpoint saved at episode 10 +2025-03-10 16:22:38,435 - INFO - Visualization saved for episode 10 +2025-03-10 16:22:40,222 - INFO - Visualization saved for episode 10 +2025-03-10 16:22:40,235 - INFO - Refreshing data for episode 11 +2025-03-10 16:22:40,235 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:22:40,538 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:22:40,547 - INFO - Initialized environment with 100 candles +2025-03-10 16:22:40,919 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.5730464285716 | Take profit: 2092.9536803571427 +2025-03-10 16:22:41,031 - INFO - CLOSED short at 2114.78 | PnL: 0.48% | $0.74 +2025-03-10 16:22:41,058 - INFO - OPENED SHORT at 2115.52 | Stop loss: 2126.1461464285712 | Take profit: 2083.714380357143 +2025-03-10 16:22:41,108 - INFO - CLOSED short at 2116.06 | PnL: -0.03% | $-0.25 +2025-03-10 16:22:41,151 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.8345964285713 | Take profit: 2083.409030357143 +2025-03-10 16:22:41,614 - INFO - CLOSED short at 2100.0 | PnL: 0.72% | $1.22 +2025-03-10 16:22:41,657 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3926964285715 | Take profit: 2071.214730357143 +2025-03-10 16:22:41,715 - INFO - CLOSED short at 2104.22 | PnL: -0.07% | $-0.33 +2025-03-10 16:22:41,741 - INFO - OPENED SHORT at 2104.67 | Stop loss: 2115.2418964285716 | Take profit: 2073.027130357143 +2025-03-10 16:22:41,834 - INFO - CLOSED short at 2094.16 | PnL: 0.50% | $0.79 +2025-03-10 16:22:41,865 - INFO - OPENED SHORT at 2096.96 | Stop loss: 2107.493346428572 | Take profit: 2065.4327803571427 +2025-03-10 16:22:42,154 - INFO - CLOSED short at 2085.37 | PnL: 0.55% | $0.90 +2025-03-10 16:22:42,183 - INFO - OPENED SHORT at 2084.11 | Stop loss: 2094.5790964285716 | Take profit: 2052.775530357143 +2025-03-10 16:22:42,278 - INFO - CLOSED short at 2048.3 | PnL: 1.72% | $3.26 +2025-03-10 16:22:42,279 - INFO - OPENED LONG at 2048.3 | Stop loss: 2038.009953571429 | Take profit: 2079.097319642857 +2025-03-10 16:22:42,315 - INFO - CLOSED long at 2051.0 | PnL: 0.13% | $0.07 +2025-03-10 16:22:42,316 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3035464285713 | Take profit: 2020.162180357143 +2025-03-10 16:22:42,362 - INFO - CLOSED short at 2043.51 | PnL: 0.37% | $0.55 +2025-03-10 16:22:42,406 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.202996428571 | Take profit: 2022.0238303571427 +2025-03-10 16:22:42,451 - INFO - CLOSED short at 2053.22 | PnL: -0.02% | $-0.24 +2025-03-10 16:22:42,491 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.449096428572 | Take profit: 2027.165530357143 +2025-03-10 16:22:42,523 - INFO - CLOSED short at 2054.03 | PnL: 0.20% | $0.20 +2025-03-10 16:22:42,554 - INFO - OPENED SHORT at 2050.18 | Stop loss: 2060.4794464285715 | Take profit: 2019.3544803571428 +2025-03-10 16:22:42,599 - INFO - CLOSED short at 2043.95 | PnL: 0.30% | $0.43 +2025-03-10 16:22:42,663 - INFO - OPENED SHORT at 2042.0 | Stop loss: 2052.258546428571 | Take profit: 2011.297180357143 +2025-03-10 16:22:42,689 - INFO - CLOSED short at 2036.71 | PnL: 0.26% | $0.33 +2025-03-10 16:22:42,770 - INFO - OPENED SHORT at 2010.35 | Stop loss: 2020.4502964285714 | Take profit: 1980.121930357143 +2025-03-10 16:22:42,812 - INFO - CLOSED short at 2015.54 | PnL: -0.26% | $-0.75 +2025-03-10 16:22:42,896 - INFO - OPENED SHORT at 2019.57 | Stop loss: 2029.7163964285714 | Take profit: 1989.2036303571429 +2025-03-10 16:22:42,915 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$0.85, Avg Loss=$-0.39 +2025-03-10 16:22:42,916 - INFO - Episode 11: Reward=7.44, Balance=$106.92, Win Rate=71.4%, Trades=14, Episode PnL=$6.85, Total PnL=$977.10, Max Drawdown=0.7%, Pred Accuracy=97.9% +2025-03-10 16:22:43,056 - INFO - Model saved to models/trading_agent_best_winrate.pt +2025-03-10 16:22:43,057 - INFO - New best win rate model saved: 71.4% +2025-03-10 16:22:43,057 - INFO - Refreshing data for episode 12 +2025-03-10 16:22:43,058 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:22:43,365 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:22:43,376 - INFO - Initialized environment with 100 candles +2025-03-10 16:22:43,458 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0201964285716 | Take profit: 2096.3322303571426 +2025-03-10 16:22:43,503 - INFO - CLOSED short at 2120.26 | PnL: 0.38% | $0.55 +2025-03-10 16:22:43,527 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.442596428571 | Take profit: 2084.985030357143 +2025-03-10 16:22:43,550 - INFO - CLOSED short at 2114.78 | PnL: 0.10% | $-0.01 +2025-03-10 16:22:43,578 - INFO - OPENED SHORT at 2115.52 | Stop loss: 2126.1461464285712 | Take profit: 2083.714380357143 +2025-03-10 16:22:43,662 - INFO - CLOSED short at 2114.1 | PnL: 0.07% | $-0.06 +2025-03-10 16:22:43,765 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.1913964285714 | Take profit: 2082.778630357143 +2025-03-10 16:22:43,950 - INFO - CLOSED short at 2098.24 | PnL: 0.77% | $1.32 +2025-03-10 16:22:44,137 - INFO - OPENED SHORT at 2089.04 | Stop loss: 2099.5337464285717 | Take profit: 2057.631580357143 +2025-03-10 16:22:44,200 - INFO - CLOSED short at 2100.0 | PnL: -0.52% | $-1.24 +2025-03-10 16:22:44,316 - INFO - OPENED SHORT at 2105.26 | Stop loss: 2115.834846428572 | Take profit: 2073.608280357143 +2025-03-10 16:22:44,356 - INFO - CLOSED short at 2099.63 | PnL: 0.27% | $0.33 +2025-03-10 16:22:44,397 - INFO - OPENED SHORT at 2099.22 | Stop loss: 2109.7646464285713 | Take profit: 2067.6588803571426 +2025-03-10 16:22:44,443 - INFO - CLOSED short at 2094.16 | PnL: 0.24% | $0.28 +2025-03-10 16:22:44,503 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.201846428571 | Take profit: 2067.107280357143 +2025-03-10 16:22:44,552 - INFO - CLOSED short at 2090.99 | PnL: 0.37% | $0.52 +2025-03-10 16:22:44,613 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2222964285716 | Take profit: 2053.4059303571426 +2025-03-10 16:22:44,634 - INFO - CLOSED short at 2081.0 | PnL: 0.18% | $0.16 +2025-03-10 16:22:44,683 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8453964285713 | Take profit: 2054.0166303571427 +2025-03-10 16:22:44,758 - INFO - CLOSED short at 2083.07 | PnL: 0.11% | $0.02 +2025-03-10 16:22:44,797 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.4938964285716 | Take profit: 2043.8711303571429 +2025-03-10 16:22:44,835 - INFO - CLOSED short at 2067.71 | PnL: 0.35% | $0.51 +2025-03-10 16:22:44,874 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5900464285714 | Take profit: 2017.502680357143 +2025-03-10 16:22:44,918 - INFO - CLOSED short at 2043.51 | PnL: 0.23% | $0.27 +2025-03-10 16:22:44,958 - INFO - OPENED SHORT at 2053.22 | Stop loss: 2063.5346464285712 | Take profit: 2022.3488803571427 +2025-03-10 16:22:45,000 - INFO - CLOSED short at 2054.03 | PnL: -0.04% | $-0.28 +2025-03-10 16:22:45,021 - INFO - OPENED SHORT at 2050.18 | Stop loss: 2060.4794464285715 | Take profit: 2019.3544803571428 +2025-03-10 16:22:45,119 - INFO - CLOSED short at 2043.59 | PnL: 0.32% | $0.44 +2025-03-10 16:22:45,154 - INFO - OPENED SHORT at 2042.0 | Stop loss: 2052.258546428571 | Take profit: 2011.297180357143 +2025-03-10 16:22:45,260 - INFO - TAKE PROFIT hit for short at 2011.297180357143 | PnL: 1.50% | $2.82 +2025-03-10 16:22:45,336 - INFO - OPENED SHORT at 2019.57 | Stop loss: 2029.7163964285714 | Take profit: 1989.2036303571429 +2025-03-10 16:22:45,358 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$0.66, Avg Loss=$-0.40 +2025-03-10 16:22:45,359 - INFO - Episode 12: Reward=2.03, Balance=$105.62, Win Rate=73.3%, Trades=15, Episode PnL=$5.62, Total PnL=$982.72, Max Drawdown=1.2%, Pred Accuracy=96.9% +2025-03-10 16:22:45,498 - INFO - Model saved to models/trading_agent_best_winrate.pt +2025-03-10 16:22:45,498 - INFO - New best win rate model saved: 73.3% +2025-03-10 16:22:45,499 - INFO - Refreshing data for episode 13 +2025-03-10 16:22:45,499 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:22:45,837 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:22:45,846 - INFO - Initialized environment with 100 candles +2025-03-10 16:22:45,880 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6133464285713 | Take profit: 2089.0727803571426 +2025-03-10 16:22:45,903 - INFO - CLOSED short at 2124.9 | PnL: -0.19% | $-0.56 +2025-03-10 16:22:45,948 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4423964285716 | Take profit: 2092.825630357143 +2025-03-10 16:22:46,028 - INFO - CLOSED short at 2115.52 | PnL: 0.44% | $0.65 +2025-03-10 16:22:46,052 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.3722964285716 | Take profit: 2082.9559303571427 +2025-03-10 16:22:46,076 - INFO - CLOSED short at 2116.06 | PnL: -0.06% | $-0.32 +2025-03-10 16:22:46,129 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.7190464285713 | Take profit: 2082.315680357143 +2025-03-10 16:22:46,202 - INFO - CLOSED short at 2114.32 | PnL: -0.01% | $-0.22 +2025-03-10 16:22:46,299 - INFO - OPENED SHORT at 2113.28 | Stop loss: 2123.8949464285715 | Take profit: 2081.507980357143 +2025-03-10 16:22:46,356 - INFO - CLOSED short at 2115.07 | PnL: -0.08% | $-0.36 +2025-03-10 16:22:46,378 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.7797464285713 | Take profit: 2066.6935803571428 +2025-03-10 16:22:46,404 - INFO - CLOSED short at 2098.28 | PnL: -0.00% | $-0.20 +2025-03-10 16:22:46,428 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.8653464285717 | Take profit: 2059.916780357143 +2025-03-10 16:22:46,476 - INFO - CLOSED short at 2096.36 | PnL: -0.24% | $-0.66 +2025-03-10 16:22:46,587 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.719496428572 | Take profit: 2064.674330357143 +2025-03-10 16:22:46,631 - INFO - CLOSED short at 2100.0 | PnL: -0.18% | $-0.54 +2025-03-10 16:22:46,676 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3926964285715 | Take profit: 2071.214730357143 +2025-03-10 16:22:46,710 - INFO - CLOSED short at 2103.41 | PnL: -0.03% | $-0.24 +2025-03-10 16:22:46,748 - INFO - OPENED SHORT at 2104.22 | Stop loss: 2114.789646428571 | Take profit: 2072.583880357143 +2025-03-10 16:22:46,809 - INFO - CLOSED short at 2105.26 | PnL: -0.05% | $-0.28 +2025-03-10 16:22:46,845 - INFO - OPENED SHORT at 2099.63 | Stop loss: 2110.176696428571 | Take profit: 2068.0627303571428 +2025-03-10 16:22:46,891 - INFO - CLOSED short at 2094.16 | PnL: 0.26% | $0.31 +2025-03-10 16:22:46,916 - INFO - OPENED SHORT at 2096.96 | Stop loss: 2107.493346428572 | Take profit: 2065.4327803571427 +2025-03-10 16:22:46,939 - INFO - CLOSED short at 2098.66 | PnL: -0.08% | $-0.35 +2025-03-10 16:22:46,964 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.091496428571 | Take profit: 2059.158330357143 +2025-03-10 16:22:46,992 - INFO - CLOSED short at 2090.99 | PnL: -0.02% | $-0.23 +2025-03-10 16:22:47,020 - INFO - OPENED SHORT at 2084.95 | Stop loss: 2095.423296428571 | Take profit: 2053.6029303571427 +2025-03-10 16:22:47,046 - INFO - CLOSED short at 2080.58 | PnL: 0.21% | $0.21 +2025-03-10 16:22:47,108 - INFO - OPENED SHORT at 2081.0 | Stop loss: 2091.4535464285714 | Take profit: 2049.712180357143 +2025-03-10 16:22:47,148 - INFO - CLOSED short at 2084.25 | PnL: -0.16% | $-0.49 +2025-03-10 16:22:47,260 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.5338964285716 | Take profit: 2051.751130357143 +2025-03-10 16:22:47,297 - INFO - CLOSED short at 2075.07 | PnL: 0.38% | $0.54 +2025-03-10 16:22:47,320 - INFO - OPENED SHORT at 2067.71 | Stop loss: 2078.0970964285716 | Take profit: 2036.621530357143 +2025-03-10 16:22:47,392 - INFO - CLOSED short at 2043.51 | PnL: 1.17% | $2.03 +2025-03-10 16:22:47,471 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.449096428572 | Take profit: 2027.165530357143 +2025-03-10 16:22:47,528 - INFO - CLOSED short at 2050.18 | PnL: 0.39% | $0.55 +2025-03-10 16:22:47,569 - INFO - OPENED SHORT at 2046.76 | Stop loss: 2057.0423464285714 | Take profit: 2015.9857803571429 +2025-03-10 16:22:47,609 - INFO - CLOSED short at 2043.95 | PnL: 0.14% | $0.07 +2025-03-10 16:22:47,718 - INFO - OPENED LONG at 2042.0 | Stop loss: 2031.7414535714286 | Take profit: 2072.702819642857 +2025-03-10 16:22:47,743 - INFO - CLOSED long at 2036.71 | PnL: -0.26% | $-0.70 +2025-03-10 16:22:47,762 - INFO - OPENED LONG at 2027.51 | Stop loss: 2017.3239035714284 | Take profit: 2057.995469642857 +2025-03-10 16:22:47,783 - INFO - CLOSED long at 2010.35 | PnL: -0.85% | $-1.83 +2025-03-10 16:22:47,784 - INFO - OPENED SHORT at 2010.35 | Stop loss: 2020.4502964285714 | Take profit: 1980.121930357143 +2025-03-10 16:22:47,809 - INFO - CLOSED short at 2015.54 | PnL: -0.26% | $-0.68 +2025-03-10 16:22:47,886 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.62, Avg Loss=$-0.51 +2025-03-10 16:22:47,887 - INFO - Episode 13: Reward=-19.13, Balance=$96.71, Win Rate=31.8%, Trades=22, Episode PnL=$-1.45, Total PnL=$979.44, Max Drawdown=3.4%, Pred Accuracy=96.6% +2025-03-10 16:22:47,887 - INFO - Refreshing data for episode 14 +2025-03-10 16:22:47,888 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:22:48,195 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:22:48,207 - INFO - Initialized environment with 100 candles +2025-03-10 16:22:48,415 - INFO - OPENED LONG at 2128.33 | Stop loss: 2117.6398035714287 | Take profit: 2160.327769642857 +2025-03-10 16:22:48,466 - INFO - CLOSED long at 2124.77 | PnL: -0.17% | $-0.52 +2025-03-10 16:22:48,627 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.8345964285713 | Take profit: 2083.409030357143 +2025-03-10 16:22:48,654 - INFO - CLOSED short at 2114.1 | PnL: 0.05% | $-0.09 +2025-03-10 16:22:48,697 - INFO - OPENED LONG at 2114.32 | Stop loss: 2103.699853571429 | Take profit: 2146.107619642857 +2025-03-10 16:22:48,733 - INFO - CLOSED long at 2114.57 | PnL: 0.01% | $-0.17 +2025-03-10 16:22:48,972 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.598796428572 | Take profit: 2068.4764303571433 +2025-03-10 16:22:48,994 - INFO - CLOSED short at 2096.36 | PnL: 0.18% | $0.15 +2025-03-10 16:22:49,270 - INFO - OPENED SHORT at 2105.26 | Stop loss: 2115.834846428572 | Take profit: 2073.608280357143 +2025-03-10 16:22:49,302 - INFO - CLOSED short at 2099.63 | PnL: 0.27% | $0.33 +2025-03-10 16:22:49,463 - INFO - OPENED SHORT at 2084.95 | Stop loss: 2095.423296428571 | Take profit: 2053.6029303571427 +2025-03-10 16:22:49,488 - INFO - CLOSED short at 2080.58 | PnL: 0.21% | $0.21 +2025-03-10 16:22:49,636 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8453964285713 | Take profit: 2054.0166303571427 +2025-03-10 16:22:49,674 - INFO - CLOSED short at 2084.11 | PnL: 0.06% | $-0.08 +2025-03-10 16:22:49,773 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5900464285714 | Take profit: 2017.502680357143 +2025-03-10 16:22:49,795 - INFO - CLOSED short at 2051.0 | PnL: -0.13% | $-0.45 +2025-03-10 16:22:49,837 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.202996428571 | Take profit: 2022.0238303571427 +2025-03-10 16:22:49,856 - INFO - CLOSED short at 2053.22 | PnL: -0.02% | $-0.23 +2025-03-10 16:22:49,878 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.449096428572 | Take profit: 2027.165530357143 +2025-03-10 16:22:49,918 - INFO - CLOSED short at 2054.03 | PnL: 0.20% | $0.19 +2025-03-10 16:22:49,958 - INFO - OPENED SHORT at 2050.18 | Stop loss: 2060.4794464285715 | Take profit: 2019.3544803571428 +2025-03-10 16:22:49,996 - INFO - CLOSED short at 2046.76 | PnL: 0.17% | $0.13 +2025-03-10 16:22:50,070 - INFO - OPENED SHORT at 2044.1 | Stop loss: 2054.3690464285714 | Take profit: 2013.3656803571428 +2025-03-10 16:22:50,102 - INFO - CLOSED short at 2043.59 | PnL: 0.02% | $-0.15 +2025-03-10 16:22:50,290 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.20, Avg Loss=$-0.24 +2025-03-10 16:22:50,290 - INFO - Episode 14: Reward=-14.29, Balance=$99.32, Win Rate=41.7%, Trades=12, Episode PnL=$-0.68, Total PnL=$978.75, Max Drawdown=0.9%, Pred Accuracy=97.2% +2025-03-10 16:22:50,291 - INFO - Refreshing data for episode 15 +2025-03-10 16:22:50,291 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:22:50,603 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:22:50,613 - INFO - Initialized environment with 100 candles +2025-03-10 16:22:51,707 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.5730464285716 | Take profit: 2092.9536803571427 +2025-03-10 16:22:51,789 - INFO - CLOSED short at 2124.77 | PnL: 0.01% | $-0.18 +2025-03-10 16:22:51,916 - INFO - OPENED SHORT at 2115.52 | Stop loss: 2126.1461464285712 | Take profit: 2083.714380357143 +2025-03-10 16:22:51,937 - INFO - CLOSED short at 2114.75 | PnL: 0.04% | $-0.12 +2025-03-10 16:22:52,104 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.1913964285714 | Take profit: 2082.778630357143 +2025-03-10 16:22:52,144 - INFO - CLOSED short at 2112.57 | PnL: 0.09% | $-0.01 +2025-03-10 16:22:52,471 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3926964285715 | Take profit: 2071.214730357143 +2025-03-10 16:22:52,517 - INFO - CLOSED short at 2103.41 | PnL: -0.03% | $-0.25 +2025-03-10 16:22:52,722 - INFO - OPENED SHORT at 2094.16 | Stop loss: 2104.679346428571 | Take profit: 2062.674780357143 +2025-03-10 16:22:52,767 - INFO - CLOSED short at 2098.66 | PnL: -0.21% | $-0.61 +2025-03-10 16:22:52,813 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.4934964285712 | Take profit: 2059.5523303571426 +2025-03-10 16:22:52,844 - INFO - CLOSED short at 2084.95 | PnL: 0.29% | $0.36 +2025-03-10 16:22:52,998 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8453964285713 | Take profit: 2054.0166303571427 +2025-03-10 16:22:53,048 - INFO - CLOSED short at 2084.11 | PnL: 0.06% | $-0.08 +2025-03-10 16:22:53,129 - INFO - OPENED SHORT at 2067.71 | Stop loss: 2078.0970964285716 | Take profit: 2036.621530357143 +2025-03-10 16:22:53,154 - INFO - CLOSED short at 2048.3 | PnL: 0.94% | $1.62 +2025-03-10 16:22:53,176 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3035464285713 | Take profit: 2020.162180357143 +2025-03-10 16:22:53,198 - INFO - CLOSED short at 2043.51 | PnL: 0.37% | $0.52 +2025-03-10 16:22:53,519 - INFO - OPENED SHORT at 2036.71 | Stop loss: 2046.9420964285716 | Take profit: 2006.086530357143 +2025-03-10 16:22:53,541 - INFO - CLOSED short at 2027.51 | PnL: 0.45% | $0.70 +2025-03-10 16:22:53,652 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.80, Avg Loss=$-0.21 +2025-03-10 16:22:53,654 - INFO - Episode 15: Reward=-11.74, Balance=$101.95, Win Rate=40.0%, Trades=10, Episode PnL=$1.95, Total PnL=$980.71, Max Drawdown=1.2%, Pred Accuracy=97.4% +2025-03-10 16:22:53,655 - INFO - Refreshing data for episode 16 +2025-03-10 16:22:53,655 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:22:53,997 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:22:54,007 - INFO - Initialized environment with 100 candles +2025-03-10 16:22:54,276 - INFO - OPENED LONG at 2120.26 | Stop loss: 2109.610153571429 | Take profit: 2152.1367196428573 +2025-03-10 16:22:54,300 - INFO - CLOSED long at 2116.81 | PnL: -0.16% | $-0.51 +2025-03-10 16:22:54,416 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.8345964285713 | Take profit: 2083.409030357143 +2025-03-10 16:22:54,450 - INFO - CLOSED short at 2114.1 | PnL: 0.05% | $-0.09 +2025-03-10 16:22:54,558 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.1813964285716 | Take profit: 2080.808630357143 +2025-03-10 16:22:54,598 - INFO - CLOSED short at 2113.28 | PnL: -0.03% | $-0.26 +2025-03-10 16:22:54,635 - INFO - OPENED SHORT at 2114.5 | Stop loss: 2125.1210464285714 | Take profit: 2082.709680357143 +2025-03-10 16:22:54,675 - INFO - CLOSED short at 2115.07 | PnL: -0.03% | $-0.25 +2025-03-10 16:22:54,978 - INFO - OPENED SHORT at 2104.22 | Stop loss: 2114.789646428571 | Take profit: 2072.583880357143 +2025-03-10 16:22:55,019 - INFO - CLOSED short at 2104.67 | PnL: -0.02% | $-0.23 +2025-03-10 16:22:55,272 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0314464285716 | Take profit: 2049.2984803571426 +2025-03-10 16:22:55,305 - INFO - CLOSED short at 2084.75 | PnL: -0.20% | $-0.58 +2025-03-10 16:22:55,423 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8453964285713 | Take profit: 2054.0166303571427 +2025-03-10 16:22:55,466 - INFO - CLOSED short at 2084.11 | PnL: 0.06% | $-0.08 +2025-03-10 16:22:55,516 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.4938964285716 | Take profit: 2043.8711303571429 +2025-03-10 16:22:55,539 - INFO - CLOSED short at 2067.71 | PnL: 0.35% | $0.49 +2025-03-10 16:22:55,571 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5900464285714 | Take profit: 2017.502680357143 +2025-03-10 16:22:55,596 - INFO - CLOSED short at 2051.0 | PnL: -0.13% | $-0.45 +2025-03-10 16:22:55,625 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.7760964285717 | Take profit: 2012.7845303571428 +2025-03-10 16:22:55,649 - INFO - CLOSED short at 2052.89 | PnL: -0.46% | $-1.07 +2025-03-10 16:22:55,668 - INFO - OPENED SHORT at 2053.22 | Stop loss: 2063.5346464285712 | Take profit: 2022.3488803571427 +2025-03-10 16:22:55,711 - INFO - CLOSED short at 2058.11 | PnL: -0.24% | $-0.64 +2025-03-10 16:22:55,762 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.3486964285717 | Take profit: 2023.146730357143 +2025-03-10 16:22:55,838 - INFO - CLOSED short at 2046.76 | PnL: 0.35% | $0.48 +2025-03-10 16:22:55,880 - INFO - OPENED SHORT at 2043.95 | Stop loss: 2054.218296428571 | Take profit: 2013.217930357143 +2025-03-10 16:22:55,906 - INFO - CLOSED short at 2044.1 | PnL: -0.01% | $-0.20 +2025-03-10 16:22:55,994 - INFO - OPENED SHORT at 2036.71 | Stop loss: 2046.9420964285716 | Take profit: 2006.086530357143 +2025-03-10 16:22:56,019 - INFO - CLOSED short at 2027.51 | PnL: 0.45% | $0.66 +2025-03-10 16:22:56,146 - INFO - OPENED SHORT at 2019.57 | Stop loss: 2029.7163964285714 | Take profit: 1989.2036303571429 +2025-03-10 16:22:56,188 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.54, Avg Loss=$-0.40 +2025-03-10 16:22:56,189 - INFO - Episode 16: Reward=-20.98, Balance=$97.27, Win Rate=21.4%, Trades=14, Episode PnL=$-2.73, Total PnL=$977.97, Max Drawdown=3.7%, Pred Accuracy=97.3% +2025-03-10 16:22:56,189 - INFO - Refreshing data for episode 17 +2025-03-10 16:22:56,189 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:22:56,502 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:22:56,513 - INFO - Initialized environment with 100 candles +2025-03-10 16:22:56,718 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6133464285713 | Take profit: 2089.0727803571426 +2025-03-10 16:22:56,798 - INFO - CLOSED short at 2128.33 | PnL: -0.35% | $-0.87 +2025-03-10 16:22:56,888 - INFO - OPENED SHORT at 2120.26 | Stop loss: 2130.9098464285717 | Take profit: 2088.383280357143 +2025-03-10 16:22:56,976 - INFO - CLOSED short at 2114.78 | PnL: 0.26% | $0.31 +2025-03-10 16:22:57,106 - INFO - OPENED SHORT at 2116.06 | Stop loss: 2126.688846428571 | Take profit: 2084.246280357143 +2025-03-10 16:22:57,148 - INFO - CLOSED short at 2115.21 | PnL: 0.04% | $-0.12 +2025-03-10 16:22:57,182 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.7190464285713 | Take profit: 2082.315680357143 +2025-03-10 16:22:57,237 - INFO - CLOSED short at 2114.32 | PnL: -0.01% | $-0.21 +2025-03-10 16:22:57,263 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.1913964285714 | Take profit: 2082.778630357143 +2025-03-10 16:22:57,287 - INFO - CLOSED short at 2112.57 | PnL: 0.09% | $-0.01 +2025-03-10 16:22:57,314 - INFO - OPENED SHORT at 2113.28 | Stop loss: 2123.8949464285715 | Take profit: 2081.507980357143 +2025-03-10 16:22:57,344 - INFO - CLOSED short at 2114.5 | PnL: -0.06% | $-0.31 +2025-03-10 16:22:57,374 - INFO - OPENED SHORT at 2115.07 | Stop loss: 2125.6938964285714 | Take profit: 2083.271130357143 +2025-03-10 16:22:57,487 - INFO - CLOSED short at 2096.36 | PnL: 0.88% | $1.52 +2025-03-10 16:22:57,487 - INFO - OPENED LONG at 2096.36 | Stop loss: 2085.8296535714285 | Take profit: 2127.8782196428574 +2025-03-10 16:22:57,515 - INFO - CLOSED long at 2089.04 | PnL: -0.35% | $-0.88 +2025-03-10 16:22:57,709 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9755964285714 | Take profit: 2071.786030357143 +2025-03-10 16:22:57,733 - INFO - CLOSED short at 2104.22 | PnL: -0.04% | $-0.27 +2025-03-10 16:22:57,781 - INFO - OPENED SHORT at 2105.26 | Stop loss: 2115.834846428572 | Take profit: 2073.608280357143 +2025-03-10 16:22:57,810 - INFO - CLOSED short at 2099.63 | PnL: 0.27% | $0.32 +2025-03-10 16:22:57,880 - INFO - OPENED SHORT at 2096.96 | Stop loss: 2107.493346428572 | Take profit: 2065.4327803571427 +2025-03-10 16:22:57,923 - INFO - CLOSED short at 2098.66 | PnL: -0.08% | $-0.35 +2025-03-10 16:22:57,969 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.091496428571 | Take profit: 2059.158330357143 +2025-03-10 16:22:58,107 - INFO - CLOSED short at 2084.75 | PnL: 0.28% | $0.35 +2025-03-10 16:22:58,200 - INFO - OPENED SHORT at 2084.11 | Stop loss: 2094.5790964285716 | Take profit: 2052.775530357143 +2025-03-10 16:22:58,226 - INFO - CLOSED short at 2083.07 | PnL: 0.05% | $-0.10 +2025-03-10 16:22:58,249 - INFO - OPENED SHORT at 2075.07 | Stop loss: 2085.4938964285716 | Take profit: 2043.8711303571429 +2025-03-10 16:22:58,345 - INFO - CLOSED short at 2051.0 | PnL: 1.16% | $2.06 +2025-03-10 16:22:58,431 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.202996428571 | Take profit: 2022.0238303571427 +2025-03-10 16:22:58,476 - INFO - CLOSED short at 2053.22 | PnL: -0.02% | $-0.23 +2025-03-10 16:22:58,521 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.3486964285717 | Take profit: 2023.146730357143 +2025-03-10 16:22:58,549 - INFO - CLOSED short at 2050.18 | PnL: 0.19% | $0.17 +2025-03-10 16:22:58,577 - INFO - OPENED SHORT at 2046.76 | Stop loss: 2057.0423464285714 | Take profit: 2015.9857803571429 +2025-03-10 16:22:58,787 - INFO - CLOSED short at 2010.35 | PnL: 1.78% | $3.33 +2025-03-10 16:22:58,825 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6662464285714 | Take profit: 1985.2340803571428 +2025-03-10 16:22:58,908 - INFO - CLOSED short at 2019.57 | PnL: -0.20% | $-0.61 +2025-03-10 16:22:58,932 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.15, Avg Loss=$-0.36 +2025-03-10 16:22:58,933 - INFO - Episode 17: Reward=-8.05, Balance=$104.09, Win Rate=38.9%, Trades=18, Episode PnL=$4.09, Total PnL=$982.06, Max Drawdown=1.2%, Pred Accuracy=97.1% +2025-03-10 16:22:58,933 - INFO - Refreshing data for episode 18 +2025-03-10 16:22:58,934 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:22:59,269 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:22:59,279 - INFO - Initialized environment with 100 candles +2025-03-10 16:22:59,312 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6133464285713 | Take profit: 2089.0727803571426 +2025-03-10 16:22:59,479 - INFO - CLOSED short at 2115.52 | PnL: 0.26% | $0.31 +2025-03-10 16:22:59,514 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.3722964285716 | Take profit: 2082.9559303571427 +2025-03-10 16:22:59,548 - INFO - CLOSED short at 2116.06 | PnL: -0.06% | $-0.32 +2025-03-10 16:22:59,587 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.8345964285713 | Take profit: 2083.409030357143 +2025-03-10 16:22:59,622 - INFO - CLOSED short at 2114.1 | PnL: 0.05% | $-0.09 +2025-03-10 16:22:59,656 - INFO - OPENED SHORT at 2115.11 | Stop loss: 2125.734096428572 | Take profit: 2083.310530357143 +2025-03-10 16:22:59,706 - INFO - CLOSED short at 2114.57 | PnL: 0.03% | $-0.15 +2025-03-10 16:22:59,707 - INFO - OPENED LONG at 2114.57 | Stop loss: 2103.948603571429 | Take profit: 2146.3613696428574 +2025-03-10 16:22:59,729 - INFO - CLOSED long at 2112.57 | PnL: -0.09% | $-0.38 +2025-03-10 16:22:59,729 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.1813964285716 | Take profit: 2080.808630357143 +2025-03-10 16:22:59,755 - INFO - CLOSED short at 2113.28 | PnL: -0.03% | $-0.26 +2025-03-10 16:22:59,803 - INFO - OPENED SHORT at 2115.07 | Stop loss: 2125.6938964285714 | Take profit: 2083.271130357143 +2025-03-10 16:22:59,828 - INFO - CLOSED short at 2098.24 | PnL: 0.80% | $1.35 +2025-03-10 16:22:59,855 - INFO - OPENED SHORT at 2098.28 | Stop loss: 2108.8199464285717 | Take profit: 2066.732980357143 +2025-03-10 16:22:59,965 - INFO - CLOSED short at 2096.36 | PnL: 0.09% | $-0.02 +2025-03-10 16:23:00,117 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.719496428572 | Take profit: 2064.674330357143 +2025-03-10 16:23:00,442 - INFO - CLOSED short at 2096.96 | PnL: -0.04% | $-0.27 +2025-03-10 16:23:00,486 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.201846428571 | Take profit: 2067.107280357143 +2025-03-10 16:23:00,699 - INFO - CLOSED short at 2084.25 | PnL: 0.69% | $1.15 +2025-03-10 16:23:00,741 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8453964285713 | Take profit: 2054.0166303571427 +2025-03-10 16:23:00,888 - INFO - CLOSED short at 2067.71 | PnL: 0.85% | $1.48 +2025-03-10 16:23:00,912 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5900464285714 | Take profit: 2017.502680357143 +2025-03-10 16:23:00,960 - INFO - CLOSED short at 2043.51 | PnL: 0.23% | $0.27 +2025-03-10 16:23:00,984 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.202996428571 | Take profit: 2022.0238303571427 +2025-03-10 16:23:01,052 - INFO - CLOSED short at 2054.03 | PnL: -0.06% | $-0.31 +2025-03-10 16:23:01,081 - INFO - OPENED SHORT at 2050.18 | Stop loss: 2060.4794464285715 | Take profit: 2019.3544803571428 +2025-03-10 16:23:01,119 - INFO - CLOSED short at 2046.76 | PnL: 0.17% | $0.13 +2025-03-10 16:23:01,249 - INFO - OPENED SHORT at 2043.59 | Stop loss: 2053.8564964285715 | Take profit: 2012.8633303571428 +2025-03-10 16:23:01,292 - INFO - CLOSED short at 2042.0 | PnL: 0.08% | $-0.04 +2025-03-10 16:23:01,316 - INFO - OPENED SHORT at 2036.71 | Stop loss: 2046.9420964285716 | Take profit: 2006.086530357143 +2025-03-10 16:23:01,340 - INFO - CLOSED short at 2027.51 | PnL: 0.45% | $0.71 +2025-03-10 16:23:01,365 - INFO - OPENED SHORT at 2010.35 | Stop loss: 2020.4502964285714 | Take profit: 1980.121930357143 +2025-03-10 16:23:01,457 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.77, Avg Loss=$-0.20 +2025-03-10 16:23:01,458 - INFO - Episode 18: Reward=-3.43, Balance=$103.55, Win Rate=43.8%, Trades=16, Episode PnL=$3.93, Total PnL=$985.61, Max Drawdown=1.2%, Pred Accuracy=97.1% +2025-03-10 16:23:01,458 - INFO - Refreshing data for episode 19 +2025-03-10 16:23:01,459 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:23:01,768 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:23:01,778 - INFO - Initialized environment with 100 candles +2025-03-10 16:23:01,968 - INFO - OPENED SHORT at 2120.96 | Stop loss: 2131.6133464285713 | Take profit: 2089.0727803571426 +2025-03-10 16:23:02,077 - INFO - CLOSED short at 2128.33 | PnL: -0.35% | $-0.87 +2025-03-10 16:23:02,100 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4423964285716 | Take profit: 2092.825630357143 +2025-03-10 16:23:02,255 - INFO - CLOSED short at 2115.21 | PnL: 0.45% | $0.68 +2025-03-10 16:23:02,278 - INFO - OPENED SHORT at 2114.1 | Stop loss: 2124.7190464285713 | Take profit: 2082.315680357143 +2025-03-10 16:23:02,301 - INFO - CLOSED short at 2115.11 | PnL: -0.05% | $-0.29 +2025-03-10 16:23:02,326 - INFO - OPENED SHORT at 2114.32 | Stop loss: 2124.9401464285716 | Take profit: 2082.532380357143 +2025-03-10 16:23:02,427 - INFO - CLOSED short at 2114.5 | PnL: -0.01% | $-0.21 +2025-03-10 16:23:02,452 - INFO - OPENED SHORT at 2115.07 | Stop loss: 2125.6938964285714 | Take profit: 2083.271130357143 +2025-03-10 16:23:02,641 - INFO - CLOSED short at 2100.0 | PnL: 0.71% | $1.19 +2025-03-10 16:23:02,664 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3926964285715 | Take profit: 2071.214730357143 +2025-03-10 16:23:03,016 - INFO - CLOSED short at 2085.37 | PnL: 0.83% | $1.43 +2025-03-10 16:23:03,041 - INFO - OPENED SHORT at 2084.11 | Stop loss: 2094.5790964285716 | Take profit: 2052.775530357143 +2025-03-10 16:23:03,145 - INFO - TAKE PROFIT hit for short at 2052.775530357143 | PnL: 1.50% | $2.80 +2025-03-10 16:23:03,168 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3035464285713 | Take profit: 2020.162180357143 +2025-03-10 16:23:03,241 - INFO - CLOSED short at 2053.22 | PnL: -0.11% | $-0.43 +2025-03-10 16:23:03,289 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.3486964285717 | Take profit: 2023.146730357143 +2025-03-10 16:23:03,513 - INFO - TAKE PROFIT hit for short at 2023.146730357143 | PnL: 1.50% | $2.86 +2025-03-10 16:23:03,535 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6662464285714 | Take profit: 1985.2340803571428 +2025-03-10 16:23:03,600 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.79, Avg Loss=$-0.45 +2025-03-10 16:23:03,601 - INFO - Episode 19: Reward=-1.46, Balance=$107.16, Win Rate=55.6%, Trades=9, Episode PnL=$7.16, Total PnL=$992.77, Max Drawdown=0.9%, Pred Accuracy=97.2% +2025-03-10 16:23:03,602 - INFO - Refreshing data for episode 20 +2025-03-10 16:23:03,603 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:23:03,907 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:23:03,916 - INFO - Initialized environment with 100 candles +2025-03-10 16:23:04,684 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.5706964285714 | Take profit: 2092.9572053571433 +2025-03-10 16:23:04,823 - INFO - CLOSED short at 2115.52 | PnL: 0.44% | $0.67 +2025-03-10 16:23:04,846 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.3699464285714 | Take profit: 2082.959455357143 +2025-03-10 16:23:05,611 - INFO - TAKE PROFIT hit for short at 2082.959455357143 | PnL: 1.50% | $2.76 +2025-03-10 16:23:05,636 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2199464285713 | Take profit: 2053.409455357143 +2025-03-10 16:23:05,911 - INFO - TAKE PROFIT hit for short at 2053.409455357143 | PnL: 1.50% | $2.84 +2025-03-10 16:23:05,938 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.301196428571 | Take profit: 2020.165705357143 +2025-03-10 16:23:06,337 - INFO - TAKE PROFIT hit for short at 2020.165705357143 | PnL: 1.50% | $2.92 +2025-03-10 16:23:06,364 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6638964285717 | Take profit: 1985.237605357143 +2025-03-10 16:23:06,463 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.30, Avg Loss=$0.00 +2025-03-10 16:23:06,464 - INFO - Episode 20: Reward=1.70, Balance=$109.19, Win Rate=100.0%, Trades=4, Episode PnL=$9.19, Total PnL=$1001.96, Max Drawdown=0.0%, Pred Accuracy=97.5% +2025-03-10 16:23:06,614 - INFO - Model saved to models/trading_agent_best_pnl.pt +2025-03-10 16:23:06,614 - INFO - New best PnL model saved: $9.19 +2025-03-10 16:23:06,766 - INFO - Model saved to checkpoints/trading_agent_episode_20.pt +2025-03-10 16:23:06,767 - INFO - Checkpoint saved at episode 20 +2025-03-10 16:23:06,767 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:23:07,791 - INFO - Visualization saved for episode 20 +2025-03-10 16:23:09,533 - INFO - Visualization saved for episode 20 +2025-03-10 16:23:09,546 - INFO - Refreshing data for episode 21 +2025-03-10 16:23:09,547 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:23:09,858 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:23:09,868 - INFO - Initialized environment with 100 candles +2025-03-10 16:23:09,902 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.572017857143 | Take profit: 2092.955223214286 +2025-03-10 16:23:10,313 - INFO - CLOSED short at 2115.07 | PnL: 0.46% | $0.71 +2025-03-10 16:23:10,337 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.7787178571425 | Take profit: 2066.6951232142856 +2025-03-10 16:23:11,228 - INFO - TAKE PROFIT hit for short at 2066.6951232142856 | PnL: 1.50% | $2.76 +2025-03-10 16:23:11,271 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.302517857143 | Take profit: 2020.1637232142857 +2025-03-10 16:23:11,691 - INFO - TAKE PROFIT hit for short at 2020.1637232142857 | PnL: 1.50% | $2.84 +2025-03-10 16:23:11,721 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6652178571428 | Take profit: 1985.2356232142859 +2025-03-10 16:23:11,832 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.10, Avg Loss=$0.00 +2025-03-10 16:23:11,833 - INFO - Episode 21: Reward=1.63, Balance=$106.31, Win Rate=100.0%, Trades=3, Episode PnL=$6.31, Total PnL=$1008.27, Max Drawdown=0.0%, Pred Accuracy=97.5% +2025-03-10 16:23:11,834 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:23:11,834 - INFO - Refreshing data for episode 22 +2025-03-10 16:23:11,835 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:23:12,136 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:23:12,151 - INFO - Initialized environment with 100 candles +2025-03-10 16:23:12,188 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.572017857143 | Take profit: 2092.955223214286 +2025-03-10 16:23:12,708 - INFO - TAKE PROFIT hit for short at 2092.955223214286 | PnL: 1.50% | $2.75 +2025-03-10 16:23:12,747 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.597767857143 | Take profit: 2068.477973214286 +2025-03-10 16:23:41,634 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 16:23:41,655 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 16:23:41,655 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:23:41,656 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:23:45,521 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 16:23:45,539 - INFO - Initialized environment with 500 candles +2025-03-10 16:23:48,226 - INFO - Starting continuous training mode. Press Ctrl+C to stop. +2025-03-10 16:23:48,226 - INFO - Starting training batch 1 +2025-03-10 16:23:48,227 - INFO - Refreshing data for new training batch +2025-03-10 16:23:48,227 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:23:48,573 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 16:23:48,588 - INFO - Initialized environment with 500 candles +2025-03-10 16:23:48,588 - INFO - Updated environment with fresh candles +2025-03-10 16:23:48,589 - INFO - Starting training on device: cuda +2025-03-10 16:23:48,590 - INFO - Loading best model from models/trading_agent_best_pnl.pt to resume training +2025-03-10 16:23:48,590 - INFO - Loading model from models/trading_agent_best_pnl.pt +2025-03-10 16:23:48,775 - INFO - Model loaded successfully with weights_only=True +2025-03-10 16:23:48,783 - INFO - Resumed with best metrics - Reward: 202.74, PnL: $9.19, Win Rate: 73.3% +2025-03-10 16:23:48,787 - INFO - Refreshing data for episode 0 +2025-03-10 16:23:48,788 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:23:49,108 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:23:49,118 - INFO - Initialized environment with 100 candles +2025-03-10 16:23:50,117 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.573478571429 | Take profit: 2092.9530321428574 +2025-03-10 16:23:50,162 - INFO - CLOSED short at 2112.57 | PnL: 0.58% | $0.94 +2025-03-10 16:23:50,162 - INFO - OPENED LONG at 2112.57 | Stop loss: 2101.9581714285714 | Take profit: 2144.332017857143 +2025-03-10 16:23:50,167 - INFO - CLOSED long at 2113.28 | PnL: 0.03% | $-0.13 +2025-03-10 16:23:50,168 - INFO - OPENED SHORT at 2113.28 | Stop loss: 2123.895378571429 | Take profit: 2081.5073321428576 +2025-03-10 16:23:50,191 - INFO - CLOSED short at 2096.36 | PnL: 0.80% | $1.38 +2025-03-10 16:23:50,195 - INFO - OPENED SHORT at 2089.04 | Stop loss: 2099.5341785714286 | Take profit: 2057.630932142857 +2025-03-10 16:23:50,211 - INFO - STOP LOSS hit for short at 2099.5341785714286 | PnL: -0.50% | $-1.20 +2025-03-10 16:23:50,215 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.393128571429 | Take profit: 2071.214082142857 +2025-03-10 16:23:50,285 - INFO - TAKE PROFIT hit for short at 2071.214082142857 | PnL: 1.50% | $2.77 +2025-03-10 16:23:50,288 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.590478571429 | Take profit: 2017.5020321428574 +2025-03-10 16:23:50,461 - INFO - TAKE PROFIT hit for short at 2017.5020321428574 | PnL: 1.50% | $2.84 +2025-03-10 16:23:50,491 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6666785714285 | Take profit: 1985.233432142857 +2025-03-10 16:23:50,512 - INFO - CLOSED short at 2014.41 | PnL: 0.06% | $-0.09 +2025-03-10 16:23:50,513 - INFO - OPENED LONG at 2014.41 | Stop loss: 2004.2889714285714 | Take profit: 2044.6996178571428 +2025-03-10 16:23:50,541 - INFO - CLOSED long at 2019.57 | PnL: 0.26% | $0.32 +2025-03-10 16:23:50,541 - INFO - OPENED SHORT at 2019.57 | Stop loss: 2029.7168285714286 | Take profit: 1989.202982142857 +2025-03-10 16:23:50,564 - INFO - CLOSED short at 2014.56 | PnL: 0.25% | $0.31 +2025-03-10 16:23:50,587 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 60.0% in downtrends | Avg Win=$1.43, Avg Loss=$-0.48 +2025-03-10 16:23:50,588 - INFO - Episode 0: Reward=16.62, Balance=$107.14, Win Rate=66.7%, Trades=9, Episode PnL=$6.95, Total PnL=$7.14, Max Drawdown=1.2%, Pred Accuracy=99.6% +2025-03-10 16:23:50,914 - INFO - Model saved to checkpoints/trading_agent_episode_0.pt +2025-03-10 16:23:50,916 - INFO - Checkpoint saved at episode 0 +2025-03-10 16:23:52,085 - INFO - Visualization saved for episode 0 +2025-03-10 16:23:53,869 - INFO - Visualization saved for episode 0 +2025-03-10 16:23:53,884 - INFO - Refreshing data for episode 1 +2025-03-10 16:23:53,885 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:23:54,204 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:23:54,218 - INFO - Initialized environment with 100 candles +2025-03-10 16:23:54,251 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.573478571429 | Take profit: 2092.9530321428574 +2025-03-10 16:23:54,541 - INFO - CLOSED short at 2114.57 | PnL: 0.49% | $0.75 +2025-03-10 16:23:54,564 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.1818285714285 | Take profit: 2080.8079821428573 +2025-03-10 16:23:54,863 - INFO - CLOSED short at 2103.41 | PnL: 0.43% | $0.66 +2025-03-10 16:23:54,887 - INFO - OPENED SHORT at 2104.22 | Stop loss: 2114.7900785714282 | Take profit: 2072.583232142857 +2025-03-10 16:23:55,078 - INFO - CLOSED short at 2090.99 | PnL: 0.63% | $1.05 +2025-03-10 16:23:55,105 - INFO - OPENED SHORT at 2084.95 | Stop loss: 2095.4237285714285 | Take profit: 2053.602282142857 +2025-03-10 16:23:55,216 - INFO - CLOSED short at 2085.37 | PnL: -0.02% | $-0.24 +2025-03-10 16:23:55,241 - INFO - OPENED SHORT at 2084.11 | Stop loss: 2094.5795285714285 | Take profit: 2052.774882142857 +2025-03-10 16:23:55,336 - INFO - CLOSED short at 2048.3 | PnL: 1.72% | $3.23 +2025-03-10 16:23:55,382 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.7765285714286 | Take profit: 2012.7838821428572 +2025-03-10 16:23:55,430 - INFO - CLOSED short at 2053.22 | PnL: -0.48% | $-1.18 +2025-03-10 16:23:55,510 - INFO - OPENED SHORT at 2050.18 | Stop loss: 2060.479878571429 | Take profit: 2019.353832142857 +2025-03-10 16:23:55,557 - INFO - CLOSED short at 2043.95 | PnL: 0.30% | $0.42 +2025-03-10 16:23:55,579 - INFO - OPENED LONG at 2044.1 | Stop loss: 2033.8305214285713 | Take profit: 2074.8349678571426 +2025-03-10 16:23:55,603 - INFO - CLOSED long at 2043.59 | PnL: -0.02% | $-0.26 +2025-03-10 16:23:55,648 - INFO - OPENED SHORT at 2036.71 | Stop loss: 2046.9425285714285 | Take profit: 2006.0858821428571 +2025-03-10 16:23:55,670 - INFO - CLOSED short at 2027.51 | PnL: 0.45% | $0.72 +2025-03-10 16:23:55,799 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$1.14, Avg Loss=$-0.56 +2025-03-10 16:23:55,800 - INFO - Episode 1: Reward=16.01, Balance=$105.14, Win Rate=66.7%, Trades=9, Episode PnL=$5.14, Total PnL=$12.29, Max Drawdown=1.1%, Pred Accuracy=99.6% +2025-03-10 16:23:55,800 - INFO - Refreshing data for episode 2 +2025-03-10 16:23:55,800 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:23:56,111 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:23:56,120 - INFO - Initialized environment with 100 candles +2025-03-10 16:23:56,496 - INFO - OPENED SHORT at 2114.5 | Stop loss: 2125.1214785714287 | Take profit: 2082.7090321428573 +2025-03-10 16:23:56,598 - INFO - CLOSED short at 2100.05 | PnL: 0.68% | $1.14 +2025-03-10 16:23:56,599 - INFO - OPENED LONG at 2100.05 | Stop loss: 2089.5007714285716 | Take profit: 2131.624217857143 +2025-03-10 16:23:56,623 - INFO - CLOSED long at 2096.36 | PnL: -0.18% | $-0.54 +2025-03-10 16:23:56,623 - INFO - OPENED SHORT at 2096.36 | Stop loss: 2106.8907785714287 | Take profit: 2064.841132142857 +2025-03-10 16:23:56,661 - INFO - CLOSED short at 2089.04 | PnL: 0.35% | $0.49 +2025-03-10 16:23:56,706 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3381785714287 | Take profit: 2058.418932142857 +2025-03-10 16:23:56,841 - INFO - STOP LOSS hit for short at 2100.3381785714287 | PnL: -0.50% | $-1.19 +2025-03-10 16:23:56,881 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9760285714283 | Take profit: 2071.785382142857 +2025-03-10 16:23:57,657 - INFO - TAKE PROFIT hit for short at 2071.785382142857 | PnL: 1.50% | $2.74 +2025-03-10 16:23:57,691 - INFO - OPENED LONG at 2048.3 | Stop loss: 2038.0095214285716 | Take profit: 2079.097967857143 +2025-03-10 16:23:57,727 - INFO - CLOSED long at 2051.0 | PnL: 0.13% | $0.06 +2025-03-10 16:23:57,727 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3039785714286 | Take profit: 2020.1615321428571 +2025-03-10 16:23:58,146 - INFO - TAKE PROFIT hit for short at 2020.1615321428571 | PnL: 1.50% | $2.82 +2025-03-10 16:23:58,170 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6666785714285 | Take profit: 1985.233432142857 +2025-03-10 16:23:58,284 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$1.45, Avg Loss=$-0.87 +2025-03-10 16:23:58,285 - INFO - Episode 2: Reward=12.59, Balance=$105.52, Win Rate=71.4%, Trades=7, Episode PnL=$6.00, Total PnL=$17.80, Max Drawdown=1.2%, Pred Accuracy=99.7% +2025-03-10 16:23:58,285 - INFO - Refreshing data for episode 3 +2025-03-10 16:23:58,286 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:23:58,585 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:23:58,595 - INFO - Initialized environment with 100 candles +2025-03-10 16:23:58,629 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.573478571429 | Take profit: 2092.9530321428574 +2025-03-10 16:23:58,927 - INFO - CLOSED short at 2114.32 | PnL: 0.50% | $0.78 +2025-03-10 16:23:58,969 - INFO - OPENED SHORT at 2114.57 | Stop loss: 2125.1918285714287 | Take profit: 2082.777982142857 +2025-03-10 16:23:59,135 - INFO - CLOSED short at 2098.28 | PnL: 0.77% | $1.32 +2025-03-10 16:23:59,159 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.8657785714286 | Take profit: 2059.9161321428574 +2025-03-10 16:23:59,405 - INFO - STOP LOSS hit for short at 2101.8657785714286 | PnL: -0.50% | $-1.20 +2025-03-10 16:23:59,459 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9760285714283 | Take profit: 2071.785382142857 +2025-03-10 16:23:59,788 - INFO - CLOSED short at 2084.95 | PnL: 0.88% | $1.53 +2025-03-10 16:23:59,817 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0318785714285 | Take profit: 2049.2978321428573 +2025-03-10 16:24:00,074 - INFO - TAKE PROFIT hit for short at 2049.2978321428573 | PnL: 1.50% | $2.81 +2025-03-10 16:24:00,105 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3039785714286 | Take profit: 2020.1615321428571 +2025-03-10 16:24:00,460 - INFO - TAKE PROFIT hit for short at 2020.1615321428571 | PnL: 1.50% | $2.89 +2025-03-10 16:24:00,485 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6666785714285 | Take profit: 1985.233432142857 +2025-03-10 16:24:00,576 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$1.87, Avg Loss=$-1.20 +2025-03-10 16:24:00,578 - INFO - Episode 3: Reward=19.07, Balance=$108.12, Win Rate=83.3%, Trades=6, Episode PnL=$8.12, Total PnL=$25.93, Max Drawdown=1.2%, Pred Accuracy=99.7% +2025-03-10 16:24:00,579 - INFO - Refreshing data for episode 4 +2025-03-10 16:24:00,579 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:00,894 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:00,907 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:00,941 - INFO - OPENED SHORT at 2124.9 | Stop loss: 2135.573478571429 | Take profit: 2092.9530321428574 +2025-03-10 16:24:00,988 - INFO - CLOSED short at 2124.77 | PnL: 0.01% | $-0.18 +2025-03-10 16:24:01,013 - INFO - OPENED SHORT at 2120.26 | Stop loss: 2130.910278571429 | Take profit: 2088.3826321428573 +2025-03-10 16:24:01,236 - INFO - CLOSED short at 2114.57 | PnL: 0.27% | $0.33 +2025-03-10 16:24:01,258 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.1818285714285 | Take profit: 2080.8079821428573 +2025-03-10 16:24:01,283 - INFO - CLOSED short at 2113.28 | PnL: -0.03% | $-0.26 +2025-03-10 16:24:01,306 - INFO - OPENED SHORT at 2114.5 | Stop loss: 2125.1214785714287 | Take profit: 2082.7090321428573 +2025-03-10 16:24:01,377 - INFO - CLOSED short at 2098.28 | PnL: 0.77% | $1.30 +2025-03-10 16:24:01,402 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.8657785714286 | Take profit: 2059.9161321428574 +2025-03-10 16:24:01,537 - INFO - CLOSED short at 2100.0 | PnL: -0.41% | $-1.01 +2025-03-10 16:24:01,560 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.393128571429 | Take profit: 2071.214082142857 +2025-03-10 16:24:02,041 - INFO - TAKE PROFIT hit for short at 2071.214082142857 | PnL: 1.50% | $2.75 +2025-03-10 16:24:02,071 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.590478571429 | Take profit: 2017.5020321428574 +2025-03-10 16:24:02,408 - INFO - CLOSED short at 2036.71 | PnL: 0.57% | $0.94 +2025-03-10 16:24:02,408 - INFO - OPENED LONG at 2036.71 | Stop loss: 2026.4774714285716 | Take profit: 2067.334117857143 +2025-03-10 16:24:02,441 - INFO - CLOSED long at 2027.51 | PnL: -0.45% | $-1.12 +2025-03-10 16:24:02,441 - INFO - OPENED SHORT at 2027.51 | Stop loss: 2037.6965285714284 | Take profit: 1997.0238821428572 +2025-03-10 16:24:02,587 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.33, Avg Loss=$-0.64 +2025-03-10 16:24:02,588 - INFO - Episode 4: Reward=11.14, Balance=$102.74, Win Rate=50.0%, Trades=8, Episode PnL=$3.86, Total PnL=$28.66, Max Drawdown=1.0%, Pred Accuracy=99.7% +2025-03-10 16:24:02,588 - INFO - Refreshing data for episode 5 +2025-03-10 16:24:02,588 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:02,915 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:02,926 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:03,659 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0193964285713 | Take profit: 2096.333430357143 +2025-03-10 16:24:04,202 - INFO - TAKE PROFIT hit for short at 2096.333430357143 | PnL: 1.50% | $2.75 +2025-03-10 16:24:04,243 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.5979964285716 | Take profit: 2068.477630357143 +2025-03-10 16:24:04,297 - INFO - CLOSED short at 2089.04 | PnL: 0.52% | $0.85 +2025-03-10 16:24:04,298 - INFO - OPENED LONG at 2089.04 | Stop loss: 2078.5470535714285 | Take profit: 2120.447219642857 +2025-03-10 16:24:04,349 - INFO - CLOSED long at 2096.19 | PnL: 0.34% | $0.49 +2025-03-10 16:24:04,349 - INFO - OPENED SHORT at 2096.19 | Stop loss: 2106.7186964285715 | Take profit: 2064.675530357143 +2025-03-10 16:24:04,372 - INFO - CLOSED short at 2100.0 | PnL: -0.18% | $-0.57 +2025-03-10 16:24:04,403 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3918964285717 | Take profit: 2071.215930357143 +2025-03-10 16:24:04,429 - INFO - CLOSED short at 2103.41 | PnL: -0.03% | $-0.26 +2025-03-10 16:24:04,457 - INFO - OPENED SHORT at 2104.22 | Stop loss: 2114.7888464285716 | Take profit: 2072.585080357143 +2025-03-10 16:24:04,500 - INFO - CLOSED short at 2104.67 | PnL: -0.02% | $-0.25 +2025-03-10 16:24:04,574 - INFO - OPENED SHORT at 2099.63 | Stop loss: 2110.175896428572 | Take profit: 2068.063930357143 +2025-03-10 16:24:04,644 - INFO - CLOSED short at 2094.16 | PnL: 0.26% | $0.32 +2025-03-10 16:24:04,675 - INFO - OPENED SHORT at 2096.96 | Stop loss: 2107.492546428571 | Take profit: 2065.433980357143 +2025-03-10 16:24:04,720 - INFO - CLOSED short at 2090.59 | PnL: 0.30% | $0.41 +2025-03-10 16:24:04,742 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.4926964285714 | Take profit: 2059.553530357143 +2025-03-10 16:24:04,765 - INFO - CLOSED short at 2084.95 | PnL: 0.29% | $0.38 +2025-03-10 16:24:04,859 - INFO - OPENED SHORT at 2084.25 | Stop loss: 2094.7189964285712 | Take profit: 2052.914630357143 +2025-03-10 16:24:04,895 - INFO - CLOSED short at 2085.37 | PnL: -0.05% | $-0.31 +2025-03-10 16:24:04,932 - INFO - OPENED SHORT at 2084.11 | Stop loss: 2094.578296428572 | Take profit: 2052.776730357143 +2025-03-10 16:24:05,042 - INFO - CLOSED short at 2067.71 | PnL: 0.79% | $1.39 +2025-03-10 16:24:05,161 - INFO - OPENED SHORT at 2053.22 | Stop loss: 2063.5338464285715 | Take profit: 2022.3500803571428 +2025-03-10 16:24:05,183 - INFO - CLOSED short at 2058.11 | PnL: -0.24% | $-0.70 +2025-03-10 16:24:05,386 - INFO - OPENED SHORT at 2042.0 | Stop loss: 2052.2577464285714 | Take profit: 2011.2983803571428 +2025-03-10 16:24:05,427 - INFO - CLOSED short at 2036.71 | PnL: 0.26% | $0.32 +2025-03-10 16:24:05,472 - INFO - OPENED SHORT at 2027.51 | Stop loss: 2037.6952964285715 | Take profit: 1997.025730357143 +2025-03-10 16:24:05,496 - INFO - CLOSED short at 2010.35 | PnL: 0.85% | $1.53 +2025-03-10 16:24:05,634 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$0.94, Avg Loss=$-0.42 +2025-03-10 16:24:05,635 - INFO - Episode 5: Reward=12.50, Balance=$106.37, Win Rate=64.3%, Trades=14, Episode PnL=$5.88, Total PnL=$35.03, Max Drawdown=0.7%, Pred Accuracy=99.6% +2025-03-10 16:24:05,635 - INFO - Refreshing data for episode 6 +2025-03-10 16:24:05,636 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:05,998 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:06,009 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:06,216 - INFO - OPENED SHORT at 2120.26 | Stop loss: 2130.909210714286 | Take profit: 2088.3842339285716 +2025-03-10 16:24:06,338 - INFO - CLOSED short at 2114.75 | PnL: 0.26% | $0.31 +2025-03-10 16:24:06,388 - INFO - OPENED LONG at 2115.21 | Stop loss: 2104.5860392857144 | Take profit: 2147.0100160714287 +2025-03-10 16:24:06,417 - INFO - CLOSED long at 2114.1 | PnL: -0.05% | $-0.30 +2025-03-10 16:24:06,442 - INFO - OPENED SHORT at 2115.11 | Stop loss: 2125.7334607142857 | Take profit: 2083.3114839285713 +2025-03-10 16:24:06,470 - INFO - CLOSED short at 2114.32 | PnL: 0.04% | $-0.12 +2025-03-10 16:24:06,552 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.180760714286 | Take profit: 2080.8095839285716 +2025-03-10 16:24:06,664 - INFO - CLOSED short at 2115.07 | PnL: -0.12% | $-0.43 +2025-03-10 16:24:06,689 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.7791107142853 | Take profit: 2066.694533928571 +2025-03-10 16:24:06,712 - INFO - CLOSED short at 2098.28 | PnL: -0.00% | $-0.20 +2025-03-10 16:24:06,745 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.864710714286 | Take profit: 2059.9177339285716 +2025-03-10 16:24:06,818 - INFO - CLOSED short at 2089.04 | PnL: 0.11% | $0.02 +2025-03-10 16:24:06,843 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.337110714286 | Take profit: 2058.420533928572 +2025-03-10 16:24:06,887 - INFO - CLOSED short at 2096.19 | PnL: -0.30% | $-0.78 +2025-03-10 16:24:06,928 - INFO - OPENED SHORT at 2100.0 | Stop loss: 2110.547910714286 | Take profit: 2068.4281339285717 +2025-03-10 16:24:07,587 - INFO - TAKE PROFIT hit for short at 2068.4281339285717 | PnL: 1.50% | $2.70 +2025-03-10 16:24:07,617 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.589410714286 | Take profit: 2017.5036339285716 +2025-03-10 16:24:07,670 - INFO - CLOSED short at 2043.51 | PnL: 0.23% | $0.26 +2025-03-10 16:24:07,671 - INFO - OPENED LONG at 2043.51 | Stop loss: 2033.2445392857142 | Take profit: 2074.2345160714285 +2025-03-10 16:24:07,712 - INFO - CLOSED long at 2052.89 | PnL: 0.46% | $0.71 +2025-03-10 16:24:07,713 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.2023607142855 | Take profit: 2022.0247839285714 +2025-03-10 16:24:07,757 - INFO - CLOSED short at 2053.22 | PnL: -0.02% | $-0.23 +2025-03-10 16:24:07,757 - INFO - OPENED LONG at 2053.22 | Stop loss: 2042.9059892857142 | Take profit: 2084.0901660714285 +2025-03-10 16:24:07,801 - INFO - CLOSED long at 2058.11 | PnL: 0.24% | $0.28 +2025-03-10 16:24:07,801 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.448460714286 | Take profit: 2027.1664839285716 +2025-03-10 16:24:08,076 - INFO - TAKE PROFIT hit for short at 2027.1664839285716 | PnL: 1.50% | $2.80 +2025-03-10 16:24:08,118 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6656107142855 | Take profit: 1985.2350339285715 +2025-03-10 16:24:08,293 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$1.01, Avg Loss=$-0.34 +2025-03-10 16:24:08,294 - INFO - Episode 6: Reward=22.99, Balance=$105.03, Win Rate=53.8%, Trades=13, Episode PnL=$4.04, Total PnL=$40.06, Max Drawdown=1.8%, Pred Accuracy=99.6% +2025-03-10 16:24:08,294 - INFO - Refreshing data for episode 7 +2025-03-10 16:24:08,294 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:08,608 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:08,619 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:08,653 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0199428571427 | Take profit: 2096.3326107142857 +2025-03-10 16:24:09,159 - INFO - TAKE PROFIT hit for short at 2096.3326107142857 | PnL: 1.50% | $2.74 +2025-03-10 16:24:09,183 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.598542857143 | Take profit: 2068.476810714286 +2025-03-10 16:24:09,980 - INFO - TAKE PROFIT hit for short at 2068.476810714286 | PnL: 1.50% | $2.82 +2025-03-10 16:24:10,025 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.303292857143 | Take profit: 2020.1625607142857 +2025-03-10 16:24:10,297 - INFO - CLOSED short at 2043.95 | PnL: 0.34% | $0.50 +2025-03-10 16:24:10,298 - INFO - OPENED LONG at 2043.95 | Stop loss: 2033.6819571428573 | Take profit: 2074.681689285714 +2025-03-10 16:24:10,330 - INFO - CLOSED long at 2044.1 | PnL: 0.01% | $-0.19 +2025-03-10 16:24:10,330 - INFO - OPENED SHORT at 2044.1 | Stop loss: 2054.3687928571426 | Take profit: 2013.3660607142858 +2025-03-10 16:24:10,473 - INFO - TAKE PROFIT hit for short at 2013.3660607142858 | PnL: 1.50% | $2.90 +2025-03-10 16:24:10,523 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6659928571428 | Take profit: 1985.2344607142857 +2025-03-10 16:24:10,707 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.24, Avg Loss=$-0.19 +2025-03-10 16:24:10,708 - INFO - Episode 7: Reward=27.52, Balance=$108.78, Win Rate=80.0%, Trades=5, Episode PnL=$8.97, Total PnL=$48.84, Max Drawdown=0.0%, Pred Accuracy=99.7% +2025-03-10 16:24:10,709 - INFO - Refreshing data for episode 8 +2025-03-10 16:24:10,709 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:11,019 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:11,027 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:11,062 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0200357142858 | Take profit: 2096.3324714285714 +2025-03-10 16:24:11,573 - INFO - TAKE PROFIT hit for short at 2096.3324714285714 | PnL: 1.50% | $2.74 +2025-03-10 16:24:11,595 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.598635714286 | Take profit: 2068.4766714285715 +2025-03-10 16:24:12,320 - INFO - TAKE PROFIT hit for short at 2068.4766714285715 | PnL: 1.50% | $2.82 +2025-03-10 16:24:12,345 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.589885714286 | Take profit: 2017.5029214285717 +2025-03-10 16:24:12,746 - INFO - TAKE PROFIT hit for short at 2017.5029214285717 | PnL: 1.50% | $2.89 +2025-03-10 16:24:12,772 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6660857142856 | Take profit: 1985.2343214285715 +2025-03-10 16:24:12,882 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.82, Avg Loss=$0.00 +2025-03-10 16:24:12,883 - INFO - Episode 8: Reward=27.99, Balance=$108.46, Win Rate=100.0%, Trades=3, Episode PnL=$8.46, Total PnL=$57.30, Max Drawdown=0.0%, Pred Accuracy=99.7% +2025-03-10 16:24:12,883 - INFO - Refreshing data for episode 9 +2025-03-10 16:24:12,884 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:13,216 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:13,225 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:13,326 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0200357142858 | Take profit: 2096.3324714285714 +2025-03-10 16:24:13,426 - INFO - CLOSED short at 2116.81 | PnL: 0.54% | $0.86 +2025-03-10 16:24:13,461 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.402285714286 | Take profit: 2082.9857214285717 +2025-03-10 16:24:13,630 - INFO - CLOSED short at 2114.57 | PnL: 0.01% | $-0.18 +2025-03-10 16:24:13,653 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.181235714286 | Take profit: 2080.8088714285714 +2025-03-10 16:24:14,343 - INFO - CLOSED short at 2080.58 | PnL: 1.51% | $2.78 +2025-03-10 16:24:14,344 - INFO - OPENED LONG at 2080.58 | Stop loss: 2070.128714285714 | Take profit: 2111.8612785714286 +2025-03-10 16:24:14,371 - INFO - CLOSED long at 2084.75 | PnL: 0.20% | $0.20 +2025-03-10 16:24:14,372 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2221357142857 | Take profit: 2053.4061714285713 +2025-03-10 16:24:14,422 - INFO - CLOSED short at 2084.25 | PnL: 0.02% | $-0.15 +2025-03-10 16:24:14,447 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.845235714286 | Take profit: 2054.0168714285714 +2025-03-10 16:24:14,635 - INFO - TAKE PROFIT hit for short at 2054.0168714285714 | PnL: 1.50% | $2.84 +2025-03-10 16:24:14,668 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3033857142855 | Take profit: 2020.1624214285714 +2025-03-10 16:24:15,035 - INFO - TAKE PROFIT hit for short at 2020.1624214285714 | PnL: 1.50% | $2.92 +2025-03-10 16:24:15,070 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6660857142856 | Take profit: 1985.2343214285715 +2025-03-10 16:24:15,188 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.92, Avg Loss=$-0.17 +2025-03-10 16:24:15,188 - INFO - Episode 9: Reward=30.54, Balance=$109.28, Win Rate=71.4%, Trades=7, Episode PnL=$9.07, Total PnL=$66.57, Max Drawdown=0.2%, Pred Accuracy=99.6% +2025-03-10 16:24:15,189 - INFO - Refreshing data for episode 10 +2025-03-10 16:24:15,189 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:15,499 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:15,508 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:16,223 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0200357142858 | Take profit: 2096.3324714285714 +2025-03-10 16:24:16,273 - INFO - CLOSED short at 2120.26 | PnL: 0.38% | $0.55 +2025-03-10 16:24:16,295 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.4424357142852 | Take profit: 2084.985271428571 +2025-03-10 16:24:17,149 - INFO - CLOSED short at 2096.96 | PnL: 0.94% | $1.65 +2025-03-10 16:24:17,150 - INFO - OPENED LONG at 2096.96 | Stop loss: 2086.426814285714 | Take profit: 2128.4869785714286 +2025-03-10 16:24:17,173 - INFO - CLOSED long at 2098.66 | PnL: 0.08% | $-0.04 +2025-03-10 16:24:17,173 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.2016857142858 | Take profit: 2067.1075214285715 +2025-03-10 16:24:17,533 - INFO - TAKE PROFIT hit for short at 2067.1075214285715 | PnL: 1.50% | $2.80 +2025-03-10 16:24:17,582 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.775935714286 | Take profit: 2012.7847714285713 +2025-03-10 16:24:17,654 - INFO - STOP LOSS hit for short at 2053.775935714286 | PnL: -0.50% | $-1.24 +2025-03-10 16:24:17,678 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.348535714286 | Take profit: 2023.1469714285715 +2025-03-10 16:24:17,909 - INFO - TAKE PROFIT hit for short at 2023.1469714285715 | PnL: 1.50% | $2.84 +2025-03-10 16:24:17,936 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6660857142856 | Take profit: 1985.2343214285715 +2025-03-10 16:24:18,057 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$1.96, Avg Loss=$-0.64 +2025-03-10 16:24:18,058 - INFO - Episode 10: Reward=29.77, Balance=$106.57, Win Rate=66.7%, Trades=6, Episode PnL=$6.61, Total PnL=$73.14, Max Drawdown=1.2%, Pred Accuracy=99.4% +2025-03-10 16:24:18,209 - INFO - Model saved to checkpoints/trading_agent_episode_10.pt +2025-03-10 16:24:18,210 - INFO - Checkpoint saved at episode 10 +2025-03-10 16:24:19,407 - INFO - Visualization saved for episode 10 +2025-03-10 16:24:21,083 - INFO - Visualization saved for episode 10 +2025-03-10 16:24:21,096 - INFO - Refreshing data for episode 11 +2025-03-10 16:24:21,096 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:21,409 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:21,419 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:21,681 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0208035714286 | Take profit: 2096.331319642857 +2025-03-10 16:24:22,208 - INFO - TAKE PROFIT hit for short at 2096.331319642857 | PnL: 1.50% | $2.74 +2025-03-10 16:24:22,233 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.599403571429 | Take profit: 2068.4755196428573 +2025-03-10 16:24:23,031 - INFO - TAKE PROFIT hit for short at 2068.4755196428573 | PnL: 1.50% | $2.82 +2025-03-10 16:24:23,054 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.590653571429 | Take profit: 2017.5017696428572 +2025-03-10 16:24:23,458 - INFO - TAKE PROFIT hit for short at 2017.5017696428572 | PnL: 1.50% | $2.89 +2025-03-10 16:24:23,505 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6668535714284 | Take profit: 1985.233169642857 +2025-03-10 16:24:23,673 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.82, Avg Loss=$0.00 +2025-03-10 16:24:23,673 - INFO - Episode 11: Reward=27.97, Balance=$108.46, Win Rate=100.0%, Trades=3, Episode PnL=$8.46, Total PnL=$81.60, Max Drawdown=0.0%, Pred Accuracy=99.0% +2025-03-10 16:24:23,673 - INFO - Refreshing data for episode 12 +2025-03-10 16:24:23,673 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:23,980 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:23,989 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:24,024 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0208035714286 | Take profit: 2096.331319642857 +2025-03-10 16:24:24,493 - INFO - TAKE PROFIT hit for short at 2096.331319642857 | PnL: 1.50% | $2.74 +2025-03-10 16:24:24,523 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.599403571429 | Take profit: 2068.4755196428573 +2025-03-10 16:24:24,676 - INFO - CLOSED short at 2103.41 | PnL: -0.16% | $-0.52 +2025-03-10 16:24:24,677 - INFO - OPENED LONG at 2103.41 | Stop loss: 2092.8437964285713 | Take profit: 2135.034880357143 +2025-03-10 16:24:24,723 - INFO - CLOSED long at 2104.22 | PnL: 0.04% | $-0.12 +2025-03-10 16:24:24,723 - INFO - OPENED SHORT at 2104.22 | Stop loss: 2114.7902535714284 | Take profit: 2072.582969642857 +2025-03-10 16:24:25,308 - INFO - TAKE PROFIT hit for short at 2072.582969642857 | PnL: 1.50% | $2.80 +2025-03-10 16:24:25,337 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.590653571429 | Take profit: 2017.5017696428572 +2025-03-10 16:24:25,785 - INFO - TAKE PROFIT hit for short at 2017.5017696428572 | PnL: 1.50% | $2.88 +2025-03-10 16:24:25,831 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6668535714284 | Take profit: 1985.233169642857 +2025-03-10 16:24:25,948 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.81, Avg Loss=$-0.32 +2025-03-10 16:24:25,950 - INFO - Episode 12: Reward=10.97, Balance=$107.77, Win Rate=60.0%, Trades=5, Episode PnL=$7.90, Total PnL=$89.37, Max Drawdown=0.0%, Pred Accuracy=98.4% +2025-03-10 16:24:25,950 - INFO - Refreshing data for episode 13 +2025-03-10 16:24:25,951 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:26,266 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:26,275 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:26,310 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0208035714286 | Take profit: 2096.331319642857 +2025-03-10 16:24:26,791 - INFO - TAKE PROFIT hit for short at 2096.331319642857 | PnL: 1.50% | $2.74 +2025-03-10 16:24:26,822 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.599403571429 | Take profit: 2068.4755196428573 +2025-03-10 16:24:27,604 - INFO - TAKE PROFIT hit for short at 2068.4755196428573 | PnL: 1.50% | $2.82 +2025-03-10 16:24:27,626 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.590653571429 | Take profit: 2017.5017696428572 +2025-03-10 16:24:28,036 - INFO - TAKE PROFIT hit for short at 2017.5017696428572 | PnL: 1.50% | $2.89 +2025-03-10 16:24:28,062 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6668535714284 | Take profit: 1985.233169642857 +2025-03-10 16:24:28,232 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.82, Avg Loss=$0.00 +2025-03-10 16:24:28,232 - INFO - Episode 13: Reward=0.39, Balance=$108.46, Win Rate=100.0%, Trades=3, Episode PnL=$8.46, Total PnL=$97.83, Max Drawdown=0.0%, Pred Accuracy=97.1% +2025-03-10 16:24:28,233 - INFO - Refreshing data for episode 14 +2025-03-10 16:24:28,233 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:28,544 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:28,553 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:28,811 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0208035714286 | Take profit: 2096.331319642857 +2025-03-10 16:24:28,865 - INFO - CLOSED short at 2120.26 | PnL: 0.38% | $0.55 +2025-03-10 16:24:28,889 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.443203571429 | Take profit: 2084.984119642857 +2025-03-10 16:24:29,654 - INFO - CLOSED short at 2096.96 | PnL: 0.94% | $1.65 +2025-03-10 16:24:29,655 - INFO - OPENED LONG at 2096.96 | Stop loss: 2086.426046428571 | Take profit: 2128.488130357143 +2025-03-10 16:24:29,682 - INFO - CLOSED long at 2098.66 | PnL: 0.08% | $-0.04 +2025-03-10 16:24:29,683 - INFO - OPENED SHORT at 2098.66 | Stop loss: 2109.202453571428 | Take profit: 2067.106369642857 +2025-03-10 16:24:30,015 - INFO - TAKE PROFIT hit for short at 2067.106369642857 | PnL: 1.50% | $2.80 +2025-03-10 16:24:30,047 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3041535714283 | Take profit: 2020.1612696428572 +2025-03-10 16:24:30,369 - INFO - TAKE PROFIT hit for short at 2020.1612696428572 | PnL: 1.50% | $2.88 +2025-03-10 16:24:30,394 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6668535714284 | Take profit: 1985.233169642857 +2025-03-10 16:24:30,502 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.97, Avg Loss=$-0.04 +2025-03-10 16:24:30,503 - INFO - Episode 14: Reward=2.28, Balance=$107.83, Win Rate=80.0%, Trades=5, Episode PnL=$7.87, Total PnL=$105.66, Max Drawdown=0.0%, Pred Accuracy=96.7% +2025-03-10 16:24:30,503 - INFO - Refreshing data for episode 15 +2025-03-10 16:24:30,503 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:30,810 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:30,821 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:31,674 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0208035714286 | Take profit: 2096.331319642857 +2025-03-10 16:24:31,780 - INFO - CLOSED short at 2114.78 | PnL: 0.64% | $1.05 +2025-03-10 16:24:31,811 - INFO - OPENED SHORT at 2115.52 | Stop loss: 2126.1467535714287 | Take profit: 2083.713469642857 +2025-03-10 16:24:32,627 - INFO - CLOSED short at 2084.95 | PnL: 1.45% | $2.66 +2025-03-10 16:24:32,628 - INFO - OPENED LONG at 2084.95 | Stop loss: 2074.4760964285715 | Take profit: 2116.297980357143 +2025-03-10 16:24:32,659 - INFO - CLOSED long at 2080.58 | PnL: -0.21% | $-0.63 +2025-03-10 16:24:32,659 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.032053571428 | Take profit: 2049.297569642857 +2025-03-10 16:24:32,947 - INFO - TAKE PROFIT hit for short at 2049.297569642857 | PnL: 1.50% | $2.83 +2025-03-10 16:24:32,971 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3041535714283 | Take profit: 2020.1612696428572 +2025-03-10 16:24:33,421 - INFO - TAKE PROFIT hit for short at 2020.1612696428572 | PnL: 1.50% | $2.90 +2025-03-10 16:24:33,449 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6668535714284 | Take profit: 1985.233169642857 +2025-03-10 16:24:33,536 - INFO - CLOSED short at 2019.57 | PnL: -0.20% | $-0.64 +2025-03-10 16:24:33,580 - INFO - OPENED SHORT at 2014.56 | Stop loss: 2024.6819535714285 | Take profit: 1984.267869642857 +2025-03-10 16:24:33,659 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.36, Avg Loss=$-0.63 +2025-03-10 16:24:33,660 - INFO - Episode 15: Reward=0.99, Balance=$108.17, Win Rate=66.7%, Trades=6, Episode PnL=$8.80, Total PnL=$113.83, Max Drawdown=0.6%, Pred Accuracy=97.3% +2025-03-10 16:24:33,660 - INFO - Refreshing data for episode 16 +2025-03-10 16:24:33,660 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:33,973 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:33,983 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:34,019 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0208035714286 | Take profit: 2096.331319642857 +2025-03-10 16:24:34,074 - INFO - CLOSED short at 2120.26 | PnL: 0.38% | $0.55 +2025-03-10 16:24:34,074 - INFO - OPENED LONG at 2120.26 | Stop loss: 2109.609546428572 | Take profit: 2152.1376303571433 +2025-03-10 16:24:34,101 - INFO - CLOSED long at 2116.81 | PnL: -0.16% | $-0.52 +2025-03-10 16:24:34,101 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.443203571429 | Take profit: 2084.984119642857 +2025-03-10 16:24:34,552 - INFO - CLOSED short at 2098.28 | PnL: 0.88% | $1.52 +2025-03-10 16:24:34,552 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.7394464285717 | Take profit: 2129.8279303571435 +2025-03-10 16:24:34,571 - INFO - CLOSED long at 2091.36 | PnL: -0.33% | $-0.85 +2025-03-10 16:24:34,599 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.599403571429 | Take profit: 2068.4755196428573 +2025-03-10 16:24:34,817 - INFO - CLOSED short at 2102.83 | PnL: -0.13% | $-0.46 +2025-03-10 16:24:34,818 - INFO - OPENED LONG at 2102.83 | Stop loss: 2092.2666964285713 | Take profit: 2134.446180357143 +2025-03-10 16:24:34,866 - INFO - CLOSED long at 2103.41 | PnL: 0.03% | $-0.14 +2025-03-10 16:24:34,866 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9762035714284 | Take profit: 2071.785119642857 +2025-03-10 16:24:34,888 - INFO - CLOSED short at 2104.22 | PnL: -0.04% | $-0.27 +2025-03-10 16:24:34,889 - INFO - OPENED LONG at 2104.22 | Stop loss: 2093.6497464285712 | Take profit: 2135.857030357143 +2025-03-10 16:24:34,919 - INFO - CLOSED long at 2104.67 | PnL: 0.02% | $-0.15 +2025-03-10 16:24:34,920 - INFO - OPENED SHORT at 2104.67 | Stop loss: 2115.2425035714286 | Take profit: 2073.026219642857 +2025-03-10 16:24:34,944 - INFO - CLOSED short at 2105.26 | PnL: -0.03% | $-0.25 +2025-03-10 16:24:34,944 - INFO - OPENED LONG at 2105.26 | Stop loss: 2094.6845464285716 | Take profit: 2136.912630357143 +2025-03-10 16:24:34,998 - INFO - CLOSED long at 2099.22 | PnL: -0.29% | $-0.75 +2025-03-10 16:24:34,998 - INFO - OPENED SHORT at 2099.22 | Stop loss: 2109.7652535714287 | Take profit: 2067.657969642857 +2025-03-10 16:24:35,028 - INFO - CLOSED short at 2094.16 | PnL: 0.24% | $0.27 +2025-03-10 16:24:35,029 - INFO - OPENED LONG at 2094.16 | Stop loss: 2083.640046428571 | Take profit: 2125.6461303571427 +2025-03-10 16:24:35,054 - INFO - CLOSED long at 2096.96 | PnL: 0.13% | $0.07 +2025-03-10 16:24:35,055 - INFO - OPENED SHORT at 2096.96 | Stop loss: 2107.4939535714284 | Take profit: 2065.4318696428572 +2025-03-10 16:24:35,141 - INFO - CLOSED short at 2090.59 | PnL: 0.30% | $0.39 +2025-03-10 16:24:35,142 - INFO - OPENED LONG at 2090.59 | Stop loss: 2080.0878964285716 | Take profit: 2122.022580357143 +2025-03-10 16:24:35,197 - INFO - CLOSED long at 2090.99 | PnL: 0.02% | $-0.16 +2025-03-10 16:24:35,197 - INFO - OPENED SHORT at 2090.99 | Stop loss: 2101.4941035714282 | Take profit: 2059.551419642857 +2025-03-10 16:24:35,286 - INFO - CLOSED short at 2080.58 | PnL: 0.50% | $0.77 +2025-03-10 16:24:35,286 - INFO - OPENED LONG at 2080.58 | Stop loss: 2070.1279464285712 | Take profit: 2111.862430357143 +2025-03-10 16:24:35,312 - INFO - CLOSED long at 2084.75 | PnL: 0.20% | $0.20 +2025-03-10 16:24:35,312 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2229035714286 | Take profit: 2053.405019642857 +2025-03-10 16:24:35,334 - INFO - CLOSED short at 2081.0 | PnL: 0.18% | $0.16 +2025-03-10 16:24:35,360 - INFO - OPENED SHORT at 2084.25 | Stop loss: 2094.7204035714285 | Take profit: 2052.912519642857 +2025-03-10 16:24:35,382 - INFO - CLOSED short at 2085.37 | PnL: -0.05% | $-0.30 +2025-03-10 16:24:35,383 - INFO - OPENED LONG at 2085.37 | Stop loss: 2074.8939964285714 | Take profit: 2116.7242803571426 +2025-03-10 16:24:35,427 - INFO - CLOSED long at 2083.07 | PnL: -0.11% | $-0.41 +2025-03-10 16:24:35,428 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.5345035714286 | Take profit: 2051.7502196428572 +2025-03-10 16:24:35,521 - INFO - CLOSED short at 2048.3 | PnL: 1.67% | $3.06 +2025-03-10 16:24:35,521 - INFO - OPENED LONG at 2048.3 | Stop loss: 2038.0093464285717 | Take profit: 2079.098230357143 +2025-03-10 16:24:35,562 - INFO - CLOSED long at 2051.0 | PnL: 0.13% | $0.06 +2025-03-10 16:24:35,563 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3041535714283 | Take profit: 2020.1612696428572 +2025-03-10 16:24:35,601 - INFO - CLOSED short at 2043.51 | PnL: 0.37% | $0.53 +2025-03-10 16:24:35,602 - INFO - OPENED LONG at 2043.51 | Stop loss: 2033.2432964285713 | Take profit: 2074.236380357143 +2025-03-10 16:24:35,669 - INFO - CLOSED long at 2053.22 | PnL: 0.48% | $0.76 +2025-03-10 16:24:35,697 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.7702964285716 | Take profit: 2089.0553803571433 +2025-03-10 16:24:35,741 - INFO - CLOSED long at 2050.18 | PnL: -0.39% | $-0.99 +2025-03-10 16:24:35,742 - INFO - OPENED SHORT at 2050.18 | Stop loss: 2060.480053571428 | Take profit: 2019.3535696428569 +2025-03-10 16:24:35,767 - INFO - CLOSED short at 2046.76 | PnL: 0.17% | $0.13 +2025-03-10 16:24:35,767 - INFO - OPENED LONG at 2046.76 | Stop loss: 2036.4770464285714 | Take profit: 2077.535130357143 +2025-03-10 16:24:35,816 - INFO - CLOSED long at 2044.1 | PnL: -0.13% | $-0.46 +2025-03-10 16:24:35,816 - INFO - OPENED SHORT at 2044.1 | Stop loss: 2054.3696535714284 | Take profit: 2013.3647696428573 +2025-03-10 16:24:35,846 - INFO - CLOSED short at 2043.59 | PnL: 0.02% | $-0.15 +2025-03-10 16:24:35,847 - INFO - OPENED LONG at 2043.59 | Stop loss: 2033.3228964285713 | Take profit: 2074.3175803571426 +2025-03-10 16:24:35,880 - INFO - CLOSED long at 2042.0 | PnL: -0.08% | $-0.36 +2025-03-10 16:24:35,952 - INFO - OPENED LONG at 2036.71 | Stop loss: 2026.4772964285714 | Take profit: 2067.334380357143 +2025-03-10 16:24:36,069 - INFO - STOP LOSS hit for long at 2026.4772964285714 | PnL: -0.50% | $-1.20 +2025-03-10 16:24:36,091 - INFO - OPENED LONG at 2015.54 | Stop loss: 2005.4131464285715 | Take profit: 2045.8468303571426 +2025-03-10 16:24:36,149 - INFO - CLOSED long at 2019.57 | PnL: 0.20% | $0.20 +2025-03-10 16:24:36,149 - INFO - OPENED SHORT at 2019.57 | Stop loss: 2029.7170035714284 | Take profit: 1989.2027196428571 +2025-03-10 16:24:36,186 - INFO - CLOSED short at 2014.56 | PnL: 0.25% | $0.29 +2025-03-10 16:24:36,186 - INFO - OPENED LONG at 2014.56 | Stop loss: 2004.4380464285712 | Take profit: 2044.8521303571429 +2025-03-10 16:24:36,214 - INFO - CLOSED long at 2021.97 | PnL: 0.37% | $0.53 +2025-03-10 16:24:36,214 - INFO - OPENED SHORT at 2021.97 | Stop loss: 2032.1290035714287 | Take profit: 1991.5667196428572 +2025-03-10 16:24:36,240 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 60.0% in downtrends | Avg Win=$0.59, Avg Loss=$-0.46 +2025-03-10 16:24:36,241 - INFO - Episode 16: Reward=-10.95, Balance=$102.06, Win Rate=50.0%, Trades=32, Episode PnL=$4.59, Total PnL=$115.89, Max Drawdown=2.9%, Pred Accuracy=97.7% +2025-03-10 16:24:36,242 - INFO - Refreshing data for episode 17 +2025-03-10 16:24:36,242 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:36,585 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:36,595 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:36,706 - INFO - OPENED LONG at 2128.33 | Stop loss: 2117.6391964285713 | Take profit: 2160.3286803571427 +2025-03-10 16:24:36,859 - INFO - STOP LOSS hit for long at 2117.6391964285713 | PnL: -0.50% | $-1.18 +2025-03-10 16:24:36,884 - INFO - OPENED LONG at 2114.78 | Stop loss: 2104.1569464285717 | Take profit: 2146.5754303571434 +2025-03-10 16:24:36,931 - INFO - CLOSED long at 2114.75 | PnL: -0.00% | $-0.20 +2025-03-10 16:24:36,932 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.3729035714287 | Take profit: 2082.955019642857 +2025-03-10 16:24:36,958 - INFO - CLOSED short at 2116.06 | PnL: -0.06% | $-0.31 +2025-03-10 16:24:36,958 - INFO - OPENED LONG at 2116.06 | Stop loss: 2105.4305464285712 | Take profit: 2147.874630357143 +2025-03-10 16:24:37,122 - INFO - CLOSED long at 2112.57 | PnL: -0.16% | $-0.51 +2025-03-10 16:24:37,123 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.1820035714286 | Take profit: 2080.807719642857 +2025-03-10 16:24:37,182 - INFO - CLOSED short at 2113.28 | PnL: -0.03% | $-0.26 +2025-03-10 16:24:37,183 - INFO - OPENED LONG at 2113.28 | Stop loss: 2102.664446428572 | Take profit: 2145.052930357143 +2025-03-10 16:24:37,235 - INFO - CLOSED long at 2114.5 | PnL: 0.06% | $-0.08 +2025-03-10 16:24:37,236 - INFO - OPENED SHORT at 2114.5 | Stop loss: 2125.1216535714284 | Take profit: 2082.708769642857 +2025-03-10 16:24:37,265 - INFO - CLOSED short at 2115.07 | PnL: -0.03% | $-0.24 +2025-03-10 16:24:37,266 - INFO - OPENED LONG at 2115.07 | Stop loss: 2104.4454964285715 | Take profit: 2146.869780357143 +2025-03-10 16:24:37,291 - INFO - STOP LOSS hit for long at 2104.4454964285715 | PnL: -0.50% | $-1.14 +2025-03-10 16:24:37,315 - INFO - OPENED LONG at 2098.28 | Stop loss: 2087.7394464285717 | Take profit: 2129.8279303571435 +2025-03-10 16:24:37,381 - INFO - CLOSED long at 2096.36 | PnL: -0.09% | $-0.36 +2025-03-10 16:24:37,382 - INFO - OPENED SHORT at 2096.36 | Stop loss: 2106.890953571429 | Take profit: 2064.8408696428573 +2025-03-10 16:24:37,402 - INFO - CLOSED short at 2089.04 | PnL: 0.35% | $0.47 +2025-03-10 16:24:37,403 - INFO - OPENED LONG at 2089.04 | Stop loss: 2078.545646428571 | Take profit: 2120.4493303571426 +2025-03-10 16:24:37,495 - INFO - CLOSED long at 2100.0 | PnL: 0.52% | $0.80 +2025-03-10 16:24:37,495 - INFO - OPENED SHORT at 2100.0 | Stop loss: 2110.549153571428 | Take profit: 2068.4262696428573 +2025-03-10 16:24:37,541 - INFO - CLOSED short at 2102.83 | PnL: -0.13% | $-0.44 +2025-03-10 16:24:37,541 - INFO - OPENED LONG at 2102.83 | Stop loss: 2092.2666964285713 | Take profit: 2134.446180357143 +2025-03-10 16:24:37,621 - INFO - CLOSED long at 2104.22 | PnL: 0.07% | $-0.06 +2025-03-10 16:24:37,622 - INFO - OPENED SHORT at 2104.22 | Stop loss: 2114.7902535714284 | Take profit: 2072.582969642857 +2025-03-10 16:24:37,658 - INFO - CLOSED short at 2104.67 | PnL: -0.02% | $-0.23 +2025-03-10 16:24:37,659 - INFO - OPENED LONG at 2104.67 | Stop loss: 2094.0974964285715 | Take profit: 2136.3137803571426 +2025-03-10 16:24:37,711 - INFO - CLOSED long at 2099.63 | PnL: -0.24% | $-0.64 +2025-03-10 16:24:37,712 - INFO - OPENED SHORT at 2099.63 | Stop loss: 2110.1773035714286 | Take profit: 2068.0618196428572 +2025-03-10 16:24:37,804 - INFO - CLOSED short at 2098.66 | PnL: 0.05% | $-0.10 +2025-03-10 16:24:37,805 - INFO - OPENED LONG at 2098.66 | Stop loss: 2088.117546428571 | Take profit: 2130.2136303571424 +2025-03-10 16:24:37,830 - INFO - CLOSED long at 2090.59 | PnL: -0.38% | $-0.90 +2025-03-10 16:24:37,830 - INFO - OPENED SHORT at 2090.59 | Stop loss: 2101.0921035714287 | Take profit: 2059.1574196428573 +2025-03-10 16:24:37,854 - INFO - CLOSED short at 2090.99 | PnL: -0.02% | $-0.22 +2025-03-10 16:24:37,855 - INFO - OPENED LONG at 2090.99 | Stop loss: 2080.4858964285713 | Take profit: 2122.428580357143 +2025-03-10 16:24:37,925 - INFO - CLOSED long at 2084.95 | PnL: -0.29% | $-0.72 +2025-03-10 16:24:37,925 - INFO - OPENED SHORT at 2084.95 | Stop loss: 2095.4239035714286 | Take profit: 2053.602019642857 +2025-03-10 16:24:38,100 - INFO - CLOSED short at 2084.25 | PnL: 0.03% | $-0.12 +2025-03-10 16:24:38,101 - INFO - OPENED LONG at 2084.25 | Stop loss: 2073.7795964285715 | Take profit: 2115.587480357143 +2025-03-10 16:24:38,126 - INFO - CLOSED long at 2085.37 | PnL: 0.05% | $-0.08 +2025-03-10 16:24:38,126 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8460035714284 | Take profit: 2054.015719642857 +2025-03-10 16:24:38,248 - INFO - TAKE PROFIT hit for short at 2054.015719642857 | PnL: 1.50% | $2.56 +2025-03-10 16:24:38,281 - INFO - OPENED LONG at 2051.0 | Stop loss: 2040.6958464285715 | Take profit: 2081.838730357143 +2025-03-10 16:24:38,366 - INFO - CLOSED long at 2052.89 | PnL: 0.09% | $-0.01 +2025-03-10 16:24:38,367 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.203603571428 | Take profit: 2022.022919642857 +2025-03-10 16:24:38,435 - INFO - CLOSED short at 2053.22 | PnL: -0.02% | $-0.22 +2025-03-10 16:24:38,473 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.449703571429 | Take profit: 2027.1646196428574 +2025-03-10 16:24:38,543 - INFO - CLOSED short at 2046.76 | PnL: 0.55% | $0.84 +2025-03-10 16:24:38,544 - INFO - OPENED LONG at 2046.76 | Stop loss: 2036.4770464285714 | Take profit: 2077.535130357143 +2025-03-10 16:24:38,568 - INFO - CLOSED long at 2043.95 | PnL: -0.14% | $-0.45 +2025-03-10 16:24:38,569 - INFO - OPENED SHORT at 2043.95 | Stop loss: 2054.2189035714287 | Take profit: 2013.2170196428574 +2025-03-10 16:24:38,706 - INFO - CLOSED short at 2027.51 | PnL: 0.80% | $1.32 +2025-03-10 16:24:38,708 - INFO - OPENED LONG at 2027.51 | Stop loss: 2017.3232964285714 | Take profit: 2057.9963803571427 +2025-03-10 16:24:38,742 - INFO - CLOSED long at 2010.35 | PnL: -0.85% | $-1.80 +2025-03-10 16:24:38,742 - INFO - OPENED SHORT at 2010.35 | Stop loss: 2020.4509035714284 | Take profit: 1980.1210196428572 +2025-03-10 16:24:38,896 - INFO - STOP LOSS hit for short at 2020.4509035714284 | PnL: -0.50% | $-1.13 +2025-03-10 16:24:38,917 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 26.7% in downtrends | Avg Win=$1.20, Avg Loss=$-0.48 +2025-03-10 16:24:38,917 - INFO - Episode 17: Reward=-38.22, Balance=$94.59, Win Rate=17.2%, Trades=29, Episode PnL=$-0.39, Total PnL=$110.48, Max Drawdown=5.4%, Pred Accuracy=97.7% +2025-03-10 16:24:38,918 - INFO - Refreshing data for episode 18 +2025-03-10 16:24:38,918 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:39,217 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:39,228 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:39,262 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.0208035714286 | Take profit: 2096.331319642857 +2025-03-10 16:24:39,371 - INFO - CLOSED short at 2115.52 | PnL: 0.60% | $0.98 +2025-03-10 16:24:39,371 - INFO - OPENED LONG at 2115.52 | Stop loss: 2104.8932464285713 | Take profit: 2147.3265303571425 +2025-03-10 16:24:39,402 - INFO - CLOSED long at 2114.75 | PnL: -0.04% | $-0.27 +2025-03-10 16:24:39,402 - INFO - OPENED SHORT at 2114.75 | Stop loss: 2125.3729035714287 | Take profit: 2082.955019642857 +2025-03-10 16:24:39,425 - INFO - CLOSED short at 2116.06 | PnL: -0.06% | $-0.32 +2025-03-10 16:24:39,426 - INFO - OPENED LONG at 2116.06 | Stop loss: 2105.4305464285712 | Take profit: 2147.874630357143 +2025-03-10 16:24:39,454 - INFO - CLOSED long at 2115.21 | PnL: -0.04% | $-0.28 +2025-03-10 16:24:39,454 - INFO - OPENED SHORT at 2115.21 | Stop loss: 2125.835203571429 | Take profit: 2083.4081196428574 +2025-03-10 16:24:40,238 - INFO - CLOSED short at 2094.16 | PnL: 1.00% | $1.75 +2025-03-10 16:24:40,289 - INFO - OPENED SHORT at 2096.96 | Stop loss: 2107.4939535714284 | Take profit: 2065.4318696428572 +2025-03-10 16:24:40,491 - INFO - CLOSED short at 2080.58 | PnL: 0.78% | $1.36 +2025-03-10 16:24:40,525 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2229035714286 | Take profit: 2053.405019642857 +2025-03-10 16:24:40,550 - INFO - CLOSED short at 2081.0 | PnL: 0.18% | $0.16 +2025-03-10 16:24:40,574 - INFO - OPENED SHORT at 2084.25 | Stop loss: 2094.7204035714285 | Take profit: 2052.912519642857 +2025-03-10 16:24:40,759 - INFO - CLOSED short at 2067.71 | PnL: 0.79% | $1.40 +2025-03-10 16:24:40,827 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.590653571429 | Take profit: 2017.5017696428572 +2025-03-10 16:24:40,886 - INFO - CLOSED short at 2043.51 | PnL: 0.23% | $0.27 +2025-03-10 16:24:40,954 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.449703571429 | Take profit: 2027.1646196428574 +2025-03-10 16:24:40,998 - INFO - CLOSED short at 2050.18 | PnL: 0.39% | $0.59 +2025-03-10 16:24:41,042 - INFO - OPENED SHORT at 2043.95 | Stop loss: 2054.2189035714287 | Take profit: 2013.2170196428574 +2025-03-10 16:24:41,144 - INFO - CLOSED short at 2043.59 | PnL: 0.02% | $-0.17 +2025-03-10 16:24:41,325 - INFO - OPENED SHORT at 2014.41 | Stop loss: 2024.5312035714287 | Take profit: 1984.1201196428574 +2025-03-10 16:24:41,347 - INFO - CLOSED short at 2019.57 | PnL: -0.26% | $-0.73 +2025-03-10 16:24:41,423 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$0.93, Avg Loss=$-0.35 +2025-03-10 16:24:41,424 - INFO - Episode 18: Reward=0.50, Balance=$104.74, Win Rate=58.3%, Trades=12, Episode PnL=$5.29, Total PnL=$115.22, Max Drawdown=0.9%, Pred Accuracy=97.4% +2025-03-10 16:24:41,424 - INFO - Refreshing data for episode 19 +2025-03-10 16:24:41,425 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:41,745 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:41,755 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:42,037 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.403053571429 | Take profit: 2082.9845696428574 +2025-03-10 16:24:42,090 - INFO - CLOSED short at 2114.75 | PnL: 0.00% | $-0.19 +2025-03-10 16:24:42,209 - INFO - OPENED LONG at 2114.32 | Stop loss: 2103.6992464285718 | Take profit: 2146.1085303571426 +2025-03-10 16:24:42,231 - INFO - CLOSED long at 2114.57 | PnL: 0.01% | $-0.17 +2025-03-10 16:24:42,412 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.599403571429 | Take profit: 2068.4755196428573 +2025-03-10 16:24:42,436 - INFO - CLOSED short at 2096.36 | PnL: 0.18% | $0.15 +2025-03-10 16:24:42,484 - INFO - OPENED SHORT at 2089.84 | Stop loss: 2100.3383535714283 | Take profit: 2058.4186696428574 +2025-03-10 16:24:42,509 - INFO - CLOSED short at 2096.19 | PnL: -0.30% | $-0.79 +2025-03-10 16:24:42,560 - INFO - OPENED SHORT at 2102.83 | Stop loss: 2113.3933035714285 | Take profit: 2071.2138196428573 +2025-03-10 16:24:42,582 - INFO - CLOSED short at 2103.41 | PnL: -0.03% | $-0.25 +2025-03-10 16:24:42,829 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.032053571428 | Take profit: 2049.297569642857 +2025-03-10 16:24:42,853 - INFO - CLOSED short at 2084.75 | PnL: -0.20% | $-0.58 +2025-03-10 16:24:42,926 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8460035714284 | Take profit: 2054.015719642857 +2025-03-10 16:24:42,948 - INFO - CLOSED short at 2084.11 | PnL: 0.06% | $-0.08 +2025-03-10 16:24:43,096 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.203603571428 | Take profit: 2022.022919642857 +2025-03-10 16:24:43,118 - INFO - CLOSED short at 2053.22 | PnL: -0.02% | $-0.22 +2025-03-10 16:24:43,141 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.449703571429 | Take profit: 2027.1646196428574 +2025-03-10 16:24:43,199 - INFO - CLOSED short at 2050.18 | PnL: 0.39% | $0.55 +2025-03-10 16:24:43,228 - INFO - OPENED SHORT at 2046.76 | Stop loss: 2057.042953571429 | Take profit: 2015.9848696428571 +2025-03-10 16:24:43,250 - INFO - CLOSED short at 2043.95 | PnL: 0.14% | $0.07 +2025-03-10 16:24:43,272 - INFO - OPENED LONG at 2044.1 | Stop loss: 2033.8303464285714 | Take profit: 2074.835230357143 +2025-03-10 16:24:43,294 - INFO - CLOSED long at 2043.59 | PnL: -0.02% | $-0.24 +2025-03-10 16:24:43,320 - INFO - OPENED SHORT at 2042.0 | Stop loss: 2052.2591535714287 | Take profit: 2011.2962696428572 +2025-03-10 16:24:43,343 - INFO - CLOSED short at 2036.71 | PnL: 0.26% | $0.31 +2025-03-10 16:24:43,364 - INFO - OPENED SHORT at 2027.51 | Stop loss: 2037.6967035714288 | Take profit: 1997.023619642857 +2025-03-10 16:24:43,389 - INFO - CLOSED short at 2010.35 | PnL: 0.85% | $1.44 +2025-03-10 16:24:43,419 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6668535714284 | Take profit: 1985.233169642857 +2025-03-10 16:24:43,489 - INFO - CLOSED short at 2014.56 | PnL: 0.05% | $-0.10 +2025-03-10 16:24:43,533 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 0.0% in downtrends | Avg Win=$0.50, Avg Loss=$-0.29 +2025-03-10 16:24:43,534 - INFO - Episode 19: Reward=-14.61, Balance=$99.89, Win Rate=35.7%, Trades=14, Episode PnL=$-0.11, Total PnL=$115.11, Max Drawdown=2.1%, Pred Accuracy=97.3% +2025-03-10 16:24:43,534 - INFO - Refreshing data for episode 20 +2025-03-10 16:24:43,534 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:43,838 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:43,847 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:44,740 - INFO - OPENED SHORT at 2116.06 | Stop loss: 2126.6894535714287 | Take profit: 2084.245369642857 +2025-03-10 16:24:44,783 - INFO - CLOSED short at 2114.1 | PnL: 0.09% | $-0.01 +2025-03-10 16:24:44,807 - INFO - OPENED SHORT at 2115.11 | Stop loss: 2125.734703571429 | Take profit: 2083.3096196428573 +2025-03-10 16:24:44,964 - INFO - CLOSED short at 2098.24 | PnL: 0.80% | $1.36 +2025-03-10 16:24:45,010 - INFO - OPENED SHORT at 2091.36 | Stop loss: 2101.8659535714287 | Take profit: 2059.915869642857 +2025-03-10 16:24:45,036 - INFO - CLOSED short at 2100.05 | PnL: -0.42% | $-1.02 +2025-03-10 16:24:45,066 - INFO - OPENED SHORT at 2096.36 | Stop loss: 2106.890953571429 | Take profit: 2064.8408696428573 +2025-03-10 16:24:45,426 - INFO - CLOSED short at 2084.95 | PnL: 0.54% | $0.87 +2025-03-10 16:24:45,448 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.032053571428 | Take profit: 2049.297569642857 +2025-03-10 16:24:45,654 - INFO - TAKE PROFIT hit for short at 2049.297569642857 | PnL: 1.50% | $2.78 +2025-03-10 16:24:45,684 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3041535714283 | Take profit: 2020.1612696428572 +2025-03-10 16:24:45,947 - INFO - CLOSED short at 2043.59 | PnL: 0.36% | $0.53 +2025-03-10 16:24:45,967 - INFO - OPENED SHORT at 2042.0 | Stop loss: 2052.2591535714287 | Take profit: 2011.2962696428572 +2025-03-10 16:24:46,040 - INFO - CLOSED short at 2010.35 | PnL: 1.55% | $2.96 +2025-03-10 16:24:46,112 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6668535714284 | Take profit: 1985.233169642857 +2025-03-10 16:24:46,282 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$1.70, Avg Loss=$-0.52 +2025-03-10 16:24:46,283 - INFO - Episode 20: Reward=2.39, Balance=$107.46, Win Rate=71.4%, Trades=7, Episode PnL=$7.46, Total PnL=$122.57, Max Drawdown=1.0%, Pred Accuracy=97.3% +2025-03-10 16:24:46,428 - INFO - Model saved to checkpoints/trading_agent_episode_20.pt +2025-03-10 16:24:46,429 - INFO - Checkpoint saved at episode 20 +2025-03-10 16:24:46,431 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:24:47,684 - INFO - Visualization saved for episode 20 +2025-03-10 16:24:49,454 - INFO - Visualization saved for episode 20 +2025-03-10 16:24:49,472 - INFO - Refreshing data for episode 21 +2025-03-10 16:24:49,473 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:49,789 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:49,798 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:50,101 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.4436607142857 | Take profit: 2092.8237339285715 +2025-03-10 16:24:50,678 - INFO - CLOSED short at 2091.36 | PnL: 1.57% | $2.88 +2025-03-10 16:24:50,725 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.600060714286 | Take profit: 2068.4745339285714 +2025-03-10 16:24:51,457 - INFO - TAKE PROFIT hit for short at 2068.4745339285714 | PnL: 1.50% | $2.82 +2025-03-10 16:24:51,498 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5913107142856 | Take profit: 2017.5007839285718 +2025-03-10 16:24:51,950 - INFO - TAKE PROFIT hit for short at 2017.5007839285718 | PnL: 1.50% | $2.90 +2025-03-10 16:24:52,096 - INFO - OPENED SHORT at 2021.97 | Stop loss: 2032.129660714286 | Take profit: 1991.5657339285715 +2025-03-10 16:24:52,122 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.87, Avg Loss=$0.00 +2025-03-10 16:24:52,123 - INFO - Episode 21: Reward=1.74, Balance=$108.60, Win Rate=100.0%, Trades=3, Episode PnL=$8.60, Total PnL=$131.17, Max Drawdown=0.0%, Pred Accuracy=97.7% +2025-03-10 16:24:52,124 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:24:52,124 - INFO - Refreshing data for episode 22 +2025-03-10 16:24:52,124 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:52,424 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:52,433 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:52,546 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.4449357142853 | Take profit: 2084.9815214285713 +2025-03-10 16:24:53,688 - INFO - TAKE PROFIT hit for short at 2084.9815214285713 | PnL: 1.50% | $2.74 +2025-03-10 16:24:53,825 - INFO - OPENED SHORT at 2085.37 | Stop loss: 2095.8477357142856 | Take profit: 2054.013121428571 +2025-03-10 16:24:54,013 - INFO - TAKE PROFIT hit for short at 2054.013121428571 | PnL: 1.50% | $2.82 +2025-03-10 16:24:54,169 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.4514357142857 | Take profit: 2027.1620214285715 +2025-03-10 16:24:54,541 - INFO - TAKE PROFIT hit for short at 2027.1620214285715 | PnL: 1.50% | $2.89 +2025-03-10 16:24:54,589 - INFO - OPENED SHORT at 2014.41 | Stop loss: 2024.5329357142855 | Take profit: 1984.1175214285715 +2025-03-10 16:24:54,714 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.82, Avg Loss=$0.00 +2025-03-10 16:24:54,715 - INFO - Episode 22: Reward=11.35, Balance=$108.45, Win Rate=100.0%, Trades=3, Episode PnL=$8.45, Total PnL=$139.62, Max Drawdown=0.0%, Pred Accuracy=97.7% +2025-03-10 16:24:54,715 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:24:54,715 - INFO - Refreshing data for episode 23 +2025-03-10 16:24:54,716 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:55,049 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:55,059 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:55,271 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.023035714286 | Take profit: 2096.3279714285713 +2025-03-10 16:24:56,008 - INFO - TAKE PROFIT hit for short at 2096.3279714285713 | PnL: 1.50% | $2.74 +2025-03-10 16:24:56,047 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.601635714286 | Take profit: 2068.4721714285715 +2025-03-10 16:24:56,831 - INFO - TAKE PROFIT hit for short at 2068.4721714285715 | PnL: 1.50% | $2.82 +2025-03-10 16:24:56,884 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.3063857142856 | Take profit: 2020.1579214285714 +2025-03-10 16:24:57,247 - INFO - TAKE PROFIT hit for short at 2020.1579214285714 | PnL: 1.50% | $2.89 +2025-03-10 16:24:57,286 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6690857142858 | Take profit: 1985.2298214285713 +2025-03-10 16:24:57,458 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.82, Avg Loss=$0.00 +2025-03-10 16:24:57,459 - INFO - Episode 23: Reward=13.72, Balance=$108.45, Win Rate=100.0%, Trades=3, Episode PnL=$8.45, Total PnL=$148.06, Max Drawdown=0.0%, Pred Accuracy=97.8% +2025-03-10 16:24:57,459 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:24:57,459 - INFO - Refreshing data for episode 24 +2025-03-10 16:24:57,460 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:24:57,785 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:24:57,799 - INFO - Initialized environment with 100 candles +2025-03-10 16:24:57,834 - INFO - OPENED SHORT at 2128.33 | Stop loss: 2139.023057142857 | Take profit: 2096.327939285714 +2025-03-10 16:24:58,430 - INFO - TAKE PROFIT hit for short at 2096.327939285714 | PnL: 1.50% | $2.74 +2025-03-10 16:24:58,466 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.6016571428577 | Take profit: 2068.4721392857145 +2025-03-10 16:24:59,202 - INFO - TAKE PROFIT hit for short at 2068.4721392857145 | PnL: 1.50% | $2.82 +2025-03-10 16:24:59,244 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.306407142857 | Take profit: 2020.1578892857144 +2025-03-10 16:24:59,372 - INFO - CLOSED short at 2058.11 | PnL: -0.35% | $-0.92 +2025-03-10 16:24:59,372 - INFO - OPENED LONG at 2058.11 | Stop loss: 2047.768042857143 | Take profit: 2089.058760714286 +2025-03-10 16:24:59,461 - INFO - STOP LOSS hit for long at 2047.768042857143 | PnL: -0.50% | $-1.23 +2025-03-10 16:24:59,483 - INFO - OPENED SHORT at 2043.95 | Stop loss: 2054.2211571428575 | Take profit: 2013.2136392857142 +2025-03-10 16:24:59,622 - INFO - TAKE PROFIT hit for short at 2013.2136392857142 | PnL: 1.50% | $2.83 +2025-03-10 16:24:59,649 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.669107142857 | Take profit: 1985.229789285714 +2025-03-10 16:24:59,822 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 60.0% in downtrends | Avg Win=$2.80, Avg Loss=$-1.08 +2025-03-10 16:24:59,823 - INFO - Episode 24: Reward=9.77, Balance=$106.24, Win Rate=60.0%, Trades=5, Episode PnL=$6.24, Total PnL=$154.30, Max Drawdown=2.0%, Pred Accuracy=97.7% +2025-03-10 16:24:59,824 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:24:59,824 - INFO - Refreshing data for episode 25 +2025-03-10 16:24:59,824 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:25:00,138 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:25:00,148 - INFO - Initialized environment with 100 candles +2025-03-10 16:25:00,897 - INFO - OPENED LONG at 2124.77 | Stop loss: 2114.0934785714285 | Take profit: 2156.720557142857 +2025-03-10 16:25:00,966 - INFO - CLOSED long at 2114.78 | PnL: -0.47% | $-1.11 +2025-03-10 16:25:00,966 - INFO - OPENED SHORT at 2114.78 | Stop loss: 2125.4065714285716 | Take profit: 2082.9792928571433 +2025-03-10 16:25:01,884 - INFO - TAKE PROFIT hit for short at 2082.9792928571433 | PnL: 1.50% | $2.71 +2025-03-10 16:25:01,908 - INFO - OPENED SHORT at 2084.75 | Stop loss: 2095.2264214285715 | Take profit: 2053.399742857143 +2025-03-10 16:25:02,096 - INFO - TAKE PROFIT hit for short at 2053.399742857143 | PnL: 1.50% | $2.78 +2025-03-10 16:25:02,256 - INFO - OPENED SHORT at 2058.11 | Stop loss: 2068.4532214285714 | Take profit: 2027.159342857143 +2025-03-10 16:25:02,489 - INFO - TAKE PROFIT hit for short at 2027.159342857143 | PnL: 1.50% | $2.86 +2025-03-10 16:25:02,568 - INFO - OPENED SHORT at 2014.41 | Stop loss: 2024.5347214285716 | Take profit: 1984.114842857143 +2025-03-10 16:25:02,685 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 100.0% in downtrends | Avg Win=$2.78, Avg Loss=$-1.11 +2025-03-10 16:25:02,686 - INFO - Episode 25: Reward=8.81, Balance=$107.24, Win Rate=75.0%, Trades=4, Episode PnL=$8.35, Total PnL=$161.54, Max Drawdown=0.0%, Pred Accuracy=97.7% +2025-03-10 16:25:02,686 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:25:02,687 - INFO - Refreshing data for episode 26 +2025-03-10 16:25:02,687 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:25:03,001 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:25:03,010 - INFO - Initialized environment with 100 candles +2025-03-10 16:25:03,111 - INFO - OPENED SHORT at 2116.81 | Stop loss: 2127.4469035714287 | Take profit: 2084.978569642857 +2025-03-10 16:25:03,132 - INFO - CLOSED short at 2114.78 | PnL: 0.10% | $-0.01 +2025-03-10 16:25:03,132 - INFO - OPENED LONG at 2114.78 | Stop loss: 2104.1532464285715 | Take profit: 2146.580980357143 +2025-03-10 16:25:03,356 - INFO - CLOSED long at 2112.57 | PnL: -0.10% | $-0.40 +2025-03-10 16:25:03,356 - INFO - OPENED SHORT at 2112.57 | Stop loss: 2123.1857035714283 | Take profit: 2080.8021696428573 +2025-03-10 16:25:03,724 - INFO - CLOSED short at 2104.22 | PnL: 0.40% | $0.57 +2025-03-10 16:25:03,788 - INFO - OPENED SHORT at 2105.26 | Stop loss: 2115.839153571429 | Take profit: 2073.601819642857 +2025-03-10 16:25:04,215 - INFO - TAKE PROFIT hit for short at 2073.601819642857 | PnL: 1.50% | $2.74 +2025-03-10 16:25:04,294 - INFO - OPENED SHORT at 2043.51 | Stop loss: 2053.780403571429 | Take profit: 2012.7780696428572 +2025-03-10 16:25:04,367 - INFO - STOP LOSS hit for short at 2053.780403571429 | PnL: -0.50% | $-1.21 +2025-03-10 16:25:04,391 - INFO - OPENED SHORT at 2054.03 | Stop loss: 2064.353003571429 | Take profit: 2023.1402696428574 +2025-03-10 16:25:04,672 - INFO - TAKE PROFIT hit for short at 2023.1402696428574 | PnL: 1.50% | $2.78 +2025-03-10 16:25:04,697 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.6705535714284 | Take profit: 1985.227619642857 +2025-03-10 16:25:04,806 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 50.0% in downtrends | Avg Win=$2.03, Avg Loss=$-0.54 +2025-03-10 16:25:04,807 - INFO - Episode 26: Reward=7.05, Balance=$104.48, Win Rate=50.0%, Trades=6, Episode PnL=$4.88, Total PnL=$166.02, Max Drawdown=1.2%, Pred Accuracy=97.8% +2025-03-10 16:25:04,807 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:25:04,808 - INFO - Refreshing data for episode 27 +2025-03-10 16:25:04,808 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:25:05,114 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:25:05,123 - INFO - Initialized environment with 100 candles +2025-03-10 16:25:05,379 - INFO - OPENED SHORT at 2120.26 | Stop loss: 2130.9116785714286 | Take profit: 2088.380532142857 +2025-03-10 16:25:06,339 - INFO - TAKE PROFIT hit for short at 2088.380532142857 | PnL: 1.50% | $2.74 +2025-03-10 16:25:06,366 - INFO - OPENED SHORT at 2080.58 | Stop loss: 2091.0332785714286 | Take profit: 2049.295732142857 +2025-03-10 16:25:06,459 - INFO - CLOSED short at 2085.37 | PnL: -0.23% | $-0.66 +2025-03-10 16:25:06,495 - INFO - OPENED SHORT at 2084.11 | Stop loss: 2094.5809285714286 | Take profit: 2052.772782142857 +2025-03-10 16:25:06,567 - INFO - CLOSED short at 2075.07 | PnL: 0.43% | $0.67 +2025-03-10 16:25:06,600 - INFO - OPENED SHORT at 2067.71 | Stop loss: 2078.0989285714286 | Take profit: 2036.6187821428573 +2025-03-10 16:25:06,963 - INFO - TAKE PROFIT hit for short at 2036.6187821428573 | PnL: 1.50% | $2.82 +2025-03-10 16:25:06,995 - INFO - OPENED SHORT at 2010.35 | Stop loss: 2020.4521285714284 | Take profit: 1980.119182142857 +2025-03-10 16:25:07,127 - INFO - STOP LOSS hit for short at 2020.4521285714284 | PnL: -0.50% | $-1.24 +2025-03-10 16:25:07,148 - INFO - OPENED SHORT at 2035.32 | Stop loss: 2045.5469785714286 | Take profit: 2004.7146321428572 +2025-03-10 16:25:07,167 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 66.7% in downtrends | Avg Win=$2.07, Avg Loss=$-0.95 +2025-03-10 16:25:07,168 - INFO - Episode 27: Reward=13.48, Balance=$104.32, Win Rate=60.0%, Trades=5, Episode PnL=$4.32, Total PnL=$170.34, Max Drawdown=1.2%, Pred Accuracy=98.2% +2025-03-10 16:25:07,168 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:25:07,169 - INFO - Refreshing data for episode 28 +2025-03-10 16:25:07,169 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:25:07,480 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:25:07,490 - INFO - Initialized environment with 100 candles +2025-03-10 16:25:07,524 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.446142857143 | Take profit: 2092.8200107142857 +2025-03-10 16:25:07,906 - INFO - TAKE PROFIT hit for short at 2092.8200107142857 | PnL: 1.50% | $2.74 +2025-03-10 16:25:07,944 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.602542857143 | Take profit: 2068.470810714286 +2025-03-10 16:25:08,617 - INFO - TAKE PROFIT hit for short at 2068.470810714286 | PnL: 1.50% | $2.81 +2025-03-10 16:25:08,687 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.307292857143 | Take profit: 2020.1565607142857 +2025-03-10 16:25:08,721 - INFO - CLOSED short at 2043.51 | PnL: 0.37% | $0.55 +2025-03-10 16:25:08,722 - INFO - OPENED LONG at 2043.51 | Stop loss: 2033.240157142857 | Take profit: 2074.2410892857147 +2025-03-10 16:25:08,755 - INFO - CLOSED long at 2052.89 | PnL: 0.46% | $0.74 +2025-03-10 16:25:08,755 - INFO - OPENED SHORT at 2052.89 | Stop loss: 2063.2067428571427 | Take profit: 2022.0182107142855 +2025-03-10 16:25:09,036 - INFO - TAKE PROFIT hit for short at 2022.0182107142855 | PnL: 1.50% | $2.93 +2025-03-10 16:25:09,076 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.669992857143 | Take profit: 1985.2284607142856 +2025-03-10 16:25:09,241 - INFO - STOP LOSS hit for short at 2025.669992857143 | PnL: -0.50% | $-1.29 +2025-03-10 16:25:09,262 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 80.0% in downtrends | Avg Win=$1.95, Avg Loss=$-1.29 +2025-03-10 16:25:09,262 - INFO - Episode 28: Reward=16.38, Balance=$108.48, Win Rate=83.3%, Trades=6, Episode PnL=$7.74, Total PnL=$178.82, Max Drawdown=1.2%, Pred Accuracy=98.1% +2025-03-10 16:25:09,262 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:25:09,263 - INFO - Refreshing data for episode 29 +2025-03-10 16:25:09,263 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:25:09,571 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:25:09,581 - INFO - Initialized environment with 100 candles +2025-03-10 16:25:09,615 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.446142857143 | Take profit: 2092.8200107142857 +2025-03-10 16:25:10,039 - INFO - TAKE PROFIT hit for short at 2092.8200107142857 | PnL: 1.50% | $2.74 +2025-03-10 16:25:10,064 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.602542857143 | Take profit: 2068.470810714286 +2025-03-10 16:25:10,300 - INFO - CLOSED short at 2105.26 | PnL: -0.25% | $-0.70 +2025-03-10 16:25:10,300 - INFO - OPENED LONG at 2105.26 | Stop loss: 2094.6814071428576 | Take profit: 2136.9173392857147 +2025-03-10 16:25:10,342 - INFO - CLOSED long at 2099.63 | PnL: -0.27% | $-0.73 +2025-03-10 16:25:10,343 - INFO - OPENED SHORT at 2099.63 | Stop loss: 2110.180442857143 | Take profit: 2068.057110714286 +2025-03-10 16:25:10,786 - INFO - TAKE PROFIT hit for short at 2068.057110714286 | PnL: 1.50% | $2.78 +2025-03-10 16:25:10,838 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5937928571434 | Take profit: 2017.497060714286 +2025-03-10 16:25:11,262 - INFO - TAKE PROFIT hit for short at 2017.497060714286 | PnL: 1.50% | $2.85 +2025-03-10 16:25:11,290 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.669992857143 | Take profit: 1985.2284607142856 +2025-03-10 16:25:11,404 - INFO - STOP LOSS hit for short at 2025.669992857143 | PnL: -0.50% | $-1.26 +2025-03-10 16:25:11,424 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 60.0% in downtrends | Avg Win=$2.79, Avg Loss=$-0.90 +2025-03-10 16:25:11,424 - INFO - Episode 29: Reward=10.15, Balance=$105.68, Win Rate=50.0%, Trades=6, Episode PnL=$6.41, Total PnL=$184.50, Max Drawdown=1.2%, Pred Accuracy=98.3% +2025-03-10 16:25:11,425 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:25:11,425 - INFO - Refreshing data for episode 30 +2025-03-10 16:25:11,426 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:25:11,742 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:25:11,752 - INFO - Initialized environment with 100 candles +2025-03-10 16:25:12,582 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.446142857143 | Take profit: 2092.8200107142857 +2025-03-10 16:25:13,123 - INFO - TAKE PROFIT hit for short at 2092.8200107142857 | PnL: 1.50% | $2.74 +2025-03-10 16:25:13,177 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.602542857143 | Take profit: 2068.470810714286 +2025-03-10 16:25:13,790 - INFO - CLOSED short at 2084.11 | PnL: 0.76% | $1.32 +2025-03-10 16:25:13,790 - INFO - OPENED LONG at 2084.11 | Stop loss: 2073.637157142857 | Take profit: 2115.4500892857145 +2025-03-10 16:25:13,818 - INFO - CLOSED long at 2083.07 | PnL: -0.05% | $-0.30 +2025-03-10 16:25:13,818 - INFO - OPENED SHORT at 2083.07 | Stop loss: 2093.537642857143 | Take profit: 2051.745510714286 +2025-03-10 16:25:13,915 - INFO - TAKE PROFIT hit for short at 2051.745510714286 | PnL: 1.50% | $2.84 +2025-03-10 16:25:13,951 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.307292857143 | Take profit: 2020.1565607142857 +2025-03-10 16:25:14,325 - INFO - TAKE PROFIT hit for short at 2020.1565607142857 | PnL: 1.50% | $2.92 +2025-03-10 16:25:14,362 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.669992857143 | Take profit: 1985.2284607142856 +2025-03-10 16:25:14,499 - INFO - STOP LOSS hit for short at 2025.669992857143 | PnL: -0.50% | $-1.29 +2025-03-10 16:25:14,518 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 80.0% in downtrends | Avg Win=$2.46, Avg Loss=$-0.80 +2025-03-10 16:25:14,518 - INFO - Episode 30: Reward=14.44, Balance=$108.23, Win Rate=66.7%, Trades=6, Episode PnL=$8.53, Total PnL=$192.73, Max Drawdown=1.2%, Pred Accuracy=98.3% +2025-03-10 16:25:14,651 - INFO - Model saved to checkpoints/trading_agent_episode_30.pt +2025-03-10 16:25:14,652 - INFO - Checkpoint saved at episode 30 +2025-03-10 16:25:14,652 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:25:15,577 - INFO - Visualization saved for episode 30 +2025-03-10 16:25:17,624 - INFO - Visualization saved for episode 30 +2025-03-10 16:25:17,638 - INFO - Refreshing data for episode 31 +2025-03-10 16:25:17,639 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:25:17,942 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:25:17,952 - INFO - Initialized environment with 100 candles +2025-03-10 16:25:17,984 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.446142857143 | Take profit: 2092.8200107142857 +2025-03-10 16:25:18,272 - INFO - CLOSED short at 2112.57 | PnL: 0.57% | $0.93 +2025-03-10 16:25:18,272 - INFO - OPENED LONG at 2112.57 | Stop loss: 2101.9548571428572 | Take profit: 2144.3369892857145 +2025-03-10 16:25:18,296 - INFO - CLOSED long at 2113.28 | PnL: 0.03% | $-0.13 +2025-03-10 16:25:18,296 - INFO - OPENED SHORT at 2113.28 | Stop loss: 2123.898692857143 | Take profit: 2081.502360714286 +2025-03-10 16:25:18,564 - INFO - CLOSED short at 2102.83 | PnL: 0.49% | $0.78 +2025-03-10 16:25:18,586 - INFO - OPENED SHORT at 2103.41 | Stop loss: 2113.9793428571425 | Take profit: 2071.7804107142856 +2025-03-10 16:25:19,074 - INFO - TAKE PROFIT hit for short at 2071.7804107142856 | PnL: 1.50% | $2.78 +2025-03-10 16:25:19,100 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5937928571434 | Take profit: 2017.497060714286 +2025-03-10 16:25:19,303 - INFO - CLOSED short at 2043.95 | PnL: 0.21% | $0.23 +2025-03-10 16:25:19,303 - INFO - OPENED LONG at 2043.95 | Stop loss: 2033.6779571428572 | Take profit: 2074.6876892857144 +2025-03-10 16:25:19,327 - INFO - CLOSED long at 2044.1 | PnL: 0.01% | $-0.19 +2025-03-10 16:25:19,327 - INFO - OPENED SHORT at 2044.1 | Stop loss: 2054.3727928571425 | Take profit: 2013.3600607142857 +2025-03-10 16:25:19,442 - INFO - TAKE PROFIT hit for short at 2013.3600607142857 | PnL: 1.50% | $2.86 +2025-03-10 16:25:19,484 - INFO - OPENED SHORT at 2014.41 | Stop loss: 2024.534342857143 | Take profit: 1984.1154107142859 +2025-03-10 16:25:19,581 - INFO - STOP LOSS hit for short at 2024.534342857143 | PnL: -0.50% | $-1.26 +2025-03-10 16:25:19,601 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 80.0% in downtrends | Avg Win=$1.51, Avg Loss=$-0.53 +2025-03-10 16:25:19,602 - INFO - Episode 31: Reward=14.88, Balance=$105.99, Win Rate=62.5%, Trades=8, Episode PnL=$6.31, Total PnL=$198.72, Max Drawdown=1.2%, Pred Accuracy=98.3% +2025-03-10 16:25:19,602 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:25:19,603 - INFO - Refreshing data for episode 32 +2025-03-10 16:25:19,603 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:25:19,906 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:25:19,916 - INFO - Initialized environment with 100 candles +2025-03-10 16:25:20,030 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.446142857143 | Take profit: 2092.8200107142857 +2025-03-10 16:25:20,654 - INFO - TAKE PROFIT hit for short at 2092.8200107142857 | PnL: 1.50% | $2.74 +2025-03-10 16:25:20,679 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.602542857143 | Take profit: 2068.470810714286 +2025-03-10 16:25:21,388 - INFO - TAKE PROFIT hit for short at 2068.470810714286 | PnL: 1.50% | $2.81 +2025-03-10 16:25:21,433 - INFO - OPENED SHORT at 2048.3 | Stop loss: 2058.5937928571434 | Take profit: 2017.497060714286 +2025-03-10 16:25:21,815 - INFO - TAKE PROFIT hit for short at 2017.497060714286 | PnL: 1.50% | $2.89 +2025-03-10 16:25:21,847 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.669992857143 | Take profit: 1985.2284607142856 +2025-03-10 16:25:21,952 - INFO - STOP LOSS hit for short at 2025.669992857143 | PnL: -0.50% | $-1.27 +2025-03-10 16:25:21,973 - INFO - Trade Analysis: Win Rate=0.0% in uptrends, 75.0% in downtrends | Avg Win=$2.81, Avg Loss=$-1.27 +2025-03-10 16:25:21,974 - INFO - Episode 32: Reward=14.15, Balance=$107.17, Win Rate=75.0%, Trades=4, Episode PnL=$7.17, Total PnL=$205.89, Max Drawdown=1.2%, Pred Accuracy=98.4% +2025-03-10 16:25:21,974 - INFO - Reducing learning rate to 0.000010 +2025-03-10 16:25:21,974 - INFO - Refreshing data for episode 33 +2025-03-10 16:25:21,975 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:25:22,283 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:25:22,293 - INFO - Initialized environment with 100 candles +2025-03-10 16:25:22,325 - INFO - OPENED SHORT at 2124.77 | Stop loss: 2135.446142857143 | Take profit: 2092.8200107142857 +2025-03-10 16:25:22,639 - INFO - CLOSED short at 2115.07 | PnL: 0.46% | $0.70 +2025-03-10 16:25:22,676 - INFO - OPENED SHORT at 2098.24 | Stop loss: 2108.783492857143 | Take profit: 2066.6879607142855 +2025-03-10 16:25:23,565 - INFO - TAKE PROFIT hit for short at 2066.6879607142855 | PnL: 1.50% | $2.76 +2025-03-10 16:25:23,611 - INFO - OPENED SHORT at 2051.0 | Stop loss: 2061.307292857143 | Take profit: 2020.1565607142857 +2025-03-10 16:25:23,983 - INFO - TAKE PROFIT hit for short at 2020.1565607142857 | PnL: 1.50% | $2.83 +2025-03-10 16:25:24,022 - INFO - OPENED SHORT at 2015.54 | Stop loss: 2025.669992857143 | Take profit: 1985.2284607142856 +2025-03-10 16:25:34,560 - INFO - Using GPU: NVIDIA GeForce RTX 4060 Laptop GPU +2025-03-10 16:25:34,580 - INFO - Exchange initialized with standard CCXT: mexc +2025-03-10 16:25:34,580 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:25:34,581 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:25:38,014 - INFO - Fetched 500 candles for ETH/USDT (1m) +2025-03-10 16:25:38,032 - INFO - Initialized environment with 500 candles +2025-03-10 16:25:40,923 - INFO - Loading model from models/trading_agent_best_pnl.pt +2025-03-10 16:25:41,094 - INFO - Model loaded successfully with weights_only=True +2025-03-10 16:25:41,094 - INFO - Starting live trading... +2025-03-10 16:25:41,095 - INFO - Starting live trading (demo mode: True) +2025-03-10 16:25:41,095 - INFO - Fetching initial data for ETH/USDT +2025-03-10 16:25:41,401 - INFO - Fetched 100 candles for ETH/USDT (1m) +2025-03-10 16:25:41,412 - INFO - Initialized environment with 100 candles +2025-03-10 16:25:46,711 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:25:46,815 - INFO - OPENED SHORT at 2124.87 | Stop loss: 2135.5476214285713 | Take profit: 2092.917042857143 +2025-03-10 16:25:46,816 - INFO - Price: $2040.73 | Action: SELL +2025-03-10 16:25:52,123 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:25:52,143 - INFO - Price: $2038.50 | Action: SELL +2025-03-10 16:25:57,474 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:25:57,493 - INFO - Price: $2038.45 | Action: SELL +2025-03-10 16:26:02,845 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:26:02,865 - INFO - Price: $2036.59 | Action: SELL +2025-03-10 16:26:08,188 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:26:08,207 - INFO - Price: $2034.60 | Action: SELL +2025-03-10 16:26:13,499 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:26:13,587 - INFO - Price: $2034.28 | Action: SELL +2025-03-10 16:26:18,892 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:26:18,943 - INFO - Price: $2032.29 | Action: SELL +2025-03-10 16:26:24,262 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:26:24,283 - INFO - Price: $2031.28 | Action: SELL +2025-03-10 16:26:29,592 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:26:29,627 - INFO - Price: $2031.00 | Action: SELL +2025-03-10 16:26:34,942 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:26:34,989 - INFO - Price: $2030.85 | Action: SELL +2025-03-10 16:26:40,313 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:26:40,360 - INFO - Price: $2030.36 | Action: SELL +2025-03-10 16:26:45,663 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:26:45,732 - INFO - Price: $2029.54 | Action: SELL +2025-03-10 16:26:51,023 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:26:51,090 - INFO - Price: $2029.11 | Action: SELL +2025-03-10 16:26:56,384 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:26:56,419 - INFO - Price: $2030.75 | Action: SELL +2025-03-10 16:27:01,719 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:27:01,762 - INFO - Price: $2031.97 | Action: SELL +2025-03-10 16:27:07,061 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:27:07,106 - INFO - Price: $2031.84 | Action: SELL +2025-03-10 16:27:12,426 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:27:12,473 - INFO - Price: $2033.25 | Action: SELL +2025-03-10 16:27:17,777 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:27:17,797 - INFO - Price: $2030.44 | Action: SELL +2025-03-10 16:27:23,108 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:27:23,150 - INFO - Price: $2028.49 | Action: SELL +2025-03-10 16:27:28,465 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:27:28,508 - INFO - Price: $2028.49 | Action: SELL +2025-03-10 16:27:33,800 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:27:33,845 - INFO - Price: $2033.12 | Action: SELL +2025-03-10 16:27:39,138 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:27:39,227 - INFO - Price: $2033.06 | Action: SELL +2025-03-10 16:27:44,533 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:27:44,614 - INFO - Price: $2032.17 | Action: SELL +2025-03-10 16:27:49,943 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:27:49,986 - INFO - Price: $2029.23 | Action: SELL +2025-03-10 16:27:55,289 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:27:55,308 - INFO - Price: $2027.77 | Action: SELL +2025-03-10 16:28:00,599 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:28:00,632 - INFO - Price: $2028.38 | Action: SELL +2025-03-10 16:28:05,969 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:28:06,016 - INFO - Price: $2025.00 | Action: SELL +2025-03-10 16:28:11,329 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:28:11,350 - INFO - Price: $2024.37 | Action: SELL +2025-03-10 16:28:16,652 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:28:16,669 - INFO - Price: $2025.98 | Action: SELL +2025-03-10 16:28:21,993 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:28:22,014 - INFO - Price: $2027.61 | Action: SELL +2025-03-10 16:28:27,313 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:28:27,340 - INFO - Price: $2027.03 | Action: SELL +2025-03-10 16:28:32,645 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:28:32,682 - INFO - Price: $2028.02 | Action: SELL +2025-03-10 16:28:37,993 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:28:38,032 - INFO - Price: $2027.01 | Action: SELL +2025-03-10 16:28:43,330 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:28:43,351 - INFO - Price: $2027.00 | Action: SELL +2025-03-10 16:28:48,634 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:28:48,680 - INFO - Price: $2027.83 | Action: SELL +2025-03-10 16:28:53,985 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:28:54,005 - INFO - Price: $2029.89 | Action: SELL +2025-03-10 16:28:59,309 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:28:59,328 - INFO - Price: $2029.17 | Action: SELL +2025-03-10 16:29:04,627 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:29:04,647 - INFO - Price: $2030.40 | Action: SELL +2025-03-10 16:29:09,935 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:29:09,980 - INFO - Price: $2029.41 | Action: SELL +2025-03-10 16:29:15,299 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:29:15,320 - INFO - Price: $2028.68 | Action: SELL +2025-03-10 16:29:20,640 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:29:20,660 - INFO - Price: $2027.00 | Action: SELL +2025-03-10 16:29:25,978 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:29:25,999 - INFO - Price: $2023.22 | Action: SELL +2025-03-10 16:29:31,316 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:29:31,357 - INFO - Price: $2022.60 | Action: SELL +2025-03-10 16:29:36,684 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:29:36,705 - INFO - Price: $2022.40 | Action: SELL +2025-03-10 16:29:42,022 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:29:42,058 - INFO - Price: $2023.05 | Action: SELL +2025-03-10 16:29:47,374 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:29:47,386 - INFO - Price: $2019.44 | Action: SELL +2025-03-10 16:29:52,701 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:29:52,718 - INFO - Price: $2021.70 | Action: SELL +2025-03-10 16:29:58,027 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:29:58,043 - INFO - Price: $2021.29 | Action: SELL +2025-03-10 16:30:03,351 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:30:03,374 - INFO - TAKE PROFIT hit for short at 2092.917042857143 | PnL: 1.50% | $5.48 +2025-03-10 16:30:03,375 - INFO - Price: $2021.31 | Action: SELL +2025-03-10 16:30:03,375 - INFO - Balance: $105.48 | Trades: 1 | Win Rate: 100.0% | Total PnL: $5.48 +2025-03-10 16:30:03,375 - INFO - Recent Performance: Win Rate=0.0% in uptrends, 100.0% in downtrends +2025-03-10 16:30:08,680 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:30:08,867 - INFO - OPENED SHORT at 2100.05 | Stop loss: 2110.579928571429 | Take profit: 2068.5047321428574 +2025-03-10 16:30:08,868 - INFO - Price: $2020.46 | Action: SELL +2025-03-10 16:30:08,869 - INFO - Balance: $105.48 | Trades: 1 | Win Rate: 100.0% | Total PnL: $5.48 +2025-03-10 16:30:08,869 - INFO - Recent Performance: Win Rate=0.0% in uptrends, 100.0% in downtrends +2025-03-10 16:30:14,174 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:30:14,193 - INFO - Price: $2019.09 | Action: SELL +2025-03-10 16:30:14,194 - INFO - Balance: $105.48 | Trades: 1 | Win Rate: 100.0% | Total PnL: $5.48 +2025-03-10 16:30:14,194 - INFO - Recent Performance: Win Rate=0.0% in uptrends, 100.0% in downtrends +2025-03-10 16:30:19,493 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:30:19,511 - INFO - Price: $2018.84 | Action: SELL +2025-03-10 16:30:19,511 - INFO - Balance: $105.48 | Trades: 1 | Win Rate: 100.0% | Total PnL: $5.48 +2025-03-10 16:30:19,513 - INFO - Recent Performance: Win Rate=0.0% in uptrends, 100.0% in downtrends +2025-03-10 16:30:24,826 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:30:24,844 - INFO - Price: $2021.72 | Action: SELL +2025-03-10 16:30:24,844 - INFO - Balance: $105.48 | Trades: 1 | Win Rate: 100.0% | Total PnL: $5.48 +2025-03-10 16:30:24,845 - INFO - Recent Performance: Win Rate=0.0% in uptrends, 100.0% in downtrends +2025-03-10 16:30:30,150 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:30:30,162 - INFO - Price: $2019.43 | Action: SELL +2025-03-10 16:30:30,163 - INFO - Balance: $105.48 | Trades: 1 | Win Rate: 100.0% | Total PnL: $5.48 +2025-03-10 16:30:30,164 - INFO - Recent Performance: Win Rate=0.0% in uptrends, 100.0% in downtrends +2025-03-10 16:30:35,469 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:30:35,736 - INFO - Price: $2019.66 | Action: SELL +2025-03-10 16:30:35,737 - INFO - Balance: $105.48 | Trades: 1 | Win Rate: 100.0% | Total PnL: $5.48 +2025-03-10 16:30:35,738 - INFO - Recent Performance: Win Rate=0.0% in uptrends, 100.0% in downtrends +2025-03-10 16:30:41,042 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:30:41,056 - INFO - Price: $2016.41 | Action: SELL +2025-03-10 16:30:41,056 - INFO - Balance: $105.48 | Trades: 1 | Win Rate: 100.0% | Total PnL: $5.48 +2025-03-10 16:30:41,057 - INFO - Recent Performance: Win Rate=0.0% in uptrends, 100.0% in downtrends +2025-03-10 16:30:46,375 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:30:46,389 - INFO - Price: $2016.45 | Action: SELL +2025-03-10 16:30:46,389 - INFO - Balance: $105.48 | Trades: 1 | Win Rate: 100.0% | Total PnL: $5.48 +2025-03-10 16:30:46,390 - INFO - Recent Performance: Win Rate=0.0% in uptrends, 100.0% in downtrends +2025-03-10 16:30:51,715 - INFO - Fetched 1 candles for ETH/USDT (1m) +2025-03-10 16:30:51,732 - INFO - Price: $2020.48 | Action: SELL +2025-03-10 16:30:51,733 - INFO - Balance: $105.48 | Trades: 1 | Win Rate: 100.0% | Total PnL: $5.48 +2025-03-10 16:30:51,733 - INFO - Recent Performance: Win Rate=0.0% in uptrends, 100.0% in downtrends diff --git a/crypto/gogo2/training_results.png b/crypto/gogo2/training_results.png index 9f69e9bc5414b7cc04863433050dff76d45e156b..66a5388b212834af6f39d42d53d5b9b525fd2b70 100644 GIT binary patch literal 191358 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

C{`kk}==z$P-CbQ>PedY7 zgnM>YmP_w!W8;1r<-&!jPg>(IJ-{LVG&eiDp2zc{GZ+o+?Y8`4*;T7nJuEC-H$OlB zg^rG#zP|n>wuAgbDHMw8jvcNH%KhYRy+hN}JHMN|diAOSSts{}p+|p&BI_O#IVI>+ zm6bJfM@B}@`}(deC@2t=*45P|X)WwGH#b*RSLbSUJb(UNPDzPDi7F~8(lIt>*o64{ zYUP^uQY1PQKarI!XsGxj*L5ny%}rT(%N9*rZ@@7dx6QV+w3JjKku4|3VZiQsIav=2 z)h&A!>|cxZiCbD)o~Kfinit)nXOdPgtpGFLEne1P)a#4aT6BV>MlUb3|MA!5aqteZ z5O7vl)S=ao&+reIS70{4yO1x$RB)%{)8xJ7Mdp8Tl8?eB^iL)YSCzZe`jB%RFtakv J`SSS1zXL+)4zvIO literal 61691 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 diff --git a/crypto/gogo2/visualizations/training_episode_30.png b/crypto/gogo2/visualizations/training_episode_30.png new file mode 100644 index 0000000000000000000000000000000000000000..d0ed5d0a39b17c3ebdc9814ae971ed1c4759a8d7 GIT binary patch literal 84555 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 p?hqXZsZ4K@Hp@ zxOK-trR!Ax9|p+^kZG9A-0F(}0aNkt@U9eF2sY%_>__Jov)qhjgY;GK($b?0wNziw zEO&8cPH?ib%L4>p0rD>R!-q>VU@$*_`C?>l0Ud)CNGH55PF;Mw0pM1l!g0QN_76oj zvGe`U5CHiLfs{X;xH;}gDuAd>%nZSlAcVj4#FtCExZzh%CbNLR-Ezly^Kbbu?-T%} zvG`GN@$S%z*vladN@uGgPZd*u_(r7IO2Y+2QN9gRFa=QS|DLr2J|GKM_n+B0DvmqU z(Et*@iyZ1%mjon3Y1f=rTZB>p@ot-2z}Se&zrtU7m{7$4Mjg*C84gC0U+FjBHcKF~ zN#F=$66C?OAsA<6Yb+p!K^}C0v{q(pLy z>)%(2l01e+)bO?~0(}h#%I4xy21svSeE_O!I4+JGTr>ZZAW)*p=73PyW%&zbi<*YQW)IqzK+-b${0b;@Vo(at zkDt-`9TXdDN!Lon^!NU?0f73y(MO9X)&+npy%Es~=L_;Tw8OZj3j%TR$K=f%aa0daz%ts=q8_xd%}mCIkx{k*Al!VoN9KHSK?O2wN# znt7#(BR5in-n{N9z8a8vnkCk66}bW{kt`{aIpn5dz`KfEa(wdsGf;TI7OG@Th<1l+ zAhmM)8Ko!Bfe?(k|BO2zOdqKk`9tbr-O)Vt=XTD2he+@Bs>-)re>|rY(aY5-%ZEZE zc}vTzWLl2^zMZlm|ANuc`>V(;up2WI3dUPNgI$|=gjt1==48<>p46JSmXb$fFmpcW zRx?1xfSD~%QHKg4ptEndZZ23AfBF15vi61UBi)GR{F1>sGF@B_2?;$A<{QM#RwIMB zk-TFgwD%OGWgn#drk9c@(bhwhD(#v8trGOA4AW0@F5f6`WBLAE4 z`5Z3in=9mMrl#-ahAK1wme1zHocD@gQI2i^-?#F;7nEE^`@7ru_A_c^uRoX#5sCX# z^BTTv6p4aB1mcoN^sCOK*%N`REGpi158T6(idS+zj9|4i(Fx@uSa$T)~i!@$JH7-bfoEvMaW zN6A3+Fb;(`|)~yp2|`GfA`HK_HR&TdqiA})gS}E zojI1|$IXkm{nu=wwhU3y_;`4cPk;V~+W>`RDR(-EisMkxm0-y62sI96a+mQxT?e{# zQ@9K&*^awn;lh$IlFNFAoVApPY6xY&Jq{#+5DxL4M0ztZE(5Yd!IlAWAn4QhQX7jS z@e`ZKkH|*uSLG%HoJvx%_z;P91?JrTp-&Otl)-)vDL4bbKwkM z%^FWeqI158!h&_F9wi480x*7Ax)4fi@=eSKkQkDgi>rmU1&7TTvSHuH$=9x|9Mt_qQEZO|q++2K!6_ev*4tq0Qb7!> zmZKva(I@$P`hpV;ffUJ0E}qW38oBq{p69Sn0#E1k2oq{zXqd9LFf>T3jI$)w5-`s2 z58OaiUPAFg)a}IoFL$v`jo_QK4Ozq>f^EUt0GKS_yZBHt)oVSi7a4ahK+pWS!%{w~ zfv-*M0#fPr?D=zfs3tLj*`CHAf?7Q7X?B)MCyKNjM{E^yEL;IO|7PZJXB#^yjZ%n~M7MW}SzjNQUs(u|P?E^xi!>H9Cp-f&8*3Ke?ycJ>#Nhzdq*IKKj}H}=<_~u8YrRiN z`|{Ipca}t?yTJr&YduAgU*5GwYaox2AJKxSZ zp9MO=<+vxj8MW=ue@_N)n$hs&KUywZ{G`?@-u7mJa-q;hZy3fcng(*h?s-q2GTm<^ z4Kl{NroanH;lK+mzvV9OEv}+4A%8p3mNGE&L>NUf@-%Un|{ z7@7Zv-DZ!uXsf^Za}Hnx+UETqX0lcelntyc#VMdmPDttOu8BPR%0D0?vdf2Ag896P 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 literal 0 HcmV?d00001 From 3e924b32ac1737c859430186ddf6f288a1fba465 Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Mon, 10 Mar 2025 18:27:34 +0200 Subject: [PATCH 9/9] models --- .gitignore | 6 +- crypto/gogo2/checkpoints/best_metrics.json | 2 +- ...s.out.tfevents.1741602105.GW-DOBRI.27544.0 | Bin ....out.tfevents.1741616740.GW-DOBRI.140636.0 | Bin 88 -> 0 bytes ...s.out.tfevents.1741621313.GW-DOBRI.39292.0 | Bin 0 -> 8648003 bytes ...s.out.tfevents.1741622168.GW-DOBRI.39000.0 | Bin 0 -> 813620 bytes crypto/gogo2/trading_bot.log | 18108 ++++++++++++++++ crypto/gogo2/training_results.png | Bin 191358 -> 174413 bytes .../visualizations/training_episode_30.png | Bin 84555 -> 88226 bytes 9 files changed, 18114 insertions(+), 2 deletions(-) rename crypto/gogo2/runs/{ => archive}/Mar10_12-21-45_GW-DOBRI-baseline/events.out.tfevents.1741602105.GW-DOBRI.27544.0 (100%) delete mode 100644 crypto/gogo2/runs/trading_agent_20250310_162540/events.out.tfevents.1741616740.GW-DOBRI.140636.0 create mode 100644 crypto/gogo2/runs/trading_agent_20250310_174153/events.out.tfevents.1741621313.GW-DOBRI.39292.0 create mode 100644 crypto/gogo2/runs/trading_agent_20250310_175608/events.out.tfevents.1741622168.GW-DOBRI.39000.0 diff --git a/.gitignore b/.gitignore index 5937e74..c4093f7 100644 --- a/.gitignore +++ b/.gitignore @@ -34,4 +34,8 @@ crypto/brian/models/last/* crypto/brian/live_chart.html crypto/gogo2/trading_bot.log *.log -crypto/gogo2/checkpoints/trading_agent_episode_30.pt + +crypto/gogo2/checkpoints/trading_agent_episode_*.pt +*trading_agent_continuous_*.pt +*trading_agent_episode_*.pt +crypto/gogo2/models/trading_agent_continuous_150.pt diff --git a/crypto/gogo2/checkpoints/best_metrics.json b/crypto/gogo2/checkpoints/best_metrics.json index 5d82d0b..e7e0e50 100644 --- a/crypto/gogo2/checkpoints/best_metrics.json +++ b/crypto/gogo2/checkpoints/best_metrics.json @@ -1 +1 @@ -{"best_reward": 202.7441047517104, "best_pnl": 9.19044876852315, "best_win_rate": 73.33333333333333, "last_episode": 30, "timestamp": "2025-03-10T16:25:14.651996"} \ No newline at end of file +{"best_reward": 202.7441047517104, "best_pnl": 9.268344827764809, "best_win_rate": 73.33333333333333, "last_episode": 30, "timestamp": "2025-03-10T17:57:19.913481"} \ No newline at end of file diff --git a/crypto/gogo2/runs/Mar10_12-21-45_GW-DOBRI-baseline/events.out.tfevents.1741602105.GW-DOBRI.27544.0 b/crypto/gogo2/runs/archive/Mar10_12-21-45_GW-DOBRI-baseline/events.out.tfevents.1741602105.GW-DOBRI.27544.0 similarity index 100% rename from crypto/gogo2/runs/Mar10_12-21-45_GW-DOBRI-baseline/events.out.tfevents.1741602105.GW-DOBRI.27544.0 rename to crypto/gogo2/runs/archive/Mar10_12-21-45_GW-DOBRI-baseline/events.out.tfevents.1741602105.GW-DOBRI.27544.0 diff --git a/crypto/gogo2/runs/trading_agent_20250310_162540/events.out.tfevents.1741616740.GW-DOBRI.140636.0 b/crypto/gogo2/runs/trading_agent_20250310_162540/events.out.tfevents.1741616740.GW-DOBRI.140636.0 deleted file mode 100644 index 68496f45501e334f706e9acee07b5b268b81e9bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88 zcmeZZfPjCKJmzvr?XsG=_w!9hDc+=_#LPTB*Rs^S5-X!1JuaP+)V$*SqNM!9q7=R2 h(%js{qDsB;qRf)iBE3|Qs`#|boYZ)T$XRx6BLF(^AL9T3 diff --git a/crypto/gogo2/runs/trading_agent_20250310_174153/events.out.tfevents.1741621313.GW-DOBRI.39292.0 b/crypto/gogo2/runs/trading_agent_20250310_174153/events.out.tfevents.1741621313.GW-DOBRI.39292.0 new file mode 100644 index 0000000000000000000000000000000000000000..a8eb0e1cf5a3c91bc9a1f721ead87b5c8e4c8670 GIT binary patch literal 8648003 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

Rlb&{Easc0ouMJAm^Jn)}$&^@uge zGwIicVWk@PyX`1Rlnkkq-%WQX@iZaXU1N{KW|to2&fMGKhFB^QSqo#&wKJeep8oKoQ6g8Hk3={0t&E$N#006V32sk6jQ@0CrE+cI ziDbO~b6l~a9BeWVN>?qdQ2Ux*udl`S-NfuEpQ98}O0M-7sxW?NsZ=mf;d1nS58q<9 zOhT}&y^2+`(Xt@3cW19`b%{SiQ>lYOd#;FAr(~tFJc!;jX+-s2 zhV!d$qW(Dm2>kH)j4F+hq%5`DE{OdCNY$EeQHpSMmGC4EgC!j zWDd{02XDax8cLODxO_fyCgD9Sa@$2x@)?sf=_IZ0N!QB~E-5ZYYL0g+Tqqm^nnT&{ zu4@)N2Y2>elkl~@(o5VmzK!tzWcyjmqFj_IyXoXOxpb^#>WscNDV-V4H&58@CUlcu z)XwP&>Z+7L3rmhBeTQ&UNv z{Ae)vITg!}y@fQ~d?}7dSFL(2Do4XWhb#_NcneLjM1Jq9gHIxFx0h2!Pq}y`<<)ac)UnD|Y{JU>FJ-Z7q1T_s-kQ>Ijb4U(U6@qB<% zBdX+Af{e|=VgaRJzr0Rb?-N{66~_h!*bTL&fV#Pb+a^t}4GAQ|h$WFvlwL^Ta=Q=63h{JS4FdRdMuupVOxzqt%&du-)5AJi)- z=+h#EOgFqUmh z`$TSOoP}t#oZRH#6)obzuetKa!`?O#Z!yKZS-#-2c;vdK?Cb;0ExCy(y>PK+o@pu~ zEl(vdBIcSMq;x0Wde-E-X_rc2`@%ajfQ!P?Rybg5Zng~C!ut|;xZ2Rp^#`Xb#Sc_+ zJ;&eebaUriJJ!T!3-Q=~<)N_+Fzu?~(xs3q*C_5HfhZ!J3ewxKF+%PWiHZiEm5{F0 ze&XWt6a9x$Qm<)}Yt!F^Y+48Z`7}|((#d(g_gracR=T0T&9bCR<9WJ5*j;vzNA;i| zl5A6F`m)z@GM>@ws$gHY1qT0UB@;1L`@Y@O*t12a(&JHqZDf0xoHIXb#4P3+o9$Tu zp4I}s>?`viQTO>SuCo4&fuD&41@)|c9yqhnVDjw+O3aaMR~=94L9-Ij1Ayw3Ho%0^ zu_zEf7|%oYk;a!u!DcJLLbVN0WGDxq7UdqWn*%tW3)r@&N(aHZg)!(rVeJ<1sQiE9 zA8nEgz&zXNPpnMycWU7CqmVX~2En3xO2uq+YSxo@K~!&;8|0uOq=drb&wPLuskZ^kkR`q{QHv)%ev(iE{xL3svwPdffv-xDVlgBF?a2&E$?^Q%U3?6 zuB=LaFtUlUEMUPZZjDb<95^Pg~=zfb-R6R4Rh-G@#&qn_h=6|l62~g zDZeZ5(pqH%_xJ5|5qQ0vON^=9SFy;q`}Q>V?y*J8(ktL*K%y-7?sbEfh4_*?z*mXv zSOHydZf<-i|67t}?-^7<0chPpE6p5OodHqt5s2(;NO=J1-;(=?VhmWEi2^qSvIY+T zVSp_21YHAwCpEvYYHdaCBHXTGwJ@m=oT3Cgiwmz2tbT1S_*?g^^d99?^@LEI?Z{AX z2uLOPc4UxLp4dbQYZe*e##=|f{lJJt{Be;doW=bb#wg!yHD-yKxVGmsuoY+cgwxer zwg$CJ&cIC=AJqhJsq+kGYyWhedUg16E%U1*nn$+oCwFsgWjJjV|Kfm*nmkvn34z}w zU`|_97k(J$s;A=N8DqQ6oIZfHuNz_b_POfoWphMB$TJUX@)aD_%FR0|)E-*7mI%0bGDJT`;)MIPSpdBC|KK=cSF{rNm%ccY~TmWVm*tV@7=0V^pn}IT@H}HB)_XDiisyu@OJ=l_W z0V@>6kDS?$S=sIjWDvCg&32=RocT7R+lANF((X{t5B0>%g#hfhir8O)i^I7YGeQ&x zY&EMNoYoPkLV5Y8Od{{L`zobm2VGv(A|9vvc;#8o6zNp1x7ev6=deM2DbUL*NzsC7 z%*^5MN}9=Q;sM7LnK+!}?Uh=4*T?Th-UlobI*hhCIk?8#nN8sHp3uGgX#K9ijVaFt zx7fH2Xj!g#cz95l*_CrgTK^Xv>RVSD;Qa=X(qQmEaIG{4A!Xxet%$3g7W0VV^_)26&9izbdm&`u3qwu90?gx-J;r>AQ@nRi9@h zvT_b+!$EPG6CoMDD;)hjtJB8MNlpY=v&>T93#uSZZcZwA>62&T(W0V)o0~&7y)f=@ zF7757ZiVr2cIbvBW%O>}543bkycV9H=`C8Bklq4vtJCL$#7dBCY6 zT4V#Mgjwlh&cO`!DD7uNBsbQ=h{eJou@PJZAnvIFZ>p_^X$GqY+$jL7cThntTfQj} zI3NQQh${vayw+Gl;&BE}VE^PYe(-SA-QDmTu7zk*p5@-FVfSE@2KVP5D;=g(NFk8- zibQf^V1W-<2^N znH}p|Sd6 zhQ;dxE$6QmqJuUvoP&ZG+SpM`N!1aec3;mj4y9cb=xSwNEJ&N31~PfK=W7(4lHU zD^{na_SReJuF3TZ>uSMSY*pH>VJ1|3wPsRPxcOa7tnv+`^|a)3_4yEoL>!V%M-5YPL7@`= z&ig9U>TRnF5bBx*Y9S41$kIuWTaD}<*1dNH3f3g$K(zsQ7`aXU-&z{TNVPah-MRkb zpK5736fIR<5F@1>izp1ig?|Kp%79@nyyN?Q`t@t;2a46S6-s(MJK0=EFZoPJdi@bD zL2b{ioATN=A6jPJe7U>+I!o__HcgP?&bAcg8O1uk5iJR;2!&NOf3^WXR71^N<(4P> z+^ti2$>YuA@9bCvZYmp&A>hvIso^<{1zFjehNWQ4jnv^h1Y`(K9J~D~)|~6AIa2QH zm8=;ZQsMsB{EK<#TgT4M1%%Ov0dyI5t_2EmR4T=9n}bl5+o8fw@4Y^o!uVT{J%rQt11!_xSB8qqe^;O!j7YVN&I&1E9BzPvbm(dV|s-cSol2Rccz3gOs<*SNe~yCu*FZTb|mz2-r0eK>~kH2M@{PxMIsq+OVIxm<(6e z^XqORyOppy;7qH5@%kfd?nfquj z-`?f0e(TZk-n+l(cy`WbTJ5r{RUB*gi`Js_m{i2f3xlw&Z{08B^JvdX((bx}jJtWa z3uf5u@7Y6R{BdIYIvwnKM>pbzQs&B0{uh#&R?*!kTJ=Y;eYG2Fxhk|P-MxXNv}dP8 zwpqQuwc@(cRV4#I6e$TPz5k+Yl=FohH;i-@&-J`oxm;oYDQZJQo|Rtj`M+1z7mBRI z8hJWGbqY4b*NI5A*yqHl@%WC32Fb;IPOWcqn#aH6lTh&Zxvt9b#;dTu%t4S7-=A#X z%~^Yhd9_T!#_GLeR-*NRH+uDfDURKW=$oJU7r~ZEmx_z+^|s3bT~Dz}{{N`tgi3() zfDw>20905;`o}|Efnd&be_`PvNS<{WO)ick{aw}fE0=cry)spJA8Jd8hZeOxC&WwW zJsw0rUUk5R3DoKR^DzEdL((cmXY=<1`RAn+DnnTCX>@tXWRl(bU1QNs(vck9`j@br z>tEcT9Zy)h6e6J*jd#c_=@Xtgig+~Elw{rez_%2<{*unE>wJ=|b5@c&{ALsjl`hpX z?Md#hDl=W5y(RHHIg)>Ako!5WFBIPb`@>IgeXr0bANSIY4|<>eeA6S-gOq5?vW!kl z*Z@a9=(PdmW=SmJz^FkOb6Z&W;q*&&0OF{DKNmGM(1VVwZb^(6xd%ESflnWpP{o08 z(19X(L*D?AeYXNc;{ii@y-pPR0w@rG+!Go5T|0n0rqsPhuwY$tl~AG{+}|O`mpx{86i({7@tSULs(V z6=jy`F#$8|yA5$CWg0nXT=I<6JAIdBxtz6Gn0`JHMBIS+mb*uQTIBwF=>pIMvf8Q1 zkbHJ_ru2r0qE(Abf$H2Q&Wdu+hRjvdQIs!gWh;0;X<@C)r%B+@`tiuGLsS-fauijz9%H^& z;El#U-|F;)aV!wvZ!?AU)bNp=g|NAM5Wqw5F(`0IM_kKI755Z?SC9l!X~iN!VL4kc z+R$Y#kDZ@1v;DYZrM$SQsj0epiBo1B!8#R3qx~;*?(M59K^?yc!nOFd}7n zSG8~;#ld4-%G*|_R*YLV=i#0vdDZ)T*z%JPfAOSChJ=LaUG?2I%lUcx(faPH-l?A5 z{bA8;lnSG3u};gnXJaLM&YSAWV!7=cFu^9G{A^`u(`@TtnI^#}@{<}#dzIDRIofd? z|KJ5zS}`~Ocyo6+)ur45T%KzfQB2JKn7$jNk#t_-XiUj4dWT4ur;MhhS)Qr62#H?> z)$sGJ+)A{mQ^o<$yP^x*NJtdL)_lMdbwO?1vSn?KhxiQcmRwqi5(2aPCgbh56*@AGe)aa3%neP1MB z-3(OP*>MR7gzO;}IMyE7fO9SSJzjMlFy8^`Q?KljrOs(y=UJ+xq$F*1bzy@3!NJS@ z=x*SZxgou(B={R8fHi~4gPJ8r20MfgevVV^KZ*x?-%azElbnv9ftu`~7xHy3f=s?G z6_*p`n&9VKTX>)k>=#-pqAmbzKl>be76Khzdrf)E>Lmz@`t1+vrTN;bjvtjN-m4Qy z#o@Z-&cIdS=s9wW;0dL@Z49)?f#)6NM%SeWtg@i8258+*#mRwB{jP-n(Vc`cRX=gH zzAx-w8rV)7%o*M)ccX;-XH>kem7lAama#A3dyqIr>7n={X=Z%Ktw#F`OjOJrO>OPr zlvDIcR$8xa+4p6*8?J#Cci}MIX$aV|jhC+|gWV(3%$_Cr1uLmKLv22F#X??zj8Ao_ zI}0d01DrkJc?Xn&hlFR5vv>fBA|C$9q^kR?6Cr^ww`P|Pnru_@{^9xAOZSwEYOLkY z)Dn8RBK#bw4<8FH*1pQfLf76Jm7<-#W!-E{<;5l{k=x(>wV@(INg% zIj=&#CThLAu+%eL*u+;4Mn?dCf;*!{Keh_iTeTkorjRpBsq*wEK&=3;HttlIh9NG# zzJ9eGm#2@(N9OTd&zR|qv!kk(fc(VdTd`qrXO^LYX|f&{T*jE)ynm^^9>s{W`u@@j zGoy*7Kt8&l=mz8YmTz7_`~ui2)-EFKsDB$J9}7tR(`&%9Z6Kw?F9)0J2&Rp=7zVqB zD(-MJH(S9qTS6=>$-Y#dv<25`3W=gXFW^*PmoEd%^$$9z#_3^v|2|dj&jUBsEIZIy zBQ^dKU5s!-QSToMKSKNGeU5z{*{!j(r^Sy0SIPW;KJIwTV<_;Hb>yF*1RpNmF7pHI z-7V;H3Ei$^oD!xa_fq+N!p0BjXv=kRkTMu7$-%T!vMFid;`QH&9`l!p54K>HRzCb_slt!AyMgt||Od#t;OHbsafd=jZO%$Rf zC3B|EfvnwvZH|=q=-V>$GRZK`;r^ZPyVCTB=?Y%Be8u6}9$xt0K43Khjzly53rLjlDZCAUQj5e^fhN5utfR zkZ?hXaW`h?B)hBu&%WdCIi9j!$|i73Hjh`Xk^?Hz50rpB=QHyL#r2pmEoQAxz5^`{ zN$84mZW#(fv3zF!`Or}?XR=`vN2s$Qq<((%YTD}&nvtTzz3 zxu$IOquAak%ei`b@+M7jcG&xYtL8SSbHL(Sy00MYJAn?2tfO z1Ya;4mZ_67Vr|*CYExnEjR>pZ^zfosmidYvvB~RG94I_5@iuzR(sAvHC5f$pK3{z- zfRf?bQe!tjfDgs1zoL6B)1%JQ;s0v;%|ZDiP3PmFoH72V(8plQTRg9qGL}W{N5JzR zAG_;&R*Hg`pKRaKlBb!bp!lh1VkXt2>}C@jC*CdG&&G3IBf2){Q7Zk;I`mpcM$cU1 z^k)sy)u^pQdS63#(N)B!Vo}>;E!g9R%duy?&vIKUx1I?iPtwD9)SQ00H9fO5MKrZG z&Ul+26&ZfpLaZbqtZSer2rUU`+M__arO=Ou8;A~#s*=K_YlHZOAm)fL^-3$m^k;kO zXv4{O`kROCocBD%b=EngkxdnVC>_Je$q@uL>Pih4@yAc3g2Ib z0#VbA&idNep>$y&R|pT|Pd%*f`?~R`G9^O8O%xZQHai?P#y6IR8gE2=g7=Gz=Utxv z_(LO2>^l@iR=MbYyz&I&oV+>Y`s0x=0wC9yHCt=C6;?}d8+Q$!Xvl$Ezu~2(-~rDF zhPA(%;VuntR_y;n-g`$y^<~?_B`T7XA_tWuN=_0)GDSv7LIDy50m(sf5Rf2QL?j1^ z0!0!55fBgrBqLcsau7ifBnXn;Dt_I4Z}+|ZjW_PQ|9v$W*1)2w&e><5z1Ny+t~tkS zKSk9zUHrpT@cQ+78JM{}sJxXmUyO2^B^%@q3g#73vJ1VsxzR+u+aKwq{PDxSR1!6rZRO7o+mo8I}C&e1qie@~BWRg*Je&)J3 z&*H^oUG7XYFqq9?tx}= z#^z2CgH}zWP!M5#96rLyD8j)$tVbuYi;KiJ-(oB*bF6|aYW$usGwSrU!u<0yUrF;- zfF_tZy!y`V5nUqDCC$pzHJ7uB(pCY>XB%-gnTrEi5eG`RN4GnlD_7DzG1Kqv9()eQ z(htOMFs=^&EOzt>bXyrge#Ogkoz4E>)V%eC=i^Dp7)$$TPN-S#`7pD28MAKjUFl+x zsKQEhOrBBer;I`86g|GE*6X&MGG^@6`GQF%y%pVMQvQKpk`rK0v+J= zP_Uy%dC{Aip|j_Wmz}kA!>eV}`{k8`p&LItE~*aaEJzyl^Gi%793$&KqOpAT1Lf*3 zXCIfEUA|=VEkLLxKtb|yV>_vQx zl3Mqx5X*`8CD&XQjeANv848z2{;+2set3hg6n4p`Kayf4^pSOsCXmR!y;E0M(zt;Q zT5+!hMXg-dyU2dd{Jd@}&Oq5td;1>`jVa!~d-A;|$C)_@b=3@!dsE_BXYct{A_AtF zUaL*Dmlo!drN+lv%{}P3RE4~ccU3u!K&6UTn*yg5Nrw!Y&P=QyQ#5*fX1?ZBWlRNM zz7#r+x6!VRk?;2O2dz58yZZ_KB4PFy-3&zWyR0>V6oHx2v39KILR%ku0W~6XCItFn zBjmTKK9m`C^L5nxO=4L0cqC&7jibJBXFg+%VkX3va4w@2E+s;&@FxO>$N>f&u^D)n_>CtyadgtmmFGx}*^Eh@Bk^ zmk+(^CUCD9xLijzd)8N^+461t3sY8TD`O5eb*nWDIZnTkP@1ApdLi5K#dhay8rj3Y z$x9V`OCjUb6L4H??!UFII7qNBtkU$iS}N)*Z{W7N?RVa9$dpFzg6B- z9rgN>olBdE&Wr`CUY^%k!Dc;`k*%X^cyj#MDb;eKn%!`(@}=v9qRWVtW#}p%qsZh* zJ|0>+7sc6$HBY$t&}>lq&xO9s7gf3s=jNPMLV|`qE-@BRX`BNt!kOQ(gWNMTh*2?G za?_jgh~S~M$dQzxCAC~m-uiD^n)zmIl4pv1a}8|&Oob=*Wu)Wm@Z<4u^EGEQi!c`F zzI$7|n}IVB^{gdFh}0w#k0J1^D3$KTb{*1!nEXk_rK%5KGKN3BwIGdun~MAu=F@sw z99_CsBsBIYmpuvZyv>pjUM{L{UoOp|ts-yqBXOD_ZSwqc9DDXXLMKi9PhM%AcLYvp zzUS0?{lz6bfmf#W(Z{NUhECqwp_R$p1P;nf{i!$ z=XV83{#ak3;gWC-XZ~Iplb9SdY<8o`q$t;+5rjDugCbgG`6Ob#kwJ^Ksan;Ihvf>D zcCEi7qrX#<`NC!V9N@s7$;v4=S8g-Hji45=REN+U2SpeC;B$sFwA1qW28OGQ{AzHZ zHsuOZhkg?{aQ}s*M1d~clo&1&P5U7AT1rp}OT8*IpohnZwf$nPc}=-l^Ovnp_bDDx ztjf*cJz1voY&s@Ei)W0esMwSgP>lAk3m^&S#J&Uj`d?)J${26FG!FR&^-EVn)y<%7 z2m5B{FGTQcM~9`k4_e=g(}9K_eg;U3Jh6wPzJmGH@uo4hKAUpks!O!&d*)vQCRYZv zXDp?Hvd*2nr`3~f;)*6ui%V|xr8`S@sx!|5Uh<-5n)>|l(&qxc^iu62^@k6EMF~VLtmN{v&ytOG>`@*K5xmnAves zU#TzrHm*$nuBB;r^DF}bb3}i0^W}2YnPqPL3qwUH>9foG#2Gy@6s&zz*8IaO9Q`%N zdpsNX9;)kP>MzRk#-Z~8{?+$VfY|-A)x_rigaa@Y4*tdmAWyjur?Tr%{N@daGsj$! zkMsan9Y3%Q0&iJxd;~?-M_8d{>y#@~%kz zvKg9Q3C5^9enQCj_l;Z^-de)Pp~GSO;~Ys5c<6e#94fT{Vm<}M2?f}N8 z0cQ!h->;(>n?V7%M{KhTOp3PFCiL;JUZ4bw7wE*OpCRjk8*w4zJ}693Ml2MS_l$vi zB=|xpphES^2kcAVZ4lQ^M@I`Br!fY6@3WmRQsukvNI7+2CM_F)|xKLKhrYuT>t^v!d5 z!qeK_nDJPe{qWTE@r!mPfomUhJf3Aed#BY>yvE8_roD^&vf}t9wMX)3S7v`;b!YG= z&_?)^#AcLKR8-W|s9Xuy=n-wN?12LSTBJcp>@XU{-LQ8NNdsy4{&48t_yRWDsi~K^ z7>kruRaL>b3KFrMZ=kn^HGIrgh!(Q^{K4-=ZGv0vyLVqU`QPen(+9Xc4^1U-!9iMCGqQ;9+N7mc zO1`S*^c6vZ`(7WnK!SHaeXnN!DcH5g?|M`XEsJe3 zhLu1*?#4|AtAGN7X8mAmQv2hCC&nMRP%i5dOX2OwvxkCGVdXX5t#kO9rEQzuAu4<= zwR1;4KQPi!H}DIU-c6*R=E5!9Zgx2TO4j5S$?>=Rc~3`vVP(dAv$hp^nA496?Au*3bf>AK$!M{z`&Ra;)zGi*qc=^s zn#v=%^8qgj5SOSDouqXT)Z==h=^^+>SgZjNDomoYvA!N|{nT13O*?OVwIrB0s%HN? z`F*?~W;|KLXt_w{pzy5Qslr&ra4fAW7zrYD;4dmDI8-GAE?!1PM(eR4h+b(m(0Yut zyDx=GjEmcDyAr+Y06yPxXB6ZfJb0k6td%eG_}zZvIh##rrUq(QqL}BeD+6>6<8SSj z<2W(4y|T z3X*B2#E+kydHn1X23@$7hy*`Td+-tlt%Snh{bW$H&ryo47zep98X6kVpixrYIl5ph zuA0XW>>qF*wkWUu^FZc{3u!30Xlvm0RXI$7GhB#~R?4zH1Ng;NjVnZYWcwcO41Xvo z+v6T-`+7O}Xl_&0kz-jpPZR&Q=IH8bfvJDuBdm0>Bsvc*~G~QDU0k~ z&Cii9*B5_O-)}vtD=In=2w_pPq4`W?AXn&^nrFD;akrqV_WszG70tESK1P zr>9viqK8}jM~6RU8;)AX(|S?}iJ6UTKQBu<%zfP6IoK}0FN%4==_=tsSv-fjB;?U= zFZ9#DbMg3h>7qrp;3PYd-|#1k&By@Tqo(Y{O*VHE_AMWG;Nf~SmmNJ;6G4E)ROnpLhWM;AG$>_^1vV73$s9;mm*>}|&` zE9B%a!V;NFAMd-hW-P`ia_kb$cLqgz2K82#=#sFyJN^uK7XUW&287PQ4bD;@nwT$N zP%tscERDgcz3`mV1J#gyHF?ZLiN}kfPQQpz4pj8DCb$Hq5=bYf^eR6C1A~?jnwg&SHAc88)%}xp{tv?|sw>M+)zE5{ z`5INq;RkoS(*@WLecang60Ur*;tM+yn|Fjks%9p4Qyw3^q#Y{8gHmR;MHgA z7;*DHS18zL8OiUNPB+z)haaPn`Lact@yCT)IYH~ouO^xnL?kq=c)8JKqd#z~c+qLd z_`+q?ga;Y-QNh+J@A)UGSB0|2?~#W$@-W)w8bBF3wX<)@ug$r-_M4OB#rF8S3d-kK2^L2pRC!)PH`o z^f-IL+EX?h(`zZ9{U_<3q?!Ad%k?Zdl!Gm5d5MrJN;AwmVIJp?Gdo!?!o)lA*o+(Ir~#`zP0 zBei{3lW5~S2aTGe@&Z1M8N+b!}ue_*Rx9urdNL3W(4CFUATy9ZdZV4vN zMjeI4%Db|yU2ie1yw*(br;Cr;3foG)AFf$>89jHAIK8H$n8IShaj2~bIhaL1XkTFBSPr{uQxqn#+|3@kALtdGHH@e_a+6i za}>VlyJy><6DCxw>W{m9aW|Us6r$M|B@9s{Sa$e;iVYM?$B>QS+8PuT1pk7@(d}e` z0+WwV+S}V5JuZ1bNqJ@{WZ;2nO9Gfn7Ay=J*J1FGdp<7Ze z#l4$Qbx5A+byFPOr+*M()4jn$su!ZK@&3@HFfm~8qr>ROjtFwQYB@PUI*0V4Hg!IC zf;Se2SzEiv*mkiz=Pzqh(b|0lx=x?EDNPT0ByATK#sZ!ZN7H{x`Yex*)}`oEqh`NY zKW&vuIQj4{^WY_uHgcw1)TA!6>{F!SpeDydLYV^OHrj+BK9n|yH~Ds)L@aK0rd9c( zp2Jzcr`Z=CJl)*BTZ-NIDWWkE10^_8gF~x9j-cC)3I%uR-M3vSH+~N5J8a*UpFhIzM)`+22uJL%H3=IsQXy;A1bA0V}Dd_r%|u(7$+M$>+cb7Ox? z#b*E0tA>Y}FtCMxaNzrQDl-9UB5%XxkE&NQAHNpB%Ts-Yqa?49gqoYmLP1~!IFH&JpfMG>6r+Nxe7LWAus@7tZkT{|! z4VMF!Qps{Yw_%MBMDH<$42b5%u_t3M-Q-3KFyxa-f6q$Dnie}#T$3=c36{ZStvi@T-k@NMvan1!V#+lr+6~Cp6h7V z5}$-n%|e4L$LOj(yK+NvFHIFc7AmxFSYPtu?F)IOLe-OEzxMAukPdzv!9rnmTN_#8P6cBR*Q-X=jq*QZ=r7yOiXUCF}1r5IyXJf=FXdvO&enS z^&o09N1-Le&}~GC?L~G|>BDZ7Cj)iPN$j|2!GZ_OSNB?x+U&jG-&ZcvJr7o`B6V4| zEgtyRIK=%C3_>tWq;|729oNa_wzsZSrY}kCc~w7PdWnz@XLmeHhh8rE6*QSOjh{T6 zylg{NoO5%Kfi_WGXBA)7WK+<{iz?*~xkf(T_PnvEj6=gQm#y8541AVf;um+mVpr|Wc8d#pCu<_cR~ojNh_QdD z!cUOGer>#2W+TfknA0QVj(JS<^5qQ6@Q6)Unu!^0mV_EQ4E@O4rc3PgSp&i9cGh}x z*Wy%iM{rq z+yeOQ-0x!xG0P9DCsTg=wrDul^Q>X>*+I}{j7#)r4RgJQGaR2EW~CF@^;}Oo()Mx1+uD7PJd!jg%(hJ?Juati@%&aP;Pst)@Q|_lx zqA(_kyZ+6q>4l5@9n;R{Q1alWa)B1&ERc8_}vBWZkM)ajE!Vs&IShWr$opQ2r1u2+$aS0VM-008F(y_|L136^NsHt z4~|y4c3qxC;z&)j=3GZ0reDx-wXQExokb`HQ=;IlL9<$&1mrC=wj1&Y#6cendA^gU z>Vr&CM-A`Z<>0^Fa&8N|4|npK;il7S*GL$!Jm_Rnh{3R8W-09*YUbSv*9dIR*VLKE zQSRkW=Hg9UXt^hx?p~dizW-2k!akFh$d8-y=jiAH+a1Gj)1p6-F%V52!O;J4rR>Y6 zTsx0I5-Q@ILI`s7e!ui~|9AEiWl~gC7M+W59M4Cw@@4Ubqap6V@1+r1asr%G7Z_6~ zCDX1p`7&j1_9YLqa}i7c|ha&z}2kg-q7>ab~RW%rp0v?Q@>Y1tEz zpYcyrz@FaSVEf-1f#dyC_f!gU;);x_HJpM*Tl%n3-Q39?gW2GTxO5eR4dn3EFuLqr z+d)I*y7cAx#h5mQ?VJ~wQQN*Z^)l(H+9X#?0=H+MN8(oAwo4x#v@P=pHz*MoN@?pH zA9x+pV#-GoRomGSAekk8L7_SeugZF4j8DyCd${iNBKytx3ISf~?#FQz)#7^(lCs`W zXxzDDS~VUxHL;PcYzrUvob*9VJm*VJIpNNF5(q=;OSdu60W=>HI4K{J8eJaFerZ zC0O&eTs)6ECtW4-_OqMrcIt*wRc9>eU0H*^Q-O`s+JkTIjSZZHZyDQR+{-BggR9W5(j~NMJmT76#mX0<#Tm*pU~zsqd}7?A9a+xcTAQK zqdi(qJIN!z-tywuwp*#bSW)EWhPRTR31PM@4&JR z$V~FJOrdO|94pzn-AVUzQngxRjcKC7-Fv77OVS_I-c-`nJm17sq@CU8oo6mDL-td* znbJaL{Bttid2Yd;Og*9|z0tKX`OYvujC|EQv>5KsKV+Z1_w&{bW^C=MU^Y5 ziNMpnUIUG0ZL(gUuc25&Z!AV2{6)foke>^ho15YOW*MuL`k|N!=^fRFxF%t+gNmf?I64AqUAc%Q1PpHZ;KaBp2se6cnZNu_x18;4FfGT?)E7W z;a*kMIFBo*5q#G}VaKy~g);rFIs1whKEgj0dvlS1YcO^t4Gs>Diw8G{*TBS?b+;}b z#k%cf$wln$e#i_3{kI0t?|s>wJXB&RYS)=A?roGRRBVnyC1r)ef-B(ASJI?`3N4p; zXFM179Zg;Zp)>`5sK0XA)5AJeajD0TB`iVvR$Dv2~Y@KE?b)7hu_@S)YLeK)HX5i{rbJ!VD zMTFGWGbD~wWVW}XzijqKYIE~gb!p(F?;Gz4>w|WsDGj-aMN+l6@N>%%@xF(Kn_rvw z2{b9dMp71+_Mmsp(>3Q&mHdTA0#(koZ#h__6LB5(| z$cVdwg3X9$yX(~4+#NZSEMC^8SSm^a0Ni}3me2f54|$&_l8+ZCuh3JCtoNEJaow3~a52mZtrl{!320l_ z7iTgiDWwT2)5=$9iLvc-e9e1fOEmX)R+<5ON01^L2}LaDgD~M)4w0Lp&hcIm%E6a%PjoU)jzd}T~tHD8Yz#wTcgqxkV&&aKewCbV{GmvtpB`6w}ZG7DB7b2wB)9Z#gw z=kM?5KCGD*cbDL(1y1rMRK98Dhc!dH?&M&QiOCgN-H+nA!b_{~yVSQh4q04AI_DJT;) zoJXPU8;QitE)y&MYJ$nJDw96MEhs2JUxtIZj6E1byn5bNdpRfX{xW5c;X?J6K$JkK zdWBl(r}vtjT0<2Uzt>{9o0ZO+L6{r%dVw&8i}O)%Zlh9&Zb$Gec@L8lvx2}9cNd!< zWsA4-r@S^}VUxEwK;#<1%@=t^*V3LFLQ%MD@pkO8DZYTm#`2-fC3_=s0$joA$n51W) z>ru&DDIa6h-!-Ip6m(%-+)cyd$i%js~Ord*Z;+8LL6oCK`R3lb>5tdGI{kNhe*KK>O2C@sUv={AHx1NKS}0@vEwP%wLeGzC^{>@}6K8dn?W7KFYWmzClw z`Jaua5IMTkAFGVyl!FD>+Aa9WFREPY^^2pkxlR-0m@F2VNrgsR3wZuGi@W(N}=#!SvdpcJ(cI zS}S0W69Ov0y19Y?$=jSrm-O?6(*aAZFTjw?%F2TJkTZ0>QW<$ln@#Yh5_Hs z{)5DRYsRa=RZ5f})E!WvPtJ>PIy-!Q*Z1A!0q|-*yfvs`FWSMucIT6 zT$Vm(0=Nhk=R@H>A(nDu5c>tO)JtEzMc(mBRf`m%F0<@Lm>HeL3Pm2VW58%(gnA#| z!9uhxe%DtjDk|Q;7b|W{IBz{(85KuKK}D62kig=xxOWsgajVwQz~DzxO?Tm+Xq2du ztZMKw1M)co@>hODnPauVSi?~1+ws-6&7W$EwI2j4nScE|P>!LNVZF^%Z?$msA8>g~ zu&yZJf9qlhN~Vpn$_CZ z5m_r5`Y1Fr<1pgmXpGz^xq?3f`!(p7zX2gry?3QWMMVIEH2ZaiQ*e-ykzH{;`tjq3 zVj97a^a(npQDq8xxM+D= zUiU}N`6AJD)RPm3mDhleK3>;!Q;c$`*j<+B%E^iAR$9lckv472eF6zpv(>Rm@U{5- z79d5@OHZ4cP{vnGe0}SM$_>1{{y^Of zy>(MW6eb)~mh0ruX_@stdHuIjEY`JL!G}qVZs@rd+ip_6z#d+JLcJTe=i%Zhzf4N` ziH-O}`DN`OqyjNLN2#rtUvBQOu-Y9Rj|#E2$7l@$>xhWCr_~)Dn}tOf8FVzhhC!+D z^!0B_c*LWZ-9p;UFfyf&leMcRN%$hA6a%E%=Cn?0RFO47+y`xc(_oCLq^#WEdg>L# zK+Mb_CJ!yo7I1~2Jat=DHJ#T4WnqCe*bPPke*YaB_rT0W49v&?lnbHrvII0~EbeEI z=+Bc5Lr|#2O6P-Q?E-j!9fN(I{5~TNB8yW{P_SM)&`KeiAmmC$+jlp5SNz}XYQNkt z-S)@qRyLutP|?Khql8-0H_D+0?D&;!OKT} z7?#UIk=M!3pFgL)VQ*liVQq~OYJzC~*0LMS8T3&<4L$vFxK2x!cCp@``}yq~_dX!( zzThJ=R6&gxYB?97!b2TXp6iWvRhUWJ459b^EPoT5-!jIFr1j+9O0fP&gAqX@5SOpQ zPOiny$H%9=nG2hdEbjt!qIr{}X3Jgw*O4K!v1gREy0XA^gX%(WVsnvtN)B zId%|!$HC^prlY=B-o=9E`gbM^{QOZ2c*|pXgIkX>|K6$ z?mTb2mwz-G9uWb537}^z)J4O_7;m4HJLsCRMUQ{{yw#mwT%;v>V$q#U6UBI*I0xLu zBIWPHnr%{_ihug%9V)hYqZ=&48=6wB78A^^aTvDgg^3marx|9^ZgcxS1DJ#nctf%{K* zY2`*rm^f~+hKHK)TZHQVPbcRKZqlZ_bgzzkyinWL*dMSchuD3sVnDUfxZw!sG0^Ay z$a`^d@dCYs7$095?0A~5ZaY;Q^c4zXk7cmvi*e!+>;_<+Is#(sv*QoJ@8aNh!?7XY zl*-B-P^VOgq}~7tc0$Il_P?P|ZeUzQ+xNet^ptiSc}(S_y;9&gaGf$zLX z?%{nQMy$;`Y<6kTtwB#uKgzH6-v?@4|6030AwqDrz?@rZ9xM>_csNP^JU>`!Js$t; zPdpkkbI&ncQTHCWD6g}cA2Pfep8w>XW9bkMDue0$8hj~8z_`mYGNx0Vd-{%`#|~Iz zk3g#c+^5zYg<(5>6cq&aLf^lCM}=-}Z8NO_nntaOP>N28LBZ+{n5x0#hQNn_5ln+`I7}L-t7lM{KX|~x!s5O>$cBkN zS^KS(yWS!Js84&eGg>dXGF0e3W|e29k5!Ga>d%3k2o_AWL|#UI{&J`SdV*Sg1y7~AVa2Qdz+YDib`b7kSA%=heLZ<5} z#0c;>gGGJeA(ETGoej^Q^MVMnJ?vi zS)>ciS?t@=0Ga<^eGZRs!+tPQQ@iwnYcCCdQv+4DhRZ7Zn>RsOL7Gv9wHQuzPNK>S z1qGRF_=*vL7a$l20_IVfELsl<+A8&`p6aO}4zAWjVvpKi6${xT{A;WyL}naQALf0Y zK1A8QRsSiz)ss7<@LOvTsR!U6tdx0J5b!@gQ_EoAs7K0MQYx}ppvReR&f@ly(#>1= z^g#d-xl1*wSms%5^QRCmQidAK|D`eb+qp0M)9^o?`p3GhT&eob%Qa4})-8+`&LjEv zg^c)<)B4YQX@UkqYT&Gki4m^)C-xC70~Yo6X^z6|Q?acN5MZ78 zFC(;cogm|B!Ae~ZD(|HN?7&$kC6oV~ZPx-jck=lO2yG6y-B!aLuO6yVdqK$TT6l_q zyy9fO`K$gl@BaOBi!DkR!Wt<3FngO@Soj|8eH(L2=>|~Z-GHiSF}NfF)dCu{e_wu{ zk|OG}yAF6V5E*YLU2j=j4lv*8?Iyv82% z4$RvmfWjpgL0Npa+~WA?5Llp}cid|yK86sx3txg=#Sf62#om{akN#{~N}k+F`O83>Rw;o5|F=03`-!2J&K$&F&jioVt#%D-kflGUE;=Z}wkaXTn0jpQH zuBWkXF`BaFQ$+Hj-%mNYnbgL6!r#?WifiQ1>p>sxIpSVgx-WE2^otqhx^?)k1b4%B zjZ?F;O<@j5>8AuoG#7K84;>5h(Oz+k$|p;8o!JO>PvXtTu$vCT$nf*?+X?9dK7}2w z_Nxh;phmN`)K~AKisuAPZs#uvuYb>bSwHtw6bk|P>^-#ehHRtGYa23aFWA%1rMkh2 z8!h%L^f(^aCE$58+;RV8L12%Ii<@x#cpicT$i`9MxPmT=xO}Ow($vuCJ4f%s3$kp0 zKgrHlfG}H{fYoy>uTuERmHU9HF-lA{-uwq95qO*xOe@d8Of0J%|2eEcGuyd=;-yJ; z-)Ob-&SG~U#nrAGEj6wv)T903vizZKwY-|6#qGMtZi{c1-OU<~{@lwOFi1<#e)hX% zZ30ahJYwdqeCH0v+ugUJ?wpWau#Q&2uE#e*9qkcq*I(~P? za)|xQV`-yjL&t3$9pN7Yvs4plb0Z#7CxrdAi9*nz#~BY9Dn6sv*3t%S;&tmygd;}Y z#UE!_IXQ2us0{72_x7p*2NeZajUUkJ>hD*MDpY16w0VxXEJ_v8qHll#h8I-v81GQT za3pvaCzbC?)9+d@*J;WKIhQrg;Sxd7OD6SfaQ{lR=v7h1pvg*e^>)AH*S=JBJ?vg_ zOx?;GxVs?A)T}`3i1IsC(8uPM1A^#A1v3+dA2g08`kFWhyo?ur{St{sJ{ghZQFNGL zD9xQF&inK7YJDune{9WOQTcNddor)U@6#T{@j^yzjlfs%?Z$|)UpG9uy2w$Gpx95o zuLk)nj*gxlAj+-{7HDeOoX6fZf~*$$SiuwQyr=@4EGNedph{qc7}Z1WsoVkHgs?0O zzBc(dKR=I8b`3rYYCigSkQF^sO%s{$+3W_7aBv0mUdjxCD3Izi>B((g#%w{>6c7*q zu_@L80$O>X2z|HSXK%VOFc?{G(S4mZ3Ra+s@l~0S3y*+%QhBKI-=h$HzSuokO65F3 z{!vEYP@(uof*QB&$guO1&Xw`!sgbL+gO?!;0N!;7Y>w$F=eqrYjql1rw)`36d1z|hH8XI6?Bj7N3 zkmf#V1p*#Z$-1i4aPXgVVPh>cEyoXRbpB{x8pE9}y(aP_glq$Cw<0oH8wnMz5Eup( zMa5mC?7{2q+-EXwbWKZI5P80Y|fB~C%Jq+2R?|{`~hI^u&PMEYHe#kE!yaWAHX2rCQ;A@7@{xa1ifjZBlmcJOf^Wd zuzUlb$}}N6y^0mstukz+ao<-Ppx0<(n2w{y{Ognptm6cW7JH;PW5gMKrXQapm#YR# zyN-?yAWc80)Wb?^!EBPPHNqa4`nUFUB;XN#hbzXA7LC?F@&-5@X5}(;_N*$OgdUvF z#2E(x6NgDBS4)X~7g7_>*iLBt7EfJ;^$;c?0H>uiM3_Sj`YEEOEsMG{dazr&p^?!8knY73GrUZ$p5qqaMCk`RAtVaEcHrgZoM$kZAfrs`Q< z`haO^l#)621t|sm890CEhY!J7mv%M$J4>afs8|X>WdHTQvRjVzInfpp+}?xMyh)tGOG2idOcoM!TjC8X+o;P9|I^8%#J5v{^qMs3K>?Mo9h#IDdlwMC|%R$B>!{buwt0U$0|U zS7<+)1d3h$&$k2Lu?)&Qm6RQb4P-0tKrAkySM-OB@Enb=MVZHv+xO{a!^uz8o;^-tXx?VW37?${Od~6k-3j8odbQ=a7jSZY&UnbW z?Y_R_^NKs!>~!yuyQ+YgWog3^?W!L3{H4-Zya{JOg>1gI7_*GsEMRaUG?2p{2uu+| z7#_%rEqJN58q!A~kVqGGx7Xr0x#(q5FtVUyQ9mx9T?WC@29Xo|zc7XLEB2eY?Y9ED zB4-;Os8H=WXbr`_vc1X2DDJPTgr{F=eKOdnWEsg&2Ir-bEyIu-FIo7laS$%3{-E_1 zDr2Jhk6?g{)_29u4gW99Rw!YpS25(`20q4y_b{LN8Mo*~VAWj?XSnQiTI3LSl)p_w zV}50?%N7@58kU1^A~zEj<$o(OJJ?h^nP&r5HdnQ=Kd|s zoeuK*bnmq=w;^PC6f)Oc)HWY_v7{L z`;M^w+`S?zMF65dL!u-Pe=nP&Sk+YEywpQ#Bk6=4Gt^#69O;8Oxidf=OGAGhM-Utb zlvDKIInD$UODv85dU<^CEt0<{)H)aLzdIi)1f*Y;64i-IzE9$pku*V<@1Gf|afJvP z@fqKftcgqiZ7QUo(Gq`_1V;?Y-B$JNh-P5NtOHBHU_vVSTDMS=INuF|Lk=C*gNDn) zTl3$g>%%TktCzdOu4y*?@NCMrn;8P{nf$_M_j=v0w58ABUsn<&{Lt*1&<8R1*7DE_ zROzrzblLJzl-`2YgG=KM4Ry_yApoVQ~%fPD~pgx2bQ8_8+NKfQDlE-Xam zar_Gd!qX`@AL|KLtyezr9i#at$0u>qlU_+TZ%V30+l2&fS7gM2>K)!;UQjWm^i;$Y-O) z*k?ly1_DBmcx;sgV%bnP*wv)csNR>$vj+aIxaj5`CmM2tmUqj13e%*OiZEqo6iDf& z_gQbuO)#>)p422P#sMTBm?&UK4VKd|4L4zP+`pp?xs>Oxd0&Dz|P8 zgo9Z$l$UE^LxPn)npTjVgM))xbutexRI#@|S@$ku^EPP!|KHc;akV9iS2sA3F=1+I z-;1f{*P2pd1h;y2Zr2hZ_yh~Oup3MZg-#IETRW+-y(0f_Wo)|Yb0>Jj!?4lCQb>pP z>>)R6fMpRr`3Inh5ay>i)K}kY48Y1_;_-nWHGi*|Gkhs5c1Ez7!tAQwosEDpFf5DW zfDK~l}nPEQa3K!>2!w zX!13?lB*Rc3%ohyKdI|0qaZ1pU1(z@6so8`>LMht$?v7zM@#zr-lIBzx<`C4D) zV3s6imo`dus$mBG?$1!@TCeocw&YO4MnV02K!bW^Rp5?;NA`23=SW=79LD-S9CrFy z{41_K$g`eL4o{QBurTjFo~gTx@{@kDYjC#UIIM8PiSbB}T)%a-*KhXBy;L3YLj}-NPo6_9@w74grkKxPmfUMJ z{+N0DXVSB2$X0%gJJ1^#*&lT#I4x}k%jXo!J8%U#)F&POZg@$Kr-zr_j}mrY+mLD- zKv7TT-JQZT+`OH}KA&e!1|@E>+-y@Z#!JwQ3i0D`i6L;`2<>ipdDZ-tIEwSBGD%8G zii;a^`~f%jN1qnIeY3fEy2on!*Oci_xK`Q~Zy~F*duCz6Ay-mM&jRrm6SV%KRejIz zvw~UfKJq7r;>$vR>oebD=`m4}c z>ZWz0nIoKVl$c3Q4^38s&l5YL@}2FfKWd8Wr$2g&1|0$Q(W59_uSi% z(vn5#rpTRo%)nT581z{ZS(${yjdt*OX`wt6U2)-&xa5!)lLZ-=n6unYT!&B$s=+nT zNK(HF@fmMQH`sDx`zDaH|D0Y*K=cWI@hZszBq+0g0)3HzDC3k8)0j@z1NmpMLGLaY zt)D&}RHb~Td=TM35BSn00BN9MRsyOQkdXkn#NnfpG7yUXN4Y089z#F?j}1hM!;A)1 z-0KPNKU1L#k4Ph8^ga~3uC%2>0>JPFzBN_c`>p%kWyz7;bO5W1t0vil5<$xIudWaf z^t3w{+g@ST{v4no0JVn;bsPrsHDDL8+@iy7TTrh_RKW}EN~isgx;2+!O~sQ!T*Ncg z^@TGsKWAu6kGnp9ibHeWc`m&-s0J1JB&RESGCI2KaLHm-{pjFRL63qwUTr~ z>IjTO2@$xG4R7(5)+U;wnR#7=t0uX%78(=)RM2Q|OYz;S|(5yDhqiK8hv@q2K( zk391+(JxW+4>XoDku!JQ0$h|w!nL+{qZnB5uQxb7(+fTN_vIpmZCFS1cPBm*ecafRN(M z{0qo;34iH!D&s;0#}gy+KR(aV6Rs`U6$*iaUuN6_sSLYCe z;@l%jeq*+1%00~&>}sSrtUpel4nKfISPtgPHBuD9>)Xp)XYiiuosm>~=5m!uN!4R7 zI!2WdD$r&=CqdzV)C;mYSs{)!`j8=eJlO=jBn17ZZz}eFYieS5CoE$P_0OK2lMx|6 zAesIZpkKO98)(s$|Hg9LnlTJp4j||c3wBDSKh~L9j%z*{?N{rI~Bk=VKtusBWX&7&&c5Y962B1jYui($oktwk+MFy z(ujPH-IL3)YdXx*McC#Tmh?Yj?(v}uOBUTCGkL1mU`0}3xYwh z3%suf-Arktpho8e!2<9eZ$UAv)@}8&`&W{va4aS!#T7PsSDt5w;0tiJpcDJ}vkbAJ zQws$u6rdhaE-t%`*_IK=JK>f001HBoObMtSqe2smyuLrb#SLV{2SBKx%vHc15;R`` zipYU&n*)}UbRe#kAF!h!3F2U3QNW9djg3uC#+V19Lg6Kvs8-NOxQ5w=Y!HgcO55s*%?wGR3U^e^CoLgB-ok4PIkP7(Wa{p`t$L zOzLOr^X1nzHqewbL^DO@RAzNQK1T!;oyi|!KZ&sP0>mVxXD?Dw-9esKr8CudMuzK` zdv=t6mxEbik_>0nSjmV{u<`h2>DJl1GH{6{b&edu@#;s8-dvM5nmNT2$RIc57u>el zPq6C}zRQslFGDterPEkem3lsqdv{`Q^K8YeIn(UV2+i;bE7DV)aycXe=dssufp?o9P(9O9w8$LjQ}|dV+T0(Phf>=YpJVG zj}I(7ynOSa?6~9y0C-tcl5-}wfo|N^2FkUHSVl|Xe}rv9DTU7IMMdlp!^MQ(f@3`gkCXlB31~VHMN#<;OJ_L-p(# zw~pgUGte9warKW1Ig>@uim1+OxFFM~tni(K(H3A+Kq5QhI4YT6zk9a}=?IOeTM?28 zO2V&SI|A{w|B6mg}oCy2A80KP-s1P4sG8D22k1aa`d0gewW>WLpbfkplb- zGzwvvh%(+ym2L{T zjCJ=>AKPXB^ncWk2^kqgm7Zvvr8l8qXtNbK!s%&`-g<^H6bOAy3>-qCzgJ_iZ;(o3 zR-1dEGI$1|F8c3E-ljy13|Ew%Yy^q#vb1gG+`dWx@hI{C#a{GjbqsB;VPcZ_tzs0z z`LG(59L+5CVT)PXg4^T{^z$L6d18=RdI32;F&%#b@-qSTDg{_x74N8#Zs%$?re7}| zA~Q_j-^Ty~G&(Y{y?#)q+Ja&Sw%`G96M#LI($dluf1$I20q{py;1YYkLD3JY2;E8i zETBaWFlS#0Irf7FVMUOcxD9#%h>iwqD)Jo!=G0i3$)UCw^|TD z@zIA}8B+2D|A`+)W2;ycqZw{KAa`zaOuLA5c60#S%ND!R(uHJqFx?+&Ks2Kd^llo^ueB3^1!iM{^Zud znDnNLGhUOfKpy=c=H5Ik=e2zoel}e)|&6Cok(NIbxq9P3{ z8lF^2gJvZ{G!H6CLMjzfn%n0cYi+(S?>_b)zu&Rf@xIn7&+{4X;Tq2CJg++u%wC}@ zt7K%_vR6zes#1ru6H&_z+o+hAEc^@)ue`l?qwFPvO;k-iz3|JI)8O<``0I|EYxpNt zXZoXMI0W_Zx{aXVl*aC6m_n}sjBXlWRD>pKdxkVq^oU_Q*?Q+tq0E5;2LyEk{*V09 zOKg!x!KVgr*WGll6X5fA$PmyZ(+V~2U#9Ac9=LKqAi||RT+x&QyfU;k_#jg@9VV8t zvzP4XD2TCd)Jz%#tT@yk=%4T>PAhn+XAfMvG`#@WWVNpGk(KbD#^&FI@M)lC4zPuN8O4XTwq)>kn@NVh7=%nwkR!l7Q)-5?zP66*Bv6vDND)N{<69xl7 z#6rYpW(Vo{^b%uj5S!tYtn$jrKqqvHo{!4Jwr0obOe`~k zUy^w2V|8q%77wXqDHRc5Uc6$95eAFOaOEjyZ}&%abMr17frR!`C1?#X(Xn*uvmWmS zy(KX>Gcvy6Xf~&K9D6q~v=Urpab#c>8<~7U3 z#7Gw&xV{VIV)$zWC@o-yr{wkJVq>;CHtJVO4zTnJsD4A~eGqO89|y(b=H+#(!7Fiv zFo&CyGk>%@34}!*93b$i>0Ye3|upWKt&TnEr|#HkcrLM04H|#2$Asz?=HH@3_p?a2Au`#VYyv0RRI62$PC008o_v7$Q!`9D$Mu zchy6Y8^ymVpyQ~NqeaouaeUN_HPNHF^Prub9T1fY)H_gD3{faa7zUbrW3z3c%a^xk zQUUtSZLnz|j|z0U?a+zf=LBX8husw;n2>_3f;u3dtJNE(`cy5wn2a?4FV*@ zNZEj$5rAM_#lFZN;^N{W3N6x_4FzW49OFM=0X~k1ZabX1%{iT}#XCUXwRlZ%cO6MsqbM zry(2#Xa7F<;31epu!8zB8xNH~@ov6FvrtrgihZf3rk0_)4W(6d%o7c@gqd=t##ocp{n7I1aS%|dJs)RwJ)5ks)m98y{;7h0}y=upM1n2;4{ zOy|@>+Cw3F)`5v3@`g!ZbsOsy9^nWv)}_+n*RP+zAw>FK6N6Yh!{95F1@P|jKeU~Y zE8ETw^|u+IXqccXC?JRLgYwV_{Q)-Xz0vPfs+ORhXye??uhyAW-2`69Ab^?ybQPA_ zEqM-IHFvb{bw+u4qSu=*>(W9*b1(_qz0V$R2rZW|tq4cu2@<1+hu49FuASU~U5{=i zs}RArAN%wwX8=of7;6>PAq|0i6oN#Jm1TDJoyJcyv;bH#P=o=or@TxQZHc=sC#z zm<2|0h*EHH{e3$ljPK2x4|<)xBcW@qud6nu?kR%EAS1LO#N}I0qZmA-fWRrS!c6yo zb&CSuM&E1F zUF}$fOG~6!`Bf+cr(7;LT!n_Ou{Y+tsFI@M33NX9a3ks+49Iy4<3Y#k$J|oq@ousL6T1Uh zf4_ZBMk}n;c9+j@Fm{>)eY+V1tBa*ULk{@nvTCMJ*P@D z|CEOegJhT20yd$2}g1>e*%dU$VqavFnp>O_OK zDIAa+&MheyE6VT7?NPYE6YY`Fizhc2j3snH5EH-YI}*|l*e%Gwt-FzG?k%oVr~`b>QU zG^i=A_1-e@TpWZ5D4c}MgYS`rmR81BJ9>Lv-riE^=?44Trp~R5ygxbG zM)2+}pZxrRjr{bj?SfB>0qF0HTk`W6j-Mwil(wX#+-V)^UZ68lFg->xf-jD zmjPkAF*_$A;Uj!59I>C19~?t(MlH>)tbVVssw#{fY?V%?g(Eynz(Vmj%mg^>ZMlv~ zw!Y|+g-D3k=6*DC3QW&M3u7Zqv^PWX0dl;|rTm$igZJ;>2Q~1;cV1FmhYdMS+#F7D z!#~w2_Rqg&ZZMbGSO^vaIIdqL_L7JJZX?#V6MElv@HcK9P}zqA2MSvtP;jPFOWo3kD0!pdkg%z@#kCs2r&n>r49)~@){#Gg+(QUp%B`8?HDW> zf+o_=M(>X0$c8Vq`(?~u+(W!0-El!Y5=0JE-Q&Q1nmkiiB1`32*c>0+P|%5~wrI}i zB4d%=KpG9QEDXAS9ejT*ur~Nn2yN48z((K&rm#fnAhY$lxc)x zNR}}+)RmR{!8=6fh|dTFV-CK587TiCieQNdUwWDS1D#acbr0^FQv%rxrU*WYEL7MB z6!8~eBj_-fkzT4YQ{&Peqk1Ra2gAPl9}0H#xUK>%d1_HZ;V}I26#TWH(<7suk3KEC zTJCLvHOMOUjjheqQj|?YUvPZj3L;d{%y8XsF=dG*e*TSqfMv|at_BD1gMb~RgUztG za73}HcKW3ys)NQcSQpJU+nxLBOw5YFdtPQ=ASA$Y0ASvO5aggQoZaBTCf6#H{1a{s zMx`i$Hrf#=gZYfTpb~hMECuu)o#J@0zz-o`7A!WrQc8brI`RNytY)%xi|3U=j?A-A zZF^c(maxB?p57}A61?Wv(%tM@mZz#ByJ0%U3e9_4^EOLMAG%Sp)6L*rXXmcOx7(QH zK9`r`+wKFVH%AMxb59yfOn%+)h4j{(aZpW-{kDIPFk5lzd>SnULL|(3@}pM(ZQlsWHatCv;S7Z^7SFO0Cv)~(vQ z%1R96`YVNmEOg;|FoGF`v@*D})DNFSNHc^07WlA+Wx`akfWF*j3v}Y!-rQ#5b(HFOIiZXG>T&Z#?XUsv$CF zAPBEfYUbLb3a?{?wuXc~0k;HZ*)8k38Hlr(H8f!3VaPwi1YrStVjH35Am71trXiJPO)I{?|#vllOt9lAeb=J4>}5Q0L$j6G@K4lhq z*)7D`ki_eyAAMRhIhd*tuxRe0jZeM{oYk2}A9^lqfKY;1&cYk%j3JbWm~6y=*|%AX zas<(zw)B=Hue4vpqIW}k7yqfETQnMI_AqF1`))ME?qanzGBj*QR|j`-LEU7{-m~TJ zA&(_u2e6lr*bKnp>Y?UQo#bW(Ix-5_Fghf?v{}c4oFxk}92WK}e{`qG@Ca9qZ?eK0 z4UpadFk}EDAYD+%d%G>bXDDt9I?%o_*`usXgce=n9FKMo0}h?C7N#9(v#oSQ3=e}S zhlF!MA5Jhw98!b;3g#Mm3_DD`Q=a|}u?)nlg*_6XjEXagC8)F=#{w>`)21Ea>IfWv>Q}hl9Ry`W`orSh@j4&P%MEkE%h80aOG;;!;fZcc^59Q z^bSEH!o759+bu$p-b6Z0_6S*-l*&XKT(*!77tNl!ScV zXqe0f1N$!;kNTsj5#NG>rhE$}Bs zSr^@t86!->3XOyM5(s^9?vhSwtmyQ^oVZ#Sp%q^D(#Jnsxf4sim$&D@C_8Y2 zf4AyYFx9P)3&R|OBTQaQ`=0RXQ=fxZ`ybi3D0AWU7@d9k|EkChQVE-~*A>kM-ViSh zY3+HZeMXC?hu`k?{26}A?^PR98!;EVm6aiZ7y)Qh>fF}-1N=NzKcV$8+vhWa zYTzzWPmex(^5j0&E3bqF=h05Y+#X0YP{2B#*Gic9@DW<)B?9aW=e#9}4=jUa+W#K9 z-KTppmlH9lx8%H1B@u^a>a{CZYOyTQ=mYkPM3m$`Q3>;q`8Zm8))RRH4pkn~v6(eEpZTlF|)pjJiXyV0pQ>bPUe!*CKnIHF^ z{VD%&@rJu-~H+ZMW^63^W|Ni+-mAf|0Z^HW+>^Phc zsYkmX_u>tB3^#NPF&RR|ds+KITot|l=Jf2ji;y!v&sMkm^JY9n=6p+p}4T~w)mMja-8x0zk&8Y zp!+8e;{vrx?WtyIT49@QrD5k$QEkKFpI8}oXfR!ER`h!$Xmk*0;bFvm>e8HlOw|vAg+F(ln|CBS)Te6?;M|Lgi7SCv;VbY+=WP+_GoGLC z4g?K1&_i~QzDz(*csH7{^@cs(^2hP3;koFuNY}l`Q}|G`b!ho*S~tl6kTj4k@68JF zwOwo0u3qi0_LryejVaQq8{sZNJ_bdjoRNmy~4rHE?V%d24mKEBn{!&=E6*VF8S*l z&1+;PzXX!7f-n=};Ik02Y`VS|QIKs$($ekNpng6-cIv->N(yl>Ya}Nzw!=H54$mV5`#wgAj4`YF*Mnv9$?d@a?U*HGq|7%hc9vTZ3=id;o{bEsf6?uLy;YwjTL^%2GO6bj2*MY)~o zw)yRA1`VbF<9Tgd6adS*>#D_~j=u~ZTV#{E@dxdN4-dn9h;4K3L(+LzKo06u+uW`= zOlm5o0^-R7oVS7f6i$#7C*63DylRZjUv}M2k;$M>`U-PrKg4X4*bfjEBf2nTv%N)4 zgPodB;^l1ug%N<*^UbPbEK>_GQdz3Wjx5XmWDfbc9i;`-Id2~-aD}5G6#%LFK^W43 zik_D2eiHNBbtniBe6tfWSmYM4XGy4>fIqT3!*a=)zr6U8Jq&9$RaoeP2~dPL+b=y* zdU)M^JyC&DRD_VFsjI6m_dd2|F)AmzAbOM12bLm$X5qij&#?r1Qny-Y8vX^j?U*gd z+06k+LePF3B7nHNcX9BguoB>O6ecu!E8)6yQthq&^45muJ*fcv(N#_JUX%O7xtoWV zy)(MkMEad!S#qzDxb4UGvnYJxF=U@oPUd2#0-ol|KHjt7CA%hX9GWd}s< zt3!zAL=v$D%M^fX3auNXN6>dvGfFa!WxPA)EM1cdNE*{|%+7avy9$n=_;Bz~WaEV2mc&ktt80r@Mv zH)8yg{hgEMw>+}}i06zE1rO!}C&ae_m1x&!z&`@}9#D)XtZ1E+TvkB`92+O`6?h8-;vYsU3 zLxh6UT6*z9POyb{G?UO>PA3`e3Xp~J?%ki|D@;LS!&WRnG0`&KCYSmrrwRvgbXrq| zR(&b@dBnm2ZY@A^meH$|eh6?3=~pr_1wdp8Kxz0}?R=Ln1jB~gY0ztR@cEPbKciI_ z6!y_~6p3)AZQJChdzCO8$57Esx&PMx)hj)N_(Rron*(#BYO+!6nZAyz^DJ&CO* zp}JXDgcl$$M z=T9$HIR>lO{>8@ot_)Vy$b`>_WyGv=Qm?)EfW&AF^KF1djL6_^&l|FfkQ75p{{@a| zA;IYdWTELqQtyHcb61vhuKb@z*uvl_J5gP6E?8hGQCy9ZAF(4`&U~#D25bY_DnfZz5D(3&$kC@R+m^;A9M;K}k>zoM?3We7? zO<#9F`8X7)ftHj!F9(m0<_FfmT6AinE?-8fM5@}r!xa(|5A^@V9Mt(lv4w<&B3~^) z^=Rt5*HkwAClIUGhu7ic5IK!{SSVzYeMp=#X*AK$JuO9uUQl+3q0!Ka1<>c@yDR&b zeHV5J_{%~W@jiw*!!;%W_qrb+W8vNO34TybqrUxEKJp8!=)x^1;Ur-xGjogh>AkQ+ z-t(Uk9eyJ>+`~p1aRTA#L_X`Ti#CT4)!Ye~ByAfe0aIQ?*#t!#OyCIW38tG!I|0GE zYA&z8EVp#O-8x;zwy0~M1Lgpt z%!IUq9%C7jweU-=HlgK&HbL~f?+$$q{mbZQ$XP8ZLE#X2tor#jY>tLhgMO#HeL`32 zEmnAD{!W+q8F^#twR>0fIx!1?esThI0ww`u9t566O@6gM`?*ES)c@>FmgSa2sXs0| zx&fUGuv&@836HqxMlZGk`W?9}r}-Y(@#hsDBeG0zK3>xFOmP+bEs#)!cis#*>*r6? z`?Rsa$!26dEhWM?RrfN|lDmH*D2H~LY|D-Da-~61gD*Lr-QgOM} zruf^p=fWZZ(ejU>m$8@}9|6LXsj-W4GKKUOQ8@#Q%n2YL;tmgFt|(@cl}KuNq2*k? zu5^?))1C9?;)Dn^8-fXvfxjh81;icikYY#4conj}MUT}U=tyBffM$@@he9HgfF^2Q zfE_@XN;bEHDv4D5J+Vkg#M9t3V*W3Pn6ntPRvP5CBvCU<#H&MTi}TV!l(3-liMLckYOwN8#Zq zj9Xr7AMo(8te3q*q%%vynt2qzorITHM~m{B%z-OHww?Q}W)Don7*x?4tzI5OVuli; z-Im2%93_bCfjT2%yz=y23xOMTQnyg}XHQR}8;ON*k2Yi;umb9w@4*0(SR~akf>h#T zOWBb$?8CMwloya%0X8IQ?Ny7p6hH0h2jI_ZjSLO#bjkz9jN|S?f`dsI@Y=qd_OaU*4c(u+hd}(CX)wKlvkEZp&mY6G&4tL8TkeNahWeQ!RWa3;rx<;rk!kb ztGSpsm{`<|oek}eiaFRDn%i*6^PMctm^sNT_~Q$dyHU=vzkY+8iIZtA)zHe&#>n{R zSE7oaQmwb`Q~R%9IcRR9X6W$GSHPjAp43>ea9Z$zJJGp)8v6AvoJ{OY%qli}#f*=c zAGbYf%yn`ysZi&p)q>?eAB(!?FtN$m8#*7gb+!>ZW^8X{Y~z5v(w1P(caML1Xq$_DV1|r_~38T z^C?A)eR_Ik{9$_36H<$}&lsNiZLEL!#vi6<)0}*25wlXtfBnku)1&WjdFMhUaot*yx*qhmplD!diHvhQg56vwfJp%HfV(Wn4Xz`m>&LJCPg|r1G2x3 z^)KJ}!}N%Wl~b8?RvZ7IT1x)g<-S2SY+ejDpwzVV0Yk$&)y`Z@H&wg38+-={}IV-}U} z$}QpFrstQt{KxdT74tj@ICXW!Z-e&B7ydLomu6FnO?{qD{5CzmeCN;8BQZQ@2U90U z_iuNy$@q83e%$Hz>B-khlX|uEn9Xm~^UHVsHa(B)OR4r0?WoTbx@n`BeO%pvQE{=z zkLj7Uy8RSAQ!D<@_0z^1NQl{*Ss6JQ7?~N`J1i?XMbB_^HrriBo|((CPSKxJQQkF| zX%UHA=PK@&LlYJHyA;Yyeuf$NP5x;X4RRL(@VSJ4YGroetRLAj>1^WUWOBS^`HtQE zdO^a=U(?jMIO*n}3(;I_)|2eN%z`&Tk2ZLgNmErs{?3skwS;7s;DA_^V<+5?iT6MM^r^yRLx1G)*AG>c=mfmU zY0=&)l@FbU==gv9z}CH(91{KGFIasT1;{7x)1b=#1HX<|24PL;tRdh$PB$M!rgK~$ zlt0BmqXm&ypQKj3W8^+|s81v~W zoK66S@d#k*xdw(KU*EGlBn@W+ULFGx2FxAJk7c0WPJN4)3HTxhx@_1MJDk9X7Cq0= z#i^;%GYe$nERVH-ZC#LK>D-&s^XTkRV`F{D8%Z@cBayJBaZRtOwy8Ok%*@O{G>iZV zEI2&;6&j2oBt;;6nr5`?hRl2mR?WwJ zbo-Z5h3&R%8>3)0GD{I5+JI(=>JcF)zkfdgIy1sb59l8V`63DpVXTMc$UQ+FQbxE= z_;NU+e5GQpO z4Q|HN)BT=b@yw5uoo^5cCul&3m`~AYsQ99(?RV?!)=gl6H8(c{%X31TSsCzx#s+)l zSa&1&=p~$y7ZQ!H@N}SsfE9&d!T|u2sJ8d^AFbqMnZ4wqcj4_3RO#J{XD#sdlmvNe z+u$)a>c^|zg|1kW{uY3-i$?2HA^$_Swwn0;OD)?85{0mQvio4sDBcLMdds_WL>mA) z7Zd}In4mW&UhBA^#6JPHv!+I-gqw-BCa1ia7o7C7#I;5hSXtT zC!{Ed$!nXMXan10{$;K`LAQjNG7@nVGg@b%E5smJ?eo^UW9rf3q-8MTlMegTlKaS0 zQo-}DkY>Wu&d9rf)7BdY0DjG$aSHj*)~j=8>_7>9YP7K^5+OQje%6C>C@?>L{(QWp zZIb)h?6qJbs@}VUL&Qlk7roSL=w8%%mVv2B6zV<4E4?NkuDehlAnyLI1+D1-z8?Sl zW@pl7{o#bQ)F-I2UcYf;jsIJsvj9tXm{nRzs`b6S&!UT;jC#pALT3#_#0=(9z-=+& z`GEOgXnTm}mXGXSp-ggTsfTnM3Vz!ROX%0EoO2QqfaUHUs+@p)sWN@93&udND@Q*) z`7bCg+kNyf3qew>q9hpkq?@DVWe@3~hq2ceZ6y3_$DW4uai4<$dGtPhU5}*Z5cp5{ zJSV*&U^}ELI8-}eNejr=b`As7(f|6?>KW^d+Qd=ojOTj6GTcdDvE~m+L~y>w$-& z5#I_2`?UnWat1uhG(mw(1Oa6#Iv_k@(SX17BKZtBm>6~&$uhUIKGrUG?qn@Qp z0?NR34?(YiqAFuX9jP&bs)HUElAx+!$&(ZrqzEst$f}rfQw#tHp)jR?_i!Gx_A9$|}RnBPlRlpCiyGDa!B~&b~gz9v>f%IgrRG?f7!PwXZ6u#U^hqC2oI|&BSho>+1|p*LJZ;GXkI(n21doo%W)kpj=F39#qOzdl`xxELG|lan zIrR#rCt#ZzH#>lAT{M1~@RHQ?u|k^QU>ADrtV2}@1%p>g*YEIpK)?d!SI;i$6SVS5o{XWq zvCkoU;uV&wW?n743-sq064CMv6m<;^bm9B5plH~qtv_4Gct0BE>*V+~W z9mwItU|1z-r-IiFd@nFJim<@pxxst4NQnJ}BUK9xPSkgll4glIjA=s30yodLIMR9!A)g$D3Pgt)YAgL#zg8cj|tdE{xR+V6;)Y3 z!B+>kZ;{%cYQ(U5v0RWGNe z*U11h!ss)gxM@LBSGu!VAJ`SC-$No|2c4V@N`WY)9p?D}&uUez>%&I1X62xIvvnW2 z!}3CjxkGUQ&Q~e1o7*Jrop7i9Sb&tO`r@(xp7kXbdzwHvL^CpUgxIa$h$;@DHQ`{D z4?^B>CoED~^R^EqBv+j$HFsFzR|s=wZId@`Qy zs78~x0m>&^h_A-NK;OKOa2O?mPvTvVTn>V(zY*RFaT!{@fv$alPpY}w&(bT!VDf8d zsGj{(ET1NvTMyQKJ8YAUi1-~E?Q7ln+$3xSJ_^)Qypv9Fn4;qaN3=KPtJk2$bVv2( zPyso8hqMD&clZH3EIB>g*IvKpMOw3?ETmbu|iygAPcy%m;K;0v3S#-=yl8tKx>!`KJYwB~2&{|Ch+#H3h z8Z=>5$?4lG6mdEkIpQQdGSU+}*Bbqz5nx0QB@EjwUXXSxZM~b5NIB{30Xfqok@mow zj$P=U@BD6YSu0{p(l!tEDbnT$0p;f}zNESZ=lSr)1uDUhp$H(Rs1lq$6auF{`^sn~ zR>S?}p``8?tSjEO1Dw2+O<>2HKr)IU&rsmmbkL}umeK>lJ^Fao!`F?0eTO;6Gw+R* z+-eaArwAdySL6h#s7RrJL=H5Ay0bA^*R*W}hw^~1U?o-9o7HmX(4F=>6T}ccsi>G| z@H+kaa?da44T#T!)9AyyN5Ycg;4%|<8qB^1vlExyCAh-*v3u$G^Y0!ApUuK^Q}`J= zk+!`14&AE`%M~A;+X2}V)L=165vK(`JcHWX)aN%M6ao%=m zPCeE-P52pUUGnb9{52Ec)?E!|Lpo5Z#N7L-N$190|7{Ho4QInjs9bW?0BSqr5e@LP zgtScJX<))7wK>pAjlWwdbMA}Y!i5U~Y@;GSm!f5@Em;|eBlVUX;vOF^lR@=k7 z_Jt6_nY}>`gXS3m*q|$-SqL^^d`aDEE{xLjL{hWxy)_mFk&#YhR@x2wZ z+lRS9QNo*BQ$vHWi@?xrc#ySeJ*vL=^(*86^WT3Zv(5GHZXWvYxMkR!W1!6hSs23i+CEib=!Hf;$S#DS}O zw^=vL7+~U1 z#erg0sQEN3_ts=?S3GcGx^XYr!H|&>RwK-7)Wj##s%3bgcF-`Aqg|2e4a4{>b$LUV zWE9!bOB5lr;tkP6qMD7!3g^6{{4$1N2^;i>GacRMN1nzv0F#L zW?U-?w(1+Sg-49zYe%qCP(k;AJ1H7|Bu2Iv{P;H=py`Ci)N$gEdaF z!z0VDz|OU#8=u$U8-mHgB7FMdMSxlQ#RE{^PUjQ`6Wt)>5S<$+B*$^EAvQhS%Zljb zDx8l9y&G{Jp~PUq@1stK)auD={o4NTogY3-*Z4-O10h2oj2IM^te_y(Jkv|MT_QOk zx^_gHcM=k`K=pu`hC0{WdOJF-B80!Ncz79>;< zP=AeZ0$}9;hLrqw=~b47y)0N|+NEcq$GmvWsbsRz5QX??F6^dbfE56}pm_xx?)WED z8ECj2FU-6bCL9H3Y!!RbT1x;2(JST;h}I!%f7K+W0T}&S~?HI^33iPY<9_l=@A@xy1yj!YDfqfL*!Ge z1#7XuiG*@^8<;3X&~l?mF>t4A?^qb3aWu+25C^I%Tjoebg%bd z;zwi#wOz;$+OYHPJNF-IW+F^moUzu@%Po%+a}FbeCWw@5|9*S>uRy>+XO99s6QKz7 zqaqu3?jFwINEc~?XObaH|s(u z!frNi(uV=AaR_ixxtQ)iGgvFcW1>5N7YM_j8Z)s9KuumJE?(Py3_cna(Y4@>cv!v` z_GYut-8&vTFrUg0ZPSmXgPJwb148O|XGK^X!YxZItD=z?wl|XmyuWqTnu5N8c!J46 z8{864Bv#Y_M_`oAY(oaS@NZ?b+0RMoAuthj45H1d3OOnhXx_l9sm?!CG5?lulfMG-i zF^Eq|*~OVIT>EoVKhwe!vNvoS=6tdWqP8?bn*8t0>VGC;yCW)nbS z8ktS-Es5DM{a*;@WZQX4oOUv-5)<2xQ?ZYW9{vgHT1Y7+w)OX;pM3e_`e9#2!#rUz zv8C${?=W3D>*r-wZgU?#W@BR`X?cYDQWW!_Tze@bgu7E{+9}$AOdwgAJy0F3(5}6k z-i4c;F4Bko)XHV^-~9Vyiv2R=$cTgvzZd-S!27PgmXv($UOSr@nguM4j?SXVi;l}A zna@!wsmmVRyTt!lZuyLVf2_(>mKzsryqf^H<-Y^YTh6lm1g_abQ+jALoj?r@$1RJ~ zMed1|+v)WNwo1pUxx`k<{+X308W#kMJ%uPR*(w5v5-KN8E+Eivn0sol$dMWST9i>43 zqy@Q|<>*DH%9stLSJj)-%osuh0x1PU&4_KhsX@zw(fb)a1dw$igM}w)_zEW=zDcuU zE(Q295f#tcxdoUf;EmUcV$45YvhF~_hx^5_l#eyySH+dBk;K8v4+roL46q!96XBxp~1Cvh9!i% z0I0Cy+WHRg{R#NpnwZM^^R|NP0$Ar;z5iI;_sZA-t~t642yo@IXU$lmfQxBKN!SIs zI57>rZ^i>;tw2VRF0IER3VqsqD?Qzw^dkus&GZ~EH<%0x4b48*PNfL1UfqoR8odFC z6s_yg&xurN`53v@yB!y$;};j_prDBfXnSC+-cbQB1$q-$DZaF)fXG9xUUh&7OIrr| zZK(`K3K(@Qn|J zE+BfgY+zX}F8p~PR_*EH!)CM2Tcz_g*41gXp6KYWwoGn%#`l161semX|EBP->qn(l zhV?mf=l)#7ryp=!X80`f&l)Z}pb@O5v^U!4s#=eM<<{Hk8ug!JHoTD9)ha0 zkEsCJYiusd$kvlPIsN0u-Sd0}w{OqO%FUXKFe-1@n^>pzYFo8GjWA>SGYR5q2 ztlU%(OA6qRL0dr-kr{#>wLpmnMyLVaScY)1?Ye{_N+`qt->77>$UfSgybmonmW9os zdxNY!9PMET@5jZN0KP>exPQ-{^8;oY8ia(;bx^N(K+=I3?Z#(ONOXY2|BPtNScFds z!ykA0m!sO!4j)y5R%KjL>;66loOIz?M*11(V*!-mG{3jz-O<%U-@GrWZ9_GIWJ=H! z!HYz{M+n?;f@np7@Xa`hU9}i&;Znc((OedmmITuS9O&C`jo%=>-1)H#NsF&7`?6~# zp`YVSmYiVTq^LE|_e+=kmc{ygT#oVgsvLjXGWtlrp94xv+ctL7uP&0fH#k1g=eoG$ zFE3ZD&3N`q>0$>W0<9r+^J^a>Z}weh!(zOHcoi-Ri?K+xC$-2F2YBksr5APLoe~e^oM=(fF0RYapRvXza%mCeCpmQSS zq^niPd*sikS9sgr2l*34g|i1E=uSfUgjn%894zR;P+uakSzWR9)Q@{w*rLw_h;LzW zUAZ=E(M*IOWSdoeA6AbhGUS<3&FWvDQ{sHIV4rF%U~2Qa_qcVMLg_yn+1HRqC_i4b z%q}dB@pP4@hjZSPr1wwn#AUmYMQ~|{xfPa88f)O?2I79e@&vS7uqbFcjznE*m!5Yxx z>r8?yX8>3wMtC02IyBm!wPegf#f@~Hg5?3jzO`x2>FI^2(n%IKf+*6{3Z4#jQ9}bU ztJl|eifcBafB?Y57TR)@fkef`qL4qDCCN;5?MEAp&oj}a3fLL}5l}8__!<@#h9U^- zqK#%CSQ82za0|jRcdl6@`_px7>NweF_J8N*QX9vf2nG`M3rc%AneC7k8c7iyCzt#P zig`Fb7cj$ff|`=(AEn58MX`B5_erzD_q_}cH4Yw}xx>Uni1O)G&H;^j1fbf{z_8G0 z1K!O8N@1j?E4@j_@q~mY{oi3=A2BZwMK?F?oxyi3mOz9pm{?U4CD9atMRNcIvfl)x*- zMG{ASV)tfH@n}+ftQ2HM>{Nmj0owx06DQBV18h8u8f}Dfd|3yu0_L{TW(_$iIl2Q; z#aS_Jfc{d9=d2ObR7ral9WItW=}~0|XUKZb)b@tt2s#?hkzPB_cQ|U50}tfRhwdLU zJk`7If*?In=>W^x{z2sC@E>hD`;^?q>?23;*jP`bPcXRT5;;Nw;IEVJ3y5whpONyy zGeW^q7Jb=!pDVbprZ2*brBV_T3FwN<1f|fouOKXeUm=LMWTmVwfynC4aTq8nE?mY? zrCOMfJnQ7;^3bTzpc=#dxd%hy8yX7JE$WdpcF*fLFLvP}&$NF$FG64Ybs=Ks7!sWZ*4{zVjOF?CU z@&;$W+zt8ORU41qAs~LHXEBK>SV(1MF|GXR{EjnkIya}x&VRX`WTiNZ1E+73Ky9>n zev@;C(Xn)^e6MY727;p`sLe(tAlrjR50wD#Ol0Y-~Wh|>t^DQL-tGjjJNi1(oY zjK^J6Z2-)4dfVrQ|M08hNZG(ekjGK!Wnc!-q5sx?NIU`l5Q!0V5ug|h{qU=cDQ8(0 z+7o602>tL$UEnW}mK0pv+ys%P978)Z5ZXbLa0j+Q5F`+tW%XtM$)9?R$T z{(#V=r#0_84ovYsuKd$^~gJBxlJ2oG=EXSx<<)y-F+|_Ky$V{Coxrub$(|=zNAUE;UFU-Mk5`4 zkChSWkEzAiuvii93}TMsQP|Q=nkG!^nHUWJ2j$eNAl{8&G&g1Fzul5-Oyxz z)~PODc4M<;TtNvblkm$VKcpCVs@^DpNLH z$kX=%ZPj1ajV>&q?}?0S&z2gqD;){`(3p{nOI(G5wp(bw~gH>pEllRjs#cZf-qDKOKKj z69(}C{l|23Q@+>C)G=K;=f|&GX9;;HY=7`r_Q%zAC>+$fC5JnHQl-|O#5{_yXAS_RB3U88-R$=brD_;M{=}uQxQ+SZFg!?- zC5D-$E|(szKeN@%XsLKcyDg>t+EU7FyS+5)@L2M z@JIJ_k$IN0R3HzPP_&?^SP=mEW$>x=ljVZ(Gi9VmA(;uXNc#R}x0o z6SGn2iH^*njOy`ZV;;)I)0!>NS0g_F4{Hk;`wH=A0|7xl#HW5 zREpce)~#XlU#ZrlzT@ZJ5*KRSFslENtyXZ%M@d>OOS{KQHDBP-{@`BPW&K&F_RlVE z2)NR?s&0`$e7*5i=d(J!F2N`Fzi-WFD>K`%4DyttOp>YEx?8o+Hq;c)oU?V7;L(v~ zJo#xE->!_0N3U9S?Z@tlPGQF0TYdV*eDT=jI?E`goFD7d#gV+H}n@N?+u)`C2UkFP9zYSw^%g#$QB7NgVYs)FKF%#x&@@62*Jre9_JP? z3r*o8n{r4i3>2R3^4X$h4<|^HU0{g_sV<}DD9d_Hxk@dOHfgqmA0FcpTUFwnT@_4b zmmQ4O6s06(afR`!IZ(TWZcz$sXeF~9j8YiIL z090V`zW+P+MyX}SzFI!lkJ0enXuYy#>(+%7V5&JJ!(DSQx3v%8!oKh=U%))9AKxSpRO zzT5AI|E%M1sPsPee+b}py2ue<=plcWb*W7<9x)Q9*QaF{jlUN|evQzY{v<@Ohz!^2 zWF)jK_fCuFxSGT`!oX)7U9^6Q>`dcrk_yF-PS|Os z6lI~&&ih?#vtln-IVI5Vkf?d|abLtw`+cxgT!7`EzW!VaKmp3#(ii)0|q|sxRF^;D~J$68LtCfxY2eu?j zbQlzAJLo(6$A~h}Y8NhyQRmcORiGsx`0S)w)6U&Nu`;Y@lC4C-6%MF}m7b}3;`^j{ zK4q&9N6=!cHL@F6=@u+*yr7aJdrachvt5Tb8+jKV@urP-&5`wWOE64Gn@#09880cj zq=^!xR<_e3pH`XJvBmh@mA-@ZpEuh?oruYP_EmM$*I^^?F!dDL)eh1RX;)8ik5is( z>y5l@rwRQXb|wFT^Zq%1h;_SF*5R;C)?+8#&1s;n%$0D+04@rxSb;#PZ*$SeK5J`K z=Eig_lRoo)LARlXx;pwZJE6y$)C1%ig~KR^gFrk)9466o634l*_I7+{=KeJE<$|>t z{6irJdFPtlu3mQjh)uTF)MS(Gi%8e@11OGLvxOb?K0IVK`sP4};gh*lEi8kc?-D(; zmdswnDj_u1R1}$!mFs1rJfUe)S-UNFVf`MZjV;o6>8rCoCsdbdv}B8QpX=6c?sukp z#9B%HAF$xtD8C*2Rd@6q2fXjzy7dmFlO{Bzlw3m;W3I;tPZjiK$kH;|OSVXXnTyUx z(;y@Z(qm*Ls0Z5FK*WzgIraWqrpV6dWc0yv?nVjZ)-9I#-cK%x>=$W^`g%n{hoPYK zd*rxY26xHQjjpLmS5oNP)jeBxyt$_O;(hQ`fAp=TFB^R8_`^juQ^jmto(#TEywp9% zc+K;}A4~QMe827+n?a$O$cL|7IwMkI)O&-fW^~W5=^;j`0X9ZS)yUL-s7oslF6_ zuLUaMz)2Y-=l=u!12%OC<}e)8xM1L{%s|dN1qf!_l)eJ()OCU)B9evuD?6Db*frJF zU(T63HNnVTr<2?1cR1~Z#$OdeW^O(mWr~tznjACYv-;}k1E@qzr^t%fropH+&o+B!8NI`pX@)H0!_XP;#21yB zn=U%T!+2Zn;FB)Ne)fk-71xXpo~Lgg|Ln8xtj?*K>niw7!(~4%Z0>TVlVJXjT1lzQ z{1;L?TaWWmmAWAHe+@zd5I}U-^9f<)-E^UI1m$lnnLc!Y$3dFNm+tnrqf5Z^Cr|FO z=OgX$-jvpC8f)_dDghy4&vz>VGLr*;(e43=YO=s-o9veN_BpM6NPM1$Nvwg+8Ry!d zR!pw8`WeA30REzGxj^0y2{-8<48qNJOIuJ;D@hw6Fj?E|%9cPlN%AI;t7@CXe)u}@ zTaw&_yh*W?f?j(<8AovvM}yVZe={barpa7jTYz_m(y`(yDO5Ek!KB|8v8|rz{rmUi z91zqhKo+Wa@d6ytgLyB)Iey0Hk#}(EjT?iWD-e`%etGIfiL821THz>}Kfaw;SLr`L zg~VwS()yd`6v?a5Rta4FsQQ?Zy)`^X%>tz?5SAC!+$h; zxx@zT*+0VfseAt9TF2n&7&&is{qGhxy%w+F-S|~FB5qE=)=^HO4Y$=+ zsVq>Lk#RX@L)|N5a?zt}F9gk3*n0D>nmFV2K`#FzLDoYhtw9?<<@LXQTG@X~_6MBQ zx=_el3JY~;yJh33dtpK~u;Ze(r4kN+bUHhqFZ^g9VREB7QkbcKjq}$F{BmOZZVk}y zaQvF@;j@WFHFEcbXXz#*Rc2b^!N%9Cn9g0})X{FMh>01vvDI$H&sR9bXt@8fwf~~k zA|h5+Nw5e-Z|%_%GS~Ww@GT|w0}t)PzZle6Z@oyTvUO&Qr@-;(2K6{oiFratR{zY7 zR(40${*$7zS+M^DiK2vP7^+&gWbyiE&*c(VcdT#-ZHjV;S6ZWZCtZB?tjKN_v#pdU zdWqHAttxaIl^k;0`WKW~Wb|EGPI>v^yPLYi5t;Q=b^&AmpdJVRtY_=@^?g3SW5*G4 zfK$SpsL06IT3$bEl1GpLI9i84NSN{b3Z0dsnj`f+|J@H?ky+T z!eb2k5#=B68Ajs6%r8&(R#eLCU#uDZJ-Z0-dbvs>uHnrIK0Rfo&+c(oE_cUe-CVRH zGs8<+M*2=gw{wug0qv%NiBYa5i{1=_k9Te@?_jW=_vGv1)W*&MWNOnP;q*=3e|gFh zwYXqJ?7@c4?H`p+Jw1N1ykVG|dg>V`{bfPXpV_Ko(IRz0*Gu7%Vckr7>iw=?o4aqH zRO6;Sa$`Of7uO5=Si36z2-x2utnU6GclN3C8}FZ6L;jS8!atye?=MigFlxaTSya_m z+Un|NYba-aq`Zx%jmWQ;he*jNoLlhYqPYx&y7MDmC3$ciV<}7AMH&}Z}L`xW+*I<&YUs#1CQZg};CBcy{f<3@QLt|^~J|j}_;kR!N;pKckLd%DkcHN)TzWeG&#aUFv zsNfA7E_?{8YottS-KMS+nN8Uh_;}=2gUKFAzQPIF_;t_oyJ}CJ3o?q2n0{gw=I4wc7A{3%#BKJMt;<;_4<`> zx5TfNT2q_R=~1X#TYLP4ex@{M$vT#DJ5|}m<@VL{?yJ>Kq9q7W#K@>9+rT3~U;q_X z%%A^?e{D>Y-TH7^&!M^B0%J|jPNbfpjk@9p8?cFnmw?5gH zSLc%BSXpAP7s3y3);(Iyv2s{}{f*EnlOtI%agQU{WQo)%v6M@@H|pzU?A>6<%R2Ma z0}!B?nVGNLeYS=e2o+syu19dB6BW&w(otd-8R_XY{ogld^&)J-dCRYT1{Op(HJg8t zF}jefll5>5Ovg}H?XJc_gqsC9qXp3L_+6?N*3lV#QJm_p#Y9h{lYH&Fjp7S z+A&u1D4=OtH59mANS<-(0fT!F}ewSIq(Nppts$L6gPG8k^E~hd&F|o7x zqStPVZsp_IidnDkuFtaAl{MRNdR5o0ZO`CHDBrE5L`vv+#s)hrfPs!?-$b z$Hzb)#zkeEVY_2~H@{EJ{d)-s#>wZW7Z79lqS`dD6is|oPCpQhWysw5Lc>T7_*+N9 z<_=X}WwYw59zpb!mT}Lqv;P=2fU;U~!a+2Jh$s@a z_U#)a91xI{6iMmshM`AdXbI`=5ClZJySs*NkW`Qoq*Fo=X(UBOLL}t9M)$t&-}8Q+ z=XpQxKkDA%%&awQUF$l}^Ekf8FUC_KHYHmUnnr@VMfm}6_sDzWZi{gR@tgZ+cG1Yu zRg3EQ+&nQ&9IZl{2D>znOhIVH5(Yg!&*}L(be<*F?FGpWqIWXB$d=1EcpY%%@i9(F zsn=9aNxIH+)oL6k!?^3p0;53Y|>&s2d<$foF9OW{0gLV;eZf5 zY~^HrFop*GRIPs}iGZ3W7a`W2&AvU9vXnbr}z&M5!4hwXb2=x$thsw3APhpcB=o{y>#g?ANT`-yjKcH zdA>W9t7N%@ZY!9gFf?z0xhc?Sy#kYNq?`xrv5+EBAUFbJqP(M#KMNTMxxji-bLI zd?3~TH_e3eH8TALti(Ws;^5dv_Zw&r?mFE<0f&oF{d=@f4iD+#56?@`vUw)(J=4D~ zLdl?zEI?*q1o~Sba?+P|%u}-d6cLX&+W1y8AVP8vra}lLJ!+)@9-C2?DG^cCeckiE?)!tB#d~OWy zZg!v9sz)qbY?{RrsErN|eZ9_hj3W#)9$K|E+Hd2 zY3`qZ{LOQDAppH?>Ar?+NzSz>|4*UP9HvlEIs&QmIB2qG8yy4H13N2gI|%Kpc4Wk9#9P*Sas`B>PX`B|%O39h zw7#~j4t+XU5GHqyJg&Xy+0y?W*Exr`pUjE$y&l5N8;#M}vaFkT>DOOO4)36CODKQ4 z+}U3Es%##b9Xl|5-ueo`9;i6(k|?$o&xjguA80(9yyo(V-u_=j9=fLpP+$B8qVDHN z#avSjkftKTgYrSu{I{aAZ3E>1C^relLv khlhXcz}gCIHkcNT1)T*SW8w1FGr( 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 B{_4uQy^t5 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%0Dw0>3YuV47yX& zl_pc;8hn~4k1>i*B1{l&6HIu;z*-iMJzZ+R0fS|KF+hRb!v%-(aips`MWgOd36CoI zCC8TyN0eUHWp9)AMQfRVxJ@4qL^{i%G4}qlDgDgF_sL`jx=xn8hW3_8*@WHg^mB8( zIzulStR{GiLHcT5VC(CocJ&jen(n9i&(Ehny~Bxcorxk0jyRPwn9DacJv~uM<=5yR zcCi$9WH-<_`+NYi3{H8PoO523q5 zg2_dseVEO}y;s?Mls@}{FwmNES&z(=xZ9ACHb;3%ujRq;Ij-A`#5K(F zjqXFTyr04lYO=C@`R|O$z@7uVW6j_k`n6W00R1HwMUu_lIPcICg2j_I3T6TG`GV^l>XEat3I|K(z)ecKeG<-~G^{ig8w`5z)hBm9GZC zF$L=dj(66F!+@zjT>vD@bv6^UA|fJS4N^p;MWawTJUrY^LtlRZ;GhA;cOHDY@9jBk zYE2b@&Czb9O9=F8Dk>`ShKfAkxGb*NzP>0z%cDV2kCWsq$fDYGs@E_5=9o765Rb?* zGOA9KM6<5|4!-o?u3Utbe1X#B>TrI8dz;EE(hH59z*-nYTVH)r!44@A?9)HL)ce1Gx$un_0l(ta@j?5FD_;O2Z`NEmecxVQq&1v%Mfl@}|2_{YktaWi_2 zLyy~^hoM(AN)^%GCyfiZk_5uS%vq)2SCZh&Z8z_a0jJ7zw~x|$Zp$xuPj=RUjtodi zy8<8dfBNL<=^ptB80~~?#%Th(gmAd*$nQ4Z0ym233J9AJVeLMb9$-$EDsXyv(D6;c ztoPD=x1mzi=K48zv|w}P&uOsEyXk}P`^5N<_=snRxWT#2$9GD2rfReF$|XDcenMW$ zFAKTn_aE$^B|9!i%Qi_UYGf9#MaFYTT-W$qo-IpssuD#xg^o+1bJGMrLqmvZPrS}H z#Ek*q|G{{A``HS||BJjgkH>Od--n+D5{Zh0ObsL%8W5Q!O+==WA%!F%^Q=TlN`q2n zDny2o%qc3BgpiP_GGxv?dyh+N?Ol6W>$`vN@B7F5`Mf@RuScHee(vkOhI2U1<2=v$ zoXo5>{QPe$#LzWxtK-s^=H~kaSD~9xg!GNGzWspuvFja&?>aj>pE`BQ5@O-lMH_4V zBi37!WyYu{ykRHFcZ;(}4enCM(Lu*QkNNU*%Q;`+x_kLnD-NbsyggU|C*tQ<8 zQuFj}Q=+#|F7FAMGKhN1%hj!F@~F0`)8YD&5B%K><;LQyDz8#f`dS-vy0>^!Rn_un zUiDhEQ+|s3y?7*!0kaaTtj7dGo!AMLs2bne$0_ZyV$nHts)X>^PxAvUFHke}ZcGd< z4`{}Q$P@zJgM*r|&FJfwFOm+Oabkk{SryK!!S!v|f?H!T-4N@OJyve~X#MU}XNteA zOMidyhux@_-@ZeF?M!D3V8b0!(onBVlS-|<(V|$O;tW8MLFR{H1oK8>5^8-JpX`zfXkOJ2Ly1TsVM6Bw^t=|v9O4HOpKt7 zOJE=q&x^+AXVHw1^r0iY`3=OBl&iP% zVfZ;;zw1ioKHc!}-O83J5g*3E_K&vG&72g*c!gB%P|*`N8IORz{eCTSdvj5G)`t-z zF6|gxt$caQ?Y+m3A4hika}yXVzqj*#GB-B{Hygf*oR-89$09?rvMXdcjZ zNxa^yK4)|Rm)o<@WfblZ$SBkczK1?Am3j9e4@-gs1=g*LdptPu<16C8GM_t9L6#4V z(#>D_L$te8-(B|>p30VrdrD9|lX+ zbmmbnQu7s{P+s%%^2Pvqn9539@o$bijH5ETS2dRsIre@$ z)QLh-I}t2y_4L%&9eJIj^C@xyGk)r&ullQ3ugZril2loe^Xw5SmMA2V~t@fZueuFU!4?on*>&%PxeKfU9j?>`_9e}_o?7k^(bRmwr5 z;*dRwR3;cT$Z{%mCs;=$vtKmI4Tztt(M%pTZ{?ygy0q10zzk(-BVEb+au>0sD{`D| ztv=r6ey{|WnlFNAG%$F1-o~{GZX$uH^AwvSIUk!WxrPv zPR>~2rOTErV__+D-EjJkCA~6Vp6CjwGj5+o+Whg&RVy^9$&}2F!Tc}$oy-UYuF~;x z?;U2XSLad`mXh;;N4`Tg{r?|d^XJu(2dC^05mRX!jNZd?^(s%N!;<(Im1S%%IRCYw z$wz+O;Q#z@6&7#d+<|MVu_0SeMUTannL*@Rl}5^=5sLEVmA8X}TJ<*b@g4h=Vg%df z61#Y~l=GuXb9%jGGL&bskGE}{gq=ci@6ZurTaXm&T=I`-rHfy_enlAv*b(PR(i)9X zYBf4L-wX_Vj3((YRqE`k^r_D_y<{<5WHvm9B6q&@wcaN-=UZ~6Wo?}KNbiLHoJ96# zvQBb%*4>m8M0RA|y3(p(*1mlqRFodlepMeQvppP~Q%P+p%WZft?Sn}Ukui{m;TO{IwF8cX-GcI2s zoPGD-CM(S)rh(wm+=n|1<8wHS)#&)mzD@2Ai@h?e@a+4bLb9;uRHdiljkPN{KT9+$ zZXH)GJ0d@VQWleaMZzKCRu1~NLPFS=ECJ5ZsCNy%Mo374m_&lSeP&i^mnkY@ggdve zR;?A#esKQ61&QRRCZ?w0t#{5$lQYfpNu%w9lG%$7_e4Ed$i45(+b5PeaJ|buTdF3w3}~B>iy^sRRw5 ze*VSig9ovY2U`FZ@wXf*n0;w)wCX3Nt(B)1 z4ffhmFI?$4<+ewD+u7=hw$=7ecXv4`(y(}+Yjif|tjDyAmA#Vh5K78wk0;s4lZVhI z0DH_~(Chi(1DQ7WvTE?Jo7b0V zio1CHFI~z-zI>?XM>P3CzxMWPsOY~pc*}ikZ_FJsKlgziwrkfCg+-iF8QAb75q02u zxvi}&nySAU7_dtZJ43#W(QbuR@WGoPhI zs?WUrzxdj8rkjk$OH2D^`U%yLmhs$w3A3U8?pJ5#X^Am2In|!=o^Mq(-)k{3XXGyR zt1Wgm)Y$bp@w0j5`oq$58rc`KQjxE@bc6vPpm;sYvd^~|YCRRT<4(F`*W~ki9?zG= z$EgrppM2`iDfsjC%Ss|IME&Iq&M#Mbm;Cn06d( z7SK%7qcKX;uKqS@Wx#3qqClUHhdc@$w;EBLa+i7>7E8X*{k&vJ^R{Ed zWtCI=Ix{7|s1D39<4V-K-Yk6ln-PYzE9Jknen`ZHvIg~fQqw&fPe-`6xty&RU%N&# zot@(L>c7=g#mwFSO4fmTvr0LG9f=NuF^s?hiibKRb(RCD5lRj`!4N+u-bPj^H@?m6<9w<$3@W?hR zBW=4^O1s#-IKQNQOf2Li^qpy{GZYM$`#@QabALD}uyV39CT#D#;$lT7Xd+4Byxx2| zjIjpAi(r2ORw1P9%@dcEC-$|^J8L2Eq(CHiXu>56=*J=4VqN18t`zhm=8oni@z=Hl$>HD zdiU&0Hn2K1)xmz;b4&j?-TfV_>Dn3Y9ri4dG%TP#`*PIEp7Xx1xRSB)4Hb3u=pC8$ z_C`^{>5=7OgRx}?>SERh%1%p$z3lQ+rB=LAwTLcZlW_KA=H!w`NzC^82mYVhUOV+LG$^i_e8YYQWksRQC)E29Th;`jQ7Jf?q(c$M_ z(3!f@ z#{1#9{e|aEIb$saT8)l(xsTD-TRk}&93-53ynMnf@8H2>ldMa4B<+`;sA79(%GE%( zVDU(lPNMF@JhD}m%LsZ6DDr=5NHy(0=&8Fw>nTT$+g(fXwzr9rk|js^6J8Ep(QN20 z>e5Y84j=va?Z?waCMNRQjAIV#!hIEeq;sxFNrkq1dT+J*Y$@(-EpJ8>uH0f&Zv8aG zpIi1>UQMS%_8a5&vOB(i=;L0TO|-M$rJ};D035}#;io-;`1lCZh^#u!`96|hOg;NR)%fwSZbbEKCo7{*{ zDZRI6v^s@z@u5VM87<5s57Wq(%j3ZJzJG%WHs4{@HHeaH^)s(ocr{(&rEdvY; zJzlBq*rBG{)HqZmE&FEP=}@l>ZqmM&SnWXRNUKjk*rcGHE)dJA9*xBWZ;s0EKNY35 zk1M&@ZpXH0_vL-fHW=;f*P66S*BQ-=4js(%1;3E?#iZM3W(VDeJM&{|W^sr*`PUNoVx{SPQ z*LKxqSJ}S-hA))S==E%HMrM2MO7e?KZtVkbPxbiUbDe{xQ~@g``o3Hg=H=zx6t{@n+boV7 z)m7Xb92|m#^yk(sA%COM#-ll)%_NeROLNIzrV345I&HL1+&IB@i5PX7nZYNnhs;|L zuUD*iJxKqN?zGE>cAwtEi9Bi-4%7D|B;x`NNsv+q`pj^}6)Y?)r5;V6;oyGw(4iD0 zv}$$1WVzG}PJnL|#?MquS9lb?8FlpSZ`fXlUMCs$-Zb^sk?WzWWn?x!ILS)c#)^s1etWn(Yh7j^r3=@ZE zmey-OrVzNE^<=pOGfyilv(s{?wh2|-Xi#<^pkugm&}GH?>q~ggs4ab9)rMAD+k_8o zxCt}Ep0pOt=~a;1Mn$1lZ6*dgt9k}sP@ zx=_MP!nS4pV-4~i<6i8m&v~AC{f`Witt#TwnPOjH8#%2^d@=rfkCeavmn>5i@k}Aj zz|?aVqptqWl;90C7z``s@AOCCvf*b1B4eWNRWhh9kr7Ox(9=HhvPQ|Ca2==K=L=3G z;G~h&^LoG?3K{CF9i~c{2KWJLofR&LU*{GT@MKsjPq-W?FG!pF+WFJwqf8Ws{sxNKhgb=03i7fmm?VX%ERD-h*kixOrBxoTI!d=79<}r{CwNbvDw02dD zFS2*9TD3h$=t!NUk(kbKQmjfsx8Q4MayV$#Vz-kc3;PdUq_Qhyle4?CkSFJaSQ?Wz z&27aIuO#lkyX@q%lZrb6IJSL^-N#k67JXPG96Ap)y3CwbdENuVjDVUQ0I2Vi`r&Q+ zhNRv&bk$Ii#rU3aY42Af#yt(^oSq>lgtV@hDw+)q$ww9pL$tCF$L+_ydh-K zauxAJ{cLS%-(J*B)XlVM1`Bvz-M0CccITaOp04W%)yrG`abR6L=hJ}2E7VdQp*rWj zG*7f~I+nL36OoT;M}yv!7%M4%mEsCvQNfYLtX;6ZQ9=Rrw;q~T#sj?(axnXp(iEc- zVwur&PHuR{8TQ)I3!@LSfDdyye_Mhen$5S@XyrKo5m_2GmvO(j%gV_1fa0%{7LAAxmE#=L6+Mx;5k1m*#$p+S7h!zmJcnw4b+kdp*l(N}n3Ft6^M~ z>2(36(S+%CDuxs7XL~5y6X~9Msc9inP_~%R0bwx%VUorHeC(7SD))ux;#kWU?(_w*5dZ*_NXeL62b}Vc1E-dT zmBUGLLo-L0+$pr?WZP`IH`3Kxt+DCY;U4GFvkwhN#QbIEUBQ9kUPqUIM>*iVElTED zMaa0Dg0YP?th}$mS2{`L_UXe*-Kd&MqZBedqd8`exwouXM66xWD!paPm$wvD0!BhEND(sJwksTaY_CL2kwes66a9gmoO-40OSh)4 z-ZLqa>J`+#HuSoIaF*Q?R@QFAvpGE?$^{Bv<7IpA5BF?k7;dh$eo)VKwB%L-C9+K3 zgd7!E2KDLYYGJQLq@~>v_D0|f-VGEI$m;4Lh}T3BIHoLG>BPqeXm;9me#z>J=GmPw z{%L9MnQ32C+|{CsuF?H{@Y2}CEptqYZUTW}UcQ`oTg1EQdn@3>NMcEdXd|M2<=VAJ zM_&5rXFE&+QbdRvzqundk<+#FA$mG1ZQnkBAc{hB>S?h|&*b9e42oQts-CU2EB0_M zK4ZJO^~Z9L+n-AJaE2QVa?7q$t=PU4Rhu7%C2!Z(Uzy@?S z*9?&a)&@MZv$GR&7XO8ElVIRd*|Ucoav6Rof;%lPCwLbO+Mp>jWB!*$lVcU4xrVY% zl`VGnIL(J%zuwJqQ+8Ti-DBtT!J*2YkD{?33itnDwLVnbBWpGya4@(2%S2WBVx2s` zITLAxY5lF^b7dN;LVR`Zj|r(w4|cs+lgH%E$r&@;vnhSbHA5w@Au>oxsvt>zKEg>$T;F$}=m-p_34x65iG$-SC9!srz~7wy3o$o?eJZ zHQ(Ccr4T#6m!3%taSn(~MBWe+4`V#?+=~k5z(Lzi;XE2q>z{hbjNX!cfPOu(HPD_f zp=i&ZJslPIQ&CwHv7xN`M!3yCAyKR^Akq7Y3y3h4>-bOKubVS}U|;~-IIc3%aPMED z;;yV`b>ANQiElPGRlU4&<*K^ta5GQ+*#!azSFj#;?#_I-a2Yl0C2A{=h@oeLd;&em z&Fl=a0WS-udmbGPaB5bu)O|8=kKKKoHm|fpFig_KvO(sxrK|u|Ps4-Co(t15E8d5k zXe}A0(mP(t>Ez_RUFl%G)7Ru-FDv0j-A{^bQPWAE$9ihVU#7DUT=PA)b^Y5-t`05p z7$ydzG$-G?X56%jm{*_2B>g$a_k`B;?cs^JL#9q8ZDvKjT&DGo4UvyF6-XEs)CaJ% z2T6+s*C=Ak--d|LrtRc;Fe&YA+cI%OVbD+$iyTz!Z53hV?mkAl(ZnxKrS$<@#Zl(m z*fKBc&l#uo0AjTPr`r>f!QX*z)1_B`N15U5^AuE>M*T@z9u(_N z4-E}PH+7!v0Gxmtpfzs;(o1-@qlu56o*tC#JOb4`e=+|3`+Bj1iJtns)~gLveOjAz zE!{%ada0XJxZBKjudq_w~$ET>3TpS!6TwJoI?{1+1du6hrtdNl9 z#K;c-A;|euI1iGBW9O$IfPF({++8d!yRYw)xg8$f{bV!a>AV*4i|5xx_*&OV4s-S9 zMCc}tX>1rXVN2IeoUmSvoiDl@-Xl!@mHpb&R$tnIJ&~e`3g@AP+Xlz*aFTp6Iyy9T zbcf(Bz#q}j(7<`xY+ey}EW%yPI)F%0%7h~3$X8tp0fBmlxK9-bkKEf6^wGMCLP>jD z;O|w>)%3mj$L;zEUG0Z&ET=oXeA!QRovSssc|Slyxw2hQbs@nwDOVQCvaj0ev{m3; z!FL1BS9{_Hl)-82^DGHnVq#Ls;re!vWh|KU2(eOo=^HlAp~&=giR|pLdeL8Yt5P<< ze4N+g>Kuyq`akjAFXH>mx---mwymx3dH;ibeV<4Dp{hf@9;=~9z(Jv>B;YZI1^JbXVQ3hYUnmQBDv3) zsd!GaHPx!>7tR-Ho?gB@Yr3@>Z>L|0(Q3# zDR5kyALnipCT2K~muv+2K0Cz;Nqs)=Yx7cA>9W;eK=?d)JZ$Ai40&h@ zo6=8%p6w-xAVN?;;xFw@F8ph- zAykn@Zq<%ErQhEQ-`d+9yL42nOz&mwa1*t3uZ@eOc$3=zEG3EFL_B+=l+(yyVL{2R zrQiV*>LjxP^3F5>*PGnsfupy7W;cb1|~AF_1y?J*FOH9 z)}Z;FHnf*vgv!@{#s>U@a&YCmX7;hkPxB@IM+O2m-ZRIiVOl+siZQk3qBY-M746yv z+@A)iGHVi-Nx3;X9^Il{t*NHgY;GWyxocE>X7tt&ST^<$qF|e?U9$!Wd@*RYE$2QX7Cb-b z$veRd6w=SiL1fml2n9|-jC@y}dd%u`#zR~QX3wjB^5x}4tIXz`b=i){2eyDZgSE?~ zkOR{bJgq^2+1{9!0@EaQ5!X3 z7G~y!JR24p49V-4j}Mjv)mPQXuF4NOp|nH0nu%G<&Eoh^f497FJC8@+1WjAo*drXlU*Y16FgOyE9QAE$dkb+Omce98ENk` zb&6Y$y`Po|gk9E5?=r&J@8+o0MZPYT{O!Q_=XyGtTqbi{hNxQcrJAb+Xbo^u8D#=R0AVpvFLS@(Tu=qXP&)$dKCvjwQ5ppiS~xa5-UrgmZ`4`# zV5h!hzhL*1!x%nd%`EKvX}hzj*tm@#1AAkhvXyjRObtJcmWj!^EBrM2Trse+CwWU2 zcxi8L^W#@z{Aem4Cw3pdP)}?%ZmpG%4^p-dmg+5{zj?!Xux4v=w(X=^H20!Fie;pF zIe$f)4tLK!{f#=4xm5+(*``l(#tlS6twf_Ty;APpHHNF--aI)zY*m+)1{X?D_wg-2 zA&8kZ;QZsU_Jv8N!9zk;9gBhLWY$3+AZWyH6IHh<1M>UB4|6h3~pE0NT+h&Rle0>jz-o+BtiGCctacKYRt*V(HI zwo6BBY$~q1&(b+Go#xW8tK?|t+|!G0{SR@=-L?SAql!Qs{aHZg;H-6 zLWJzUHRHcDq=dIz?~kdy@oXn;zKZ>bY<)wW5WUVb%p%6%@FVEd(=)pCijVIc3%3cSpLg);8c*?Zxg<( zxqs!Cq><;Gl?_yDYU?!-Hb=PWr_?7Om9xHLT*8;Ve-3xx--dc^Y35wmX(O|5kZb;ISVz;8 zP0@De)I8R^x2K1S!Y$Y!HorCJh*n~nMEGXP2*;lq@z1#U|JJL|f~NYEu1+mHDN2a=DJg0+ zr`jv{FTVWJoO@uy%?}?wpxzPNB5L({?^@P}3~+ibr%4_YUAm-c&%OsA*N4C`3}I5L z@QRD;V~UPeUBCO%U5eEVM|0_X9&q^Q@O!(_N`?tHXu6LFw>Rm!+Ya_o^V5_Fu38nX9Kb1{leALCEkm~xGTa8vv1NjiCT{}}sXidc?1I)%i02SH1u7Rq0621iKYl+p{B3bDq75BzxAY2ck>x&pc)NUC;;F@=j^iMu?vtH-+#w$u=RT7f zF^7Mr7xxSg6A1tcanw=U0_N-@7g2b;FMR)bl>eR|d7`pJb{aTYi`=k6$J@7WLxWf~ z`PGn~5EKz1?443=ai;sCLvu^Zau$}_E(ad(G2yxS=4sSfbd01sNOx8TJZD6EQjRZ9 z0e%YTN*slBN;%51HU;%0h+gtaxrzC1aHu_*>oSNnjF?-;(uFcSsQcw=3A+qQFA4H( zc3E>HxV;?Dh*2knOS?`D z=S|<^UK9y91H&Nka;yj;%Zr7icq=OTZ34J)O0cK#hg-~u-(97FmNBN3=un- z1z`coSy=FtUNrZEQ`3_@o-mVtK!&(h#%qB@F@iC{?tVE(A&J@4 z8^DgoZI`(Ybs81!Jh@-?J&u&iaJM^@;kg;NYOv5*a!+b~u1&Vxoii;mg3a*e-9&cJ)AIE_XZJ)(~Jhg6go>t8sz>Ha{%L zxk=#L(dMAlJN%unkJ7CgrV!e)nNXEOI?DrtT(Y;&x5n1NVTc$RuEUlWUn(3tP=xKd zYV~RsAw7}~V_F;x$_R$l`t2J~kYGBmfSlm{YHEkKu=y~802s05_j0@wfWG3L4176Jj+qfO%%6B|Mbn99C= z5t8=ic$?%nfFBb!`8dsLdTJ6Q+ly*+UoUU7M5YF2#RDW>aHT3*(_m>m8&zsUz#GOl z_^(U~TP!{Sg3kpgj$(LnmmE%el}1tG+}Dd!n{=7 zM4Xo)*n**aBB*e+Qo_a<1TFD8I}J<`7(FPW1GHFYgYM(=4a(+Vk_@z|^K8d#AlShs zYJRtSO$nmu)fULyU2G?w_UO3Ui5|2P85B+a$O)9b=>2=7#I$r+owQ^_3IVReF1%mW z(SrfVPEXjPpjc;YVwy?;xCWJL5q<@o*`qDW7X*UqV3#=k_=4?Xi+{n>yd#sGrgD}s znk3M5R5^xA-UqE$VZeae9sw2j5%w7H#q%kHP<`g($-h1KK!2 z3;{<331*?4r(!uC010}NV2!#Aw$rZ=IXv3e+}?)_8tDA^pq{+xsn@SxgCGF^Bf*M( zqzapJ+0vzB&;)?|z$YrXy;)hE=}uV&?0v+u9$PhdAVteB8rb9*ARLsISZwDh`uMn- zVXs(-%A_qSMdCyu1KwIL`+lNI0Sx?}C;1>I9C~c_5C@TBuXZuy988n@R`XkVNf#eP zM)ZLG_n-6%uHOPOw~l%s1h2k*r55ISCK6hV44yb-TF>cva88U~tZ+GY2tCA>6Z%~y zYA0mXAaN5^oGoC-26rr^iju|eJ7dc+b;|7#JMNTK+o77&wQEbO_NC*Dt3ss9NzzfQmO+AoA%D_Y?$OJarA^T#;#azG!XS%K8Hs0PV3?>WSmIAx@ z`kTjyg&wlZG$B+$K5&G`$$^9aLXI-Pa|{yHq_1$9Dk4FZ?rPI>>=> z`^KT-V9B&h(6}J#M3OXHmz#m;1IY)P$ce~pNr@_FZSROckpU~YRcvbC1i3i3tejEj zRCx;6uW7s7SuE@;G(f`;g)( z5vD5c+-Kan+!_0<{qUYM-5F2B=+i&j6v5b>D&Hq75p?(7J#6lz7RiEcr)jm}yA14N z8)Rf;1O>a$bOo?^1Ux}V0T8m+c%Q#`F+n5ta{ty&s8HCc*oR`J91QY^sA5U$kaV?f zCVeyplZcizP}!*OwOZO`;1&pXh)uf`i&oL_Jh5sp*uOuTbJKiTmPB{~)3gi>M8eDv{1Ve?c|iG@ z3z>v{IJo+?WqL?)3yyBcUf#is2SoQhLT)EGN%QJXC0ejmNF48S$PRuD&%kzQex`?~ry7t{Rw>vA54tj}9doZOMi1suds`t0i73%kkL9gM zSaInU$|6@BjxbO9SP?@qM)~;CL0JXt#)14d#C!>-2UeG)&N=}Bu;Mbip41YBj2Ib2 z#TI5JCK#Z?dKqey();TwIXO9}5S*6u^q0l?z}_P|4%8(mR_d%Gp4XXoc1@Q3fUa*Z zj}5SGr~rI7f$*%Pjt6K)h(y0BllM6G@IYt~vf&sxINU*yr~?ky&i4TU;&QAzHrE(f zS>(hZStu+|Bl@N|J%a05h%qC2S41R`^riKsla-}0MzDn6Gem%rN$k1~!|5+(KBq0% zLW^{g4H9h$D`Z~P!Qzu_WTY~q1c4}xe2$bnR9k@OIw~8gI$F!#yx>uz!zqMJpb~;=|oHU_Vq2*CMO}0%>S)aD37bA-N%m8Uhu_ zMU&o=X&X-4YY`EifGzZ3N3}HW8OTF|XWRd;}&6iZLEUY@f_N zSiH~d50-~eE2(>oedinOAZmMhqQ6AWQL0UAgGf&GmN@D~D|*4a>#IvYw?EFjyiqrL zZ-k6~Y`MN;oxPh%d>PYvOE!eA5|a?BA48t_CDzR?$X!QaOHXb|&N2C03H4hBy6X<< zpTu{!U+E-TTgB=QKaIP(u5SC2Z-}Wn8oYn|)~4?JK*aP!EPDJwf2%V!lMfD6ACoYu z6Q075qN7(;m25pmi>Wt9f*$hYG+Ir01q2dsLHh-BP@|FT9J+RYIe*-qP6t<{kwH1J z2pe>|DEU3B*(L8D&cG?vHu2Pcq_+tfCHCA42D`2V1+he4Mp>AWkaNre+FO;&@uNL;4eT zjsnfu=OQS%2|==B-i$~1x?Q7ZP3sPIxnaqnJ#TlbjBI3Mo#nk{i$yW`v1%+&j7 z#-(!bDUvk}=dwJugaO=iO!YMUo%U_*up>`?xO<^?%*en1uu94W zx0dKk>pihJXklT2TCn#D&bPLe)ZVo;&swz3;^Qkc-gN(~5A=6^<{9isMcO}BYmIzppi#NnxTskQ9HI7rwU&1baT_@4 z>apd6FfqaIfGMHlX^6TQFnn|1!Bkcv8Ejs~kJ7!*2fwvo|HqXp!Ff0d<7#@OP}VZ* zdkiencw#3bJ>#*hEUVyzXjh}VB^M9*d^_p233~| z5fk!V#M%e<7}<_}u#dU=+%6f%E%Y1EFw-Ix{o3MBy9ES z1pW+FTVJ_*DX@2+*-PEk(P8p z2^;U#DJOVH;SVD`1V91%1noq$PP}>Tnhjit)|Qs|#Ji2cGYHar`JEwNw%KmqUN5mf z)T#FYxhwYd&ii{;6U=UBKGS-6k+*T#=g*(Vu_QG|FxRQo78hBBK}^;ONYqj`w&9rD zf!RO+?qOgrD+k&E3Lo74ao86wPD(3qBuKI&bujTULOT`su>95MWnb&F2@F}<&I&UkbrrdQApM9QBf z!Asb6^Rr^3{7L@wwUqg`jKMO-73OI!X1E#|u+YP;KxzS_Jm~IC(@k{AeF`T9&ddm$ zW?(G>@y~1a$xH9pGpU0_Qu_Xv3Bfa2*$cgB+UW-f8IXk~9ikYdsr~PT4diDs@~@?w zvtwkdQ*^?9Ak)8L1A5vx=X)=N|38q@M~rDK3{HKG#S^0B5tK>$RIb)yOG_Xn*j5G? zrRh!ne4^9zkAEijUpUG}qj1rc2EKeY;(wZ&6-b~Vh4QgDhDf38FVxp*=Z{*(r;6&X zlZCQV8?BLD+dAi@c3I!u!(t)3o(umm_A7JP&3@+eFRf-I*fa(DJ zwAJTkOTM&zd2lU4tpq#@Q*|t$7vIVUM$;_G?AM$Qu*;i0SY2Q185#&UDC@mXy>@u1e6@ zxsVj`=*jqc8BQGd)O(Ywvb#RP@jG;B$5%kq^C~78<;hMWyOu^_rVau*PtlqQ^4?DJ zTVWx>{?7w+`2N(hL6=FKh1-A-VD#8SO1JAl_=0K)Kkl||_s-bHt-U&yf5m&f)|i@Y zJ%2@z2KNM&e+c1kIHTqem+cE9+szuGpix^PLiB{TrDal9ADp}JhzP^)>zXWgea)E# z0ly|l1I>^qZ>jv;FDa4?x6B?8tL#}>0v!a8#5ZG?}EOztg_ zlk_UHJ*;0Ehc^mn2=nu^0{8)>Yyek`PAKEqk%y?W0;~@%Gckq`Q$hL`kjQxW6OpcL zZ)dg`Vi5l>T0pfc&}=i!TJNo`^B!)C3j%x)y^i#4#+e=hAuOH_X?Ce;s1+mkH)Ek$ zWjDmw^6i@&6d`QGlYnwj^(gG@-1~eks5A;27ln$JFX#2n=zqVBG%SX34wvkKUS=Pb zdZFF0;`~`=YoS-~_Jz7I&aCb12Ef#{1r!7c2=KH_Liui;B_PTVvKS{Iz}9^D=OnuV zG9P9e@>X_6W^=8Y?NJ%MkI5fo3_Jd zvF3~Oc#(WS*A4WapykY&%AP3IU0{l6I>k^l;Uw8!+M|zGNY-J6OYy+)Bp33a zVTxxVhvT~l**uuLaB)&=yATCAl|&Fw6bJj%HFSDNvSPO5%6-25%Geck2ttT!SW*N! zSD*!SP34-(zgG$VfT;BkAa!ZazSg<~^4)GgrCs6c;;YqY4f@KuuB$4th9P?4%?p8h|qe{0Iq|OfsM&<Q+IRT9sgoa8!jP_TlPkBv3WMdrd}R1vHZxf`tZ%N`q;wtn4&Nfe<-Nmd}63o#=HXXh5?z zNUslIs%Ef|vkup+i$wF>%lc=Cstsr#i4y_%v+MZS1@~2_XcByGRB=+ueX#B=;2m&T zBb-}q*L=SfGyCvrblCeD!7OT@p3Iwe1O}FPFtsHqyL${c$N0c^n0Dciuek=EWlAje zJ@s`GXN^H?gK%;jv^E-9GW!V6*PtAo@g{wnH*0Z(FZ%mGuC_q1wyCKJaFhS#%MQHl zj}adLUiulK#4yt+K81*frSsDr-)l~qQSj=rtS;S$DrYg?I(#vguu%L znL1;_trnOzZGjHR99)oZcgpX^cn^jEihAlz|umj8O zAYIpwlbsE~4*oZ+=dZ&;$7eq|SG=d`@}amLP@Bsy8h#y4h`4!$892-cn%l=@gUy3r zLsxz7A$_!GnMAMvzAJ(m9zFi1vl(pM=NVUO?obcJNhT4Kwo-W-BaszCncuF#Mwfxm zg%#?+IRZQL1EdaApAqVHU~?kEDI_SE2nrAti(X^ld$Z-UF3}Y~F4}x-6;!RduROLx zSsBg5!Dyi6d7z!Z_yy9(3IZL0$KjraDG==r64% zHr-$3+_m`k-7nYfxoOw^c@&3}=%8i$q@v!lNubBf`SUdPR>_hlz99m_zQruXsDOH~ z@H8S%VX9TwZ!jQ6t#o1?W}Ow9+oJ~hLJ*fe$gad z7qNnDgv*$f9_l8xkKr3pF(76}ixR8{`l+i*IZAz2^|s2GE*}#9-rc)yaQWYF^gOqS z)dnhQo!=3$5LrNSq@uJ3D3K)n3Rd$(jqMdLrhnP(|DNs9(X9+kSOk=ZV_3wx=|v`@ zOEIud+7Cuy0F!xBgUR?8g6TgHgAbAQeER$_@T4(3&wbnrMS2E#Ab#j5-k8RvBd>mIyPmk#S@&&*ROZlB#O>H zmGkKoi2g@1K#@qOA7J4$qL2LpG6jbD`7@RC^rMnzTFD_cW}c^>`@X@ zg3kv%1gXs-W^pSbYeDj?(u~GgYkJEIgzY-)vVe4=QePcctY|*V?4t`@aKoAKas64B zF*7#@EM=CNsT=v1&Aha4-%rMNY1=w5wh60?R1U|_zo^`Q64w5kSGkiJfOhN`Q=jDl ztODtSSk}YZuJB}05Cpuvy=&T6Q{-$3O(kwEY(AtzeuCnC3X?z}DdPy7R9M27P-Mz3 zk3y*-H(&hgM8TMEyh*z6^=e|GBFPz;ZYt<3lPMrS`=gTl>1QNW4C013PB*Or z2FGr1J_ZQC9}o>H9#-OIy*F}uOCXmxSy&w3H6i`tOJ$j9`s--iji;+)WPY7R|O=+LEi~62Lf{;YMVrdP;>tRkXwMMv`cuyciymW zomvQLypaTUn5_gK*#jCfp?4t7{^4>iS_-$FH({+&%z{YbvntIG*t*8X#sJx3Vd0vm z!6yNpdh6DT^g-YxmZ{Y>=~g{@M>gFCMM|xMV*$mRhLpgYYl`Uv>>`7(Km3o)SP9@B zQDA=}y3W4Y)W6yy3DPJq(A&r7Wc8!98#cVlOo7dnR(}c=yCS*gQ@BOo3Zy}tAX;k% z91^)*l{$u%9YrNwh8fmTwqcNk2*XXJB1R?_A_$WJ@F;^C%7^h-drEmwD08fLZI{>d zAq$|3@xj?YDR#)fpdO&~rcIlYGFyU?S9=0yclpI;@KOk_?Fs$|WWu)O4?xO6=t0R% zhwmT2X^X))2=0V%$so)ilr!x@7zv1WCzcUXc<$J1WbgQq@-%U4G1wDGqXtq2`S%E_ z3(M_+*fP8;{VY3Y_%;Uc%8C92k%g6&^?d?@1+8ZmaAqJdOiVfVF}s=ix;>C?KrcpM zM8j$tf#yKedr7G;GQN-aZ=#(!Mlb&-k|bG;|C73H|L;D}STis^XN-5h2sN8@0=eNX zCDrXo3WvQU%0iV_kw4(aX^HgY!mKrtEAsoR}CmbKG*jk=>t{ zP$)YU)E#+7cz)i5GRL)Z=-0b2(JrN>Q?uMFY+`-f*2>s~`7yJ#taseT!Zm+fpdfHs z<<|>XXqjmjlM9a8pR~6yvODfz!W?+DC~xDy{#sH}fc)6*`%3xs8dh2sTE^`*Mvlf- zj+VmKCN@V+EbW-hX>Z96Q@%3(^POx=jE^6+J8osU*UHwG+0Xik6yrC&bV86OKhxIB zcmH}Pc3M{2rE34WM*iqgdmE#p&df_41} z=K7Z_W?7!j6-5eq9HYDc@shtT&&I|={oj`7m%IFBc{sPdlC5rf(fHe>{c^!<%aiXpmb0p-Y!l6Oo#(%uzKbMDF;q(GUx8IiM zm%IFBdCb?o$?J65aR0YS`{jb!mZ#P|JWu$5=8@l)=a*|{U!MNB4RVU&w2uFLr{9;S zZ&$L^Myre2zb(%%clx{KNx%9^p*V?l&2P)Yyr%Hy@+_TYdDMpZ<;5gBAN@Ahzg#iP z^6+)NQkZ%qQTdOT{O9sS%Gc;$4*zX=e!0tEmS<_moM#TxFHZk9X}?@B+wx3p{+g%V z?y&l|<@x2B*_Ve1H_IKL7XR~|eqWw>b5o==zee}`wmiSw>F<`O*6Edk+4CcIzb#K_ zs5slq=~*_*^6XgYCSN`(lK9(P|8m7F%hP7@TH)Bv(GUN4$$u^nx5A#=HIlzA&o6iR z%kqp+&3`7Wk)!t8r2TTiY|FEFtT69jzC*}w%k#@Mf4@A*)F(&(`A)wt&ln|1Domnc z#c#{=%bosic|P2Dr6Bm&_fhrSIWsydjUjttVP3V~&*foS|JG+d?JN9$`5!9SaFd9z zm6^p+2g9RgMmBb<;(g}RL{c-REL<^fRk+Xm3u>y$^t5cmB%^(3Y?2Z-{=QU6IJiq)jm(|=RbHVL`k3X zpKln@E<@w+nUA&K`~Sk9IV=%$UQ~dP!NxIKR7PJs;1whb_m_~6ijpKNzzNJ3S@eSI zoDpbvR~;Ho9(qrwKx1!+KI7hM!=$M0M2mPH>sISXZW`1#%J?1=LJDV;GHWO4y%Bjw zs?ns-g9K&`n|p!hO4PCt_V{se-M+_Q0)cJ{dTUMB5U@`qSK7d_>KfODKQKsIQJOHc zT%>>d`Zeh!Au}~{)J%s^&{@xo0@0AA#3dxS;y%c37y!)~w9-)fj|ahW(m^z5TxKL6Ppl4i}Q&?h!r7Va3wq(_Z@(TMJfk_O@irrk1Bej zMTS$4I3n6m7sUWs{O}vP5%+^vw-N~(@B)K@CBg?JOt~j6>6m`H`Ewnz>n2VCvjh!k z5>8mH(_@sTc>U&0R3M<=Bt(Hw&1MA21JSYBf{(!6#f;g$mrzy@#59uZkDG@qZzFD} zuTNqHV0p$HPW1(0Jx)6e`pQl;flQbU*1c8McixcVCt!<%+=A{Dj)+r!Y%uO&qM2{; zWNYqeXY^nv-X!4Q?suC@?6T_!;0pc*d_c||ehmWy8Kffy6%B&=UsYK-*(~fi3L?w6 z=k%~=?nLM+?<}=YkMLFAjI?kU8>~FXYmpB@@*Fy|}O2}O$&&^Ermy&*uzsX=XemQspm&chzX#Rndnsk=&(!k-_?%cp+?c+O9i*MMXA zV#A5If&8GUEShp^zM->eQUCN*!}Mm)2}GHTMf|HTZMOSXi&PbqHFj-$HYYXxSX-Q+ z!fOO;Z-#|+S#KriCJ^~o9=%{0sm5;pWNplGVi*jQjf+xkns-w`aib~_Aq0*#PEN$U zFMnOkC1WwwHt3QE-YS?bArcZ4J?rOGQ61Y>Ud9e@3?P{~@QG2|nqzTc3C?R{Pm~g1 zuzmdWuB%e_S!g78VD}Ui7u!pQArGe;K^@)|3Oc0NMaWp9W%Z+GxUcL|PAS|pNUdEj zB(!+`TosN(NV)l0DB}9HYv{U*^pRmjb~oS}gyDteF{slI$X{_>c3+4Xs@&aw@ZbT$ zr+|9^4`b^`2JTp?*w#Oa79+^A7PX>XDc0MjwMdHmd z>o;JWj$bsK$bUyY=P=+qq^Wx184vXpDbhp@c`xKqpm~`MO3-1%P{}iV>ci0^d~zJW zD7q8o=9fj6AN^X7gO!1lpA$)$yb=-;ujXZ=#4ENGq9gQ+h0A!6JybgJ!*F_xr9cEBfw`w4ekji%WS0it^d5s` z03NfhD6US?%$$)+uCc7PtzFHC91zBD%I-vtdj_mOm z&IZ7o3vBkDO0%hF3*sEXvYfzP5EOfEda@iFp54J}E|0e)vl0ytQ{lUgD)5yhj|?Ec zcH%e_K?T^nOJf7H(f1W8Fj*?~_1T_89AKis`_T$OFNHM&rd zMM$TVgp_oNNVy2<5+p@J8tD)eBo-k`h)9Ptf=IVYDJb0%A|)LLpn!_syiuS1zWcoU zJNx{5oB7blpfUpmhR9VP*WN3&)oqyZ`kl&pPYB8t2+PQ9p!d(lok+TSdl8E< zgfAu1GuGf$T&*wCfGnSuP4C4TYinzrQIZ#9$T0<^t_I-FTM9(@0ZY_CPcMo4fp6AF zPf1vL4)BDHK$bFol@gVvxdf+y%T}vD$oRn0v9GfeVac$optND$HzL(tHE8;>cgv=D z9oo5sgoKFMV3|y0IRx=n00#pz&`Nv_NFdk z^meNS24Vr(z#DeUB~`YX%X#_vN16fM)0PXLy-*cojSVopQkI+j5Zt$xEgHx1Q zkVwR1QQas(7MN}kcwgZppETawK?ozD3xZ>P8V`>_Gehc}tn9Rt4p_^-h78IBkmov6 zei6{RB_gKQEj`eu-f*u+g7eIUXc&YGU$}lMXR_MS0ETUW`(8KYTi$T1_s`H*dZb#p z(!Izqh4L0UbXd|zN1HI4{Lu2;yNJHiFdTSORiGUc`>wF)T9==}#Tq@|evi(oCJ%Q1 z0s@Yn_kNOZ54=5)Y}|(Er$*5_)6BC~hI4Aau%w^nCa}BGV0Xc-Au)(dt)(55oTAVO z+cpfNn8Qj zR^v{$Mc+&SX4LWTkJ=-w$64FpWg$5d5)YvRibUNIf42}2ccM@QY3{17cY16pdvj?P zYW+Z3flLwl^|R?0&Hl}&j~|yajg;R0xd!ylJ&^A;g62a24s=L^O>b^g^U}}OxWjFg zjYbcx5ZRbs0DdkT3XzXkbjjmgtKg+K=COw~c9BbaZ3xU2mSKO<0T~LByw=S{BKFPi z`hP4WZ8Tii+uH-U{Dcy+(N8i8St_{xn1zGM@X{p;h6XxMP`O1!K|cjXada*Cf%C9L zG~odT)%+}mls(eY&OMqGlTL)xDUpt_kwGo89&5h?jE55p5`x>R4G877rx(jN;Q;X) zXk7nT`&b2xlLyv9O>D+73d`OG{wo(|s z%al4f6bq&N&px#xvK?sPgO|-P7;e>rR1FceP&E>qe+?;mnNB{6)Od_LG9?B1`Mb3p zIQ36^TE>CJZKc1k=K^GcxdjE`V)Rf<6~JO-!Ol$~^${eT_Rv9r-EiW{3!ni*fw6*c zh!Sn-;FJPiLxdL!#Ac8JzN#Am4kuUF7kH9xyPqsXegY>ZEtwP&zjx|{B~QkU8@2UE z(k{r1QBprSMeamN;00kz!0g#B@GN#Ak^jE4Mw8MD)}LRY#)$Z03N3QrQb8dijY`tc zmFh$6JCB-C|M;;aI}J2@Ab7QsW41aV4Mhy<7s>VYk$wv8dHi3H#3C$lB!HN+Btv6` zYps&^=ABt&&BJRyfHvHJ1m2&-I)G^u(U9Yjq)${W!{D#!&dF-eiA$iM-lahGD#@&Ze-ksQVDWqt@9hAB8u-I zfq*VswkQb)2Zz#n;uv*g_LHkk@11L54qcML4~CB9d3p^fM+hfBsJFpN_yO7~Gsx6h zsEa^ijwH2JP0P@Eq95J(3WqEBItt!ox4Cvr9p=R%ZqSBZTCQK3$LgmxA}Nv;M9rBXWcry@-&HtlEE)$z`L?6t@81_PZ$@nu20$#dy><9x-og_Iqh=NhsfUAN$E_fP*Q4cIxOF~kHK%Km~&`eNJE@(L;WKcSd= z54}yu+M$zdb;SY%3&@N~fEc=&K?+g^3>v67`S+dSXqY!AJj}F#%=QzGyk~IE^+I(9 zWgp0}e?SojGb|BF8mxAUn%b(@ARvKrQ8t|a99%v^asheRK2n7t1Xl?B(?Hfndc-iO z4l)Ob@kntT(Wt7dOe^Lv3~)e?3c827l_HD_e-CO07EEKwUsw*3K)AiH=QVa?tCG0%*1>Pb^!+bmkV zF?qZdU=k!1j$)FYNMrp7iG4V`O3U~sBq;$ejtsYUaN6sB-P2R@n6Uwd$1TL zvkmmj%mP5=i4a#IiBkc&`5*HE#OM_0HZ6|{gV(*k14ttb5)UYJ4`B?5!Bt>N2vQkZ zdh;##@5`415JNzMD*@7B2;@<5>imXf=0MH2@f|~CIVLr{FnIIH8%ZTNyBt&|@OB=^wm_c~fIVhTzU(Ri#5}~TCk={sU{-&IKLSZ`fTNE_W?y1@x<9l&57upE z)l^mYVP_()v9IpZq@Jh&ChrF%_l6S`c`cCQ{hr2P2Ylc94M^GH{Yk;QHF0@f-O#X) zT!VcO*5Bg$JE@0K_h+XXbnl;H`i`_YN>*5Fci)QfFwj|N01LEfhHw4GoeK zbpFfq>%h~w3V%zH=87l44g;h*-+zfhNyMdJb{ifZX&j)QQN@42LPXx&@(-lUyB4#V>vq{L@W7pw8B0LH*@cRB4#ZjZD^(QL)z$F4Ve><-yXY$epjda35Df3q z{p4j-Fmz)v*%lhvtmsy#e!j!y#K5qiiY|V_E9W|0yr6#$!~&pDtOC0hoY}g!#b{5Y zd$-;)Afgp)cCIC%6`TRK@K~iS$@LJZZlIX&UvP)28x|oPw?CI;f8ielz+5=6yf|w= zm*;gPW9*p+|B&4OKB_-`vX8we<&pNB`3vf1(qABn4M(>SgZY%L36Q;J!gc}^Q!PLOx8I7v#o5TZB8Hi_)u5lTj($gP-;)mC??h~A7(w=9r zv2cXIP*jAX6YT5=2HkK3XqJ@|!@mq~6~e+N_>}^Qz#-);z=h&ez#uXC(ItWfP7WI+}4TA;fniK<+r%Q)8@-RIg%>W3Hp0kk_vz0nwDc-X)=xmS6V?KixwJ*lJW zFEbs8bJS2gzg<=xeO^IP@f9dq8uq#Ve#`)z03e#SGNPbpCBC1Q=9CczkQD7%okQv7 z;WmE}5<@J8--nTEt|TS-#QPFoitID$pWk{WQs|hNoQH|DBFuMiIk1ea>)a`p5pEQU zIxx)|WSpN|o)FF&Md00_p2Nuql?dWwWt#ctx0_z9mdy2Giq?Owr!cV<$-oYO=f|xM zHRRzv!jBJMG4gZDCQ*$`l&@|*;fn0BdBA?h+9-N{;)TaQf0v6%M|BD)(Q7BJz^Ggp zgLWaz0+M185s^uWt#cg6N;&+Pm~JOQ$a)~nQ2&8ufutV*m~1W(Gf<)+`b>PGMBw$q z3(a6(1p?ANILUyo1ZRtABG?tgl?!?}qsD-(48Sh#1&M|DOMozsD+&<)zPMo% zuJ*bX*r55B1?5|2LraE4C|ZFa2t$j(TjF_cE_kniXHq&CK@m~W&>(t0h-U9$o+i9t zu-@xlKp@o^EEg{?5;2vOj-%G0U;}^zg75$=K@pG)LrS#)2em=s3z9gOmR%@Td^96$O?#TwGjZ5bXf6Nk8uK05Ezu z_B;WFUyMNpCV-_12=j5kyTlw4X)q|}=H*?_rU^fMsF45V*w&DS6+M2869|*kPyqJo zQ(6P+XTv2ci`Yg3w+eDKkY1=LE7t)$+QSTdSn7AjPy~d8C8?+WTyyP^hzU9b%>qg9 z3)ppL7F;mVkx$VT$e%MsClZ-V8NfaqO%|o&#H$c{Tdzk|wagf}px?mOIq!>p> z$DYk+<=>XY-a1*4%+$?&`|k7cy)=wHhn+ zBW0;UHak6NT9})A%r6oSsUENf03Z-D|NfHg+{%9cKilS5Mg;QRf3}U}gC3i%?(QeW z#Sg5{@qXCaL&+s9$ek+l-Llcw4`FGVp02PB%5VgE0g~VWlL>@gJ*PoQRl$4n`FnFV z3jk7}hFZRiICKNb11VVHOk8(&x4Dq6#{<~>Ws4V3b%4~tCs@fmEh$0NJ|Gc;t!yb} ztf-@^stQ1ZZpKp9#a$RWjbjdB8xaF}Qb>Q~^}P5Ww|Ot8${_H(DTrD^<8>iHNlWV% zyf^*PM=~8G5H!bF>Vn4&%4<2X@q>U>0qlAc>Zk5EZ}9n<#T+R6wqOERlB5?83bxdD z7;y|jEc~Z%n12Js8n`70db+?*_F(dQuq;Azb0%k}#Uy?Tqh|CyBYww3JoR9+V%%wJ zlWOOGex?+*u8mW_g&Zw+R;-PnfuTQARKycK4?)cE>oxnNgp5ZS$;e9us@y7Q3bZse z#lz7Jru+p%EAI86RhNNY7C4o|1B813QNIl|c3MtM`>pXob+(l{josWp&{QbC5MK$% zuXYez9N=vr5KdD4*Um5F1=Ps{>^8uy30YW1Jy?q*2nF!`!firI`XLfPmCl3$2Ln=5 z#0DSEcARFIqimP}JgsokDb+r#?h*`rbgW893nQWndWq)I z5%PbIAI&yFbvvyq(erxxRL8QO?{9wn;rlmmqZJQP`@^WVqbpt6#Z}?nIAvB^E0XC3 z1oOqFbSWW!u+<#XWBv1K5rQo1RPUU>RVQBI@RLg4%MGwP(&H;)%Q3c*zV|G;s>)}y zq%H0D8IfgUff+k<UblXLLAdt(PPgcT2)12DT|wfjh|382P1C-}9&axby%Nq`@%;Pfe5W-v@gQNf4O^YTr4xuC zU_Ud(EP=f82V4ep0m(huMEazLZhe9%*j4cZz_2#w+DyRJAj9i{t9lDW@aK2U82+rB z>KNEc|M%mL9;O$nsNl1F0K*<=M95@*g!a!>Kx!aoLz%;Q2#soxnk`<2Ee?fTZpXZe zni`=$>ls(XY2QYu%h9T-9eH^X*%v zbEiK}19k)$7DTt!7;XKY+aYIsmW||uTK|U>Z(z`4xQzmOdC(X~N>B)0jHq|cwf}a` zoR8`4iXRSs{8Vr2W!3wdvgm(iO~EAs?y)QvQEA0$nsP*=M-9gQ7nd zDBk^gWIeRE(q&pE>AcTcmHovpUnD=<&uXD=o@i-Jj$1Iy1CWTeLr+iNvkjI$XYd0u7H1Fvw6WPYu5r;YYJ;!{N|i%~0-?>iFt zpEHTZG<0RD<+`6cMgo}j&|h=~WB@FN7U5)u_P}#9m$Lh1pm7orp+M48)C`DI#S)>Z zUkWWt&?|}767VTG$cWbxoc?q8dBEX^+u>Hh0iNU-WFir^>@MF1JZn z^LEKjxW&-)2cXjI-@VQ=e8Co{8vUQr9F_wu1vM@0z9+(}+#pd|gst`sdM9CDzcTzi zo&|5eg9Qag6rf8-Q8cEmLG>?*^kHLz&g*q73rY}XCIATm@BBQR(BP24`lN~L&%W?F z58;KEhsO^f3*enROiNoAKL%VS*LqXv*knR00kVtB;FZ%j{nHt$Wuy-f2)<$920j90 zlea*p|BQH*xOedZ<_`HS84A&Bc{c(tWCaNc2$TT=B=fi0zoR_q>I*-c#DV|SA^LQy z^GqoiVge|VY&{O3NvTO~uagTjC*a8o@bG{`ogQNL=C{m}<^j!0B(w}4-R{Q5>Q3mr zo^_S7EenIhDS`e;7Q_kyzFcEXfCOXejsDLW?->ioP}Eb4KZ1QGyma1m-Wl;ow5 z-Av5&Wr}&b_UccK=XFjUtwTd}IW*&MOlb57Q%bDH!WRV!K{MG9LFEP`h|C0McN-7J-UzgfSjDvCc37n}0GI?3Tt^6+#)M4A^Gzvf+5NXEEtBhJ9j+N$-WG*t#v8WBbp%e2^jB2twnRl^i8y%m6t{18iLKf(d?syZTfS&q z)X$@))f-|gc#Hry!=ah>{1J)5WfE1zYE|GnSey{j>p8M3^@xddB)=x|j_MtyZ+o|b z*+UgOt&Q{$$zH@HfH6=C)GX5dxew%hJexVDL^h+?bg(N#wa%iFsZ>ab8dd&m_T;FH z)ZO6+%}Ojv_#`8R8qQSY?h^HRC@sA%nWl;1%R*WEx8KdSk%bU-$+&*sVCXQC|MzUo zi}>)*P<=c8Y!7)C0f~4rg`JyN_K|HlG{?-$(}dqN=2*nc?(rl7#Wkq0&6Er zbfT?&Giv##1yr`Am`dN?{gb_|GQe9Sp1mCZQ_1Dc&$#&JjPA#s>?(PBUstYs$ix(3 zvFgGDlQ`Cx?yt>Zq5GngKks=}8q#)#ot@k>GG?Bm#pUV~YQgqvZQ~g+h{RWle-&ao z`3sjcdJo?m-Epjr%OupPPwvy5lN;e#@i}dA57LS8sv>x6o&0|<&j}Q~XFq4f&kpU& z&)bVA7rwILMe9g=E)9fyjZIT!+pf!w6WHmXqStR9bQ~Pxl2X9W#aq33gGVMd>5~w) zCDsXhEw)X5B$85oNo#KSf#zdX-5;tsB`ISGIPEr-irx6<5-Jr}DI*WptoDy)ENOL| zi4OnyPdVXtVo4paO!|~Puj7iu#CT1zpJdFekZ{QAH*I_FMO@AhkEwo>vlJ?@1eg}Kcy^ehLR5>q9i%v9U{SJF#8W_&3|63 z{-UuO=y5%I_)|buc4EAXE?x$Wqw-fB-_&ed1DqL(3uT`3AH)c}{9ZeI(=BYYTt08c zGNXTkM&PC3$ykYFDAGaP41=DMbzb?k<^C4=^?aN<%oi`(L*}M0D-`6+T z*$xyfuOtT9*o}!%ngacgIY_EbU&EF*GoR)oxHIz7>JnWTMsB*Kd`U^-c?hQ%=8!Kesf8=dMz*!+BYXoN9K5MzB?Ux#sAdr@FPZov~CY~@@k%+ zjZQMa=1-w4gp^maU<;Buq;+-i9<4=~f=(J_HPATbR?)Svm<7cYmF}2>MqGc$^f5mQn;U@mX?WQOi_z-Ld8J8W&SjF1~kl=fC+UcHV*X z)EUm5!op=}z3Axg0B(<%R{*I2Fk_rYb#*s@W(6>lcfBbb%4uK(i5#KtT){>TEb@}~ zB;Yi-O!dSKCl_C5T5rX|SN*3Mr0^LGQloF0ozh6n2|a5P=@JEc9{!5yGWt&CbpS7>@7k*>8Xi z{FwR}U|Yihf5KOXkD{ce?#+;%+*gQexn*i%Qe1n9&QeO#qi5``3z^2yI&nA$I&zAM zDSLR#= z5qT={mhl^B1cI*IW7(FQe^DoG+5U%l6fO&vD z+wzWQ8}kg-)*)=yyy6)q^A?&_OMRKl4c8zmf`7m#IRnZ1GVN`kuL(52SI$x#sC}mD zB6sF4r4hMTBZ9B_J8s_dVD9Vcat!a+lRoCLH29sVAWEJ;@P$(0$B-D3vi1IH&qD5G zt)D-!^&`?-l_zV2{W3;}?iF6v%QgN=2RBU=7``p@boKpnGA+H2gKoD8xx8;s&;2_> zH}^|n_vZoiMo~B?7BG2)PYlJ1m60zP0566>vGE;bqCi)OPbO_&e(`-XRm3)Wudb%X z8)UXnmZ(D6>*n#VK-=>TkV>}4a|?j?GY$4rEW5_zu|!Wr3O+2;+)p__NnOHOEuQCU zS@?-TuEI^uFK_FWE`AyOHI?~^V)AP&c_0Oq-*WwlZ|9rN(dphgPx)vCp*7Yvx_YU%Bf|y?95qkM(qR6G#hq z1qB8;&eSg*7kj}?DosfkZN1Z0CUHvT_T~7*(I-HSkl6NQ+^-F^#Qs0f(*I?RGbm|C zib9xr;2NP9huF@DhyVj7Bn#T~f8a?{qAax=@^_=_sZw7C&r29lp37L`dqc{pl1)3K zpD@6B8p}hbcxNE6k{x?bRWaGU$n2d6>$vjEYpia@H?iv|KmAjI3ixqa{2V;W6*^smV;w+!#M@_iHtp90MRBa#I>Gnl)=Ry3u1w|Bi zat=YiVCD-*>_1C^dCc*x4$y@I7Uv3u&Zsot2xox`ViSB8%BL9)o9|99HGZEen8KSY z$$ZG_0tU4oz|3G_*TWLbpV+nH*1MT&UD^_HUTtzp@8z1 zU;rO+po8o}AN-<+3pA0JU|rtqlm7M&y6*_p1pzOB{9vd|y&c2q55ieZQIjM1C*<<^S`VG}Q?MIrAj@eNt zS{IggMVzU!dTmO}!gkM9jwR1#PI#@$M}nNUl4g_qmCkve7Y|Y=6~lkSNq)kBD~1A! z4)Elb-*d7YV7AF*3RnVDS-!73_3YS+)GOf}>HF62O)Qq^E<~87D9_^uS}ysn5p2+A zOOerqT1S1!x?iTm(1ym=w2-`Pqb;ZCp@q~ILe0(xX7iDO*ch{@=?0Iag4uhsIcQeIE1+5)dhr_VI0x>i36&-Po z#v4`Ht-aWfqJGP?EdE9{c_ui`(=kj`5}QGjE=v-bGCH~&D_MMA@pJo^ zFSf^txXOknR_gj!@bUM_jMx8L>3aAjlk*gGGD7ZKnVHr~6Uz=kZ_0y)26w3yf>bGw z;ayCt5e{T1h_YJ!C0eLjg`!JHTPIQ(iMXE>rK~B_C9I~<5!xFe%ob|x_XmEq41&^g zmVxMjV;laT_Y{dLzW28a`QK6KVaq+@i}n{TyvRfS0j;M9qgfORUy&PnUyCOf_`Pqv zD8~M!X$((>P+~ACn4U3Ol=tAy;bPD>Xywl-BrKD95IdkUK4ak@wuc@XeM@RgUtyTl zd?^Y?jBsY2q7%PKm${!y$6m>+T6!?|(`CFUZk*|z8!x2XvUB9~RTUrWj6jDH;)_v^ zeOLs2et!O(>DR++c+LP{+c5`arFqaXIaUR&*QDzE-SPJ=^a=`}9r={#fO~{R2qodp z-p(m@)@0Fpi;-FKjs3mEL#Hyr@4$y{#Typ?}6ZN#ecI_VF5Y9D7PXscw)T&c4kx_VW*RO33R{ zX`c!dFB!yZ$J+TBH}vHHD!(Dtqs3Nr_V}B4rjaV5=t`5pN_Tz#_O<7bGER=^Ps(2) zYAa))5qeq9OS2MKthY0ja}gP$0rt3#lz(slKYS=~MS+41>(Q5qgqD#;{!fr`7e}KM zhPFt*akRP*2p5jkI!qB;y{zD!%nUsicr`e;ylW@Xe*>13@iW&q+y!am-$j(hi@eU?(*dpkxXp@cAf8~UA8$iL zjfQ%VUa_ll6BIiydc=pFU0z*Ur+h`<)s;yn_^4Sp$O5^Fa$aV8^A7_+>d^r8lMF;%~{~1cL@WF@k40*V? zC5~4PBVnY;Vp25N7*=y(=Z<;PDHbw1JY8kup?XCl|D3LN@CN4Y;yRTgYHW4O=qx2Z zcjAIm;VXsZE_a8&n#v#HN_E5EufN;&Q?49eA%hKqK~?gg)&r;FF!dwOa;V2MrA|8fcZcfr1M` zSOF^s!>bl(%Xq!&`W@;E>C8&sURo;Gsv`6cEsNDVecxb~C7SVdwS;sIar6;hjRo3^ zH;&Y3vAi<-VlJH8QCS{75#bO&+Co||#DZ;7UmqG~g?t0XmRte~I}j^!ijc0WEbx|q zehDT;N95ex5Z2po>O0uopMyD4h%L3}BxFB`oftBvh9B_{2h9s23j|^&GO-+{lbC>@ z4|vN4&xC*1zA2pBR1C>vlKgw;I84kvOfoX;iB0I_qKDdrX6dkhG04M9{DV8*8pIoo)zSg>B)}O$hz%&un_QVR&4seAKKuT%3HegfROEb8vA%Rj~B@w0#ULe;&0@W*`#`C)xO8$t_G zmTN#{gsQ9sV0~xeaxk@RxgUf=*b|i>?z5|aa-j`KUSd$TmeGy9bM{%5Xanll+tJbE zM{o*;=o(V42{Oa)RzvJg2r(7a+pMp3$m&B^$z(g*xK{tB{f<$;XwRmrUGSqSpNBdl z%by-iIE_kQ#P=eN(rwJPOBv0w`D|R8rEMtK%sOZDT3Ca>)3Aa1lI`x#ei4`)F-NH#vIf2ESsF3NAY7TGK%G9 z$Mv}g7V4nPOAyHPPr{T*zI)iMTva8}Lc@4RgfIyHIpU3r(El;e*8T))w)~O4 zYS-CT7zq;24?gPt7{V@uTOg-Z4)3wD^AkimNx$N+BMp_G4x3iX4L_t6hPH?t%m7 zE6Zn}s_efPk?nHVAU{3qB&xJOHPU8+c<0(5S0Q!p?cw!m>86C)$wh?9>> z+2zMW+erv{iNs(p1fDwF+&u?IBbO+_V(bGD_@g9#nfQG8_8mxw=YbbPZT+fbvgmo$ zJ})!`|CXk;!}Sh1rE9Aw^L1zebDn<1w0i0$yS>ttDK*DYB4(LqYQ3$n2}_zjlv^R9 z*68!7VK&)+f7`%IO8%0{t#auB_JE9EZP-}`S4$Og8I>?|wk%;UI??hdg99`o zSH3Tqf7M^#z-P(xgt`ck_yM{GeaYZ1P&2;T`T>9y%se4L!I>xn%N?{cs2N0dA=>>I z@svWi$sn|NBeJOv49rCkNf2zpc#D_s*zcL6ue8z|dwwVxV|T7MeF}9@tw)W+)e;Fp zhK@JcuRq^v>?^ktkyM$`dss`^6-mB&Dvf^IkF`z}5eo;XJQXo%mYVYM$SPoMmJy{i6jt6 z+k9Sz{hwkLB7Y~_(9A3YWWLLRqr)(#3^=EXM9?Hjc^G*J2{*7IG{cfv??!>fRbj1k zPD{N@V!v8)f=A~fE&Q6C|LLh&%Fj-pdi9!$rklIwvWGsG^waw?43nFoW;lV?NIQs~EctV|3PW;GYM0KnlVt>MTv9GiluGJe{Oq)zC7yjU z&r9&-il-q*^1FX+hGY@1dJaW0oed{u9JIZ(74#vV_35eo?K{W(WioX=+>hXob5dZ4 zRRlY7UW~`cid~DuPz+S<-;Tn|5}l_m%g@ol5FNFcy3I9`6Hl&6=h$~@_*}yUcOZ?x zaH|~6U^WqV8V%WwYlKeDT|**0Sy~?P^Hpx@ zyLj<`kJ(#liul!J`gayN+m5k(5xtl$hR+V|O|!9;d@pHdJ=J2|R)%BwclO>qmT5c5 zz%5{lu}La0Q#QDeIZrF6PdToeeV=xVqBHKL>a1_RkeK_2l2(j`QRb6nHEWdwE;e*@ zzg=MePo7sbotph8$Xh{t@)59(sXDiLa2&AVPlhQ;z~zSy9!BFcMTHvW7Gw0Wn)J%U zMu3-bLF(vE9k;9ndemazSUV#fGNgGP z86S4V-xM7>=~8cDQ>07DY~N$ou>3W0|N8S1nM@O%Cs~c1U5PffnS)QMF8}G~38N6h zRx15CcDuUz*KQ1bTN}HcNT&I5K(ByawnLDiO+j@->SW1X(YGn|a!1ik5@?-iA~fkl z*DF)my7OxRKe1rjED+NFGXI;?ltbZ(_v$0RN=S4bu?XZHe2G}q!EkkDJTq&3pPQaf z&yEFr0}R!&)L0Fz87VE^o7Q~ za3}Rrk?4zv$iY;~od)bD;J@!d!U#*0YTX+I5dtwV-Ml!4FzW#TjMGN7{By3Kpey(HhD!qBnT2 z@J3Ml%-8_?Vi|K4e;;kl;*aM~cJl7Dla+o`DTpb1I`QA4@b! zKd1~_{Y-sOq2aEdIR=rAfsSzjv`X6gUI4AZ{{TTx02Fw`BORgIY{_8}Ebnc)v^0BN zKEAt0n>oi8_n@z$+Z5pYXeTA{Wx;T6^6cp?gvqDfb*4j4|MLB_CZov_^EibMPcIQm>*|_mJw5`ITTFLV-oxv9EMCnEm)nGkA~vk zK5e7Cg;OTyq#&R(aY}AQE1uXoiM`k6t|&LYh@C>bFM((BbcPfixrJNu3@LA z&@EOfxio&;U~ODquJZK64K+G?dfTHq6{p8;u>4TDelk>YB%!d6_@d%O(^aLHO!B-P zp$jfv+31CZ@uO^d(&(@-PL42*^WVHqx%wN8FV)w#J%}rF)Gbv;d$jBUk{f5nX$3X_Bj+GHh07%W zobJ8)dz2cL_l#r6Bky~;vr~LkhBIk+;GtDYO50<;A9z1IY8ckeKE2vHlhiDd`)S#!KWFztV{Kqr)9U4HZQNyz?xJi? zM$!G1_(%t;Hqt|sl4EhsVSvH71YK=M%vTJP6!TRv+vaf5ARuE#^rHQzp>hH%mW>8B zOra0iArU2kYJx_A{R1t_o3=PcB^t8llXudsaT6SU{n}}*yJ>^wPug%2s2;I%*cL1x z@zR#S>o97ldl?LcAw}bN=>4*R#pF9 zs%jH{;+I(?XbUyak?~8X@l! z%7?UwnCmqqqdkAWFLeB$bim?WJ>XcN|N99uQ9#&}JU#>OA29-dD#QQ#OZ|x7ziQO< zp_0;`dF@#ib@Scsx%|xXYk|!Rik+u4PkgPzkF|L7M(ArD9Rk;=_dGQ3wH#R(a(t7( zE#?chIwj)53BEOI2Fx_j$$%PHo&%?A18&hltZDieU`2aB z51z`9VkhVvZ7Gg(Vy#0MIfJY(a(fure#{zz&qba^)_bnhB{0=U+xlU3s`f?&9%bL$Sr$_m zUaWC;>VvBU3@WgU5+*``A&9ASQ9!f=hyq5CVHy(~+gJo(TnVQO( zpkQnZKBKha?1Pg(&on#Ti6F;M&DKU!JLmAFh6_eU!!HE+28W-KrJ@rLlco?)B2Z!! z#~|wy$)_Y0vor=N!iRsoc@RM?npb+!%qN@aSCp2RD*l^K-+hfPi*5i& zcngmmI}lF8#Fi`2HTS8N=^-hg0+ zol*sPT3@N3)#8b_cZ1~Y&?xF|?nOSDbRCS4rIC2fRi&6`n+nng^jC}GG;euY&Q6=b z1am$Z4Cm5*&xE_j>7!Y|ck8_uot^bR_ZJLbROetPBCN(Erl?}LI=?s{L@~d`XJPpO zgU=@_ZDV-55DF&b%s}#M+AON>zX6(1MW5W4ifL{v-&v$O#qIo^cj-@VbMXOM zh(|;1CzyPFjzjN*Ht+WFghNgt_LD)RPl|T!ZhIo`xwB`_0vrwukNT@k2GV4k^HpTC zd%@k^wb#W*-6vnU@cM>YkWVy*l5&M|*wnkixYYc7OfA)0{8>b&437NjX%Yh~p2+@( z~+U?|vygvY*J%{oj^o^ef_QAlP1Ng%En#|j32joSYvPEn0FtY659DB*7G!H#}#4(3c zBL#dvh&_H-{AX14-Fk)_OcVlFf!mufjRq9o0Gt&S7X!*^t%;R@K`qd)-$JzBpvZ+8 z)L?$EZ)iBi-Ejz@x^rKI@8DTs|khoMu{b5UgfXTVQlm=Ope)mFx(mKxq3 zu#QXX<_NYv1FM2A4ERg0dwZR|+x}nlYflVH49l}Yng-TR&=J>EQ~RFzYmeFE0b>0P z!y0a{J}&5HMg{@{J^|Y4qjDE6v;d6*zzd`{WXw{{xmXy$=cRD^PJ0OTmD=j}H*iYpj!#hWF{En-S6L z*^#1W8Z;FSta>M6iAhV^9|oQC>~HAjo!|Y`ogHB^|5_fjvFd1jeJ|{G;*77EefE+w zC9HB3c;7v}O7x9a@XI%( zL1f)3k=Z40R=?*SDK?VyVSKxMC7^ut#?!o$U9k_&*u{6^aCCa5D$t_5@?PT$Po|J| z9UXe1W7o&3CHi)26Jr*VJgKi>&yZmx;sbnU60Vy{$iDcJELEk^h)| z$|5Pl5&Btqj?Mzr63mBV9DA6V2W;z?9_M|rsS6Lq(fIN31m% zN7T6KvUj7rKrit9u9}$8qmQ-nyaT=SKgz(&{?-*?(C-^p$*iI`0;mtF>;}wG&xw2+ z!Pt+vJH63sqKeJew>;d~fvl>QDA3xkg3^sA6Suvk4|Ig1(j*XbXL?FD1J>QvE?>w0 zDWqGN^DrR+bE{b^7x-DNRm=AkOLp~)$o&gy6{1dN=DB`r+n>+-6+!AZ<5m`+P{n`k zLh1`=$JNELERKXs`4e|aZMGZ!rUe{S#j;KU@E9freKZ}nSedqqRChA9u z_}6ZJfChWrkezc8Q zz8<%4=JdC!X5#91r+%rh_>8Eu?(GZQUNDIHf~WOf+0@4Nf#MZ-iz-kB9dY1x3PTM=g^tI+d$rR}%9%#JYKCYu2Td z==t}{mx-$0+D3~}UQ=HfU7j!WV&)Cdm}ErXbCvAU7t@q6^xK=p#D8-&8P;E$-aS)n zz;T-M6_W$wc`JcUgJ-!8chpmPo!RwOy*`eX_?C3NcL9I8>HvHgx(+r=C#2&C-@zL) zD2F!$lpedT#sBImFfe#0B`0%tRe+dUoE$m^Vcw6=UVO2*v{X<~fP_ZSsB{4<3)HAj zo)A5~bl6R>Oh?HJV)~UOP3*URvc=~NBy{2nbC;x^ECo$C(7y|_r*7GR(voM72SR!~kL@w=t{b7>G6l9Tq zgstV9L8L!(CKxCr0EUW@+2^7KGp{>!FtiwQgw+M;y}i6c4Ub$;aYuhQ_%!E4=<;Ys z&3^PQWzkD`=Rs7bjyjNxswzO5XF1Bk=-6ivE_o3kbU3aNQ&-^hf;&U1{IM(ikkEMk zmDp(d`T41;cES}RZeN$<5iu>#nKOORcZKc-q9X>B6p>fMBwhm4|D7$Cb%XMeXH$`n ztVh*1&pMgyfvEEjB0@SPV5tTi4OE+(q3X?|wcSE!3hyYUSQEEN}P z3dYBm^{-oTxbELQ>Hd>+S}3zZ!`JQ2U2w@79dSL#buNGwOV!GoP6px*kFc@@M0^jq z^1$$AxD~M&5mS9-W|!!U0=st#kG;>a<*h z*C}slt6elHTamq-m>Sn$O$nhGX6I-nHAUWHyf}e1efz27=&8~{270zCkA$EJh2=96 z!i;23F>HKJYzL15e)0Pny0^|G=-0U5dbHk&AJUyc@4f)F{^Hz+kJ9q6N{}YUu-ab~ zR#5VF=pcHhQ0}bK`&e>il0b4){hb3(U=&1}Jtq5b()?&btUxPVMW{teigB<-L{z`| z0xjlg;>g*Jnj;AdhP~8}e=%X6t3tA7Z_jO0#D`=~g`BU;TP7cCj7DDsML~^cwjOql z;^SQ9fuK5}g0rW`-gfpYGWm*&3Dc!zTldWGzRQX>K;NKhRC5U;8^jgACTkPn^Eo(A z#B2?7K`-a!#p5<7$|l*=fAzSh87U0t(V*pw#viS>w54g9bbB%8+(OSR9bMf7p`%hX z!}!R>fu5NW3QW4iZHm*ciYQ;%db2nf+*EvCHg-9)uf)(HnoO6!Yuvjr~f(EWIsm33Rxr1p4;d5d$7O5m72tVh*g^c2)dij~}j1 zDdM3NGK!ym)|0;(RUdl5)@9ap(eKk;IrH%pIrE`>4G>oDWIex$j41)ju?+W4?pYHt z#>hV$9@a2dJ37o~d<1*D?BGzu#&?v#)|`y1dZ1D=aUDm zu-n!~j;~d-swOVb;wBkJDvNZ_9>q)I@a}RoeP3o_SaghKxYET$&%VlZM0TW0pWOKR zSk6HB+O?PgGS3%R7v&qg$&Wao7%Xb1h#BuKtaQs1Zgq9}au`RTq)fMO+U?%DeD7n# zo=0R!WtI|ts69`2g_Ba#>sOr6Apmw#_&FBL=i`SL3vNol>k<U=SOSR)+N~<)( z)c-}nbCs|pG1^F6V08(7V0$cUZ&AUYe1U`i6uasfQAVV#$MobdyPj9l+)2vVN&lfd zj4t8WQFL)o5fpQz?NpwX2@K-9-7Xv`OZRI*oSv0EsqLW-n}YJw1(EZrT$DLyu@kHT ziwQ-JE&I_`zZ&;1Vne9)0%H{y41{NnkkmK8Oio6pDwo7 zb9}R|!D1q0NJN_TzWt&dA7M=;swU7%N@7qxL>&_tsXz1n2;EZPl$Y?MVVs|5i55yGH8-et9Ncr`1E-De>}EOxgCsC~^X%-RHSH!{W_? zsU5YGr{j|bUzN|GI>Kt-8aetQiq5P^2G8jF1)*jx%hFvM<58_XLmWNn;qKix+ASrN zVKvWb9|8GjtmetD0E9foT-6Dc-p+kRliG%<&3p{lz~KY}tb$j1>JSR)>+SWf`u3BM z!42z2YZ7-*DxFL=c+!6vZBOJlWE-vg+A@ufQ$8*{W2VqDWJ<}O_jwLCu9dR+R;Evy zjAojd6iFrDxpeQ}^PKmb^PX{D|Ix9>*n8t#Yt8kY_x<@?*V73*p5{WG5`ICa z@O$HHmS-QfQNC8j41m7=PYEeaKHf~TU_u@dZ|hIl+dIL*Wkx;@e`X}N;5*ckA>NrV zvn&doIaU5`WE!9G0>lB)E?t*blFOqem&)#+y_LWI*B6Xu z8GD5sZC#%PxzLvxS$4uZeAN>MEXJmHsYaHZ$ywundz71*Un`$QcU%40<=*CQh120r zx!8{%DZEztW?BG!7VT#2VDUu$YI0f3tYJ-nVsw~KhOATiX|>0={_PE(O)06t9C6WZn01_1%fDNA31)@{&VUph?ky@#)ZX3SKvYVW zEIEuy6Gf}Ad|JIR^NPX@4^+DM8TB)k&pKYS~L!#Zt~^rTR8qHm+E?cG(# zC|*FTs_B|n_<*Jh>vG#toEC5TnIJcX{YPI|I`h82!Km`DOKQ|NTG8=@$G6oK=184x zV88ox)XoIA41*?K*dZHj#agfAqZU~w7;SR1lxe=OKHzyZlw_0GfXz0^!x~KdG~r*U zxAuE!G7t$B7jejDG_r&D@AqHu3WgmT2NNDe-tgrI+RLsAKK0 z$-_9@;N{o54w0g2Qu!?!(rQ_?+@vgS+?l3A44{IbS~GmU#*QSrq(Q$I)L;Vy;Nu4j zT(1o82pY9$miY#!+jmEcrYRalF@NaE3Sn(t_{$B%uM8!$Yp_C4;ddD2L`S5}^72&8 zzTaXisl==l+v3(g55+|lCQe!e9pI@;%5hXx_~Hy5pwOHR`o-+3cqT25rIHd4PS)E$ z_>Lo0_ttyWElMkTOjku`LKY?)U5Z{Ueg)sZgrl9)`0G1R;mAcO(-hFGx>jshmWU*_ z3zicd$d-1KigBU*o4_uukSp1Ahb@9JQ+j3gDhAA!d<#!l4(a+gjzfuTH(k% zoLb0D-V0dU$st^fa}clxGnp9-uw_SvLq`sz8?*uHu_CyCiAzUaO`CJ4RYKP{jmcz) zLP-2UG!=5DMk1UsGa)TUBGMW=Rx_v3#P7PZ^IcLztC^KBPZZUu2n2L7;|Buz8^N6P z&gk*dBEocup18*Nt}lh*z!JwsYT$lLUUH!#C+nS1>FJF2ElvD7&8Mp8N%Rm1a7gAc z8-X$pkB$T#Q5Oh9XaVzq3N_l&x|{o-OfKhtsDJW$11)w4WC9!lVYirq>;iYx|snDeen}@eaCG)SPIL%n9E+~ zP&w61QY8kquot$!mA>eOW=V9n#@ZXUQ41vBOU^5l0=Yvju;m&r9Se&M5dEs{xs}tk zO5Qk3XVKQfkCZ8C)})h^VSt$s>0 zqpRsZNAGnosbLB&21oPT4joe)Dqe7A`UumtUlOt5^r`Zh$bb{osLT(sHyKASqmrE# zaY?OB`=pcfg8Z`mt0)vof#$BfgnMwLm!H8AL;PsqGy0+n++X1^t(cj1jl3$OZw71p z2YLJjzf|V4relw$c*Pk_y_!Nfgdb}xIE^gSg9mNkA2^-HX=pJi{ojZJmf+)88+4 zm;Hv7$PEzf%~SOa)dQesH?HB;{zf3f4aIp@nZ5>o+nv zir!e)N=+Pwg}>Pc<0MXA#2n2|gHPIx%dKW4e01M-?&Bl#dr4Go9CO%5Y-DYKDEH}O zbh$iGTTsDD{^6WVh`;l;>ek7Cc4)AA(rsty5=Y43J^e??H*=FYKX#(e3^9*$(co{e(Nc)Ryo z`B%-@1Xmu`8_xQ}V(UC`WY>{!+OsL{BIzjbo(yEwQ{<=X6WVPY(tEEW#b!`E@ygNV z4L{7JhYLT;bh$24D}9$(z0M&vDyz=2wDIzY|2YN@i%Sh)5E@^)t zUzz?J?9GBZ0{=U%XHHwGG1IqALP}a@tnDKUiLP?SEisgLyJFDO#s*!YJc6IMz*UQG z+=9$ZLQ4CCIUSc(?PGU_Zv-F6lb+RoP-K$AeGQtk4|_H>pUz(;kvuf|1p+K#Q6x|>{ zr|GzKxh!i+W=5EbT7_?h^5takgk82|dJpD4g$aAOz zU|tF?0(O<>vbggJ@mdSkwl=}rIw{gW&LUgbnFp83hVHqkX08v?DvY?iW?}A2q%ped zt`_hqH=7njs}c$*R;#sk;8m(=ZmcSC0_mc;oTJ2z8hlg52CC{fsFIfV_Gr|ZRmwz* zs2xlx`=l>fKoXDk6Xt5XxJIRrx37TVg9`Lu&>=3Qd5>nOuWJ)L3KMQs__}8X3%cTIpFZlXp zdwUrandR4CjVd#&meM8p5u2T)L)XFDMPHQTFk85sV9}MZV_}yJJT%Mep58>O7!_ls z%Ej2`-yY|8e~&OU{!C0y_{K0`P;AsILO}y_DP7RV;lp?H8l35({c0!zU@bTiXqU~| zE6(wd-gAZz80R~c9z5ByN(9()o21_^7O~vA+C-MZSg^li(YRuse(~;T9|9K^dYc^Pe5~dG+XxOz?3LKKwG<=PAT4Fl z4X^jS|JsaS4lj%zHIQ0Ej!D!i2R3P}>GLNFgiYKlKCcVLxgS{_C{h)#;Yc-25+him zN~B>u&5K5z6C?;?B$CCwK$v7bWpFLMyyk9H^y&Kt4H2|W zdyly2AN)9qe^c9YonV{#aQGQTPa-Yyz<^12=bxIoG+d+oWk@`|tZB4qeIfmHl5%8I z8{OP<=+Wd559WOfa!TF5y`Gs;*dXqbTVKrI^dIL=I%SJh{c7>Ph_{bCVA#!?gV|ppudrvQ(I{?NO-{k} zhmV3srr4~2s1zslbLcT%%COW+Ix(Rq#wc&@2CuLLNQ8mgl43}9?i#DR91IBX<*F!x zA-yu735gly$e~nF&{l7^56tO~mPD9l2rm*{GFeRFF6$ef&g#GOq>7%Rt-6xR8V#yG zuW#((orB!;a%#@n;TGxjKW07h>^YH{$WBCn*P^`5_3zo`K+9^22V7+y;=O`7RR{qB zL$Ma?^g?B6Got6~I66Y_rlol^eFKNlWm4HNGGN^$DVxm9==ykyg|3*o+ z&wWe!)@WSCTFBc6C3Eof>>3|?hPLzQO9+Mq{Rd-`5oS-HYc$?>`4hS(jTI`R##t_b z?Y8Bcrc3b~q3RM!-n3$$`+D~TU#nEcmF>J+U#Up>x8@gmhygM#V_w%bd>r?OK}f|- zgMgnk8l^^c5-8>31cz4U4$9(0Z)^b)Z|et_h#BIlKE9L{gsgTfQVI)sfUi=u@eZS4 z>NkNHQsvJ&_87k~R^w!mWQJWIxTqaoT$>=I#`vdLvV2xXWdFd2`^)T~gfU@~7$>%gP3OBx~T!OE8TzBxx zB|n{{U{k6_5K=?gCp0LOT&i_ABO_KimVA-8wvZ|OPcl#HRP`}}pH%A)1+sQ%5)&3f zu0$ecqIS}ypZ0@Q#~=fqd`0099~nC1*cUHfzv(&92zraFj+zVa-vC1Cz0H44k{&N_ z+4U3&s{&V#v1#xBMRcl^G=J5fWOiF6nF3K_up)BJVQ6LS#ys4j5fPn-ElCP^Pva}` zEkRFl*fS`=QIc{iak3NpjEcd+j!roiA1xu?EM{ME8|x?y6Ucnkm?7^5dG#BcIu`nz zjjYZT>Rm4BXc`NQxieL9=2xOu`K^Y8M6;3W7Q8xm@JX%d8TvufJULTJ?CtiY-3@s9 zPAT!VxeK*LhG!<{DrBJb?pMt!gzYDvEzeV(hU06>GxTvs)#y>LEU1>&Xnh=PG~A~Y zPvI#o*ns@{QSfu%mGyLZJ#P?A(`5H!-B0RU&4zl-GR_3;NUp-~_C0cSu2EGlDE6}R zkXvf4B4VT4HJyQkJtpD2eFDt!X0CWg?U8QUPYhK$EN;a4rCSI)R)?U{3!u!jwnO zWg1L^EA>;X&GnqvT=$E*o`%xA|Y`zp^14A~l#6^W?lUvCm)<<>==u~f7gg@fkK z#ed(@-f^h;_~Q-Vb|jOkWjI7OlQmKMf|BEf4&<~M9!fKA`ciDAdR$CtLxdyE=OW`{ zW$ndLv09EQa|3R1D;BVaTv}xeQdFkOUz(jpYZ>CWpdgl~RI23;Xm|-3zC|3m z$s+PLAtwUY_XY`|2Q?kORVGOoebUU35lEJPmC}3SFbbpnQGfax?XXGv0`%!RDzqq&<%iS2vOoyAU-&= zS5Vfoe77m-xU2mLpleH<0Ap_=zG}RsqT`9Vw}VwSb0l?&QWh(?k%sDw#es+#)G>kJ z%j%%?n%iX7!O%wCJdC5Kp!F2Iy}#`d2Qmg?v#DfG52YS+MH15_-mI1%vI<=?(T@FI ztGe|!jnh%|o>uIaggR4VX~tqVu{k^QkX6T;1hlWtBs_Q46`@IX-s@2gE6u}n%IvRowFZc0t}CSX*OKoMA}N?w73b#`?;{x>&cr`7Bu?BThAT@+aMYh?(7G+Tu5Xc}JXE%|<>MpY z_GSGc(S($t#J_`j7Z!UPU!t?2lVq*w(bu00FNGol&j|_tMZ0wKSy-K!QI&!)DrH+k z`@jINuoIx%0Q_vdHtv@&{!kVU@Eg!K1!gzJkwJpb&pl916D-QwXcMfWbHQ@7Q%tA{qcbFz zWUJEQyTmx^3(RVZCsncaR1bNffCm zvrN^CS4Ea3>q!{2!CsXB&KVaBc<_8aArNH)r8=)L?6y_Mwy=e%(~X{_;bC2Q?XIa%XHc1Z2nUu6l^Al-Y?C?zi3f|t4|02VP^-|+Tk8H zV=*Ysk_So{D?cW*;#gc^5wg~2ih}E=g~D7u7c>T9T$*@MuL!)VN2i_VuaN*(O8`M5 zC1sQ%zwnU96r8X}cc(|Y$)U~7a$~pvG>Tb*g7L8BGMjFm_bKr*1^_S6F$g;reGo#~|VZN^%ajyR`n2@But)t@*6{_SnK> z2}TH2P8L>I5mJR=>6#7%kmGfy1*fefnp9SBbzZY)11VFc2+lK+*CN7DLgg*6J#TaT zN_xi#Mfw0KxbU(wkqEF`2?A5FfxzxtABPf0#6HO*vslp%#9wo^mT z0+bE&9%EYTezs5w#}9IawBaU`SUj-1D`sIu)zH1e*lK&7MzySQYdp$r9n(LUK;C`F z6}J1~NaC%Cd8n_~<%d#mjdT8P);)@;pb>?n7>n!vbHh&lg`}AYv1CFK({7SgS;SuM z2LsZdIZgDx$b8MdN9TzV{thaE1GnYPN-}R78GY+%%p>d~_qac;a;Ivd_=z*!A-2j) z6^+yK{i~+;;|Nws_>Z=54uO@s(=;z%ji={b`)`gv@}T;JIZbputPRoSHI^5UJVSTS zPwycKIy2=}k`%!4?dg&FXxbMlc|#9H;{ZGxXr~pBuRZ?_=oSD$7jE1To;^J|w>cC* z8x<8bLG|`z>CLnh(N~XE2Ozzv?JNeI9moV+b^tQ1!(%&u#RhIASt5|4W^AC)dH}Re z0ILcYWlbS70KNg#PAr642VmgS2jt;in2jc`Q?CGwA4X8kpVgyH9=B%uv&5~?)0 z$a;_+@Hynvb3vE_AQ zsrre0N1%rJ`NpE{Kf#_q z##-nUSW5XJcY8R!A3Diq%D~0$W?Q9;%!@TLHsad6Q`7wqjkYx7V*U-(k_MRP0CDT% z4G{eK`b{hu`j_8*sg_vEi1M(y50na%JEwlU*EN11MR~t}UmXAOs5qESJZYr%<>z}c zaukxS8qUWe-Pgg=`afh2`d3b4GF5m&5G#4D1cyS@2UQ>D9s-8RHjV=OKb$#@{m9}q zz`ep^h?%j)upWMqu0fSW-Zq|ThLu&oqMP$FKKW=TaCT<^+jd*Ff=xUXgdV#akzq~X zf8lcBIX3Q&({d2R^=q1`xFtWN{@49}syBq*?utqdmj(%$Br%PNKX~)bp}Zu7bM#K} zT=nVor41Q8@`r9!ucjVnTM4u+Ujoaj%}xcX#jp5JkjA@bHlOPdj)N6U3ceWC0z<^B z)Z~rNnu;N&4m5MrC#Mb%1})#Srh|#9-V`oFg%*JNV*?;T6Te8vT?WgrD_nU%bFwrEuQsUMd= z!f^8wR=g5J*e+kfQfs_;|Gpw_z!6P6c`C#?uz?;<66L7ps^*eRhjdBjqdRtv=xU<$ zL*<4E8r1+3j%>1I?T5_Ny>})tcGOvw=P_uwnP^$4QaEqeloBPmdaJ6}jbx{?=ymM6 zv%-pTA<4vDrnYwL0@)Dt&=g5cvr7~G0x1jg2Y!AXQ-+7#ro>?qt=ff*H*o{+SI2|TvLqoqAJrw(S!xeek^{a3Xtg^DQtSq32UVs`IBe|hpBEYFz zUt60WfKI#O#eTcJnzcgg0zRa9K$siwQtboY9RLxgya61{H_w1bf{I#5=L7pJ=PK^R zUPfo=`>kj>2kw>^)0X14@0sn_i8&q#qV|=R4)?lh|?ViH`#*`D+aBaAC6S9RAO$}K*9+je0_8QUwM`}&d(200Q!N1XCTVv1y8afBhXoW$ zUK7U80VnG)U<4`lQ~00xU)+-d0V;9(=F8WL>m5=bJebC^feD0vR<}qDu<43P3Q%hp zK)W&p7$DKyoHJ08GP2%dctJ%C(EUCGg63_R$VG3SAgq$(fEX?%ty zJr5)?m=)~_xbR1b17F1y5XYpE)fw*aYUT}<|IB5Xw`wj=?p5WH6Vx=q#<{ZmvnSW5 zLnRQIOBk%DVZg?T>^t=U92?;UfH@*>%F4hOpnr)|gGA%AYd#3lb0@@&UZWSyB)z&G z362lqPKcJDl}NOG`I-POxk|mHc~Z|Wz_&1z)p9rE3x(=|QTbxHYV0iI^USN7^kJoFx!xLWf40 z95O(P^u_wAO{X3{zFPf2q6r(8G$qNdfBa-0iJEjm5sdztN~j*+tkpLkWeHPONoUM~)=mU#RdhcbJHU1`0N zQ1tq0rQlSNPx@F`7h=+;-jmECA}wQ-iV^yElIkBJVBxWHNq-p6jxZPRK)iPr0B8Au zTQDLwK0rO_zQMLc z12z@FsH4laz$eIABxm|r1rT)u>CDe60IunbxUcvRv03_^^xQW9f(6YLkpH`nL-Tot z7poz=qv08DhNN3-G^TM|56&iE($g^0{HLY9xyO=kC=~&(&)eJ6%Y}JDlU5N6!j}3` z|JI)E^0&ZQ0*52ri#9nb1n)*smhg4#Iq_@N8^V?;0sWdNlq{q^1w?K}bK9qR(`+Q# zaMjAnqhq%9Xnq|dazk4yOUv#iM}yCr+yB*}jxmvrBt*eJPh!VvSHcTh_m(02=N=Xeq71r#TMOk+W=^Z{Es z(I=DpKg-6{k&h%HOX~BJ3sZM9syIxEIElnEf&S}E@r>=nR(WS4NU<|!;%bPTlc~+V zi%z`Q**4MCOW^(7pHvKvDr$%>kKNdOSiu?Sz?w(JPgPG4E4YxE3J@*=mYk01HM{?` zuD^$~I9I#!d?XmCvhgT-H3O8yNK5Sqqa~HDV8%YLSS0fzKC&2A9>5_;@ZLgdr}N}% z=09TG{aJQc6Jq~auD?RMQB*va=W z!!Q|220aHN+t{i_gjd5YmZGE4W24rtNM0Wl`~qm`(0i;G>}ygr=OQ?LuPk#<=2^&@ zc)+?xF;Sdk&ZjCHO6jIJD|=QnI~o(=;}h3LftOspxEYa#s@<{^luoY2e6w%WH?Kr% zp+hh!x<6Cx2$N?b*%K6&_iLJ`f#F|6k@UH!-Ox=|M<{icOFP?l2G-Wr!r3;FMev{g zBv$4aVZb+4JVS&0dh@H;1=oG&3SdM!+``3hbhPDVpbKeP1{6c#i6qn?l3qDC#9k)p z7xWvX5%Zi$_nsEw7baT6`1HQHIX2}08 zk5>zQhmi+T78Y8dq%QP34X+%%H7e11B!Fk4Ypip*iG&8G!2G*U2KqguJCBh#&I*KJ z~~YuznowTDqsn!)V0J<68bfEz(m^j4JE4-uTdN+$}E>k+iSQY51dZg~_NykABP zR;M=vgPBU5JlMo&NMV5Q86`aT$M7`ug?nSzd$Sp*`yFc=H+kPQl zy1YjTht|Ci!lKS3{<*@p0`?FeU)2wxL^YmlaEV!3dZ_@#&SmB%Vp5R=So4IBk+`a`_A{-(5yzm zb6L6npe^G2qq5jCJ$4Qtw&v_muElD01#7aV5OUF6n|nI}gDE!^VIgWU-MTOY^FR6N%t~yFp#Os`;z|5dywam*eS}+Q-ZE z6jW=e6m_dEtljcbFPcN*tg$9_n&s%@(MV#AMT;?VS#=^{mOlDuti4qmrj@*m&$#6ufizFSFNXH?FPZkQd{amE zXcko+vmh0Ur5=dEGB&BE`XX5$%_I=9ha}<@7*)Yb8h;CllgC%O5$c-qsFDU$1h$`9-H1@`jZ^lL-xPgr-n36TPhi?HuwjjP;Rpw=7rT z)7kM2Z05F#$saW666bE(hxsVpN_QX~;U)co3uw_FaDyvsy-^x44pTEI`?ZZ#m1;HZ zF47f07l(GlR^GhqCg@w8AS115`xiE6l~E-kR~}O?Z9{?nMlk5Y4e9j1=$`K9`+CXJ zza+viMP4|q6PLMq4zpvHiZoWgV^bXr5@F~wGWGJe<(A=XHjPSk$0Rx=w5p~FSme+_ zGO$j<*JIZc&{t4PBIEX=2g@+dDcUTV6EuuJ3#hsMdle0L>Jbayoce0Rz3y)_`B2)X z^xN+8JCD~b1TM2BprKTeriJD+4-V>srDk+oi6B;ZC6^JG1P!>3x(h3D*p3~~_k~`m zmyukBDr~_O#d~fH9Er|}>n6a<8?UN&YnpKk~NpLI+-fE7j3z8%oPrJei0-aeQ{0bdph&jqZA1S>xp-jmNXxPEcA#o9esSW8r zrp7KeGVMyLdb?ZH`-Xn|)F{*f?g5UQ>8;98E^|McP~AbG#8Vuz`nAgYeqn>bGq9Wv zac{qhJe*7XhD?2vC-I786lDqZat5kDIno$kGegwi6B4R@Z4TPU59{{Z#rt9~-0T7Z zJWn)(*4fZ4D6hIJO6d@$ou+-W-CfL0;4=NNhhms1pe+rj^07!PRz13~Rh`ZAEgbrV zeNi4+q9t`g^Qm;Bsam8~u9DP(4QzeA%NJoi+K}o)+P3&08Tu;U4qH|{)L?^t+y|#n9-Gc{M z+I$T20}VL3A8~Uc;zTd4fs>|H>an$lC(TA*aJ{=3vT|r_KnJ2da1wv-vddHCrBZJl zpCS;;(_D`YBBxU!@;V`JfjOzbdo{<=b+6ttb~Yr*znK;np0A~eERX{k#2!uV(8xqF zo~5=&-!g=tS54q4#KF;`$h*~)xLrm{0zv}L1;m~5KCdVeE&tmd3@L|i1z7Gwg4I26 zeH-Or>V>epj!Z3#v#EAhKy6LEW!eLUw=U=-O8%1AtuU)~p48m|-QWZ}l&so3Pg5ol zWS8$|Ur$IE594s5fnB)$w z#f>-;%lmD9;ff}Gh?dwP!<5UpmRiSiy`{ZHSfYYZxv3wls>YFbXH?RA4V(#?qNI;=l{0MS;@kkCNpW%Uu#d44}7F&R|%bW=uJC z+Gv_fX-Y$FjCjX|=K$EGV?OZwd{gri_XlTuAW{-S-%*g_B5|QzqS3`B(ImRekExT$ zQ20^=HLwV2KR7!{4YwV^SMdk&mvrg!*9aXADew7K@8cY88->K>CAdUb4jUa|yA+S5 zDMRPa4LY4=KkIgLg^t&SE^2j-a4IC%tT3;4yJ163D714AXA$Um#J@9JmJ=NAAzg2c z&c(Cby`_dimb$Smj1j#Nz754;VUDZd?*g2=OdcCmZzV(mA5Rlsv@oJp7j%ux z!dHrxyn~g=2#oDY6d}5)=UzJDx9;%Y#%Q*P+v7%RhW80b1t*oHLRpPs{LSqgEJpW@o4o+R{tX9(#VyY(b~M|}A&Z5AjjEFY;H zXh|g3V1sM?fwOG+J78(KDIG>vGi1n2C&D5JLsRqEU~Fy*W|d)OW=Efq|8O85cq&)m zgfL>wG2Z$rmm%b(1f0X|UiCWlI~O5Yr}E-u;iSbclEmyuc6_(Ni(?M@EHAecc*fR7 zmn8a=NTWzZM7|Sv5>0)i-LQRQ-rB8>>!-3|bzZ*%98;k`>XjkxQ7o_plb4s*^TO3@ zBLJ7PKp&DbhoFaA%ODD5HAlcXm>eJfB~r6{!65|O78QETpS$ARm4?nc(heAW%%P)? zIYvpw#~@$YHkWJ~@Uy@NFwPMV^uGkqP2T-Uw=4OaQGzL^PKYwUa4NGv&F+7m84J9Y z(1B;iE@;Dr27j@B9sNk*zyFh`D@*MK!9$@VK^XAcVR~Z)stD{z%-3+V_61Oou-#eVN3(Md;h zN)$3f>0lEtHGZ*S zVtVZ;N9NTzip0@1z>7OK064+g0gx`hOL3hPc&#xHbjJMv94D~MlTlEB_ut;$24IP` zhFvSWF2JVVbu^g;%2#xTTF$PZqkZ7-LDbQu{EO4Vc^6Sq!}n>8*5In&U>C=1bYj?YmTq6}~FgQRabLIU^=#khQ6 zXQ-3E3kGHBrn$0ZTwuerF`+m6aDG|rb!k(T37_W+0vCIn1+KhLh{j09#Ed*r-(nWP zxiA4WMx#y1T#ft}`F7g)5p>}Xu z+)5xc#1u;G;2Id^UYsY)0X^DY1!MbLUMLt!;L#MRW&u%uWDK3O-{QvNrk8^vr6!*R zVv=(ixSa*5ej6{v&rJ^Br4Q1K!uIpA^Q1{CBeOLRXB31Tbm~Shz@|x z2g2CFjtE&WIAG>Uz>&bI{tx^2*l4|^B(e|+EP?6(uqcH+0mOqPcqtiJr2_@yNyoM< zF+xH@QQ(t68OQYO*)uoZzmmxLk7EC7WL{GgBu#+TQ-V5yBq zm;@et$yO6>X$`YGe|BI@i)+mYo4F_fJp!6<3@Cgzn|kRe?~+r( zf!x|xg>+Kb&h^OZ)BfB&HL`enQUPJhLd9SWXo9g^xT+01H1slyqHq*NuHVEO-QC%X zt)!Hy;PZ<>k)7voSs)l9_Cz}2C~5K3tM&Q@RFV_xHP-~q%0Tg@v-m+!Ih&M{O5c=H zvWi0azzPT~bmavgx#?97TAFu(aA&L)fxKa;0{?vSwo?hX31MS3+w( z%=o*$%Z6DoO)|n+o6McxWv1W3(_PNvRDdSM7S6X1v1>P;fxF0T(JBKzaRL%x`9P$n z>$TOX_rmw?1}LYK-m4oA>AN3v$&R4chIBV>z;>Fh#!v6`;xr4*wX8&WY;4#rP383n zh#&5nRB#{VL)Scs{g@#eHy&q@xOLSujxYoyJn(1M_2NG)`3@u zprI2#8h|F?1w~T`L5-OJ1U;kUP-p4C`8I=ZqH5IVE0Av91tI8xt%EgLP;E|`8Z6!P zz0aoa1ae~-ieE0mSXVywAQ7%j@$yV$AQ*wiTKOp^cc-4rZlBhUZjf$=y>j{Zt2OE) zq`_J1weH-SR+pY9PhUD|g!57|EF_O(=y$5u)=W5hvcG&mZ`XqO9*ZP83z$*fN6v)d zVGUeX;fQ>`NjT@hl5pT^HOSRhOunKchoT=mGy!cPd>3973GS6|8(iA+VfSDvY2dx5 zUiePNP${?n+!3W{>6Bq$AnmzM-`F{&Y$inOW+syt=qSWBj^v8GFTJ;vo0+38@OvQ? zS6uw-jFH7!@y0jT&3_m54zZ?f4V0f=a7ZIgT9LF&=T zH%FDBfRbQD=*=PcIUhsy>N!%P?yrDRo2G`A<%b+r^ zE|t-X>-xt$FPWm|Sj-7hYpmb&@4DNZ?C9-M=T%EfG(AP) z?thx(^Yimq55EfpWu4N{B-FRBJP*mHzjLd|UFm1>%JqbX@c8uiJ5gA+U!#QBs#`7K zM*W=$HF#iWjaT{Ney)XLoDw?nm^n>K-_hlN;z6aQ0{0-z2x9cB|6 z0E|xJe^Mc(^EqT1HW>fcB2=_}65wF9+RQRuGzf&+0pr1Zb@#?DodF9fRbsbmBi z(Cle+0X3o9gMQ0W)$r-R3p)mBAlSk)VEq=A;Rr#dU!qYuoJ*YBg)OUF-$)0pQVIp) zV=4)L^n3pnc3nN?$?u-tVFsb2zLlLIUP^KqM^{oD0d+fYvz?8*oK6i}67oj!P0hL5 z8zgu5wO>M;fsx4S`P8a}kWd4JfW{V!W9h7i$GkmT#$pF#o0aUHZll|?;+r*krr-1* ze($Znk1c$tIqIe$Krb1UO4||foLbRJ<0tnUgTQ_fRov%~6s<2Z$fOd7g5n`nZMXE~WCQ>}Y zbWbq5E{^<`$OW?`AgrtwLCdwXLYT|=St?3IxjNgo`lUMA-=12L$vix^>h^3Ff`mrn)9TpbZE%tT+g8dPu*t<~*INh-8_WGH+Q`UJmxr z@UQw5DZ)01OY77kVRZQU8HZwIq2%Dvg`e{QYivTbu0pdxGNfrXFc;ZwEBx>L;zY-{LB6)@E7xS|5xq6eMps zk^Ixt_JXmmMz7YHwwxz3OzhT$xCMVkf6d}cG8L@IUNV>Ork^3+Z@oBcF0^lmA>5W~ z@)Xu>u4z_wtCJA6uIw0*dXt+&j6-th#dp1uf+X({w-{%yXQQI1HTxUP%*aq7JIk7f z*JVhxMJ{2HH;@SNq#w+WimaRqV#aynKJb0vR*M9^HPS_WUpNio5M7mCzf%`h!OX;Z zy~g)4*WspmRNYvxc~j-WPFMP645rMij*gPfs8*WT#jh7YS}#S>+#ZCp=3<-a4_FE|G<-6xb8D_5OX`R0IDc-5 ztGb^RPeK1c&@k8%7bU{M2fe*TRqRCl|=Wsfz6|0zH8No>H{ruO3T$=T^x$3v;$iz`1|-l9v@BX zcoy@&)~YY=6!MqRHtUfKe$6XM`>OlK$fN4(bNrm|en|sb)%I1^s`i*+-M4z^*t0Aa zi{7&#ZPLeNi`ND)pguz2HKFbWK2!xrzG5X+h1AVL$!3IAW+i!T)%;H9GOdb4TWU$$ z*cf9W9cUA}wBvpnZqE%fg|&mF4kkMnSgLfG+`vR6B!`tK6qDdZ$cf73EwYcKxnxP~ zXbc_#jJO@}@c_YSTDRrREXTmPK~OYK7^<{t-)i3rk4~!}@Hek4biOrrD_l=wl#ehS zX&?>8-tALSmXz|m9x~RFw3%0Y9*M14K#VS}HE&ffC|NL%?ZkQHE>|%lSdzlUD(ArZ zjDyJUK4Ip(^O}n*0S5Bi&3A0TRf1`ccD6 z!1g6mfr+Aw)`1|*D>Vu^=y~6!&Xtrl8*4XfmOg&L625_Cvte0P`>vVCZn-Mt3uVmQ zz)^6&4p$}CQTqIC)BtVpuMtz0YBv?T6ii+AUCgk0Hp~4_Rg{InU+ww!sd%G2v$|EW z6g~DKjUFG@3xIey@Nj6^w45fyo0862tF3DKtkUydBQiWZJi7W;9*_|ec7XhkRIp(| zn^nO7lq#eYZ!+-g19ud#yAKK%_7E?dU8a!JsnGZ#%zJ()5mw2;Ic2Q&c|^OQ3DrQO zL|>u!5xCp?HebRRxgHLnCSOxXv6Fli6rMkteDDv1J0|t@9?09jDL=HZyy_AhnOawSZM1z$|e9^ad9A+=N!fTrY zWjQbfvI=QguT_sGtJf9Ek|m77Q~mI!6|M%!}WQwBqystxmWYUD3%CSA>WH^iJtoI@2i!7vFN zM4GvuY7UcVR;eZ+P%t4XaF&p8ceZzSaXGh=PXoq1n#*25dC>Y!_@uHK4G5k0t6iRkrVDeP|kiMKDZ-#%8@ zgPK+qr_Yjyw5afs0LfMrcx!>7ANb&c4go&?<%-eL4l(5`z-2`UzC2!>dI*3L?7Gs^ z8Q;92U?YfsjPS^@7~CJJ8v4GIjM0uM$zKc7$NnGk-UFzrHQO599t9BuwhE%41S6t?i6~h? zP%?-}6afPuIcH%jiUAcBB`1jz6i_mP0ToFCl9PzYMuKFCZ!A2g``p|1{qJAZuj*Aj zs=Bua_FC&(UzlOcG3UG_w)u7bqf*bD^`V>SO)lBVenS_TUQxNjN^#^1eEcjdqWy*Y zcgS%npJlNQ7(LbQE33YjF}92~#o8`mO~hIMyba>n#nkmX#-{ITr}8yWzIID0-=ZTW zy8k(X>Jagi?CP|e%-wwt>UA~h$w}Uoo6~F8b5K)df7&~&Kc1E7oLb^g$5WIk$8_bo z$9FPaN&WgwyO;kRUw~q`VVH{8##QQa{_J(uw;nvu=}BEe^1b3q zCPlr@-Fx$7>LjOx+T+1z2Q^QBVzEu0cKsq3mq}UkS?9WPZ&=7@)p3el zw%W+0x2qHQ*W}Tj)mPlX_Bn?vD(k?usp|uW!@&8J)-4p?cqSuUxxk0c`u8G7d?7xGmOf6E?Mv zeD52PPMbzKRvP2irmO)jN>|q23t?jTaozshdK1CPb53bNyAIzya_I4%vf~E?Qyvsn z#|D>LCZ02IS2`>x8M~F5p6bxEt=IO!S^e^pKjzY@`?*pccoxZJ23+mC@kU|NH>2Ri z5C4qq!VQs@F)8pmdU*7dUAO(nT({>GsqEHL=|)0FQ+6+WeWSKLMd8}jzEfk5XS_0X zPSXe0?f(`No6KpH^`Vnos#|sHN@|ubm$LdQ?@#y67T(WXC*D0=xi9t*-7$&SCx&C| z^Ox_OAd6YQdwVK@M8dmCyNsGxt#o`E0K1KHG{5q*(l&!9lAB^aFYu*vtcqS!%C0VB zG`elhXnS{fKcm>$*J=x?4|Y6xpY{hy?a3o@7w`W4qj!$+U&X{VXZ2lKwb^TK{KSc% zcc$;(zCBl$sE$_HKqu}+Mh=;yqW4Bg4;M>IOVp1`P}(t#;ybem^Y-g z6}XO4XO}D?tdh=4XJvBS#;Mn@Uq^kfvu0)|Q$L{)a+sv2?gh8bi_449vV-VhZ&)~u z0{W=zsukQaFo9C0db{qU(6T2=S)&%H`{%3M>*4`iGIB{04OTi(#}%BoK~!}`BSD&> zlEr78qV)2_f)nIu5Fu=Bh`|y10!4BW@|f)K_MV^pc|zaz68SWeN7)Qrx~9kbfuaTr z7!}#~Rw860xnoC?-gB!e@zD>cIlj+x+99?^1dut3WE9|`vR4=c3T#mI5s4&9s;bP? zLxj2I6N2b$wSl_&>sN&+xyd4H*H*P z-XS63i5`cDynI6yG!>Pb{e0%Ncpbiu+f9mv`uN#P2@eXK(`p#=^sJ-RxV2=*TW%Ij zwZPHmO_qW~&)Ten<&U()#yq}9d+*84qYe&AT5;_mr%mp&giMf&ymK)MtiD_w)TA^W|oVG>GyHdtfy$xqcsMr zEIKz&e5;8SEY3c1=0oG=R}sk}XQtdk@i))m?&U+&`NN1kR3$0Wshb5gSxVN;Eoz+@ z@$I?8UZH0jw60X14y+Y55>~qOsf9=Xw(m*>nR#whXR7RrFD>9k-^4}`UeTDRzq5!a zhVMFJI&NocYm0iMu<1W{cY7AV#IJb&o?YA}qogy$f1TqE7E@{ZeRQu`P|%Z&=P-K6 z|J2K=EIFQ?fhRp ze&86;`|`lS58E<#K%|I@BphTki5_>NJ3(xgTT)l-8F_&~AP*B1dIUPpoIU&eeC?a; z0wf61`We3tU`1ZbYS~$Y*igX~jmKrLWMyUbM!2V;aRg$LRF%f5sVOW`lJc?pyKLJO zuwC3(Nz&_DCL7Lo4bK0=@hDHVKP`6L_TC*$p%gK>C}w5#+d?(^TF$$NHZVQv$xz6A zX(eIkcmmqmW^g6TJth%BuJq4OmXb;}T-H)hGk>(VYJr-Pj#y{iC~3{=)u2G5e&-vs z9z>yebm)6iR;K!34-djxf`Z5C_L{!Eg+aC1mTg20$+zX@?r86_f8V}339m`C?n8L@ zC-U?b=7zkDa_xG2X&BHlq~(;a%N=F?kk0-?U^qxOuv2lHq>MC0G$z}tE@2JZtGzUnTkEd5 zH~GfRn_lHfcADrS-^$GBC~VUy?U?fi$tUcziHZBzw^fOH$DER%z8eY|g{`OUUzpTd zMGbkZouW(DcHK=PnGc3lU0qHhImSc2a|l_|y^T;Mk+PoplSw|qBJF~Fe8~_K*ZY=} z61Tz@A}!0MGJOA$Mj}n!gazW0Ctbgsbc@^za}Xk09x%{<^iz&De`%MZIt$NXTiYi? zC!Xl0f{Tb^z_fnRLix1T3No~d=VF=6Tc1UN!hK0?g>0%!o!cum7D{$ZT-;&0+vtw@ z{U%05st$u)O`$9^`c(JR@L;JklYcifA!b%Ays|8Xg^evCE^dRk%N|L|qWkXt=8Iwu z_g~>lsD;J*N3RA=9G+Z7sBlBSr z@zLHRl;_`JgS&ECT6ICHlIvMnS-;;r$NuMI?r_tsCj=GVj+`d5Cvhcl**O+>IMYz{ zv4m6opZwh9*LHCjoo{Y#5M7N)sO|G@VN1tvL(2Y!j2SV$|NKn+ zHM5wJB@l`sk_P7}PMkYP+`FFOJmBX*05<*qA3yo_HEtwcoIAU(_L8AMo)hcChoxQQ zF7s)JXqoRk{{tTOUpD-I{oY3hnW<6+fo~3ZV7erEhbYCvc$L4wUY~B{4NDjrI8D&r z-X2|`IXO65vd-6{DmZY{&T)2PD1RKvUsG!h8yeYaXqzd)`H4o_C&{bj++>0l>C7_|2>;Gn_vh;)0l~-v-Mj;g{`0Irs6*}7U1yzpRL#Y znF}G|b>)zKvUDjyfd(4?G+8M}=-n!2+jUX|j<+-IOY~zoFyfW;PV=oh&$ltRXp|OM zpcZ$%XQyW#d~EG+@0oD!3HK~g67llA=*^NV@S(hXKl=?haA{j{++AH=&4W_dwSrR^ zB&>w~#lS@4?N6eT?8`WbGc7A|Db3)L{H~K4{mvyVGPKztzVht?g5H_KhIE@6QnKuO zZB&dE2fX8!2LwMqgnnqEZFj%Y6VL^EPVPmAV=*zYjOXHx)Vg;;+f#y(6|SkFae3wX z)r1(SPt~@-!yscAX%C$`NZUaOWFB#iw;x#8_d1&IZWpm$zP?U|p53*$?n^}}-ge*q zofC{sgJIbhT2A?Iw$yx}8_Lyp(eBf8Kexv*LkCWft=bE6VF&?DqDEp%RD=k^viJ%u zy=(0;W8-Lx?ZzPrQ z&w&^w!-Rs3rfMlW&V8BFfX!3PlC}SVa;l_8LrPuO9*V8ZIlAy8UwZ~@(yZ59*pM~& z6+OLMQA6Z@@ffwf|5=NbrU1-C)}7jkDRckTW&;a|m4ziy8S#Ed!*DT2dTKYZnS4S% zwsMxj_k^3!IDWR!Z5&X z8SN0UQLEm*9d2AtN8FC*h&@d-8yu~={&AR&`$8-F`uePk=bq(>Z`ySF$LH6W1+W}b zPNcWPfgrk3pK@MHTxfo@pT^k9=~=&>gTt7f%Dod7^~v>j$n1`bxAln1wO`ayh=|A% zU$5p(<=RJ&;qQsCEg2Y#ve{#ED#P6;9zXaVRS*$I68f!g3_3yGWQn(OU;VEs`0KNhkeAY(u3-%)f=aY*ya_nJooNI4j6Jt1OIDM|fKM>T)teLJ@+8s! zl-BuEdf%!X>+?3O?w4yw+q7R(WP@N{$@lN(p%X)FB_Hz~s|VSAwlp4ET)%%z{A-?A zlF!1%jckb~UkWyCWYb@|oHifk;#h5c-?D9`4`mp7a;l~qT0745bDj4-z%a#-q`jG; zkNJ_BcU7L@OIpABacgDHq+nqf#o5X=H8I+`9gga^rJhIChW|)-r&Swot|h)87GB>S zz)yQ9yW#qkL?HqH?#GjQud~GuyUhs=Y(+(^o}Noz9t8<5u+;P~%{YH6QjmqS^`tOk zZ(e=%j(|-E&H(6uTf8kO35~%CflW<*$+<<`WgoCE;4WgWO2i}*kcd^`_$R<%Q&TQRpBg@M zmNM|?oWlBmXG2s3fDAp6Zn*JQCWj#KHfxcr;gB_+-SBiU-#X)+mLt94<=N3j#&xUR z>DugnR3{(LRyH&Y5L}3R|6%2eco{EEzbsa!@9{Dc+BMF)yXdfMP+WjQmT;eFg;54a z*Qr)n_~fqpaA#k=I_wyZ++9>p;5m$_1}eH3G#n?CsQBSOm1xH=CHh6FWU|6ZVf4o% zVNW-oA>o5F*QIXA*W_mEWWG7|Wa_73BPz`mnz!jL(|=*4;5dAKRSehB==q3joyw_N z^VErf&hE|QIWo?i^);fL$4+h@^pBf%HsWlslN$L@ye)mwj8}m9iEnlBp&tbs_`YLT z^mNtDZhqz1&E#J)>052my*iCczjkS%dRkX}m%i|N9xos78=@PSGMid6&#L;BWSo9Y z@7R@IJRgE$#P{!SqbM9ZhRvfVBXhACJYQBWu8t(lgs6#Mwy3ndI~~d=h*>sfp!h>N zh+_aj0o7vZk0~gu`@h!CYZi}tw1Pd2F`CxFTy-7$Rzsms_zm)Q={>U??kthL@^JrI z#LLim=3&Lxv9U39Jk>Lh`gdA;QGUE=FcGxyQZjLJdfl|lAYVI-vA-vyzFEXG>Sooh zYHkQDptD~0%41_=JM5BM>re_~>#_TFUJbLM)a^hTcF}oHb@}5p&ms(klX4Q>W+kV;#R5~Zs(e_&X)|rt(MODVOJVjmdG<` zK^ynZGuo}v@E*&fX3putZBeVDb;-n}0Jwl1xohW6RAcl8f^djg;s8v(Q$ig<-D(hF_kqNqmKTR5qJiYyFKk*s(OfoO$vc{OZ6%CF_D8 zZ?Nq2^z<97{Dbz7E{>eyDkI|by|Je}xWncpBXWX2^*NLb5|$K+5}~%6j!nR@!1Nt4 zM+X`=65xc78f)?>`PsReP5k`)jfKP)eaLH*X}Zb^lUv9cD z94-mGe_Fqi>{$p$nSn)^fpQ&BAgb|zV=IN65BMl6`IZv5Wap!U8wS+B76}!IRTICH zJ&w2Ec+d%LUYVT)@C%;>+fdGY-wN%4kZqdT%9k$Hr+sbzV!SYKeq!|F7n5MiXHs0( z+<5kBSdc$TqCbwY0SS+sIG{FPyR)^4(Y?1b#LY;I7!XyfxQsZr{B-hEqZN=bqXp>&V=N zDxn6!ta74oyAju^hTk0Jv}oPSDq^W%=AesNK#OrRO7)|}&I)sc+3;R>@vI!{4#@_y zLc-icDNTgKe z*r7|o#$y&UX>*((gKPztkl0yH({y2EgPxa=j#HdA4RJssMelw^UkWkmcD}yPfj~EL zG$LrCXOjFdf}Da4zWuhZ(t`yH^><#;_m|i&zr<&F?P(fgGpcl~n95FCAN!xp19N&V zT3WA*mow32HdSRVX*-fU96Fh=qO|e_MiOPqBffVI6{Q+sldVgD^!6C5IZ`sXig*;| zj#}HHDV$^_^l}ASftqGX%y=ACPTv>9s~}euQLU z{B!Qb9f5_07<$8D{UJoKABDlR77EZuRv_sFmc^`_uUAV*)_*O zoB7qBeQ#gfe{bmu1Kh`{ z^*FVj-=h7|unk5!;CrHb=P74;X`Q42TOV^tp}?Wci|!>dm!%a(i}sfVa{RE{-TS!e zc>2i}WhFtzx@Xlp=>+WEx^D=t-KDd~y1f7*izszz0$PlOn*(aNWVkOU(fuKy*_hA8 z*yE|pWpTbk_2}5`V1BtHCua4u#(HBFlpgnaE}`2bV3sj-$<070SM#paOuFIl(|E}- zCh597JmNS;%F&&LxD9qj(fB7lL{T}w_h>Nk-uOLj3G~R%9Wrf)dictB+ApZTDDK#n zoNrd_y!2@hqtB3R5ycwOU!v*pRCi$6>(`zLI{YP&uVXP2b>SKyw+uOQ_JxMtcp3N{ zLX8r#BEuv5Glo27OGLP5IpiakC}8TycWAn9Z$9!>bf76S!MdXeHqSKHQ77H7@Gq63 z_>Gl_Y13?u8#;!eh29f{6&^fzfWTo9s;#Bn`DnUNVye>*5JOUv zrHZPmH(n{|&Yik=)Dc0=wp88hWSH!Tv{ZihaNYE#5`{f*^RcCpnZALeTf^@C>BUDF z`FRZOIr37r+gx%uX=q49V6vyf=5Z01N!5cCQdEtMSrKaJ^{3@m7MrVuzac<5#M^lj;Uhct8Sh{QvV1% zwh*BUd9I^h(N3C;m6d4DOn4ff19no#*qnvKr3_#`MuvpsA!>_8uU;sY2&D!|=#F;v zoUUJPW3zMIcoQYbLNcx_ZtC^yDEVymZS!Q`&@6|^yK){I&M)Hao4D6-OusGP|Cn>x zH!+=>GDViAceJG8@VhNtc^X<;TPWumGos0-f!^cYs-tAgHL-!KP^cLOM_pYV{vTdp zJ`;cWZ#$z z3Y0qT;=P1pWxY@?lbnVyBduR{-ihoPgDE?|dmY~mLuL>9S5MY5Sd16_(a5sK1b$_C zHuX+ftzJuRomtR9Inm9RLW&a$^mlTHu2_)l81wSHl-NBqbT*Z}GCQhzhm6NkntLz1 zh|b##3=9ov20JMaq`c=**-f7{oE+mk)DF%0lc)(hR5-~gVsi?~r_>RYMgqxV_sOTG zfO-doMUeG?G>G?}?`D6FnwXgMQy1A7)p__HK;Z1eL|#eB_TcgC{6z#9y)nX4rX>Z=&vxU>^b+6>|CMxObQ7nNMw=u2&~tT;y9TFLyH1b(_WK zS0&qmN`gBQ3T+k)-cMTmEGxG@wPM9W{`c0+hK@o0+NraB^2J`8xX0WqdMi)1JY#ec zsZ=PL6t<{vU!B8z+5T($PkYZLC)Q`N85(ld)O>0%oEa_b>|n@YnjpLN6(0#pcq4v-T(sczsbj%Qp8h+};~5DGdZs`0opq<1oAK!HZ8&iyNmI^1 z%%VPuGv(Vs$cTRzh`;I`u6{c*GBPaevCxIqoEpcr*;x?echRN?N|&khvK^}Nb_><%KMzb6bp!|drHkiv_2ldlsL~7H+HbQ?9A9uhJ{mDK zxpEoBy?4%Y$&8y3W@K>a5_iO*Z*v^&CufYzg1m>=7Obj|ob|k{yv=WVYtGm3NxR(( z?KDNjES}=G1Ust=CeOZ{oK7v6tzzMe<$j#GEs%wmu0My{K~?6CZ*`ffT!&Q025dUI z_rcBr$6w}ZuL;>n$13-5k8vqslZA)3LF6}#fE&)fhyh<`7d%S$14hc%uV3RIJzBx@ z@#Dt`)DZOb^^I2!rRTwx0+-^TBbBADYzc{OYmutziQIQ*W=4I3Ieyski3>E0baw1o zbzNiWBCKmHFaHLcvKVp~a53uA_A>QQAaUVEg4(GPA)age@-nbxG%|&2i@rguvMbl` zi^JY@ZnZ7DzJCA6$OxzR><`qE3JkwU`a`hzVU5mS=C0=K2&vAWlG(Zy2|6p^93xNTJ^-`$7e`%BtruDvW8y^ z!@*&glThNMWtV|N3B)GLA30Loqm`RI&j>P4@FdySXS;d8@w+7E(j3k$9XtMvp<@7>F~5Fxqy zeYu6$#N8Qzv22M~1d`p!Rb=u9Y4%Hp@vWkcE0eK%ExafRL&~$8mXhdB{DnimwvMQ7 zwT(7(I-1B}&@HU>b*A9?;PcLz!&$gP^y_Z-o5AVQhAyIMuZou{&W4^9%%2{Lv9f2O zZ~#$^;0l?qDD9p3?v2LH;oYMzmKY1oOurkP8Q3q(4aeXhzLQ;A9G+LX;uPQfZoZM( zrmC`%xw(1u>N36ITMxeVhu|rz!8Rw4cto;QmK{y!zosg1P*=k0Vq0jJ*!!Eohmygp z{5k3y=&$AaceR+%q|z0B?{VR8!t%CE(b`Ip{0H_ur-*G?p*AUQ7*G_bq}i7L zqWoL>e8scRGp`1zUwF^hzqX4%x17X%{U1QIk=qjKk8=S^=OWW+NW&ceF2FA0Pxd+d7w#aTx^=`lCingGp)y7{^wDtO z-1PGsTob!aJvf9fM2AQE1A`-jW;vF>jeW-;VBvOt#LkFXWiPUGXg!U1aGoV9Bdq#s zU;VrI#_OnkiL6ac^+E%S5eegLWzMB4ZtKgRYLd-R^UtUS{{*>o!B46%aiCjv zsh1M>{sC+fX}`tb_ks7t=WF|mlHRk5baBzq0fr}b(2di~Jow;VmE=@Ko3X;~*MEYN z06sB({`C_Z&u3xwU`o5^Wu?G+^Xzwifk93nrR`d*Lzrw z+v;VMI66Nd z=v3%_py|anA_qL{+t*O*c3={S9|&J)u1h%~!1Id3y1=&n_z4jFj)6YH{1Ij|Ui3vZ zqIrC9pacX2tYM{5BUh|g0hQ%B|zI;JSRdRh4`859IR!Ed9mKh*G4bn27uM=eL z9RdQXbnv;q=-#<|H;x~HTyRR0EL=@ZP4U(GZOnf+=C}xBZb83qE_LpPymuNa>+uVk z4i4GMV&PJm!>%9Ndgm1imHK=4u8(qS*t=J|p;)G?XZ`SJmMGA^w-fy#zf)icLl z4>d?TIJ_QBpXV5E@bMN1^s)CYP4U?ANdtY|t1i#D^Y~al$#i--W6{zr*x9bzA`p10 zFi~9cuJ8EBaA(iM$;BNR6(s41lZpMKVbJjs@X2=7h{uKiuv8QkQ3qE6yuU!t4BgZ}&9rqZW7e9UnRb1h zZ84Yo>EhCQAxvq@SOe#$Q-eGxfd066!PCaoH8qah8d)YD(HK7V{bB$-G%b!+8nHICV~dW`a!X%-j_wx-g@5nmIa9_*>7R4>N7YpZgEbO;%0e zcgAg_E&|-M8j0l+6wVHv)@<{w$+hW5*~*#;0eKFek{2O*778oS#GtUS0zlZ=bi4TZ z(GmJ3oMj3bM*-|ca1X#WOCX=_d4G?|KUOtT@}BjU_wPKfmh^?WeJ(rh@x^RSPx$N4 zRoMlWJ`3!H# zBZJ=cHfi+~SPw9Ga1s-PCvhM^N5hef03?hmCvj+1W&h#{gWicq zSQU!Or)u|4{pcoKx6A7Yu|=ju$bTM82UuIVZYL#5?O|&W9A_ZScxO+T^~ks&YQ=y) zQsX`6HjKVE*SVzT0m=Ldhr7*8v^TTjf?wu??d?+ohtkKF{|ejxMy5KRC2j))Vh!^Y6$upAkZ>4zLd&(US&H5 zP~R3cS*tAZX>8xmoCu?XNHb$>S&UOv^Zs{*i-@#r;Lur(dh~w`yt=$lRY+$e>l)#ypYulb^e3A|7PMn7_i##Jxzeep}ono9@w* zx+p}{04UnOOj+0=I)%e`MqSM%f3O|8iUCrVEr#NMqdESfB<@XIdD!XM^G|a#bGa3z zrRJeZFfA;FjF#{EvCrk|OvrT$Li4!D$j~j&JfV)pZ1X!i?FCtT{^xTZk$%<`i`4QT zVN19>MNC=w12|NA(gWJJ9FeOmfHXQrzdbG>ujqw&~EZ@ z0s!T#baE!%CMuqn&T}MkVfO6Emv^eDIfDevRwyupmEe5_4=yo-{iCk5-vv&Y=Li;hK#@K8UVOt}nVXm9Y@$YP0|BB6*aFz^7W?$zCA_WmxC z1>7G`dbsAd|ZpHOLX+ zHRmA9dIMN@%3og>z1DrF_TzO@UIk_5>MChcYu2op%Sm@hV0T_GD7(lw|L2?Hew4#x zm=8rAEHu%o+f*aO0l6b=JwDhrgK}yTFe?CV__pmJUMX=Ey=-KwL#;Bb93trh&K^oS zJ#*;OnB04Y_yRYJI(gc>Ky#qY>laD2&#QU|b&>W3{?mV@sD7(7mewFHl3r(g+Ku?f zzlxZDh@4WfaiYUVbJmW=!s@({5xWL6+T-;15mj2t!a~RM-N`*;CdL3XG!Si>{14GZ z&tHo|+t8B1KVAW`N-vyfM(qGZdn`lzEHQZanH5!4%uYwL(pm>*%rC$b-;67tx4T&& zlnC3b?9`-O{?TK{P+6uhajNjeaS~7Sg{$6l!2hvlp64R*Tbxda6VfelnMsC+-4x+sTrlY<@VuUe@ z9~`Y%C^)?QLFd6R)axT20a#rVO>3CABr$s7p$>w|G34F%D7bO&Y8HeJs14~Im>J~P zRH~HbJqJ*Ij6XLHWzoQe8&cu@@%>S{eWm0E>Exf&l=*%z%z@xqp8m0H_uxS8QWY3{4p-3c4W8&%xH`)tFbMz} z;#5=n#6VTAsi_ePy?~N&9v|zs78+U$g@Papu*M#)(U-4Zy^zHvi$K(d?`h{1yu9YI ziU@#H$Y|Fk?m3-RbFQ_}-8p0CQL3`vJ5y>+Y+35__T<4W1dxASz8grCZ<`EbO`iiW zA@tiRL-VQnt+2L*LQ@M0!fwbKAo(bNW-uSA8L-4Y!K4ILa00{w6R8Vrgnfqdfm33I zUlI$5`Q9k*Vk0k4JMOxXch@cl&sAb}Uld@3f>n5lOjJ2Tvj4|N<(`vmCsH;>ajz5) zt#E>4M)dnZcuMvP;3^-u0Mo0mH zJWP|ix;l;+a?EaAzn-PD3p41BlU|IWhlOppsgkr6lSttE+NpNo0i8A?D{1|7*CLkh z4T>%yVK6Pzh^Hk=9op1sDbxZaR}caFh7}(Wq$KFb=u(6TNh8XaAgGSI`G%kyFtG7| znY=C5cwmF5-C?@Dr(XDc`0xRh9TE?|W1y#pScA#w+oqgq$zIodaO+k%&x(}nBPc3k zZ)b<>n5k*K;85B^Ln&ORovPb6K23BF36z@G$vU@c=6t_pZ3gtVBSAGlq=*O&f~Ix$ z>{$VLn;6Oiplk>{Bv#>z+>}J4V!~H6NMMSOiz6a>a9O|xOMg9-LjMO9U%ztWhO)Bq zTwg+@KEnl}7G%^AgfZOl;07i+b(BtoQ&9|IA(9x*s7D9@j1b`7ztL8TKIvqY|FJjYi3(y9CQj?p2YA1 zJ$L(Z`v@}QeA|o|FR<6K6|`BMAPklh{!AO0Hj1&-S(#hZ4uitw`Zxo`1WB zMy(ZQMBd`@4!Shu7f^=acV{`lg=|@tU3mV%LFcp>UI<>8I6INE#OeNhZ$k)pdeS)B zzRf4`r0n@YkAI$zdFDQ^o(>BDSb zFAhdpLH-jZSZ}$pe}!iwL}ba;4qypxUcavYGXv}LSm;g zweEaxWjIxJd&!{t6dYFwM3qb@{PaqMrg}HtPO+|eZ4QD_FohIcGKi{H#Z+>g;EPPaB9L< z|E7Bt6_#>nw1~yF-ER2c4KhWaed) zgnql)PB9~Ck$FM+C19;|$)7~}83<7e9SbwwI9}?{ z--11+?wq_lzgxHI0QN~@EEf@@gk;3>YNemv_Yiz?t!tjig}R!dh)3VLbLS&eokd#i z8RRLj>D$PFnFTITmu@sd3c|vZ@F)flo4>epxo>mRu$GPv7$O;`O8yw1RB$}uZfg1k zA;<3Nz4MUg&_ZY{OHgG_YH6{2=lADnxVdfoNEtzcMcg^fQxnCYx-jdXb$@0<6=Ls+ zit%qelM>Wv@{8G<4}6G_Xc_O))Y3YDmbKpVqmdg@$#<3gEPmnz9aMEBsfzrL2@FmueD*J zEQ#{+O7fqcMaCi$4D>QiU7YqhXw&%uOnm6Zx_U|cg;=J&du?Hbgza3dlV+j;FOn?W4EsLL=Ui6lYl$G-^kGQGSj%(pD^gpubs=ET4@Cy`@ak$XJ~ z3YsfM2mG= zIp~pt2g9)p3kNPVJHQ7-!Xr}7amo&Cf4uw^2B5C5|9yUa@6j$yJrJwjGA{4$%^yt9 zo&~C^C81t%`pGV%qOi=v<_BpUufFW!<>w!)j(!;>Xj>M`_>`VQQ=Y&q! zxG|OKOH|QD;C_B}wv04gp0ybsKkXWL*%PDjteWm%biZLoeWsqHsYo7I*w}ECzFn9x zAm*{&^Fi36X)i0y_gR43YWd1_NQ_HY*}aw02pwf<`8Y2Qwh8n&LEuy4IxGTJBoFh_$bCSt;pB32 z(0(7vUI8Zq(q{r>pxwN@SFT@Yk%eQpT}Vg>IiPgLd)Co1b9z9O(9XzEF3?lmWej3! z`|xsr!C*peq97+bUu<%70>dXWdQgmS-@Z*%WWb^wRZ`MYJ+IxtgybK_2|v08?gDFe z+$-$fz1RL4jPSQl|0+YEmuvUPA{yJlF+f)^n_v%)%TVm;i!4#52R2-TzP<7==f%q! zi3R6jPdKJlWpO!@4?Bj^jvrEFU9)DhIhS#yAF`$%fjt9{21Nzt;JCmXeKL=$e3-EUPv*m>WGk zJJ( zvFwnpOy(WgGfw2QR_rMG)t{H|n8CJB9DLke5)y;}R$tK1b2yKx0`Lv*y}ZK4!r}oD z7AQG=4t^Dcw-a>kDF;#Uq_RDT^_l~uCG@V_^u?naw@dffh&;1uYX%z#l<_De#9@lV zHXWbbkyvKNxKS(%b}+mEz@rXar&c)LFU65tD_}UA?md@+KOvFK&eJCPrr)VrwPOV9 zCtPI`B=%(Q!ItM$p0WCdhJ$$@;$<$gG#*g6^G7JHqA%|)eAV{tvI0#OxrEwm>kcoB z2e;Q^11O4A(2s)Jc3N6@-Ac}6LcK*`SHP))H{%7^6s^AVI>#ke!b$}^MC2Y|lfv?b zX=MP;B8=LNO#U_Jv>K4kiBw&<=qPwC0j&WRD%caqb+zE9885V%9y=fOj)jYhNENqZ zQOnQ}L3TKxrvez3gy!Py!H&_a#bYFriSCW14 zOfB~zdQ0{%iWimrw#bCtGOksd6g-!>C$xeZxRo>3=z&r^hgFVDLM_a|6j-BhaMZkw zvUF3yPs@SSt*eIw_O1IdtW+}hu*WDi8 z{%opXj1w$Fb#;Hw0IE44loNa|rUyFPgc*c%;-*rFc*qS)DyK2yJ6Tp~4=>~q8J?|5@ z$JR7rNKlvV?FFu&V8KeFp`oEZ$);XW8a#Arqm}!HfCbrEI*goD_3V#NnK*A`4+FO7|?(OX@Mg)%PsK}$Xn5m8IZXud*m4ut29SAHs>OH<0o?}+N z7PU9n9|yAhafwLwyR+xAGPxv8!R$*&@B~alDmG&=su8^JZycC_SZD_+8sM63q|s`} zTcz0J=rcXQe)of=P#~fSz)9#eR9~(q5+=9EkfWbobQ0M>;8H~3F(SfHM@OgEbEWs< zq#Rb%S!VlYp5F!5I;_Ef>(@Qt1@adR%Q|*)`@h@^iw7x1yYzElPh5nY_jjlx%rKS7D6}HJfpBvgap(wn3KC=-`{NmwI+LtA@A2t?hCN0F=8Fm1 zcetJ-V!6BFLw^7QRLu1oEohW6jqA7~F$C}g z!D<<`x-9x942+FI6m0p04##G#Iy}X-Pgh&p>C4+y4H5eOFITNu6N?qz5x1y%fw;`T zi-Whbm5DAfW==oy#*hHiaZ8$>$Y3g?l~ z{I;?ZvFhMF75Jz8`QM+yC*Ea{S10HkckJATshz^V8{vMz4Tl@oQc&aa_7TpX-(mxG zpIa3=_G^zXQ*%5pyw~K-mMvSrN#2S0w877(<@`H&c@ypK+62bgs{C%w9vt8zZYLl6 zMDE&JfMx_#TmJri5zN8TQrSYo^qVw~D~2bmYkL{D!W}#2Llx z{jE;GEy``~yTivdG-3>=iWg>z0f>IVIn-FtT22!JEDmrgES_07-%Ox9!4`uXy~5o4 z<(hx3RKR_8^@ZipSFiSgBZV>`^-(f@5WDk8GreSg8jfb z^7lWt?XN@s&$WHjyi#_>=Cq&E8&s%fIAy%=2}fkGEg!ySIaM~Lo@&0EkB?sC_hVV% zOBX3YL1`C4#6sM`W;}@2HVskI)TbB<)*{)x^)?b?t z$o`B9TnJc;4~|z~d?>)~4FyI1%)i@w%T|G-@AhEm2$yG;UC+^mQaGpEcJ4e@Sa7Pu zSGe8fkOW<$8T1;;U>Rkb9}k}t7XM8x56CT>opcD2{Di4@@BaN{@8lVKRyo9UxWpXJ zDJdzzsZIkE8YsA%evM-UulZu)_kY`G%Vfe*svkUIaWHo#({CfzCN|NW7bAST+KX(E8F0+`O~?weN|0xqCl)zIFqsj8$^RB}je;5r z26VQdGBfZXez?YQp4{*rGoqJc(*^&z4xUWZgjnmMfcvjSRj?2lyHWq@2qAv}USSUN zV$v(Q0p_-0ERgR=MLkJJILk1O+u<}o*PaLc9efbh?}q*yzuzO~jzbRi@jEs2G$e3oGjio?UCpF$daOT3O&if@-iGfTThj^O{BF05b$SXHm2) z1{62FU|I3KH8&HE3`hp?GdQfthP(m-T;Lc%sM0eq)FWUO3#Eg5KAS!Zc@XX_y7KpX zubKSCx7t#u1I-n|kB4w`+}aE9gsxoL3Y3p(Om~Mu7fP!?jru%jT zjDQtlgp?Hsa@Tu(cbqGJzesy_(GdwJaJ2wtASrA)P!~sROCmuryA_!3=($iSCYI&m!Ej2*weU30GtYC#_0y<}u)}eCHv40fC18aUyaE z)vmu^LCE6Mcbs`mW;S`!??)JwcumIa!<0=jvA8z-s>tzYj73-Q5&bthu@ z0oa+hJR4vXZdF^pv6kic$3>f_>%+tS*8&3a&^H`jt1uo7Z~a7Yikt`G!wj~yH7o$x za7TqI!lQ+m2%NVXy@_;={o9**ERmu^ZNXF^_c=)N0RGns^$B;2AKsf|M!K69k?tuq zJA7!eR)W~$<^1{Zr9JVqB|~>;fBVXGipz?)Jy2~6F~&sRfOn?N5Hj$uQ4!4s*3yYQ z$c+otQ6)fw>&8JON?4S^6N7CW!*Y zdYPG-U{LRDxL6E}4N`~rJK%wE0M#g321+*kdZLcZlJD2g{C>Pi%c8hji#*+tRN)q9 zjdEo#yWq`H$faj8SMUtNFo%nT(4!@`6Lp%1oc$SWg{0oTZJQP1(4c+;x#Cd0xN2P0Gc64lWY3`Jv`=p4=V(5%SpnsR%d}R zlLjAZ6bIfw{VsCAm!p0GzD@rvwwm|1V_)@*rVH1jHe~VCXNHCcQULi25i4eud!n-o zkesclY240YH2ivwh%LlDYsMc} zW3vqsXe!|6?aCnz1KAB;Bk#7;`Vpn)Y?kN6{PEj&r&}VJzGL^=YcafkhG1HQRUhtq zgy05&qJr(=#=FOy`L~ze3QGH&QNvC|Ljm*W0h_tMTQ6BIelal=VMlCuqMFO$zJSc% zi?P-8AH*p*G-z1zFr**q3puW5pSQquLMZobcIEF?C`8qOQ$G1LU^B#zuaYZu&ep|<+ra@rCJ-ty5i~jkLzhrFJ$^$pfnxk} ze6*JAJkb28wvS!dN*t<6I_wjj_wPq%!>RQZjx#$nCEy9}qgqo}|G9d9759Q0rNF!A z7o}J_Hg=H-3`+37;~4*Me(%_Y<^L$Ue&uDf!#fE*qEPPuQoc*R1JJ4kVE( zqPdrmqHeC-C_7F4~-)^GL6xyo-*HC{V@u{D1i;>ezXds0BJm5%QBEt&7 z;7)XRcL$0=5Fe7gLRgoeB0x04p_yyxm=^*x1MEqnk(q`>PId^0S(XoqIHefqT?(4% zL4*%7V4c4rC6`c)o?SqxoFImQs_0Aj+kAX+CIc+xKTawhmeGn+gd1V53E~5o5|N>y zK#J@g-$9zYO%4)S_YGZ#mXIicZ%+|?vH=YOQ(VDA7@P=#x8*ytv9YyS3I)B>LU(Bn zj{Ya}kW&bWBV4P0?86y*U>($gZt%lFzavRkqqS@b&}pm%k-buOgM*0430gK1MPXs# zWb5p@$3T!pQHK#kGx$3>Yd^tMtUSm>qFb|ArLYVUN=S`~7fYFmIsBQ7EJ(QCNuupk8URtSm1_CO2x30n|hjH-h6rC~KU5 zz0^-tmJuxqGZGX38@S8dmRF8Km`$kFNl)dMUtjlY(qd0v;I#+$-fAb z|1W=5$1gD7o(N7_+RFBbV2mlssT@v|J>{G6`jP4;;urXFStT*I!Xqz%y>zrmhRnjp zO23AFrG}Zav7M=agPrktD^~Xr2bqg3c8-f|dR&na>3rz#SFELHp=XpewluafG5hlp z9;Ualk2x4}{>MvBoVU_2cKGWO5=lYU&$UHzG1~!8S>pbE;_pvkpn-sALYMaz(&tX&qQ2c;&{Q)(%9j=lNoEN?Wl zeqBPcSM4VK{hIakZ1m*AcE--8*3MP}HfDAvW>yZY=JXGwPVs!&@kVw(`OI<) z#wCka?tDvQy5iKUhQ;OKYY$mQ-;Dop;eE{P9gMI*rsu8B8krh97zO_fgRoT((j_cvu`lvciS@G-qeAS06o{BB!-4X_7+&%V$ zsmH00Mmj4g@+Mo^A z25&&~Q?p}JtiV8)8g%vmaE$G{?Vd&BRiz&vL(<3 zRyL95J6ZsMM$%WG!d7OBSP(%lfw4PKTncfzBVZa}#2-RPsre4M?;!=|{7`aA8vW>D zSg#KeAaZjnw6a zuym;pigqKoKqR?aTjM zt2mKC|4i$T0uYCYe>Ej!*`I6D^dVD2b}g=2T~{jVU!zKblA_{6fPbKhz!V_Lk%JZq zHs@rsMf!!3?QUSfq7)P$@CC#h^5Kzz5rHu793n16)74O`yrg&er~#1G(4VcF`X-Qg zHz0_x7K+Yr4ginMeEO7*2Y@p{%|W&|V345UKC4*7k5MO>C=GdM%MGAIumC|6= z|KnFiA*86RjIy#fA##N>LzEF^k3e zC#TWLXazaza217xpAvtkv~)Hqa2}aIGdOci_wJ1h1}i#Fpb5A!$Ixs5Sd#dzMUU1~<7kz&~j zDFpIndw)-sJYA5`Hd*=!%58r3^U~stG?8?!%%#$7H1YRQ=K$-{@!GSr!Yn68{YUd& zoTiEiW60x2N3Qxn=QeE1v28|YDHTU*Y z&9m>mcn3g)O4NK;uTfVbC19Zqx$%Son-?AIX-Hfl-$Y<3{Cy071vUVvpl= z7}Jl(wtyeLe)V|Lbrw0Cc-XoEJ>m+!1K{BuvFQS`0CwmzSnbPwD6qC4A27&k;~Mz@ zjENWyaQ!;MbCL91xr^r{jn#RPa0oeO@y#F)hX=G3hm)99BM|WQH+l}tHnWn~_n%}?hOcPxsdc^RsuF zzE1>(h>c72Tj>^cb@eK00-;o2ob4MK8G&An{1PinvuPSSpS+4W_bu%yZYq2wD}o3> zIVUHlu+Rs=mn4>r8wXbt;y8Ij6wwQKc_=)I9TB|HQph$^--~tR%i#Ck1};9#$QZ!B z8P@+Y54APQNrIq3$@)WrNCO9A&YjzeZh;G8lrN3`nzjf9g!F{enSdLuIMQUC=I~$g;8RyK?e5}--4J(Gj_Xwc=l0w9wqQ%y9=Lesav#Br0zTTI zpLPGfEd-v}YL$IQ%t|`T5l?~DMZ~USKQ@Azg;@QW81je>6Ecy_q+5uzW2)#x$72J@ z7m-qiXLN9u_$L8A;g4mP&}Xns4|IXTf9*Fl^~Ror)bDBZ z0k1Ms^7Hd=-|mMtY0sWLpK(V3UJz&!o{^lG9PFhkYUeSqJo|v;MiSsf1d+n_8o`(%8btSrhaR@SK>OP(~2NDFU$NFoX3vKQle451a00YiRrC<-GO1r5( z7bHSUSmTiXtOue`rL%|YJyLgt-D9tB!ZU!j+R9D`?1yc;o3#i;*bCWs8a=`|N4>K~u+Iy;q+l6({#v8HDK4Z&3PJ2-?E$GP54RqVMsDbuIy z3Am>wO2;xD;)&0*li>JWZXMIfT61A??HKSfC#O40USF^k*v~6N7x(6kK}qM4c~^P1 z&|l&lS|$ei`a}tFX8hqh{zuy~`MR%R3mzv`;sC7Tr6*_ARY|5}QoE052^Wc6)WK1A z_wL;QePTzhnu}1KW0Lh-cXEo4bPM+f*e6&FxejVMIXTQ{Zw0j9T59pJz#;UJxm+2c z6522M;zKb6V{hgvHvYyHw86_@CAjp{nh<~C!2{WYZKc={Iz3DF#LK^$H8F1i!q2{- zy`s{yWa%edqL|JSL6r%0?yHwCaqmLjE#y6T;0=0@K(Mn%FBvgVd}}e4d#y2Tp&_MfILDH zD?p){zO5i2D7c~$lDdz*>y6n%WSIAux4eF>XBmr-7_}`LYjU2QQ2pc00;wfdco{m1 z`kxgXCpJgeQNq)1shxa3v}aUxkr+1P=y(8zj+!W_!13?>vkOZ-YXT<{wU(yL_wAbj zJ@x6-Xl}*8YY@YXJZh!Ss2B0cuy?8->5%_idk9-Rlro0uw2R5yNrQWCDchN;F+9b6 z602S=VH#dGMifd%`%D67;60eUZ71DpcIJ&EVdw4Hone}&@xP6({2&yyIL}Pk2&$(8 zs{)e(99XLW+|TlGg^u~CRNosvT>wSI6fmv^WOO5BXP3p$7jPK$FJJm&pN<^uCi-<$ zUX$h50J->TYX?j5(*!}2j=?!R&7hypU`a`pO;lkAqbFhQ2vY!>3%5kQEAxY%MyH%w zr#%kaKY%(`VWTt9cn}dX;0U}*dsa@x1MQ$9rN4M}sKDaQme*BfcVQ(+QakAl%MC-=psta8 z6M~HxF+(RF9e_HAUCn<2Y3PRvZAwz^-4kEJYPZ2o1eR~xwAd zS3liy=Up?mPS%u@de;E&1=(c+%8S14!HSqHPG5$Ihj3N@gc73Kvm`SkgL7P$lF7y2 zOuO9t7~X(O3t4r^B zoi`rONfW`5G>j);@%xRZL>3!REuE;Ql$%Lio}aNjfQ;u&&mZGmoCqb-47(*143Jcw z-hgJLv%3e&*&3@0Bj7EOste>F^%&5pjTxIBJUfA58}C5t67~_aM`*(oK@dQ+s987Z z#Ut;&7V56U_z_}HAl5ZLDGrRg+s3l$e@VE;*CbJqW^vL!^%;H-+!h^+A51dH^QQap zN|TOXT=W79x!xBdDj1o3P*LDf|9%i<;tcp{f)kbaE>7Hc<)htL(FkK)x3rG4#|CR6 zO{4;wAD$wG_fMhILZw-bU*Km^JMC)BwaWfZ5wELZ{9ci<-hn3L*)8KPtW{7(bMO+V z|Ni3H8xIxS=!3Fq*&L=|CN#|}I3}MziPS3#om7v%F%*7$-awdZJ zC)_l+JzV;Zmg+ciD2Wt8^Mnsvj`Oc3OFP|kcia!R_zJC`*a8VB%30hE4Ja3<^lhOS z%cGTz*5z!wXL&6#u^bkS&zV)O-&X%H3G45I9siNd{=IwUK;#mPFy1+GpB2K9Qp#fDyXH2 zGbtkx)xsmffj2d<9ra>Obn9r!C6*EH{9vM&`f_d+Pk!eZDvpvsyPuFU<0lb4!A{+2 z^&E&YGIagybK&;5Y(QA4A2F5WlF^d{W#~Zd`xZj2IcGw*%zP;8=u&Cy(A&N+lA#-Uu+2%{n zE1sR`Txt`5;5tICVPcaDW|UQas=7F__qB9H;Ob9cHWyZ%v4w{cyD&OSnX~c(QRjq) zA)Le70C>vO7rTlCfu%yU&;lM$DFuZeumw#1$gqXzcqyUr!(NvB3K?_fCR;Xg)}_h~ zWD1LWEb`QF6pa#lIOM_@h!!0a)!BWflv9azR-rwIiosz`>%cd>`T*+kr$8Uc#V>YlAOag?L@{@C|ELDGY@ z4jaf%fa)9K`;lhX`Q${NjK4=qjyds(cCOj(=#ye-U{Ho%5ZQ^QY%$laP2r(lxvAj< zpbBDs1c{~bV6*eXU-4ZL84m$>^g{Fs$)rEFeqG&HD7l2_&U;yvVKY1ir5=`bl8Udp zpPwHnI8cE=m#H&uA2xP#8wLQc;rX$YIPjr6#_}UzU&2>{ulI{H@eE38V8JesN#mzJ zLraCW?Z6{%CzJvdLu+izP|XpVRIGovoQMuX`c*&R3*hC>Y@gKNzrogb{pL-MM#nCB zqE*0TFJe~{LtTr?lfa{Ix+D$Po&4(e8~^bOXaWbUb;pl}zWm5|Gtn%(92M(IOV9 zc*II_F|XL$2Q^QaZMLE%&uvJOa%Kw~hw?*pQ*5l3?^HrBbo0dX zi~<=kh?n0gBqRiTE}C$~$0t^Poq(Z`_Y3uvA zC1~t_=j}ak;0zwOjLgi3;^;Z^?%sdwj_V(p=$H2RF`-BXpMf3`8-8tV6et2{K`Ppu zl8pNBOpPOiruG=2ZNnod1L_Ez$eX|~(&Ho8Lu#UUc{grsLsJBKD<^%7)CfNNWHyGO zWVX0t2O1;*I>fcUU)N-ml`{u<1(#G0I$-R9d#FDpqi^)a-PhqT_}stB4uIm~k3787 zSy*bk9uJ;qBzykgvj=7ha52F+bmMHP8)3(QH~1~~O?^jY0#hVQ+8%TB z7EC<&0e}I|_Vbz=TSyBrAt%CQUru%T28!{G^Ynmq_$g^d5XClD<>;JbA2L>HI;=_O zs~$&uZQ>7&HwJ4vE&mt#?@Lu-!`8t$Ik-_!9IrLn5%Kp=>d|dJ=>lwhd-x*fk~F^u zaroeg^&C(C3*`H1L+AO5$PYC%ptIISpwBT*jHTQBQ7ig3+{i|8(&wDo_o=I}txF1a z4RYbg(w7BEj$W%4=@y5sDT-Apq5D_qc^>)k7Ah z32`lIwbdq6d$i;$|NZ5rQ7tWXZ>CGH`TqT0f4)7wfv?Gbeq9IP@yi@T;>r@nd!iHiQfjQS1)ex0m0POLq8& zo*40n@PHFnLP#j%=GMJtCgw#M8A6JRv4g*$5~bduqoZ@&@8UlnCTlNzw=Y-XR<2CE zl!KzVV{GQb2Mdz&*?E5}E34ykm;D;jWC<^XqKCzqGiQ)5K7RJ+6ZASSHuj#Zz=$2x zH|U%p%Mq25Qi{zx@F-eV#@mzh0YVb^;FK?`_C?6;gS5&>YV}_xMcU!xAp-+OA9tC# z)gA+UuNrQ$5cXok7@(g6N_kztt%^dA7FL!Fuk$>r(|y>*QE`GK08`Idw=@x|!98^? znHc5}S6C=dLM>d0qT(b$oI;mKq$*?0{{rLi#O5IHpUaoEA~8GDb+o*)q20*`de@3t zELFe8!+b&9oN~jXI0CU|K4q}?|QbX)(M2MXQ%<%ae7w@0UgvaFnEI<-(|k^_@L2eA<~uPWUo&&e=iulhiYMNXO(B?nj@k2 zQ;!$3%w^@ALJ1HF|2a-Wom~FAE%C?(vnE`k%%NKj-6h~JBz{z^+!Wd34`B1*oF$R3%*ps1sDYOG!K+OapuvV9A>p8LFCnVcu2xx zN|&g8?ARpSa2qA8u3x)Gy-CkSW%Z_we^#kpci6?1{u`DTZKFxU`4{%Od-mjIXRp;R zFyZ+>qby({=|{TkE`_B-0=kd;qY3y&J6&Xm03UH|j-VlNZ&1esSklF` zp&zGE90}Dukm{fG=PbJ0aEpZ)0fN4wtN4huvvWoPDlr>2?HhGp4htZ89{AzU&+f>f zz|r0STs}Y_V#a_MyCV&;+fc=?TG5TIJxSqk>}2Vm&4kF{+`aqagsY$~9`!Qfh>8t1 z>H)Jv9R%GL0TecB`cyn@T-#&0{N-qpF8;GYt=u#!KA{!}rxMa+6Y5*Dn35MhKV*C% zqGc!I+|#x?PkAbQfS0lE0k}12sa6G{jMf0&3dPP^8aogb1iT7>De_}K0Wv`RjFpRe z1*;29>;PBQ%)4E@3!rVp#l#S*Crl~r`iAi);c5O!C7omGyP{?SZ|WR;aX*P=9T_Wc z5?{>|4stQEx{@0)k_j;zfvt-jJ#p2H&oOvQ-QWK8}C@3hP)K|gALy%yC6&I!#xOjO3tC^IDsvSM( zc;t5CzffV>*xRSc2sM1jEa2BRSs{F*RLbO*oib5@i?hX@B?^IWVdsUXkehT%#a9$n2p&47JmeeSj`M0A#P?%9w6425Y^gHEC?u2O+Z5|=mM4dn= zbQ;~I|M{!FZpWtwo~7`oU(LVydn3)W)ZeIz(MFl<-8+TGZw8(2P}h^6=&cCk04EQU z9$yAt1742vM}4A_8moB1Fusvf#pQ;H-w2 zR-@ye<)ly8>q#6t@Vt;<5r(en3H*@-4n^hV*f9g=nvxp;9e_K7ASjRkP8LdFUwI9U z5d0m?u7+_ee)O0I^0-d2FR`KcjA@iQ)6lKqCWm{i#b<1-y}!pZaY+mRxiW@4+drJ& zLcf3Hd9-hpn<)Y_$(KktG0#F7%0`r@j`?2&qz1_y>7snnc zS|@Bz+?6cIl9 zk!aX|!f%9Z?C})@ye)ZS6u)%8Gq_AV5O10)xm9t4WGP7`r$=EcL&zF0Z$-onO@dv^ zMlu_BEu6{lDiR19%cf=UiTI$+=G%V>95{2V`tDk)sX?V*x`>w%2=4`RmXw%iV{2Oh zJPN=D*{AaFEyCZ3+_XAf=UGEyiU@z39ee2n`AEIcu}238eJYAEY*(ZdV1j7IDx`c+ zB@rOqdA?idjSzggSnqX~`p9a6m0!M2kMo6-8E-IAxxRCjUsE#-)^3X?3l*6FqbK`n zHE_5C`Nq(B94Lb5JQ|Dty{ek~y#yTNx=ljPU6OS7o=RyIZnC$;EN9}QU%xI7tQ%Ce zBk*HVJ}Ln0#eqcjK7frm=rIXSA4~)q+5dP&-y?fMJOw;#r&5Se5LEgE=YOKz>BbT4 z8c0+}9XF4o2@-0v?}+Gy}0KnRcPI`UWtC zKxfd~9Y=yTj==f-`g(fji-Z5Ij_Xd#T0D9e>&hdq3VN70OYxnRxtTA$05h%Os`0^z z?Qf0tB~l?$z++}evl<61p<@I;1P$XTsw#XxTX*0i1kc?N zqQ7iWRzjr?kQADe9i9KIT7F8(r`=VtT-#qB`$(0zjc{L=Ngn!jAaT+k1Y=`-ex1ml zl}FbirPQI4zAByNUtLpw+itqX&FQODY5wg$vKsd8(KLvd@oEclpfhRvGU*SgJtk&x zv9dOOss&$)HJ4UB^zLXc&4;l@1)Kp@IP)2~6vaWzLl1NUEH}`B-qn+82aSyzu^Hh@ zp;?D+~Q_;Ix9Gvt?-tr04(rZ#Xrw2 z_g1N{_T!@MhcXT60Cpllb^>ewIB30SVo(x@FpgA=eIbF>F7F)N25F}`D+RQ_>4 zj;?&W3*(azO*OrLkMXfOQ9L&0=0)JskuQculbN*dp2gK0H-6$%F+tQb>_ez6h-3s1 zwDunUK##cAKy!4&gpG)VxZ857)zT$^Se*c2#}TICcj})b^XR>OVunq4{9()9cQ+OvmM%gJFNK{!K7$;#RteH$y5D;2{vz>s~# zw}IFjTu4q19u|2iskdW(2T`q{3K;2nqC_Ho0Nh1|l8S}~k(=PFk_ffI;vRvah}xEx z782j^W;G*+`j>59Y}zLG6cehBnNF!oMsB{8Hk0?_ee9kb7W)_hZId(Ow`=<#9XYs? zncI~|M5OM)WS-ZTecM-ykpC3yBIkrR6HPZ!ziWo7uErgOCq@Hi!PC6ES8t(AsChkX z7YTpRIYuNE_*AUtJbhW^BsnW*1c;v!b`e2kV7ef)s>ZSQrp5DypB@MjBz4 zRKtk+zGJ?=z5s884G^_+g{5a8S^$qWK^TbFk@bm@o&n?ZQ%B&c% zw~?0)KNRi~rrUeiJ@&qhDq_Yus%O8cj!El8ssPiWj%s9cZ+RHBnesm?>~2fI9#unk z*&qG?Xna-$VPF7B85?8d7d(?#L>gyi^9y1EWlZ}D3Su;j2A@(|6h`6_@^uB+L)M;5 zva>8^`n|_`n)&7iOXnXI=|?WCr5THn?Kqsfo$=BPe~E?ofRdtFR!jqxJKO)fplC>^ zlP}gJr8Kmk)uTg(;T+s!r6;GHmp&zd9C5Pr1H@kwMeL}MknDnPWs1G-({->0u^QB6Z;}@V%7}`CGH~J13lgU-y ziQ9az=MdcBoi(g~&Mr#F-a!L86Zzx2qwBmf*aFu__cQNPQ}W)WRq%QgWZ+>)Z3>>p z1=@pds+r%s_=dl4UlrapLF2R=AR(N)jmCg?ABp_^UPsojlAANQqkY;_4^My5PMmzKPwwc|gTcImftp7WHHeAp*Lq9+~ zslkp~U*zV_=QS)rg1U@Ohif!REWuYehYpu?8n9~o_X@X26<0vDd)-!Ry(ZfU{#!u;-u$Pw_-`;EJ^zSw8RhHMi~EzssQ%UzXX04W znEQel+f-kzcvK!mz5Ls$4OF-g9EbY;maB$A_^XWhlYc7pR3Q|E+8cQ~=l;C8yBJ<$ z$TUYw+d6r_;AyRvyY{x>%YURIhm)P5H^|`riHTK?e@}U1mk@e>_fFnuHrI`{^;+pqDz)3c&k8aQ&RMX|VX^x50m>$0VP^sC*QCG)L4 z6h?KuVoOkU^i0ad8)DZhJ9!6KwEG!@q{_bY+cFoKYdNNg-u^H)K*P^xDjHrU0F@(6 z7hI+UlDYNm#pRD@+y}`)8f~@7x>b3n3TyYgI`l(-jxC1HHsuG~cnjwt>W8}}=$4hDj*VkD`pHnX7&Uj`f3{XU47NeAJR#L5b6Lx{SskYc6nl6z&N&*go>R12YU$&cFvGf?$$JW7^G&mIH)}ekwO+C1*lu~Z zh1)ek(YO@d(y2cx+Wd?D%^TnB!Kec|$>|9%QWpQ%SFM)|un~keP{ZGwTkH^McB~;)M zTfnq!!1`#Pwt}6)7dOQF&F8mBWty6Kn?|?f71cUfJHBo{Z2DP5TFY$rWb4et^^bhU z=N#w)_)XS?@vRII734qPkep+quM*6l`F;0~Vuk_<+Uqau>El^ty|9dta>U|M{{?TJv}CpH78sJ30@;ep5E#I~KLZ2kfs*i?!;X zzASdf`b*NFwTJGx1@g%oR*%iU`D)(ge`okSF*?@f&bF)8Mkv{`L!)N!LxcTZdbR42kr07tr$GTo_j&~ z-A+E%@Pc>PQnsZ#MXhsiU_VUr#m>V@cuz-z^t!!I)-#3gD)PRyb-3e@7&be(WL{b=_xpy&O4ovJ@=YDMIeRJeOk!s%N}JR z-GTL-T$|V3W*Os%99-X0N&P)oVEd8l&zo4A>K-iS353n5@IO>%Q2yq#=`XbK_&h;m ze8_+HlW4Dy>4p9QFvtCz94knOP*LE>bh#Y}#(-!ikbw~ygO3Qfn0jUg>IEc80A->h zA)XuR4q|eW(KVKkWFzA&)0U;mKKbeQ84g*QX6Jqx?Gm>V_vRFZb@9yRv{wp!Wc>FE|9LnP&2h#P(&iOA^z;}=$VAYMmIukR zPR@6HwA3SDCJ>_q3JMPFnWYWT}FSTKgqdiXJ=5t+v5L(ISp)ael zNM!En7ZyX#Av7D*{FM0*r^>E&$$J{3A6$NY!`!)E(a{Xv=}q5y=2DHBDCIFc&WUkC#jY;gvQR^^4Q1q{8n^{ zIisvSyw9xY*1Ybw4SRlI<;UUq$2@P3<;K^&U)sLz_!ZByyT4au%Suf5X6*XJa|1t zb%*4jN4NFn#AZ9k+)@|gw4{q+Ih7(3YadX#nx7-t(_Yjlw}{bX;Y$eixTLr;znCri z;0+Up&~kJBT`l`k+!%IuALiddL&dFa7A~>kWrkzO)wl0g%H&Y8!n0;vET7cp^+(wH zDMa;!%u0DkH#0H@`K{y_<0iK?>OEbZWdf3#UTrNw>it7fFNL{&r60L91uh4gokfDn z`Bb*;zi>IPFsb(7*=-1J1JCj1^eiw=NUtJkya-;$Fk+@XC1DwY0oGdkew#JX-XhTY z2hz8GBS-}7u0ZyDs|iiiWp@8?;U+%G@)_pGB+*pL0}zxGZM?fsbGWY9DX8`l}u zCN8mjaU!A&dD7QdylXgI=7IPmtN7-uML!4vqzl@N8{(GHH*Y>d484)uAkCkhGD~dq z7CrxDq<~yOyNA>WRqVlx)kQ6YMgq2=p>F2p`tY7SqE!1Rsol8hDJ{$0i#hAe>1Bi9iRI!<`U;zxL^CKZ;Yj7c;EROLZ%k$cRYA-?qPu z#riavt?~~l(#p#CBX50xvNN4 zPBZ7VviXBu<9n9a8`w-T~Fk)By3S(EjqU;U1sRj~RwrAGRC^vR}Z zw)|viep_>WZJ8$bqMM?%@}t;eUcmcrB2+h1IBa@r?)G_z-? zuvw9+p^~2%X|`>$kGop!RGSTBb=;bdvA4>ct5?3EUv7wv9Z-I$K!EYOv^9fH(`xCz zv>3Mg((8A^xIfrPtzAV>8QY%X$;b4fzS2pU=>-oFln7m_4~e!&m2N zm({V{v+f_`<@Nfh-(t31hKrpy@UmO%#n#nK%yL_T-A?KLAptfM*QeiuE#}BGdf`9) zBm>pme<*_g(aScw;&C*wwY{HB`b+6-S`GX?>z%#psoinwr2bZREFb<+sw^96vo?K* z&Mr&vD0UQIgpdk9WPBRjN!F%D@%7hQb=td4j)eT;Yiiw}eY?Y}Kr2X)f!2FvrAy}R zy*$~9DJfhpts6Y--JW{%f_*?O@AB5Z1Ee_3esyl33?>y+c| zTZnJwdko#5(WM@dunWJaf;a_E>Cqf~?{YhWO|bLiFjLS|bG_~#msWsHT&td4(5}zC zs&g*2NyL3If@25mtAf5hc}=AUg2H+2`74f-iPuZL&xn>hpZfeETZ_$fvizPmHfKHi zESD ze0UZOO?31v`vTXe;*#2vSNO&v)i?9kt{057yO%M2&n!0i#3N5bz1PhrTIR2;(KeB< zreTtiucuM%X0TlBo}Gj$Oi@*}llw)@&gIV~38;Y02-u9owv(5e=ug#Z2S%qUI~l95 zNn)Z3%5gn;(c!M1T#szl%M$kv<}F%H@?94~*nhV?P-rY?@~69gCi^Puh}yKj8Y+hR`ufOcqIt`=T4Dw9?lAX( zn*>4H=n9ub=NNO*7-R_q7^b~?L-Mg2j;k6Dak=ru)pRdvYhgJM4Sx{0w0J^e@it^j ze76&_;R{Bu`V(b!#X8uoq! zdha9hl_14{mNbNsbPDQI?fb3lnq#;1I{Vt4I~m3GTZ zrFm;lA!}Ck#jr49d|c*NG1oUfUJWak*MC|vkZ?2~+j;h+lSTBpX+_9K1lpX%FrL(E zbon?lZkDa_`P%iQ#Dt$skYHsbjE|dhnQYblMmJKge0z@7O5Rc9Ep;VxNoN^t3tN|Gq#hu3@Uf|H}EZkm?Ms8MzfsU@AIghEqg_~yIMLYLfvxThClYezwK z&rvNNclCo?{pG$kv26oZ3?6<8SM0fyHdwnmFxMn_o;ok{FcloEFE4K&3r(EhC4IkOZ8Be{FPmGNZ35bu+2Ji}rnFVCIXekj3 z1~u?3JTDl+)<`$0rhzO}2=Vu`P~cI7sUsVO_hKg$_}`VD{;G$(DbdIU&v?O6WRgOi z0T>jby>eoT4XC)1+Pc5T`U=S#b(VdFmrK069tB-7=Fjq~>SOG>e zB{CQa=pCslQBWYkrv$t{j6^UU!QV8AJdcUbe$b5|ab*UdH9#NV>L?UsMhS{z;O;&_ zEds6DO@wwQCx7P2WBhZvh8*kKW_{|)WqqEI*Zo6ZYcgHJ>rJVyIF(479a_mREgE#o z?P0&g@XMX`T8`$ESqs}5cnSkI%(#v8()ZxAoryx4+0EEkim*JZB6o!K z5+>(x*vJS&EHLbv*C6E{)O|SxIvBjJ+-DvFV}|_*!jKg^AcBL$8yQd${~XWtJ?5`g z+;p@QQSJJ^Nza6$vZO{qTS>zB04fq%UO3-*H9payDwr8=a=}!Jnkd{q!f?*zRi@b{ z)%*0{hH|{~ABCIzDo5|~3mSZf`xs4558slYsORJmXM!pw)TSV_}Qlhj= zYJdihjo#pIospCYEkfo=RM6=n;r4wV-1U~(m0~nx)`WW78e@SE?Bp9{qhW9#sw{c#eO~%%C})IX5KD_*xZtZZ9A-kg6gyB%>$N)r3Da2+=jOz( zZK(xMwES1T)`h^$M%u^pC z3tusZ5z&PAib~uq4OLe!x12%yEFWpRdA7a|82$68CySCjH zwzi&TydC)XaIlv;*K>Xr7XxENFtCI52^hv|i{SFkBS1$m_h!db%2m^bc!fIR7UHMI z=~;yY1mtHAo9jp4MyEg+wua`tHeIdlC1()qpq)LJ9Dq!Ur|!RI1aXm^LzuY9|(nx{0O z_g4^$pgYsC<|<(kFO5;;JK$q!K73ZuUwJu0Ca`Hyuron%!EvjT@ji10f-S{}q7-SCHuYu}KJnNcUA z3t!3}7L8qxC!bxj(N-wEywPvl>J67>Vw?&rRO<6|ua6ph-o1(Q|H=?qs-?>+AByT< zJ#<5Gl219fTxz`jw7is1{rKV&hV##VrVV?D`d?ie{5~hbd9UnF+L_&KTXSC&C&u-%U{T@vb5Q=<+WZ)T5R#*STz8Pj6*OE>& zlJEe@!d?V{DY|aZUlHswRU$I({bxf!?XlBpM}|Ddr6P>ZYv6N1oInALUGTmHg1{P^ z`^$zP_{67yLgZDh41!i{F7_T0q~i?FA_PF*kg)73$pl-Dkps;v2tO!%&G7#Z2QzD5oHf|Vaj$y%&1 z15OUqM=O~yh>jyBe7Uwz*-Q{OhG4!WpUla+M9R6EU0wgSr|;JLp>R8^r=Cw1c)cnV z7HYU=A6Gq9k4_S6AV{}*^UeLY)BGHUHb_k~kmLYB} z?cw8ptZi-{MJHXi^=ZQEq+uoPR88~i9f3bqEwU|a$WP<9BeT)2=nABJmqy8=7!M?A zW*zYf>VMrg32ziJ_gQJ6{Y^td5{7R;?8*bl$Beo><*~|rRTup=pR}8*jc;-%cFj&3 z6u32UJAv3+KT9k4_mquW)C;CpV7+SoB7J7Cw7ZGBs72rkZtmklnF$#`O0Uvq_nVDK z8}knc3wJOcK6P{6y$mApQqc<^jKUry3&H_HCl-Mu7X|$*d9E zq_;)w_Cp&QE)&gCvoo$+YhQ+$(4O5ni7W03&hAs&skcIwJ^xoOpR5**^acyky$nP1 zfUp><D zRHg7GtO&x`P0MIn&7j8#ml&(_#XHaM2_?F(O{pqf{_NrQBBB=VgJ!!8^B=WxlNfe% zzc`oN;k<*iWGh)SSJ8Fz=ctJ;^vUsh_B+Sh%gi-amnGa@u;$vlW8PM8?91ABX*qhX zbJIW8%?KTl!)3b%sf)h;)Isl&=B@J)>2wAIJn$qcdppAV(Noh z44r4#YQ>+$29-{$^j7FGt1BqIt0nDgK6p;#3RThDEr(k=s7gAduENFi^lD9_+qaDj z{3Q=aw^D_`=^&^gz)m(EA&N4NO? zmrq54bEuA<7hGYm^Sh?^PQe{%T=Pq=b)G3L9p6$SOgm3BC!35!nmk))u~)}hqj}%C zkrNz6LwRq~s1Ez=RtRQaf00o%_kG5V?2z3jOoR>Sh=D}VexE@E@dI%w%Lk754}f%E zP&9Y`E@jCPw%I8E+)Dh>xrrU^JMw5*^K)nNj-M`PF-c7@ZX;Vz zM{g~3u7*Qn(&#rcoUXTWk7}B%igxT+GC(R{y0YdCtU)+o6CafsMhp zm~s>zOd|G0?yZ^}5+(@I7MeH|t}td2PyO;fo<*B+INY~(<&l+)d(;K*+E3(uwbjmI zG4jxOcf{g^qD=l2v&qE+TdaG`@5dTTXhvtttXtDxoBL)Y;*C%M1zevW3Dje*oId5NLK0%Su{coRq>0>R$AuzbbaFD zOyT#0GH=r)-+d)uyJrxR8CJu9_%o^gdtYW8JpDnL`Qfws(Jb)uC)vfpTK+kjP_^ac z5Hl3VP9320Jh4&Zn6LvpwlLaPd(or$XpHR&r$g z&N^{O9?Wzv8r`E7pb+L_!fX3fKuPHY(i_H3Xwmsf9N6rnPao~{>nClG`437?&CjTk zVH>SNPvL#>1Fjj9!yI>R$fPTWWG5uP6lUgY9s43Y6Y7DhvySXSF4t0X0f z)s%Uwx3|Sz;>9UFvt0LXwvCDltwZ6WVR6Fk@5k3XwGuphm*vo9o+B;W3gfqx$9geK z9DlhCV}{(1W%Uc9NXy6+K-P|2h6+K%VMIkT$q5SmT^nmZXest3Eh@ZF5MDHoKI*`G zde0Ln0W-Skgiucxi9J(Q7s9@BxOcOY&s{OS>1ZW#m&%=KIOg58NRQ&&jQZ4;H^W6| zj=Rz-^U)o@Wptx1nBK1W5p2Ii+#32HX<^~omn*^h60u?>KaVXp$o$PG^TRxPQ=XUY zn(`P{e0(;FYt7C(Bl@Sj4UF;`dkqdoapiSrAP|a2iMqG%(scGC`v}W>9Ra5#-pSw5 z+1Pl!!u*IwPgO7s2ykLqK1M$bg9b4_1nx$hQH-`RU)P%F4g29cD%|`Rz&XuJN0x{v zelHVXPxatgE3l`X_V#bu`P}t4r3B*=O=9yC7Z)ew$goTkHYjx8GwLD~BCNAB(n!ZV3O-lGD<3*hfpJQ6M=y-R%!Xc}jcNjoMeqq>l|E4<&A|GmGjqHQ-VL;Db&{@nB4+swQ+O7N5eWSo~gX zWk}zSycf{jL=Y~H-VOSzl&vUN-kRJbHFG($IOd;wwRS)D}`^}5Y*yM8eSzl^6 zV$qSk)O#X`Z4})a0ro%zK!mFy8rQl4$%%g3B`L<#7nlZ4vl&ydKCOJVQs}z6bvIU~ z{J_3jx5p=1L~q{VT&t3s?ZESR;1D&XBN%YpqXU{dk^Syj^5jMG)#V-m>B1Psj>F6J zYn|2OEgMNBq<*K%7x_tX8i$1r zKOSOa4QDZIa?5s0{Qj8LckbydIrymiLN@Kvfq0l5{**u`SfW3@FP~?=*jxSO%fr2U z9~uM}Ef+w;DP8NMbl-nxUfigW!%8+cPXI2 zQIT#P?HFg4aBaW*z-qliW~6OR&aY%zx|mtNyS2-#Nj#gsf_&ud7w>I{Z?#VDyRW*D zWt}L^4@3W3sXM!z-DMa2qUUy$&D<#z2ut-a*fCV#ukze5t2=eKE0efFBh&!L&gHR< z%cn9=Zamok93#vjy~fr#+uW>_sQIl={@UvYCx?f}t;Gw6i!bdu__BV#BuaFS-YKS{)}HRQCF!3qSiPR5-(HV8E%C~q?Pd_l|qCg}03 zZ;QkVPvtB9c1xnG^+TtDq4P(hkymaf55;y>8OO#xre7c87x;R)CHk2;VZ=J33}ze> zJC>Zx6Jo@GQfya0`!ST&x7G5<%x&FGWl|^1gegQ49zK>2G)B~w#6TQmO?YDg`p|6A z`Xk_%_V^%e8Ow|D7(jh+@Yk{jDq}t{D&<_;aut~HkgJWJe;(9s#5WFN`~zX+M0gE= zdko@3?(}`DqStYBlMvMq6Je3uRSsx?(6wNgoQB3z!%x%{W3lf!{Xqr~#LZUk&()#R zj${Zf-T6~v&B4CcBDy~=q#Phk1n(Cr`}l^uZ!i_bEn1Txc z1H!^)PEj`R2-h~#T1SO_fsI+C#Wl9KHpMo(9QeLdH&&f({ZZQ1H?mItT_MKuS;jBB zBr8;&OBJN8d$-!o{Q!qx_C7P+jU=_>rv2sihl)h^50UrrlVeC*Nj>fdhO@SW)~}9~ zy$ty--D8EzYN$@CD8{i)2?qn|W1a4>Y(G(*m6Jmiguu$N@cjSXb+DLlJtl_8J3>=l z6NT~1(?_UC$f>}yko+r*CXw*STK)dirtN>LCf?BhTo!FnjioW$3-^axxrK|SyPYk^ zl?AND2ew1*6HdNZ?>s187~{sbb@O%iOtZ_q5xU`3xw?mc3vlPgshmhOds)s?VHJ2^ zkijrJbH6d&+H$kFQAN!=r2ZJS>M)%luyM?An8Htm9AikF$c3$hMa-?1`%!7jSE`B2}5uX}TZ zdKLYzge38wt-B=X>vv~jN3>$Bmu}9c*~-TBtp^%qD28+`fx0BNIIgwyD>y2v9xVPa zI=qwN+}=jjtzmMJYH9*>fj>?mz_%Uwdqepu&&J7dZ;u|on6mJqBb@Nb?K2>z46%#Y@peFF214+H-?KNR$NHxd*mc0C`14QKaR za-YpC36323d}pGPwWCikkCuM>oP6BV&G8##`BU>c$z9y4>+F9WoPH%8@k?5z@bcml zmhW;O8DD(sZI?dn{ks2F;Vn=jGIGAorAIj{yJzOh+-~fcE0cnP{en@h^mN{ZcV5N+ zhqAYfsHltvmsIs_3EkP=Zz$!Bf7 zfA=|OJZJp>5%?zp0Q zU!GFP`$zBDr#OBg!2ms-J4nU4wGtvcwGTBKGzeHSNQaGOo{i!*r(jn3D#9+mZo0MJ zH7V2Nd2PaTgZ}tTV3kgat@3OE<732fPS39u)(`#Vhpw1BUko&E%tLAjObt6LPOuMJ zek42TkVYv&40Ne5GzCjnGwN{dNt^v1o!PYtDTS6O^m-_;dcX+TNIPla0;5OY_r~)6)lotq{zsXk zPZ<~Q`J?=gD?jc9&M@miRdke z{tDV20Ws}QwxZSf2v=NHLxWr%AbEdNVFD-Cb;levqbVqd1%;4^S`=UmwE}G-<>d$t z<^rgC(NI+6(+KYSXB_^FSXhR;)_M}9pO0Zupk`qZ-4M#q`&*ZjE%wwjfUK)0Tt4H& z*ZE>g)R6728daUL>F3C(u#>7PY1CN39}m!AE3EQ%L(Lk>+CC-)$D;#G>3Zq2=)5E0 zXGF1RVgs3EaMr|Tx+w=8Sya0oPCf~#h#qbf<-6U$W+iVk5vV$bZ=N3-AgH= zcsjd$GKI@dX_8*o5|D^`d(N|kmIpI9%2W+o!c!$bi4bO35qpO#m~iA?o4OP-}bQ8)gRi`wmnu zzS7}V;p<^nNzZyr)yRrYr_|xKBmlQ883{>^Vapz1cD+bU6p6$DzD=-O1A-XfE+I+< z!K9m>-h3#Y5=_SUIL5$F?gk}%0Okeef%ds^|KEHDFh->+nZSIeLlBP0 zZ2~R0FzWsT2)N8(CzAtiQxFDvARqubjU%6_(}jnM(eqXIb7wB%^D7RyN|DD^7M|IOVQLTtCg#ENZ_NoV*ap|X!rQj zqKi*cive%B57JDGuK-`H)ko-+RAoO9vFR}%8Gzb4pkLG@wox}Ax+Lo?1hQa|l0m#z4{J&|pIN1GT02w8*eT z4lIH}60BC|S;z^&LGSpWTnv9{g4|9!f3!*Zy(FcKh%bhs@1!T*dTu-Iw$kYp_K^t_ z`{{QCk*`TfmT7EotcZm0f0lb|fa!+wajhMIq1}I-y)OjL0K_?XkAXs*aggum5!MdP z<`p}K`RM7o(igN*Y>Vg{k0Fwy6x~X~0gi&MvLx}5RyAz20*D&7j8>IAbN3j3 zm2VhZk7LW`w4kg&hS~KQ!JhWhXU~8`giptr1RM6;=6x=UGz{s?x~fz|Cib_4x8&7^5ME%XTk* zu{jA}D|%1Y&-%F8FiiDUO(0%NZd!BW1fryLI4*g8;H5I)Nz?C-xqfzMZ^y#I;*Uk; z@pRw%JTb)ivvhQd1&Ch>w-dBfTzBf~J4LM=B&iAwL;s#9saJnQhcXuJ%wGr-_Ia#5 z3Ra9(R(v^T4>t~3R`1Ia-Ge7zLw;(o#2O~3set3o{A{a&=gbC8=dAMVy@_zeNeVbg zl$^U^6ScD~MJy%;Vp250M!^9sOtSQyoVO(7SkSJEnW{{pGA-9F@+3dNB=E0oztF)w zSllMNP#`fbtMgc+MR`$H-T4U^9Wv6=<|0oIdjMq~7%34JOH>z9F_J>y0tDOf0{VM~ zk(wT0>`=G>57|2fDwC>KQm3XyHYG4=v)#lyg_zjKsT@((`jL`Wqf%Z znM2&7lqPE=jS-&4PW9(*(vN_A_xj0t@@kKrdtdxI9ZWa1;oQDD@C)sx_QH77`*(Nd z&uzJo&*N@Py~5~WCtGgJa`=@Ft-Iplsw1?eLg9v?f!n~2#VfpUNm&Wo9~_q7PYIX#kXFM;_cG71 zb?}p zs#lYUAfx5tv~ow5@{*ZK}cJ-vjFD^eQ<>~9S>*m>T3%EZf5ohEbs8vPPy zEYC}fNpzGwQjzRjzAmxUQ;@j;AJggl^2PK}3~^*Bg-*U!55Y*dg_EHCwAy{7-Nccq zFIw<>wywLb;OyA(pO?N>{B%^DnKJXNsAC#&T`iI552@6im5G1vjt$by#$wyo>p#*o z%>KZ66hCD2^W1fQ+#>k@_DK=vP$lp~j%4v^v!xtu{8h)LKKVOdB#8X@v<$fV~D_0js+^l4{z3SSXB@maKmz89${8X{e`Y|SR;UcIiB&JeV z{{{q2xB2K9FXB}K**>LIN;j-bMAULQd&!a9iOuzj&O@PT>n4OG{~<&dkuTLjBs{Utss1Xx*G+;b3_}T}o#!HoE0BrMC}7A@H=FiJ?zK639Dr!;cIM9a7!ZPyp$Bij=%l(g6^Vz_ys+4&C=^1L=d|fmcPV{k8&PLZ( zr0^htbmwLlt{`j_)yS)Wq#&N%PBq$Or<7p{t6cUXO#&)AVIdc4r7bd#i#!d5Mk0%b zO-C{+UxbULtl`NAa22pchbkkZ-Ls8zTb2cS$Ulbj_U~Mx|C@5bLflwj7^qnnd*vUS z{v~WOb3=zCm6d7qeXx++iB=wcDH0{lk}BspbX*;a#5y`AGR{})AbSB^|fG&x$lQJ`BC|d>axp{Y)xP_Uy zzDDIFZpY^)?)xT((eh_&0we&uB6C&poDnL4j+dMlz7!m4la0Pl4R=*;i#iH5Qyh}5 zIcXj|(rFnSP}cfNdIed=zXz|xRSJJj^yGp3W%^ACWh}Y@FCCVkribMNu>csv{)s%z zKUqvz4#8OXE6w@JGxdbHxF@2|KjSW5Wz6ktJvX$)T2P1xP5H;)FppcOs`V$?`CA7k zb+$+9Yj}k-!pH)qgzA!IoXS(EwAmTS|U zAiV}BkEgyi$r+H@<{)ilI~04mH0-xA3aTP_-)JmSPQU-Y&}K8 zg+ZZ!cSaU8q;N9p2-T1f=uYDe=oUQ68(->fK+Ziz4e;`mA+XDHISBL>RQWJ#=z5lm zo~igj`*_Y6%@FqH{yp18s;67t?;N%3f0c6(I#}^ILF`nE&XXTw3SC-+(?Aj#|<_Fqeu*X-jjUKPQPa(EL(iBD^$grNBOYu z+7Gx_$WX+0D=*T1SV!T{N+et#7a3hN-hIY-@xz^wd|hvWno%T`qUSAhY7DYFF!N`Fkr{$L3@l zgz6|IXA+OLqc|#ybedV7?3xKg2uAIYl;+M<$C*ylUapj|jRCLtVs}f1`AaZC2et@M z5;bRna5)pl7VgrEPHLlm6Z9-IF_z){^+J>U>pzyHYW{-v`Tsb4X})TA*dMDnBNnd# zn0HrFAZcx6d?MS1LGc&lK`^={NB`}a?b#bY4ATG_#1iu*uKuJuy|cY|_1 zb-i*ag|ha%a#@PC!ET8hll=T}Nacl7cq|=pVTca~X_j5)@2Z8Ydh?T1jE#e-8|EdS zd-QW8<*Q|ca` z;7}bQzh2m=)K2?*5P11m^*2@;cBr&q)f#8DNQ)q3x&}i3yyM(~iYegRtj_)96Gy+} z=mEyvu3e-XUFJ*4MMFm{>>oZl`LM|;b*EX5rznbFlQy0i;P>$>)4nc+Jn#0(kQyz8 z^X3ukMt-GF!yxDoE~dle$2WhpOcET})2h(Oz8}L2tLvZx4h9ay3Vcw22KJ9UJQF18 z(IyzCHodf-n{LwdA-_vYWgKx{q3)DTUR&cueBgkNkOvHYHe>U)@I@wd8c3^?ezV8) zGldBSLwU8^&B1=o9kB_%BThy^xh_zjfSj{Nz(tK8gAxr}U&32`93u47L-DhWb3qIb z(?pA9~*=nq45i)P*7$;QjnD9fL z+tyRudi0PbOwcVUuRlF;TYS zu5!qd2wb6?^ZDa9ME@T$tu}e)LU?bIKH9O(OIcYP=aA<5W6pbPgBlGu0*>nqq9gnP zYOUTQQp-`u8Kvy8SQPx$X|#Mpl9*|}u`?{`UyqAnjz>zJas^qN5^;4Q-bCadmE9o>*orLRGd#i3^ z=Q%l!g!CKP#nLS>Vh*U^xxdond36!m`V1y*4`n9Frm$%_ zMoanbXiAHBR-G}EqJC1xkk>MIfgo%0n-nb^m|V7N1JcFq-BC^NKimYL?!gSX$3!VU z+Fd$^>_`~(Nq26M^RSSWL?2x>x?d%xA;CeeU$W>1x6_DOx9Dv$^bm8zeKjdJnJ53t`o7slo`APZXxL4O-^AY8V?i?mUFS z{2uq~s9C9`c83G?XWby8Y>rQ@51Br@2<0ZP_1r2C}p(l6R#&4P<=z*C4DIS~~Yk4GzgK!#c!7L%FygFXHw^8?2 zmzTHtJ}P^v^})p|IpgLUp6Qd&vOw`pA>`Mabal%?=EjstLwX7iaCCF7AukTC`So7n zkSgz3CaYJ*z`|8Z?0TNdR%mNnKlXnWX@cwdf=-TFW3;j6jSgpWjG?Tr^|94{nFvyF zzRykB%*?jm>9|1pYaC*Sv^z!m>l{r@B*XKtlQ|8n@}8&wdqcXGcW4lX8Z2s#mLnl| z+6D13vY$^Qv^$PC(mQvOC2&SA&~IaOib}svKw)mx(vo%8#5&z*p@MrODCai_B z<%h9U;u04=Bf1uhB`9e#rG+;(^VBaLV&xxvD3E&PR38TpyoI&z|1nXC>R?kN4fxu_ zn5t9PLmuDoIWd5AGIbIMI?mcTeLt)Mjlq``ypXk@o zbZ_-grbsZU*E}yD+tLlXtN5&1sr-mnEg>Ci{ Z>5@JR%aZEZ{p=a>$AWH~KppAb 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

$_3s%8OxR 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

j2iqjWda1E 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%0A^bB)N=A>W0dH$mxZTAYN%sA*%M-PSye?u^Ea2Wx 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�ONK!`-rUMTGQ6lR>v1N6_s5PxL`fs;KLAu(c) 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

BjIXjnS1Nsi2`z*If(Wu9?S$5`gwhF)#S^;{ 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

>533}{_m4=cl%quUEAX7 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 z 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

e&&*tN32uNl#cpm~zVwze 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ŋ;mF>Zrmr3;E1O|ebZ@ff=Eh65 zZFJWkRMcH%Qd!{i&WwL`xgnurFAaZLn#a*ST-ui$<384T#EvuXZRuGq;3-@;{XlM9 zm3H|6H+PCM<}CUHVX){dm<|%@A|}fHv7cZpHQHl*5JFpTT9{G2mloH$v}4>fuG(zX zueQIH8rE)Z!Y8+xlkDm7o~7kNtzVPJMXp8#g8(~S#D3FD?#by3OU~-ouI=e2Bd3{< z(>|a_**!Uzp0Yt|xB1Yj)G#o{&OC0?9otb_^JM5{>15htN;ajldoukJwZ^hL#s-}4 zo*jsikh-6mk|Mm#J6ycKw)|SzK(V)kbVQnm%@L6?>jy>r6p~ZTu~J#54lkGL=Xc5+ zA6JVGp2<2*?N@#wd+K{bxv?OcVd)yo{!iG%aisNLOw3c^q{KvoH4qUQ^DJWfIEswY|+LIYG@3fQjnK-80&BX8EWIkjk5lrg)s%a zgF@2TfB)^{exWq zp~TI@{6bxCzY9@!3< zqnn$%$pw7-(R2xRMqRd?vrL=zi0r>l$wD#Q+jp1IvSf>d-E3B%&*RC((Ype__Ptx6rl(#3BZI4thol&h_s5=(ww<2ND zeJrcmm2cR?^WB`D4B?W004W$fP!2_&8V=zF>Uw{GA5 z@KfN!CSr}82dv1>pE~scpo@NlMeDO(bbGqr!b$w9p4%f@;~TIa51>1PAEQkLn4m@P z-@lI;Y{AMgVww&mc$fJan!%!cWtP5zC z@S%6`xh{W_@+hP}pL6LWu&h6z0iGGlY2-4ROANn3NQC4uadF*2E5F;nN7_DH2orE6 zf`+}JRr!lJC~6C>M1y@_nyem zV7Sygw$Wj@v1*#73|MdKl2v@QC!LAJLN zxY1C}GEZrAb%D+9lx*{cMF{W2t@k{wHemZQ_>lYy8F|E_%lEs_bkZ8nw{XtrzRYkY zUlUg_t0&WnL{^&t@id-aO0n@6^cIm{gz&6vtpI zZkjQCXrs%KjR&|>jNg6TyhH9-#M5W;S3ocJRc`UpY>2=mmLGZ8KOh`X-e^?1Uup`iiLXY`2S>T`UXZKvo3 z5E+xV?YOA>;w(^pxJ25iM6#JgIxv~%^$aTn;kqW8A_r$``4vCZuwQI>bGQ!?QQW1u<6P;;Gw*O=FJQw)1o24XM_)^ z)S2Y*8-8W|ShY5X}l4ilkX)@T64rn`B=x#m)eVWw3J7&jqM5i>Sn1ZJ3viM<#U%+Y!na4 z=?xb1JbqUhw8ODtn>GcJm6_-ix|K#`243nBP2VA#=hXP}`+W-m@qv-GJS)MI%FLtKxCA2xP6Et9|8DkYn z{2*OXw8A;Up1+)})A>2oWwzYzjpwkN8A78&2qK=?{XQAW>-V@{dT=w%m4eQ6iKMM7 zF1g7K-FNge4lfQeb|bZfF4|$4~r+Okt zKUT82eCV~l&2;br_7{3Hv~wRRSKhvkq%nQVsiZ7ibnZIm9{+D_o{;iH5|8U z2X9E6i1nJNR>P7SVkzK~6CPsoQ$1qjA^?6^n&&R$q=`K=Em@9|`>TIN88Uq8iVgd| zhsJ<%uKu=NQ5Ws{y${CsccU0`jP^YMe+%0~ep{WDzuekBnS5 zMlJ$1TL3DCo;EQfY`DPa=_4B7=3It12PSod^InsUn`!ajrQxDnn+Aa)5{NOR*Y1a1%9+FX&m~M;1rh5{eub3?JCMEt4c=k& zOD-IER-{2t@N_P2Wl^zLq~p&1>Cx$JMMcJC(t>~V@?4Sht)g+B%2L_7G^wAdGgcxr z!J7F)I>pj29*JtNi4&WxOB4ivN4T##`Q|Fcx6cEROI9Wjmkg~RNKw{4l1vwtoP5uT z0jVED_9$WB;s0g#miwjGjIP3maCw3H!JM=6VM^i9li1&#TM1p}Ib31gEQ%5$>n_7* z=VTDkArM@^2>R≫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ڲ@Sb0Y(;)r6+mK{%LiUD$QbG(z zJjv2t7cRxqzFuBa1g;0zkB~)Q+4EIMT)ZFZHE55!Mkpb^(FBKToI8cpw3g6=WBU488Fkd|X3P9g#~p>^;e;Yk8;g*;b)==;^Z;%oU3 zb66Tg`g@Un>g!d8b_08SWe)o$n4kF}ONoezLUv_5(JFO+t9A^AC^rq`5NzP61|}xH zpezKpZp8+xdXs61jQ|%b^s^q|v+f?aN#V_#$vpTLmkhzvboO=+M zuRdaQYV{{Tv zT|@g%@dqP}JRjlOweSE75o#B9HHif{7sa}Y@_qn-@dL<+-COUfK79yKah+bO$`37gjo%VM?&ITPHw^6Fm^8% zLwt&m^`RghEVYK4@9pnz_>gI;V#_DDb zesV*l+gke@wgltPM3R8@j>N*QrWS(Oo45PTa&~rK-60uX{=Iwm&TB_m-hBz_#K3UG zu-`=P6W_R#8)5J+KXh=5SQ|v#mh+~E5BGw6u-v|KXloC)GA#86d_DpvJ~l6F^W+*_ zfn!^3=N&xBp}u14RVg}}nzGop)$R8rcq+DL)=fnJK)zd12g{Uwo9R`A(l9%Z2f0Z+ zmXQ=R)w8}8Cy7>TAH`!>y?TA^$nKVI&Dp;5B)6vZc5t$TsbJR#3w($l;P#*zur=QX zDy#2p?)n}SC1bj=$D9tMcRdy`aXtX(HDRwz$V=vfvj}GAfZ@ zHy$We__s8YWmzu~N&w^yXt?=fU1!|6({@v$fpg&yg;Inrdhf!wtKzY_=05KmFI`$I zNI3QPQ)LYj6A9Q`*P^2dl_Q}51nA0P?xtM#=k!dU4+JteyCmM{))Q?;x?~ z5ld5@=Ra;g`%TfcY5SU{T`B-d6J@NzGpD#0p^(CyLIEVdL+t=c5aAVmE)bpVgyv5L z3kWC(6*4g5590;$2!>E9zZ{`Di_3(Ov`@cZ=8WwQRHxvikEg5{IKR({ zCzx+FQ9^ghh10dsF*eY1K=i3t!|M^udQD=Jc=smS#vMRh={~*U?sGmr+Q_^T3T9Iznt1k+>mmBDFFTuJ{6v-ZU=5_WoFhxJRb8^wSd%uKW&_R~Lo&$Z zfDypcB}=frK5an=Q6b|#1r;YSx-TI9e#3GrNbLeB<17ADKDN_9DighX9GaqP5tR|` zg1ZY}*quT+KalAG4Hx112zVu;=8JJubo9sHnK?NKLmPKkk{+J~Ii_>q0Jzh#nOWRU zC^pXyoQqOF^0lzT89GtNM}?6XC9C zmFyC%7hFfQI%fOf$82V1R(QFGC?jobW;3K6N@4J0y~FB8DT<3u)UK^R9;{&nYfhB+ zy`KFG5t9;3LuJ9NY@bSZ>7pC>Md%PJFFf^#BddL@x(m}ALhk;-Zvj;>lE-w?*>Y?< zr2N%Dcu(&K>|PC>EHOiXvszr`=}A~kDHa1`fPm^Nj5@=%!o)q*M_A4HinR71ASHbxlek|2^L(Rpb#PCwg(iZI>9Le%<+WM>$(5ws#Ou@ zs`%6mAWg78{-9zYSnbS2cP;HX%Hi+g_Q@H^D@e0Ln-^yx`6Q5SKwN}V7Op9%+8sS1 zp&p`rn-d{<@JX?g;k6m>e9oOaR(}c{%}8)DE3|w_ z%(fs+Z51T^fL`?8$G#!(y~Y5H9YI?`kYPCJApNy1?CPB-3*SB6*$$eZ6%=7a)Xt+# zDZghX5D9-oY%Sgf>8#LG<$59#U}8u>knLSf*R6qQ~4-5dFu` z)iXkUB6=tp%L&@1Z{jEAh!K`uF2q50c&-A$zQhBpRletYuxz5>5yzXY0ke*uxJn>|#A@fd&(WCebFr$me&#kQg_oVrWAV{&8Synh-$W>lqFnc0h1;wS)tkJA8etjGTFDe39lf? zW!K#6j$OM8U4Oor4oEbkZc-scxNem{k#L?Ojsa(Vv?tylyh6=E6@!E42IkbWpMFvh z3f9|wVY%>M$;3H{&_^`IM2LgQ@4e#Ua0e%33_{y{;J^U`pK^3@XXl4D*JwYJ84A}% zYep1t5SGKs^AaJr!v>oGLyL5ZYM>0n2c~&ey+zI6iR}!jvjdrTmp|PJFWwdPP@7gG zj$-G^eaX8Aewh%`+s6R@c0zO4^q~kZ#lKI$gDX%XP+C!O0Zj5Q6#2RoLjdQ1H#WG* z4IuY+>`RP&5W_SW=mCQW zDjLl*sAn*azoKuSFa*msIoLqhF`_7jd>wwRsH3Y0Q41>Cp>fae#b)^!AMM88fGm6F zF-i!Gy%lI2~n7S2?`G5HH6RtZ5(K7PQIIoD7SDsA{rBrmC+vP!^y)U*6W8k z$Yq2gAQQQ`lac7!YT!AB|C?@-hmsPThPb7Od)Sf(x zs2EULREEEzssmCkg*l}QRx6%8bsEh@G~1qpk471F`kCyKT>?skD-%B-p!lhttY;(& zC^&f{L!*0OKOlA8G8wZrg!?Vb|EsZ#V8CVJI~ZbcP@(I$Ic-Dn7*R4258vgE2dbswPs{w5bB^a zTi1tcF#&tYAGkndXNx!VJBU?REsC+ZZx|ra(9|q4*@oPW0h~9WtM_fZ`9kd%0-OMd`iMRRZfN(fa7xtwzE5bbQDl5SGK|MS z+%HE*k=9~-ML;f}K^7;Nd8buY`lFLTGlwG9#uQ^X-WZ1@1`%dX#^RGb=orzr+?HxN zkd-q>2pm}k!*@QLh55yw`EsjFm({@J~+4hR#7y9P_WA$32V`DS#+);qy3?C*P^Q8DKVkhy&iwhHrw{j^) zQnIqB5t@ndg#DWt9a+@JXP@8Li&U}i-9`c-K2o<#fP>;2JEBjaNC0BYEvRIuT#+tQ zHPeoTe=jZV82G47{(4#Y8j&CN)cO!U`U|sLh$?G1mc5bNml5>DNjP0(ssZE`>)u=>Zt!QJOI z07l;konU0-%NLKkqzEregqcqtv6K`%M_4@-0hkcLB}y?teuaRs)XN5?*q2G%j4D~DmWs(5UsofjMD);5Bc01os)yE z0+X6n>j+;u0!dGuT%%$xe#qZnPB*mcS16TLm58`FdU~Jzn`xIp^{hR6{D0cRf5#Of9H$v#!`Fl>3Nk!@cK&lVndBdDsvtw_XXjP!+0R5AzKrT+EPa@6vSo0tzOhc*~2 zz2DV)tP4z1IwI%)zd(N3rCWlp^i`8W){MNBd!4`eSka{XT_LSPFOwKs&Ww*Ue^Urq zRlLD68<{gZ=#Q}S@)*77T=Nz`o@17O zGag>0-2FY)XRbPjmMPod$*b{|^;VyFEne2!_hMDh(%Z|$hVE7vyRN|E>R(>sE#oz6 zm~#}+7Q)p1Q!_3jyZA(TPNT8_#Fz)^7fx{$z5C!hR^JclZ}KTADFfKG=!6jo@K3WY zhsi&i+O==*b2)d_HPTV&hu+x(ljeS zUn>6iv&3I8H^79;G5iG9F;MGimni~OBaR-zKqBIAEFgr_X!)DIkB*K)ih>!cGK`a= z7!Lr^fvi@->~Hhe%8!Zv^T_GKOD&ll=L ze*&tVt6aO8N$@#~kBu$EU1~|G8J7z(}NJT!&#oE)q%<3D7v0D{?|T(rB0Lmr-0S38S@{D>O+bt12sd zgxKF77Hcf;tDob2@^svr7>6d{wAfqMZQsnk{(XPQln4rP8oQzND=t3|)HCV=oi>aD2z{mjRo$Q) z?lBtS2?j{n++{YB^h`{$az@clRp2-g04u~?KlO(*;jS~c z&ZXY`HSny~ck+>#EN6@@%pCxqdk(c@FA53>5V{vaEJ#A@#F=_dV)FUy4OVvmWPgCS z!b9g7apMWr;_>5Er*ERh#$m%XEFBwnUs!jEY7oM6qNzmVf>gFa8w80O#ZxY+|3E$3 z1l&3zh*Jlm=;dmK%NnF8ejlE!u@)V$x!vS!EozbY%!fYr$6>K|DxGZWE>C|iHQDw_ zP}*eezY`tPrsgGyl;>G$RvYi-oqh~%gIOYkfylfE0NFYw90NH7;Aq`_@Q@p66#}&RuO7k(8ANeS?`+OYvME* zjmE$$bX$FB<`I}Dr>#puo-okC4~VFC5au2?HEqaj9QsC5g3~Re=uj%=p)pHC5GG7@ zz(ru7gJg+q0=V!IA+AAS`U61Z?5|b}9I!*gZ&EotS1^Kwm(PJ;d4T5*dGdGW)oRPZ z&nxvqnpVTZw4?o=>0%X^p%cFI`5A;&z=ym+-+-*NHJv7aH;9lOGLxp!Rp8bxPWFxh zN?)V)4gWn?N;ci6j*8uu#JOkMCUgQ)Es$pn1nB^F3(C+S9-Q;?4GjJFf*-hYj5qv< z)D};5m;)eKky zIC0Ak)Z!*6F{wbBC_iAtIQgw|ulJ&$= zG&yUK`MlAbK>Y?@%<}NSA)6`Iv?~~PO*~*%M}+R!)~-sQGAMV`yKhnSB|UGvIQ8Jn zAOA4N`L(?FQ4s)NfPRLa{*(OurLUH?uQRN~f+IkeXGBP4`wAPo7YE8dTsiiq^-@^~ zp#p$nPF!64>9%Y!Q0R_=%%RpVKi&{IA=0KBmREi?${lLk8KKV-{SQocni_=LxfH({ zZ?B%3MlUopCBIKhxx-V-ouPq7!_Zb+$GpO2Q`2%;m!y1OYOXua+DOGnM)a}AxAC>B zOLsESQT70>ik6Cg_070Ia5yEjOh<1ZX#aY-^9~LZiFc_ZGu}C2(6+NUGV-44&eg@-C{4c4f4_H+jOu z-pDRj(D_Rc|Kp{T0{S9yI_Q}|02{WjN z+k5Xa0hNRzqGX8_zmt&x4&oa@T|T2Cz`3Q1xIX&r@!oTEWLr=ZLU4*)FXm6?NOox6*TN{dnVfx z-}c^94n`NH(072AWFgH>j}ynrx^@tU&-+g~DziQVf)&EZu`tMTHgGy*pE`xZO;6yp z%$dJBg9fFm_Sm;;5)s&ZCIZ(a}-l7hv)aPQKIle|-2 zK1;CKQ1cUV9?;4F=>FibK%@eCWk)3|4k#s*mypWaTgZg6daaXxvGVMDRpq7c)@gd2 zO;RjgVWjo=y(3u(Kwn`)Aq@jBLJ$s%q+YniPB>x{KCdYxUaOX5Jt=rVOO<$VVX9YG zjq*E1d{w@OsPOvLE3})PsBE^yEGWWYj((gG-NS}D%}dKq**?!f!0NIc%LXg~LeGjy zA1!Sk&?j@)apCk+V$=i`3yfZXSKWnS${+YKL1k3_4fJz)c1fK*cDK8{x z6kkEa!*V>NQlU5NXw~1~M+r!qk8k;Tpn}h|L@H6mB>S2|+N%JIx>nn;vz&ga`iJja z;&b0n7t8%?$M#jdBHJV>?Cy0R-|IMpTvojvdmCcWz+Rk0ie657n0tAB=CW7<(S08wlj$Kz5y3<;W-eA6=x%F`2FY$SQ!9Ahz)-1IC}H_iJs zA4){xr0yhK*Z8vQ&Dc}Ez)Vrq*u%`FMkW`hH+zhk)TxJMY_9p^Eug1wefZe>7OyWm z1ePApC^;!uE8!{kSTGQRO;;oAI=*hu^SG5U-&J4!<#%_-c)viZ&aDAC`RHqzIUnDA zi`n?9_Vw4m+s{0uD>Qj-YY4=x3rioZS3Gu)EpYfoUPvCLSzA7n z?!9d%j-JtDJ$}eoF6qEu>r<}ghTHFH<2Z%xt>_lzXr+@s`n#LO`X782s;J2O@cI2OWGGHe zeM`?d)p)vbt=kK=p4#hF)GD1V8<|7VAZ^DH3Q=24w{_HWzdjkOdY>w-#&?yg3tOw2 zk?|$&c;U!2`z?}OdOzO;>N-mrI5@|riHL;V4!*~(MrAZm)or==W-`D;2+p**cCKt` zeR#(GsoBg0EQ+?QyLowI)1S)@Rpk;nBvEK@D);N4`|oEi3peeJ=VOrAy(Wae!pOQM z#gLa?`8c(7NwZGL3FS;Z0S%YzhsMgKcLIw|wozHDTsXe%+;RFP!C`8_LvG<0JS&5< zWH&NDzTGNl^vWR-*BvzUAs2Hr}-SlQq-QlC%Hp4$uesr>` zw>HyyhaI!8#E{B5?LePvAyz96ke42|%DAQxwMCRSm*WX}CB(@avPsWc;2kc|Ky*LQF*}y5+}PC> zmz^UL#@GI1*QQyy7*@WpW2UC-bvs@uRWLP#;+6_{Ompn33pqNrM(kqPCe{-L`#1|P z`AkL|$EQ)5*L8C?MU8~KXo}U+b!Mo`SpEI>IMWshufs2Hl^cmZ_UmZq{yAXjq^P}| z&;(UGJfTQK#JGI<@}4=9`17pqzxhIiKB6ZL`4bY(!=R=e|HejKV89Ihjg6@>SYMGN|2z4)Tuc)(UUg)3!;a!@y-uaxGPCQvw(|uuxfu0* z^scJ<-DtZUJ=?Iv^+dZ{e>9x=vhk(s3+(| zNEFwX5gH9t#wbAV05yS<=?O*}Qn{jU`fL{d`15AVRUHl5O#S_VIWFH7BHhOahSb!^ zn~m3=REcCNK3N;dAK%j1>Rzs^oUX_q!`!N|ge0YEkWHxukHr05^^ZCNQ4Lq=w$h^6JP|yEE6`1?Q{^_I#Ihkgtv{WQFYNciLA^-+Vo7g3Lp{Bl01z^%1?-7VDWW zveuQ}>lJ8=2;m!*5@d|tQx8Mt>fwxGMC+u{WC4oKk;-6iMRlp2{tF6oxt9pmD z^oxS$9#GO((6vi$w3GGQ5yk+8=VrQA@|7(MkA<^VC#Xd68wFAySFBTEF=*RK`YxF~ zXun}wouOgk+tj07o(q@Oemc+cf-Df0G2G|HvB}=!uu6Tx<})Lk8r~l9ddEez9-!|^ zUyPI{2mK559kol%K1^wR@_LPxp;0whnxq56@DQT1gs~lg+wXRw4g`}y2pB+NGLeXR z8?>=-$swqF=%FA=I}6C1st(KyVWR~p)AMc{;5t~BmwK@r$7^P$aN1%UtUi32A-PRY zOXK0&1P4KEy(2iO35;g$F8UxnL&K=JxaO1Qvxh^TKiDKaQS;a1IRcR%{A#muazI@$ z+Wny$=lu%|iLfuE5R8Qjp+bc42b^Wz8rBP+F}8ytp%?<!G$)@(Jvh#)Hf59U4rA<4Swom4@=r``wXEQuEtUyj(zqM|o zN-_uMdL;*UC85zrysB!JI=#{*n%C$jc*%^O*A7YK&%|^DDSh#v`>aI8`=Y67#cC0~ zo`&1B$%6`By2V=ZIclukb3bpdQ*g~zi!pW1bEM{tH@moo=KApZ3zx33d}Q|9!eaq2 z@jp0&zI)F*b@_64DDc`~W{&V~gRK-Kk`G!#G3!)327WhUFEK9-vsGXtFCP%KEiXV! zx=CU_ypM(iPbXHlwaf9Ibu^JLH*^P_i?MtOQ>=&xV1Xpo&6{1zdWVLVtm&Xr$Grh6 z4HcR-C_;7hI5_G;I%oqkL71olsv#V9(f8PmjYHyk8e*u0>9X2B_f|1*kaLhJ!G)va z1d6J=Cwk*B1W# zUi@OQ7!UQ@3n-UL5a&_aiksaR+PTvMTACw8pJ@JS4v(oJQ1ac$X*+(3GF)~#QoP$3 zA3->VAD-g;s~OBnQZ-h(xPq-Egv8iNlg27m6efI<>3RvjSg_Jgtr*tlr7xtniaARz z@XVc6{`%!Z?U5^ojb^@|E@*r8FW#XN-T4+Xn3^5aIreclns0WvDT?M&XHHJ2@%@cS ztFuI?)+xPOJRxFzBM@t%xqK5J-%q}Cqq?3MS=+;=4^G^V9S;37cS8ASas~Zz-T5kr z%1TvRSNF)wfY*V{j<<#&bKl)}2uM#`d2{q$Zjhz$9;XuhjjunLs1@aq(z+a_TzfkO zju|OLX>_P7Tq4+59R+g z&ab-mZjM^oO^1>m9gi&yZ&D*N{4_BO&Ez|YM(|-q;PT{5Cq`i?haR~_H9nN5s;d=W zDI~H+-mN4GCzaXJuR~CFHx=jJ~;H~k#Wn}tEmYs zMkRu}yS+qR*Q#}}44m21u;UYT*;au9^D<^@f`^5UP@WUtBrGE1WkIp9N?`xqRINLE zIWpONTUOt*<`JB2O=P`BGKrzBiYCdY*xd2GQ=lo}xVl+G+b-YOy7{jB*?p83KR$o< z%XpgW+|&5{zIU*|Dq1UV+dCbf8~>X6kzzqD&S;%3EG_3Ylai2e!R!gcm6qbbzRtx@ zYJqe#GF<6BVj(0`Z^nIH)xsC^M7X__obt*hFXZgEJ%7yl;O^+vPVE^h8|M~umN#uY zGkO!}H$o!4LF|7)91INi!k2FvG<$4f`A);X!p%)H( zTc*-lp-kyYvI;7- zM@5;O$}2S@du)01^LEK>SQZUUWYkTYB74`hnQ7&kfeY&AH8ir*Ztn>1A}6pnfB$h{ z7=U8j+!?d}50}$~;;mLlOYCZ+k$Wd;x=?uE6GosYh&~yQ$uHv@LRfrtkQq2#x^z!e zRC#mNh_-%|*7~UJW;-{~kc?iWaXelZeOzN!S8RXBuD;6`gaUJw^hUP!G~`!t#9Qg3 z3gXnHTuG66C@o4_H~z$im9p#4?ucG8WSB| zVP5d6`Y~ZMhS<%RYzFb_;$(uEIHVx5vZjDHy||62TGPE@JAU0htqug)!fUq>T+ z-&^`#R0)8?5C8cJ{U$BJsBFN5j>V1Mac-QKnb1TX$&c{^!b+cN%T|)5Sj^k*?zb7C zb~!Z-%0)$)3Cw3Kot)0qvtbyP{(h~}&$-#j6oXZzjt*1AhSBR9x@ z1t5=fHocd-j14(;9sA&O{V|Qm+#;IW%-L3c4NYUiex&ZN?s2<67?o&{cjg-(?pBkj zH{=g{z)!o)<0?CpBe7ki;Owkh0Xad0B<Zg-KSuD`uHb>P{a2#zfUGEOvEkDK7O9@_RvlH_yd{;9Ei?h8f^k>#nD5FXfgIe9g9}V1M<>81aJI!|FV|kx#nH-WGni(*~Aq>mszeU6s&Jy z>wdmZy?W*&rJ0*Dl@+o2xY{QE;tSyghs&OwI)zKe5GE*d$lST$8S7Ji^!h_ae<-CX}`bSIQE%2-dizI#<=g2a zY=H8m7sjt;roFLKrjT>nGTah7b8H1|0+b#&72WjVO3NM>3O3oQNr@`mvxoP9^5Yt5 zzEx+|dHuWX<2fCc)-A)e-@|zH!`6rIbBj|>S)DD+oCsAd4YEpP$nN?PvQl-8wn*Kf zMwR)Um+IG~k?O>c2@9Itj*WR@Zk`{o|Aa+H4nq)+N22QM2&H-XXYPs5Kjp`Vvvz4Q zYefF4%ruFlYk*2yiE_Vca_#2L15njpe6TyHvoW7<7muOQ6ig_HIWXezP z?jS~*Sl=*jl(94{#S!Pe`#0_T@vMGexP5@-R@X;|KD(j*Q)LH}{N)7&=QE_Ie5&WJ zQ3A7)4l3LEI;%3zZyWtDeDKXrd!+}?QW)|S%C6_XAI((_zBV_O`zgfb58v(KflnD- z7QuN_Rf>M!H3z=jxX*J~>fn))&s%8UQT_-HmDVVJHglzcpy&3~e`V|k`bXjkM(^m+ z{*;BEna2lSpJ!2&fiKLEHzxJK`a_t-%Hi|f88R)X`^6tj)(6r)+!DH!KssS8`SgYR z9{Xw2Zdg;?Z@yu1_0oEKt&q2D1Ft(tby>Ep&n{k~ugxAGTN~^kC3W|%86kV0-b*`h zcCmW;+WsYezh|U>4Hg00-@QN2X>cbA^O?;O2FJ>et`=8$He3Cvf@1}Z#-fjP%8`Kd z5ch|F`d`%Uyw*g+U8m_J?K^E$zQ`Ol{3l+B^5tUsr}or5uYdr}H2>0m&DrXl2>nek z1h*Se2)1}^Dw5|}m>(bfB)Bv3e&_wb?erHi#LmTRUKe~;LqFkYrDxCXAPE79)7Lp! z;XM8a@;ca1oPZd&2B|wOyCae&7idczn?x5xWuF3YZ&uxYRN#8F zZ4|2{I)1`<5T0j*{kofGxlUj{ zxVw_WlGA?C%+Po0`%mf0?X{li`8S`CORhc{B@h)0;CPTqSwl4_90WTcxPL(G{pzr5 zlGF)f$fTg7hTa-Yw}VYo^SAY1%#R**;U`PUu@TdsPfMMmMg=<>p z&d*=dDmgN9>!Gu?{5l4k_g2DV++*$l7FbgY_|Row7NYCW_oe2;kuCO}|KPTK!Jz@W zHL>p;zf|Rhcg@9#So7tUWuL0^xWMWt8QL)DDTkcX(qdk4{LDwrz6nU4GIf5LMZ8ym z-OTQcg}L{BHIRVp+}ZJ}r#c&i7u42N34~sETO(02WqLjJ$}_%8J-cs1V|m!BljnPW ze)YXVb?xU_3dea&zh^o8O^wWn9kO{8a68H%{szU2tJJw{@64;-j=Qy2W_;)4`4x;4 zcb~|pC=FG8La#Rd@Ol2>>3v*^${oVZ!c1%5U2coHS?=B^7fz4c;bkWN&`7k)e=+a6 zqj`{M%pO^{C_$U6S;q+~xy9mER_jAFgq^z%WZo;zcq!N4GUcRaX&|(=v+Nz^!ZSMk z5$RpWtm*2~Xf8;$Dai0-?@SuqQsl|39Xim-_BW-krurY0{^`62DaanqSrpRUz0cO&)BE1BosTl2AGQ@A=4@H?(6lrp;c$`W zqL+iaOK7eeJ<4Z(S6(OOrdGs0!HApqflhij&96for_hXk^R1%|Ix>0WtMS{KzVjD0 zWPkE~^i4=WYl%_tV*{h`OwEWgy3pl1tN-()5>?rE=QN?oB$CR-qt}BteYE0+FWkEF zw?cIj-uO+2xQ&X4OtjnzL$8L93Zy)LdO8c5u-waHf`Kx;nk(O!7(}WXFrSHjdB&QZ z_T0J+jd4A5?$7h*<4>n6QeLjR6eN^I)~h=y?V7uP>nhuzEr<53Ljmu#84OD6j|yq7 z3_(JHP}!1r`S`&qp~&Wqnk73eOA_CPXaX^aY#K?cOd3}T zwBn3;#73x2^nMJRb9RUeT}V5vvgfW=NGFX*#yCljG+(f?B|U(;-~wIZ#S6D96Z&m4 zwosbkpQLZdwrQSnv#gkM?eW~MH9S*~EzRk(d$K6`kOb<1Z9iaH%#J=JnT9(L?g1^bTnHiJv=BFjnNc%INCdfy`7`cQeiE9VafnKp=BOJ;=1 zYi7%dUzLAe_iVoof@r3V>{94wE=1GUlCoyLYjfteyVs@7zgO5WNW_y%xQLr~9b&BL zFRy45d5$ilT^?dFXI`Ss1H1YepZ;xh~+#-2WtF+|KJqMA7T|xIWcs(vTr9Vsy z`amO1b>%VD=DbsdE^{L`jnAT5KaflV3W1S9wQ_KkfPMKVcZ?I@o7m^@%E=UGYTr9J5hCXpg=A=MVNTZ+z*TIh!UO z^e@*K=VV#+FDpIOR*kJ>QZ9(j-79=X?zwT8R$@+?OYY^jiQ$TryDuKNiOQ5F)- zeizm4`%23oN4rf!yG&Yo`|)q()OtrbHi~oaZxe3+=A1w1CnVDH^!fL}7fjYgiQ&36 zGrk3)+vX+roC@r7dC27LOix5UOJ+^?c#)SIJm_qfupXo9tmD&^SWEUscS^KTw1C#V zmDks4y@&tpZx^$t!WnD8*uSofCO?Ym+NNqCGcPjiKR80h(@a{$)n5GVTm$cxdYh~E z`G0QAc{FFZG&3#Is>HpUYqvU(pqjNq`a;p%s^BQ;$E-qEtVX||Pj0j~lHhk1-B7n$ zqNr&4+K*$&ts*B)51zSGnP>C)^Sr{UQ+~0HqgF?qoSYswlwQ_7*lIUa{@mx>Qgg0H zV%CiJoSo4UQBumvx~&t{sXKL+O{Qrhb&gBqd5v?=^WMBmTVPBdiK3y<$t&H_mz+_vr}>;6pi^P^@a7fMX)FD41Ooyuz3A5(fk_Iw!EyruU2tu@dNF##N*qkU%> zrKMGry#M4ks-QdeEcs#n$@bAQbeg)a)x$4Fr*m{!Uv;4f{TxYTk^xAUDGB;JayB?G2 ziarlCFu2$hFneKm;2JvOsp^@_+iEkg+WVb71GvT9$a+;HjOP0v9x`)?PmjxZd^~kk zRwIdtzPPKoNHhc22Av0({VQsyJ;;7iEEc)1(((jVyK?4U%isUJH&i@7@?u3(aev>8 zS#(~$N}#Oww#H5D7WwVNlfT7c>)sn2%=`894Rcp?_1361-O|QJ#49Tu`+srosTvQP z?m76Z&XUzLSa7s@I~6eY+1vGop1^b0O*L^P^39BAFWddjUD!EFs}g1t>5!Vouq$0e#%=v0<*7Ct(z_NJ5#DKl=#VqNOHHy#^0o@EoD zDfjpTO&EFQsr_#tc=-gM(iM9b=z^IPSFoI>lsR$K?Fj6eXn20(OU2Jc+~wj;%+_Us zl&D>9mR!b%q+>fTT8>MmEU8z3l{-8)mdiO9WwEQ9fpcYA+PvI44=RSAXA^kjHrR(7 z^w2B5z)VSVdZa?ysKja?WxCW1Kx@kY+ok{>IxpJw>(6*Bq$z#jax&X(;qU*2o6JC5 zzut`JvNFzuf(q#vL|Zsaxf{b5d*+l_M^_~8X{*j>dD5mslYaTqx$bUbd4BTWGD0t_ zk~C?KyT+2oKX?^ljoYQL#Kg>VU+z1F9;-^*2k$Cq#}X0}xVqL|VqNn+HB4mUU7Mfs zk)X@5B^$nSzZqgPFEZCo&t_nU(V-SuKPNVICdW`C;wYEimK&BKpDlj5rmUsB9F(!z zl}%TEw#6{v`RixpRQitgKbs=#iAiY%wOn-MHG(s%_4W{J#i$%c!ciw{4qF=>{dFOFE@Py1S&LyOHij zy1QY~NGK^FAR^K&B@H6o0?%CTf86(YpJ%*Zc8opt5Eg4qe)GD{<2X;*f_xFuh%|e$ zFLJ#o8EiV)?_s(Y!;BlK;QcC)!+Ns;&C;xGdW+p)>EDKiBCQ76J57|8-wjM|QJ_O- zk=PRJZm2I-t3r9yl@tU~jaOpPo^t=TB3jE|y zZOuCo?tk8(i@8o$Ce`k^O(!*JlV(D7L^4T8MsAJ~UpIH{(=oL&S9JV@G_}MX`Zf7D zIPRw=o5_4q)ROvoW+@i{#{uAmGd+$% z^Z~%%{Xy78nC^<0LOPwjpF_po?HBAp&mX49Krfl|Jq*N7!}9TUJ|4kGDui6`An+q_ z^TcYEr#EFD`4Z%R2WN$iF)^LlB_#T5&KUjlG~(xvWfUwFC{7C)fIzVI)Vv300{~dS z3jdkEA=r|c|LhfNgNq4V+YvpX#QqBDO3KidD`o8YCU+}hT%D{3K~-8G3qlh%3#3StB2P<2AyuK6kHbzs#l`MyJPFzUu;w4u^A@>Jz{=(A zrCJRcxSr#%nDUbJWj$hJD+`HL`u|14NE)hYYQAl`w)|c`5i$lzf}|v16`id&KJt}r z1asuWeYZPLa1U$K0vQnCN}{8umzgf3x1IXk+j>BAez%ap5LRg$vjjBQr3^y~3Ja95 z>#`Es`+U|xOVTbwy`k&e;mS;*Hb_M=VTnYYZ_Lr2}jJ>@cHdz7I#aC|)S2j*45-JTus8_#zp@mf5tOqM)w zZ|{FGyPAP!F2}m`=cz5auIA=$q2X5C7-56&I`+2!^g6_4F;+ zB~TXm5!(cVHsBI8cFQyJE1$I^FZs}!rVI@BQ9Kk51Sr|W6z^GX#`XGfjgBJ~xxM^4 zJPZ|%_5kP_BzrpnsS*Dw6gqDNRyzVRvK-+214QWq;G|aQ@^=7B0eCtbJUlL7zD>T( z&V)*7fEO7cnnNzoEUkz?ka4wmRRf3>h%!<)K7idnNKn;`lK(6IZR&w_>xnBtk5k-J zw`cUW)_!)tGM~S=0UD1A$UZQU;oGMGI}#xI3Or`@npi~7$0b3u z1?q}*cjtxyX?`~_83EvRR6+unF5iNlVL)9gm^(ib=op?P1pc806fY1=17Z)boFf@* za}jR9u>>aXKY$Z543n$>2Xl~|S-4I9dP$o}%nkpwsx&0B-;pH>})%4|8{GVva zIZW>NWF^|82_de$Al938?269(BPxvlO|orK$aWXX>p$C-4BBsnfa)1F^AKBOLh6Ha zJMv2-deds3Mq@@l47LmA4u`-sKDe0FpkpBX_6B^oe+IS$^mN6BT?aal&bACzgY@KN zbyZb%P$K|=K!DVW1q`SF@UH*!u1w+V^b}YO1VDQXAdG-mqkfPM5V^oPa@PZ5FtgWZ zKovIp^(!!Zz`}s`a0ftcgFFUw8P!?cwvp_AF_-BJUKwFty(y^RecYOZ&g0DYOO|O5&ca2P`$2|9aSByIWPqn{F++v%qEoTKUx?3;@M0v$uJ>=Jrinx!z3cDy5CV8!}`EjUL5@<2J(T{E0cLnzJ*E624Zmk z`QyjPgGle%U!Si|@<)XY%~jmr#l#xvfx`vhI#6ch?#1xvC{L4UWQlyeTXJe@sSzh3 zzHBnUo4t<$KvL#C7-a!6@!Ap0Q}YgG&GNdu-VI3{Q4Y9*8)X} z9m}1u#ZfENZL&p-EsoE^u_q+M>t2JwMNns)6@QYWYszP57NxWd9{b6@FBKyrAIh(= zNr{|QmII9&&_8VE54(Rt{}2|&C;F!W=v&5%j^9^;ywh44Lrna87x$oq3~UO%$LP8IjMNXbz!ECqFFAKXr7H$hKMD%By!2A-kym>5)@fdtsApMn-v|-IpnVgL z3JZE-VyfpR%vy|H8NPywn#)KqYASvmIphYGDNw*SV`gR*k?M6jD^18H>)6DPtgi2x zvZ2pa99O!CF1P8nUX^iY@(-!Tg*%?kbh~WE2fSCvEoF$Ik#lhG#rw7q%KXdmJABBq z4}nkWgsu+A9o$(rWvD(wMCUKxy0mV_k5AV!;GWK1eFstbnWYM=Yd}gl0Xzz%F<-T5 zX41JK`GcLb$YW!8msrVW9P0V)�AgZF3SNN5 z&Rl1x)5`k^qXNk=RfV-3)cwulf$eY=Y3u))stf(SEcw^O32;jg!Af%J26$>9)G+`+ z-F5pM;Q9jwP_hXVe!>@q`~Y@<;_tw~45T3-GMmvSs%(z;Kb9G5zCJW^i$JgdIw6P~ zwoz><99#%NsF2U$baT$!3@JO{vjb{daUAIR8^1e}$-2$%uCJQFJ$?aA$0?#8Srkwz zz7WB7;~1rl*k{1gyl8-2jt;Ne7m=5!KIbLIkY*+PKZ<=IH?|2bxUp7UR-euwTU;NBIN$R7$_Nw8z zO)~T2EEVM=dbqdjxpOLdt77Lrotg8*=dIK69lq_#PPBnqz?rvo#K)1t-%kqYlm5Iw zIhk}Q%0@dh2+$j7%AC(U&dKhT*R!Gvz7Kq) zE7EqgcB+dE2#oRo&N6e6yY@f>Lv)W{R~`y0DBXK@SXQ#{f{N<$gE|NN55v z(mhb+y`R8vp=`VFmC?1KOUu$zGY0sPwg1;ptf zUFgKAZl3Z_da%~Yc&8(5=BAd=nab9x)|Zet0_SbMX$y{MZHo#_6f&`6OGvTxBhQ

ECaMVRV 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⪼nZ9jrA{A{APNDKD`mGxx6Ilzh3gc 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
  • |g7- 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%0DcK&AD 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
    g-JhI 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�}oNlSwRV_^ragQ;ZGa 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

    VGKpKtHn?GM`>m_3%cX~(!mpJodzgS! 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�!8h1{Q6hOj~H&W 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

    8daaOyIWSKYuH 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

    !4IIZsNL|kkRTJmposdRn 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 kag*~6f2!K@cr=pg`MD?7Y4~Q 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 z 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 z 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�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≥_)D9>!doL>l(^wWOcnlV&BF|8YM}~02?^9 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

    Q7Sxsu`{P%o8dnRVC5a>Q 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�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

    {E1^WS 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 XrJGo*8^+R0UsqLmyCK_WF-U0haUS< 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

    8)1~JU~91% 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

    _k`%; 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%0Dmzl{?Kr#ohU}@{ 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 z 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 QK#w_l;cAneQ&>mxA6_CEbdKg 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

  • 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

    T4+BM^zAZOs$?cEs*zwkJY4C-DQ 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�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 z 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�|JH>jz*Nw7PkZqI^$0@ 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

    A`A-BK4 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,_a`xrurOmvcf!`OaFF7)ZX|k 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

    {sCT_>qrM7oJ=yoF+q)>NE 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

    of>NXddK+cku^(~w=b2&s?I_i*8yat?VAqq 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 z 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 waadA`%&@30K=&f?37AH~$HK`EK8?zJcPu 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 !0FqTTrSlS`*xq?I%e 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

    23|b+^RkY*zjtv2V+^}BK#F=VY2=) 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

    n~QFl4`Fg^nDMttH)pS}H2P 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

    alFIAQ_Q0i96VQ>*YV;jo@g0xXQ7+y9+Xb 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π0zy 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

    UT25lvwtsbgn$};^W;yhl>pc z4&hI=9445%a?hmsJfV62-gdR!T1k$+fEE4q+j(L|TV~h0?!H^M`CJu~eqxS(>iXnk zWx<~_7sgblP0a<5KlfBk>2+_sMWI}LbefI>lN_UFg^B%C6*GOcWQM3tCje^IYoZcOxHJ$UK zuR-3RJEm!fXB9`R@wTDcD~j)@>Q=Ayv_Njdy0CJez;w|V@mEzbJ{*ntFNAzIZDQDI z^n7JK3x`apFwLFpvd*Ex3G?w7&lRqcDRd!K8a^!13pn=EnpuYmShwmrDa15cDazJl zeLF5F#GmcIr~X0}ZNb-b8haFZ^y5V&AE#ztSex?wGv(a5#0pb?%B`_;%VW1t$5&eR zzj=^IpMY=!^w4p%Elbb)#GccNHkwh0XHz3$V`FdL6e1HCFls~vw%R6!*($NTStNf| zf05#W;G|<`S4W=GN~CpGV4LlCd3pIcm*3NnBeOP{XC2$iC_1`11>;T;Yo&NJws9*K zc<{XMd!M8u7t2rgJ#+KYxAl(Sw#|)tjlShIyXh3Y|RSL znZUYoUuh*M?BqplmRbtv;n|@+uGVHDh_ZfT3UX> zLPI0@tOS&x1;_$aML8RcAV{l6du!!)y1XyLN}2$?DX?i17SUh`%jPRv4gpaXv8_)= z)emu-*Bc}xyg$Erfb9uLl|>%z6ya|X1-Z6YOGjM2`VB?itd1Vlv8G;3ys_vB^8L8D zcb~315v^E(^}wQC-Ev68x@H}B89?a@%Mp0r#zIZl$R>VcIu3s4o@O|AmZGSkm8B&w zFYkp_+ulDY=R7yQ5AU|lR-kPsefV*vEWZ}}ggq33Q=mhDWmgFSsz4$ox1G2xm#b%;ayV$mX3W{Mu03%^DttYU?u(tt%Zbb5IER=Pkk(yt8*JTn z{rk7h12HZ4tsIkUKBEFlz3oEMiBM`HFX?-WT{?W20U%ZO?fGLUJl0z5H$Bo9aEWkf z-g$jjb657R%{PxeFk2#|N0%RZT2Aj)RrHknW~RH2$qfT@ic{&zw)8O?Ql6aO4ZXF> zhYD!)wmy1PGN_dMs%HI#lE{_JS{VO>-jg%Wb!n z7dZyK6;D29YTo77*OrYR5@ciO+6M!eTGGM2VFmH0tElxbNha_s;S-M@H|_oa9m zC_D4~TPR+cRdtl?aCst3(@mT6P@}*wU6Ml4YiLQOesrJb2E8l-iV$>Us8u?8^eD>B zX0{F>p6h^*y8igQw{*gdI{t;lRJYumgjp#$)iCGEl`BML0L?_@aGCifx$EuOUg*2w z$M&076L(G8$0UEJZt}H?u%KyiVO-oU>fV{Eih0{f|AD#_xFpa8p9UR0qL(Xg#HI|X zd8*?1b$TJde6c|v_GxD5ngXauTctg}e3xIQ zPdk*!ixUuqLBreUagkl)V<$=EZ0#_w&C-|5z)!Ci&`gV`v7 zLV+}6(l=a&*f*qIX=G>AoBqC2hqb96(F5uEY(TT z)yXR~E%E>5(~zkfKet>>>A4I%Wl=Ylsi4!8a|<}vD_Jd8`R);#OBJB9khEH9B5@F= z3}2OM0ssuJ<~I=IIg@dvhnNm@}rq&Ic3WF8cGLPHC;Z3T_I6)@?ye7Sq)W?yrrl|>lgSCcLZaer>kgvv!r!RPX~fmToC z0EWxVM<%=S$%H!mak*t?9vr0=jxE@O3`yIi_nlw5rIw3+W5wMD9FSHw#U0`)oZC%a zaV0)nbYhg6X#BUnK!KE8_u%VT@5-yDD_N4;58n(;0u<1yHtk)h6EC0T9aNyZ5tl)u8e( z&|~rUXNZR^_E+BVT-p1&KpsDCw$6G*FgG@s4}nN74hn_uJfw5rYHCSQ_;uwP_cVyf>^b{&Yep zk)WBnZyb}qdIRO~@sD$#iFl7hdYw)0@%fDl6pt%qMm3yY5Ub>%n#4w8)i0uK6**s( z9N8&8*5vr8f_)$}KivO9ig5uIvG3{+$|J4dSsn6oa26GyM>Qy?q;`b~+|CxmhxT~O zaLJGbI+NdVo^>eX`eZv7toO~GTD{7+Tc!KNf-y}zMh(4pQNx8LYyF|FKb7^EJutw% z@t*4wfhEfC(|sywluj~C2ayGu4t8&GyGirC`=C|amxP4GfX(R#`_nTvFP|9@H8)m9 zTF_gRT!T|gl<@~JWJq6w0%S0ugCU#Kg6sc&(lnzyS9swtj~5^CLK@q zF_IP?t=s!kqdoPR$|VD}DfGc+ea63+<7}f z-PU&Tiep-f za!1`hzZs4{!%4IYM>Yw;07**z*jravwD`!nDP!;n zh^A0mSXESW2;7Un@J6cT%FD}Rv0kyn+_uI7o+J!25}Mw*=AB-?`fFcG`t7778>PIw zyu>|WCg?wcNl*@5g%q*+++4}t1?Q~q)?{W0@oG~AM3X;=`~WBFLrfh@)5ZMEPxdKV zOwEqgNYvIO;!bMSN+1pv}YMVflyE(q2R1 z>-S_O9LM&QL;tRs$q^)z%vXZ^{5ZN##b5(2Qq_urX|I&>mb#gipCmIy_Lv><1T|uEO6`1z!41x34tO3a00wK z3WN}cABJXl8K>9bmzOt*T^FR>S@=%TDmGnHA*AZWMEt?Gywbc!Vd~v-KL`bAh)k#f%srK57te4B1Y{y~) z+c_thYKs+`b`;3m8%e!yV7y_P;f6w^{rKX!#)eXmxUoGo=@ zmcdSsx$5-rFg{8khvJ$uwyEM+daZGs-*nDEUq9Dp%$BO-lzPa?Q`1jz{FJ|7GsE_?E zIPJ`)w>)~(p)FVQ)zbCm|B2jI+_^2Q8e`y~8L57{p)c>lh0psUmgX5X%o=c5+onDU zR=3yR7{leHrA3hms!4d+@-S6ZwMt4|G2~xys_Oxb(g2A)w?x8^f2&sxI#_eJqAG@m zN7y)qE%ZsJ_wdutE+0^3s?nh2et&$BMmMuSvNP*gVf9e2bnA*UR-Y<9OMMw#hM=Ez zZVRQA(#XXunO+_3FRGKHqqs1BuC&p6Y-zwmSlGA1G2QWjoRtE?Ij2WTS6Ia|INjKG zm=>|gQ5cMEyW@kl_6d?REhkSU_<1zE-y-m3doXLMfsxKZt=YmdJpsn-x`z&eCGn~^ z_$?BNNLG=$Giuurz^J*l4HO_a)+(s8);2_eeCXr+QCi<;u2%$RL-|5)G$g5oE_eSoevNO0A>|2sfj}zN@fB%${zR6%o zoOXc#wb`o3S_vaTf6E4;;qd(F7XxWs;-Zs`v;oC+LyYn|I^`GEP9wy)r~e=UA?M>R zI2I2LQeRyWCFUfnwhNQ5veu5b=%IaNl0WG{=kWfTYIUjDxw&oBB!fu@_>u^ zy%Nl!;s%yxDRv#LH8^iXnf#NOAi;A!9H<%E8&2OB>elx!wjb10gG&P`Zb8j8wfoBL zQcpf#yBlDaR8_=k5T3BcFRmoE=B2j&!KzJM3rN<%JmR#V)CsVV`zHjR&`L*2qz%~c z-QdffJDV*P^F2?SDh8+kSpR`T18Vl?CqCTv_ScKS@iF@;Tw8}Hrl~WtJd~!AB=5v+ zFOg=KWRw@(8`*s`t$pTrr}}r#w(oYChX>m>8Ktowh*q#RAU zohRm4S#%2Nwp6&xjICtw&*$);y%xz#*Mn2%Kda~RSqX`=m#jn+SvvYOdP!HT# zy4tQgw8^)dCtJ+()4LHGtHZNIr`CmZ z>ee)xC;gSOQt6B7L=iC*B*^fdjx^=PNlH_fo&ZLdWuDx)7#WK>asEI?IxV>K{ftb~GR~nuw z_POU&3+PeJ%{r5kH~qyo&ja-*P8zuMmrSxbwgJ6SHUXq9&Amr%XSwtBRJuZ2^M zHIJG&<=SBh#)&Y>uXmMvGUc;2l7^X8w;)<1PvX^_6-jYBP^I1$ms}FInR4FjleB`|3 z;GJZ7n+c_O_4F#+PU+YcXTWM#+{r3c?28v(1RQPko3T6B!-8x0N=iEg%9QTF?nU-W z+swOLFRP=fPMh5f^grrmGQwiQD5=EY{kXoT&F)(kSy+@`GvIN(kaD?Ts@kpbyL0=J zGpjWoztaugySC_%K*`}z6}mK64SM&*Nf+v;ml> zZt(MvVupWIX-ZI%7XxzkAc7t>g`hqi8A14ZSMWu3^%sB>y4o5V^hS04W1Nz1dky94 z%g!>DhjFD7($lKv&k6R|)ivW{Mg83d)>ISYr}8Nc$I90>NAS|Q=G|*>(AU-;ke#y@ zjVubfFE8UBQrdAp@bcyRHy=3P%$o43=5Vq=dyu%VUylSbhI7^1wO=&<$XZ%fCbwRm z)=W_>bT4h^y+h5QkwzWxg5b{q>NB8%yA-uj$bc#_t+aKq$U1)aTaB@A&a-=4R#g;_ zRP9!~ldUXBjyIhFNAR#EVWg_AwY%)ByqG}=N{>=OE`Tmt3Odz8=jh zm9c@Gl#~RLtAW!At-cT<+P}W_0;MYm^@`kZ8PlB`uKTfH_*A3ov5$b%8d23k1s$(& zhM?@wwQ1B#8bu27um@M0&jX|ECh`-INt!}>-Et%~qC1#jJw(~ZAf4oraQ%2eYLI`+ z7HOooAZGhKu|7KhzbFq~eXLfA4KZ`)lQZhEvN9AaV!M*)Lbp(NqCsFiCE81sx9-S- z$aBDTM9})q=k8jhII{VNy`-`0yLy^tfS1y7Zl6``W1fMN2{VTbCbf*ZPItO}TSyY6 z(yCSz=}ShYz@=xaSP~V3o0>N5)@>X%38%-{kUZ6h|<=jghBhb z`@c}{)_Y5@*-2&XEl9~!KIU*Hz%9n_wA{7aS?Ld!{@J+N{p=U^KYwX{hr1pDlM$N}|qsI}T9Kobg|Ow~&;O7@u{a(FZW|^RRzDr4^0oHnyyD zqce8e`X^5Z$)bJ zqA$e=N@E7>=~xN88e~uY^|b%AK>nw%)5&uC0%0N=qB!rI8tokcb)ZxrNvwdH!=j(b zLr{5tgR9Tw{V^N|T0AU;!s+Fk`1yl9l88TwGqZj}-3hQJV0s`YY>h+)s4wib1AF&I z?Xc6$+Dt495}m>#HL7;UZ%|z=L&m`OI(xB|Yj$o$DAF=Uc%UavbE}E!<5xqIzBnl# zZ^RdrdOOx5nMN9L(bNp5e~-o*oMC(RJ|oPJk$ctPrp=qros;SrIh4{`W0|6=T4++F zrF8cplDi&DteK75xn`M8c1v8GEW@v=)XS3QBE6BiBWvGOTaN50vrOUPnKC``;l1s# zot|T+^+EK@R?;*h)LC47~xu#7;ZVDq`6|PWPO&+!HC&v2D;rp z)b*em;f(y$)BlH9b@XrHC&Ntua4q%^L179TKKu-jt?6qKoSXBjxAVHKJ-%xw7D+@r zr#CE9EMVOU;rf4yWy3FB;wf!B!31mxGr1>pl?%jCH^JNxf;!+?%D^oK_Rl}ilbZWX zrFLm~me4^*@Tph5dPU@pynlL5p*(8dF)6c`=O?dXTDSb!57BIVkr{*gpLC)b2X?Hw zIB#a@71)Q$Mu~NBf@$|(@{j-c&YzCFk9S9&&4!nOo&+UJrk9NsZgD?pYGPutZ{OJj zetD_^;e@LGF=dG0tbvIE@ix`Fr_V4D@@|z;TT%uT58xKMySw)k@Fc&#zO|2;IzDv2 ziV6X)*`*f|bxa90Vt}ZA#HNJnX-LE_SK1A5F#IpT&B2GaE0p;B77i&Ni9 z=Gy06EI%z0e2KS#8r&05{#!u!fE;VnR?L6|Ov~@100Z~yEDeGH{;Y@lx(jP0zCyiC zWEK!=VpQgFDxUlVCU_)ZZkmfaemUL>K#@1dv-9{<6xj*$a5v}bh`lv}v*_FB=3@Z) zps5_VuvTg?zdsFN(v`-QtI-IIC_mc@G5_l%6`KvAX;5m$xHld`XrEp@)dwl#RY5~B z9B|fpFMEij3@o`BEEcRp9ARp@x{XNLq#xM7y8ZH|gVEwnCR$n<01rUGeSrumWuF_- zp;E?Y)T<}{j4Tq7;B-bEsF>Xt1jLn4xDlNWA(a7%;mPilXa}5-fVpt_+}Eomz8FiQ z(;0x|msWZ)JlvP70FC0AD>kZJF#_L$KRpE93ztt%JhDZvHHPuOmOT}6?%ecf@39t} zJ2IdHMH!Ww@Rp6>N|w;FE?>3vFghKfW|0k$>8#C1t%)1JXw9M3A}X#;poQVYRDZfS zlD0saS~tDQ)z&GRo1N~ij-3OlO(akei8T4{hDAO*9C|gikuEh{&SeTsYMAub=fG(R zrBBVGy-P8hudWIQd<@@{j|yWE5hGCWIW}iJ{V;ryRrwW|z|S7j70;Tagy;5R1x9HQ z9AKjnA|ZSl3UxiCFYR(wDzIG|85;{a(7&Kvi2Me?3I51ltQB=G*9`cqRx>k;uj^%& z-x*V7QsiTd^csT?lc3OSGn*eewzCh=uwQ*)!7kKgC)Dhe2BR^lxb;`Q%}P^1=TR{Ai(Sd@IMG+2(%wrRz8oHutBaB8>`lL zrm3H3?Tlk2*Yk@Bw<1i~9krO2Lhoa#!{D$Vb&rho*73D8i1sW|QhB;vL?kQc)Dr&)J-fbwIcxU zZr#3p69FI=cyImPI*7)!b&SDbVDn=_ccRKLv<&cFk;In=e-}EWP!B)4&g>==J7`dm z2!x#OWy@FHw|K$mFbP34p;#{WY;!r&?ug{cmW-q468JS!ojzZeIA&>U+Xs8l1OOix zX+`u76&)Rr`#9+FJSoVLq-7J*))@m+3`TyJva)hkza5ou(Wn*#Q`oZ@f#VKm$CYt5 zx5y!SeT`rXbkLsc=+nh(un>xJeSHV&1WCLKlvp zoMWeR+?C@|2Y8jQ-d%5!{tac(0&rtc<}{>3!-cfU;+}+ah(6cr=nQyFAF_(c#yZ77 zFXs?Dpn18zz8>p|OV)P+=HE1HGv@~)QMAd}vodPidT16v9U1U(rPglpIlv>W{;{hOR$(@ui(2KxUG1g?xY_=DwehUQ%)NGFAwCWCBh z)NV|GmNRyJu~9x4BLB-*uGq!|Xn5k3Te()!4Nf7E7ASUo0BSuHTvKpydC)ol)yqoA zRuFiWfcAqen?l)NJDCHkjBgK?J$*X%rDF~|q!7m+nVv7!Hv=0RM_G28f+llLYdd5N z?>2sfe2);3s7noGS?ft#+H{zoq2ss$T^0;9mM4njjYGM1Q{?DNERrmite!3U_YY4D zbwbQ4VdfKzyWV`mg0o$jrAA8#>OsabeSQIW>B|g!6}q$;u&`>evN370?k_(K zFXjs45Eqh_orSF``fx!Cb9svb<5>*L{-tE5OPHV%>BQSEUb!+(U;x?0%C*?rp`oF$ z=Y&Org_VRJ1~GT)5+$7m(A+Ud)+4S$hxUZ_%`5{`?B4=Kkd^$-N*m9J>75%63s`*I zj2kQT-B+yJ>kA1Vrbnl-hwU;>NZSWJ9VG$Cr~rd;ymCj=EhMAD?J#uj&Jv=r31~Gd_Fp28X5vKBbQW!R*O3tZI#^J(sfc;XN;BMPMrh03!s7gkqHyXc9vzcE=;mHoa7e6qsSj=8Tgc( z6KAc$tb`IlgE((+X32|hpuRU3Y+XGGC+?K#Esrm62b_0iF|cQO?)UfizbxQb6KBn( z8{f`4i&ES<*0t}E+@q`Gj<{P3Q$G=B^O0&PPl#((+S?e~AM z-muR)R4#~1J@6Y;vlK?WdF~vOJd}ewxVgD^?9iby%QnEF;07XId3r-A<7FcIBDc&! zq^rC8xb)4;DoGWp2QD9!9R&6|vW4m@iin87C&?;U0TIJhlgTfYmi8%)p^RH{Nmy>j&8~Bh4&_i1xg&-Z((NHRzcxVLOd!<$c%?_y!`l%H$MIxib8=?^9FUvzYF27{Ej5-4ErYaU{#WLI-v`z4Hwm}`wL`}~lol2%>;20rC znQ&;Jz(CgTKEtT+a2F)~qe-x`P6I{&fk8%L;S6?;A*2V6j)TaYL2RB_*%jooVn6Ot zp=o}r%Z$~-8<85!O~jD{pxEHd8GfC%T!z}Eo2XZqUyF^M!{S@9T7)byXyJ9;y5!Pl z#Q7lmp-ny5rKMPgNWdW5R!3JC8~!1OQ{lGU8?+%e7&>iv95g5eaW@bmYNj5yr_{FI zDs9*xBUALY-_E|)F(LGj!PQd)02VFU3;le(BWI1Z=ZqZ~aqMB3TMyJY7jt?my?uLx z+H1{~A&s53u>DvPDD~M3^)-__0=u zfCvx`dZ8f=)MCrJriS1|#&=?fFfmZTR=#}sva-@W*K9!i&t)`6CnKkwY;?>jHH zwz{9y=i@ihxOJXNFQSKsJM;vyywTz2Jg1C-9o7B=GzPb|uXU%S^E-E$tMWEkD7Vr1-^3nwKFRm;|(bLoQ%8Zucpo z4+COL<$~MFyMJa=vkO6){i=Vg@3KIMdA0$ew*CUCFQJ1WIr>|W{EgVguJPWr zs+R<&0M8!!w~r%}ve@)QE)A!h?Yf^gz41yQ+=ti$v9d*Ym03~oM~?ERT6wQE5)u-C zGx&vs5X*NFCppelC=<6#w0iRoj5lK}rI4-X6foTi>;#U4$5qSAeVmy;6TkO|E>W6x zxEZI&`ZM=@8`-*}jKAPG4p;($_>N!s1c2Y@?)+1__}HVb>}u1lkvfJ4*M}(=8dwlZ|%kGw!2YtBX5QX>k-00 za$9XLrsu^+Krm`|M&KS^&>B0!^cP4tpG*HEqkbDNW2qb7l0N4aCp5a^`o zKQPCM(;^AIAMVN@bHfG=+YPJj!D_D=_WaDV|2x$lY4^*|k!z}Z-DHOzEy8AXgh7Pq z;v29$%kH`-@#q1z(En zWI$<_aFh@eV5x)n%#I&7!G;0NQw(unOEo76_pF_^Qk{ zpy^F4M-<9Y{$4c18ifAp@3xEl~ahwuun;B{w$F|5gy-XMKS1 zZQJ~mfEi++!lDclPF;k$Z1en)0yGn)V1Qze{3vLE?TdV7m#lv+-k;@6<`+j#!n|bojK`SJgW|ghCdqX4o_A6_^B-pe7}qoBn5^g}-Yppzgw|2SGSGzadK+ zT(}N~0Icw;HM{l|Y-;RvlU%bRw%Y1}KAE1#NP)7LSN*0DL~Ed-fwqaYG=!=CVVN#& z&^q6VxbA#d7!jgXN%n8KUJ3112Zho%GMUw(gt{bih&hT-jVG5lUI(CmgE19kedYJ9 zoo%46oc9ltxp3`+Sb9#x;t=NcG^Ka+HKge1z#nkJ!3$VAJ`&`m6zVzumeuIeBnm1@*xZnoTA96D1LH{yNmC)0FJE{p0b5fDRW^9)eZJ$G*}mH)%u)S#Vpu{?6B@!5BX^ga3;9kABrgAusE zVL1cgHc{dlaYx@9iA<$P(^_G zNw)8B1c|0b4hS>gyUGV+!2l(j#=+bVkp|*3064YQO_I<4Dnjzx-Voxx*Y+q?5I#%= zkz@%6HTnQ=dJ{6Yx0#pW6;SjW$j$}rz;f&m!xASB{IuqQaef^+u|K_|;-!`v$lE6` zA5`;3DwzVCk2L4NZg1~N1OzR}=+f6u7Sv=;0``Q(NExq2*x{4z`gwi+p7j+Z63x^; z#ogL}FigR@r!Ujz8>OL$4$2If05o~5=Y6rR*Z1AYWyR2U;K<0bZLkHP#vx{}p)*EQ z^dHEo14Nm_-|!F5F2miHWfRfvD2F0wVvcS4d83$hM_3_Lq55(($`B-E)%IRMNx^&M6+Fla%_LMxz! zgoFgl_krtT1MrT;t{tFIurlUg7$<=;5ZQM)CGUefuaymp`r{hq(mop*8M!GWL1ui? z7v#kSpxh`XhSUziiw3U&R}Z;EiwwT?SnDg}D^Y(EIj2Xhvf>G06L`6~kct}c_NKfYnC+o_kxcLXO@ z1ZlZPL3{TI)-tr(092oqmoGE@z8gX$L}O2M^o&`G{=pRPW-7%Kv9Pd=_0)cVv9^W_ zW$f9WB-rFX1dmGgL+Ez-ra4fWF%X z(h7*(>ybe6N~mCqxVRq2zD-`jpRv)u1Ir@6WuFGK1Dbgur;i)HQ|uLv*PgO0}`5wEENcPY8!zn6;LP$(b^t57`oYU zKKax5SJ4OA)l$5d|H=8dxW|u=%pvXw)lH+164Dzshqw;C+s#dG>SvK}gH#+2 zpJ9f@3-Bh{W3T{CP^3wZ)+hi0Q&Ckl&T%vbBrnq>feK7FOQZQ)@PGJ1o^ z2m3M=a2?R~i(*ec;XH84Y|gsk;&8eWTG$;9EpGUrmX&;PwQ;xtfSCbQ+Luas_E*`Y zU){NNsZ)EYUcGw7r+%{yzUkbzx!DfD2#~lfiFlFa+zGiG!TlrI`~xK=O-rYtf6TT& z2c`<=B!z%rNUOrf+65Qr8` zXkhvnEFgd)Gh~5}X>42n$MH4tt5EPlM9=}a2G36?1V#)CBF|&l0HCw+uz;B(Wx)(s zu-{CPM2Ntt!!{dSN~6Nl(9l0P*}FW(Zk)((chu1-aPJ?7R}mx>yVa}|;)lIOk61caKnb0H^9xbAacC%MybAaIcSQsN<`)WUnZb~u?3%K~Cb;t!eCMdZFuRW&tTav_PHl_*_d zYY%G(sGSJpiNp*LilH3hgMf^OQS2xUs>&S-P%G>@4?8+KItrBKTVF#zGOMOw76@nx zDpB+?fVBdOw2_zB(!yfq1J@kCpdgDp6#C{kvEjQL)V&AVMy40K+7I%?4m;Z1+&os+ z4>pBipl%^))e7Qa`T78-eXdO`M-2YCBqO>K4o(N?0yx;;fj+iFf+in~gP|J))Lu2U zw`|T>%GBJ?LRX_uTr-5Jnr`hl4TuUCDNSpWNYBi*bWqO+S{?4Zt}BLM9N4z# z)8`Mt%^|2-0Cj8fk)kd~=u{!giECFNq!DbathPjM6=E${M@L71W?36S)B;8HI@V;0t;jVpJ-~ym`nv})6x}G4l-`6k380M`85srcf#O{nTipbH z;T_}ES48nupY)xiM>Ry1lHe19h7YrxI{e|wT{Uuj(Nmik3o8m^dJmu+=zqtY0#|u` z0|VO!`lvgK=1PII96M~azpyMLtz!Q%ZUn7?8XXW4Wcq*iQPM;eR*B5!fUC1`Z36q> z*o(zhv(0oPd8u<`5*~dOj#mB#2;JsaKvkD3FvLmU;+dHlP?tEP#xVVPz+l83+Yo&b zWC-C!fLXi-KGit_7;WU0D?)}3?;(5#V2neJ5EnZ_>4AuCFm!trk>m@63eJ@*6bi{V zSCby;uY!d81iN9O7qM}$)x=@Wz>&Ze`i}EDTYn27zaS12#LGltB>^i*y4yNO5HpU0 zvG7y09h4ihFxXVwmPn2uGVNeok!jZl$F3ObFG5Xn6Xnhl($+QeRak!1aUrBP|8s@? zKk3Z>cdwJTeGe#kRqD7$ay@Z7q>u4XolEOa?99vRecGy3r!B+~s@PlaEvV5MQEp_4bWH*-94 z^yeiv`-ye|5ZY(7er*@T3B;Ne*pX7Sf!sdvZ zjg#X6r(?%h7Sbfi%G6vpo`(t_*{$YBeuU(U!lKk-Wx3T`^ia$&byYdrx#ntuM|Mil8pB@rv%bWc? zzfI3CpYk8mQy|Uu$f!l-#czZ5%LRX$9yP<=PjWBR`u#RNzg+X@>A@%M3N&UA`R||f z_fXGI&)$+)*_|m{1b>^JUq0!drYAV1On%b_+s@ynXT+`l$Mh`v!}O>Nn?Ek6&bs>B zSpRaxAExKX+amdk18=(j>m|QW&%R3^cfZI=SoPcV{PHRPF+B!{10HG3R2=+m(0;k# zPt&u;Uiry}#jbCEo1R~;`SbK>x2VaT%{&$U-#_X1=~;E@rmXK1M~&a6=a*0Vr|Ib~ zE|WjK&CT<->9KjLa(CXiE&jvw=%rkL#Jy7EcjNZU6@Qo>uIwlBA}2Qu{Wd-Se#!6C zlS1K@zcu(~>2K5X%O(FYJ*x$JOK5bR8GakIUoQC5^qddh`{c%>D{Ft7o?ou{^Yly) zG|F9?snY)MpY;3mq;9(=`=)7j?Qhfb%P0NQ^sK5ZlW&iW^XH%WVSl^FWm~8xVx50X z&k})a6N_jf@juH?8*jQp*vZ=dh==JBYcp3jo~dt(sN$B=-=|)+h-dKIqO%%md+2D` ziS&B9eR~zPNTkL0Nu)*Vs21Xt!ocM^B+_&?0sMH~_}otG%iNVGH)LfAy-$R_<1Q-t zGzQgs4+U(K60}m{#viZUOuhF$)>F$bGuYQW&z3|e)BUqc}(rc zb8ejoE-G5|=&JXBNc-xjEVr#+R76FjL`tPo>5!0;kdPDs0RbhXq`Q?45ozg^ z4(SpQ5Ri~oI;8VOy5Y`8_c`Z&<9^?`W8CW>XKeS`ygcuE)|zY1`HT7g@^RG&-^-IC zPpjtM(QPDeBSly602mLDhLtF}+bYnKtD(3&uy@(h66#Ecqn9<-&)`AtArD#$ou$(~ zp8A9D(A;GVk;g`T_1K{Bvd=FSr6+m*=J2Sb?s?>5T9xb;pH# ztr~ksouSv{USFS@I{irJun(B*leOIjKnp_{GBw2)_uA-yI_e5!Q4gqLvNVBod1K4z#vAjRwQ?x#E--rUI)IjTG^@^OGpqXs%q+0kwXIMFlB>Fsk`;7vNqnt# zhYc;Dp>lunpbHXda3DaqAcaqhraRz40D8{WJXw?!23D^h0?HywFO;+nwx!OnR&=r- zEL%tn)9b^$lm*E44i2~5+Ctp7)1W!Qys^UGdaFOT<^o!eire9RBDCjUpd=oxsN2a0 z5C<Hu+w&Awrl?h5*qZ{~no)4i2=7QJ0*d%?1?A?Z`q`Yw%P>AV46$;w@w0~w2TaBZx30JfR0 zCu~6%R8d}zfYAZ3-uok^m(JOa4&X4=fGkz7ya9pwQ*G^2K<@8_UaQVfNJ7OJ03I;| z9c1a_!;h?P(zxCTf6UI~1pXVk%bugboKCZ&P)Q-?5_+xJ6+Bv-Sh}Or*PEfAS`#a`okaKNW&0_uoe%t7JytKdsGgU zH=}X}5CaKs+_()CRd9Icv}*t+uk}xLLl`ydE1D9-Qq53xwgt8=KyzDOUWPT&h64qs z88*39mtZSyi*6C({sg`2z*IPo@la!e5L0Gs3z~)rKyYRwz6DJqBoKUUusi8KJMM-< ziF+Acp7)nGYy(OI91=a`L<{d^D_lJP26hADVG=4uvqw)H)GXV-dVCf3A`ueH7Uhtw zhS2@t`93lU!y$sdQ~&@p>mw&8cQo2jWVH?$Hqtc*bcqzx$9k*?*%&}QGc`A-qv|>U zw>8?pX($($9wIa;B?4vZn^e_Md_#Chhkmcnk`$S&BeafzYI+qp)`)*B0zKTE+<&-x z+cN2up56>XN+3U;x&%RH@_3%dW_YX6b?$D%^WQ)Lm(kt_k%1i4olqX53eWaD&gd^U zLRIZ=1Xgt7+clFXEPTw;y8u!jK{dJ$^*w?KgKSI&x5~BCi>O*qW@uZ(#_fTymN~ zHoJf$URb;7>vp-N!$65A0GKR-LxcZGuhBqo z0dxpJwC72|1eyT&UMDDr`Z$i$U5JXOZ3^zzusOj(1z8Uin0|5tvUp2a4*ud06clvf z%@@SQW&1@f8rliYCA8Pt(~0%kz+_GA1$5pyi~s}Y;120DDhTDD%M@VWAec7MHUAM_yKPBfwwX~3M65EJcN9NDkRdf?S)SW z=b4*GDKA&;=W=L+zW#VIOCnCfss0TKb>M%uV_XmU#)tH(NAE43Is;k)qN=`PraiR^ zbw<3oc#jp$Nq(?$8XL{e&u_i$5FhsmcvUNKK@0(ox_RpQ>#7bfs3BEU>^uzKx}j{6 z;&`o67rI;*?oUcP9kz`{5tDe4!hmL7@rdjnU0SH}-YPP74*Qe3Ach6cP6$YeBMmJ8`hf2C ztNaq|cQSgWTBx){LlXJ3BjdRFY#cauN}mn#a1!WJfKn{a z=WlnPxjD&j_io3D3PgTXF!Z_CChN~^l8$aI2z;c^&n+#D@P{RmXdy;en5L<{i*Vs3 z8hwqTSt?07c{TmC5)4&WCUDV_R(f^8*&M6K##j-2C5xpw?LUMb;NtiRAHUH3@(XT? zC(6n*Ez(h%M7>KCLN6- zt*|OYu>ri3I=IpyzL`D11#6Iu&)Rp;Ue}$6v{Izdij#|nxsz5)08pWBQ&vH--?P|$ z9or&_G}5s!AZave6JW$dplK*)$QCiJ00-f8$_oeF`G$tQErCfAFp4raBrl6}ES}tN z;eqVM379iAF=8wscJPcL#O#f0-0j3iP2{JRZM4xe+HK&lmRVH99*T>vBrV+rq=CJF z88|<@pyhXm><+;W#7pf~RJ#sfkd7a%RooynhX=FOzA)cJ^e#YSM!|XmUlj@7I*_3t zAl6AD{4-h+u@W@SZ?b@}r862c-3@9Bf4+-sCpzR|pM@YK_Ak#oPn-HR_;z&>6K1dXD zb8b(l;h6ja)~GD@0C3nrA05`+Qj*wSHAC%3aUSf#GdN?yCrb*ZCMMA825?)@^e0od zEGsb=9WC)2KD z0oGOx@!nXJJKG>X+kg@vACOtNzS=q|x zhD+6_$Z3QG&iv2;67m|DgVsv6lHs$|S5jvFi_q?sv9UCl5A7X)8d9GyB%HYeXW$g* zC-s0&!`6EwzW~SL0Fr$64n3%LRMgb!ftVpaTW-)+>{{gZ}oL%^jW z#zKTSAOVwN0_v49Or58gS{h~?!!1!tmZ+HOxSBDQ+Ust2Vr zfLNaOC!N}YVH~YS7SQo(06CvMO+`Kvcs1dJVkTp;ifWV@Z3Y(r~&$Rf)Pphtt)T~w!4|2S6H$3V#G1<%`CwN zZ~Jp)iqB%F$g&&vrHeZlbkqF=V?H7xB7_FTc;mjZb^(HM2HZY^c*ESWNdz@Rgq(U* z+~8m#G+3^qS?ZIEAFd2LS{hHEtjW=LKv*YPavsu(A|M~bu{&x$N^yL zu&zO;|Bw;m8qlEJUV@OAPLclxG@7aYC5&i`tv%2b=!t_dV*AJ@LE^DIc6v3LJf_g@ixEui&8Sm+Y&T!0GMoptO1lDrNBU8bz6EA5v``}WB{x*lwvI? zB3$8K0IF2lD0^Xg`fRSw$#S9l&fN#NIk~wy&P%l2y*hAfS9kz;cU?)wL&>4>_17@? z@?-X+W^g1o5bQ`kbPuj})&A12uN(nf?*T{;`GN>H4UFbN4g~~+tinPMSQ-AEx63Ol z$U^~zZSShizNmr09KgY+zx{+iLsAT}bR4))%Ba=7BS80dfiIK*(Fj>*#IXx-AvHKI zLui^1zqPbZ08w;=2mo9{56EVUX~Kbajp*LSHa`J&iMVX#=Hxt%&9iy(?Ab9$m0XcL zaV|m`E|+3ZS0eO0aI^>D`X$vBEcElRqK6RawuT{9g=s13e|abI6Iz^vK~Q44%|Vgd zX(*%&qFHcWpMwA3z9y9=~7v6gHB3h5%wtb8;;64j>m7oZNjY`>J4eN>|I2^QI_pdhrN)}!` z4Nn)&u_k`FcML3-$jT-_2c6;ahr)5+6&b?_n?uJLs+E$}52NBv@RjJID$UfP1M!GS zI>sRdrVaw>#qz3Jwa@AJeFXB1c^U9cXib~~mv<>W92@}fTAoe|1qTO1Lcqkp0NEJg zfI5y!V7xh2Vi-ar-Ad;2YO@ik*L04jiNd1?e*72*PfTQx%(OujB*#c+WA+I6DQmEy z>M-PNKLlc5K}o+n7Y`5Iptg`5!V4*8@)J#I3#S)`J0f5qQYfLt3rC38 ze)Xw@l00lNWYPc}0itJ?4>l7@KIb6xRY+rCL?q%H3fr@0$&@NqV9ooe06F=S>xjV# z(grc;Ae^{}+=<&u{f}g1&c6|{v)h3(9BG=-YbU|*Pf&&+wBY1qq+UbBZ@QlEXN~E( zO$~g>@JjnUJ;=$ef~VQuoVnm=W$T|0v3 z71x@)9|pDbgsg&+49Faa3>5OTaoP-HP`c=YzC-x<7fyEli?={Rdj;)1$To;~G(nt; zw2knC0SE6{=~)3&7K{uyWSUVs`4(<>i)JCHZY^{pVs_b+H{kC~Waa@I{WciP)a>v@g^U2`lhB!h>DZV5+N3y|Tqxw~-p<5OQaszXvS&|E@jQ3FyC;z&TB=s4|t zU4DOAt$t+mi2HpRuYeeGB`5h^KzoiRf;3Std{31KI)$x|=z*bnEX4BD#kIqO?(Dye;LMvhP2BO{T=R*2NNLmH^8f{0XLeREA zk_TEy!TvNJZf*eUQ7|a2vhu^>g(f!DLT$l6(Z|I_=Zi0O-=$y4+uXcVZn)SoI$qR$ zgH!(74|o}zpqB&uD_bs7W{}bcX+4CTF|xAO^k=#MLVW<^U7h54^;;k-HCA z6$4yyN)e!>0NNa#DD;1sSy<%F$!Jo+!xFKRYolh$l#BZr(t^0m&qLsnTv!r1FPVqmc`!}*^cfp_7TB`;~P^TYA#IK~}4{-eMhTTxypTpAM@VP-a7VL^@u!94XYPH+E}U(_K2qT=8@ zAjhN*XBqArf1|cA+EfPE5X$|fuuoxPW)teRzPdXg3-jGc-F(9HAN1Tef^@(@VDuW| zI}h0m#A_WGudAZ+1Io-qgD$XxLPE@GV=)uY&0D}2b{@FR03yMUsO{zu~moR?#>GUz=ZsHKS{7v)h(2C z@xKSeK9`l3n~#*X*=Tn#{Y6z5CEw$ER)BI5F?WZEnSgl?`5X~p&wt>v>8VrYmVFm-Z0ljYAf0Uyw_;GYTudiOyX!NtYp zIFSOkGIT&vhdyd2{VU2JQq@lizw9LL=VI=VxdLGP)iA&gq`j%6F|-mt;L^nu_P#Ryk|224VpjQX?U6b@3CkGw5; zT^pK-#5JfGJ1)pf)s3##tcI~}M2U@`CSxp!ml`#=s^jwC_+F>WBCeE2tV$^zX2_+e zx;vJm^6ko>k9h}J8?qNK}>S*|68vgPdVf<#oB^gUnM94s;Hd9|GXYsY8r1498nvjydVZuJ~Ju*_QEf= zC1;a?;@#Cz`h_^$W%+J6w`*H2Wr8mQUg{LBpeuczI|5rF#lVSlr?;7Eg zwvsGaEv<3662r+~TfrTqC4}TOk#cw;_ll3nrcCFDaNFBNm!0Vj4dluROz{l@E}K6ejAiuU!yg;c|7@N2N~WeOKt0yb z)VzP={37dnTx@ObH(y#tMvhy^k%hs+HxGUd$IammdXLU?tY1?;N}hi{-0K!RrA5u) zHmcxZ(>IrqL#FbaJ9zma&5gdH_>W0)2Y2q&3%^&5D_vnT6hwYPWKUFdC#vM{$CtPZ>xoI=+5G&2pl`du?ka+-V*!jg9;PMsvdC*DU7XLm z1VKm}58ID3;ehMjJwUFG?{y>ujl&&A__@HyV!ZkX>Smd{8}F?y!2xE`lpf$M3WzP< zyf}XG%8N7ArEdgl?WH^F`Y|8K{`{gZO8D4*td;woQjcf^^QnZ-^KNNVS^wblCn8*=!KLEI3kQ)YGBQ%8 z14H4qxis&>Hl;fqMW)3cJ))(Y3UxN)96Dw=QkTk$Y915QYGv-yG5fVD}baUp3I?^7Zva1kQObKUCBZq(EL9@x=l}auNDp z$H-lb7$mt&9!($^?aoxmpKbaZ*YNm4LUW9kFF`Wv%2Fx^RMawK$P@x-r~s21)Jv-w z8A$rC3lKGA?kspfa?L9*M?`dpeq!uCGIJOJSuhZB1GF4pbN{=AJ10bU0O?-)n}8`c z7$X6~1h?Vd@4x3?s(gG_=UQ&JD#p7#@<^+o2fSEYc# z0pPHZvNy>688`|kDzx`Ka&vPZO*A4&VlHkkRD4L993k2JH+OSsA-=S83FSUtQ4wWu zaN*n|rMIZW4->XI8ZkmThfyWo@9qTI)W3KdWmg*VYL{9!Hsh$I{&NF{Z-J}ql+k~3 zz2m1*Hx$nYX6^e7^kcCAmi+BTZ+mV#gYx-+B(ji4bfG2(H||cYL@5@?ws>}K^GB}~ zaVBYdhe%KGAEoYSh<+nRgy~)29R_@jh6Lk*^}Xn*C^{4yq@0$#t1oR4jWSSU;gb6h z;mvjn8x;EjPLVLF)=>bO2iLEHJk=GDF`B|MaIW!8OuAQl6&ms3lYzpu>vj3!nl&yS zKs9(c2wm8pd4fNFRQbItPr^5|+n&ZN0#y=Zqu|2Uf1&2w_$K?CH1vPxS(}!VYkN+Y z?)a0@Jsd#E7KIB{ZBcg5)g<)CjSo(cO5Lw*V;x|;fA}Rvfwi%f1_#3C2{mOr4 zfI%aN*y~RHay&nN{)B2^vUB|nf`mZsRap@i7Y96Is7XqJHjPvRU^)05c)+Y3)`o-Q zKqFoy;Uv3zhyR`#M?Z^m#YZ3i3??0SK(SCMX(mA#-_4DkRsre&A&j;F6{2Q6+0K;Z zgCZHn+L8ZE7$I^ZP#?~y!QKdjh8?x9hQ^L5q>ez-u!xM z@w%G2)w;K$>A*I#gSg#v|r&*gnAFX$~gd2)YrJ`6cPoXx27ZiN*~G{)E(qv zV$1qQTl|cQGa>s0w;~Dd$=b-A25pKA9=$&C3#0!g{H|5RI50?#>8r-eVflETTW<&^ z*;%!7T3m;4i)=|KSrHgjkzp1akBO1-3WgW>x2S2^{eTuKcoxFSFTjQBw5eZ_`Zn&U z3KV?ngamds@nKHj|0Vl(^Cndl{=CvOqG@uqWjoUo56z2#(iM<>e4?8>J6|1PtC#|J*L$e%;==w8_r5sKgMsXLaD>S4GMI5Oih zf71oD9>xPzLC*(ybhtxLH8uN(QQ)!;3&&gfCq2(D*&-JygiJa?l_D^cfPlc?aSQqX zU;F(hPp_?|?qQGb|4Wbi-#BsE6L1$#8C~^j0?GmBz|as-Mm9(DH2aMJ7x0{7FIfZZ zD8LBRsi=rMZBJD43kyNRjd{zbC^|*a2xK%dsgSh-@&Xwr@;lkkC@8(pG2Ft|vD~;A z8YSiYjU)eO!Vy8xT*ch~bgTDH9lvh&mC|+2TKQL&x+fGJDOh20!&($ZXwN?B67Csx zOu{9oIkR9FIRmC1MzRqXsd2!5_tssp$cXnpvx?}KRHbjx&TX~6zCBu2mOxVp<%gVx4Y~m=j-@WHy$L>IJ(+%1>nV~oYN`O`SZE@s(0hE z7#d^~lhBSA{LX_W@CPys^naI+nK4p5zMH1lSENl3-N?BdAe89LU z#-QxP);#@F{5y%nyL5i&Z^9%aEY1CR9mv&w-+FbvhX_H};6=K#xi-xnCpUU0&~O=k z#+kG@8&lR{&62*F_QX7F$^0wZ_CV>o56=Np<(3-|cr4f7S*a_-z_-$W%_X#8iS)V@ zg~Sya$(gqnJbZ_RqB^ht)@p|hzk{8_CtrR_7I)WaxuFs;cs=+%!+TqDt!e(ynlF+O z6M7MRkB-kfy);BE6)yy?iN>!!Y;2<3>vDgi|0aIyeSav08P9=Q)17}l)LH(nUYtr9 z9qyO(U3hG-2Yc9)xLEU?a`jR&^QzqRWi##%j2y^Av8GY$y7TIT96nz=drim%m1Sn! z%(4@0{K{MHPMa=Tlail1WTWxEFlJwvh+{wL*5qF#aM$c*kxJQ-VIGp<{vxR@uX8t6 z`N2LexFh-|Yqq{-q@I}YvMYw7F zb!x#a#w$*MUpG9OZPPQyL>U~2h}upjfk$K zI(C4UhnK1H#U9cL2jCKo!%)~KWjt{-S8z{Pvx>MDxLp66Qd7DnbN5mIEo)~1jCM(xhk8|X5yWh+S> zsDP?eN!`Zt?IISPF?vfGkw9BKh1V|R`{}j|*00b9-o^b-7_OS#ex|Hy$78Vmc;t6u zoeqkd25`$99qJz6TzXqiTWM< zRIHP%p_in(z@~=&V{4K*k5~^?`t8{|UHn>ky=$3h*}bx!Ar+e6{A;`po@(CJJz~Bu z%xukX{c@EvwobQ?EZ!qza zv9bRz+ZYaw&kHDSj=~S3Qtd}0)o({kodjaUBgA!uUMlD=O5oG#_>N@|b=1!5#x=}K z4tI;{+G#8$Go|PYP*_2r4#WMnb7P8dftl+bF&0Chp+T@us1z5egy;u^umXQo;gW zWM7XrY!P1k+r4>>Qn)8TWUsZ-_4C96MQ*?Q$&+1sM%nh>>gtO(?XN#XyvlmPz1dAC zZHwPXl@uT4CpDYqMRVg|cAy~PUQ$<9^Y#sy$5$gGqYY*6ja=mmc*a0*XM>b6+~2n^ zmAt$>QC+Q~sC+jfP0{8Y#qF05&n?>TfVzH}~+iEYG z{52-LYF4xZzhhGd3sg*Of)J0|OnRezT zcixUqW7&SzSaaVBH0Qa$Bx^p5M=t3vQ{LXVhaW$^c=l;##(ydSSK}?uGKLGY@s-T+ zK6976islX+b}b6#!e9N>oQuywNMj2OZrPHt_wgjsMo_;&PwHNXxo+?Fl@EEVSn^Vr zQ*;6~RK-6XFI<)haPU+iCW@K(X`8`GHvbv?L+d9CC2dcdG3uEZ>RkE5_a$PcW9x@( zI{9vQ9FWTiP0%wK8^^t33naBJ%A4gjAI*+!ZVe_|*~^Ljp+(&VRU^iyhnWg;wQc9u z&SWH+PE(Y_w*|lRe;ZR@935V=-5O3Waw9YgYK|DA>l*^o1aa4*r$cOiI!u1cc3RwT zf%7nXAiUZpyqZ5k6Ms*{1s<4OS;kwW%E3KS08`W8m9Sn)03=AyaqjK~rBcZ_(Y`!C ze9g*}O4`f@zf4)&R@e6iZB25_3nGRN(r-5$O%ri09quYb^~DG; zSyVPx5^|oGcQ4Iro6=Tc7&jLRfl-uFBenNiFa1bpV05_0wO{MJrw=_Qb|O!PiOrMs z8k>!5-=cbhq)IV@xY2StsmD8C1Kc?2-*VQCSCx|y)OgTgeMA3yg0S?h0|cfeuWOc< zt)3NDPj|GUOJZE7%vZXeG`68N>`;+2u1G~bqrxLU^Lb)6&3{&m%jB!n@H!U7(l@^x zX9>3xFKWr3&RU({@sYM2jgsuFi(Tx!8Wkp7bcs?{Y14R~r{#4qxaP>kyId0aX68id zvJ3X#CMfaLEPmCjcNiq7$}iI`7p8B{Gm&IV{UGTI4smc<$$F*B5TR#rdtU!ptB)wX zlidAKq%9|~AODJNipKjZ@tlep4hGx6EMjf{`c0vqVS3gT^m{*l{=^z9BC~1{?jf0< zCPn*43t?MwUP<61xDT5}-}E0tC5*D4sGRXUpG-qLxybVAoJgS&G{?ai-qh68VjZrz zZ90g3wOB+$kRBmJGyx`n-WzJ|_Bmjh!)`}*D$*H?ggFH8>mQg@j7zrZ+0XemYZm{c z9ycB`HGA^?;iJ_jT&?fFe8&^FXqGF8tr8*$=M1t4Y9^3-g!6Ny+JqROxx`$U1FWj5 z+L!##$6}P-QFjKEzeU)ZXlZwL$IF`_;_Z23rCbSBlW9Ztf@Un*6-&aV0HG26cF~1Y zKHu{Xj2U|cFWGSyEF4Buo+!ZXP=1EntXX&FCLPu%_NKTP8e^pKe1DtIMww-0cF+vx z=H|XQ&UKAc#E=~+X56~Iq|H*K0qMJzaB`tk(WxTLz|3tqFF!{{d_}M5(~DWM_9hms z5YC5$gYkI^3-MM3RSFMMigP7P_Cqt7$P#Isu9Yo{aF57_5n_5*tqG24z5-vyNVu(W*fhW+cLp;8z<5hyef)Hk!9)<nE9SNz!(|w?E73EUJ z|JvjbWK%ajJL4w$hT*dIQ8#)Qtq?l_<~;jJTB6PU+1FlwUpxk5l{nc(T7b}ZAzGG` z2W2hqN>4wQhS?1r4lr7^2=(q*xqGmgr8fR2U-{0QJ8Thav&-{Ud_6+(`7rEkJk446DRJq;eTiU>bZM2ZEf(YQh}W9YO+~ z7M7ag1_qOF&BfC{47eU~wc=i7*nPmL{FTC#hz{p5D$2DT~Zig-@TaQ2p%4BFU_q}QnJ39L(2FG>~W7wTxJ*vUSg zc`9?e_cJXK#SgCF(WiaJp$@l+h#^iiPW3f2I-u8|s8m934@@0De|-hxidGV~7_R;L5as3bLBHR> zSQJ+Z7h*S#5AjS*W_UAZ)3_n@3#vB9q@HZtZOE!xUz&nw}UUKsFc;!xko5Vx8hoBOy-`1eyMi zI(sDx3zLIa_<0fD#Rf^$;}?HZQEPvHLgo*wnOd9O`0WV{fj64&^a!5AfYh~M5rjus z+1bWHhpyZyigFIo_u3vC3~&-Cs#K|C$>@qK*G*GUmGN`l;MX~KOG5ImHVsWu>pwmB zY`ea)hrxo<6*9U}s4Gr3hZLWZyjSyH8E4b*svL!h311B$ab|J!v(|SgFik0HcutYe zB2Z0_rmuGW@~gc3@6_G;7;4l4igf1^heZRW{BX`eVyips4 zdr#wdIcp?-Jv!zW*5Kz{m1tVZ=Yfy>3(R_-sF)J{kW;7ANfZ3ZUX*HHY#F4kKD%X@ z$jg2;eCy=x_d5G>1(dDz6V)f>%N|D#(U<s>(J0V*SPA9kUJB4o`NBuQ zK;JB_j9DiYHZ0_PkFj}n@2c)&z30bhy)t)rC9$yE=qU$?uU9=~D;L>_T@@M)JSzL9 zbLbZBmx#g#RACwsn-O3Fo9r1db)fa8L#Dx;iMT(Tij_2F27u_&DMWBPdG*cszo>Qg#~rZxFn35U@_n90J+ON5PJX9&Xr z7Ql0yQw}kaMGWJCQUoeODRBhW20k9Z6Pk}7BO{~$p7;!8X;juWFmPrO$qFDw;NQg$ z{Y0P#6+A6!B=h^^b_8U7TOh$8Gwi{7Y69m-lv8;&PYmVd6`-sKxxsHkFcwTuv3mh)X zELs+Ut>FE-!1s*)ky+mxcGXMIpBt4rZaUU`YteBAkeisqQKpsHX7*;5#l#7j@2{>^ zh<{iXP^2QYpbD?NqnT=%P8dyEWYJ2M5jrRx+Evx&^h!;3%cXOi@+HF%svP(6*&x6+ zV8D)F0ir~0B_%L$Zb49*?Cd2V=!2I^Gnna^c5nR`noUGx^DKT zeez@nk%EDYg4}WH992$!z7{m#!9^LOtx})ShTzy~^{`&C=)yz8?zT2?)!b=SMF=jnw*pMI8#ITi7)McKQ^=Tc(oN=USyvXS2QNyPH2I=_)GA}9Zk0~j?05}jv#0EMr8|D2|zzP(S+<{WNvl{-oVP~8u zeC^%2y$aH?zD-{Gj`gn{?^;%k+Os2XYCO?N(qU$g4?nlP*URgCJ)p2xG&F}J3C*m; z=)u*Kuh|MkT;iVbq=)KwDw+9-v;!};FB`TLZ$A|8YNH4ATf1;|CmFn|C*Hh*?ek_B}v6&Ob@~^Xxai_fk(X@GPS9>^z4>dmXYXqg*8jEcqoP z-F?qH9~oUcz?2S4pIyf_wkhE#7UV1LV< zg+Rp70`OclGGGUIc9!%;n@1;YOUN{f@P#I1YyePqn;ivCL1wuG)I$d%-=<%{Z=x^k z8ymY7((1KK>vJ!*sdf!pi0jrL=F*yrDezKpKM^!9qOzaJWm?8BZ8@3qxs)n1bzOLq zJbnFyPqwP*A|b&CDh7AT(HZOB2|6|Lj@%xdl7{W`DN{5tKeL(_7#=T$9ua?k=HX?I zYpg%-HvIC_3XVxd#NEWXaZaBR2{+yL>>u~Mn89v`}@VfVY>G`x9}9A3@%2zrgC=0GdS4%g@5&f?t?19KsvX$*pLds z%{%15-N&s01)L_m4+%$-=B%0@^seKPCaKDBJ<4h_8cn=^M)b9*|3ev$Nqod>QPGiQ zx)R=87M5Mv%gl0H6{Sz3xX~uGF3jtN%>|E3@DDFw32lC~;CsYify&?)P+%jV-oO@c zHdI!3Oq8LO55#Kmf0C57|FIzPSCG%=D)G+>)ZbC9=@YDX!W6czm@QyMeN|ECSRoGm zdH9CPPRB>T!<|=dwBSQA1N!Qgli4Fhl~GAyB`oO(@sQ4Ssigg`y9CXRQYi}`fA`^i zOgi1p3=e-t;I>vWHhi-5U&&&h&)_H{5@>)_$87uMz|qbTxTiMHtbqOrv`ER#Fd(cE z&8l=(Q~Lls|Lzh$;-9u0@SP05>y&W^}+V1aib_>>{!|^ zRAyGNV*o9bb1X*%V?jp{GEM%G-FxSly^a`)2jo!t{GJ%Yiy#*>ul zqPHK`m`m0lZY~AB*?s)m~|gu3k*(UnpB z&Gyb5*@YvfxxK+|e!ev(TH$^ii!JcV({Xe-yf@y{T`TI;&y`DW2Lnw732_>em)Ma3q9f3}=7PK%x-9Ux4x65b^ru7=7hFSuDz3qEp;4l(U+o{3q0E8Jw#q-A20<78rv2+INe{-`_WaFBZ?+aLIgdf+<6~-+L zj(ahJdM$bq60P>drRIJb%%<%D^kjS6{TH>^awP2UBa@|X7G?g)_1n29foJ0HlkY~=l zsh@WYPCN35mQ=>c7x9LetfVK-R&GI)R@z% z=AxZGnQC03sX^v)dH`CaC=669`lc`Sv@sx4oOOI@MlVA-p0%BHw4Tf}?(6yzHpbVx zK0MvTKK!xXaxyEU6znjw7iL(R%j|8eBa|Ptqa@(|jP0pKtlM%&=3R`=R+^5RH9;EK zBMVp^I4rD~H|EIN<8*#^li%}@p21HrjHgi^%`H35o;#SVsJ##}G5mxuG4pXiI91cZ zD;5t2B_*+ngkKe_Wt!t;qmC{!^6Ya@mW^&**7VP6J4&t$*&q7ZIuy=iMM0sp`4-EK zopLrFvAG4U`%`dQh8ypC2aLd^>DUC$JHO4mEEUMoLtvH-A2>{JGqcrjkJY)0h$Ci| z05M)q0f9q$VJdG}^f&Bf;c7QOTIoI&m9Vug&+$risymeY7PhRKVLpraT+T==tHRw-Jn4?19Ah`jXhf$r z^X$EJ=dlxh!m-i-SEwCTgg<61od!+0a9LRV1Mjd5X{Mx^Z);twH2By1y4ot+9ODnT zzHi;8GLAht4PAA>-61(a*$7Vk@=t$HBmLt^Oxu!XQw$(aNH)? z!?VkXi{*P?hgq#VvZ94W4kCz`_t< zVYx(s;e3WIFc1gf#2#dSKpaQL%$}BpbUgVr3pF(`%|hc5 zAgsgeb}JC2RHp#hx$s$)HE`jR^?r8x`(2=RejP@io%i)OInQR8<8nW$@WczBZTOYIP&9U@s^Q{d)!QJ^9b1`=YK^Ma1vU^)-vJ!Pyq*`lmLHy>B;r;|q zK3>uu>HZPO%CMDHp^esU;6< z)(@8Pv_|yFJr_LATn~$g(KrRS8Eg4)DABe9*XZ218I>HtMF$73g^=8Qi@c#(O7k|c?rZITkf-ZX;|JJ2*Ql3O{2x%_V;kyw3aU8QjCJZz zD83QoEOx7rx=bVYZcdkOFs`y*9M?@0MLGJ*?2h(msZ9VC{v-67nBosv;Rnw%TAuDn z2L_(_gO-M=1(VF|WY-lJ4WsBExE>@&$i!cZ^{Z%KzGPyloR6HSlFOLWqFFDsdEN6> zvEf5v3pRNy8-255qsg|i| zZt&JR=xO{{3cEW44fm>QRhw>RP`qz8t|+Z3xgAo>)iQEm&o_eRa`|r``Sk=*S)Tv% zgKj*6LZKudt0KE3mHMt*PSvcn*LuuVgNtQ*k44Sa{FujdB2rFzQVf8s~> zD1Q(U91gB}ocsk1Cn`o!u8||_=Fx4k(|)m1d!%nHxbO_^*{>9y8kmjc5O!918I)Gh`=Y4=CKx4&}TP5{^eNXv4#7SofG?wJl!Sf{Hzn zFwiLvsSCJb-bY;{!@k_v>bR-z^;Rn*&SU#X{&!m))=4XxNQ93kCV{t?x$l

    qK0F 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ⅈ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

    b3*4)GMRAiq+cU(;JBA|dc!AOIPG1) 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 Q&jU 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

    !7X;EbuGG`xe^DB4@yob$(o>&W=L>odIiR4R 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

    f;xISfnfV4AIf{B@h!Mx+E$!E$hP%>gW1o}l5 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

    c5Zp|N7(Uia;*?=1v+{i0n{7wESHX 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 _*GD%`||tvF{AR3n0K?kIkNaUt_d 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ξ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 z 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

    yS5az$DHP<#zmi*W2zO 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�x4S@2D<@EH^QnSIr@`= zR$Z?1`qrr(Ps*&3AoB9jp->21oU-##amUts=_bv&?!kNy`+>J>*}eXNod|rur0Y-}hlq)9njH%v{cvF3H>oWHb#jvxsMvmBtl8cy8jh8l5`CAGj zo%BklJ>u<9!)z86-|=a~9*UTMBlUgC508wG=SlTdJjn9Wn^~WVPhgpuSx7TyyL`J- z-8c!7Y&8k7F(49pub_w(L*qIF-vlW;w??j{Q{EHEcvfX~4g30W{^C_>q{1jK%Z*eQ z=k0%P4I6P4N#$8AePM1Ok+?;G#s5VsOp2phd-SXE{)bVMFRdERW$V>8o8&TjHQdeV z_fp_XHbgHp?#<(IUTLx zbxbW|%`Q&YRRz~pSAKD9cKgy^P47BfGUuS~o!Cs0({&;kv(`NJjhJqc0AY_3sSs;fHI) z7_73>>fcN`3Q3*ye z+(5J1&-*Q2K$MQIbSA+UG13LS zP1X~3S3*10v2V1xUz{mr+3XBHbVS=ZsedQHye<9uy?6P#vW*hHu0rYQR9?O~d*G2S zUi~t$D23M|#`}HxXmbdq>-_=31=sUHB~SDNtsobzO6`d+x$>1IYVI<&g~Yk_C*xvM zWp(0cvSOrqCWRz zziy{wOuuEw`2B~^t7^gV!l!oFfg9j7;&*byoGFYPKDh6tB+NJ9+K`7Oa+Kz8; zK(s*nwh4j72|;qvzNjbbsMGn1nC(ONsgm*yrxYeTUag5O$1;MfZ5@Titr67~xYq}U zCX5J(=)IefaYMT6{Bd5Q+&3S|c|% zH|73t%_n*6qI>N#2amqteV^mc!SZW(=)Cl*QI+6T>%!8i>IIV4 zH?kDhea3d~x+j(^w%&H-TFtYYw*hEGjUyD=z5b9woB})(I}OU-U8^x&oLblBH(acY z7app64YpzWlh$M8>N7Ry<;EGE9XW>w#0F`+HnuV+#l9^VPfO5~cWs&26Bw~6esudb z?29Mox%eE?hyiK&W$E@7^Ou$KXPj|I`3P@|Xhg;=#~LY(Jn9CtYo28dgg*5c{J`s$ zjyZIp>-l*oI(}Y0cNI`wX)kw|*>a}uggb&f)p=T}lzf|`5*-cF-7g`u|37|8XJyQ0O#a@XNM;>~rGr3*V|~#OAc=znj_{?F69|L^izD>z z!A#ZY|DQht4a!BDlf<+=?Y`8aK_I{Gp`;?1N(-x6zg;$Vnttuop)?bHwBn^*)0gMS zByLEU>mjUCrUqhFv*31F>%RM5_D+W(5T{n65-qes-`kl_*xKr<)<#a{+b&M!%N%?% zxY2HY<`Z98J{ZC6;HC-u6J8q2ZSTG2Ri=v+CiY+5EhrVZ;Duo_4Sl0%|DB$!c!6H{ z&%&Vnscmaz?~8K!Gwe!vO_^ei!qyz&n9!An#mDGRcQ>Heg(-`>B{Q{XGR%NA@-|29 zbgSL25T2=Ql`K4JR95@JoI)J}u|ooyzy1;Ljwh_&cW$HkE3eP$e`zG|Ry^AtMC`cQ zar54|-J-WQO|$&3TXOMrSe?APg)j#!Qo}5YSjSyhyWtJLx{+DsDr|=!YXI+H4b#RI zPP=BS&?KErP@`v`JR>QWX-s<)KdGTk-bUW=(@M)~nGQE_`oqV9E7z*8sj&{q* zGdhmN7NRJHvwq52c`j%UsrqpeHqqJ^9WPu=&RTZVpp(6w^MXzg|3t1&Y0+tV|>Az zo{k=|XdtfG)m{Iy8YS>U52QNKC_G|@_;Ky=roZOK%`L0&YvXofOn;((HflIzg@@Wz zI&Jmjb}PTVQgtHnVNtToVwp^~{;`845w|*_Rc&6AF5xs|awQO1eQfG?0y7v0gcSyh zt9D%QGD49fCoVK^>KrAndm24D4{A`unC#sigO~haT-3l8tTB(8 z7-0jYGQv$ZGJ0c%#wH}7+;{t^-gTd2^+TXAm*V|*y#q`7g3R+)ioS-n)6vgreEcv~ zW6}^sl>h(|;OP*{WT{(p-$j_aWS}?GA z!030|ZY;S)bHdl0*_kWZHG^sA=e2v0|JEA<3FHCaGwHI;&CQH(tnxfD7K->l+VbUq z4-B8G?Aggr_K#&-)xywhiZupsCoC`aTV-K$qO?krWOJL8KCu}r_rIs zotY>TFpnRPT&@ezj}i!E;xxp0-#;fCF?^(_QWnMX4zYq!(VkhdRvGty{*c z?D79Y-kZl$*{|)xt4W5GA*m>qN}^~mloD1%Wr!?fj8KM<3}tLkWGE_x%ra&ugiIwB z4J0IUk}_n>Jgwhx>2B|PKTmtV&-?zK|6ZT_LpN((>l(h_b2!f9JWjXJ*g1i^>~$(> zciOc{r0paunxx?5)Woo$69=w`as14#tC5?1Sifn`S-na38A+T(;=T3Wbmg$I52ZHb z+q2KT6KfgRf-Oq#GrowgTHhr!yid5g@MIjFHPxuvy!EU` zUrNdy^AGl?!&1!0h7X2~ZtOAJ^%MI}hC+W~hdlYKgu|$Yyg&R z#x4(yg&n-qB7+RUoWthM`SsErY}M`@PRI~6v~$|n3MG7`YUq0O!pd*5`v~3{mVEir zS!?gNmY&l~dQbNZ+)rUC`5s!raiLziXY8%x>OATT`2}}&o~)QNh~{oADQRBdu<{=k zVA%~KvFf_hQTy@=SJhqS9)E4F<<FK6rc|dkrln>65O;)~(g1k5lrxMBmjkuQnAAk@oAcIkM>FSGF(lwn1ef+G!sj zaW&iwYD=Og$$Ukuc~Q{k<_&4l?xUBAc<%(=esE~1yX4V^17CMXO!g0ZrS9pmUzOZB z9>4Fi?VXeqTT91*w_cZwJ>xE&%8$Ebc386Lve4mACxdc-gw?n_oh;oI5>uImEb(al z`LG|N;YW=*&2_MxhZ?M$X(lg;o;G> zQ)ko#J&$=WBtP=(+9G$W?V9tKPgHN4*DELQ6vTL_txyf@zRB!naVf#QLp;JpeA5=6 zL*}iq_ifVUd0rh-=nngkxZXu@+css5gA@v-CV}In@SZ*Sv3rh?NZuRacUatA-f&HP z)hd`xvNe~=PMUaH8PIS1ZYtt#ig$3QKZn~<4pjlZgRIpYejCqdmC2IBgi65Wh}#U9?h;7%MG?--$Kb294Ous!vFSRY3%hbM!N5{F1HR+GbsTd?0iSE zYuFn1r}Yfvj?StKj9aK(rLykeui??5FLHStro`X5V$p3FsW1wKp45IPENrTJxD&%O zI)m3sIcFy&CH)vigpXI8R@PqAdzyeVPlnUtxIi=^?4$T zSw+3?K7I1^^o-xBFCgXgs=?}TOoi3hj8^|Qvn)Q(njc0f8aOV0R$^7smv!vl{H8^N zwuoKeJg>8$f({|zIgVz-g+!Fm;x&NB~q`Uc!V9{shjxmI5dI0lk>rgq%B|!Zs8cg)|?~w^b~- zXm7k$5b45obAf4I;nDk%BvP%Ry5G(xu9J3c9XKOVob1nU?{G{Z0fF-v?t$v+`3BPv z1~LX1wSm(B$Zw>t$*J>o5K!}pp41F=b#GJO2LZ1qaXs-qgAcz74fmFZ{EGel2bD`v6L6TR43 zHQjKE(FVBuMCiqwGBq9TYm&fd1KHv6+ZO2T9-HGa$NJ%V>)PiLL#Ve+jwcH1s@SZQyyT(5Ju*yF&4y)?Nb zub2j0HT4)Ml&_kQS-QPSAFSwUpj^vaZ-n^C?zbT9AUzyI*z!?{<4WD&dS zzV;Fm-0HJu&r|4Hcc1>u z`QGR&Ej;&iR#g)HX2~4~Go7dCu50{0Z}F}Oo?g>=CEEK(LeljM9#c~_r*75OYIr>l zjEWkt+=y8+s1()tqOWgn+vBOOxMDuqGewB)u(Pu-3R`-WMN@>fX_W|>ogvl41cx0J z=2KIPyx9y>)uYv9CBD~6JnMzA+UtCd_g1-0R`*wh96GDDiEN*oGM>@W?s(1MtHwGG z4&2-Qj?`^bYJr(nHqJWLF}%f0+y!#6>mRx-pSn0LIo zNrU}BOGs0W<#*lI0w){a7mqCJQre$;F_8(iB-oIV5qq+nv-1=h+%do5VY0GrrM^Y~KD=UoUrSD38DyucP~o}DJ;mKj9} z87IWUp>ZLJYQ@ON$i&1%;0A^LlV5K;tHE$#ulinR-%O}^r0L{93MKdMxrH*Ghm@6P zPfrfd%*^;`?sgtIjby*hu^8%s4D9^-q)%#kEni33@xhlQvRaseK5A|`9a=7@M{()KM)!Suw3Kx+0s3}_V_ah`7 zQida8(_GvJ!wrg@ud08wmkimao8VL_;v|F+J1xae0#|%lB|`E{Yhk`*@>&A0dCao# zB5T=;7uC*mBvL$uiA;*7Lj&ucY!76i1MlIJlP(!#%>N$`kxWqJKQ1N7c*eXDAbno3 zdIoRmh`!1~8eA&6Xd&qYcQ#&vGnOS@`oH;8{%XNO_4lI6^lIAL0`cwkl1C07W@KX8 zw(3Y;@4`~@IzB#*QZm;+zpHVL#2-|(rN~mc)HF0UdMX|{!sH~6QzAt_K?V5Mty`4i z#~7rX{7$5#U@qitGFet_CD{vuXtT4k5pQhd=f5^@s^+)guZ{TYdyZ^PHUP#|+jQhZIfYfl<{}J@|_t*I_IxUHhPU(RWVP|7oDbL`f zk3W;5eMFUo1O+XsW3N`MRPW$nhyGa0at3e_44gHvAh4n!@;A&kwzA8Ub)e8y|ZeyoCtX-7$cmVA$RYVHyxn+%Ub{P zHGg@WF;90P?klf}&;H+EU%%HYvCc>=bTx@g2X-`0A}nR8#umUAo&5h#e{yj2GZHr- z$9l@X%JB9f`vGCIw=5}wezwI=*ZhCIIn*e&Qj8PURJ$`hP+~|+d}l_CIP5?~EP8so z>%?GlvtC;m#^*r@7(f#u!3LC(^@X)2ESQONxs@WpUV}NM-S7+p7?o&KftVLHZ(oRg zZQisAaWx{|^l9jpUuF3f_9iDMLk?To?rXU>>xQkX-bm9Xt1>ltNEf}0llEjVJ3J!! zCAep^tm5P(gsjl)Z-$Q^-Gsr<81Og7BvNRLn0BsG2n4zj;2x6F7V$B}g&oZ-7 zu-X;~$}}}K+lt*VdJD{xuv@ocIhoh&G(lM$ty>7r5^4MU45m6tODSZ}nj_`18Q1rX z?$}+*dVzIE-A%*i7D{Qw=Pz6-Pq5}QPLfb_h&rwj~{$o@r+AOJZBy2fuidvwB=uz`4-VQ&(x;} z@&rmwe9hQWC~KjK2taO=Crky=cBO-JY$qX)qVGVXXXok za@{+oRj%&B(jmG)uen&U(0lp?W>zhdiqsAJ_;RKy43C|^QcG9#^W@i!p5YQUm2chv zqYRl-&21_Iqesi&g6Rt%j^$n(q@~;H74L?Jhlhm;dMd(6gE8dl@?L?b&UfZ`(M*VT zp{LTu2e$%QZz%eBr!XE!zM>^;!_rXeD7S2sKV^>nc&F`Zi+$mZ`;XH&(^7Q!_LCnd z@KosGa!sR@8U{#t7`u^c-7?iNP$^BD!Du|H$BBp9nrS-sGsbFErJ-w+n3%{!{!mkc zSA~UyByyUXn84*Yc7NFP;5*?QNFM@=u5Krj+mWdKoZYp5e=!(HQ@5()6jZ?v#Uz#M z*RLZSR8>_SXv)oCF&_NhXkSzU%nqe}cW zgYD1z9H)^G8MyR`x#c%l89cG?#+(nFOh-otvIE34s@Do0&A%MTJLi1VZ?sE4PWa4$v!2k*H^P+5BmT(;Y@iNr<*?>VP{f-kdd6uNlH|ITG zPn6rVoZHHcFPQhQh>1xsS=_^>fAF^_{PnYICt+(euD+GH@bUa+UFW`of;#_jmjC+F z-%fP324WDBcXq{QOV_92jjJ_Yny|GL_+s6pe5__wTlMd1NX-Xe*Ow)#=W0>EA58e1 zs~GWcr)>Y4H&q#OVz+J!J={q;0ECM~3aY$p;acb;sVQD<(Imc4Y{A9BSOh=#TD@}q z*g5Ghr>{0z1?_geKNX_MBc*Z4*>e?zc)@l7w*T_8pEx4D<1s^rYa0GH#+3FxwAO#u zCeUR^ja@4{#?F51`Yg$N-~Uz+HSf$2@Fb{8&wl#HUD33R3JraBc)X9@sP^%h-8Yw$ z0{`3jKJil5n49I3E-7`edd%pnm(J)bIO?k%FuQnoz&cNP4YMneT4`z@wJTLoBYS0YFJV-%CD<3Mi2aG z()t-R(soM5JRtV#*Pf4yNu|EOpUkgib$qcoDMRC@i@!v?mWP+A!w>DB({iT&&Z}*5 zq3p)?vTk{@$@zX_q6c&kr|kZOr(7+JVzFjy+xSMQ?x*kjqGQdy+(-3`rPjoiA16lz` z>OG_&AxhZ)>0t*x_wb=Z-PLig0LKtKQPrsZQj(IA|FA+*1@6e-xwDQ}# z@CcRfPcJPRjYT4nW8ESNn8l{87_=+>0!QUThpK(AEnBk_SrSzG#(y;II^pFgGJDp@ zD2Ao9d(+qGdb!A{)q3*n+bdej3~rZB8!tPbqRgK-U{hBTYavx=DeeIEm=ZsxDvZq_+f+KR_2FE3nOJd^;JGn7~>9P%XW5t^3Kfiee|=^t4xF(oCxMapyj35UWNW_ zJI1y+ci*Q?)tB^xa}U*y4DE*$Lj!enHXfc5tA3Mu7a)EAnfb>2SvQ;l{yRdM& zN+kpFyete39je%t+pK={Xu#dOtI69u3DF>+Z`wzX4puAh_;c^E19T_$sA&uIBEv)v zdFW|t-wh5Hhb|gRRE{JjQtjHgla6_<3Bzy}xpdtPSi7@m52%b=y04D^c9vzmUz+aH zWDAZq-rkQ4=K6Mrq?im%Tn*~RbF*ki8ja7ko>P6vWwXpqa$DU6|0N#bKiUk9)at^1 z2yWVv{KV_$G&TR;$D0>Fu=u{_VDE74zVFAtPRFrQV}g!h=bXOGt`lzNUHZ{Vh$`N%MG*^K@<+Tvq;PN4*z-oEWKyXal_3L5)xu!RQf=G!Yxj1 zlaK2N54}+PZyq{`S>e9$%TfKVjI!<;%ek)5P>+dI_Ss#H)Cc;OXLqMe&^6>{mX$vs`OWC^VQerc;kA7MlCYtFV`YY zBCj>~VQf{ZF z`cInOr~6-~b&o-aYBrRnyGB9XGJPeWkTR`(L1dKyS6F8kB{SM2I zTW?p0LQblnWk0kpp~R$Y*k&azf*=E7X?J(`(9jTsIzfrv{M?NVCzhrJCGo8W1I7Q8wTtyTAxB$OIztkb-^u{NJbsr*2HWcIhDM8`O?~s zU%4?!>?+SH66w^cul?(8SDZUg>9=Oo<=eH3FTEBlD%C`(l24pG^DW%Q02Ej$moe9o zYK3jOk6nQ>HRf149a^Wl2fOm()B}sS!Y=(C94~&>TW83HRKMTsv+R+X?Oaf@zk5tf zlvO}ws+id28zr;TP+ji#yFngfU;b3YdDwByER-a@maSpq;+lTGLi$tD4iN!?3Brn> z;vjB~l(_C5TDRf3KF6xu8K1dhb&Rx{Z0Q-!c!3EI+2yS9#+{LY1Jb0xn0~fWWC+fX z#X<&>@WQw{L=OVSZ5}kY2r3Q)8eXL5AYRc^pAkj76(1iz(|FotevK$PtT3{$=;?1M z02s*zm8nBb%kI?g6 z_{vJ9ij>R@1608jzvF2ip?qdLGcn|#NknWUne%KEd9}Hrn;wMZ7uG*Y99Tx?@1tcS z*3Hv~SiW8Fj*E)}8mRti=@Q~Sp1a7|4OYZKp)LD!cvz#v9n8M@!?8xP+(2arxfh`? z1~Z%_a5!QeC-E+pZ=SZ@AMQhSwg9A3 zWY4F^2QsoY%=^&zuARiJ@+PatxN$^V4Y#U;t;glV?7gj0nC-_Z6~e73xnM-3X-;(wiCw99+Y(-!S$ox%h48HN#c z^LL)*ny2m4iwovxBg*pSQV94wkI0m~XL)u0!SME*Vw=i&gJsu>#`g57F(pk*p_2=&_1>U95J7 zhKZk9`+VC|oPg(+N(xWb#xjuyrd~%F&Q9eV?yJc?N?r8Ia?&l^fwWzT@(I;8;t6#m zHCB1a9(p@Aju)=j}v43I~vm#(Geg|6KmDY#;WV=$-5VsxgZ z#PCxewUBFjx%a6cwy#|k6=LUbz>D;ucjw?&@tiFmXdx4Abr~pnvQLuuDBgYBJVhYk zj79tkqNGDFIGM<(tP#lkdLT7l%C0+TE+t+lvzo0m#L)dh<-I){4*I>PO=3`bXY;wL zi2ZJo3`XmGe_R*ycO{a^i-r0JZz8U#mgk%l$?uBw#WPW#w~tsziB~hh%EW*mXV_-9 zBZPE&l-pPXVL<|pJuMfNrAuGtrV*LqAG&60xzO5g@A2Ud!MDqx`~?-$P2w zWCET1+{iKSRmq<(&>QrKlpjl@-8!8cB0c3)N5{5en2BHd@U^rzr-__?r28CdUKu5G zPoPkHq%cg>d>Hpo-=#0d;pkuXPKTZ-yLimaz!1Xe12%K|JeU|&q7?1y99Arq5r1~9 z>;0}V7T=V@_B9^7gR{(YT%O4)-+So%b|fjey3Pn>pa5JIB~3%42;ium_b~?mTKt^f zS**0I%dOixqhgm1(k?~6mZoZC{}hy1^f81hoy1$}*-PY$5%&*r6DM(;Eq09;9q z^Be>^!Bprt(CUU|@(%rf*SM^`Z{ExZkDK2TrMFoOfU}{Smx?;$LBG{!(IOj(YK4RC zQIw(L-rMw~c0HDwJuCmyc?mb)i0*$OmZX!yIJ z7Dv>CqY%QN3TS-tq{x%5SdZCW!(!JDW?53uMFdtB^N;#ZFoDVexPb(?*=SE4^IFl> zd+feK^gTAV=gGOPl>#R|J#XxKvvx{};aR9stjoBa^Ppx*<;e9V3pG4`)Eq8izrvGl z(eX&r;)4mD;S$nn`=g;%xX&nvr&Gj}s*H#V8nQMM6BDp^pIuoRCFyWj1bT~KJm!8z z0oTkpp7jlPr(WMFqPV%waRrz7+jiRrh9z@ElW^vVXOK*{7$LH75-(eMtM%jm-2(mc z-eeN%eT%Fruhx5PnYS-8&u%Ve`p~}3o42Ut^{p%~*}=`bM)H{tto(Z6qs#21)6r#T z1?9u);WqbfDfy-m9UU!0U!A13fn4^V6Ub2qo^>d=0grlY)7F}GN|jdBP&D!ib#4lM zVo1Oh1NPg=-+DKw8d&9gbbeuBp?O@2#q_yavZPkY&USx&nb|8E{Jf7$+4GMs{;~1I z^Si5w%(7oLCE0U(c?F&H5|0ImEMN9tkq(U+*d-?$d5UIR`+3XahD-|^|Iexv8B>bu z%ggsl2ej_iP-ces%8#9SsG!eXj!T8S8;abmiTOoaTZOB^`(vb z^}4ts9}0+nWWVuA`_z5GV<9Pyj@0Exz2&K`gMJxH4dpHy?(eC#d{C)E{%jkg#b2%! z{YWdI$FMNPwP-t4Pt{!AGeAQ;PAz-To&Ks4wGI|k1PmCAzG0^zahy*&{r-nZXQ_wR ze@!~mRpz~ih4#NBood@Wp-tQJ_)K^t^GEOhlxIG+UKgLzNjtCGdCHjPPG+$29WXz1 z=$WQeD+te+9s-FKCj zOSA7Mc_Pv9{{BG0M!|_)tBhA(-d9In{$mYSuj_Q5U%|k74IPU;9Y-Wbo>5Ypoja=T zZu7J$i9k15^sQUco>x|tZhy>D86E;NktqF0(1p=-y!!xC`x;9&1QAb#6h}o2sKo|) z>O)#NTaL*|#X7k!)1OtOhsVpc@BRSA-p3YohYfFqh4t9(#z=tM9wliTf90eiQv_t( zgtqV=rbT1sqr-;ALu@VXMENU2f83s&6nE1U z?vb^uM`^r448v=gX5C9J)*r~{YP4E4;KAp|U=)yXHs&5BU!L5*YvQ_BaTQC%(1phh zTZ>2H4yusLuTfnr7t=;kYd5RQ>n;&t+`$-AwTN|wJt2FMBr9BLa%NM|?W%qM6`HopPu zuINR)#?-V$CilnKzu1Nat$n&nG4b$}F2RA5NBtdNt5-^Ifx~;+weaPRkpV@vsgbT{ z^~=_Jk|+Gewy$NQlqdaIR!a@PEHaWzyF6eR_0o>!Zj|dKdCc+t@@HiiaTIzc zHp*)G!8;=7EjZabCUuXpoafT^J}?}jP~ABKeFP@6YCis@zCOyK3ElROm$y6^ad8?*^VTT6Nr;Vo5K9h zc{Kl`;;~m(!sxb0b+|1S)|zx;UYvhihNo?T*kz(&WkFP8(As+mvEg)!9KRT@HKE0{ z(XDaSbaE@SDrm{NH`#y(m*O{HLqOlhOz`q(!9E|^!&gKX(eWJISw6Q&d}P3g%_RQy zVgJyItwp#;7yobT;>O0#q@*>%^*nRtSxbaQ6H_?SkLSc5KGUUIBe)f*1S{@Nz!8~M zti}gfU8SF~2dzD1bD6u+P)5)=_9p%=qdnv>eD8>a4UijP=NE=an~I((S_? z&uQ=Oel>LxJ!+z52VRwVW+O}*{UiV}a=f7+$?R^I@fHZPa@&CPu!AFx)L}6&k~e7^dNU^#?Cfc#fx7a1A?? z1fifpJf}al)6D;Vnc$+@`UUGL(sF|ZW2xfe=3R*=zBp~h-;NXY@%Uq7-*2*bl+(MZ zgnZ5_Uwr4<`L55$$`?1BQc_a%T11L|IaDJ>e8Ru3h>PTJ>KVhLy>(lLXis;QbQpLQ}jAPXRAtYI)R zY0S+)ZtY5DK#uLRWaW|!M>{)aE#lE^r$;pbKmR*#pzg|io(t@pitJ;hJQ|p<+vF#J zf1_;KT6n?A>Ia~10R5bX)j;O0i$*^JWCODpg*Z-5POs#C9F@eI;T*sc3H}W%C(6GT zPlrQ+xPfU1AO|u@em8G|MC9E!9-~Mc08#uY6O*lgKoA{|H=k48EjSNLsHZNC^D}7Y z$UIt;jW~J;bf^N%Ub@Nxl^g5BhhN{?bj12ecLIblFipr6C-^D`F zIcU39Iz^ljX=lpPZJwQtV2Gi|nn3G4_&04D?XKA@By@y65Gs84?maklh2ni_(b6!b z1Qg7#TRXDNnlZFjaD<5v!gmloc-Rq4nPu6^fi|6<(R(KbGL_EH^N-dXm8iL4o?Q zV_K+QZ@z>;94nf8mzf_6pOlo8w6q8EJG54=qPWhE)~BS5VTqks@tYw@&C$5SBFX(s zeA%$um+=_w=OWSkbB4UHHFqkS2iUBiTPJ%Z>U@BDn?&XZbtZI~lW3`U=ViZ1gOdMoNnb}T(F-%fvv<=Vt( zhI(66osaa2O-EQOqaUqNM#ur~h|@r8nlzY_1E{Wi0!9uH19<8zf|`+rQ&BBQ{lFQ1 ze7gEem}NRE#lFA!Lf88kr#827OfEp7EAMOvHXZ-9)dVbgaVmsmZoGt6gi^)mE9cEs zpa2R(Hb2H|J@V#SsqyC9QBfWhn?kl?+}F2pp2Zm1cLjBOea!IUzikepch;$@<-NZm z3qMpqcAt1kN-NYfl2?ly5!59hd~hf~9_oYB5gt(qnzIZpvR#6BLZZ5dN5$hoN}?8h zQKYQ1BRGHRZV_JdmC&Qg8|SmW|8CYtPaIuSYZ>!)K+EynqZ->KTbS*pbcvKRYnj?KFwUx^`3SBu$@wgC-MrDpDWrSFT`S@mSg)X{D@Y#M zVMSTPnHcONn1g^~`_A7s8|7Hu_{VXd-yNnlWrlhE9R0@Zc0i8Kyh$T^Ro?Ami&@P@eG#bi{2WtiiX zIq+yN|E>)G_nN(&;(_aQYZS88@k5O(cg2nz0&Zqm{QD#S-2?djdq1!mWbRVW@OJK6 zUa42jm}9>i(W%_;SnqfE^uP2|LnBX!RLiHFdRQ$;;=!~V;rQxg|8GBxy@o(wlD36u z8U?1zjcIwXJnc-eJ@6Nt?K{?&niotlG1Jr*b#tcr^f3LVZSd_OyN=drp(??}&W_A9 ziqLFp{sk!K%UMw-20Umk&}zi?oB%PY4YmZV|F4~$R}0kffh68QZ)JMJ^X*pwjJjZl zz-@-2SwK&(8N=gB^|uhO2~afQ_e5g@OcAJ?wKVgcp>!Y|1qE^RI}_{sq8#73JJrZ` z^IQ7w+*#R%V%HrMt0yx~j)SXCG!m%X+YL_XRqlH#rw$#u{`{;Sbz5ip3C6HD3RFnN zcBRyAE*DTOW{nlxo30_n#@@l8p!D{vvXC@)(n*31|2LkZX6j~cP0Pu4`eBD$i#CTV zR+}!buWV1s?3y@B4v&rH8weQ;D7k7G2rF}d;*G+=bTG;ylch`|BZl9HUh!nK0Lem7 zxf=})yk)gpcIwiHi<%pYhl7Cbb_D(f(BEu*=uXqukSiK_m68&P5(R9GPb~c&%o7Cd zejVPpW5MA7|{71~) zJeH_}U_r1sh**H6>v+~E?n#=FG?&; zC5?W=zi@j0;`c7P&$j5+{4x0yO;nW7rA#92-tb>{?LYp%)D{g_qf%z}JZpY5WNj7^ zQKfHpEO@TZ>3#3sJvb`9|h0C`K1f>j;+?~E&@f*s@hL1Y6^W; z19yMVYMrxZhk)7=L=W`w%=OuL{B+d_oycTN{PN`sxZurr%ZmLICmbCe^HNXRqrywn zwk~{+AYcdp<5vqL4?01ngdmNel!cCW_hULblE!7;C}Yt)XwzWlF7xsARe-)b-0;n{ zVm&3aS)07nD|UnHgqF=sx6x4g=)jVbXtA#;b|aJmi!lc4hIl|`6M(}_A$pInJ-`Y1 zpt$-VNQWh8T0)i&idYUJL_$s#__=jvIFie)4AwE~aZ$ZggAdmx?_yFFZMLTb2t1Bij2u--uJ|Adww z9qZ?ow7FSMgY)fB10pyV9vIR^cw;c|UnT|}##QBmak}1PW(Y-eg1-|}qWTGFafU(B6gD+Ds=At*A8`Y+&wW=(tU08!S~xT` zR5R59Don(LC``BpBM;|wFCya1&QNdfeR-a>Ta;@+ReyY@DfrHv__l!C0Rb%R>>YOb zc-h-TYTjKX{(_dshzKc*+N9LvZAUgx50`+AO7xRs#b=sb-uifxHKpzsH-7fTG!9GHZWEIySaXpjrkZ z5F|vOh8SEwouo{_cy@Nfli#D-u)txZGBwXRlMg2373AsJ|`L z#*|f5ilI631ZxJLhH9*Nm|0c>F%J#@cKGq>EQ;}A2@(4)45Qggh3LR=+t7w9;s!4c zcb$e@ki&+_5cNy0M!_)ApSGQicMRXU?O8g_pZH zZ(udp_tbX3;54+)*PF7yhjC+VqS#QXZ+P$JP3@ds%mvH?y$*DwY`f0aP1XejI7&#T z;g+<584iG8z(stnZ@EZcmS~4`9nntl0aM4qg=FaF_G20-=X}lu z--gBMHuwzFBP45KL{N_?L=z+^+xJ?wy#;^CzFDOiekZrt?g%UzHg_Ye z6u9wT&to>v^V?C5b?Xe$>TfNYhFb84>3iFsC~boZPET724fM!!SXoTuO3B`>A#WVe zlH1kom6EdDD-NXUVxiZ#_2*FSj&kYGZ%;pO@}Z=1IhXiWOv)|~AQS6F+In*iYS^>Dxy@nQ}<1fGtY(ip(V#0@T$*mzP+N72^ z?*>`J0sR72*lUD)K>sD|4@bWbS1+SoUrv3`C1MeRQ8Y}OYoj$4x#YSpq2Yz2!7%Lz zLjoQ=*y?8W_44J*7-QLi-iIlE@$fYGvG(-cGZQ(hVy|_6|BgloRKFE#Lxr~^A41l3pS66ec>>H zMJTSik831CCJ+L~M_*91g?WlQVdOOni3nzp`tiM1z?r7U-Iu!BN<7d$g8o7e1ew5M zh;B%|_s{K?AYSrKFh^?8+mt(ilz$e3wOcVw8{xo6%U#kMEXRFq@5EuoiP#7=@H85B z`021QB>J-e)#^eJiGRMdbUjKPgtfrglxmsA$!!E}6gLZ+Qm!#W)gr51pQVJ`ezJND zWDxYbad2K-u?W-iz7QU~N0#Uror`PG7Ms7Wu4U@#C8|8X(a?1r$W-e zBwc~NSt%)f!=FtyC3Ph~#s=DG2nU(5#}yh1`R)jLTZ4szg8OR2bC!F#IrR6>)Z7B# zDCmQ@b>?cgRqs|l(+pmKi#7FV>j*{70(aa7$RlE~YjI!bd=vwO6tO)=>flCGZ+5yP zKRc%!!pvaAJOQVKZs=L*MEAMLQ?t)tr`oU^iNwsQq5SPzD|F((ag2;tp)F*T>%E!; zYjsFc3I>0}iNAuOn6Ob~(|*F_n5NfR&XP;l)FwuFSCL8Gz z+JwJ5XdjPLh>sO2$Ge0M^Qxt?GPp0PCK{5d%4!VF2ekD8zgo2w&%%X&E$}^oRvv=k zv*YA7mM`cFvcz97c04d7gcFj^gff_uo*q=w9+ZUBLxxbf>sxq?+d--{3C zj?vri$$}~vflE(RK8c*S z&WpAz2LnS5b<;5Rp{35!p13QjV2V9@BV1#%`F-~yQkMp`<&o(T_!h!s5PAiPi8bdW z3t6l88Zxhw%tqRY4kIk=G5^p@nVub3=_nY^zLK7+Mt+P_Gdp$4E3P69iUI{Ot$AdPq$f(xyV@s&J@AD{(_G_mT&8Xt5-hKI=SC>TSCua2ubV zY|jQ&&XpSe6(+CWyqN~@4&%!#uNEv~Sd3MSXfruw?Yebo86EbLa0fVN$QU?5j}BfM z$_A6|>3K05zCh(MmY~j?W;LK88i}&J^Mt1q_hyxQ6LZr9+m7~8*G39CBj8c3s zY3Me4j)H5e>rZ7q^{kNwWu#Y9=#oRNp(i2SdMyZ9j*gF8tm|Jf^?iC6S7%YD^^K8_ zx;xLcd<|V5y*}f!J$= z->xm^0v-wO`BVpy$?)?h5aotye}V&sO+-uX<2@jUMaEt1qma+Z7gt(eSzg(0 zyYJ`QT{!x2E2{@}7DU{UQ8;|qup8mk{<(<`*m#w@+o4+kI0aSd)2IZ&l2W`8{i6{B zJ1a9%HvV^K@UYi`fy?)$+Ywy)`TLJGw@@PBQmJpZ#qjfSJo=)^Z{dUkLCT3~kNa_5Q;+eU&;Dv1-rgGY zURK`TGwnxL%JcA*V4qFV|CrKBMWneyQnFEko2NbL>^wRnE?1UU+9G#+#YDm^){+)h z%q$K*>7x?4Z;w;IUK{U8#{#$JytBx<4DMQ3to#eciZAwju0X9LB3^iOP;nI9-Q6SV zt7Yat7@xhP+BBODs=^3)5bZ@?_!e3jv3FYMtwTx*v|QXg?`LY($o%a@siQ$!29tXkIlW?Ta-Cc z!hidF#n)6SGan&`fG+G&DQ<|PnCy%I^9y}&kSdu#&)S3q_1Ir$Nk3Cf={ozhJkV>s zbGemx;{E%|celsDR>*1+*$Hm11oGkBCaA4N5n+sj_OUqLzYdP3KRi79u^$ci?Ezlm z^YEVl8i!CetAlw!k2p9?CD13xMMi)X<0>6HT{DnOh<1RYFo%{9zrd8hC>JW zuonOeagQ1S!`_%Wxc{Gx^5kEA^IUwF?bZmB5$Nu5oyg4CqDQU!^hx`6MZ9X=CW7`+ z0!zLM$}V5aS#MXY930ETDm^3K#G$3fn$V-b`={fvtPvvL6SLGLbX{Ef_q3hwMdAy~ z{^spl)K(IURlq%rnj1-kJ3>LTSz?-om=)nhL(@`}b=Et?+qA$T0w zdwNu@9*`FtzbIOsP_uOFl%DNYMJU&KUR(>d41((+E~$EA8qcre+|N z8NM72HLVdI9sRtXm3ueFG^ zktF(VJK~g)rL=Jmn$xo-oQ319E>qH@YC#0h1pN!yD|Bwqqrb9rML!y?;Nza_w3RE! z#Zz{h93Z~``Un1fbj!hecZ>7#&ZATWa{~N}b^&6`dm>bPU#RQo0C9Q(Y%C@-bNjY! zXMo7zHOrio{V)GhG~kzd0AvJsH|l&HR!)kAsE@vINP;<$Y{Mf@0-)_>icm?+$c~QY zRT}ko{TqJ$3&<9iTU^Hqb{N{PQ7v>tS-dgVMjGA9ZApixA|8o{Z{z2G+2_~Twf=6x_a%j=BU*zP~tP6);BIUfA@y`v4d-spq7cE{pjrlv9 zXMyIr0a7i#N`ztu4_=!)k2oET36ENR8?os2AY{`na(0LShVrMyR(os8c||*t!J8Nl z56_Aik?h%ePKO@Rrv$pu0r-pnfX59)f@KXA3EH*Db7qn6bY%XtJeqns%SLDuucYxr zJdh`j_0$PL`^h>tT!|kfcOL1vr;Ao-Zw-dB%?&OIVIYENxDna9b)-$x<791(sJ70Z zp0jDTe&jL`2=-Vcea-P1p^3@>zY(5|W^9`iT~m><`V@DdxW_lO1+z*IMudIBvA zAa`Xdcl&Q&i_qX#bYSI8Z^ElZIi1@ykk_%?_k|s1Ax#)e?H3R4LpI+Ev>o0RnAHy8 z#z3nr!p0EE!b0Z*wmNdxVqL|bj`)?VM#*!Vc1*2vhJmwcdYop}EtFCC0g)-RX8Kx- zbZfHFvV!L!hE6`XGr)xakjH1kE{9S6u#|a&1P;BdnX`Xsu=yBj$wXv7x^AAOq`f| z9aRf?v@Q~zFHnm7-cZAP$kfZ`k{$n!&r$R1|L{exYUB< zPu9AK<(jPN565W)(@09BQ|mBxD^1fq%qX#=d3kumMOcIh7v zb5vozjfIhs5je3sj27bf8AM?Xk zKvI^Ye<1F6?Ed%tmy~EBMJ909rOQ@Fn}@wKBYJ?5mJp|fJf^MbB$UeFap!}VIcTzq zDerZknE=hpqQLs4+#eSCQPsLH(L2Kuf`WsQmKUQSN}70}^Q9@shm{vMe(G&CxUJTq$|LBY=GtrP?EtNlC%Ea#Hg2gvn({ zh-v^lp`r6fOM#Xl4J9)I5RJRJAN?`)Kq~;o0aUF!pXT=``^HPDJz?1aW-n2hiQV7| z&I(=lAvswMbUULUI)`Odm)Jr$X4H&EzuCDpzQf}Xvu-{Quw^P^3$~R{>^&sC#GYf; zq?3~q|6M`;htCL%H)AV>raPP;s?I&Mxd9p~8G}Gy1brT%7f`tdyqOT(U!rd_EFoV{ z*liZFOK&5kU~B+H5P>rat*L<)Prd$NqIrjFl_+_@tYPll@mPyxZ(m!!&bjGKu6fuu z+uf~T0VO2~v~it4l?xcAVV+42oXJjrXyZ6;)Et5v6ld>$zvmMRt+J3eIk;Z<@!APiR_;G- z$HhrO7wEB{+u(+0{m&wH1EyBcVx84sm7{avr00@9zp35xeV-!}844y2F#q&qwD(uT zD5Lm_L?KLyh4QE6&$7e9?C2VvtcD-L2gbb| zI81D_SOMiQ(a=5T%=`zqseg)ySk_pW9u37KZ~)AL5M8YJl*YW4;$NJHf8nwlq#`qzcZ~^QQ2ti5;U7N+T%S)iA<3Lq_Otu_| ztTH*v)=3f_TS(BR;pIfY9Yeuij|jIygqlYel0LsBh~Y`AQtQIP!Wv-;;7_H{QAI2S z*zx=m&lZx)AVBmU+ZL*G03U!$4`Az3yy0+Bw15(3m$EOYHJn807qM0*b|Tud;TJ33 zzFjtMzJRps5+R!zW)BS`G^x&_Ts@>`s+@pQ6-wu`gv1_9IFEA|nOp{VdISrLpPzsI zkTY-*a57%{W3u8Dv>^yjU0*Wi0PYGAE99vzA+b!ZRIVx22Meqx73e*bbv!C=ZJJ}U z0aFzSJJ#28k9O3(?XhvtIH*+OH3*ces;a8q7Z_v}>>DHtv8lU`fUyIX4=2H8eenF) z0@7+Vg2zOXiLVw_hBR9l9!K)ykKDhL8M9^sDf1X=`2TnX3K$-q<2@!kFC9oJH z3`R32x{#Lw4!(y-$qarFAGf@Belh*pK~JOqZ<+W1lOYlRb?5!z|BaMrJdD~8bgfGa zRquie8eyCb)HpfmO;`|Ex+_yxH`y`|6P4dv6}qapwCEn4Q* z>PGgz-$EiOQpmQBr$KO>|61VkW9;vrvXYUFk?E+ll8C9T`8gXCQx4wgR_R+3$9`=5 z>kSm4i^_k011BQ~<8tB+Cmqf>SQ*)yJDPGNK2m?)b@W02|6lJpr`kdK`+L?fax${W z*%>*R*f?2>*qYj%G_|(pSa9&J^afo$ga7yv1D(dj9s5|Ck=pbIsM8FFFMN7_`5=;Gd?aXF{d!OZAV4Kc?qzuleWcNjTOQ zzR)Pv`@cWwUqk(Kdc=+Bg~uMH2L3TUe|yq@o1UZeCJB^e9r{0}XZ13A`On>R?H{H` z{!7HiGrd7Ge~k6tUhxmpA{ea7d4I? zTl{0t{`P`@nw}7BmAVdgAFe;9=Wnn1=jlN5+1fB2~8Moy>rsr=@ z`ftOVw(da`T2iUaC{}}7Pz2YCHhl03Gg2#Eq>W`P$ zcm3-jKVR}cr{|`Gr6=#>Kc?qzFZqw@!S-(yb$@F1>5oDC+YA0_dOUoT>gY!Cp8hdC ze|yb8PY-gqy^pE9`oBNv&*_n@q7lAj@169=^!)8f|806cy>F7}Wu`U6I{bAiT09%{ zM`IR9`ZYZ)OpkZZpdam=LC61n#_MzQuvtAaH+0lDd}Ls2PxWQz%!TB0SntsY&rl8Q zoC#1?l)*qJMr=SZWN%6VD;o7Z3d$LZ3#Z{Xl}|2#Gt5B(lA1Xue4jvbSD&pCJzf<6 zY?4csjs)wp4^L|Cn>!65fpWP|a!UpzmNhC=@QTi6-y`6=`#!L($lqbXfpJ{hL^pfL zOS()M54Yi%S<@|-N&@SG0ma7$)OLe&do`T`2870)@^lfXbS-nb#Pl191?^xnxRE&L zQvKqi0R68oI`36aU3KQypRFHIAYOOyGoSIx91sO%Q|*@q5(QR?#OE<2FrX6X3l;N`T@mf(akxBldP4_yM?09ZUksg)2=2Il2>c&_p}} z0x&f}C`NGssJBxQ_zB!5y-?vIKXHH}JCeq}GLVG6V@NY{BO@br!nc{3yN!I+KfvJ1 zVbx9x{1zoKh5Ms;oRxUrrKV0_)8A_al9=Me&lDI{eAnw_^#ohR%xnpP*AIU*ft~tg zLiW!9M^-|4XmM$&!YN3qp6~!L6EC2-#Kgq-)qR1?e*e7aZY|VCrU#MJi+(iDVpH#dO%>4PRS;U(7^$Urxt zsE)K6ttc(onCk-D3hp^~0AFrJGw(rx>=>9Tw07lVj8K5i$;{*j-&BRZ>wtWMJKb6x z`LQ*iLbI6j>5185$D8L9nu4_5c4I{%3EO4Ya2?T>EqmhaY_{%+Hw&T)AqIiN* zGqaf-O7c9G%`y^f1Dy`QWCCd_Ob&3prThhbU{WK0_k`lG>*TNt0QHxVcxG|Ngy$S` zAUhF;p105|0%?#w?IZ$JKnx5F;eEMn)~ac|-H|R&$3~)u!^KsQ+@~pnihrkir;55z z9|c7~B1Q$poBA8jlOCCwxgjqfp}@u<*)FL;d-B=gt32r*uSstjB$E~s zG5n@M9LTD=qoI+Ny+4rW=>S>5$f`SFJq);ke57xl7ac(Ah$;?y0}UJa(wbO4fUUCI zU;woHf<_j=?KMveb92Oa3&3{?HhTJ0#IEqi511SRf+nvC*k@2RUtV9g)zDB9n2p?B z>Soj_Hvf`9Z_&JTC4R*PNsM8p(Vj_UBsz`)8I!9eYWFi>TOt!V`@qM)3zQnjT$FK* zpn?W`fPjYk3)>dp6$PY0W)>C}CMLmeFAae=ZoK#eq1Z$BPbO&l>Q@J;k-`0wxrM$A z-~N=kSO{Wz#2EgD$A824bkGR_&?m&?S zF)t?Cm)40M7#)q99R+ye6r77Nvupq;0eukYif_{nKs)~(GJZ&`nSVg9-*jQW)_j{) zgro%{2kbJ^%YFspAHctA2~Go3OG`Sc&OPACT??Fsq53L4Z4^V z_`0A*;Qi5wXc9o`0C>)Z=h4*3k-j(%yBDI>m(H;o*5{pi^;JjB<-(!7*bE1k#gv8BsZ6FXX^H z1h`8SPzM4Q?akNZNAqxEC2|_c@g~uY6~m79fTBX8^(VAyOi)6+jzNRo%boFjc|jek zC@6kt=V1}lR(Mu{VUqi6_+ESgnPp|McGXb!vY%Un#l%|Oj7UomuO^KuKscld!DQk4 z&hk@Ck+ppd+fFdL_QL4_g@-L1>`gn%X%UL+mNihsklF-7h)WG%0?%Ns(Vlkns2qVwzgJpcJO7CQz-sNu-;BZQb&BM*T#%g9_!pOn`M86w{uWr&nqZyo&2P~v?%LevfDBr_w~HRbrvJ)bNf4ov!HEntT!A@IP$*7kys+~GYA+H_AkIBV zgy5DmwF(PItHv1xMdlKsjC&po+(9b2A=9~u)uJAks~(#@QGWZqG1ZYBzLilArmo+V zqEEC}RZ;1IqhYz|{A~@5qtE9>HETSpVvGTJr7P0lDuAUV^TU>LGQX&(i0CT0S3V3T zdG&f!-d%?QjS&K=qgqT)WqtkCH}aFuJQ;Aot1NEknxXmL`mCOp3KjY@3AoFqJmE9C zEh{2aR#2cAcfHD862t~Ld=*%!hn-HN0}ruMZc6KZA~$d!vMtnhFgHpJ48985!gG$6+`%s3pD zqSX;lnq*^Qk{fMN2Vztea9iMlj2W&K>VcY~2QV2C5+Zz=V<>TQ!hHi5%vFsCrzlR4 zAe5i8@>0jGiv_X-N)woovdM(mx z7a6hpK!R>EfMy_yZBOFJq-xaP0u zzk`w!P4(?m2D)fDLAb7~RFbpIDu5dW0?)6&eMxd0H32H2%=MuyJ<>c~zIW;AjTKV| zpb8tVe>D9R24DkjHrSB$iRKm-%WK|<>;h`72m$>&*t=m!&BQOAMw!7=Cprsr0pfco z=uSH{%Wnbq+zuL91-wzPy$y@Of$n?1D%|^sxh0Q+8#skomd!>(y$N zCbw`J+KC9uc0DE)+#1+Ch_(Y+BmnTMK2$HU5Hit0%Bg^v?}4W}qJP`k+6wrJi9~d8 z7t`_*H6X&rz-#Yz2TQ7XAXIK3xz@X#+3| zfN~YKZ(`JnMv=twSwj4In66#Bvf5=q7l52P$U1}oz4CrTAW|@c%Bve( zTh-e|d9&}c(-I*!xk+p!C$%tobRD+$9<-490o20=9cCT{E`<#Udl^_+SwS_a`v5{J zJ^YCVvU4c&CP*Up{G}H#p1h#6hS=SK)TaIbB8)^t#R3F?h3H&TIM$j-?b=}%<%5=eMr>UggD;!&?j1t72xvBI3pd(>&A0S8LmHy+Rw%MN zt&GP;V!75>0&fBmtw5(2Mp_8zHaZarc#o~1T5tkk3mF?t0Z_g!y&#bOk@F4#$zhzk zK=ic^m*g9fSqLlGCr>X3)#*7n@L+4Gt3PlqBQ%7ASFbMl&a-F!swASqa8>LDn8EG? z0R-X+cmxrDhno$=Yz084<~weN@U0z|`a+Qg-Hj_w>qvG9o|r_d8u4J&@5tWhxhPlZ z1%)ic-PD>`2sfO6$vo_^A>{w742a&Zcl za0|n?4H#;9pPG6f;=q$F{gWclhSfLK(_^;l(cr+zr-ZZ0aS6h{Ni1oOq7OeJ)f9*AxSz$h0~~(U5?tM6&pKAF&l$v}pOgc*$49V^R#)M=qffB@1jIH0==5YoI0nb=F;KN! zmst{lMNPNL$-M%xS2?JoPriyCe?>CK71)iCA+6=Nv66tBAWR=b6~`dK0(Y2xCk$(5{R!}xh`gb)^-Z81qOOBq}&H4Wo3#h!heSY#j5hh zjl44!5Su{kw+m;?vsQjudAVTQxnVf^ z-~%F`3Nl4Fb&yhE0%dH1sMj$P1x5Kyz`8elAq>G#RR4p-H=qSWh*!ux4a6I8DUZ1f zl~`~Z08l{);_a`pAOvlTVLSPP>4l&gFhWc4R~0~ARg3S@*474407+#|#%hjqAk;#3 zJt72#!)BA%9MRGt5f7%sGVI z$UzOrvO`qQKnhY!=(>VJp+r`8Is*meGh!<30##ffiAY7yLd@L8TET20cg~8=7d|}cDx}Yrkr5Lj?G9^*4P5*$sIB?BEug|5Qxaf^X7u1wrE*=hZ-9^h4ke|JQRIF#^u% zjP4p7>}048XdB)E|%_uNO5Ua4Z5L5WK2w#l>quRf$}{yQq}#M)T#!nmn93 zUY`2&#oEB&OU=<(4T9YS=(qqeMp1BqMp^~5ArRHA4h{^^-awcRFG%CZbRfH zC(H^LtPfwF2S2IE7oRJhKZ5l8hlZRMP3S!KP0h^M%4WhLs>sS-^oU)Dape7>a1kZ6 z#OJ%;767Z8_)ujAevm((k~eaZ0ryPv{k>Wx&-E*d7KDaCg96NP5k^b4Y7inh1jchV z1dHvNGrIcp)(wzvxDU|LpgG)%E!JEr2na|~3HgMmvvt5UGE}(q2 zhBnSWq33R;lwTfo2&T;8bGcE|!vhAs)3y_^Gvu|`>jkV#OaR%SK@Fbk5lP_Y1W+t+Sa@&(>Lq2BW{}N&9Z91T?R#Zw@4bg} zY+}4A00>f()H1(-@Xzl-%-|MXrl}W9SqW$ZE8L^dYGWY(EuxM`LQ%LMp&eSlJaSwD z{R8N4khpS!0lx|^LY}f>1WbWV&mC5|b4_$~wCkB_;9=OpZbTwbggF58R~w)xvq4M* z*Cdf+GN`Hw3+;jN09R%txqKfq3TS}-Sw>nSy$7fHNnOs%(Byr#o*^L(t9()yW@Rn4 zj(%B2>5-)+bi#86Y9A=7@)nR5uj{+ZfO)8^tG@-YE)ZNTO-)@9z?oIo6_z_r&vZi& zcxCPYqa(?tk!bSity{O??2j1ShL!6GfedmcVS~AtB{Z`@dKM&Lxe7}M=^~$rnSlY0 z_{Jt`^8ffG)wS3y*Z4_==?_w@UGAu-XJrNW!=?&A7#ry(2;WaHGd)wh_8}=}L%bm1%q03g{&0wdm;PD^C^IS-4M+{YL;Q#!F)-@RRDn`dFlB{> z+{fO4#>r4&uWkd#4S?}DXigy@I-H>wHLhL?@8H(}zre5urd9*|i;SEqjzT_rQ=QnERqmX7 z*g_{dN)tmJ%SViYLRNM0X;tToDrU-=1mH>{3OS&$AbQ`g2)w2jJqvPWLjcyK5brG@ zsaQZ;`z$jEl8#kw-%e*h#|D|s7l>(t{J@KCp~8P!u2RNPMWm%pcd_eVqxsjfe-HH~ z{<*N5X&*lH@GV9S%V(4KjSz6L;d}yQ2dP3pIELm|H;GjXslPIVx~i%zR60PhR8m=4 z2|5cXGk}Al0ggbF%}6LRIf?*+pu(9UsM&>^{w`R-Ss_ea zB*^Gh!v1-VB->S*L;RZxk_wI=UlU4-ihvOv?+=Nogl;GS+85a7ic*mH1x^(JZU;Bb zl^*CRBdwAEkj%R!Xz_xy=BPa1oPP*;5Lh<&*?IP>$Q&V;DBNNM#303llL6K_Aakh@ zwPd_@H z_cWDZaA*ig=Lj#+Dacz9-jI}h$`Dw4FSH!xuS(z~wzLhLBS4ILo0qraAqE#RMCDQ+ zZdHl=>evW(+v|Jm{P*iGwB?(RDWc1U<6b~57r~?atEzaN_QI3ziz!>L|9uhsKPxW6 zApSq9RWezpIiYaE0=xrNKZ8j`n^c(u;s1zV`8#0z<>%**-TB#d6J>#dvfWJdC2y_( zjzBw!1=l62I6kx6;_NRyGMD=E^9f?uWPaH_TMr}uQrqyWZtdqs(gF!2M|YUFEmAAc z(Vt&@mXGPsgRh%J5CRh7-z+SC^H8kq+ZgF1pEQ-;y7-MA2h_x$c8Vi zh$F2P?PloL3o8vM*Zuwdn^L(ydxdzvdJ4~m*3zZf*{ysu=TGx|u~xvOF_!VGTN>vf zNZY(GR-hsxzl{`OnX` ze@gzBmDImW&DMdZ!C$=^>X2%b-jkPqtw}LA6>s=N_DrbVWB=Y1%IfI^W2sAiE~EPj zaW|yQw6&?yV{v;4bGU-D?oI^9nQ-|~;I;tb+h6laje3{7- zSC>|e--pMk!&mGEAHMn@|5i(DZ+d+;BqXG|=T&_1@y!mcB!kiY>q!My;j`Ob36Sd5 zU4*zCR?1AV_KIgk)%^x^%Gqn*fzT%)oHF<}K#B?mRhpj^sc>3d5Kc+Xprrhs%cQ%I zDh#q6-+%>8oiS!S zI0uJbTb&8b)ONdQ&~N{6~5G` z_;XhOPC3Y`ym^5DiZhE@8NPL20ANHkk-#4h^5a&BhnpGVSNJ6;Ly%N2%?NND9Y{eg zNZcm_jpyw|C>#Z*k~;LOKs`ht7^ttvPx4T6kdHO=0|2NMDI(o@cNfUz5NqwMPOUzJ z1A7Chbs*?8Xv91`j-Z`JL^M*Rso8wPMmvd^q9ADz!T^Bi?**^`jym;4taZk#sbVV0VHt8riz1N9cZ7D$|)yiCoC;39gSbwsCcez)07;2un@}3E>3+p zAwD75a1$m_7UQI{GkI_?`{ISVw zkA`IR$G09WCJK!Q#gYw8q^I9)e{jKpu%ma7+9S~p^~;&wDmb5AZ6x@i=8Xim5O0%- ztRvn4P@O^80tqD!eF}UXi9$g3A0NLC<^iBd1oE_+C%b~(uRyPwxh+xG5%5s1bVZN+ z%=!7q1%-1YEZZ@b;FC%Q_TwTaE8p@k9kn?nNrkA7^;( z1m(QzHiW~)l8egqb96kOEbMB7Lc{Srdf9L*WvqtBPtOH-suUG&?f}YvU-D+&Q_P!6 zYl5QNtv=SUd=V=I0Eu)pG-fB%w6shJZ$KVX8Don%BZ6$*z@!5{-qmb zV88Sk;9XlN3qbQ-I(+I0xO~CpOm!pKPSBcmlDdK+X{PvAI1N!89iTV%b~4-EV|<+V zv}{{Rvxp>w<$4|FTI4$WgjM~hv8+X89*a>-O^SNxUG+3R;QCj%EC_F)F!X@#;`Q14 zbn-@b?u>9G`6yd;hdeBvWawdMT&BgkW1+Yy){O5n!(+}nLK@5a=M->`AXKzJJccN& zE&mX3L_lgn{1E^ef^CScANwBzAklQ$J#Pa*uDj4m1<9$4#^gl}KKVe8HnH~v zJ}{*7+tG2J&snGXnfQQ~2xN^>*8JZwut8=H6b_I$A!SDpdLSjIpdhG)3mbew%}WiA zIdFl<{3{;r7BLROGx{&#cWT#9^T+ZC{2r02gFc&*;A@0o`e!LnTod7}2Nc4F3fl9i z9=-y1ouhmUM2rs8y2T^pT;Lm2BU_Gj+_$D;DCR=5|;cMf7eeqKvWb8HtAS(k; zx7F`7=R>VRu_Wkm{iji0*0WQuVqBNfhwyPVJVYMs`Q)i zHus!qzzx6C;h#6cdT4Jv(8zkcn2bcOr48SCd2g#oEC{|PzOiEo$=c`l7$d^~$S~u- z#_yFZUp-TZAL0*Ca628BXGYI`_QsbT7EVu0$HK0U@Dwa>C#{4?6^}(UJ7v{}QYiOg z;dCZ4%mv%kI@zO%iAerJnf7=d)J?l5ee$uO;XV-cUbXRDd7E>k&_{?QYn&>gdHweN zxEr>{GV<2dsXX?&{Sj&kZE_Xrstk-vT=H{zl6>~841sZk(sLTkUccy(6g9r){aS~P z5zin?Iwa_)(UakpqT=~-%C{baN{gaRVeGV2mhg>OHznode$YIi7703NnC!83Y(nojZbV*} z4}B#16|q#mSIJHrX^@pH*3^8S{Hys5{?fVPG0x`F4f4iP2F{u<&-Cu76<(2;6qgtV zOZ4b$BcqMfp8kBQ-?_D4{<^;=hS?Wut zfZO#+Br`vMy)|L0mrTV?9BH=M zoPjMOi~EoJ-0ByKQtb3rqtEKogM|yllrqq4(kB*iX?#4?-n9LdggMb0w=0xC zNApu+W|%iGBsn{7uDo@FiSwJ|0<1jmtL=Q1lq4)$ES;GlZ;5FJP{^;hZ5VhDbFxd}IXN`Jad9cwv)8JNF zph)@QOSf(;$^G*Z?bp*JO%4ou3!gaNN*Q|B@46hiP#yO(Md=lY*r?(qp$N!Ikuqi2 z?B?=%=`iv}n|UxxA?VkE=1%8-yRB94ZZ)ZZ!S*k-LM&!I#8(&NyHa8sAOF|02P4ZS zs+5gcj5p2kY(h|@#)r)oHM-!ipP@qYWz(iZNP zE|aY4m|EuFf*5ZH+I?0)fN@~X?j zE^oE-t+Xw#Md4WE0YByGsqM2gwPhbIicUW}B|v)?{pP9OO)+t?+u?j<@5@Tmz5UJH z*OJkvROnM96Do^Li3bKWFg6%p#Sq%!+Ye5>3;EDxe?%zFh}9tG6j^)g&OFbYb{<*p zzmHmmuwO^;D5iGwUx#kB?xd=nNArbWX`wyi)J-QZf+7pEv5n4G;tw&I2*a+=_z;0Bg@h{8Hdq zYIK|eag=5Z?F%V80WXbTFLRAo+#X`-)FHN*NW4?`d3?{oE$C{0i14`r!Yhd)a{}fc z2DvRuzxaw?W)$qSdRb;67+;_;7Vpc@rW~EXY3%tFqg({#Cnf>u>Lw?4U*)}}Ih9&A z4#Ub?_K|qB9qUobWouv0u}XJQF4SH-Vg-xRGuN zh2?q=p3) z9=D#P%5w;7CI}vn+i=f$t?l#|(!)9^PbmzMy z264u`p`+&YZ;ltT3tq;p#R!;g-0m!?uv7C$8#{Q(hkYbIHts3B#GNCK^|FJnq>y1m zA?<@~U&6vJ0&0w~q?q>;`5MPTe)l6*G{HnPL8CarIuT_=T;f7ixGGiVtO(=n>16Ye z55mFEntXxBc_a3`v?PvP(q@##GG>KG_EDVA^S{lm zi_HSFb(7*5O@Ub4lrc&4#?HRw)3ca|6U9VBI`YpVJ}ctYl(x(;7BN(L3M+AIDdIQC zj((tSTPC(VcDdu>!9JVwWn4lF=Qr{s%he&AThWl4I_z$(@q|X>1zCKOfI;vNmX(+V zOLAuZPrvuOK18~bo`QqVM?UNizdFfgsWz8-^r-pb0!I06``{Q&V9WYlg%jxjcXhd3 z{=^NzpgU)Mk`<8PoKyX>anyVFY?GLw0paWR^QDn&)^-<-WZ}e~`h8+kFjyXB?A%?n zknyDR(P8$Km2yi_75;W}744Tm!n<0MHEb3~K=Uf8Q(I}8EMsNa?sl7EUQ$Y+`mz&| zyLqLbVsHqCU%~g3y79E7m)5)Wk!7^D7iTFx8$Vrq>=R1(Istt_T+~Oq3I-3QJA?F_ zETgHq18fH#4|{i+;2%ntd|OKP*=ZnRgP*c%SPc;u(b1=K?L2~ps_ZU)t5~eq|3*SU zaq{JW7ll6oGD)c8O#zWJ%?WPnb?74HO?_snKli^;eTR~LBuv`iC?d4}(o_~5*Ddti2^A+Y;D*?r%d7kq zZWh<24sJ6uGmn^SzarLp-~IEy-nm;p__7>Ql%H=}rK?Lj7XN)O(+LUuC_okk?bltr zz7Ua~2Q3mi@C1WCO)2|T5y>E;L}xij9+!u|kl_Aa4i7!UXiT+6g4$xJ>E$692Kc51 zo;n5qH4$oeowfcuW<>{6S>y)zgoOmbcF7x*IQ9;9x`?uJaBd zr+neJDAa7D4>}S7Jse*s=v_;%GdyzK?uyY#C|Wm=^lh!ZXR0o^_C4IZXUnDMk)a_q z&L^6mA>qDI-b_3ApeRBOmb!|qd-W0aa$kig87!D5*k}DxqT~lg@&eus#ikb&Vi*yT zBnviJN3>TgEcK!3ZRl44Xiu; z0zYMLq8X6bNl4NpHO=751wW7UVe`Ks_r&?L0Y_(vrn|k^1+*s={1tKK{8#v6c89I` z`$x*iLplp3w@H4*t;sJUZp~1Nl9@G`ORFb*cp&<2aHMvyCe1g$9YZ-0$ME~bIzqfl zzN*HIhw6Q-c{y&*^W8QhMm%oJX5U`z8!HmT)jeDeW?D?hHS_1^VQF0orF(rtjWs$dvNNgd+2sJ=#KXIcYV}yR(9cRgE?HNplR1Ys$04<8!0c#Zv0MS1 zQjBM(!)M0WaBaPR)gzLfl;u#1#_1bcMeGI$$Lchl%{4VNSW=~*re^ww>yLg5O8{1* zDlMZ?=tIkt`b73hx>z_GZ$JpP4wl0o)|`nTg?T9E56A z86%e13yF)Ao74-&pBJogUM*YJoV>7iBVTH#5zu{^lo6!S$&Loev{>g5+W7rooAf0; zA@!#w#hYUHqsv<7=@cs7y|Yx&7*IK{U8j00;2Yfsl&p74hcgguEl&Td$ajWi~ znqse7t5?wSNFL}c3S7qHL>Gb=Z5w(NHHZ{KEIEQ>L$)Zjlq26g-@_Sq6q}1hH?I*B zf4pe1uSb2972H^EbbG?jo|y){sa!wKi3xQNNs{wM?=PeV6g9Y~&J-44XrwJFdOolZ zz}C_*O%^nga`08YyK`GW=t9IA%I5ojW$YfWe?#&UQ=jkIRu36VqD#DBJNo(ym#@dd z?nn}n**=&Swc{p9Ww?DQTPzQCo@)rr_da+I0H?MQ?d;ELi4y^53o`E6rg7uUzBDRP z<#`wUZ(6L#KU<+sdR=<+#OLSP7|+AYdqd}S?Z%VVkK3jT0l$&_`{jCQ0(KQw-zWJc zzBO0LqRCWMogaKZKX#4Mu253(r2Jq*X50ESy~4;#oM{R zqf+SnJTP2+IF(hd4UoFh&a^MNva8#ye?*{t)co&Jp$bXQE+wp70vMoNdkyB|bA}kM zQm5s)Pc+(*Ughc}PG#E4U}{l*O567oveHrZ|G&WdtgFXBB|{wOz$QWCr&tJ_h(R#( zoDJ&L*-$6aQi**1T+kHwGBVQwzn(BtQ8~|94$Mg?EhE&sXrl?B#UKvszZo2lfCvLs zVK-o-11lMd{5(L<1sc~7Nu?*)J_9kX2AD9=Vk_RbGocLVH(=8yScg|^UIs)m1m;4B z!-xU>Vs;Lcjsc*Gq&{Lkm5*oW9@HRn9(C%S@$Y1w#rmNPs<%jb?Kc(^bmE7vICw;A z7i7vk1b=9#7EeMk|G9=Lofq4M61@Sm8|@)vt?q)Uo_ARUprZbNt2+$Ep0)fj z4II)cAbW$@=Z2ORw5~cdvH?f23NKAT$2;V&1eqq^987lutev4FbsQA=5o^dRHg$OE_USQwB^23 z{MLuP_0_b+B@Bzs)YOzJ6+~)t+AjZ42YCfln1CQ4bs@Itz#e?Qvjmn)UxToEp#9rB zAR*Qr&?M(2V(2``u$(+&L07Ux%G%khYiL9ySKheTQ(#adjC?)(#(3#)dX@M50uQ*u zcIi5_)4WwR)~K>ge*(^%e`PtHpfB-S$XnC~a(~sdza#do=LAgoIMU&}g|ev~+^hDys||6YYvaA_v+QHJ`V8E>o#1#SXEpIq)PsWg-DE=oZxiB%t) z6mguV3~&5*Uyps3*}&EMO|56D?>_Lxo3H2{MV}J6Xbj&hp&-RhQ2z2r!gk+UuPW`V zda1^c7hVvUEjfV@sozPIB9w&mxq7ihPGGkG@m$iSIZ{@R0i27ivWyDHK8vR&Z#U+G>3DdLF{sZ2C!%$6MS z1&h=7r+m5xx9*wcSd3L2OKgy3&TnlTWsa>vHh0Iw1HmMtkAGI=_%~A z9I3Tfq;`nY{2=(|MSnTv#l@&f&F1)9^#=~UiO+A1o=K%TTkrk(F3m8`(1QRkiQ+50 zV~s=&I~M~>A@bXg|+V6{|q&Q4K#%2uT8*iiqj z(D;Vr(N@WwD;_^SuBu83dD^^KbXshN-E?orLV>)su20eH*!zL&EvJre(H(r<7=3LS zckZY^BwtJwc>3)D`W>u9>$T+}$sxtqJv||prjKRJdvzFnN^)h)Egg|(mMXval6;$p zC|6|LyjBy+l}wjmkzIa#Pd8Cpqp0mjYD{iW6#3bX&brUgK$29}z&mH8@3UCA1q7G}%0+_Z8FVuvm{P;qjBYl^PfMR=%YX zpM=$~YSs2bm&O7_tlM7RQzWC~^wJ?W8hD+fR+BrGxx}TdgYdk8R35j#avs(8X@Rn)rLc8qDEw!%{7!DIfjX-_@kxckabwe7o>vlHCW zA}RYF@aNo!NR(BuLp}7?dO!7wo-A|)99?-)THiw8svyxUkOWPU5Je9}D&Pdwv`Q}O zS;^c6eE&wMZ28Xvr2&|AW6+pFb?9S4x?KhV!++t`Eo|!oD&Ng5>$rc>@vCV-rq6ug zy-@S9y%?%{0uN)ojaqbHz0&M;PzY*?X4u7Ry_Lp=Zzw-k{!z#|U(jxl(ON}LE8`xg zLf_djm#4AvhTFAALoDwaN+}{<9vjk>@4e1kqH5!*m%YA8e9QJcwp=;uhr5@loCH6G z-ju&t#{U)nD+hk}R)2|K+ES;GjP0aQB;WcP*I3dQYnpHx**>1wmg>2r%UuHD(ho9d ze6*76Q0w;07)(FZ`>@vu(9cC^s7k!F&u?8$C@9Na-c%CR<+Hr|nBm(OlZ+`(G0vJd z70tH3ocy9{T!oiXSUF3>7%3l=r-Q)Ub!C*Xpx-QGmp0UGIe7*|81IHXG*s0cM8UBE08{6QU{APIdYz;)teA0$AYAnjdl(5@?jp@aqrh2A59)%_n8+hYew2QJ@NI; z90(D}CUU4A9vONRe|kA$o7Nb&k@cZc>R2iV7d}6Gb?2}ldyvJ~;MkS}<%c#wcAev# zEM(Z@T8{FKA!quQOC#>`i=N#%H&-cq#&KPP&CDokO3CPgLt@y{cj78(`1Zg{;Kv3( zKSs|k;0;43$dwQraLffdX!$#(SWa3IId)uhVUP;}hoQ&81Jq_nPzPp#+YIU7(D zHDH`5uG{yh$qZMhJLRz*j{4|Uv6_k!1uUIV8Dz4ABEGk6oMdmWcVPH$QwU`%KC>ohGR zNK3AV-JE%1rH5q^lJ0BXW;s0Y@wop?2%BDrS?d1W(lZ~E6~Rlh%xS*!xIo&ttvhs$ zsaNqSQB7;!+qdpEd+YWt>whJ*)u+>RE*TmddVD6mkH73ZLA)O2t@^6ljjJ(M{Kl23 zqvyId*|^LL#WA$iif?FKZl8M{CNufr+$$!YmZ9!6Br}5H?_X zwwS-AId9danU9PCEU3SwZkU4x5BjgTS=WAos}!D#uH=bacj`NDiU)dM+_Lir7>)keMw)&UIa6I^&U@fm@8rnJa@MVNr5>$9e;O87EH=**BXN$5*l2gg@Qv@jdhCU>iP7}pAxevcJW~dtPc6Ge^uAqo_7Z%{tWR3R#5(TLSL3o za0Y!O{WAbn!70E$$Y&f-U++o4Q87T;rC(yHyO;#?IM3QDCY`$}YvsQB9ep_H z7zDxmq%rH0mwcpU@JvpWNC1FPP{1H_{HxGFPgzK0#V)^1XTzsi(~6@S$Ij)a8C;L$ zz|>zWSXR)#Qj%EfA(Tc|ZMSPghkn1jakzDT#YE>C1H;Ez@y_4GTvCycVluq%p9P*w z56u;@({VmE3wdi<#Iso_X3BN1#BX#AQ^(~!gTg_ITHZ4mex>i6akSK?FU>maLq34c z2GoB`{pcybn2`LZ9r>%?hYNkSD0wOE?iHb=B2>`A$XWYxbw*^laumPa!`q_7Yu4)~ zL&r2xYAnHZe>WcXaHsf+lb0^x;8xKsatvMSCA{kP0ZEv$16e@EqFgm-!vUR^w8wD-7xrjGf+P zxL=FJ=wLzVyFX^!I$icGA7EVmF7{P_8rg|;8{ay_!)OLu{rTfb20wEt)-WSJi?(We zKm49laTRqbMvwb+0&n&d#BD~$0Y;=%_gj+)XOb09YVdfC!E0sUPVY3z;CRmGlcWs3 zw8bRx>d<1lxPs)w=>QRPp{$w(Iwz5m8j>4^Iy$|Ed?uZhcEEYXRWbhwGU&qIJw|_| z4YnN!Bjp88-t-}ey2@2;s;y$8{9c7_;69_9J5Z;4Ni)Np`! zgIRAH?)j%kE#CaaHy<7z9#~{TR1V(zyfi*XDwp+*98?Z5-D%!rls0N68mOOrn*CDa z#rF3a^|nI|{OYFD-YdQIHO-IS@9~6a7u?h{{4`xXL5wxvWiAcY_6jQTZk&d5%^Im16J>Uy1DS@%A$5p*iW-0EhzGqG73qn;l2T7epzm{wBee zt3+0mM)qu0&>a4vU}M4pW3rQk#Bj~bp~h_jkH6Ko`tJLN<|%q)MX%(%t=kaBM-f}K zIA`BFHe7!)sh7=NejHlXmVnMDh(VX#nkD|Op~~`Y_oJ7gy#3YRUXm$sj!9ZLj=njR z2tdU-{aCC#O&R^B3<2)$iSErkd_0uoE-{JW)tPO0Cdba|633Ud0LC-soIdUjTQE{n zhDHph@|K;hjt{oW-b-XUmE=Mo$h^MN|6D0+#~FNaa)dFV>H62#mtVmoChq*0qqKy&6DM zvGt9xlf_Sq6!$@+%rB+LN~Q288*FH~%h^=NVqEeeIn~GYvzro%_vA%1O0g!|&$(o` zm&wii+$~=6i+xu|+r9Ms+o2LZIT==DB*<5q1r7~8hx4X-kE9+s3ex9%id)w zLOt~RF#M*dX!SW!pDyj^Q^}&;0v`7T)p8qUuAUa-H99nPn3%47(=%w7J@Jt+Z(m#N zVR0F~iw(PB8i<5d`P13?sfM#~ z)`)Pi6GQ3j*K#bwGD8ACeW_n9sI&Zpf7$PrAlJn0Z*SChFvGJMMjk#5yIJqVp4}HY z+TGpTDi842r>vj2S_3VB*7n1V7;a3lCzu}VkoJR`fd)BG5wd45$A%d5;{tGiWyyl75{&VjD71Ek--?wf3RR=EQhliG83TM**Q!tkQWD(D zQ|kC8+7zk5CAOpAw!8HouAhrOEcF4u`qRwB3_Y=>}qPLeJOf9L_J&y^mqGEu{H^~Kt> z1MHqc=4ZIFkUBz#rV+?bmoY9MLl~y<=3KTKlO&C=Igj!!Zb95oAF*$5$~&(~aq#L= zqT{~y^E5As&su&jYa`bi${_fED0}O$sMr2o8$pmpI;C5>Lpr3pyPE;&M(LIksiCA1 zkQNXS3CWQb7(x(90cin|eUGm7?C1Esdmrzy{l{Z1U916y?;W4(I?o03%p6@9 zA7uGJ<^W8*SJ~_ZHpL@!vi83Y(2}!Dw6C^@wkb5`Jqa{#byo~-zr~)-*A=bEi}NY5 z?6@5)eN^7sDW^P1MX8LMe)qA9Jkfx5baWNUo39e+L1J{@Id5chdYj|Q4XSPMLcH%G zU1r~>h-m;xeUOMMwTS_Tj#LkMV|0C=^&_uho-dR$Bx|tm(HZ$6=^ThslWEtR{+#y{ zEDQoBZyV;QIMevg+g>P=O!BgYjzX1nmnSCKPVO&4P&d=cj(OQ0+~?!I*#Z_cN=sXwn@-Je-w^(>&y)3*%be~}&Uy}l8o&z8i1h_VryXlaSp8j@-9T0?kHh#xWTZtjJSR&-{ zZRug_Wg4VV;}kNsp8F!u9Y1j|pOAs!MvXT{oa#-occMKyM*dq^_7}jz_#KeP>*Y}I z_b@(PeW^2zm34v_a!)N!T*02~Ysq}Kwg0;7Rz)ZNEq-XIzQ+zJCQ_I71xpl|^br%s zV$09>gopQtxq`-xk2o7+4(ik|A^5~XfrG2n6IwE-!%bWMy0+|*XS>kEys_!{gJnmj z2He3n#`zS8jGvJ+p(wYr>yO~E-c<3mmWjz!QHTyXOGetu3X}Y#OlOw#Y>YjDr3%OG z7}#9`C2c)3b1-eSl??#hVGhv41?lCL&;IhKGrF1x^B7zh1SuxM|BdSTy_Rg<>TyZr zro^Y9IF=2Hh*@6v#v&u&!Q}n; znaq#TrxXm4SdovX(&OQYyBD2}tBR991&r{@O6~XFgFBazn6_pKB*#OXJ z4cT|KyarP$j!~0lr%42!1hlVfExJ1XzOecs#9W-eE!=TRzG&rFVQvPqu^h3Z#=D>L zP;zu;EF%N0vCM2Ad>@dnDsycG2&%|L5ilxS`=gzgg4%=O`4Vmjna&5m}J)2 zM{JAhhgcHvj$^fkQ4=o`$|jyjB#pm?C<3so1q`fAFx@$F!geE`#v)d|4Yh$Ief?z( zP=I=qSw-5^@Nex&%)Vq`Np`36e$$wF+}C`&j5Pi;I~CbVZwn7`u$?%aj`{(5uo;Zb zpwWF4jNp~LPm=j=uXcYLn8sds5P^6r8Yf;)#3e@(5^x<{MGZG+pYB+$` zw(&^qVdR)?gU&1HgTxo|HPgG)bv0McFHFkHai^zz9ibg{qvc5?*%pS3tz9J=5dmrQ z*zc|yK<=wb!c&~GQB-imF0o&bU`9^S&g%e%In~~X=UgGQpe&AexxBAR8AvC4CtaTH z$tkP9Wd`CpBtKV^pAfa7q(nA7|5*#QF7M7=KEoV)1$*H0nehPaCQx$+I4Y3MLO+d+ z`hlQ80k#9-A?VW|{Wg;A(SKFFH<(8(k@BCL#mN1{!`TWCj5ve0Dwii&n{+7@iF_fB zSH~Gh?048!-}U>Ahzm`fV(rThJ>(qKER}F|`XNfhA!UazuE^18AXYzGN%Z5;oSlkQ zkj7Eqcu0Kiy>8hiL9y5NgcT1N9&ZM@HiHofQPbXHuEd`sJK`FId96O%9iAuT9<+nU zjYGy$)YzDQl?)2+Ve>l=Qq*LP0DHjHR2-l(9&v9h9b!ZbFUxcg3%@4;=;g8G^h4wdo~r(+w7^CfZs#$c)xYr)cJi@8s*%|jq>hl)?cN9>-?UAiY?_cm9sZ8ZFb_;22%-v@V0HyCSx zuZAFsfOmtQzP{*c`rIr4Xc;4xxrKd7aOEh1P2pzYDB2~k$5D>SHXus2>L51hn>%aO zR`F*wGfgHMs`}ctu<^?cvd%k6KFu`R`UU5`7rC}0bX#;=cCpEXbkmc3e}$0h=Qd5Zo*qBQ39}tu2etnNJ8*A9~#yn>fy4*6EC|@ z%fKyvC%g?AX$SNDOr?v=V0-Z$+F%@^o^oyY9j=LOM33r=A|Gy+2d?pB#~cQqG-qV)Utr}*%@T>4XH~ua@=&P4co`a`W^J2 zU>`(V<`eTc+o!JbGA0{lykD!O&Yx#zIjgJ1*zMgEW6H$LSnz8-TwNRY0mAI_+}xFc zRuZY~j4xE&=)(!2XAXLoA=cM%dQ=U@px7C2C5dL_*lO)~4MjqQmEvcFY(`!@cCP(m zPKBzYZp9LNPG6o7v3hyc0t^AOkA$E}zy^xzmnS;9*=PoOBAij`%;DZ`9Ep7jR~h4v ziC8=1Bba2gkJzl!m0H`a@*zzA0pG3(! zVrKm)4cs@lkRM(8`tGnN`3q%^NAx7iGd_b93hFB9%J5pCrzr%^3*gW%OTOWHMx>yi zf!>vyk&Tbq2R5{)8h&BP`+g2~56S4GI-Ixl+=N$~Qb-N4c4<|r;gc5mUr}lTUhC$+ z3UO<%t~QZR>~1sE>3_pfAZ=H3456=LrG1cHPrq!acSh1A;Nr@p>+@>KnKRSAz+uDo zn4+1vqQNViut~R$xw(?iCEmp0Ljk3FJ}(S+?41?-QCPu{V(KSIp_N;4(rnhnTv%S|_8APIO%t%^>{W%d&gV-59Zqp?WK6;WltDJoDS(W!9d zX6LQxAaN4wb`~>gAOUJ(XbHGx^O$;+R*efw$SerHlM&$Fv``{i>*I>AUl9@lu2I^* zpvT)SINw#OE!rlgxxl2`MTT>0Y0(ZWJI)p8tcziPi5vbw{9-&{hPhy-MSsZ8%kw}; zdal0lE?dogM?GqWuhOJOP0^<)7G+AZkU!LMC+c1rjf<_TzBDT4yZ?+{{g;ve_CZ1#| znqG7tjmP)4H>K}$2L1R_=*YQ_orRdW9B+7hT;OUm)w2sv`iNU+_q>;5u>ZUx5pUR!eCSgcXGNt$IVi5M-@wsJ;ODlSyQrVn-s0qAj`f7vgH`o{SbrUQ z&mk*=Ah^#q!+gkHFguSB~{z$Ym<-1QFN`4@Tq>Ainf+8bmu|DDw+Dl z68ruNG}mgiE!cn8?19C0-PKi{=2z>#=|l+f_I|PV(~@V%6f&m59w`g=ZX-lwl&h)5 zTerME_{=_OGaaLcw2HOCbK8lB&OFlKy+#@C+E(OO7#{;CTbUi=Gfywt_T;rsLz&Jb zmfMM+c30;S${J@0w%tXQhS8S?_Rf8J6%j7$#J^&d{e8R+GO*b!x0p7coYqNdarWu+ z$Ha&IsAaVH`yqi9)->-pz6x=#e!_lsnpuM$NoY7ta&W?R);NwnIY~h4>J|TJqr!GS z`_qD)$HV~WnlfuUZoT#wSISFQ!uKx^nDr>R{Q2m(Y7)EnHB0%{ak0LI4c~Rd7`rhS zdh5ly#zFPIgwSn}>uB_cRFA6GX~}Fg51Vz%WVk#e_4%|_<$Fg(z(#Bk(O-uj$YQh5^ToDK`@+TSjY z;*s+;t1slae&5~|OkC!7k&Jhj_9*oZ)^7qaGRJLMs^?c#+=y`#{^P77z4Kty`7hY zib{^A$CMmPxj$cmT<-V$#9)3#WxAdB&{)4&*j7f28S7B=@6ON6nED!)S1JB0JBp)h zEAcm}sRQ51C@FDc2?!o-GMghJ$Rvz-_@D0Ya_CQQIPfyYyZn0lHsYW`S6*952|d0c zpm1gEU4(SEd#DBX_KY)6R~-xone7g}E_*d?PkqNd(HamXO# zgl-dl6Ed#V$YJV*GES4%1$we|Z$0SzMWlRweX_5RsF`Mx7-$^WeyCqUi+P7_fA$p^ zZK;xL_nEm$HvEX^wH+)~1P3`ld77>zL<(Z0Lnr_dpg9060`x-+z)m~5whY=S0~Zme z)++HuS=W|rRR__TB;Qefo%K!6>!Q=ohubROI3F)8KAbka&->2P1A@Py$S5s8hV2fe z=Q{f*A!GhgS_9Ve6sJFnVtg1VGM`Sjv;@|dnPwdhMPsAfKcD~g@p{}LKJNf+xwZQ| zb$sZd(f({iSjnWyui$MTUoP6>?7OS24LpIv&Z?*wD52|S%9P)Nhb#`xA|R_Xy{Xrv zd}2fAmX4^(k(FgLB*;W%Xg$kfMsF6Sa?3MnNhVF^+Cb12E#vUchN>*czli}?E5wph znx1n+%Dg(c(~NVwoE|{E|5E}HiX+7G3DT15z{e?0l_#B^vsdJB_?coh#DiqbUBUcf zgI~Eh-XPtpe7f{IZ?19(oXx1#JGZkC!dbc-^*h~HXj!HdGZRA1WKLUQ+9-YRs?C8? z9ruCL3%}n2i4Y}5;1sKu7kC@m9CeugA|ACS)UPU5d;$5?5iEHCMi2a6fXzh_^8{Sq ztN?N$$RbdF#+!Kg{Y{2Sd}}x_mHj(GTj3J-gNQw~l~leOBS^8&B(ox~hWPS?O7d^I z2V?|ZSjznCO} z3*pVcc-<;c=)GM%Iuz^|WAXR~71BhB>z0Cew{yn4=I>Mt}x=0${5kvj{W} zZvh=2P@DnBn5M|%exzNcfTj3G$ISKU_RNB+lw;R8wC9z@Vg5(cP|2?L=#W=QmB!3m zZMQd}2^su1QIjizL+y=r@-;UGeNIJ+21#R4I|F0qr*CX6R$06YcS3ZzenyvQ#6>UB zCj|TOma{~AWr_J4=QFA(d%u*iWS6F>m)W%s)f6c6>Dp6yG07D(Wk{Z!?eH#_Nw_L0 zV>n-+ugmMayK1exv&g!|F%lMDDFtR~e=^y*TrZP%JhdVZ(IO6t-ma(J>BB|5_gs)7 z#9z-i8;MU8iaMXlOtCffP?;bNwMG3vK;A)R-VY${@Be{iBG4ru%sJBNBPdU*pG6qQyf76E%93+IOj@L&7dk zSSU-Il;6bHGp=zEjNrD;Tf=Z15hBLDllWwv(HAykJ0tefCi5TVZg0C9lYrpmS&(nuxE+T!L9@P9U199^M zuW>RYuuO{+egOD{P!PbmfD{7yTm&r$_X5hAFA%DrVp)KP9RLDF$rdB<%>YTc%KMS( zYqWrRCrJMxT!1?rk|4?bkviB7XkFzI_pHmohh467uK~5;6Hq%Kay)x=om|}?0A>ad zIxY|#QUF8r0H$Gp3iJOu9rcTbH6Va*c#OY5fpfj4(VWCD+3v{)^8WZ$1O1#^=cznwWwFd27?;JW=p%d>5#7%RB>5t}S{2SS zsEK?iuaWsM?xgGSHbfO|7#L*gDSKV9i|&+@r8Bm5T+$Wii@d;q8)<11JS3F8Ws}~W zrLFZmsbm+_g8oq4?PY&u9L=Xs&MBfbu9JB;nPU>l{C@l*zfhy%-8tnBrZEUM__)eC z8PCxPQra&FH0`pq{$Jwr?=Z_i>c<#Boxyub>kt0$HPGP#JZ>k9?78nAJ3IUDAF)!{ zG?Kr-gS!2XV4Kd@Zd*g{_xTl zttlJ6@$gC=0tT0UgO3LtXLW!@?ier+ZXjt2ggsp##}xz>7}6(&=fU@z|M!}rgskwPalFCa-{8047#llAQc*UhHIEx zZVs@FM>#BfYT^z5uLMOyvnL86X<(6kZQhBXg&q@pSp9w81~ipnK*bsF1a{)!ePaxK z2cRa3K~6z6GvY>>+Z?C3w*!!~!)DyUAXlOpBfI8lw)O#!plfmSC4E0mL9PK+vh8oHAe8-`sTA%KfZ>pdt3POSQV+)1NgU;Y6pocTuu2z$9ZJO|JJ7n1QoAAw~9Hn)RNasKm&+i46Qed2aCKR{N{`62b zOx5k(F-{#6BB^aj&Hk$5(t88v7e+Casb>*6pBK7q+q-WyNp_tp@q~6nT1ORqzuPjKE$3#Nazi zhO{_g7*F?K#*u0+iY-u`fM=fLx&)Z9ibNRdb%V%upos9r==I^MeDjVcB;5%Ne0=(F zT+20Ajm;nQocu;9ru^;McbWmI(LmRJT#Wn5`J&YR1jncE^mu2Mcvy9ZDQG#;7eqsj z(0&}~$@n0?KO zKY4uX)D}Ax#;z;rZ@F}i))PxX<$5aw+4gd;Goenzyi7=%R%4s;zU0g_9zSoW#RDsaKDG5Mc53t!*PfoR0%+ zuIjS?H|6s?=_UB0BP0%hO%w`J*U-f|Fl!S4p4US^Ksp9bd7ynZGc!}W>=hUX=$!&U ziH@ypT>}z$M>Xh`o%ZCUMA}K|g|+KLe08(N4Z!?5mzX@OI?GG!=E{wk7WNvBJxScn zSgow>eC-3i(i#yT=M4rG4GbSb8b;2`&P9V8?N-xEJg*D-QKP@)?}}nkl2H6gT|Zow zT`g<--F{Xk_09*ZNsiu6W8SV_F?QRKTa3LGf)@bV_s2&UX3s3I6(Ns%Z+GO4zgnKg z+EKjF#VX#^xGVhqnQ6>$iP!e$+uTj6IqSsD=TA)0d*1F%YM(eHbYu~gEE$cZH11B$ zx;U=fQu>A}y6$Cg`+9y4ngN@pZK}?ALQS!q(lD>?MG!fkIaKG&H7LbCXw7)h{U(ZI9Ie1<1i(2s+cLo*25{1EQF*Kwc%|C(qp521K!wyHnIy7@`-VS!8<%yTtamDSY`E7S#UcxgJ$TIX{de9+#^(Ew zhV7t4SyGX+_aQC&epx~5x65WfqO(QWe?}Lan)1l8!bv`4`ga~a%z_tAG6ckDI5ciaI8$^)4I(f4LZ_zxLf{a? zzV;i4A6`K|`S0z=KkiK)_ z5&ph$L#~4Pu=6{8LFA5=s*4_wB$p8_$n^D zBQx`i31;SxCogNB5itC&YGz#d&?1f(!tgrx)U`yElXpwG-S_#$V*hQB=grF4mz_jv zO5^UvvE@(h9?kJ=#%3|8w|?#x6yC5a13$Q*&fL>s-GUftqWes2HZ0+q-s@8l>^1mzA;{5}%|3=)gbsLJ^XD?+)n8o!3faNz9~iDI z>=J~^5q>YQ!%U`@5DU8n76E(XFyLeWZA3+RglimB1`zTZg zIBsuzDxxvn+#yyW9%_?(geymm$@UyQI%NdHQJDQ3OGJ$d6KUf5{}Bt!K7xSWBWx?6 zxd+(Ddz|#jQ=lCjw~g3tZlpa%(AyCdH9+#-1k*wq8VmGT<5%vFQN;sNiZV+>3P1PH zTkZ&@321nm?99u z8V@as*LoB1{)~WTLy3--`mg5zdi-sksVgl_? z!!6q}b@EP`XRHNF%d^kHC$tRt+wX?zYU+Vwmy6HS0&ZV$OT59%4WqFrwzjOUmfTh8 zxWzU6lZf9SHUUI?2GFZUOTz&s4tmCkhHW}5B=e^^<>24}e*GUMqwL&+_mQPN`qk3;URCh2PT{M_6uKel14COEi@{feDT zk5DDrT{wx%*3Nqw>cmT#AWm%6s)qSFKo(c!?>SH^I|#HtbfZ@tAtPRHf1oRSoj0Ur z3>JknaXdQG{M##{y*WEmqL700lZ1Bf3Eks&r=^F(0t!4xKIn*uuhPFcgp6`|lp&q} zJzobn*q_FhU`u`&pwNasw#MP1x~VFs^9lmJcliJexp`G$GMp8sp*!? zKE9&-8)#*YQG;DnsqqZ^lbBf+KRwZaL$-PMChYH8f1In0p#5?4h&HEdRSsfhXyz)%{aFX5-?``tERcw?1`mD5FYllAX4hP zFlvLZB2d)EBqK|sAv*bA(4E}el3Eobw@_a^8xD+LDQa@u7E-3#^sh2;Jc6r}q_bvE zmuBYn@5RL^l`?Zch<`XlleCGp9X7Ew#Pp0;rlobkKnnJ}_dJIq5J&t7H9B*mpe_EL zmMlkuXdHj~R9ntZ%qk&sHQ&+i*?w=H+x%{8*6Wy3_$FP%OjWn@%z2Ncw7qZ`M!ALn z-9$N?=&NVs4Wu$w>$GB6YkA>%Dy1_XDqU;$&5#hfSo&X?MWIbl4`%iz>`EH9OkJ{h zc>6Iw5;Egi_Z%Z1#TMFjV>w&Ao%#(r=Cd<1RN(V`pZ16Rl0s%*v~GUL{Fea2aBb#| z^(W`Vs4&Jv=cD_OnkcG&-~~P1PxTd&wNtTZ<}{PApU^w6zS$J;uSyrRbo*66+&KN zP(3JFXdN~&{dbt^ctFNI;leKR7#l~#j>FYj%?{0j1{pCh-7o4$q8FEwdt5*` zqkc;vRqzv2_hTkCmBH0nalF1_XEeUxSj#3MRv{Va*tihcs@%Eyi;Q{vloe~=JD?G! zZht5C@tYx0F_rkrESmJ=s#x4RoRvx%=sCkJtcIg^wf*MqXXd-s{<%eEj3%%r(_MU} zuhu(<|L}_Z_v~5t+y>+L={?H)f_vTXd1D=j zdW&}U40U^6RcenVuCJe<6L`)HU|9ap8L7X{&OJpMN zw`|$>|dER8mXY+xVBa#KRA$M8C1~ z$W?;z^J}sVDf1TbWQ)HXtf;=C=4L(4hk2yQ>1mJJI-TLBA=sylf%tQ; zCT)mXeiu&~m>ss4bbq}4go$)Y13D+BD)FfTq`GE#ta`%&%&8#~>_(5QeiTV3SfiuIz? z`Kkb(wxT<^Zu>r@`piGlZy|rmt_Rk@6NN8-ILJ{adfhheQ-}K5*&uTNgk+q`-SLUT z$v7vc%2jeupqGR&ierY^_jey4eGT`?DA3U&2dU*Q2@6>;^rxPYu3oyl3SJTXKhtUx z(kcE6%jii4oGaaLLjrAWUwH_afBp5Jn`Iv#m6Ybu#`66t50#S_8RG#p_HY`pwpWL# zUoKvN+qPceTq4ZqxNf;%11*lZ_%gnNN56WGn?(0h{Yp)>i24&SZx8)P5=Ou_jNc6p z3DJW>>iQj2`5%J<+C5}TvcXC#9!5Vw;dvV}e#$+$#`kxx5CeT&w&A^`VGcn%;-k>& zzxG2*0}>D-mdT=&baK3)Z%$WqLEN7I4e!5n(m& zx9%C3%4y&F0%s0q2l%L(v)X2}+u~?Qcqb3r#mVTHcSkL$cu979X*sYP+WFYA_q;>he zWu_w6FVK8>s=E3K#>@1hN5-P5DB=&|moqg<=fj?@@2|alDngf?lZ5FrB0bUO+jL7+qV|rO6GkJPDO}YXrz^z%TiOd)1c(OQ5s_*tbK(3 zTnP24g(4^6pm|-j{ZC8`BwS&}s0j%_k$r(-!}oA^mJ0Z)yy8ep!vh9RX@3e0b#3~q z7s|)asAGiu6>}SA_fgpWx}biqqdi!?XR!7UHpHO#w5#P0M!|0dGmxjS9}*hr{Zlu* zq@YG3;-I96m%OTE=)v6fVNaCw#Su>ir8YGOVSm&+uDl?A3+?NbKj@>y7X_lr@a%A$&GOZHnY=Oeu3h!Ry*87El?IkAaXeBtK6 zi2$wrvN~`?NxnPIn3XU32+XPFf`@|Qk#&{H0*1bhF10JJ>n4>RSHqY!cU_vvD^(Zsw>#KXDy>~u?!b2n^@xJ9i;dx5+}nU3j8zGB{mNr%0?g`=Te0O?xt zU8EfFKB@!zO1f2@(2q&@+R8~yGv~dT)~9_iCGij4yQ5Gn`zEVz!FYqvKJ57`WqxgW$;zgK(}e3Z`rYHEi5aHWKgT()D(CW0-oG|st6 zaN)*Ank1d3>Eq^jye0YDm!4-rq;Ayq&8s*!(>`47oEm&h1k*Rz`ieL(29kPgbeX*L z>ZB{!8oq}}vNJ~&hCtQLwEN&j>v+`6%D@BssEv3o!d&TVh3g8U^f6@Tu)KXAG9~Lj zhsTj8-}aa98dMz0OblzW2#rtq(Qofi-@Vb@Tp!a;{NBbFsyn#UW@#r#$h1=Bq{CXe z=)*h9*<_mw4TPF!u9-&(6Cl|E{9cgXSoY#tqiFJ*Pmg|f_n~6N#E+w}^?eC8`LmS{ z`O)Q^i{Ntsug8hshgIw|2Le?XRZ0opj$8?&lU+Ob#;Q9nJ@!tE>i;M(|7(#oz zk^h({-LCwNZNJc=&Q~O(QL=BD5`hRmjXl?Fm#03SZt&x9|G1V;lHn|>aap-Pw_8w8 zd6mrGBD2_64Q003ej|WzQu#?$!zMJ1V>@ zGxQF|HS&Y&10@C$AENPgSr;w7P!xiTng~DCUeYz}MYTI*IO5D@(b10?DH9rZFEdT7 zG#MfD!ipHw<*Z++B2*DkpIh(|uK+ZUQn3=cl8oFS>@;lQ25dhGWAAHzmbyXH3f;tt zRXwg3s&?&+`xo3UWx3b6ZK5?eh;};&glc8!^f*WS%70A{xw$%%7kIMX4>p$Vx|5|^ z>xKzApD~a;$&9v>B-MiS@!prcniVdj)1cs4{{QnfyLX-b^3UnRI?>+5<)llhbrGCX` zLPClq|8wvIA2ba7zkxkKa+?Sflsq`W)rNEmj{+T)%s>Bv2M^r$pz9JLOVh+G@&Hp2 z;zYNdXOra70MNhp3DVk7HjF4ie*qOq`nlXoZE%g|oH)Q8?*t-8e_*ai$B4$E$dXNd zxXm%y;}Ybq7?Y}$PWyb5Dr(SO00#$$Z9Yt-*jd~>A>$AYeol_^R|GI=?Lkvf_a-PD zHS5+Eyz_?K{sgyhed&SvCUfippm*2?dPlz)-tl#sghI-A`_5d+)HmtrCc7aOxA9{M)HucoO@PS^;{YEiEz)O zH`<34X{oun5XEdjswZN(`Tk31!g~T6R0MCdEPTk#0euRjRVZ*{AF{J^0gok64|7mY z3AiKtfoRyQ?CiO~q7DSd>&1m2w*l}BhD6_h_*BhgP3rdY696lz>d%7E0I=%Z#2!^i z*Rv+ECB!eFQE`D9;D)KoLR;o~{oVM=pAUN*J=j)yegyVv#T~Gg1S-H7wumP)nC{&! z6PMqi$02miocZk$6}(Haw!)T{A%Ql1OG#NI^+HTaS8m17=8ji5lg?ckeE4nPA--|Z zPYD>bB;!Ni?K|e~{_qLm+&cqS7QgI4p-kk_@%pC~;J5}{luO`XtT$_)5*Pjnq$O>_gN|{J8UD_)%MI5Qi13w`@!x5vbpI@;t8Eu2_t9@D}GKDz~F9!EaGl z&kQkca>C{Cqa`)9pN6axM~x@^N3fq#hmYpFGf&9qet*Jw@JlevF(yiD=m2q)l`a@c z}nW#HDG3!l^CT>!{D9QNG)24X%LdEiRs z!3WKuU%_)S-d0p_|KJZ zRCP1tJW@+&si$fdC{5Z|N})n8+xLA6lVjDk&c()E-egEIlgk=6h%{YpW|0gWHvj8C z5R(XVcf1vXEU_x5|0ClVvwsCX{|P+85AuLHEU#x_abWiGwW(w7CNQUOMFZT4ViH*c z&?|$^rsMu%3&QTivwf<}fQVWwf%Ms=Q!`L{ym=J4QvIKUn>Ay!8axG2aK2e6%6PW` z)AvBEc?F@Y;yGCafA>wpnsa}Hv$@lXbpGOQ6-ZSXZu4g9N-tXBOZ1DYnOb^-622{p zP;pTP2O1L|<~<>i!-u$=bL_Ov{7|_uneD?nj(Y)J<2qq6;ycf z>#Fiq$_TK8t$7B3?(j|t055@`__&_mvA3Q+4Di;-YL|xzfnQA1hcX=vkNFp-J_t2bHOJtLzE7kj0(9lvXg+zwZ|$R%x7#C7%c6!an@ zK8ZKUp^3sVwch(5Ay9kgO1c1*Vj9oY^3k74uw;4AHWQ;Uj4vIO3w@fWX+ z8cK?2d#V$_11J4TtiCD79iC-xPqW)mSyM=rV!0B2%Uq%kHQW7cKEDoJ&mKQVarjx5 zjm^!W?x#~A90K{d@GdxnRPA_%p(k;5C1*P9VBwD>>(lbZceRE5l0Ce+SvGzBvytAE zfjcF!>zZrPly#yEH8*bl_FLzi4T5Q%*UD{6gr34LDb{=5W>kDvj?v1xTY}sDOjRrR zYw{7i$ERmvp}8tjc=^VE!{XG{dvud>J7(wGbj`zRabf`Y!>gthqpNvY)_J<3Yfu>V z9}VsWNCoZHVypopngw`{w5^790?}Y+MPuU>PZB7<1u(3EB|_|bq@J;Hj#1J~C$wYc z|2NXH)17z756qi#^tmEW)`9aiGjyA0Z#LHUzieAk{pAv+d%AnVqlBns^A*b@Nl&t@ z`C^l7v{`b(Pg~$}_Bs^+nvo8G1ZSh=s|hoR0D!pPxdGLyl zR6jPXVLQxcbl`dG1oD#qI58Qdld|P~hjD_dYcb+AB1*ypp@et=hIdTk*R4-hVV`1z&u_zS|?xb)Znq z-Sg`hnD_{SgH!%*F4>&VLO^6?3TYn@P(Ms=0pn`h6j5ehq~iY)$@<;7Ab4~iy;O1< zyO^QmB{eQ04v}G3@ygmu>9ZgwGijV`gXUzK6=^rMwG4};4w|V8>Ykp!NyNPib*~l5 z5iQl1$p*Uqjs-smWMLx1$fN{1%y=vgd#~T;^!@mu@7UHo0g0jIV(CFCaat_QG-)pKI(@* z?RONrPBUi>*Z!3|Pj-o2+iWWQ@xlSxa5pdyu6fQ=(u0~O0cJFy6eCRW?cQ5iz-&!Q z3jABaz{q=)zz3?IF7EEh^7IWx-@%%C5C1{%_l91pAE05`a{?2u2mh7j@8g#U(Ki?k z1Fcp-X(2sOu~O(G7<|bI@k7B{e+H3iT|KR>b9}W~S6M$j4>Ts}HSXjg1_{D{eh5k9 zOR^6>@r;n7AW4UfB>s;f^$}2*$2$Qwa0#nMo{;+IGq40c0)^b8k7mBJ`Zb32=a67? zOd!MN19es4_XQP%F`!uf_45empx^Dc!g;ptBK>3sx`Pwj4bP+#PLgC?s;Q?7k$L}g z2WC>rcjOTSu-~ct6Q65aI!fA&J#{2%0UP>dPEX zk{-sAF0CqR$}txfhW~VgSnti=i+6CZnziBeU}RzF2%S^w%^6KS)Fp$eM_A(7QG26> zI!wujaAFX~sp$Mx6Tq)!x+1v1uuoZJY$hOnG9pr#EX}B*<3hg+Yoo&^7aQA~E*OfV z*fcqbkJbbwhCzR5b^#b99BTn^9}<#z0q#oPB$P5gg878&>nkCTe-^0oC>ZqXG|M zdE}PH%Huoh5%1jw&qz+bnEiO5-c*2-aT3bz?GWSdC>x($o|Y(;`5qS!J+vwmj_R@|tyZ_v5c@2io(juF9{ z&0%FMla`s!+-wJ_0zT+ct^zuQ%+JD5U*Ud#)Fltz>)iHBdawtk0sL~LAl`N@vSZHK zIXL%(@8GUTJ%y-_Hc^)hY2iXpo_ya@vCUr#AP|jgNC0X)qDe<(o*=a|81_<9 z)*!RtQ^naq#MtvCxzka%*oGo*Q3zgjkMgq^pEa)Z@!mzugRZc_w{fBq5f}-e#j;`K zE5|l?cM#&9u2mLiYuC0gV&jK!jK~?!5UCqVD?GWjH{m2=Evl|Zm47zocB?a@>*Nl^0TBrId74*X#a!qqX<0uopSE_+==uFPNW;dJnmcMZHFdU$=xEO&=E?+C5W&cnfENp)q{&{$TsOc_@BNYOM7 zyC;fkWQYG^@ZLDlQSkfoq{+LAHYjU;7Y#Ju1sT|OENoci&WN<{chC1o7404MW(197 zD_4Alycc!BBKy4Lpt26rQjQm2r~*Ay`hwQGM)%&4dSAGxgz$=E139P5bQ0t6eqgTb z{ek%}*>snu%L;!!CxjFG^a(%?0HWACCjs9%-|5y@BnuwC-a^}UmXO8!#^drmvMJ;x z`6trP-tIx=OgeO;_42sNJM8_`nx@TP=XDHU@RJbkqc9mUYGan>;L%{MN zyW08I)D~Bu&P+v$)|MS@wrqBV5evF&lxvi9jtoG0CiENzoy1n=^2_*QMdHVtSx)<$ zuh08?GpcNvp?zy9bW6dK0|ZmvY|;l}sB9!k`FAAE<25Y*D}*rfN2qEipFF=iZ{D^d z2vnjoPJhk9hY^(w;Nk)y1Ai)6_mAJq5sjtf?>G*!TKTV~u<8X_ywh~K`e$%E6^TVc z4Ya!LwT0dg=+S)GX!K5@)RNEKl-Jy4sRfL@b&QbNm)VMeP4!(&P z^~jk@*75InOHJp!)uE4j7TH-V+;9^vSnh2yp?H!|xp?^c9imz6{0bvl;#)tdUDNQU zfXRsp$}FT}LCzq6RzUH7Be@AV&7-Q)q#PfMhr@xsjS-BtBEXKUjJD6f06gz@m%)r|FDKKvdSnKQDjSH zB%|!I_sA$o83`d2x{3&eN)oavn=-OfN+CkX$Ve!gL^k*H)YWHw`#yf(-|zn2f8FoL z_3)z4+Q8nO9N}{PisXheh&v2l3JQ z?YaNWcZsVk(L>Ub3^>*Foh{zBZ|+wVT4H@*HOV0#6lGER^pooM3Ep@2)&0EW96i;h zy^11Hp$)IM^_n_5d=ks=+U6+nx(mxrpN?N~+|!$_e){|~n@_Jv|61SkxxB+! zuESDIE$7YHW5u~7)jW}i4K~MT(rH~4@OVX}gs8vpU-D>K4BvO={Yz$eR)38>hcriG z&^wkJ`zm*EoJvVfq5QjX49EHNW*=(`c#bB}hwA(k9gn|B1l(8afh}qLgVr~jAHwiP z!Md-tQ2QUJO@|mr`Hj5CY6>E^D363)ay#dyXuk3%cb63LU+|LzPKIc(#4ux+Iv|IA%B{s`udmcq?)ZU2Dcq08BQPm>;7WQ(>CwwS_V1$ zs`nas4E^^bTuPqosT-uHeiS$BphRP!-NYoev-^S9M@GFCD7 z(X=F&v%y~=z?x5JAzbV>I+aQGSvEW7=w0LWZggKR(sdXb4O5(8I((Qrr_D5U(8Zg7 z%uqot(>?Xsnf^}2&%W|f83D98WPE3*w%Iv}H}l+{H4AuSO=sFJIcM#ZP_UmTj>qS` zW@oh6qdoHL6$5Um2hFWH+F-DTQ{qWYO&-svYv2xCn3F?5>yGYCPQqTh-cCw*dPZ4HZ!UE&W{gw*U7s_YRQoE&ksMbtC2TqYO)p@+hihD8>f@2vJ_i% z0ciJTh@jb|fPjF{=wfbKu!Dk9I?$f_Eorf%efqrplVt5w_tx+xb&d0vzo>_O(c+v8 zbojtuq%VAo{;pW#@yoOsLG1LYN6b^yxKGFBoY^p+a7{$fNa4Gdu;SUPiZsjZJm_^7 zho-TgW5sVODJpsuxgqkcl=290Y1RApnKygCe)|?H;gkS!*h?;J7YUbvdK67JSHIU- zly|?I;ehwzY{|BLmgygNakQ@|^}9PVGr*ejNhRw2l`Ajyy5os4+S-uKc+Nh4n1DKNr=t8(ezTc zS;LL14C;H=kX-KWJ%)k^!jtr;%G9e)N}!6{CZaLa1e5Z}mvN>$J5OyozK(=s5s6J4 z!jE~@^Sxqru=Tm%=-8>_z$&FH_250Z|K`P(a!L&@Wjfx9#Dic z7_^N{(&97RPmHnqG_P@%O5XmJw|tDAJ4fKoTSn4-}Q;bU~?kvq~lN$9B zj^t=*M+fR?wX5VP%1^IfzekpXgk+a*C=o!oR-=@f>#`WgbQsN7j$=0Vj8=FK(*XI^}p>UQXx%@JWcJ1ZAjBF#B zyP2cUS3CV2E`Kt7Rc>e{QiRb;vbLM?CLN~*T~=S@|_oF}~)$3rGkdMvIrkfuO^zV=kI^F4)U z@)F_niVM46Q2g)lVy<%c?FpK-kPF4i((QuEiX zs(otwPQ`5`P=cLLP3#0;V!Y~8h9&8QW{@}$%?%U7TDeL^0_ ztB_4==0|qnla@NmL5lBQ*Eu6}#9f4kbo8v2?c`(k={k9j@0lUn;~%AFt=r43ZgyU< zh~Av1=F^>-4&6FMWzlh6^1% zE?DyIDZVDKvEeIRoE_-!)2le-4j-j?7{IC=YtXS!B#L6f##`z|%3 z;qcZ8HEr!i?((6#M~s7_#+k(#m5loFMV1a8pAr@caL!A zT(P6+$Neul>Rpa%+nQ7 zU(wdq#ub4!4wt%uw?+8*=2G*WDquK$BA%;PFSNpH+J4OpE6>Z8%oTmRKzjxVN%AE-vo4-L`eFAYE;VHnEaHdx z78e(1XJ=s+BNgf5>i|0NjWZMO+_@7k?+>Ry%(m&wP*aLqai>21ttsP}cv^EiLP3D4 z<`>Bc`}7di4n?^Fo5shu3X-t7xVhWypS`@g(W1m%TM*6NKcGNOo@GTK0^Jy!Et&=l zIs3m7fhaF8FV8rZ{~W!jR3n694xE2%;?h?chWnZ$VO4fz@dqlJvR|6OdVd_8=_5HL z`O;N=bex(xlYe1{km#caBqU9yI>CF35Q}N)#RCz~ia~hIPgT{_TtZ>~yMo6)qQ)f0 z>swr^?fK`*@Oby`-NQ%`ep^Al-;Lnlkq?jFokwaVqKGy3MNxVEOhbaA;IU_y5TNp- z9sQKwjhstBR$sn+aq$Wy*+G|6K@T;1duY&#P$-My94--&k-WaihFK42Epd0TsIwq+ z+iJtg5Go$Y?(6HrE%Eav>p`ftR7EEzr;~4Qc4AlK!?$nWHj7GD+_GCkz$5O8W zdV0cvxFGTa$)aING8>d7taRmfCj7L||1=t&RrsohjDp(DDC60OuN*EsM;#plMC)1f z-sEm+r>J$~m|R!;G4ArAbAeaZ20niNT{$W^ag;ip{b#us4W$)syTr?mwg}uSx5pC}Ab9@K8=7Ro=rwvv9LqQsV)H{JTmo zS^&_K3qZ{^Y~X+ZvKET4urQ!Fwqg9+^&-+JRRyc@diRc!oZLy)Ku)e4>8!oat-u+G zkB^t*zJC3>r{NkOPL}KxC%OZdW}nbnB5ws9CNdYh9^8{&2&MI}=7}-8E{)bVvrj|V zipz#;3^GhSEL=3d?e?L6#H2s#Xl}DhLD?zUNKtIYLUe5X_jA7TVhRd;zKOQ|U%!6* z?7K%s#v1_@)b{-T@+nxQVjh!L(@q8k1}-jB=yLU{yxfdG}zXjw6>I&f`aUUOYN1Al?5H+V|Yd(QjKpSNjV;A1|N^teLEIv5cy@r`CTr{QcaL$uaD9R&o;PzK8m1=ekM?Vdo6pg5<%;2oBz4xbp=1-s|bz zG08pomb&HH&_H4)=gdo$#t$Fx0jc{N{b)a0j;RV%_^RznzZFJD-PTkPuzmxhSKo#W z8w{SeuUWIkZ*Fc4V^D=&b;jj2q@;6m9*o6peaR|vXD&zvtuWF{+IKOvMf;s%`1R00N+yNr&xU)wbl4YF%A37` zQS`f6jmw?9aIqv^8#npme>I*sc+C1NB}0XA$5x)B`vVxG1(#szl8AD11c!uJpjrWw z#U(}YzHnB++pxYo(AOd+A zy1Kft=pi^e>z-FJ9;VFZfmA#;py?Y?l?BC&jy=CLhj?hljPCl&sq|1wruk#RluQaI zw2PxRM!j-+Da5j!{}vVFsWUedIHYyO57e#+6j$VUNiCxG&}W>-j(^)Yy*k&Uy+yZR^jG7P#;geg}dbbo+Jp{E_&WT%luEVvEh4g_I2`8H=|3UP3w~r zDT)~9kRYtwI3;f1K%K8NuU@`dcH$v32%0rJ<20!AN&?k#DFTz28wUClaS~g!oedx8>vTyqOml`$kx0dlarUX zk;a{L;{9kzv`E{ZomE}fjfJHa^d-5>H!yv4^)EWuD=&^&d6AIJZYx52AAZ@%lrbuolqN#KzSNKY5wpo*%!i-31{_^GExQ<;=x z{w@IldSw3g|NN=!s&$)L^yT*rrTXVjPiYg(Z${qiB$7!Atmm> zr=oplWMl;GcJ9@hi!O)JG9GXp(j#VawN}PuK1alsFmR6?ZcMYJ>rir*38pRdYOOW0 zFP5MN1pgNNf0#sLW8;Q~2HPvWRGZ5=Z8aO7Sjth0MG5ZTzh6KgxKVz?-*Wqx*7;la z%)9&Wvs|qvp6&8sctHQ3yps-@ts$v@nQmOJ75wuOT+xU#|6$(!HuL`f@=noIOicBm zyeQGMfvh$G$qS6+ zmmt#YS~8_AUkBvo?r*sdjRqZo66R-{k{hr+N8O6O^EMFcf28@|^}!2c9djR#ox`TB z%Cq|L@CX<)(}4{9<*#17MI|pF@hC=mn5@T9;uEXUc*yYPh3$lpp3z-#lIKHAH>V}{Q60!=Xy;q%s9TE2%JKLA`8P18VdS6P&OFHV6pnyW_MP`FjsnfOZ$T_!nE4NwZrj&UH@7^LyfZVMzJ|Pqs2UC&20bVny-t8$rKP2%px|qF#LCLb);86o zuX;ms|BzfrC-<&hQa@_;jj4XjvS4Rs=CdN~h6@Z6yUTkt=>|KDw^rX5ZT2S9pl#E; zps>kxv;Oj?FYCkpT8MgfQh6mLfJSC6jbgV-b9HU)beiu3((AWytEs4|ZGuD5F0F}p zI;wxHTHpf%NT}QB@8?H;pw<4_>({T5kz_2uSUSA6yvLvJhzjksy=P5C$D+3=h&{g^ z5U-I?9ep@@$D~$wu60hv$+xeiFK##x^l5- zxv|I5zN=&oorI0hUkX-;lG3%buswo;f_!{O$>^{z2!oHUsX@7!^TNN|cs_vvjl7#G zHjbPA%Rv3o9VIr2K2Ud+HJ%aAXteph;QM5Q*RJ!VDJK11BB#pM5e*qG{v4T`qmlNU zD!^`P+W5;-8?pswLlrawd;4@+PBAezFboC<2W_=2EiHc;X)a!D#O~g~+IEZ#zT^33 zeZ#_KV;CE78PinXAQbH}*$4U}>I&Xqmz5C{6XWJqA`@|+_)N_zN$}xNLrX(l-3vYP zzV!A=Gp{359!d6YUuLj6Pl`n;2XEEZ(xPQzn)w=aF7@5IwQJD?S=wy`CS$8fp6v~0 z(V@1}vCYNVt4|Tbe3zD+i>r`rhy&B_Zim%m3__6&yRzqB+h?GRsdmZ;jQiJh>Aj8HYn?LyCde+bq()_Bg(JUW zH2+muIDt7#vM1WP(_BAtdt~mpup+Bd`^UDutK?A@<>ah>x|c+LHAvL|{z~el5(;+y z$TN9o;x*Mt4q3QtTUCx%6JRQl#I@^tl+`aTIZ68Jc#HT%)fIr`jB@3g6IEUn)daZ;9Kk>>xFmWNiyQ|O^SmXC~Bl;XGd zoE(QGV#3=`>)bLJY)F(-7Bm^~a3Pu4{hxExaEksA)iAXom-Lt1h4R5P3)xaTNdM~( zdYYXEH&O5v#hq*8q@Wb`n$B{_xpYy&V>O88o>n5RX_BGn6T-S>+qP4gw_`1=!#d5a zwF|xJ8e2o&G+e#<&WVgfbk#BxUG_gQV=Gx%RjX1mh42iJe zkBi~r4-LKjx$fnIZroVH`DyB(o16Ro{W~y@EEFgU zpxX(erD@c|hYvTgO2UxIg@*vtFYnXnygotmCF#ROTEV1)-m?K90T#8-{LHw|JHh;s zPx+c;A~qi$5=FGp+yMd-_EZxJA~jF5QopT_m#3tpgi${aUbC=Skqb_9=L zD=VS6q-HwKYf628jW40{{Xa#}7C9#WS5JW^1u+SO>NnP&_s%+pibX<8(Dr|%wcb+y zL2HFGQ0I)OkLVxi7EgSudRFX{sSm%>*Y1GSUN8NOo*yA~Y4^P)i_0DfGDZ!bJM|#_ zr;TOaU1NF{fz+slhJE|^vp3$ZI)B95JMxh^V|Y9dEh*`VXMlg`;RV3c)HXTLw1?z8xC0FT=OZMswNX4+l6DAhfgK??s@147yOt zKzPDZXzDL4EX=cQHp#KBMY;XYPd@=(kY3fG0LB=ZnTKwJeTA34u(G#nwm|N zls|4WmZQ?l^5T!W$jHc8@A*NXg`nN*aTUkl4H-7gZ+}_Js805CQvb&qxIXvpNt~(Q z5%i|+TKz#5SYi^7)f;~dunFh2*$=mhIMqEktZ|xDGgR=HZ*FGkvul2JvNBn=^MfPH zcb^&A)5u28{`_>+UQG2=*U9#zs;4JUG3uvRWtx`1;=d@7ZxOC)voygoot>=r^5wG@ z3(e>~C$y}sBX8Gmh@le#=`S6mww`Bl(}&`P15sfn%DMs^Cgqtcjr9XVDWl6p(LW0*{#mEaZrGV zXP~RJxWcmS$%(5)6WBUOjvTpu;|7D=Yn&_WH)&}z!J{ybC@F{Q%a+{SV zA^x?_d*sI3<_0<|tcP+G@ z!M*i+{1M}MWYbZ4QjDoH^meFL&S{54~5RC1y&pz<&w~3V?Ls=%&O;e8nL~<)DN*K3rJKYx0NcoaWN~ zV_I5Mf@SF|(eL-J=-w$?OwxY16#Ir_KcB(SKIf&4FJxzhI4+^*IFq0W!GSaqV01kK zY!&dAa;!cvPLeoHxmi$6K>&U0b;RA>UCA|Eeh@UtbrgiWf7c&j zF_yDxSUuOybb8h?zP+hH_^D~WfNe*F(bJ6F1@g2X9&y~0W^%Lj@-!%Bb>jP%3hvv3 zaIdPWs!%30Qsm^d)d6g(SeWZ5Sz#OT3R{qyR(hGub2L(s!F&tJLsc@k5k~-5!_@8Q z=#cT6H_G@3I%+VxY}aXEO?VC5roFHB*auZ&p#r5{2DCIZG=M@vbByLBu0FfVgL^VO zJjrnIWMn`r!E)C5?va)CSzeq&izIB(3q{k3r@yXhxrraXj;I>}MOy|UtLM)Vo4t{j z+=wb3B$wZl_W+k`NjGjRzHly1yDKzuudH{;@;4cTpUE0A=drNb%X@w zMgoX`B;hRz{yEUFQ&yH}mO?{Cm1iW7+5fFBcE*@>_5Vxm@9qcGPZ|rc%VD%=KWdwcExE@&P);%xs z6twAYSM@ncTryZ4&t+#`zaPv~z|b#={m?s6aK!#&I$u|OaomoE!kpG@MS4aGv&HEdC6Y%I1GYx} z(wn6VP7kuBc^okI`+13hO>s(Py{(emRyMY=BCS(`JyGA|Jd8#4Xh`Q@AZ)VeBL*nJNxg3ApQ{%44IPa;ZR)enF zUcV+UZb)Jm=BIy!yc@maP7ehL3Ar>>)paLZHO@ywQFdOCzdO zGxM^6f3cDKmCag`%kZq;M~Q1*^iyW{$}JjReZYDSj_7@-Zz`o!S^W(yt*DW8o?~5) zDk<%+Hn~qNPdlq!85-DUDl%3YS18X;vZGhpS7_)^BDcfi4Z%s}>wG*ejXpC8T4p=Q zO+mruE*|$L;BH%0Emt)n`R$gvocNu9Fd1wUKlgPoaU|ZelahjApc3Guj zST&?5OpkRQBO{vp0gCSfK7X5Aee$12;>Wi-3mC(dVLO|Bx-R{wH8l6=hw-RF=2cU+ z`{Vw}+k}VIH@epoMS$%x3*UHEiME)YpP#b%hd84=fiAWY!WNJmE-klwRu;NZ>(`Hv zI?j_@Bb82mK02=4pVE3SvTOWFx`?+>iegapM~tB9iLWC>qoJ8=Gc?e}h0%OOa*Rv; zCkUaAf-IB$@4U2#om=_Fp@n(HII(Gg^Mb}Vi)Gt%s~_L{%CB!x$Shs>nm42D6eF;9{R#uc6>7Np@W$c6k`);^>C@Z0q9dP?>Ev<$5uS( zHc~MC@z}5XAoEqw7uLE7U?Eh+i`MuCHvn1`I1@WN3)95D@bT$yQFNaBhX$7fx)!f( zoPDJFtV{2>tbVg+@2OV-Gm6e)8`ltr*|p+pU2GXjBqO*=#AMNZka?eV4eY^$goH~N zRDFz68B>V&US>PbSnZ2G7M2xm140r71Lv&2#%k{3Ovv_Mw`2P#efvUi=eq=obM95_ zWTrlOK3DfFxMVuK*m||PDOKOje%AyTlZR3!WtROk%YFKk>yXO(jDV1 z+Bm~b#mj-fyUnhf@GcZZrE%Er_ z0FMM1#N5{b;v>XyB@7>2=xlx5OYAjv6zGSoJpVZk`#_nqf;4Mh9-e@ppo>3h#dq%9*-QlG0mUI&i0s4mM5P-?(PLuMlE@sQhMGajm|OG+x^p83)1`V?~ik~ufrtP>WZUrY$nEDK3?ONPXbTTzi~?DP5eHdrB1F%~ z$Or>%8m+i2id+UkkVu(&k8cRwr|_khRp_mYV7*%2lqtn43ONNsYyD)&k*I+weXcb zB*xu-K<0allD{|=b7|+%TRHxJ{R|ph>bPe9!9Awg+-HoHzBKx1*jE^GF1!0%qW4-^ zTcbNsbJ}j-);zn2TI=l+j&UYUc&c|o#R3No9N^~WK5(EA3OI8t@!x{;oihenYF^Rd z;at8?7`8ZT*;$GidU^F#1!a7+%`(!j5)?=>M?~Ur&r+19|x+ve;3I_UBSn>~hjd_y^&lpe2A4<%%oT0sI$5uWh z6FsxtJez0NLmn0mj%UvLZzA}9j_|SU5Dwxi>EY_8$qYDSA!A#AvF5bq%U;JWL#1AR zttx(%eqnQl=jQj`WhU+Cy<%7$)o_pAOV+pKtBWL2CKI7SEE5?AoJ29tsWXO3yL|`R za=!iDzD;&<;uRbqm>MxfQsUzIh|(jXSBOgb9Tz0<8`47|Tw(Mffaf*sOB|cHKm_Q! zykk+S zzw0F1;g-+ey(e1tNVNW(AHKeYdsB5?{vCV&u!nwH|8+60UOgMc$R#tWqAig+!F$Hu z=xN=?QOz=EFV671@Spr&Ptijn3vc|niTr8ljQJON8mj7dIi{0>qf5u*85~NTPS-G& z&vdD>?6cN#7_%rpOc{Su&^L%_x6H(gSa#!nFAA=iK{?7EF1s)BZfEO$uYl>XpN4rh zjS5r=Zr)SowJKzY5#$3(t&I{FxBIAOwwZxJAJMC@FuLz=&vJp7qphuN+W;ns>8Hn! z9;Hx9|FjYO`uw$yTIK7(+&kg4jEn}3u?!18OG>ht$= zbBu=b+FZZ4X{>kuyaJyc|0t($;^!qP+VXfIb90Gz-r>7c>4f4-w%r&Zk5Ax1@Ey^Iy4$yInLM)} zGy%=zLQq9Es7Z7?mB=_y4L1TZueH^PL&4sD1Znc24<2+SYwzSx_&0P~Yn`3|1FDJq zlx=Bf4T;$I+2-6pyrr(fo}&mS!?pZ3CO`}*EME*h{~uBTLf#yTGyQRol$4=XzTi~Q zHyYLc`-&NpTLcZ7AD$I7(W~{we%ETOdO#~=TJXeOXp>tp&v1+&(LK>1Vfx}~G-(HK+ZMSShqbO=y~;$-Z`=fJ1hRzQ z`DOsTHfp<*JG(z5`X@!i?0e@LbYD5FaqgQW^MX^>^|!Xp?`OzJF8ib<*t8R;k3^K} zcjTMZg=97((DkxFi+2f&Mvmz^cUza#hh<#wcujsouHSDH@OAL}lPvNxH+OYuhGdpL zR-!LmKXw99u7 z#poT)gL#zHLi16PgC5)OMaa)tOwyV^F7B_E-MNZq<2GP~Co^*SbA0!n3d^3ASZQ)_ zm~JJ%5$!Ge@jcgq0B?2d@R^afO9O0aHhSshr)kTAAx>@_K1Gb{->_NyJ-eNq#x_;k zvuc5CIeaeCASX}2%tsZV{z&s}YL&}_ykTpSm7 z=D?2}SnzsV&6Eg3?M2+IAnPH;b_UU-qW9P2`G+;Nmc6|;Catz#DOI55US!P&N^pMz z7~y-sZr~w83I8YW+$b`VdLnF{{SX+2LkrvrgmCy6`%Gx|=%0rYl;ENt#9rm~|Cf7rlaoXF&& zq!gJ}$Yhq?^iF=`#*2CIeJ10GKmo=O_$w3TpYIpR{!*>1W8&6rxO(MEV4c9XC04Ee z_M{EtyVK7zRVrg`FNaNxA`3z`>3dq}8)5bK#ASC`)6fm0qL?h|q-EcY<2EJlo9T9p zE8k6Ry;j10c`|`0iukAC!|!d0@VTh#<&EPs@m?+76>qqwmwE5ab;8L$WUvbgWbn@7 z+^cu&drM*)6)!Sw3(*m#$&mI7ej{`BYN;d(;LDq_W51T|U$A-%P9(z9FUdGdEo{MJ zoPQmOjQsB)$SUT(=gby|ilb|M{@c*VzdYS?ie-Mo!5G3@erRU$l#|A-INuI)5m&B4 zw$#{=c#83q71@!#ZxO~KA)KSO$_jc;6~vIQuGWM6!_f7pRLH~uIW?+_i-NRawHKCk zb)KpAoydKsQH(-j*DfoN2w{9ir4203{UE?_1mhGGUZcCJv$L~H>Otc2m1!Gx`NF;( z=_vex2(Q##B0IRN#3P7Nu>HB$MO+iC#mSYefqgKi+Q2vj^$ms)ZVVkxGpy}ITqM+l zYU`<~YnE)342qElFO2DGO1lF6C*zQr{d^T*JnE5mBJ#YEn#Bk#o%b;ZFHQ|`_}&91 zLi9a>oAn4JBgtRTPpCH484iKwu${^}y1MvA^71|@sS?91bD%hK0U$wwI4HWEUTzbM zM7_P(x$fs?E%TU0lFKf(hbT{^;7fkApcQ6v;m1%p1hvu)=EA!hH*ENrW~eFXZ1|t% zScGwG+>VUejE{SRu3YuorS^F5@Cbmc;QfIe7F;))b1fKeA6dVViBxVWO~j+BHm4h2wmu}bBRNe^?gp!bm$36KavXQ$dbP%j zj;_0L)~J!%KY~4~i^;~vM=ZiiG>ltu;;6?ybZn$GF#j(EN!EkhclDbJbIzr$g9OkDSN(DT&Izm_(m>AdE%4_S)T085_=9Xamy}QHOM6=-r7wz zrKoU8vv*y`(iL-kLEkZp6{-E_GWF~1vIKL^wC~rx3QFXXEC)gxr}Xriu2F4o+O>zD z-wvDu80f3ew6&Gh2s<9CtAo1`lF`aWqoI{*Aw_5yjrNjW3d ztb5m-OW!ju)Vxdkk{_t7phD(qI7zV<3u{r-x6$3Wr(T7ubaCD=bG+_-wk!?TFPlak zr~16JGs4~vWn@sZr%raoG|Rjceug~~4)NC_gP~~yOyh0)tig-60y-cUfEtuE+xGUw z`?I0(dl=jkv|^9B&{aj7NSscsADhcp7Qe}YX;?aMG}?CndGzp)WR_=paqusp#qGYm zdx`c`==QT=<@?naZ`pmM;32MAw*d?=SWz`VbXrammm=Alx`zA&0&RCbnE0u4H|7BL zCTORaYMB&Pk{5Lz-6EPuq9)$r|GT6w^)963(Xr3%%G0+bie qDcU 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 z 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⪙6eKGn zO9uY+u6c3UKH#1zB{H^u8d`r0uK%H9?(G7oVnP*nO>!<|EQJ#a^AZ1r@ug{iV-BzX z{~h1!>mWCt<9OYi^oWN_`coLafF3`M1VI-?0JwxRVH_4z=s zI`fa9)~=$we4a+OGFX>Ec+@eGkrRg3+1YJZzQ3QCm;f~fvCg+0=6!{O$XG7rT3x?( z(3vbW?y*<^)ou7=6@e=WyHvs>)!YG{=ig#21p)Y0s$c* zQ86pl*yC2;!YLG?sx!}QSz*dmR9!ADm>cfyTVTlodrTu=o89G>tLtx1;J1CXF4~05 zQLv1mt=JfpMur+l7{b3TTToVzHk=L2h*eO}sbaqM&3AitZz1FKGt864MN}hZYe1}3lCROQnH2Us-ogk{TFd@{2m)~P>sjs*XXcI zsx(9YClE~%Sk~C+b7hQc{j#%IvfrgY=!*E@t;e%^uRA_&`6x!zGjPjUpooDfSh%0B zpvS`H5YJ{{Qt1=6IvMM(hqgavB}zqf2MP>98@TyuE)fwCFcbs@zgAsgWMmW(F=BT# z_g`>yc{ySi6%~~Vz1)Tv;1&Tfqu>UYrKcKan`8p(Rj~6|>NJ@Iw%(6f&qa=Pc z@1&?G5()}F=y2T9B8NVgKalYJIrr^%sHoOgE=J<~C%NcbTP1X|6muJso&I@y_X+>p zp6$4(Sy##ld|5x)SMp-WH@;%cNv1o+ghqNxnwy)0672T{a~mqMG(ZD8czR{JR{`zn zlxckW^y!x`x@ajIo1bA9g_1l~W$Cm+4dWFmIj%($az_@+d&uygWTD3o>LwGbbrQH~ zsxfdpyE~kwnN2VAS8eikTdV6WFXC&wW5Nu~U5;l9w%6KdesO^B2hQFS81S=V&WnRf zu$Hvw;uN!B0q5r*z=8))4;vd>A{c|ghJ~H@uG1ywMRb< z4z7gqP02^E!G1~>bm?b+etZZK06qui+^4XMi4hTmbab4U3t(&mOY>L5(P8}c`&rr9 z2#*t9|L`a2i6%3hKk1u+LTNJ zp{}p`EppnWWUClLuu^(<_;1{B_Ic8q&tv=5*@cHn@3^sa>7_l9V|nPu`gcb!L9LGJ zr=Zv7?pL3Q^)x#vl`5(~gnDOktn4(!WWz%iS|mdj-DxF^lv=U2NshDk{zY;i{9I5v zfuH%@cWa~A>s(Kf{Xa?G^Q>SUp-z9DiV~$;$znYleeEC8$w!c0KI7jRBc33v{C;W9 z{myHzifmnHSC4)DG|2Pg+qbN$&*tWEUY{4&LFAcuK*^=laGivI&1+C4O|~ojxyeVE zM&w56$sm-f60#apmwYd{9!!s|bN(uoIE6BNfP~flw;>$-zLrmDB%%kuPyTNkm1Y3-oHXg9qXjJD>r7hW<8?mAkZM1hm|w@rFH$KvF)RPWgO_kXPiZnTfzu`JNv z@kz~L{&)J!R0WITsxF}6K`q3vfuT>xv+7##zFAmu!EWNQ9;D&5(Up-2bc!l1Ed^XV zC@5&C$ix?V7Vsu2)qtV_Wl#$j0rD%vKaX2(iXH8!fV_uR>w_TZvC)i*aVv=1Z&L3C zZI8exr4n?`sjmNKMw_!EoQcc44d?cNZpA`$i0cKN zioXCR1jx}isI5$e*xySdI#_SqRwqGWK}8dGQBfb@_9LnY%3R&Mdson9VPk*2OAMNI z03!;}!JdD}AQh}+P@QYj?VQH7aS;*4)dzZqRk zdVhD!{Z^-brae2}7P-Thp66zwWx0Lw$9i6MYGt88kIvvHl$IXsm38KhZ)3;7VdZnh|HMFG^gGb*u|FG$S(mWQ z+=Tb^PO|$>>a~SK&LbT40UZ*PWW#8D6ZfE+{fjX(JL_#-shnvI6j2)WvTNM2Y2 zPy}S?Yva0IXm;#8vIM1gQ;t=rLM#U!0l`+g69^0xYP=n~aDdnNwxk5a_^DR`#V(73 zVn_Q-1lozYb7ylCr1}77Ur8z;6CljU+@vEsn1kmT)Z6q zs`lVFDu2LPVEI~CcI%sa)8tx(t%VZl=^R@Q91X0oJ-ZXy3ubEZ5|RZ)4Jq7qqkcbs zI;s#7{1~s|Ii(#-E-{3vviw>)O5e5ox&4SnLuFmw@TPDQF0C>~etji|xSYg-oweK zl=Wh}P*Zc~zFe@yxUtQc&0Aeo_s29M3yC2-){I_-tYbPp+m~{GrRoeEIG5{=#_ASK zr(7}?9q!%RSPRXisAKjXjw)~rVyla`j%BG(=L{95?bK9NJs@tBe|UMlyQHUSuWkK$ z^*+Icp#vcr#%0i`E`_RrGYkaw^Eh=QY!spdOgdT{XLa^?W47Fq@_7O z4g5^O4r)>Zn-px4sMb=S0}q!8U=2P8LR>_|B@DpRUrO$)n44$mzj*$fn38h1&`3zh z8p)|aaX+sMaArj! zOL!O73M|Q*qr*Lb9O6?_4xu9v69Yq4+3DjY2u~m`K3)K-t@UNA$VyAQ%yr*^&!0Mb z{=Wu3h6w%*@Uh5r0;F1dwchu&Wm(mS7l`QvU9Z-&cROWUa4vJVv=NK0elk+^I}2hD z5l7syL4kptoNCoMK&Av>qHs44&PR!FGI}B^#BZU!0Ix&RI?*61Z6v`iGup00Lsn+E zuIA*aQa9Z`Tk%T-mp9ywSa&8I#Cd2nK_`LQVcRc8p(<|>JY2r;teJ1>3X{%qJoP9Q z9cZoBj9?nrNNgW$jW+=G5s*$~9;kV&Hh`qbYd^LxD5fF+wv6AxYsZY*9HVP^fs+l= z(qwbo3kOn>w1XR;%eb|AIQ#dQ7GJLC70GlzaQXS==rBegBO~?z^KB(GrPfFW!CgOm z_y9;3pjWv$S7wHXhk+*je4G_Vr|N=(+rF)GkYJ#xxzFBEdqflFc%<>7VSn~z%epTu z{>00>W}=s8eNiXQN0Wp6_L#sP*MxDoR5zWjO(-c`m0+}08%biAchg z{BU{f+ikAxrAp*asAnXNTKU?5dsg4?O7Rh*M}8+B@?;*C0VxsDL`4%a4wUIFtot1a zn^RFLv_h_*?PZTGIJq9PQizv8yhg|HfwY@jWvi(phnVkS?f3$64yyYSx)ut4Ln*AC zUIotP4@QWnU z(y>~$6^EW32}a6iPM{=~vF|{{@4)pcoF=XhFyptxXg1c4P0?Fj)*e;STU#%x3n+g! zU`|C(G;G_9)mD9;uJhPj`{x${3i;q5+lf`;7g)UFY<33{bu>TT^fn3ah6LTbYSg26 z0u?*e5dIOmV(`-$6b!;f0rg=CHOJDCU9vmj8ujHVrRdnp{0PFHHyK~vO6y*gAn`q@ zBNC?^t)|+ol}+EOJ6D(Vx^dl$%uf2{%ajFd@fZvjD{I?kDhMqwT0l`wLL_Qm8^}U1 z*=N@YW5`KJ*4sH7EOd__aQF42GQwYDbt5~vYA-SIF0WwVCvK>7s4%;+ zy}b>gkez~KS?Sf-^on$>OXsC>tiGn^?~Y8`vqgEMx_Z&|2K6f9@1-d4-78h!Xe5IDkz;E01^f)L%CGX>*A= zkHt$Ul>TZrMTPUSNf%peMRcH{=S`;|QIz;cPpstrM>2S$igaJFrM%PdmfA0Cr`o5_rBg5MXk-Mn)xI?JkW&yUS?h^o05TS4=d`zAbPb6=Ip6|Bs zyzW6S+~JaJ!n+XgL6YLY&R|lE`(APUITS3!*^a~tNQnV>CI6^)I>w+7s`o;uC4z8w z_$j4?nDeG7@+jPEo&tk$7XTF(Bgdt(A^73zv8X|zEczs%w_v+jdyG=D;6T;XIFv4q z)-j$3apIRWDwDO!<&e3Rv8HMFS#kNH?$`yf*#6hU(}S>C5fmR5F_iDybm|g$`03(9 zSg3k+K`T&bTDQUH0Is^PihO&^NAvX?hb2Mk%b|t>G`>5FcRINFu4=S?*)c1c*Vg3z zSRWCwrSg8s1!Cug{mfr%%z`qYlE8IT8#e>;qq?ZmowV?`e z?%+Cp)%eV(SfQ-0{@{;MeHIG(JIhZ_Zp7(4631=Fb@=L ztwm2dWLti=xH0zN(?x(U)|}4d#ZFCyeA7T5d0WtK%xAb9+d0Xr8WL`xd>9yD^*O_$ z0AOz`Oz0N~^+4Y+e0XlCZbo!1KsZpCe+1kh$iUx+(&0AWs>|r`f#BgXb)e)u{jEG( zl!KM^q4$uan=f11tiUAe!;DK0u}}JO5KBb0B1Ij?ocol3A4m3$S3tnMIfM*20OxUW zYkq&VHgTUOyDzGztGm7ZBiwhbl?fQRPo6xnuir602IOL5cmXH@EF9FV(}!T9*4Ebd z?+<^`geo{v|1M_Ted{5n@%X+>#@v@TPibq(@~(T|J;4_%_S-U`Q>rT{f3)&7?emJ> z3tnWXw7#2W2nW`{zOIaTI887J!3V)T1AOeY_9Eo%fxneQj^utr5k~!buN@EPhw zr|MGmUps?)8`#L|7QYlx_s!;iG&~=irE&&~IXcmMY;T6NBDvCbPH;6j2;ZL8ZEi_B zAxY%Ca6{Z!m+c$_K~c%q#jY~{^jHm+-rBP$znNG22^wKPf7+m>z_<(`1XT|4sDr&N zolu1344VUN4Uo0)4o<32O*mkXVYDJ1Acc~J9=d)rP{ZDQ0Kp!@M*ZXXe9zq8Zc7wJ zVuzOTHIok3{IluK{H&U@?L|+^-#Fzr1hrL4mpjwX;vs{)KxO4}STHIgS1*qxBCOY? z@;-V*W5qEw#YAy=YaSV^HNV$3sj!W1l}6Kg=yz>OPLpc{Dih&spHpl1R~wrYY`LQi zroQ5Svf&5|Xf5_<6y>@bBmajF4oT+Hqd6m-Xu)T6lZ<(`W%tYzwv~Oq>qvy7U z^mQu#^rfJPA&?d96{F9iqsz>|b^8FpRM{|^`OkA0LWr_A07b*teL7l})_n?k5CN2_ z6+1gSI|Q3}b724+gp5V}`=8@hfrDMmp;zr}3HC}u$}!%tt?T1+D6%ygm7IK$l9E!D z9RuJXII&tKH&f%d&DuUZAsIlxWr%x04(P_3*7~VqDE96BE>uv)PdaooQ z9oj9MeuQxyG6CeIoO>C}T78kIv`}mFCpg@R)auDr^+;7NCDblW;jz*kch4T}VoR+c z)ZQJLae>E>$SvI>v$Q`~w-EVn$pO+w4-9U}$jI2(yw)#0c1d9>7bGgY6aI#bAMh(q zGhoOS7`F7P?7Oty7i_(l?YtN5Sx+l^=tUfcGqAA6rZJzkhxs!@dwU0?V+3Y)y1Evu zJ1Q1&gdW>evmF}DB`xjV9zK&}%Y6#5Udgz)N}cUhDk+bH@Yo(&xgBogcQdKG8@O|< zapR12otoGo$x8d)6~q+ZZro zCJA*73H)uoCm7mkL$q#WM2es_NzHzKc>|1`9f;%sC*qgk*dIrA_fAtFHrfYhO8{wM zFsIQ{5)zG&FbB>fl&A1UO92DP)YKF<_6=`Zlq#Mk2bo%^O}W_6YB3$>{deoNFB998 zh~6{vfP(hN08(ZNrDjdMR;8t+q&z%4ZfV$S0>}cMG01r!kLbdMT3TA(-223M<;sUo zpK#G<@oBz*SqGq(FJzz2&(Euf9XPA2KR38{N%f`sX9G75FsQ&~g1?Ny$y3va$y_W}W0!iipXID15 zbDtjq8}MDlAMkjR$qa5`E_sAMu<+t7VMXU(?o4B`yR|Lr8Y{vXA{)@NotstUl*@G1 z_jR8Iv93Lx>^H)$ilk)jLK?0C`0qdX!Rg(nvC$iiPHnRSWw?0khl$BcKGbosk~=1A zgvMDlWNl&@8EnPe@WG8I7{VOl%pmlt&qn0hw!qQG=;%T@36;PppV!F>zxC8#96!^c zjGBU(mv^H@{kP4)=<2%gmk<8W82>RgE}pi!o|Y9oqFVRx-30TV@hO4|Vy?YHf>r&K zkGhs-@^SE#HO7?u?Svk%Zx;J5+xu?_=hp}tyQ-_A|5a@+YVC$*7HwO%sMyne;Nd%rJo# zAw~D#@Gr4pXUa1uO?1T`u~7}4Co^k@q>d>;U0TW8HlvQRx#yY2w1PMK^9z8KfsiNu z!jZ&MBl<~Y>p$KPG83rkIEA|2zSkzok&7nFY^P8@l7FHO$G6{YNn$rG|L8x* zBL2iA{v3e{@hI1^qDP2kx^PB+s;bmc+Rld8eh8MMcxEKw*{lrNcJ{V5;^)j)uU6c( zlTOLMcyZ}R2(kkOZ^j~(CjN71CD$r~&<+?p5EHZeQvCA$ZQUxzOsA@JX7Cg3yVGuh zj5<0z@ZDSDyWg|3J`2&{F%VO8b8`@wo1UJw)O?6sHbRF-4ht+dP|ly=Q#I_V0!}ld zRZdV=x)RWRfa)N~N`82av=z>;0hT0GodsmV7QQ%AmbNE-61m8wGApjOxn~Tc>?{(X3QMWCwnYL>%D8T zHjkmEc};)vM()h)Y+Ur+yLXcm;H^IZgfE0JA94`jXApB@V9lT z1(|zQnY1CbNvdNyh9>S6O;u-_!MF+;t*mFvG>IwZ%3m)kGFDt>`@zazIlARaSZ&F8hgCN4d(p}g_OK_6*_x#SO?k3Up^Vajh+fxUs^8_c7*)HN+ zga&J7IJoVs{)*y!2IaD?33wv^vbz!%5(tg!fu##wb_QKq!LMj+Y6?*N3f0?-a_-3< zX`hj}YN%_+pZ4V87@D3~uQb@9C4fYVHR%#UVsT%tv!V$b$PciAD7Q-_;m403anL~K zrMh8}#?cB3q(3)G{{;Y5hJEHG$zs07M&kqjCzj+fZhwc>DS+KT*w*K#Zk6=#umrL1 zjqaG$#Ah&(>I7oHrKH{WJ}A)jw3@RWPAnupRHyZE6TkW1q)~1DEVD^j{9JiJvCK2E z%M!RR&$DAf$uotwzo#-`v14NUB<6O0w6v2qZjJ4=%aXHWs93!piyHuKYGR@}RVPCx z`XWA07e7)0~F1fbwG#<6Xoarfc5x6xwV+?yQ`%ygO*8r&o}3ZR3udTJYqJw zMUY8b?_TM8dUOAS$P2-SM`WaNa##$vum;q5=&xYRw0n=fJvUMz#3O0Ub88mP>0bPK zC-ux3QJ?%uX$(fyDYNKOH#t!xX17Ppn4dM4&|{~gSYo{J;O(j)SUQemvtp7w6ab_s6n(LhB z)f@Wp0o1Hr)|{_4pT~_2I;eCdsoQVL4Zj#Brn6F?LR&p^5_MADB{}HWz;}rMcjTMA z_i5ZYgSGMFMH>m3*%NE33loHTdd3B=txp>IPh2pRwNSlw0Rfrvc>Z17voeU#k5pJO z$;dd@L+5^g`Pr@dleDZqroATZ__C^_sdfawKbP|>LiEwU=)Zr_Vhzf?b8Ss{I+^yv zYlq4OYpgSOc)IwWu(Tch;?SVuf@1Z6dz}Rduj#jS?~B`Y4rMYjEelDw+WlkQ0Rdo8 z@P0bBvMGtttQ8Yxw4K9=Lwk5c7hc(F6l_>dPB=JgoI`1{{J8}S^oMDDYK@nX_gD`+ zYq!MKV|A_(sMG)LAo_pPh+>T(X#_>b2gLmwH%ev00XhHKU44uOUW)Zo!a^DW zswDBR#@|mtC`a(uIC#a!=elIVcu?Z>ClU$k0eC@n8X%~^Pp)v7Xk1xY0r1t*hz0pf zgxqaL40)&-Y+3|2II_G!1(EC2goHd7sOW}V<2^lLvWVxPUB#ylANXS-5JMyE*6os< zPQ35~K^{K901LG95gt15MJseW1!%Ikb+|k}Py4qM*vQG5E!-<{XLaFkg9_qAC<)2X zCL$^iWwkc^bNf#b?)5*}hs`z|_(8*luKdDY-wH+_8W9*^hX|Dq!exj@X98+tixzG<4^_dWCiP#R$U2uWpSWkbVJAj&~pw5$*pE66!GSQ9JA z=AZAfTB@XwK3V}{%(##)4*L!SPhi?0I3s4-LdY|201^l!nc>j2Sck*w5Mym&dW#t> zdv`>LKTJrJ`yby^p(xgx&-6P*tN=n1CS{syccoyg)eo0N!6pF$To{dj`l38yRQXAr zyZ7(YBIcUxJJ0C~WbSN=Fn|M|!cPA)&)_3H5RfCeVT$FpFHN0xvLOfMoL!pAo> z;edtiZ|IHz${_I8`VJ5F?5n0@p!SZH5z+n=g(_hHohm?N!}J%hJ?5_8kl?+7`P$On z?g^&Wa`j?i7^4^LK=Zt3+^G+NFa03~OKuLMynrk&5NC zoBoHZ;l8B4nv^@mz3RrsW59T$g-%kSY@lMhB@_l|@93xl_!4Ol3x;2^u)F%=!rV7V zl`#Pq8?wTzVPGndy9?b8Yg`t81Nt3{Q9X-%g=`pv>_-3%+DSdymt9;)JMZhVJj> zabHm8;2w8Zt5^R9EVb042gx9K^6c5ccYgv%Ao1B>l`UY)Gyz%&!bZ2V`vo%s$eq*v z_5%(&s$F1>z@FxZL?);*lLVXa_HACyC6Ud34PZ|Lh_{y{;3VigC*EFA4h*}&I?pZO z{)3h3I|3Fm5Ht5-7;Cu<;1=UuHL0(KNE?7!br4WPVl#jX0;7^v*e!yWuplQ@9^fg+ z;;CH7%Lltx`tr*_1VDv$kp+fTZ$X7dF{uDk?ExU4WrZ(%fJAu!dN&2IX=o1!?GOWy zc7a_fB23Cj-POh(ubA7AW?N8g5723ZyaC}(e-B z7&g5je5SXz7ebFK@JomTpm}&U0r(bi`0h7g#lYU*2IxtL`8os|VCsO0j}SPa>>?~ z%^O|#mNjTs=?yd{@Jlv$S5GB&l*8izw4L9c-GQHmG3u5QuIJ_gkK4+37}^0KG)Obd z{!}tG7r6TV&N>CV{;M%XHVkBzh{3!APiwjIM;HtQiHZvd>;zKV>DGG*h$U=4g4{0P z-|TKJLwQRUv=qdRfbF_Cke|()c;DO{=%N5ZTNo*QGrHM-MHo2hBDno8GGGV5&>#Zs z)i*G;cIO5a0I1(eEj2QFkmh#4v{(k;?A3eiD7F@m{R0e8BMsp!Lvb_M;C!$+9jDtM zX$OKh7Ol@2rWOtx9%G@c24CydxZ2JZ_yhI|(+Igz!{xTrCLRpwX{<=YOK{PEtz`{M z8)DexS9Q~v+aT=#)^$HDG}w-T0Red6Z-9FWd3Hb;>Zz`Ov|LazmIq;WAcH^_6!4u( zT$l7+b|3@~bg%wT(Dx{K*d{DE7%~R^nkKqS>rdDL>j1t9$;g6;H4xMwa6>PxhJ%ay z5THQ_;s8q&E+wz_0z$aLz!Zbg>JRa)0Iil&SXfw8^bnYA;nh+iXMVcY>~;Z&TxvD2 z0I+g`wnny21T=~LWE%hij?c2!6rxO2TB<{_;lKjO$qroSzUDa9f(Yl~x6SU8?^1Ol zV7}Nw-ufOL0*@AU#BnHa27^taUv86YX}0NhMvapO@&v8>vN}M**zhJ+e|rqq4yvL3k@oML1S)e5LV!x3}vgNBBebMiKlxNLYaFYh9Hg7 zb9J&Arq;@6T-^MP?(?W9$W0RhzZw*V4|ETKG#;So#q4^*3b+Hi2zWSOVY@(V9vP|C zE+kD{Fv?>6VpGnP;&!()NdV$TGmzQTaJM-G?!y}{5t1I)F$4LaGmzd1R|VNt+%yp! z7WV5~%~k*|#o^xgk(JS^I4{tlKhb*HKvEJcICzd)Li;&NDxHZU5FdgKzA#i&Wal{1 zc&5O*AcL(1l9BjqzNC@o(iy^T`P|t#6L?>VgU-I;puA~E)Oc0?hE3B+9yaZXI5BX_qN6MD~>VQzo*Y~n@k3mm}^7F?frXF~mQA=#|gd&q5 ziV;b<_j_p}0Z2#ORL{H|ZUsP2G^kK}m_tbItRYN?>--%@L6?BAG zpAsKL1m}QOud|oLRjo*djgOB^7@*K@AdYa+g_V;yi5#{y)eLTDtk(T{T`o_R7ymMgYEuu81A+Aa09Ioc6vKrp z(Rs|F3)l*a*jj8WzGa=AgjJ@fsJQQYw0s1&Ay@bK2(+e^Ld_uA&^NLxJUm(#sRe|D zV6Bde0@lrZ~O!g4f+v*TFPRU2Q~0jo|cAYAMhZ7y{IIJp@Ss} zF6%tlc&^ZRLkr&lXoMxZ;!7V_fPrWTjj21sM37AYsQHxP4#a0ug&uN<_~wNTShzvIWlsO3X!qKhF}f23rAUZ`0m)Zv-^pF952*VuzVD>Dyh900{(jRugz_5w>YK z6;B=nz+o|{UruLk12Y@Z8ej+rue>|8proNcq!X?a0n1uYEEbrK=kTaDx_l4&hAD6p z3`LXLVaeWRUj1?}+)_u+$mHhlU*8~{2gDr^Y?QE1lOK*zLTL(k>P|O@rf}YRZrMqz zk+bWQ($V=&N9%OPU!R5Outk4P)-{XogkNjN~SVYWiAeD|6 zfRQ8QDFKyAn48=2o!<#2m6ZO%HjgL4BVzW|^I5>F5s>`x%9v~W@pP&KDLHu<6%Q-O zG)R?jha5yZ2s?w#k$Y3G*6jhz7Sh`eEg1+&#hNv&i;&N+w*mw+K8x<#!*9(NVhg~? z!Gq$-X!K2^bzmQ;HvELU+k;6Qs-Aq5;cPt7K_)c-LI|L}grX{~i(zXVbcL3!kO2u? zDTx0yDwX?$%FVOMtSpB05C>ju0;owXy3Ywb`CwH+N7Kmlw{PH1cQ+T8#~VyUd_hTNkNM#r zNl6(^I`BI>Iznb+8PrQ2!n<|yfChi_j2QT9>k0!PS|Mp;pogm8>B{BHk{Kb3*XS4S zzp%Cs@IBfa2Nfsgwvv|449132So{f-9iY~Y`ViJmkxfA$yK`lFX2weM!MA{>^=V19 z7X=0tNHodk_3N?A>SJW4pxdSyB650z-Rd9bz^xu=X=tLh2#pINkD(mwQCPAM$E1rv zuz)={HD!wa0D9e^)M6F5%b=>yo;!z&1{F_AOG|t4B0GjFUJ+~)Af{vwsz^`}#S1uP zIX!uQ8^Bt~NP`N<&j{~=vR@F680E;h#Se@5vA_R7BBATAQOb)KjWT5LT%4j>r)U~Z z`veCIc1b}3vlCY!Xfv>u@)bbAL_B}qC>v7*1RcPM?|{1ehTvU>bMQoyTea~_!2IO# zCa%T`;)^9Xj+H^y=<9FSyDg>UO>P3Tn7nxXOt2Vo=TZkP>R_>1sy#G3IooRXM)xXY z@rH+oj{^n?;%y)RG%SJ0hAQy5$)qg@Uk}5R$Hl=x^cYMA_!H1@x*S~Yg;&Na_ocuB z_+CB3H}2I3r$fRm#E4&kH35*V6$REa*1|rAoF6avKfU?f(y|Ql~_!;GO5~&04 zDG(tLb*l#ZMIm;QyCd#e1~`yAJ3By@tcM)dr1q-Eau@J9=p1EU)w0Qf$-`6Nc{{IL zVAAyrcnX`I-fB0=ER{c)y zIuQ#wmAE*ppDb=bUeF<|A4Ed})DIMI006cq`wRV21snuWJ0O)Ziu#Ld= zwKRHQB>Ta<j23Is~g-3r10IUgh82=8E@hMl(Uc{JDze3 zTd)n$1dckpWpbo8HP}K6UCM=g%#aADp3HFm2tEAu zG&EF$4pJgIAWn*e3BrzZ93YdkTG{p-CH-4S9av(ejpJaVLDG|5$q00%q-Gp)Oo}_9 z95r~X9J{%66s>a;5R*xWo&XynROQG(&Nnf?~v3D#;y}bu1?VyE@$mZxbMEdgXWn=G&MavHGR6lQ*IAzG#U*H z+zULVn5%ksD@Jq*4I#aLo<@1-?whNIl`D|wg*dMeU)lXYq5@&@TFBm7D2H>VKCB4P z(~})v&6gkW96>1`2-6G@eHkdyMwtJQ5AVb;+Bo5KoWTtBAR0>T(qErV>O1UA6>9+b z4Lh;0WDa~Nu)m%0xgm$^hWY0>aG_N*5*E%NH5njPIG1C>!I7V)0roN&A2Fc0qob#{ z1Q)Q5!4^EC9_SmQ4bJLC$Ww7}SOE(P$rQOCTGck;aN(JZ3x+`{Klk#VJnBO*row<$ z@&k%>Ku+b3--%OWK+y-+!@@|z=n|3;4gaboVtd4fZFmVX@q?O7xetEO9UFysq8vq!Am`-i0SG@BIfZoA zdANU1=IP8H31$d+A^2ldR3G3p$X&tHg1Urt>$1)|3nFC@4Ny^00eyBf2I(zeJB$V8 zs(m{}^7qVQ$2sIQbd%uI(f@th%!z}1*Q}Od&(m?62Jdb|?cHV2Of}B)>B`ekDDpeN zVA&}iZMV5bT}Ny?TWh`}ftEk{>3{u)SL(D`dVng}5&fpzx#7Sq1pj3&DJcnZdt!Ik zT0ph%K^+t@t2|(aK(+Lx*FOsXCn)(BItc(}nqsvA*82LoO0wXz4G!4zU_{Dfs3rd| z=H3Jv%Qbu-{TdW9mMIZRMP$g3DZ?j(%oNI$S*9`*8c-BUGE+oEW|1VNL1l=LDXA1i zk_?%h>s5R2-#Y*PXPtA_I%^$k?Y+zXhWCBm=eeKjzOL)OpIlAK%a<;>BiBJ&mWhe4 zt!TJ2GI1AkbltjjC{0K~d$)xt@Z;E_|u#V?2 zhE07)1}?hXUU=A%Mi z*DAslU50Y$7e|*CN0W{f%pj9*56-=@Q!7ob5&;8XVj7lk!i9ni2)}SN?R%*9w@>2n zPf3s$7Ip(HKrHe9niWsvC3)>myAxsgMpXU@zw75upPoE@y34reI`V1Lj(_JZ!Q}oo z_!+B(219m6tsk;ZZoJ9&l9*b^L~&fTrkTSX)6^`~7qGYQ`SG^_IudotiRXZ(CIJ=M zK~*82LS`+iW~4tFyGu}zhL-kD&j{R)fV*7xe=OH)w8pty3qCRZ{1nejwK zSq>_fX&Fxo^Pm2RsZI}{INrTQ)6!zE?3lU#a<4f~?I(^dAJGB&hp-Bxm<$`gzM-LwI6Jcn z7`C^dD_wUd64kf}>~LG*0Vx2-dmWy9l5^9ssO)d+bYAI}D?(W$QZ@i!W@EY3fB*G>HQ!zYSME*@_RnZg5 z0BRaNYH*+4Q#l7wA8kML^D`c%{RNg?;`v_OTmLd{KeC5n8Duz+k2#eATfxmQSm6I6 zu^Ch{pwoB6B4F3`*8l*P>oGZ?-2Rm)CDq=$o>0NZcf;84e}HW#8(kk!-mOu z?YZ)Ne0*?g8zPA-Eh%Z+MtAN8sslg@-JE>|j-%#~^uxc6-gCu*5VXu8j&(sY18O9C zJbx4>IU)?X0+WL60ifW(f#hj>1DI3@CZBNG_XW*q-7sCd`)?uGZ+|Sq_nwMZ&XN`$ zjS^rjcbO3dif!n*j>5!qbe#H3wwOAgC&2Q*yTqdmPz4W5YR%1uhyFI}GS>^fxOF>FhEqa0Lo8( zX;B^?WR&{bxA11U$R}O9HtH_bR_9%{fa(OSeb}+V)N}5(*^fzs^eye=PxU*m%F2z} zss487j*f{8prI-)YJzZW<3tl7UES+^8b~HMecrYpuf|hjWr5Y^Cn$5Xz{z%^eW~OM^Bi4_aJTsSQPLPOEpWsmH=TZ5LiIZ1WGo{T~xKkx&ylS zm~w^yxL{fY1{JUVHU6=PvqAOE`2tY=y*)3!%elN~#I95t4XW@^fee}qY8^knyh;Qj zNJAMK8%bFH7TNAm9ql-AxDDjGV53x4PFXB00a_s z$A_YB%&Dh5KX~XC*WchyyN*#`=3UG{ggIigvAyOP<-Gx2jYH*c(iMKXuT+lz3&!g7 z@IndlvnhhIN=N|b|0uU0{oUWN6WzCSFF9{q@L1QZ6e9{7~`kfGWC=F?5b1Ic%>#~}#Z$@4Te zPJqyh#&is|cBNE2@OEDYMnZBwg*0wx77zLu7AeWwm;9A8!cwhN$Rhi{hi99?hAU;smo2kzp(t zhe{(pDXC7sl>o|Ra0Vb|O}*^C9|jv39K|Mj6l7q<+Y|K|6X)HD;3Q6-aESfeOyDNX$UTKf5RrkVhC!fy3+h1~ zzQtY(8Mp+Qi<5=Z^xD55CM8P|CZA1{cQD;h#OZ-2h;cjUp^a^(qQ^zD2U8Mmhr#i! zwPJs}4U+D*aRzV>cQ6h^;l~j}@s*IJpgEUzHH4@CE!dqQz3&fccCA>)^9D@^8YMa? zd7xo{R9ZsMNf{2hzRi^8e~TBCY!5aXKEqsp?sNylQ-w*X9cDDYpx`_v{2H{c@44|X z;BSlh^y5LFZJVXsA6kmEq3#k}y?mea&eMNcP~0MhFRt%KjN`(72*vZ&uZu7LNx%UI z|3!q9B%>IHW&Ph%<|SdOB`F5|<0ATh^IyYvtLWt{`K)#)f~)|0R|HY(+~W^^d8nt_ zr=~WShx7l4_RJ_?-tEwQ9axwP5_7WK1H#({HP;8)15(@kVG7biSW8!u+)WznJe-}K zQOE=Uw;NnFN*F)l4JPQ#$?)+`hxsw=ZlJ`mH7#PU4SfDg#e;w$1%(S{lsk^cpP>%! zJQ#g=0+2)HAd$g0qI1}dH#+M`*VhquIjxV+K=8T?;pk)D?G^-ww;<=Mk<}9i(jhD6 z3Aqc`%wR*}hK(Ej?mYp<4q*V6K?|V;paf{D3pfiV5Yrz4H2IAV1&LuA+pmKeTu-@q zYd8CH3kV!Tur63fm>eKSgAeZW`an2MzubrhtTh=ac_#O zl)coUGvf7&sCJzhy9E;!ADXhEQp|x#MHIc$&Ld=_tZD{A3*>sq_I-ZG{x&4+w-6-=~(ib|y@FeezdUcR+#PHutb|uCH=G}J z7RPE+LN7+UOJH5tK0X}*Z>Lprh=X)pc6rcVBV1IVz!%+5zjfcK|KJYdyWT|YX zfXEwMq33Z0O%ny$O(H0>C|LG$sr0Z zp^BJb*8w+9&BG#WE{FPk#IXC2VW0waReIQC{}m53C6UZ5iLWA@&i{AqY5&;N{y+Nf zm)51VJ}n1K7_F{sBQ8u`MSEWX+49U9iX8#m#4qr}KXOZ#s_mKEgWB;frJc;w8>ngY zZGEgx*a&-`uyS-|{(ktVl7N?DBqq%A&x(L=Q~$l5g_?<)mTcv0J)R140 zuLk^Iyy1|etG<=zKW{KH3RN0s@zo=WM~ELi&3$bDeFGEqdg^t$t_Or|-5ovLY;2hq zUY&mU%QSF$%kNi{d>QvH{P%KJYG!IW;^o#}E?&-7o{rwO%$Gv69%~epUtP9J;$38c zQ(FJMVcOaR&9xkTOF>etwu}DjvzszRo}l)9}OAMu3;57B@yTEpP?}#;oH>rDH-~v zeCwq;$@FW96Zx3~8dXB-iW!@fxy3U~UZQ|3^v`WW<7HHD;a zr5@j!zT2ev_5JeOsKL)2!a%0v31Jut?6j_4Mf{2QYZUDPO2*~ilXK#0Lm2-2+Moab z2fy~ejr>o9rWE+9Q^&aYD8;+u}~y=ZH-cg($8%^%63!ija(C{T7SI)4QER- z{R%Rltrht^1G)Gl2!fjFr^46`xhcu$rT|TLoM=@#K?Pi8%Qk=njsCDZ>?VYZ;YSBP z^@w+ut*B%fz7LxgLNB5?8r>ijKZ!l$Mc^*NK{0Hx)O}eZL0FPcL177IK!ShbzJ-9f zDa=ZKVZwmq;OtBkFzCpQJpnTcOQ9(%xxkQ{_YMeA4s@^w~fcpTLx9(?dorvkwi+t(Scj(1uF|56u#yMs<{B_2(!hS4$o}RhUTh=q?cd0wNSV$i!n2Q( z=NLB1+0VkkCi?n6!H@%WB+?U9Jv>g|g@b46!64s5S6%*1ro~5}VkaXAJY3M2oSXb~ zRo?>I#w`?P@Nt@m)tAtnTNN_`s4hQJ*4l85u&`i@gWi2i{QxBxy}+@jtYS3d5YK|~ zCo7X;zK9Y*W&QTHHaTQq;75rUpyG0}FgQOyf27T4{We7=m8#yR63(HIO!FC7NVP&Y zD0yr~V3+?fw*dHbRAkfYQ^;)=VHS3CaxyKlR4S1a2j;;~@O(d)73(b+P|F%h(A!%a zt&!drLI;$7ECNHtg2H$Q;W4IpoX{(!T&D$$?F#)68Kgu&Kp5TiEg^E~&ji(s?p*(w zbwbcZ&j$~J+ey{VZnV1~`NkEQBF$q#vwKV=C_1$w4Nw#q?}Z_Ei0!`%)i(^8N<=%h5oUr-ljhS9pZte3^X1~+DwH0424}d@2iYA)Fr2{H{eU3yV7LLv zi}F&)dT-&uSoeav{wJ`k2yo=>+qbcTVDS4zP$J5h=b{SZNWY6_9H}I~KlQC(R`J8k zL8HF`cPS)nV$c)-5E5@p61}L#7sQ`-3e@Y|nh7HKc9;^DpzA<@WM^lG2k!(V?Nra# z>iBA4Bn-zG8Y(c~%f%0Pyq)mX;z(#*X$)_us&XAe5?2f1uppkIqvI`ZN&-Tnl7?k= z{&RgixWh3FJfyIbFzS8eI^$3vHZA@2J=^067lz?k3Xly3$RQJWQ*~ z8McI6y0e6Z0Zb!}S@n1`7YwMNrGOooXDtH*1I^6LzHB`%`F#QShycpqq>l(4N|E*c zUOD&xPGnkIT3mhXYe1&+wp}2M%+LdT()pGSX|^3u@KCffU*NaOdr;A@Yn^5C#8e15;Q`DGRKlO(Ag_7 z{T}SO4AhYotJWmcECPMovf0&!P?1DH43MUA{<0Tj&BNQ*698U%Fh$Jr;VF<&vU~R~ zfSkS$Pb)F|D=L%=E7LJ@1O$W))J1*?T;w$bOSEK^J@)1{AT*KG16pHFr@smxD-g1H z@OJdq(!ib?f_Wl_zoKR#KR4G2)M}jYkCJ*JS(x?EmSYDcSw-b3X7=hA&CSh4a6O|_ zY7iPO$X^@HiZ@4B$&Yxq|4aUC9Amo|9;KR@Mz;d^lo9h+JVY3NJ5aUItW1v+rLBq7 zd82(wOLOxNT%Q}fW9VsmAEb6}ULKCk{)OIl6_tlX<+G6S;n)FqkmGsPy{nMJj1ZI# zvZTXDjvO&C7$>q6gi5#r_ROtcyYlopp}UsIeGnhjurpzYnTM&e?%f2Ojwj{&AZb1m zX@K&KKwxNM;`r`{36z#sK~tqyv}L|Rx*qqH!`kxr(a+waDO~LdSs@h*5SCdinfo6j z1kgNdEgeU~4<6X=&1`Ky7h=mnLV?}yJ0U1TxR=LZY3Gu$q3q%#Q>Igz7qXI2Af!>B zljtuYF0QMAQxn#YtPZH9+Oe8-qnz>|xAF7~mtB%H~~w)7y;g%z9B&DbDpMkIHl zxe1K_j{;@kiEg~sxaJ(a{Pe^5NyHOQIbZiLxeYsFfa1ZCqQ3@p- zOX}E3efDr>EYYyWd6Rf>H5MyGI|(hZ;9h994zc>P^%jdKFnR;8f@+qa){AW@ht=-> z#A{6n35oPMk4F@&DOkxFd`UIy$xS%%9J`*$_lClt$-JU?t|1V>t4~2|#KfH?FaRO} z*NkdnUJUOoxQzxF)Wn?1gV*>}HTtxV{yJAMkMXr;vx9kNpb+<9`J=Ejk+uEJo7XmM z$3%h;8cEy@h}Dm-YsKLe$*%Wa%(s6Nn1hM@*^=whryUB#^C1Qr*;>ggOOvW)I*w>Q z@MUg$#L*uHHbD)ml@j*2rOo7-#0_9AhzGkkIicyHLmBJNh7DR zz6gyNG;hO&r(k;3%AKA~0p!RS3q3tjUQ)9A+4x!EDRichhONUDRRz=QG6*52y}kWW z!Ep>}ZtK?+bSs__;IV;lYZt6Xa+gUZ(U3pRk-m2q&7DVL2W0^P8byJz`mz_6p_!6boSErS*Z4Y&r#rLn!Df6$3IJ_rFz2B|dI z{>}F3@d#B#Fzgb~$d7X#Q^gFb%_EvhM__9SFEgnfkgX( zSJ&uC%*@QOuPZ$U2SP=XI|yTWfzLz1O=6(SuxY<(Z?DGa5_=}3yI>Rms>pj_y^t)+ zr4pSb4}Use!Ztbtpo0RRnB?SS^!tsE-{bwwxOA)Qr*cHGYpEVh(ul2^5M!Zj-6L>< zsh#hq=Zrq<>Wx%pQFG`A6+Kyb@#oK<#9nCq2+s_Ta=+?#;1jQ5vDeJ?jy9AJ^X?Q9 zqFcDiP=abIta_?5&2aR>ZwnkKb9V{w2vU!OgPKO^E$J|aI)R_=YKu-Uj<|z~c%FT{OY96N4dAypD{pyZ#+1o2ZPumeAVi;iutcyvjR>0bo5hpEw$$x* zOkyd|-{gAtL*LS31z!aCe%`P z8_6m#rM?9nH;63|TvajDO4OI2p1bS*Z5_ojAEVYXJal&;!{F)1T<{h~3ve>t@aLuH13bVK?l+~PVDlQ3oOk2%U@GV^f->ZMV6o9jyf7h-+WE4O@rT9YR zNeZg6Hp!z?a1axgS?J#c);WT%PiPlSpgs)0{Z_Cv@9 znb%R>m)(?(b_YVMV7DxnJ!pwvzL-^{Iv4HMg4Bx=$Iq5LCW(BTPp?En140UhD0zN z_CFv=X!6q*j9@=F6|$P%=gZkK!;ccIKzv+?o+rl{RrCnP^vbn)-eTqVW4>U|m*4_X zfQxxxYifrQD^FXV)0w{Rhwj63Wq zDwcO0MsWnvs<;a&*#6~SE#X{n967NU&%J?Z47TDfoE33#;1Pg)<}V=wCRc~@b) z-`=MjkZR)SbMVLWt7VbyB9Izkvn47s+LG|k>@T1!Ioon=P(?Az*XL*b7;W0 zh;p+`f#~ipR=YwTH1zFx$@54Wrd?WbX^f zl5IOXXPE@0t%(M=={0Fc%}ETBXU{ldUwZWYWt`USVxNBED&RvuqgUGI@jBT+@&0Cm;S1Cv34<=KXk#rqHc|0z8?}nLO!W8eVuae_)Bs z0}tE2`$;;5eC=6lW-vA&R1a07uISObHn0%1fg7+YYSY}buO@b001ngbB)E$=aBEBv zPz8Z-Mtw)BCrs$9tgOk8JF)3NDZPU%W~!hlBjY2MqV<=puwM-UpUswDTlfZw9>SU$ z$odNe?gb+Yxyc+x2?(yJO0uiWh2sK9BM1R@fH%Z$oz)c{RWd=_0|r<_e<8rJs_HXH zDRfjQ`~QXN0V}%A#E~?}4~aU2WKIXj`~^sri9QT8k7MKFmS@1@8Nxn}aK4UIJ9`0E z2FudqF3%}oBXcAr_NiV6(NYLtRAF(9UOnba>&LyYFrpWY{MXDYH?>nuktG=zlp9&4l8dzY7L0FM|8df zWkDRk-c@FF@ZdpHQ-91Tga&Rgv2g@lpNlpp5L!TQrbnSPnPifov}`E zS{YUEi`8_G5Q~4;Q6cetQ($)NjhYH&dX&=*YJM{1q$^6xCLuca!3CH$2<5#18(b0p z#)d>TKwo4ggWv=+PY^Ls}^paBEKroqZa-v2}T&Ye4` zXVliztbg&M5{XsA_f#tZ#4_%><4Bb01AhR1RU#sjxo+LQee(V3wM{a^x8L`i!1nY2 zGEw>~qVNU}#aLJO;rKl6lX!+G%_#Hf4i5_p!^$AK1_R{Ey{bA=089m)m~Z;tmh4tv z*bcBQ3sTl%j*a0Erbra#Wn2)V4m@$u#|tnEA^#ORTcF+*2VOLW>|~=&^{$;aM9~EF zNf>g8cv3=Cv90+JyQrTTWS+vl08Vr^uj286ePbB zD7d?2*RFi@Q^EF^E&W#LSs664v3*}=AKyIbi#)9U<;&GdQe#gxEcGqT1!G`^1OzS& z?hQtWjks`uLP-i-7g5?vxA_dgb0CwKmF>Adu5V_>DJ?-kro6-2+GTwcd~mu5Pzf9( z!5DFLaX2QQk?Vx?oM_b9w>VYN+{-`)Gy`-%C2fXvwQ!C=f=6B5=J{|2axX;`!PK?2 z#|fF`I(8GR+o|cvl_|ZX-p!n@ZI9^42`P)pGRH!)ns(|6Jx~b{+ zkaOxDvLHPrn+?LzMHp$&Ugi~W+H`iQjs)7hCg9_cU-tm(LZGikGKk2EwL`0|6m=Bg z?EL53S2^nNJEb9bb6&ywPY@b-cm$aR==1#L%UO_nbMT6en6D#Ksw|V=x*fy?AuTxB zBt3|J83OQaocd1S4}!`hLL)W`&~=(Zm7j=h6&cx^x%RymLC3*YbU7Npz!xvR{;jO+1Xj-Xt)fNzL1@CmvIA3k?;K$jYrqjKE8b7$N5YqIgVRvqW5b&dVJaG_g_!x_RPP3mC>13{-9rwb09EqFA4VBr1lhMm5mBP_c!ho5Fi?m5->w2 z4INZ5!-*V_pn)IVY=RcNnsvn~3`LmGncq`^%ol1(d6tp~B##`(S#2zPl6zIJcNO7V znhpWnMZ3)LK_p43*f7DV!JM;PfZo~Z3vM+*6B4bk=Vio1Meg^WGRhU(Ha1+_#LnJu zm?QQ^AZ6PS{n8UK!NY|$M!Tv9?}FQSee znJpXToZpaW&;{CHE5K!3(t!Kj=eExZ&d`5{<^MEFG4-Rrd^$qhLE#cfInl-zZc%xC zU0v?_l8#|o$@OpA+V;`0uRbOAO3nk_TVr^s&Ok!eH89vf1416faA6YQHPH4^3?y;$ z<#^1L{kKFzkbqPHYZa?`?R@yR8=EM9obH&En|n)FO{|hFthmdWqfRBPp((mokS8;? z38(^oE!h2(QK9r>3_JQyIb^J}u;i|KNbt}I#Mn_(3J3zP;l&Ha)hkG_Iov^3X6b;* z7I%R%tXa)>Rb~v++pKpq^lG_}w#MlHaL;6y+rm$={MXl;=+FXLoZSSqix}un>`G3&q!SY#|C9JY@j92yq?}4f+p?dvJ}`=qP9x-a^pGpu+&O z;vRn>x^3KumM4%;;;|}VcQm6&1o-)d+SFFU4^4O}P45gD*X;WpX>>b8OCLek0XCf0 zboFM9)vxIbM&UmR4YPvP4qjbP^?{JfNCka6th5a9;Z5`f$Qdf1L)nf4udi=b8aG+U%pjOLq#gZ!qZepbC!Q0G3P#dE|6uS ztITJ^1YH6{hI>#A;rxvgGkx~wEp4mb{#p!NA>rOP_iNj+P$bA!rr0(H0TyOK@blPO zq8q^oEQi<|K+-!L`V%(4yFN~%P5$Mw=9Jc)q)TThk4awjmy8Q^>`1)aO1pqmcJJSq z01;q$gb`m5ObQs| z7^?*2+u{-uwsv*}#>HFiP7?xNTH5#Vnd=*HNq^#or6j$RVXOV_Ow$vasI&mfaFoYO z;9lzkmlD#_g23MFGAZGmejc+;6KWZId_6@f_qG9I3n#8C-Oyok+rNm5aRGL1Z@R8c}RH>t`_NK))G3$^2PX9(egB& zy~!)Np5R0**rAuUBF34Y9D53?CUR_EtVyarWP|oJ@*XM@ah>?Mx{DiErLOvCOVoAS zQ(-${nPU^ldq78r%Sj3!fo_*?+uDFcwv=AJr0*oJrWf0+LR=8ye$s*pfi!m5()nxt zJJkMnXc=)GO>FAVMQG|vAVvub)060s)XOg-?+KG1VTE!GI}B8YuQ2~F4IQdEqkZFl(HZFBeu5%xSW4Yd|WLS$HX2Yk0vxwoJE7f3hKt^u|=0-3nxx9(+Qq!_>6!{z+HcXG(d>CB2%ih3XY zcfUH@vCh#<&tU>i0)OBTShY1t=n@>!F&v1$$~qqI{C8*tva%m1+OKS#dNMKV(Ig}A z!MUisd}2~JKb7w_}_bLpPzAm=jWmjsh_Y%_(SA@G&z&F&q(aA zp{NJZ8eE0K$!U?yH3ujSOtrMMaJB`jn9 zqwz{+SWt<9tPHDme(P5>ApQkrn_yuq+#gY(EV7}oF;pmo%1UEH^}8AGfaAljwCv}E z81AmI3^MJe(zc&Zr|aIO?y+}sVaJ6(4?`nem0Y0Qc-H@!Z7J%uJR#DdAh8ytA`aFF zz~!f+m6koOZ zlI@QAXIw+qcbc#;XF>A9q}TF8waAZOU)(mesm?>>Mm3T2E@ z^=@EbfTw_5=Zwy})hl5)I8zXcoAR)+f8|y6X#Zm}f0Fl)W}XKg>&c1w3z~XnF425< znYOkar>TGEGn~&+XQEpC=gWqMaCmHp8UrxQmccFg z#WaE8W?3-GTjNx0fec3zWhSkXUH0#|_<7Ep$qmZIy`rMGAI{?man%2m>*JJ-on2T& ziBh4}#Wb7}1V>F!e4kGc{aY}AcM)CC5J>@kPl)JFXzPI_z7WJ1x(13Uo%8^cUcQH_n~7Z{Lx<>lot zXamXPcFyAA{IioQ<*C+wirmb!`h%#l&GXME_PS68%=4U`8Ao&Rbg^xf2YG+Tyxz-w zqkZKr$$g`4hbSk-(bdgo<48)&S$@iYf=bebmAL;KW;|_To2XX2f9r7ti(vM@IKvVx zx6;vZwx)Vj6wkM3-kSQXI)^QIB1lDDgB}7J#`}3QHR3LO^HwVvyzS=E?VnP*c{x6B z15c%UXsz}R0%v$@A`!xRtK1y@*@h-{k4xY;>EU6@uk|IVqV|E`9EXoL`TrjC15NK@ zXpfRR&EQD7ZCv_nc+yl=)~$QiTEaf?qT{f^$=@&B_H4vkt*Y%-e*Wal$?*I*cApBA zo7eAqTU(Hm(;Pr{c?Vl)KmE4Q`p+-x>q}{@baJA&Q=1iEj}z#q*XT5lY1x&V`O%`H zdz(z6iLKw}cvUZ}+40NSEgLqzHf*dJy>xw>FXuORnWfpE0r{wFERG-$ces?B znV#K1a0^YI15a6q!Ar$Z6Uh?rhj~Z)Ej0+9@Zs1vN&%6J{bsCXdrGjt-riR zuv7Q!4-at%{w6XoB&9@83%-|V6$J6KfpFL&GA^OF*h#zu+AQp`)Q6`4^9hwhnX3zB zWMGK>;gt$RQwk)J#Gxfb8y@cuc}mN>YW4n8%_F<17^>IvlY6x_F7h1tf1EoL1ZcJS z=qh?SqC%Xa1G$$lv|Qr6J(8}u`2!@U=#rw1K8eQncP~%ww#Op}zus{@?svN1H$W%3 zhcvl{|1v{ZZeiitQ*YlMA)zWIFM|(E+#Y3cW+=<)F0s9k$bj;&K#;hE%8YQS+);!~ z>HQXx$nlR);22hQ-M>3QVUM`@7qJF5Zi$3|n9fCqBs(7|aV6cDy`t4lZI${i<Q`krB)z#+Cp7gz*QkAdkC(i{UURhv+QBJ=Fp_>RM7*u@T?9Fl)Bb4BH3CAGI0_Ai%r}?*O>gpyJ~K7nDyR%Wo2b< z2FU5@Iw0QaHU~|AXjTJ}oBU?-N^Tv>1n)gznSXqSf|2hB^F52yS1^g!jwZa{}B}{)@?Sm-QYfjP z`3ZK}s@byJm_HZx2Du zL@?A3!oY~tI(``qTcPqMFbo1uT>(@!7cfm^wumsqlgnc&t{7~Nk}1Y zkS`oW2|r~+LqpMk(t@WYWgstwJ-@nhyj0W`mCOBp4<3&jh81rN-0G71Qmx@K`_{Hw zQtGcQ1hZ@2T6;-3OD+W1ly>QljJNh@z4s~K^B+?)^7MELU%1?djqJxo`_H5tzEE~b zh0NEk@v}Z)bik6tI=TM5j5zg=5CiLk9}@F>Gy}?47VzuuXgg6>?a4@bRekgvDq>mwCa#l@n&pWg<4VCAj+%}wm*Plfdpg`#)B z*P;OAeLo1^Pkx|ACV{KgoFZxmutHHgvhoxmrk#$PlOa+Xtv%=>*LqX`Mq&_13%G~q z3W&Bi16zLQB5U85`Zm1?cWu#oZ#k0B{&}9mfVXH{%Q;r3{}HT*gEJHIG}?b? zjQJC~%O(dthL?xu?pt@sN+`b7O0+~YuAq8dw0~~weo91Kh*u@ZIO{&2NK{@84kbm~ z{@}qkFyY97F9My5hXNL!D8IPPXFU*f^WHs~((5^0mk8WT99R$A=qLep24=8r@El{%h`z~4rqE2H=g8sX$H!2yiU|J;TJ0y`Q%LQiP12{A zw}PY7J(QsmvjHVcX&X`ZbeO?OcUjcPmwgTmWSa>620Vq?;Q~%tt(v) zuQ=_rU|;+2&B`;8AvwSHhqI8|%wnZE4nxZ6?s>#XAQZmP1(%Qv`c=-47@c`9URZ`n zhXZyVx&@Kr)Ks`FRV zJ@@|V-etTsR9y?a-MRm~Km8w1xvnsCmz+bbD!DBnbD!SEkeH{-1X#VUi%b5iK~3j7 zcI_EZb#`BTx~~F86jG7jxShxASltZ1gGNU9g|v*-`>bUYbAbg#%b;ub&#DrlMOud( zTOz}nO;k&F*fr~~Z>Gald))2)excy*^VTonG>*9geLnk}xA=!Vsr%r$IQjX|O^e`E zHp+df%v;S;_5`qST^8CIyZOz2uBb>FFOK?>8NV40`-O8aFJCD=+Q{BOg)f;TuOR#6 zm32OoGPybOF+*?lCaU7Md_!G8hkMU;3{Q&tf9oG1Tkr_-wrhN{^*v?1);*lpuI-WD zsq7NzXI5i7tm4UbelHe;%46;O>Ae`*`CLLCX=f`_1{afx4#y1m%fX7b3`DD&U9XxC zv&6GXMOBD}OVB43U1peE1BNP1^^1TMwcxD%tn|(OmYVA|8pO}#ufN{u*w1#M@M0#t z%ApG!<@&Olf^*L1XoxFp+)ml#kg8`ZU3r)wb?!Moe+G4F)oIeS;t7p79frUyr0J9L zS&I%|S-W;@AfH#2us-9Y#VX$=(K2CmdS9!2{h_1c^kI_ggJKFZNB7<%hn+6s;f);{ zPLI`nX&fb_#CLVs%!JR@KlVIK<16E7k-1ZjML{d`TbK448$CVGL+{UXh=M{<;!p

    T(O>EE4I|Qmw0nr0(m)Q)L$T}Zj>)v#C3SqFoAvyr%Po4kuBX}T z{-L$Pq5KlFe)A?OY)n)ffhw>zLe=@3viG z1NkBxhh&`D1_&VBEc!@VdRt`jU4|LV2!#tQ4H#fyrOhK1#m z8*064jGUYBw*XA;R{^0(v6?B5JiqNGU}8U-Hj&iBS>+wT-H4)aaU zZ}_}Z)BC9E#mr%;_~F>HvMJRo&+Tl^(s^WV;ZcpJBk;1<(Fay^T|bQGCiFHPzhav> zw3k1B>0q+onNKUeQr@v$x#{@RT()+#t7|Ns%i7Pbp3qJju+FUHDV|J<43_A3wA$a6 zMULCE=#qLr;Z;Y+ix5c;b^$SR=C*yY2RSv8uWiU;7UvH&m(?G>qZKjcx}4YTA7s*? zKbA>fry539XhhYd8%-7Fp` zQE469La(YGN*U@edx=(2#gfDF05fCx-Nn)L$b53FA{SNcDf#h`v@6q!QTtVyZbZkv zb`Z5F>@sLOaZAL?&%z^KFYwWijtw+lJ&uUb6f*{HeoV!l6}o?-HDByNkyI#oca;1C()gNY} zE&b%y?tacseS?KPhVgs03%lq}U)r$c%6(D4sFiCs#kie!Z5j8f*0P**&5X?5_4t{Z z%~p=i_mu7%CFSq??C7+4eV=JvlE#S>9{J;ultNqMJt~iwFe+Og4SDcu?$xc^Z%xhR zGdAoLxs}9`>?yKOvy35i<`_R3Y*eBu8Is_i3=azU5&}q z9~yUx5iJZmaBFcm=$cLZCz-^YkRtzU8~0r7pu z!#-xliji4O$7u#EnHIL<9JW^MY%>Isb`SYgZgJA&#t`vB`OPL1EOCxZ#(f>lzjZ?DX4b`cF-uQ{r)iQ{Efa6jgK9siZ5QW zy}UJRt?`yUds1J7+~eQHCs@`qQlb{ucdLB-qNQf0TX^bc9_}u&t##Li!whEcXxhH1UXz8h61<#`^2i|^d0cP;7_!4c_`$8ut9_4JUv zo)ruJ(i-$7&-vL0uayz>+e2~=uPArgAmL)MF} znFy0oeSdd=Kf?3{Ns9mFnH2N42R?9c#5Z%VEj=H%*OYM=F`l9CQ&M7{HI5%E$z7@r z+P8fwuBL}QJw}I-Pvn{5nC1{OyWWM@-#W&RR_EI5F`)|Rj`LQlxbwCNIolAfs|vG z_2<;x^>P0N?yauxx3ffSs4KC1aEM>sV8NOFF{SEU_Kaz+gqhR!kSZhp{KH4g-%EWr z9;Nz6dYI%m$@0p6Z0bnBOyFm$EBXl@V-jQjh1bZZ1@7FVk(cjO-k}&)dF1$1Gmq+P zuatT(jVEu{hlj4W6f03u(giy zj-L7_F7JvMc?-_gWPW}tw?MP3ySBD^|G2(kLjj{3{i^wmJDf;3QO z({L_Kw~8V0ysM~l(?jhOidlv?(9KhVeXotUzR8|g6}MAPh17bhPc_P4JFNGS{!T}b z2_3^q_N%7)@`?K7TQ=WoNYWLwyr*vz#=9i8nCD*YjQ=J7@DZtLr<>R}MEpXTJ@p4) zma0>Qs%jqbrvBkskji*x+Cq3ai^Y`k4zP(m=I3QaWUK)x+7aQsSnH#ImteL z!WE%P5}o+dnvVK#j8&?^(U z9mTp1o+5SMR-)8k8^#Z2i7^P6!>EOBFJFp$ItBcz^6(XGo&|%(YRc_HNBjVTwIJa+-7=;_ch7Z)-bj%yd{5(05sG0oJJW`TGoBF zmgcG7QumUs^E^k#k%PO_T{YHGuN(2M`gZxVPwt4^*3OKnj?c_1%|l;(3O(O+Ej-jz z#mqlQ=o97bD$BQ$eBeB()1RFy9FgbZ^Xn{X=g|F3(kdRtp11c)&0e7 zBN}z&0+YaEgVDcHl%Y4HuBl{Yy-AkKc5OEaBdN7@Dl|V22r{wTruqwT4S$jfTW4{J zqEYAD8HNM(ocnaxIeDV5XFl}%qv&bu3L=-!ECg+(AmjpKVw>kNA!Z3Z5f$q^meX)ZjOV4 z<}qU%{+1^pEZkRl!-w`iSGlBDPcgY2dEPtuRXTE4eu#K4G~CTJPahG~zWQTcj;B?)hmPs^}Zaw2*BJ`7oC2>aYS34nFqC@ zXN#npcUAA@bxO~uh>TIaZRca z2+>EKMvhNA%LNwN{9Sg86xFHuy6-i5X0BeAT6vvC+Bu7HYp!+3nV7?$zwxDntWDP* z@U9ZR_i>BPjk?{rw~~VUc$74Q&YmTIwThh3@sO|icIRt{#f~*A(|Je`{TC6f9Zj~0jIC&*cI>7(7QXAnNv}T-P?SruX5t{w_DCp$K9>c=ge-~ z7KU`TNPb-yX16M8{pxUwjw_^kJwwFJh7X;l=4py)>P$QRbGDwdvZj?);xqppGg8R} zGr&PLp|L-qYx25o^Z3J~*^$=H$EP&TXTKuT`1`C;*vOL4A~&U>_*{d%KI**Nnp%;J zb3ru+1Zy5$j*F(^(OBucQS~>5N;luRZGA0a=z{+0Q+Wg(C=Z!=wS&%Npb5_)3`!{2 zMDtgu+LbqNK08U&XR(@j>RDN(b5o+I7;W4A!C<@JLK*)>Hc>J|2n^gfvtz>e{&oVO zV0+W>;%~9_{HrI4_Bf(wJqKJDsN2^bhqrHLvEwSo7OXiW5z z@V}dzo1@?p#3HJCOPsrQ2i~py-b?tm(dBOuweAHLHH#=#_zJfQj%kRV%-hFj{)fXc z_LdmmP@>FK&k-eV?Y%EVm);;x&m#8Bvts)LwA${oS2I(oe&{J?Wv~yv%@)nro#lF! zrIW4x<+O`-(mji~;Z>($>^E(?$bLhTKW>K#pNh7cQEpIBj(+%A$G(mHVeh50qYlkg z$Xjsk88NO|*A<`uxQ09#JkzLXlTio30U~`l}qNV|KAFM7078Xk=?0^CA8yxK& z_NNb*WZu6&j~!cj_;x8;mj{g}_a$7Q*(^5=6?p{qU#rF0zsf8}$>-M}%xgJosIZ6A zQ2pMRa)5ACx2))be5l-aqtT{v+6XCT(|Wpdi9Cz5BtyAigKTO6*zP!ZBAU(Fx`DMH|zDrA?Aj~z{~VW<0loQ0@+)e zx-*T_n9`Y~Ir*Qxy%;@hE1yYsP|iM+?aUxYyr4q+>`7*C8S1^o3F&@DM&Zn@;s1?; zE=-xEOUcQ376NX)xqL6-)@{@^G3kP}0@N*G%nTKR@wFNiGN^Y-s&U0Z@pman2ha@> zvWnT<7F`|LO|!n$uJ1Mkg*xf4WVLT8DE>$jYG&;<)K%1xM$M?fC{NyG{J!q=UNJe| zj#YE=4YujeWddH0ytee-I^UF|KNh==OFGuMg~S!`1?rrvsLCy8s-UJ8ddEf+SwrmVFW zi9fx9%Ii>f)+4hmZ--Cm_n(~XD7&$NYcuV}L5_tFmzq;ZZ-a zHEDM5lA>^aT+06<7xmlxCl^_KNvR}Gg@F}%1LbNVSXOX`NHYDs-tVB_Lxo;9H#1PK z2EYBKocHWZsq~_*=(4%<>)Z{;q}~tBtCiHJKIP`>?bE)~CD_3s+bzV7cE$!p#Z%?m zKcv$f-@VUrwQTD%RsOufE7Z4H^u`L6cuufi@usF9e$r69GCpvEN@LYkg^<2dUA90q zZ+@F5#;*^KJVMLQyJW@=V+aa!MV=O17byCb_;Y5vbQL(m&WTfNiHOJ^J}<@m{c5Jd znw4-5d~eOBpLi=wsX?DA{RnqCV&n&QEy#<4RwZXMZsdXHg=Ua-ur5~br4 z3cV{56>k_O6a0Ly|NF{cNIUqDPE8=oc6;j7Y)DK^%hEPYE?wFO%+D7lvd_|H!nmUwGY#jcfqsm-NJ$V5O z9JcD&OuGNT*(_2(+O(R@mxrTVUdE|1NB3C^cODP8aZdk7S!;3)cd`6y&eHmdV{{FP zF|t|WHR6l9Ya3rCGYh29yT5LUw%B1N`_#^F#AfrVg_2KKr46(r?+U6nJc;wdF&OsW zZ(JT0R}Lm8E*?o8Cm%zIGX(2~-=s zyWf1sLTibA+_jo-cooH3!Mhc_ADjH;cou?AKGE{gdo%H6!>_BI8-_#}k;k8lWreg>qK}%bh;A zEJET1f+b+U#gGSz@fLFhUbyrC6)4Ap{@Kl*--J&Quwy%$=HbYn<&WJF9elWAQmCkpeVW>sU*@|!r-%H5;ZM4M$G8hAM)mQZ&q zWIrV93?twEbIUlPxDqDJzSC=;eiU8;JjcYug0V1~mPF454$&{h_i{DT>2kLs{POXH z2lUzFO++w;Sl!c+nUCw$>I#+;XgpyF6PDVsOm3=&{Z*9rGGd8m>5taOPT1avK4T8e zP-LbwoPRW`AVAVtHp%$93wft)+aK041d%Dz;A&-H9wzlz$cs>ANLZ^ z2VXN_{5}O*0dH?_fJ1izk}lUpww97fARTsdb=3q!XCRY7SOT5^yEg(R0+NrA5GdFG zRnGoKzue_`O601l*^d`D&kK7?ALGvy#lctkezk3l0dZk=A@dBO!2<^S!j#qDZ?`Y& zs>cG~)w3n$kRC%^@6T!<>ZE0ra?oA_M~RUhx#$25))duh#3$Uv7>x64odV?efVA)J%aseVZ zAm!--67VVQziVN@Oa+Jyur?y$0=am5c`uX*m$rblP@8SAjUoJCa|0FsN48(Sr28MOfauTl5u$S zC_G$2*w;@F8<9u69A%KyoK5fg&(>&!kq=33A6Xry>j$l4H86nj0-w-s=Vi2(&|M9H zwBAZ{D8;i2_VL+it>S~J_BS2{0l$UbL}R4_Or^9#TZ}r%3D4$PAz0lb@Z7ECzS85>e~~1URQaO`LFS3g>4d{8g`Ncmj~Th0tLG+15{xob)sD4x@}D*E2UWGu8&!_!OLa&=X<=L z-k1L9M*Gj$O}`dB0RoeX_)o8C6~CPS*h-vGf*DFo5NqIJNMfnGKT6P>&WfEP)hsnK z&0^Zgl-l>X;l*(YY?Ea(9>`HT#?=ic|m6`zKj@seT{D>>KKCI2}8;2m(dkG|v#b7S_6 zK@IhRb;BOir5&i#Txl~SVZ21i^#0jqNiy|-fgeS8LV&^=d=Y7=$pkHT?aa#sP_~FGjK0 zt<|qPWnpaPmOT7&Ds|Q2lk22!{K6}QHcvcA;+p*sMe(x|N4$jN_Z7n-3dQcDtt5zM z_c1R@{?ZOy`^n#_*t^N!mM@79D6PGBcsc0`ioZu=hJyd8PdKF!#YL;A&_G|z-UB$CP#W)K?-mD8Qe}KPONiuKgpYSCFT=%A1EWH-h4m+;t%oRs-uqRDn)H3l#bs^Y~{L{r?Kg2c%<_TSbPD1v!M7xJRX3m)=USUe9oD0WA2($E@k1{+{qKddSt=_O`|Cs`&&9)}(mL)t?j5U{R(tbt03+92DZ8m50BN_Nq%hh5w z*@I1OuO!2AUa$$@$9!7q+|j&~mzQS73NN&Gq^)lF_LDRsWb3`!o4gjd{+L(F`>!z` z%fEhl)C|4Oi2Tt6fsM^Gde|?zo(VUs_Jyxy9miPh%2yCCU}m7uw@Tv){Q5D}>D5AY z@T#UJrb$OxURa6F=5p)IrN5Hxuh`}j;|paHMxlI>r-t@y!GA_=KNe#vb(~cE;$Ys* za;!6$Fowa)JCbWCYJ@WqjHFte#H_t8^ zMM@BqCgtecLrQaVO>MSl5g!2K`=@XG6)IYjl3#ODQK$`QwC#5^cWp_N!Z6FFTPPaU z8dwPoI6PbPcz)FGV5-}|=W34mX7xfHX{K&f7%>Zh{{Pv)IsA@s%mpKYEe?mL&EhHry-1lJRN?sP?g3ctXM2h ze2Kn1)`ZVp{BF{D{)v~l>CVU4Nbw{{PyqI#6wr)xxBA~x*D-ioEWgWI>S6PthUtCO z<^PQMKem!H+E-hMES0<;KgjuI3=YAdT;%f;VanN=T=k5A_O_hv`wfp6_)1h=_wM^%=a+*<74+|^=yT!+oBmjNcr zOeU6lE=rW0dZ{n>OYd%fyJQeQ<$)G})$ylI5PU{-R>zEwf4O;UD-u}6h`xzc}Fu5jH z`30WXM{LNjd~Fqz+XKSXZ$C~AMGTMPPB22N6BC>HUa{E(+kNuBz7aHteDP^?Y;1Zu z>MQPD7_m(s5(pSD7*c%8i98chd~5!TaMbmeTHgpHB;`k=+E>Trii0`d9gqHU;wYue zPy+3)=y@n^TK`%jswAu@QR;5Y0FrihJfT-o0r1DG;m0@J*>-VK6qK;4G;DVDHr<7T zijkZ4D!{os8Ox~vUP?~W&Uvq&4}T*t8~~T#cq1^A_hTny6(HOMqn-TiVMzp*Ep=iS-{IM9JxbcPauE|)B4smf!jkE0B z?1lLPoSVet&P}}RR@eCWGc~nTgFCd)MJg5I_Ip?Qwf!m4n8kiqcMa82)v9M|RdvRb zhm|n7x>i{THL7u}%+JWZ)&2CDKf<_`sj!atn_l=ih!m9JLS#S&yx@a1A|9|OMw7e?uUMs-`8bRhweu8vMIS=swn zYhQdvFm*~tzOA>pO})0~i<@IbBP~@P)y+U}2|RWbPTvkTU5R&!5M`Erk4_D@S(EJzoius1k(Z$PO+OnT!_y8VpYS2{jbHw=USQ=f`?Fr? z&$<>y=5rm1j-uAwv$6_yxH?~n4U;{xJyQ)E+Seh_cDKtU6ODVzHn1juhWWmJ9xBT< ze*422Yce^ut0=*0#G_!?dV1_~#}0>aZzloNg|GbAgAh9fSCNL5LzlDFk++erKUm2B zvrsq+jWH$szFMAaV(HZz&z0!>1P@OqI{4}7pWQ;!^8?XR2;u|3F917~4gm|148?R( zOoHM>;tL9?vks2dOt=gWQyD?kZZ&D$ZkyIz$SOxoo9RyxDW%Z_X)rtXU5gW3{d9`; zr4IY$ze8|9TJdd&-=YPZxZ6+JIQ z&RlAdASfnKn{_sz4ToqeKAPQ~H{lV6wZ?v)f-GUsv44OzQ2Maf&dycM#C+X+-gl1~ zi9oY(m}xPh2sn(f+<~C33-^zQL)(LOM|Mn$0?N9v*W#N@(^#c?dr3&*$GFYk?e2z( zuXjjM!yajl{R2q_DTMbXzD~?I`$*eZuwO|RT~vvT!p6i`B_Lo2>ByQOd|DH;TfJAC z;qDxlI5xFA>$^^Q%yL^8+r$X~$*8NV55`d-dK0##M#=3-kCD^M#}zZ5ww~w(T?}{z zNMmuVe(_zdQq3&avUW}(9GB+s(1{b99k~%6*uoX%F7fD;cBvtxq~#+hcGS0~&6}bl zn?r^w?K=xD2n!=wEv+ z7;b?&KN|?S0W}2?wpr$Z11edV+*@yaI~`iSJUc@e~}r&zlo zqZX<0x9Iie!;LFR2>HvVO6MM2x6uThRdnQcUiH$U>2tKFP;?n^=wPGn>h-t2xFl^EM_9+H@7 z{A~ZQx(nP(P%o$dh6AIguuSigEF9?kEq#^|+p*LnZ!a}Uk(q`uqG~toUykcX?Yj@9 z5$YP3u2zQvSH`e_-!Yu%>*RwKy2s*SbD=t=EMAWDhHmG1rBJ&8w~BhGw|*EkHa4<= zmI3=H;esYy2e!;kwFGle&BR2(#SBMj;0DhM$=!hkO^F8p=mzc^ug4~G-^ZbNcJ=+`q68bMLK(DDXgp4$k9?})MQ^!Ubnt1u+fa7POj~HcM4!^gnxm*f1s~b zt@}A5?&D4$ZO}l#Kk``xNmgPBwPau?nhvYuC2KOgNO$pstJ&hHUQ`ApS#5IM~Cxff0II(ujtcCNTC3!)cyWz8JrVv zlVl*6p#)5o#51Rz`$I;ZY;Fezy$2vj*k*t3DT89@&On`(ru5zsdPPqnPf~!u8tzjHX-+qo_r2H*LXDbUrBU~Tf-m9MCQ~0E~5615`)6t z!z$Cib8vB4v^wiJ)lneEHv#OH^QGvnXT$x=cuv$|PD*UIrc*xO^Uhi3wW zCcbfD6&o!`COFbfV47U1XJXp0=L(B*4Q3Z>4S9wQHqp^;ts)cZ@eJGjD>oOkEg5

    sWqP{og2yf+ET5e4kIY?Ru%WX~PjPOAe(4bS%bxh71){J_+3H1U*fi(bh? zxAe49Tx5c@+{#%3=ICMqnwJMr!FK%xZ(RwwkeFT@inmO#IkkMX7;jC_AxQ06>{0#l zRD30Qh?p1vw3OAih$2U6*9z>Mwhz}SW!4z)nWdAFy*4H~F}lCd3POT28tRUK=Sofv z`HT{9WUALb)13Fgc>&j_x!G$p8QQN5y5ISQg|yeu#l*6vqnPx%H=&RN-~Ta`Mm8C?+dN_8tHBM$`qJ`>cNX$#QDeAt< zU*T?96LZWzV!+7c?e0BxcB}`adjD3oqHhR`r`0eKNDHvYdJRyrKndq4EDD%M2&mU* zDxii~bc@vJg4{;>*xH(Vn<;H)PeY@Y7sNvQc#9XrAlu3kgU*sEt-`zEBjAQO1lTYG z4^Gq$D;(jw23QeLN`tF*)?H>`fS}vhj9b3k*;OE@Hk`Mz?04hU0g zg(@FB%uq|Ov20{s{BBmga{HjF64{V$Vd#|74!@6olr|_I?_7bhY*;`yQ{3|ttr1RtPXm%{i<*_@3*w@M#YtW*Qet^s<+R>YG7;uoA_k?R1G#Os z0hnMAMU>pSZ~!tIf&h*lfEWR+YyAWZ0UK{_kDTQz{CTf{B{GVwb`DHvAl(CgY>v0D zNBKXV*3^_3kb8Kr6`)x?>J~$%&67@y)s^Ej#!T_6QrEFZQgt&SLkZvN%Y*p11=yln zKjDLEuCkik3O!OOOyR1R*}gwNTipjW?Z|M<Y9KR`Z5(GrUE)nyo z^JRU{P@YyO>c7Ca2+Ep(=}0ouCg5bvy5(AMOuE8<2^0x_Jj^v_n?}R%>^lu$l(k1w zZ29@p1XIUW0N+C$7kGeRk&T5}wjV1-<#6Bd0UpQT5J?HD z7YcpH<1m9j`ZoK=Sjlqu1xCh5J;^ko_Idn+tOxW;Ja1WQe%NDXKf`~z&Is4$zdHc( z7NW01wRxOo;4#B+M{ISB6YcrsA2X9>2`_AwSM1DX<`@dt6P>5kIf*yJK~sr}F+%Q5 z9&Mn#82=0d2im+PLS*b+M@ThS7OL$eQA7~U82e=D;S?vqAm!nyUQ0E5o_pOgzZ!9A z>wRHk(vQzr>?3i}I0y&eN1e|1TlZPv+AN}~K_LIqF*Ykx(RQQ6cK%L!t3Jol^I0>@ z%URkQz8Fj0HXSa>!QD~EZLBdw2ZPT?uM>*2C{8cHBykFf5ihlM8-93aWR2k|?LL~9 z!a7e!1DCy0*mX1R!yh;AUTa3%HEhy3Y5lrb=b1o;$(E+hA#qTR$fq*J@+GCPsh&CS zg|t*kX+8~wsG+HTjcs6411cfFATqPGEO;kWYB^NTW;tbhVTn|g&Xl2BXp}Z7@fs_I zeaWbKlXdOcjX&x8D{HY$xkA|Bx1==6QnU1Kc3BiffO3c{ERi9(FN&}W3NtmRoRyY?BASn-(+a+aR)I^PS+ zMZLf2>;7vWJCST)w0<{}S4+pIX1r=Ltmi3Xx9i13s^uFz05zRGD35M8<$E%Ig z6Ii7NBkvoCNUG+mZjU^QYPjZl6_qgTQdW$k-t4nd+bdn4D>y)pzIlu^ak^b?xL_qQS8KU7sxfyFQWVB1s%T{wnJ%qU37sXV7ax!}$VYzjuW6=(s+@ zYc$@6Hk^}HPHcFmp9=-F5g6koV?jjre* zh)O%a`W145!igJG$|F@CP^nk2$B4nImyxO@UK9fLSebcS@m~wJ9ArEAx?2aQ)~TU{ zztU{wv&GLr%x7av=T;akbqdcaREf%$a$ckX_}G%?RPex#!1bOy6@7EJ$0K^A#(H#4 zW1P>{)TKC{yaCP;YOBY+y)+~I?!m#*D_t^;?5vEe0Lqt5C0{k78eIPZSe~x|AJz1g zUz3R!r1;{*H79!R$c_R!aW$hD5X$ToZMtF)d!J4U3M2U!!ghZTU{9WxREKQS1)ISi>9t&rK-h;VsKsR z!l6@>Wuw*DDH9Lh9{fLqSD$evsl|GEr{-tj=A>()_0_h+D81{7Xz)7bk?}r$T}+ z)|>!k$qFE407yB#pnx_I5$2@2NqW!^=NwLP3wpoH%Uz~G;IqT~g);Ll6OpcR3@GFX zy@vX}E%4x&51OYaI_v}m3|a@Mb_Hpx-1$r@<(o-j%>D5y)qq^vpeMC^sjbu#xpd}Z z;2BG>I#bw6I7BTIxMK`V-R<(eCl(#jkD+9E%%>LePygm#r93#3!<$nQ#1!sva~rfV z&^4Gy!Qn%vUvxPW(NIHCCb5f9GPCklVYDW#6Lyp9-8YcGr9H67UkDvT9d3RwiRS2a zFo99gpqPiPQ`(B(D&)wszpFumM-c**^3ORJKMk8ev1%V)?L%oZ?DlE3Zu1dTV>O%O zx@x~vQ&W3%A_doFhE7gT7fAYh%^SsQv;C*1RM$;;0*9>E&%3?RQtbwEOmwUH>4YCYoSmd`n*yR_S_wGYneqHLv>6 z^U31RyA5iT3%Wk^_g4+V9M6L0i8bQMZ73)iu7(I9CMYKHJ^H^H_P7NIYr~4FqDkn5 zo^C!6k=9JH_$IFF&^lOLWuO$4Q_;FOog&nO!ocV1L8<7F6HPz_Gs)a1d65vnSNugw zRLI#0*R_#)j{Z1caBZu}cg%e^p1gB*7YX$#KBSapx&SZf_0(Gj(V8ahHxbV6kB|tM zi(^xRcTIj41st}Ue=$WmW zcfhJ}%eOQyg}HC(0*26Mv<#Z1F}A=vQr4(F0InC#M`LdHul$Q?*vaT_$vGyQ@#lnp zFIhzKzJb#FIHEd7Rg%%-B8b!!?~A-C2_bzx()6WWckNrc{ltHkk+13o9qiVr7p*&y zyZP9-y&E-_-7^`4tcPsWqf@>mF#A}*?ZOfD>%rPz~ukn3@(?3IVpAKN<_FEj19Fo71Qe^clx z#@?zVmm%w%ZJK}*Q}-&_c$B|JSBeVG*XJy|g6z%BD^|}fbcQ8r`pxMyc~mKMCedf; zxoo6G%E5IbWtb{Pl%1ah-8>nVAJ{y95bzIkij}9^V)*M?`MB=7BT=NYt`dz)?M{|Z zEKtApsH>6IB2>^g;xTslGodQ)7WZ-}UDgg*kPjpycGv6rXdzEea24m~#qhpTr#5bnE! zqYn7Y06_+1Rb3R`oK=GGglU9$A2gmoMQo8;2KbAJNNIrXKnVrtESOfTt$Pn@kuR9G8TAEO?%DS=xH30kxUbi@@wV_e*sJja#|=pLffIrM(N-TKKW*8}uEoaK8)3Gs>$vy-iesQo1|gDHUlHsjNszTv*#zxD{I zMR|u8EwtM5ihQ z$($$MR}wrLXziK2XLMu~iZEC#UK7F8K7$Y%cqYD42^#{o+@H;AdtagnsK~ZvKmx(k z%*-a}*a1cs5UZ`gR|b%j5CCDMMgVyQh;IO$+^K7s2JDmE@OU7k0U#9z@K8Cze*SN! z19ABTbPQ#=S9lsFX7C4qNVvLs-uwjc)J8u)?ljNSnSJ-k%R%uh)QjRh0JfCHg6!q+Qq&@^t8TO#_8v%_J~dg>CqsKq-@Ri*4ZbV!?_e%Y#&Okuf5#ge6VIGFb%X&8nmjg zl-6eokH|tnlkZA!4Va_UX~D@ER6>>76u!m7k+ao@ySMXGc^R+wtu_p|I)4!UyTi( z&p`Bxdqi493A=#mi{~a|i#GsUWrjpeKBFTs=CUPjz5IUHy=Wx`?^o+;)o$5h#fl$B zatwWP@{4JGv}n9=jQ1ZS_l44#B;Nj}h$nRTXvupap8JGz?pfg{y05<16jD*ojoHv8 zsq>2gL>k;yzyg2#2oIhNMqvd2aSvYgC6=%$K>z=;wx-N#@Z}E_3*YPjtQCSmPzy)^ za=1D0?Vj?C>Q@BmeRslSSEDO3~73wSj<|k?{!9R6%Gxg8y z0kA=*5m_?(1X(j2TV4`l^n^x$nN;m3n}Sbdu!#j$tf=+TSlFi2$Cy=f@BL|v@M5Xc z!bDQF$&Cx16O5R{RUg`Gq^ayvfM{z!T-bO&V}wJ?FH3F8^R~s>b6EPSH7ic$K?<7fiEl)Q%BjMS|6+FS zN~M&kE_L&B+mM)iqv|}1_orC;K({zdDP&qTRaLM>*!(=Xzq~wLr>@z*n(?ZDQ>s~T zaOoARobRx7?c?Qv^+^5)2EV1)%P6bAZzkTeG6CZBV?TWDknI;*`x2zvQ@AH?>-!-5 z?rWmReBHVTkp%WK&xri1+mxH}!DP58rlK9gOJuEgBB4%^%N@6hIx=-A1vy5xt&p$T zw@1mH3&yIri0@g6zlw`zb*WV0ZGNg?Ta)M9xNwq1bHgsiwMEJJTi}LZ(y*v*JheSq0RN_g$SdVr-N5eb1Fnqw0 zQYm`+^aq9^&;1&aEYZ9(9v;3H563s5e245o>7ifTw=AaI=#c`tpA9W;1QZzPJ#HmNZkwr;7)z;`^u6rR;?Pse8ynW=# zyw?3a%up`ipUE^oTqlppqCjjwChVB4;G_z_EE#`Tm4P{b**N z@6{U^-`0nHT*tkUhuQz_pNNQ51+gLj<(>c$gIf$BJ&D~GH6cF#c%_=3J&u^&bRDSylPqR6t>JwH${3bF{GH?CCiY?7CTpxf-&m&`%6bP$7X;l|7pK-F=wd2 zk?*YFbuVTLj#nyE9I~ZDVttqzlSzE-udp&AopkabhC~Hvl{_7X^b7?Jc8p@x7kmWd=e3L zH}N_)tM*z{9*Q>miYY<-6Q_^UN;X7C>HYQ~1=IrLZ+fhce1cfrmcox@7rJpfcRTCFF=?bSat{a$4)s`m@x*`3tAdde@6prv%h6g|B^`E0U5nEzxQ2wNnpq_8TkxdEuNltTb_UG_P)0{`&hd0H4sYwd_mL`2oRAF5fKp(@CICQ0MX;WHy#L75qqE$M$|Pk1rN9fJk2dFX_4N6 zf^G)n0eu6MJrG9u8Pw$=;1@&;;^>f_{ySy5_c7Q~3VMq{&`7VFwS@V@N!Dc|x=Aep zgI&~wo^xMMKx9U2C5~K*Sb`FFO>7(AAuvth&|4k__aiy`l|J^Bwcj1z%(f#}=094? z;B4L9NA6raJn9FJ{qvhN;o3$Y7bv8AfIMkg0?6FjZ6kv_6k!LLo_O9S_MYEKq`uZK%e zm~c10rGb_YTugX{LT0P%@3)c@^k-o=$}N;7yI4D@VU?$T4`5a;NjGGtEbk{73-sHJE z;qeHr5gVnQ_s5CSh70mjuL7kfX8!}8WAP$Uv1g!5{c`EM9DK%Mbuk8qwDe{3$xY6w z8vc1+wi(YLFUG}J2l6Ok9jZ!6 zh&USe;IS|jZ-P=4XkU@5Qq*bJG4HFtP{b;Wz2el!1jwrH*VclLU;X#xtyeD;5mcNx zr!2vVFf&CH;aMJfZ_>i#yo5ZERfF0Qr`_-ee^qSP_r=%h@sMJHl9s)Sp3v=U`S5~R z6K!@W28bgaFJ7$s^X0I1qL-?DXL$azIGr5&R4YK75XV(kzaNT@jkczunft1!@k_3Z z(uI-*FXtP6!Bt{Lkyb$r&j1!k{S*^re}xFE5VaxmlC#kPJ{K2Yyxd!^i}j5tYHmI$ zsMe!vUyFJJh|<6BzyVYP>f0?~J6!ZX!*BTtrFUEt3$K)o4n{W2Z%yj8PpK z^65}gMl~T|c4)_?vb*0(rBrQnAiU&|pR93_Y-RaF-MhdkjdKFTNdZTHn=*Agd9k5{ z<9)#g6lz*pGgDKE?L`xxu-~U?|7F$i3CBU=kpB=yMneDNVc9%>rBIVGI&q9Ng5TJs zUk`Ll*q&b2TF$y^|6%|+UsTMYBWM0RFT5?2bH)ov41FHjZgAUqF}ZKHynqb zu(*o=c~V=2vsEmHXse_n+t^E7@FjMQp$qbNXS$(94;OY`h4_Ll;`b6;eE`^QjNFK5Afo$qNq6ryj{xUXL3@yFt>sEZEo^Si?BLB)r1H-yRaj zJ`1@Fx|)6&)j5yuGnCh)z~XOrwpi=pumF-nKulMcbtxFxA$UL#*hs>x5pTnj!N2$v zzj(KYN>E{gwif!vSSGlVtKt{jyIn7n`&S!^f<+>K^oik9ch)cG(H7Zqy%dq_UFd)K zzL7A)eDf83AyyIc%&Gf?uOd(NdKGDbi=6<4NI6<$WWR5QwKrs+XqkyEpf<*P!$b--e&pVq7Ry-wlB|Gw`|MwM| zV~cABsW_n7I98$}14kk;%0CG0`j;d_oc>)vT@H&P`$s~IWELf|r@wovy1BDOx2xhH-_rY4s*J6MhNHi(M74;Jme(#Cbt}^%YOTLjg&)rVNe} z-fhlie3>*C3_V7?d)*l+Rxw@dOq>c0?MxO>I8$6sA+rMRNk_sp6PT~01s@+9cb6Hj z{NzJ3A{VPT+i#p#$Cj^6V2M0R$>19QYr~37_?V>&4?y`tPA#?z{gk~cCaL zqMgcwWbe8kDB!IYcc(i6p=iyI{6yjO`Ua)kPyG%6-f#>cg4@)5{^sa_$ZmuL3A_aZ zDBYn7p1?+C6mLpfZ>STfP$PAdr52P z3D(YqQpS?v;b0BZb)jpd333&b8xJ_c0rYe%3$sb=KwuYocB#VHv{uKnA)3^ZrwL4y zwuA7-mD>8qtAL*HwT&LdxPj>3mtt4M2KfQjS|sX8jij;3N>#l&gmwG^83QST*2LBf z%W5Q}n!f;%w9Yzp%Fnv8#PkBQOcguNw>Hq184iK1CP#llMysis zSklG%CP=)BEhS`Nve$O5#0FZ)m-s>21iMPtT%DqY#PHkO6^@!aB3SsshD{O_xl@jp zA~7Fc&f5&~vMPYEKNfh88Hms#M~b^Ksv_R{!ZtIG@{=HRps(r>ZI1LtS*3<`=XML3 z6kXxIi&=Sp1aThcDkF>^haYKXKjg_2K}nCpkYuUWu-gp=R0bYL7)SHPFQ#JST>F^Y zFS2SAwsCaYnP|68*uQLHyCePm9a@L`uLnF+ei5;A=IWRZ_1q_qN1R17#Vp#QU4lJ1 z%6;JXd%SBBJN|Ndc{kF^^b%GiJT5q;KXUK__keNc)J#jki}fre9;cxkp{%8H#Lpc%~h*jMa_4<&U(EX&LHHcWk(#7Ds@u92*r$ zJ=`1gioWKH@pw315g~bzu;r~tpl9fy{`ZrO*)<$_un5n-r{=R9Vu%phBCb_{c%DB? z;F(VD^A*&sT1oU1u?Z~CYfim4@~R3iMynQC^dwNi4U)>qFEhjvGVmy7au_r`5)5Ej z%`5Tt^uth&b8i=k6YZgHCruK>B(gv>?|?I-%H5A-7a)y zanq*sLsk>XIufP%1aH zsf*b*$-6NjDl$(qv=H{*6ccs5Nq;ge`kYJV&q>;fW)d|u)A71DEiEN2KcB|#DZn-3 z-5s#>xCsOa%EE<1cO;);2b=1i1yuc~h`CyGe`@a^^Zu*7L=M$a<|mg8SJoK_`bDVj zn^R3_U_NqzLewH|z?))8?zvGGSYjx3=<53pV#X_i-VJT)2>HlLBw87Ucx17ci}B|* zpLCl_rxIv~0mH5z1GBuwGtOSV`EXZq4eNfuggmYumFQ>;u1g7b$;EaN+s{CB)c%z8 zjUlTY_AN9ksNOpHjZpfTr>1MlprNalFRbcsPK1EH?~x(HR}K0_e{9^$VrPMxZ{S2q zS@`VL*~}n4h@sfjk27GbIof;^<%sHjBX7E-)OLJ7m+|e#3FZLRR%c_Ct@Fo^k43x7 zoWJudS^h&q<1)i^`0t%Iad!yg;=~8$;0BS0)CshBX6>?PIef%hdP$dceO>;L@_}=R zM@vShIgo=^F+G@o#s#7r?iiQmYk7K^Q<8ZmmWV_u!uk9Cg(_7^T?+NJa&ENRk1VKL z)gw(3c|}mvN(=MY(1w0;O6R*dDb$x|+|SQ-XmMwbr+Hvmsiw+EGuxZ&(V2Pm$Ao5T zsIO1!1%hJJA~UItzp1#F1rh;77iN2O+O9%6OS#Ksn-@v@;jQKkt}+HRT@XgPJ=!MC zC5j|^O`H11WZL0}9}=Sw9~F6&7c4$O?VcuN_FKK}`9HSP=p`EJfA`fT%rlt98^DOQ z=*tL2IVMv+Q~!xCS`_BYgpVQksMTE9$R&VBF{DR2%F-jM27}8B(>7>P`>2ZIWF^8C zPF`EiARqT#(dBHPQ8s47ULh=&Q?cgBPeT7h2hJ<{F?~8i)+H7Cv)|vT0>uX_&79=s z0?05_uc*}H{VD_lylK%W8wD_s;_`))n%dUXNVTYPHYiEy2hCqtyOHyuzoiCdx71A1 zY*q<|1v}E;MU_#GB09qUr5XVI4jAw&7eRDaE@8e=-FmMRK(#lKGMK)(^=PMTv=Ix~ z+`_S-t`C{Y%-VT%D6y_xTndkC?(K@>@5e`3A%9yr%X?8xyA$JP$AwgaN1J(`Q-XA? zjP^4#(M_MuMM+qgpsMPU_rMru0`Y0Z7pHv=7-e6Cp}3t9(pQW=481y*!lqU(x#n{+ z{?n#-u_kWD7<#ZY4IE;TW$+P#$(ien&1&*1?t%aTN1g0h7Zrxj8P>TW3`!+<{UK%* zXrFbA^h2nM8rN>quNJ@fSX%|*v9qj*DUY-HpvdzUvH7mC#DnX{rUgYN`WFe{MS&N^hNpFqBhPi~ z1(hE$o^n2&BfrMToSK~eXdEAZ^4RI>H^wf=IBf3-55XAmcvB^E*VL=REpA*e`asqK zs~z-C56*v6+r3EHB4$jPtZ6A;NH!Lb7D;7mDtY|{re-x31=Gk>V2Ne?q1#`Hw%&f{ z&hU?Cyp3(4X9Y?FC|8yJuHkwaRkDc^8nJ?d<9JuSH|RC%&Vb7rw-H-pbWXn?kSQ|3 z!K@0xRhP>4_mt-B-kqLQ#Vu7Gk4a-eF}H8l-AzgY%(^PjKy=wA0&k7Yx3TvJ#( zs_rKwBbLO+oS24pO>_LVhmmIBGL@R8c*PyK3F9cp2$uFhR_ zrQ=oitIf*M0D4ubTP>tid=%X)}Pp{}b173^EzWiy}`DY@2DZN;z5h6G!xbhJs=P`U6t&JQXeqsOqr+U?lbUFl zW|{$|q)PwT9h+k8BAMFC3YKgzUEuse^R3SH%*heyCb(jQiG2CRnmXbW70kp1+z#m^ z`%T#e7rr+A15#)$gMTFUuf!_fwI`7Sv6v{KbHL9>&R1eF*QmYEHMDxD08X|$cVUkg zan}A1dG8%h<^TVWpQe#<%#6^HY>E&?bfRRhV~@zn-aAysh{`OHy&XG*gc6dyMIp-G z+57uAUhmiYGvB}8=X?8o{`;Lj&czwmxvuAU?8p5+=qKrtUETKN%Sp}qa{=?Q=YI;nTayPUS$;(zCRK$wI8Pgn@D%4~;dKvYP9&-J6e0s5J7a z9`_uxNFwK`km91)8lAK8o~ zuFUqoyLQgEI?;S?@>6eqV`HFZk#xdI=cW4-_7*A+Ye;y^FBoerA<>-Dy1GL^GS`jH z%$WIb^mXW_)Xf2c-1RpEs#boHHRdJ^_A^{sQ+d7}t>r&oKS6X0#4FLi9y*!DQk)i0|nDOvJSIwhf}* zl3B?3g0YEDq_W03x6U!)pHU{5*LVmCFQR|;=^lO9b5bD~z^4OEE*NV_vmZS4WevJo z!o18xc%Z+KyZC1xU42~h#Z5xjOCW@KczrJ;uZir5Y`tgc6m7IoJ6+SvLHTBHCf^&; z#piq2w7H`|j`E4Tc;z&mfcx{*W;))gV&B| z4bBrlKjOVO`@st8M#amhXIhr4$vHz>591wv2n^vF=QuAOL9OOo)WX*M>7u829{JiU z^xjP>l4!b5p9J}cP>6~!CC_h10Ki>%Mi<9*OG0aA5?eMGqHni=5lv+&K;i@iny8M8 zSQY0=Y^$}JOmv459Lm`VylZ`tFpE=qIKb@a)l|zO5fbPi{m7qIZD`BaJ8%L~>uw*B zx*SQpO>G!?+B!N!$br`l+Dl*mU3q6?uRN3ntQih$s1Q}gN$n-zH+Q`Tt?T8P><{~I z%CID95HGt$Tf98(Lzv7PLYQVgAjm z)LmXV=t{@Q%!N>yX&92LOBsmeawb2C-l2r<&xy^K*NNBu6vD)+ zC_m=IR*(Ee1bHL$l*b13UTHF$X!6YfISb*BbqaJ0e`5b2hh&YDG7mpsQp!*zTouBd zRf6i_dd%w2SQxm3RI8iVk6nIMV&1N3w;g}4Y44`8s$M2`;Mr^fLuY43@XC4NgERZb z@|cMp{-7K&x*IV0sq;3Ptin?H-h$20`FKq-xD0Y^%vLpY>0R~`vKc(C+sk7`yv+5* zNAshYmz=ReQ^*IqI|(nS=w$poDVrKC7AR=u`3P=a&>;4gdUK`vEF-E^SU2OR;)y^+ z&mWX4L)Vj&dncWqbG$yItEPAG+(*eHm|@$j<#wCjM0l@;fM6XRk#W`ZjKyvY`mQ~* z5M~z_L__k~TnZLWwW6F0{X^ih0)QtMK&(hg^6SHB;Q`q`g>!}gz1bYJ{oKCY`1>nh zH&{JRfieiZi~sn1yi+rmG0z@Q?gHVIe$ZzDsJS_HhSp_FekO6UBP@b6Zh_9vQM%f3 zr23w5>-}J5iyfndrb^u=@eVRX?9`xh0d4D{{;vfk4)N$?&R5nf+S~kPbnYC!S$cef zm*k!?;lSSL`Cq-lO&;MVB)m)S9NNDoHSFj=d`=QuUT<@6kNEuMXCFllEqrf#oPHcO zP5yRg03|AOZ+S{H>U3&!3PoGt)-Rv8BjHWAhLTG~IYf@Obzrn53ecW@0X`}IelZvz z&K!Y2n9XR7goFeW0t#^;xq+K#iLp4MOn=y&ewXFpnySMmd_o7$o& zusCzQo7lcBpv2B5t#j|$xyx(YLVzPSY!V-f5>a+1eKDcbEP2G!{s>>nL8Hi4XW@}goY@SB1h$5@=hi|P>gdrsyB^Xja7Ug>hzq!Rz&gGzz zCf>KUSn?@66*i)Vb=h*^-DfKL8gfGKTc)V;%+qrI0olJEDEiB=8#v6w3MzSSy1BVQ zlUh0=@t3EitEB(8wQ`vvA~HrdQaoj=+65E|#=iAw3?AI{i_L!pH#LE-YJ5=@fSDrm5cpLh*uT6kqp=6oH=|~_{jmSx~vFxRYS?Y+am&_R4~kDBS& zARTH@KRHwQxj*mh6E>bCF;9QbezS0oiaTA2Nv4a$4}UFlCEQ3amHe(n7Sqgr1ePT7$AVdoBv>(i{0PmGCD zOfUP{Sz2~pN+bzqXqA|0-Zy6Ui#POo@O#6_(8GAJDFWa`H@1Beiie^74NiNo-BkuWv2>`pnc4bG569Ml`~H|Lt76YQSr9v+T#G@ZiZD*sz7OL;?yu-D-A7Lq z*Q5VuW-i)Cq`$p^3S&l0-};MK7B}Kndj}uBqBS$Ry&hyI>_fDrJXU{jHt?srfQsoN<}5fGqx_29fTXNlma(gij2tO)|pPL z_$2$1)LNumZZD5|Ak5UtAJBS(cQ}TJWKxH*;|i+S;H^ki=E}j|v+m&XYqvR>H8M({ zZd{t~SnZdv6Vn`}-|w|8*E+r@aW&@U`arE#4Qxr=^i*Edu1h;SZC72O~P zX;74pM}3AGG_r@L3qxhleTl*N0A9Yq`|1J165kK0sjKfExQX-#DPsDzZZS;>q_2(1 zCc=!X9P1oO+lnExafI3{=YuO2Llr>)eemnK;Q(dam8pWtFkOB+^OY-ygaSjNlEEy%*f$r)}oIJXX* zVxWtL=AUS&s33Kp_3nu|<#;bvT5QY@PIi!zlH$>>FB_xH&DqmW{}T!HcGcBUE)n}c z`AfFzO*qU>I(5QK=%pG2-h@tqRQ5`cSHqZWBmlcAB?vuGz1_GRUY{w(b~g&=zLG|d z>Pa1zBT}KfFBtUtII~2opWFJA_HzXWUEj`}Ci?K}QPTdy5yo<1uj7BRj!K0}P1O*m zI6J=I`rfIa(eu6PG!1EK&^1pybtjtkPXtWrhMrHc12lDTm7~Xc( zw^051k4h?}9xGo#s(|_ze~v}Qk0p<9b@B|CPAgB(J$W0F&1`vJzc`ozYe6e&DnFbNkGg(%rbBZxxmk&10W~zGz!P8Gn?o0M~t| zz|O+w>v~q=-PtUUFUVifr(XzZG%Q+`6;}II%cxb;-S|C{dUz+gZ}sPxtgwf)8Zq;W z_Iqx=^X5dT3>T<{09Dr?NXm%z_6Df$$f@o1xdG)wae4&sVg^BW@i~Jq_r?&^j<~`M za)p@q7U3aTe>i@TAv;e^k`lIjTK1wrwfs~9!G${_9e0}?9X1A6T6IQmiu|JdVO}Cr z(@mFhpA{IvR(^^q(aO9SxXut5#CDhZgbzcDsV+5BvHQ;r!eU0(>pM9we7XzpNNbCX zS$-l|G-iC_wv3>8;$O1#d zU ze}9g{o<8vNc0WEU9V_X(7n}Z|`xSFM-yN}&6e@N!IKu4s&;o*ja@N!Wo14@!4K(%E zj{7;B%s)?gthj$VK|_(V7~iC2<930*%o5)(hTn|fwFxz)Vtvz==77!JMuqXxq^JhIr> zF84C_p+`(A_lL@qv@$vE9-Q7@mPKdhZI!n#S=nci7 zH=qR`zT`EX5(FHiK;eA}n9upT$%_{~{(O~;lnT2ez9OA&eWEvyOyv6xu&aD~ZTt50 z1pL<2RLtlBl%!P|ET*22IT-u#(xhWW>7KevQBy`GH-=&7V~?p|EcbhoD-Q(_Qc7xU zSisy^ZgUwiuJZjtZP%@H@19&ZF`p2-A-PNA93F&B6puir>SD1 zrl1%nv~sCd^>okK69_go8T54ZZ>^8!CDpU)HI`6+L&MaUAs+*};N1?lp$1A+v6o}pCa6?Ly%^-1$BF8R6ZFRr;XEj;{>}zX5P4`th3vqI>|Uqkosh*ib*f^1%prqcYZ}e2pFMG9 ztJmv|YY7=RZt*zxVKgd4oH?ejk}G__=>3vp0quZ}jiS=CHD@o4zVcRMncVvxKI@x= zZR(CWxNRps%$3;3WJMZ}%`f$_j{XwM^f1}w>i>PuU3GkT%i*!*q~4dCJs)%u8%%)0 zJW0>HHKVcbZ1H-o(3^IYZ4$Cgk5KRa#l2MZSBa6En6!{@-{{mUvwBk=5D4*&wVu?g zOl;gZ=iL=1V-fFoJBW-4=a7X!NS`D^Jw`D~Ga0|*F7TiDDQrK&VS>%%#NFvTCsROW z{VB;RcHN;uXdzp1y?|s%kLco;3AJXkn4OQMf--UPy#rWz8YN+m-01J+gZZaM$HLT% zGRJY2lZ-Oj`S0Rdh^kAr*m&NZzB$R#ZSsNfjZXBtnn63E6fq&=vRImi^om}(^6UL< zc^KVJwRJ@r>RiqVa&lFd=5F=wDx5A&19cJeWKx#q!);asLiI5gDaB-dS0&ESY*qAN z>+zyW-@~~6R18mU->m5G%hl!HZ*_z=Nojh1#OdY<+Yhx;>a9;SxnE0&-6k044Z#H) z)b-VwJS};pNGHcf3)*zzD4ec(zL$FqWl49P)wR##*6*Bh6V=vR>+35nPg3Vw9;eAIG|H@! zt*;NIy>(w9#DR(DyY_GXH9N<%R{SkbS>4B2m~Qh}>2_CzSTR$$5CwkhPPSMU_OoKn z!fmPDN%%5hE3#f8KCvWHB&+&ZVQ~D-T87iYJpu`|W6VND)ju2S=rehT4pBLt;=;vGB{|f(HMOUrY zr=GXm^9D(k?V+&{-jm@=HR~YZdA+DE|75FBPEP90oNrv%E81vx1*+ODyF4Chu}^N_ z7~cx{UnzRzP-s8udPiSuqPzNIDzYT&HMQBm$}a)3Aiw4Gv>&hU+J70Qv+vEs#SITA za0xA`+%1`GQ5Btx#T-X29V5oTu&!6Tz36udYE2 z$f95vCnC8Wg*ut4FDDn0@4J8Z%ZryruEP^6=bX=U{IP03T|F3c$+k%+C+@N0Z@N^C zp3>JI>Wk$ZWiBtzTC4{1G}J&pubZ-rQNICMjGI12UNKQJ>z=@yRsotk0_4F-ZlVnK zK6;$phL7v0oO{XYeH$(gC*5)bo>n&rDx2GiVeI;3#(xr=-W3{IdKQFd&~z=ed239w zD!$gRzixav?pxJWhh@`kfv6FOtwtm>J*V7>ZfECb%L(cNF^wk+5Jp|p2{#8<=XWO; ztld1%=uzoy$z<_LT$~cHm}&0jV0kDgAyMt~z{JD^cubx!H{mDrS`Zc)>;$kSEPRIN zT+AF$^$_y~{{*+MwBUy4h1LbQA7A#{sCwuy0><9Wz1|04Xy*=X3oANT4YRZ!6!}!W zI&9flsy)21(tcg9;Y-qk{WN={XM_4(sbgcx$xh8{b&*-bV@fv6R4kWUvXQJgX3yp- zW;r|azJ_p3N|!O6nq4VOD1TsL_4Kudaw+LX&WF!@i#!EILibFR<$qGW{hTopvy>Q3 z+0#GpU?ZLCK*uF86?>($ThgOj*RC~vvr^DIY3!Y19$5!VW%>A=o}O<9Qr+dW+2F6| zTH~=#SNMK?zI4rOhRgG8;i2l<+(6hi`WQkr3~t=_!Ht`ttbZPEeqr&WMnl0<)}1hB z%=ITN6L8yIKwG&zWsxX7bqx*xqk3cjO3BV2w|CDN;48W*Ktjjm_kFBICTmVc~Y@ zn#f_e7n@3jKzzkAWSl_2BiMuui$C5|`5zqpE$_>hxb9ip(Tk(zd4WKjztWF7iI8Sg z&&#or?>>RJCsc|&4kz=!8S&p7t>S09<^E{&Wyrh-Vfd3xf&0YAU?=?opD+%~t|hV{ zy`GRi5@eYCy4Zy;AMVh=)>g=L2#G%xhqHzWc~?J><(W10szOBL?5 zS68$m98Q|L_@>D3$JcR1JKbS&7NbrfyvWYpm_&uE(bwYB5RUq4BlzWYOCQFo^#UpvT`DfU=mK_KXmL@C7=*@6wL>)l6*7Bog5 z(#WhWDvAVKnkZ`8kUkDeyOCfQ{7M`{=x(z5dW#(fe*RA1eE~artqwKgcbw+(;n5xQ z`(3wlvwLHZR(6U4-xWff##_zpH>L%@x0**SM`ssnTE{Ph-7#M+Lk=B(2g~3-D@y1C zM-uf}BcIt}Aw{q~ZF>o%Tt$C(ZET+=UUbgY1Rl`LYv;WFxHnDg{bC?Ie0`>_=gB(;}0r zj>d0pLX2|B;5jO)Jtym7!Iqh>X_oS!nEcli(vqssLhLr-{bV7H}8KabQBY%ZvOcxoI#J&{fk$w3p_X4@ei z6^}&thlC?ppWQ}>WlhErTz8o+0!kV(rfa>O+s96DtCgXnf@j$4%j^1;wdc-^(H0kn zd^L5V&Ym3@7g1E;qX_G#vi)2|IKLYFMTo+JviOsEQt{6FoJ_89cT`*)mhamQx2SJZ zJkN!_SIa;4D!M*s_n~;h+I*F7s4Z@jv!tj&<8`H1k0GW$P9f8YDCJfUna2k(4G`Ic zL@1>`S?$klPgYh|00=HSCF;a&TJ?_It0JmhROsA3(?5LfswQf2Tjo5r#;QYs1JcZ(>?*x6$`Voxure;7>T?)~tlxSfvmac4@*H!$?d54}Kc>1@=-ta-cL#ov6_cfu z=d}HvBbn7RS6Q{|KFmsDLLidQQKGRnY^H1HXY-Y@d z&SE~@(xR7oUBJE7S{IKt(QisdpHzlZOaOfsSj;ze71eV#sp5amgZbL z2aD{@eIeA3;^N{Q=8IhysjJGFx>U2-bK}}#7#lr=LRnkmGCKs)+`HCJ&c)L&b?N5T z-9P&!S5pkcEe|DHiOBNk6l6lr$-U{W%_SD!m&JN|NY%UTSZ0V)2B>0`@2$a z?8g5lafB3g&bV?{ zu#)l(Pqi4;ID$v-JLuDFcgLrih(~$-Z=O zmS>JHGbt|i8jD8t6JnlZo*@H@dviYA^^#zbzXW9;vLP4ZhOa%y(i5qV`*mrvY~ zUdTLs>CXs%mydJWD+yd(>PMV4+BqAiW*0z|m6;PaNhs2jx1@FH${ZEk4LbPVa{%pY z`Nz**Zs2@(+E0kIy|w7Wf#dQA*|T1!)k=_Iy3&c<(f2}MHg1#Mn3w-ThA9fmJkY@r zrzA#KKB(Cz_xzB{1V1*O`gZ-&)tLFDQ_Tm%RZrTBaIgQ~*!LXRu$)sfSq+^jBejUs zh8-8@;M?eOR=NAq@p>ouFah6eDH%KKX<=aj%OH7-q9kcy%2@mYzScuQ_=EzGcQ!7VuN0JF5K@a$#=m1!pz&A zWq%_*RnYdKUo`ipP=yJy-q05qhjyx}oDtOyxn&s!9vfW^h0N|=wJb4@9+Q2qb#*m0 z^e_+jI*+i(PvNA;DVrQC1LqGGw2Sy(Gh=wT+;n(k-G0Q0GF+mLQ8~`=-c6V`tw(z4 z$J;i4I~migkT2IgckIax-)E+1dpzxw3veJ(Jum$ZIUFEM_U*1c(g=w^(giJeT%#ik~uH!KBeMwd3qfIin6_KI7hs@)uOGa`0puR``6>+nu=i1T2~F$L zsc#KosSxK^kUE8sq6tSHmtxCEPyaSMkmNG|n)51ONXsv=N!rA9U63ar*NQ_mP`W1> zuTJ%2#oDi5u$=#DAYD7nS!2s3xREHDRDSHT0q;C#dozWkFwI<#^uUiOxvS}3<+~ke z?l+%{ZMS+2Js{HjJtf(RI}poTQueCV3gylVDT-C#C`0bF+X%-hG~cC)I*#z4MWYE3 z5z((+ZFG${0MX%1d2*&}8u0Ml9jW%tQjY5tzCy7 z+y&|H#HRis7|P2OENS-mK%ag^M5Nz5|DFjQ0-dchdJYCSBw)3}7^;%FE2XWI9sAaQD?Ss&Cxt+uqt%?4OOOs>h=l62|2|Y(h*Imw>J?8 zD}$mg4ut=7q_t~KGs}rhc7wey_KyVWzKc(1crX$<=a0Pm6iZL*H#0|{*F}JkioO8L zY}){Lbo_qPd_v;U(w z0@uQXsr_Bt(h|#Y2BInV^>-BQOR#hhh}0x%qOsl_^$x(EsIRYQSB%s5oOlUTccHaS zcI6i4<{~!ViVUm0J_nIQ2g&-`g~1YwZ$-wS-666Sd)fH$_l1qK`P#*);C5){mKjvJ z0R?%^I>AXqqzL(}uhr~+)u+u(tRy3m-`#Z)l7k`aB;5GXuQtEr0V*O$Uc7nva>A+d zG%172-j-waG~greLYwepM^Y`25JI?L|KWPyj$7E5D>mOQXZ2J<8W&h<0CPYLn0)#} z@qAivjS%hkfJR54v|M6x|4|H(3QZECh+wv?n!H=FGr9~!jxkI2=Vh`(976Bq-j)u| zujyX7{U-lLR2vMFdipd)smF@R;ewd+q|k$IQ^4qez$hOlrw6_pusy;1>%|yClzB(u zFce0WSr2S14tvjZXXw4N*@hgsy1IIm>)ZzPq2E~RyrrJ0@bvlf1TkmxHzKx)eg~dF zDD#3ztI$vaXgohXA-J=KIxb~ePpqEB`bM2AX7VEO*z*3_iW2h>3id1^v6Qc=^;cKS zo^XeP(}S!gGERQ{_&7@X$!XFL&Ww3ROE6L-bjfF3frSD9B%qb2+IzFTy?yaVrL&b4 z&QQo>`6nbj>_*So!7G)3QNv&0L;u*RafrC4=L60-4&Q4CFUAvV&Q%I--hpsCfZ)>%7W& zVOFS^AFNsnX!u>7lzhiCCc!e@wPuiE;N!fW-+1p7?=AISQJFICe(j9;v@V6Xmf1hh zV!XJn;ygRe$fip{Hi)FiLB5Dn8Jtotz^Y*S;1V|h=R$lc-uXkW`NVG!ZJFumTkf)o zifv!Nc7^T@Cf68@(v@Zx6&0113i0#vFV|!$CF}qSErFd5@Ot|Ad zfBJQ3xM;jwYVSzFRbk37-`{EK4Stzxa;5gu-}}0oRBAt3qqfP|@E->`+1)oUif9aw zM`-!=E1(2|mQQzD4+8!`Ug_&wQyXy^dSLn5s(dw}S_?R5e@bd5J?u527Nvh+XJ@CT zrWQMS6NT;La0qR<(X7l$KjOR+R#DZJ(SjmZsUtf|JV zZ<=9(_Y>)>btpzwR+>81YVKWAxd^0HoCwUMGE{Uxz}$9dE9Ne(g!e|NHgC%-KE@k9 z74Gb7M!q1HppYdH$$H_!ubHf*_Ldgw?)0Z4o$=ApAl*2sErI6iAj;ItY$gcg=-~F0 z)U=?lyXcQN&FCe^EvNkEw=Ap77?;)s!Pq*kw~ZcewqBg|;J(H!gz3{IdG46aJTOLV zJ=ZJLH$cbPEF64|jKGf)fsjhLO9(Oy1jO#3MG`2E*5tTUn}r04L*U1=hayE$XaXthnM0g z5>}!1`{7*9boO%mIA?lD*9 z7i|Crnn|~USc2*|ut9DkSy+_k=n;r;Vm>Uw-^u~VZ@UhNU{-IPK_QYEysEqL{~1Wb zX9>^hK-@z$kUtIKA9Z<~6oF{G2_O2&CUoLB;@-Lcr$E)e3Sj+DUT=_oe_X9oNRd!g zTbna|%&8K9<%rLm;iHvLpF3WMV#4o}zjn(%_6*fp`fX*0x|`@}AS+?R$|@^|xyZl` zBYwI7jon2Kj-Zk(O5a7g1`Uja!%ry_lhjmBG#O}xnVA{T7m5%!b}^6=O+U&h{*_t$ z>)GmY<^yn6+v0?;#MUt|%brPz`D$v_l^PJP9I2dc{YVn|mq`Ej&o8XbntxAzan}rg z0Uwj`5rV&t7tP9aS-j^3a{Cx&LOzB%GzA9B2K>io|G&Rw2{A!(=bf7AWcNQ zBavSCE#IO04~eh)-em?NuDt(xa$xFudV1DRa-3ts8hR;rv9X{CVp?ceSdyZn>%ZSR zjlCrzEzSKOp3^3=lGOjr5dJ-s|2sz$R)b@RV1GcbN}*d=0VDl#7c6>soR<0j>5+zN zh8RBp!gkHnOGZ(5T^6`Am1uC>&z3zNsiy`Y@$Zp@VE^xqIR1-R0Fii>$_aLA;em41 zaAIuiV3F}>=-4G?xgmb_>Ok!jq_Ls$f|iA4H2rQA6e3m(FE;f-lna4i!&uN}8UZKY zTw(1|R$_yWL{0~${y!m$+(ILoV7uik;Z46=O0Yc8KQ zbONyZw4`&%5mFigy>SD9UPXv!nRcZ}+OuazU3wJlYqrh7^j*idxr6%IICJTP16aOm z^MlTimbdQD)2VXHN1FU)`FbAiZ-Ut?;xgR{)W3fKc+K@%LWJ+ph@6jk--Ui18;iHh zkDWLz4m6rOub_scN*~B1Pfs7tL+A_CcS%VJ?52c-gkd~~Z?8tRB_#Tx=zRoW@irHS zPjt*IciEq%r6oq`-$0XjDgMq0`$X|#Iy5-PZjV9J)@rSxg;83hjEdq`^;4y(%HO1{ z8j6t_Oe`j;l<9U+-?Yb|5WP};sNgXPl^ii&sYRqRuH{0LS~N8J1w`p$W3 zI!u<&=a1Iek@I*{kqt*#2Zr7Y#;g21JT2xWn59?_rFc<*Q`>hlHa7P1+5uq^85xN^ zr_ZmYsoDSW(TRV^b&3Fr*lQTN=K80?9!?|Y-{vF))6FWnTw6Lna{f=JQ7L;=uJcsh zb4CK3RrH2^vHS5lCMN5wnVH$eixjO>@3|Qj}rZ*80T~+S(sCpPeC|Gf6;VT#4oi7m+ z69ce7OLKGc*hVS*j`5!-GA8`*teOS$5>Egohqcz;)Fdk_O9vb!RLbHMGtEaCCzn}m zbcIO+@uBTsw#P7l5|(9?wdEb@qKNambZGqPrAQ(0ga6|R?!Lio5XH|*exN^U$8vVn z`lVYVewwmj;Z4_$0)te3;)wA;!=O$TdBNjlPr;0U$G>ICT6FRNIxWR!Pg5?CdWEVxJy&P!EjnYP(lh%}|_ue@WkTeTiiTB(F+=g@>a4wfpz0&#v|52K0E&=K3kVQLA$2 z00>&RF$av>a(W+xI=su9Itm?Fs;cW)%d6^A<@Q-=$Hh^L!{)j528ir5yaANGDoH|c z;KZ_X)?GK{7~&D#t^cHFV^lv@JZ$A|P$8#hbJ9TbySVCSOHN#1C$8fu+Lz3&h_P91q`_#KlBe#-W&7uA~xDSK0ZLD z%&zeIr(4wpt%vxNg~z~F45j5u^qh zk5+*=^c%phfnUop=! zsCp+8N{d%s5D>Xk`I{0|546{S%v#~LFa+_%O9t;MSdW;-Co z#DoEXWYM$NuW{01rAUH64}$<-v%~|7XTAqLwU2w(`qJNz=wrx?WZd0%ICw9uO=0-_ z1gmB@T<5XPh7mN1J=h<3$s7@3T>c$DukMRKYWF5CIZw4Si8-Z9CQzZ{0kIS^uq(BP z`%6`e@2x>i1GrRIc}#RP8yg!hR2|?0Q%ctXvldcG;tnk^4ZnWwtld z{Re^0iMR3X*1T)qO*a>bLvj74T3lbhW_i0GtK}wmu+OQ^V6Lhn@@6h0<}L7GYpbY? zF|yU~xtqluo0B_Ze9ynxvJVnQorSGEhv#}mCovU|u^yMO9v3upf@55^2W$y3XN-cc zY6TZ*g29w>qtI&nG3SC-f>pY^FNqP8EaCn8_rI4}b6}?jOQrx|%@Dv~=L)LYk2G{v zdiwP4@5#x`j0_?a#Au-6mf*1XNJrCaCVk|iWkFF9<(isKd{)f~bu>78z~k5)JzKj; z!=togVUsugLnlwy%<)?8*6G2rTrcka_hs2`!Yl7_0pyYI4~_;x$zqU?Un{^q{4$Hp zwsYWigU~a>=)S?Id@FaYgY1v|>Sl7Ed5JyUUv+oCk3niyGU@~;K1Ug9rLc6(_ax06i|lUFTKjN_Jlo6aa|6W!R5%=P zqkv(n%lis~mNSfg|F70S*=hVfr2jgC7IhrQm-M`Y){X3JONevwXy$3ZHN6W4Z?zE>bg1az5GfQRO>0cj}Zhm?2{j&tY<@YBTrl%kojp)y#(&oW?2!Z}a%SSKK&q zBwV#(MM{zRwq|iBTjq5#OPljOcUn0m5A~lC>7wU#%+blnD{I(8-oCowW3C=*5V?RI ziULb)vf-X&h?*IVdwO0A~p%MOKNB$@2KzLwm z*|()|S`w4LEU9>XrWPraa(Kq^EQ*_Ujbi)o1d_?>63S;bC(FD&ej7Tjba`nXw&1(3 z0GGC37jGLO5D|9?@yiCnNT==Y!ju+1eP@Ax-CyHAAsDpp>_dVzia%`k8 z)5Hs$WH$|~#QcwrPf(2)HLaRVf*qe?u5-Ic8b6dE@0BTwL5@JG7_#kegsoqtauSf8 zYie)z{rQLh5+NGaG;o4I$^$REF+Xy$T26vjW+>}|SbViHee##8 zOJVsz!gpu+bxWrqzMfa+ zePpo87GHh{?I%=JRMrcN_>UppvS9%Ma_<(o1WfXxZq*(9i~iIGxA7f-&=%H6Z&Cl{ ziyklS;RaaE{kl*;0S^jULi>ub!2R9L!#SfvIYmXYzn0}?6?6qSp3pT{U{KXRByn_= z>9T}Ss-mK+t848JK}df&B5ls0mIbo1l3_z*RbStLs#CNti>jrQ?U+;XZ7AQK#Rs#{RmwM?ZgFkPmw+kc0xQ4^sB)unH!X38ZrwF7C;htvwRbH8T)6CE+be9 z{SA@{AN_V>SWQX5c#2TVG_ri{EUxJp_hpvSgtA3SNFDK!t8e7aFA!6E72tvbG;oz_fh%t5*a%=IsKG`g-gfCcpbvcU|S9RJvZ7xMIU;5dtt>~e2ibq2*icl zYT7ygw;c4->nVk(zzrB!Xg10%J6d1})+nUgT)(0!HD9u`7nGe?w8deLb^$_#56vq_ zao|O>^1t{u9oeIeZPjFV@KJ*Fy;@RMf}PhB7cP0?J9o1C?WLu08Iqz z`7$d0#zU`ZrbTch;|h*E!}G_9#-Ozm9nBqr&mhC2D;9a0jOireyc&9~fp2v8>RLMu z6V1&>)yecJj*qCT z;imZEY^kQkJJ66+4#tk-4NwT4ASA6;NAL>*5%B=!GZt_bq=Jxn>uU&$s1O!I%m!@M z-Q}^*o5Su#`F%$pL_WeUPsA7{0@rJP`3UZCwa{;W4srt$X3f-;b-E&EA(zQ+Nod0< zr9gHP0PZFL_#Q9UcldM){>l4$9(vH?S@Kc;+@+)$DeW(RBsGnay4h}6XGFWLG^;I zT}TVd4S^V}7*3h=BU5GYRXvZ9n6VF*c*0BoMO)oX$Jd2UZq=iO6*lKN|aMw8vFvqVum}M3r63 zMzDi56uuGhZ8s740cB0X=Na%pp~=?Dt?^LE(_gph&8E0;J3S+#4}A)%g3xRCxOy(K z*C&oy^p1te=M52^7_=FwJ#~tMned^L|1{OL05Zw@TzQ!s*L^W7+RQhLGPAVv$zu7MO^m*klyRe!|gMGs+ajqR)uyV>(qmXG` zSnbxEty-r4=)Ku&Z}an}+hk z?bSyc0d^^r`mKRRx9iRBf@S6fN$MoPR7P`CXKVLT5o7f|s=-V0?%K{`Oq1r=ae2*2-vILp~o5WiTlHMKpu!gLJM{*T$aSL4H*kQ zZkU3so4D{hd7$1Dcd*kGbyhE5*syq37o$loz3rfZYtJ%@ZE7q~*uSNbsbJc|;WWnS z94SaJWW#?rihF(&SAe}-4_+nm_)AYh+fM&t*<*czYSlmYF039O*I7T@|> zP#S|@IO$>cxr4rXjg@lI2XBL@xZiYf>Y7So>oRe(5Uw78EF#!TXHb*S?*+Qw?=}Zk z6p)Sa%*gnjefMG40T{O!UY%6?OI%!cWo5OY@*Q0C6Uw6h*$JIHh8NOO!vE0;#RXgj z0BDF3dWmTBK~MO93eowQ_bOw_cg;UO&HOb&9bBlq73hwJ!VG74%~`8VJk8qf5{A@q@8x<(e^eD5 zZV_rsqOhLroyz80QzYuaQ-kKtZSk?Lo5Ldx8ozE4I^OHM!GiYN!OT+Sq^6-I?;Arq zgF4e>eWIgdLHTI=`_=YG85ytCYtla_@q*iM_0h9I^w!3AowVDeyj)^jke|F=6yVUG zm-pRXawP&Y7^HF#?^}x0e3wW>RB&}PZ+R6rq(_*$XIrA&FgnhzME$nwx@2IX9UB%f z#C3qo5kwfc_9^y|*>%2_099LDeq=mf+u9W6<$FT^a#1TQD|Z?Nr%HED+7)jR#%AL( zQn8&gdE;Wa8w-`}(K8Y>?^m_^nC*kZYORRwWLUZGyv%Xx%$14V3CdOo9?;(Uwcq@K z`7yI)xt`DAQ$ltus-`hu75SJp00xF!e9t*>Cc2|!*lxwBJ$C|y6)m!|f8Lqo`*KGb zH=W%n14FXsdLHdp7yT+RSeBj*TXtwx?IS8nc;O{-R!+WJE1cLp|4Cu-wK%|i&YNDv zSrHj;#Y`?2vRgGMCz}pF(K5Tj08t;s9*8gRLJdIyR5d}vw^v5FAE>=|eHP6q08%57>d=#H}K^*ix!r~Vlc(cG3qyr5t zN=h#ZbFPX(U5l8QC+G)=I@xz7-&9lU29Ucef`VR~i+or*C@%s3!LD-R6|fA6aBxg@ z-C=2KZRPEuBh;{BDuK}IHK3bnLqu| zH69^SHH| z`Bkw2@I21H$Mgu=;)S#Sdno$F|3MN$b`6oL*>_D!b5`6~DN84ZNc@%yF1_|5Xivkx z6YDEcg7DdA1+C(NkC^VFd0m)y*v4Wsy;Y}!kX|z0bfiQmQw`r!vpBv_XAiplQaTDR z-LLd6cMz>J;Hpw{|5WD>Uk@gvMAOMkM_+QWvMBL9q@|8#I!!yNagg;P^m5Oz+(Z%= z*UN8sueuRZ{=LC}dcv`iyRtG?VuvKdKXfPAgq&{g>tD~BFG+vEu|edR_|f}PiC%CB zW}B)0(gg$p+nA2O$o~@7PgUeow$d#-v0i)v$KaE9GdSgBUX9*!5B^8fTIS1`4EC%X z%g%eTQ72yoiu!GRK7XrlwxARnS1-HFsPX3|2^sA^rjcPFApIcN{9|X2 zEPOon#Jb=6;gLghtA{eyOqA?rGGO|rIb_&9XzF-#hKw=rfqh42^uR{?K;Z+9Se zt5Ts}A`MELTNuvzONuEL`$T^4lac5p z`c$F%;Tg#>ln*L#DvnTP>xw*PLCTO^%Iu#b`}bP>&&RuF{_n4Sy0zs_;nnNgH_1+V zh3?7P;1b_ zF+TP45ow*Ho@@fXY|IJ>*|Gr~g`5 zfjdEj7x(;71PWFwSIFCYpN=28DfX}{C;kBc3%bc6g}b-$-TojIpQ?qlF*KAz%?`K$ z-2D76RN%H@cnn?7qr@TC3H660 zOddY{3J35BL8EK2aUZ$xYPly$o{_C{m8kZV;-k(W?yAQ_c(6!tyzH#3W*?tAQ&4-b z17;e(;Rg@!WFhTXfE))8?4ZTy;Li`|4q@wlUUV2-5dvYVL7+?cWT?{F0-{I$$4;#I zv2$>2&i3(Kzph6Z0a<7WNLxHX2gB{XR>;J+1E#JYg`Q@5AJNt&gQJZ_=H%oY@WIng zBecweJGfQ;rM@0-&|M<_{U3AH3Yo-nkY=8B$Std5eWNIgR^`rfj!o?h!D-ER#OuXw`5^*D zEjo){g~^tEV8-pC?m0|+e$>Ru>dJY}*!P20OU!MGKi^%0<7A^G;#CHpWfrhwv+QSk zbAVsXg}2tCi2M?hLLsY+j;xyd)$IxLooA|*g2khV^z* z)iYvg>v|rbNcJ76&Cft!Hfb$F=8W;lmwr$F4{dJ(j%B;H4Qmpb5Gl%B6d{o*l!%Io z$P_9Kl%dQSODa=_R5FwdA!SIUj73UBBxKHzS(16Yzx~wnJgeT-TJQh;+xFR7Pp!JI z`?{`kIEMY$_v7SD_4L$iZOe(!j^4d!g>rfZJ+AwmPJ0;=&((isGhl8gEMIz;+#uC~{UfM{*1Z58o z5tH?2^YpF0u<^Rn9#h+H%%$0LVfp#8j~~ytKD_BgLwoG?tvq+~0=&cie%|@&=^i5Q zEwA31v`aiZt-eur^otfIcsZ{J&VoS_RAV`S$_&bP%UH!sYE!?0gg5o+(1E)s&*9ZV z#7s4C6kk&IkG*s3U{<;iH{sTSy!Z0=7W3_y@rwYQ#4k0}e`>16H0qChmQmAf`I0alkoaBsjF#pT`m8JLys@TkzCx9jDW5rU zT@*EHu$l_v)}KAL3h!UWtktsvHv7ciHX8(_9XjU9kzuzI?7o;b-OZD*9AC^Wtx_MW z_cddWXI6BWG}Zmx|8TgLaP7CRyR)}+?V+#DZ3UE&yeRK0pRY%>Gw79yLlR{Vk5u%x z-zD6pgQX^iAa6~&|3B;Ff4j#m9yDh+RnQN49zKKL&Kw`7-{(X|jq88&Sbx*W3I*W? z6?LjMXvlqSf6v^1a2F8ac%Q!?;{OHN?;>lAsn*7XAD7bI_Ty2%*!+Ke*1wH(M*wCzfPAG)4LlGP zXJEVwl3W=)umNm*`u&Dx!sg_Z7YRYIW=8 zP072;npKQ8iw_kYk&A78`R2{x2XYqn@fuo*DJqqUOewY5Eh)8rCVJn`-M`HM!u~Jp zPMyT2b2^Ey3K&{@Evj;RuS)Lq$d-wFnjgiZ>|qA|y|Yn%!R)FerD)U!mT-YO*48X~ zEZ+m5n*6y4^t^g}Y8QE6s=yS$8zP6|y3DxDKE(&tnw3FkV)-+*T+(p5^|cqwNR8#A z1YjW*ptNoB=59ZzqjTrpyVIE_WECWtij>oYiG-VH`8&U;3$tOH4eZXn;!b$Hdx4l zzmT(PFH+H-1JQXI(`j2^_3Tjxe;35piOzDp)#ih(g_o?~llP^H+Q!AC;5*1*8&q|M z^k$qdlg{l9#R5Ff@BdwTbFZq(+;@6%SG*9BB^Q6W`7ahN8NOdxwLA~g(muI`)w-NW zL8UJ{dpnm01RXX8oQPa7A(~pu3SDjty6F4%QR^iw(XOCmlX<+*TSa>z-?@#!Z#zoE zFhqC5!q~dKIg5e~i>`Wzh=mo1)(9kghfN6ee=xA1uFow@_nq@l8Gax z&L+L+09s8z1{_($W3Voolrgq`*!~oWC7#TUfAeNEqteHCH-K~C#_J)9W2)GttlGtE zj%>xaQ)b8V0+W`ze~~%7a2m9d{_4bfd=u0alaM1dVxn;AT60bYkUcWtZAc41Fc`%c zcbDUZiSP+OHHJ>+FE7r+@(9~vygNqVqzQ>I0W_16V_I4o3IjMLYzUMFU%dHQkVSyt z;P77(O`>-U^gtzFdEDjDIS@D^IUE|O;X9<%%vY+ixd*^LY|649z>#4TD4XoMKVG?A zUsMNjAdt^IRNDy0f}F>OGs-6F&L$5&T+hasPjg4!Z5HK^ENGe7ES|Su=L|Gvjp2N@ zR47*Jc5o|EG&czf_EkNqL4jcgi?LE=^-dIbP&O!K5!68em;(AJz_2L9AAw0X&$}Q< zAtzCiuW%S_jl&^d074rs{f$Qy#ZJc};xQ%U?NmWbLu;zZQqCohJ-eytc*+F_T)r+VjQ zoL0;o)eVR%u`~mDlnqh-#O+YE#R=-mukn1;+8Wi+&;STkH}NpnYcPDU9ogB~vdrtB zsnnF{{1_VQx67i>M|{{-(e{ST@>5vp2kG9&pFe*_{Z2X4eRm9hF(4MmEVe^m=CThu zqWXTJ&6~g0F)*No7MhwVpE}h6DlV(|nPHMxAoLM)QLF|U>5tZEfr0073|#ZMf@KF} zM?Qf-0Q~x0)!9SP)lk?zfjW-;!zO-)*TV#$4hU1hLI&TUa8s#a;N#+YeBL6%spEYJ zCanI6@wF&^+z=|d=g-G+0-c|i*Li7lto!B+_G;c_&!fIRGsmz`^E2vY!Ae32c8_0hla`#Hta)$d<2KunM?KkxnSokUb-3tta)6D5KQ0$z&(v~YPSmue`p&--ACYK zl~@C_;(>g^Ww*a{&uX~8UP4Aj2FaggCc_J7Bu}WNqSb2g3DHJOR32q^3W=IY%Jm}V z6A%zg-fnMiNAA>sO$FOw^yGLU{+UdyE*>>x>$M{}qsg2Ko+z-1o0Pwlw-J$*ok4Ns zU2!p#Bb$vJ*GENeaGC6mL(++S&jPHnx(rKs<2OsyDsKxLH6a@W*X#OPDN!LIi=qH7 zSh{X(94NJT44S*fFn4c_1E$Nl8s$WCjO_3J39oP}D8)R%XS# zbA$(nJpqtBs=mM49sz$d)+R(e>$)df7rMSq01ImHO@BsnF5VM+w#j*@6i#CX+>6Pv z0SeC6ZUkurfd;B>$ltXfm&3kl!rQ9UNQ6q=Eh8vrgxn0?(Gc?oa}f?fFNU@^kEO1E z6or)&z&4?|8HZiMa=IVK;T$ZzR&lb}<6%cZZXo!iMbIzn^`(!*?uDz~Drbxj#hoBog<@<&Gw+&}Y_p z94f#YVC)kW*3}cA>X=XDd(ch>>&>{FhnfvL>nI?c;aI<-uLbh4J62%H$zEN)E)zSF z1buLJ#G=Lspf^^LmbSrz#jQY+IB-YGlpDnotuH2-o$(ls`<(EZ=TP_CJ(H8Lg6Cng z%sxNdr9MNS)z}2Zgo^gsdGqy_sF%XPLvjc25@#A(&{D4d&iMFoL$EvD+-`v2fXdJq z`0v>esDX0GZSa*p<5&Up%+;prEw{7{U!eFtz0Rr0WvmhW(RX=6WJ|eB+BnXBS{q#Q zHBT0YXW|F-{_jay-|Dh2JdHI)A3{C2F3OMKJS<#3iAI}40HUyFS5{22D&PfR74_54 z*dlK5XBF=Oz3~jz13LrE1G}tag%XPkt|A={zc<=S<1x{ZVK zeXLLc>vOgrDFMu|$INkix1;k<>`>5|nZ9fe{DnYf0!hymC~=kDpTzn(DC2JtK_pt% zB1XZvrVt~E!Te)+Dkl~1_EHIPBWnyKsiA9c4&)vEzUYx%KKP-~H&)>S=taL{DA!2a z5RZ?>mG@+)Kr|w}2EYf!Fquk8#aBH&XN6FZvIOZ&8lHBhq#84`cp2->z`)3X2}Fh6 zMs`zJwAet(nXMJk&V~$S%!)M#VZaK#nfyY0ou9W5$0gHuPd~^#;x8sL7V6q+J;h?9 zo#+!8J%C0Lq8EOUCYOx>B;hoD6$_U!1=4E=Aol6b>Th^)D57M>TOjF6s1RbSGv9F| z2urA4_s_s+O$k{LCJulOjrw}5 zX&t=ojPa=HHFk>0*3SKlhob*DoWY` zu+WEZ?ugpW!#GJ7MQTimp;3&hcR6I<1FDKI&c*tkRbP0vCaE6_9*Wm1^x8%)wuoPw z9onuVzP)p2^;`oqP;oI-9`vhxPJ(2>g0{{v93EWUKl+}2n9Sh!z7ZDIYxM#=>+M{x zW7WcjZ8_HntqwdF6Bh@Vv+FWFy1WL1w;K>}pTpvb&h$|5{Z-si$y)<&-fWNXJ%$%S zV}Qxqh;VpHylwn{ENiw^_C+$hi{pUd`Cf7IBG>ceG5(J4=#_QqN3*@ zar2DPEM*P+p&c+j?m(FpoTm}S@UV+6%I!oqI+Sv&+lS8|2&!zgkq+LhUyX$aWOo{4 zH2G$Dco=O#qe1%)jZL>`bVQnheIe0st^mi?!@@pAAWK$(k7MLEo{xaAU&_vfMP$xHhqsCL99^nic|P_FZ7ne-zlW!J1(GaT+`rZ`-t z4UU^B;zuNMFg;j5oZKzY)s}nTD6gvDNpF40Eg4DU)xrZ6{;XbnSgb$5&KxR?>qD5N9 zq9L#shy*eunjChi-vpZ?SuZ^S;bua@n>TNIrk)=W@+tg?XU2?jNZWM5OOuccw!6y{ z!nHeh?jU|$F9((rN)xoJXQMdXd(8WY-fPI7oc0Zz{{U2o*>3wIUf7Zo2MSKd?(7RgyZzQaY(7ONS<9V@ zNQg#jyR_EkwZuHTPT_eN5*$8BmwL7Xqls@-XJ1ZvuZ3uHFA5&2s@Zr^xyddb7qiZE zq>qS~T_ln?KVH3Da*Y>{!ELVi-2Iajug9?vWR!3baONW$tSIRh;7tK_PxeE&hhE6y zrXOF+XAL6Z4MGp9=V|LscoxBZ^Jout*+{pHBPzllfEt*XmVIeeWrNEQ4tN+w(R*^weGOjDxnhG zdb%vTJ2nhS?N#^(+3_!zQ60d0g}ah#9E>$({uVa7Nir!_#1&aWjw`nyYqshPd>>>Q zv)$t~%IR~B8PJ>I4RiN~V(FK8eFMmC>Y!!^C91^81_xF`Ei%cs##)lZcZAQ!t$8S# zlk{@HRkrKbx+Wydg5soYU|WR^GBh-FHph=zfpk>HFJGv%Zhf(O0gRe`<;o$1Q}%tI zE1Hid9nz{gA=y zuE>%uTHr5=IA;oCOmdbu);q$g`x$q7b5e%$HUy2mYk#CA&i(f@%C5D@s6Qck7wj%9 zIw&nBz|O;-nlcEiH?IjXHJ>i?Csz zk#nX0y~-+|e@WhdYTvPQIGuOzp+VPDkg$g_$Z%$p2u!M#%X^+C0c;QjH3T^ihJLb) ze4(MCVR`N6l5DMmCx3xIf9l7#DK5Nq^5z`u2|NfbOQ3Z)yl2llScA}r2usnBVW}}g z6lM`wt8b#d!W&fY>TOcMDcVyjZCSaKvFY3KCk9mjM5Bnv@^W zy#=LLIWi#lebOHuMLc-adi+0bz2+|Ezjg@r$J9%8j*pt`%4oF6h&3htFw=fu z7UsT}%|IwPFYW$)PKA-{u74V#IGzMO8aR|8M5gGe{}|cT0_vsTKP1HX-%PLX-xgNd zHh8D>6xZv`84Xr=R)Xhtb_(l1>qAiPWAh)@gYCztLWI#AAXCk3Gd~DvF39r`-e8oHJ2+HZGsresij9&St)vFdi zL>t+3V3HI7k^N7zksb8-vEa-oydyxFlQ}Hu&G0w4UxxF<54~i|;Xf`8E?e8BEg-kU zTQ>kE@bFm3<mR)(*3sp(99`N+>2GNFbaj*sGVuBNDsUsa<}c^rvOV zmX_IpT&4Td!%D>A+K+X}ZU-JS2?TFAm|E!Z1X}cf3x&y&RS*}a``Zhl$;Qt<8*JR} zbuD*8pCy&Ei(P3KV=10ZyQ}X@W!mzqGVqj2^mCU`F9-H3*U<9r`Du z_9-^=(@9PBn~0N00EIw&m4d@|cCOcO^E@7KjVq>Q6Knyt5?B^>g&GXWfBCMP^a%-} z0Rg0!iOcLnXH&vd6D@3rYlNH&PI1cw>y+y?l6$nWa(TPX9%$YpcwkcQk2$-p^iS6E zOi(uMv5CW$E+uF$fNo&l;Ypyfu*{RA z_!a*!4fMxCoiQd>9U-TQZ@EOascUpvnhhdc3>t8lnvD1afR1eltJEl`A(l_nmMZ?! z;1%si@+faP*8mUIG8*!%+Wwa^jjo?;%fR&jw=Dv zMI_{m#yxt8)z|`)ZfZMi=UPU=YW}*11NQpz4)xG+9XB?{*SZ3(CHWiDd`i!wWQ{|I zfHUM{Ew5r?GQ&e6u|**BC<a zm8H}6doTmq>NkP9XPl|(0T^P2v=H3~;ACRPLj26Mmi@`D?$8TVr2+na4i8D7S>ir$ zI8Cf6nhTI(3GmVkv)bbs7y>5<4a%U`$10NSs=q9uI`Sv`6`*_K_FWxt#sOVuqpW~l zL1#io@!oPE^D1~EZrXouJHar3^hLwNpRQ3;RR!TFD0lbikfEE+?g@V!QKN;7`5<1* z=26Bdr2PQYqomaZ&h@HT#BwAB7X9N#4Tw@OEr4IfgTI(T9f8_VvD5wCe_BzWXc_Kk zzG*p!k`x+Yj;8A+virY1lm6!Q>%OKOK-^`N+u!w5j*C{7i0aCL6c5+voaqYok%aJ(Ae7kQB<}d0(L<73|Z0lJXv(#Qiqd)gYTIF zY2;948a5IBH9EHUlks!mUaeAca2$BarbU-#8;0i>U@0+b1 z;RPU^=q-;dfK8(Y-5t0t&;_I+;SlhNYfBjaX(7c|CdhMPVH_fGtd_Kp(0;8dJP-|6 zgGB~?E7JKhjhQ1i*6%}Oz=s1Am?A)rBLK;}ky`KFTMWHzYg^l+oWr|!|6z#f*C#wl zKab835CBP`qXedTs))zGtHi?f`>Vz9lzdpXnL$#nH&b(Sc-Tfsy$t3W z`F13$zyfY=w!fP){o^%EG-PRyVLWiso_?AM-2a#xmW2x-U1lYeJ|kmIQDfD|n!uuB zRjb6Sr z>1WnHGU)F%ZT#Akfizkq?0kUvFONR~>q)c3fQSE2>x*Bre`72G8WVvyAh@vlGK#Wf zI05kQT{s0g^KkB`_;r6;M-@8NgCHl#YORBPxjjpLxCzpm8(C^ z^*>laPP$J;(jJKFOyP)U-$(+7!fM>k?q6#LgPy&G`%h+%lTOoGp=;2=gC4~gfVx8- z^tgrj$C!6;qDcv7Mw%G%|LD`i6HaTak$+m-XY~Sy<$S^_Lsa*89e2sr(k=6eU$`qg) z3oWt{`ry-@5b-RunC^=9Cly|(-Fl5_fH^cxPdn$B0JpfBzw*!O*%Q!whE;?n|@VugJ5S<>I z@(NqdiJ`+%wZL*J5%e-g2bo$xne}O=PqEKSgtE+#A(Ipz8QEd~&PH9*uY}pjwK9G|-)Q7_l&-k3qbGex7SiLIOa^?04bM6 zPh&hu`4RriDaAOsl|0uTrTvOY3P;`RT9dwTlfS@^1B2`gtz;=W+ZLcaQy>TV&fpEseJ=hQd)>s^@W80nTAv``g3dCt_@ z^2AAIL1(j3LvV`_Jjd0a}pV4Y{Q8AAQJ zAL|2cRKH%chK_}fUeW59{RvBZ3*mDot&C4v*f3M+neUMAxf}D}?__oIgsHKOsilRg zrL{G)2iF}rp7kt!b7mFyqMTc`_t!hI(XF9lJowKwJB^KPt&SOAU=~?ZsIcd=Z2xc5 zlWl1Ib9(0gVR{bSKEE^NbF#^AWBtn&f0&-r8u<$16JHGe>m|QWkCxUVg+rG{<9?f- zU+(g6(=(rX^UI@`vTpu1Xun+Wr|BuA*DQE>@-y{s)AP$Uf1aKX<(fOF_+Nhg?|1rV zsOP4KzvhOV*~XANzfI3CcluA$6T(}la9ucK`nTyRpZxH1dKUa)dg#Y3cdAU!?y6m^<`Q=XkX?nzV6)JrG(b!lsHD`UP-VC3rqjh+u`Ez;}Z7LdDK=&H| zWB$v=8;J{BnwS~e85x@#v$ElSIJSW1J~e#`?dk>GcgGfZ9o(hVVpCK~@?My$l2ROEBu8|)8`6cI-pTv2pqXB=luAmZ8`Kxsx)#@0W%`o>ROErFy zdl71E{QvcJ7Y&~}j-1&^k6`caEG?pH!Da5jAjbIu{TMAynEZrh0h?&%e`ViEPvR>> zBl81(OQ>GHyo|@=%pg3&=7}P2eJ==oBLqfTO->lEesVQ!Th8F4HM~qYKc&Z zV>;nTiLoxDzTD(bUI?Hp>8!#2tslfiRM_82H3R1bq)dpsl#ygNwTN$aB|pBFloS{5 zmmSfp6eAf9j#qUC>>si9^nNF&DT3jFVUq09e-_-2Pmf%G1VwBI+)EG}GVnV%zrW*) z$ObP$OG}F!QTangN>VAhVh3lOuqOF%ILp81wHJCdA`kYHF_jzBpJuTDCY;H832);fJZEk9LDnf^ez z6I&Z3?h_TCuxaF(uuJ#8xNs})u^FWQTaZP|&vYNixkFDlCq|PWgE55zm`VTw!dwD4 z5>;erj}{tylVf8^Hz%Mcui2-`5&-2kZr}vv#?-(|-P3nRFibNl12~(+|31>x9ZApe z4KmWwBp=k-rlN?7+sp?%3n^q^GIP=+Cx$vPpR=eP`k%af582V=DP62O8I(kgn9O#1x+nuh8)2hdXH?=0Ei=c}^?jcZwn%C!FnM9uK_4)Z zik&-A9p4ps@NoI?!~-jIFJQkT2LG zzi^b2Vj!BS!4KM6>8MwYwjoE!#Sr636A~PYH^#kgx@G~!`I64<$95S;eAZ0vMXmO6 zLIT|tg}A$Rb)dCvsb!|Lqb?_1l{E5y1GiP%>_u(HYNYz&X#DPj!8)t5b{BLh1IoWmEf1~ zDL*c=vuCqL>&^mVe8j(3SGN`!D1g1m&s!t#3IJt16e7`S&9zge*=yaA4+Ny*z>Y~s zAo~VspmRRE=o{Ceu;#Vk@S%f0cp0e8pp9bj^rC0!>AJV8W+bSoIJHRvUc`)LWrRC9 zp%SrvJ2{ZpAN0qGA72MoJWEUKlhV9;-H9}9#CQpzmBTs7@D@K(<|bIx*|P!+=gUZM z8FeNQn3f5Xaq*106HrfIp@v#C0B6zxg;sm|Xg&zLy(E+FKH%n9uuLKw(?mEPl>-;Y zjxu(^EQ$QBFVe&GkG9yuJ8PPbWQdXJ5VV(BY@ z19*0=a2wy{tj9QjBg(hq=v!j-04L5OGcNh?ArHVokhQPS1vW<%GNh%YMK8>f4}yh* zqaR@WIzj!*#D{u&dsp5I>M$7DHXMy7A$uE{C@G%1!h-D^nGX|6F{l{b0Omh0*^Hh&Va?OAyn9eIgFvqXn@R!=s5&}M31@-5<*VjdjY`!$Ml!Q2jnK&@%US(%_m>2aD@;jKB0#t_xqLh zW59Q27A&T^xb}-do}o>JQf@`E>&PR;Pjz+0Qs7wcNjNll{_Q#z{S)u+Y$3$69|>Te zF5)J~b9PLPqW`Dk%qFQ$K#F;uU2M(cZ_t8)y*?vozx2DQSrBY^qEL1yof-tU5G6m= z>4a>)Pu0~u=otkq!|~+DJ_E5qMvtTT;i}Yhj+yy{4*`yGz$tA0!G?}#U4O;AzRBP4 zsfJ*&6y=+Jo)an-4$by9HfyclZ!yf@2FnjRj5FlQgHuC=Fbp0m_m_*6P6cimMHv!` zl)+q?A%F?;EnnXbX`}*-A(opm$UzwdMTaj>y(z)QfJ5|zr^M?DAIJWPCyn2J81#2_ zc^XZCrL}11XLQ*biw?egp;=fj&C`>WjqQSedU`taGEhWs9aZ6F+_-6zx9kssS9pRE z+BQ?PItv^6@~fj}y-i282d1EvLH%mIWub^~YHBJPuIRh;z}`8BBWH>gGj_u43Oc8$IJ~Ywkx~kROT6kda5f!?Zh&uTY8m9Yx*WD- zrg|CZfxf{P!^^9ycPl>B>(73hvrYN~s+!Mx4n|Bhbc)snWZZZkw%DsHCTRaA9FH?I zQj;_K5(|F7WxxrD(%45|c)|@CXJW@Lb4+s{7An+#mXst^I%F(73gozrEESH~@7F?D z6la>oa%;-VzdTTFy5h>u6e{PEImTmb1{lxKO`RL&k<`fDMxRDp=-&^LSRoowU|gbm zr5OMb4WK*hOov2XZFO}=dNIH#dl);I6H^6_LRECTZYPcSP&2K0tgWvNpx)Pb%&y&HvuHbh~WUfQx-_9>1` z0UeM;1=XIL_k1KPQ)bmY5b>RwY1~DeM$HODU~=*%zI{eLXRO^SncT{5plJqdUde4= zFpa{GA3hw^`vm4VR@3Ydi0rQF>VYh>sC^MR;OABlc2(8YD`3eu>fgZ>Gchso_MJ#2 zA11K_5uQ|GKcU9zhL~sJPEe=VQXSDi$&Z(Wic+si%Cpl%f@}uUD)-9_9DKLNUD#6c zNW!v-8@#4qm>cRB69P4CG05@np7j&@26|#bx?p6#G9T6Tx4C0>GBfdspM7TVCON3| z6E#oCTG85SJQEaeG|4sm#(f9eCM%U#449nwfT1;l0;r>)qKI=L#u}_YoK7Ok>W;DB z1vF5E&f1O}70i{L&S>dd(CScn7J=2bYMC#$u7`m72Y?)WfFX>GbN4%Gx_ z8Z~P1NcWSR^eXrE2$yDMqJW3CzBnxmW^gInwmuY*2Blj!SoZ2SPgcV&O%!mIs+!vMvFBs9*!6=I<9u%Trp=o-Bd{HmscmX%YFyy>NnIIn zni4sb-n_n1kDls_=dN4o*f|F^HPOVDCVAJXRN??pnDP}izmXmq%9_0OSjKJm@Q*m3 zD$)c6%)=VOo#5hXfH{5kkV(;#;JKL>#+QZ6uflcg*pm00`s52$0Cq5;V+y4*E~Q z1H`_9*rUU7^8KHm6zrpvq0S=AwSBTHIwws;*XmidKz5WLLWC!=DLRV+b)pYu6MKd- zYBQ;Ek?wP-;S6>+AfzWDeq1f6RC{b~M^HxCp=hXoTd)M1(vTxtQ2Oi5L(sZDMXAff zqkM{>)5v#NvXuo(CXs-M_VG@Wu!?Bsk|~qPI$R-W&-dU$F2A>t%?w;0A?;bBAqITi z=85%$!SiI5O7kApM~@zP#e|5KSyC6{NSa= ze&>Y>?+-KwDU?6H`VHhB+}_8njN3NGg=2{akiOD(*`&|+`?%fTS;vl>r#!i_H5c>^ z7D}5J-#rz@Ci>!q=+NqEt37Id9J1>($Bwmt@DXzG$<~&BM_9AtGNVwf7Nt(ZlWaMr z_00UOTL7HircIl&bI6qA&q%qN3+;XoLk*I3PJuK?Pl(_K^JaVVj{AT$y=nF?1s=<^ z{#ng>$v3Hw$Mu)yG8z^_h(MvtHdDexPkQsW7SmBpt|3j2+P#sIQfl00YDmDia=&B? z#0$iuN%)$hmIN~#kv)3bq84;^5@wAn@0ae5Awm^m7fD3f2!lbYPoQr|qh}@N3=OSX z!G6+3&x(Nr(7M6e`wptVLlC{=W{)WYQ^tJw9kQPxS(3qT5X|KMxRreHFsa!fd3D$| za(lD>D7+u^H6w;^vk{SyYz5C}xoBs6Qj#mm*)Ga%*g4Hp2*>v-(#|O5&@MRc|5z`* z2ghAazz8{l=jU*!eFj-vjjil9wk8A@k_bcbhR5LEk+qWC5d}Ad&4fy1krOpJISHTE z4=XX#%95vJXh@1eBnidHk;o7|Wy?MI7GHivax%22Am&ISZ=w`_(+omiEb%qlURI-X zAzK^sf} z=m7c^meI7Ft({#V3 z8!;#YSp#y(uSmE%i}?8*qEOPh7VoT=?J!8#^JRB?H)kOX$6TKK7_$eqX99dJSL|7K zWL<_ssoD=mkag)Hbc3+u1F{t?OUwyrHV+yR52#PPC=`R>$mdb1S>#8AFF8|TU%Q&eTUYZ4rg%E7XmK;1#$6NDU^0+5l?Cx8VZ$=Y>w=J z8RSX*-_llME-*0nu&qy?d>~lTa?Sw(5m6}j*{(kjcODkTf6dn2>Nm+EL-8|QbOCs}>o9FS>o!QS8G{^}@TGVHL-^KHAE79bj^LvG|l zwDyTfNu&uZsb7Dd3W|ux11y8N0tFri{Y+ysc&X7d%J+LD^&-FeFx%feyLs($kV`4` zSTL}POnJA6J{w`S2Gau=)%xaHI~Nxh=V4*DiGAkgiBbHJ)Ab>T3wAyN$b`Yta0;+k zJ}uugLRd=^6BSD4Dq%zCI@7pYw{KI=zl0ffMqWPw8oSev-Seo{ZdB-K8=pr-HTe(% zO7!q-1^M$H)Q)4GCv{QBCwhEB_2{u&Z4AymP?9<#JJ##76bWq|P1|x?s6+ zC;e?fT`Mpk9OTjV)rlt?bUrJ{atJR{e!67^(TftH3=kU@2>55~AYnnln1-XF z9SHg2R71E+egrnLylg3wlH`_Jbd9Ixi)TC2TE8Qgd2Sp!CpoEb_G~ZO^oNFpVOvb9 z1y>+ue4T5QX=4gEjwAq)SRX)Il6wOsgXtDx*sPlx^X%Cu22Bd6OEw?q0l~q+e2@F> z^QIb6vxjAp<4#CSM2Wv2M68c|9)<@h6j;7eSBee&_<=Ll273dSoRhR#=BKj%RZEfh zZ_kw*G;#2GxWFcKj8{;^dQeQWXp{y%3(1?X=AlDd(Pbo~*;Qt=9l7>0U`$A-rjV0! zob7RjQ!@6UufPs(W5LG3&&9Q8xO|WK8lW*QS#kgZ4k!ky@UC8p5q*1)U^6PbtuA>0 zSqa!8ENqFOmso`Q`g%7YxDNZspv9)jh(6E;VVb%!26b-Vr1@S?9(md4xvr(4^#`#!N?|P3l#8-gBvx-uL zDZ>!)2NQ>^GBAIwM?v7(bBb1U%axN}F}&L-x%LIMGH=|MbHhn~etxr|^koop7DBj% zG#|Y!bCioqN|qG>VDJ-X{8pDPaG{)&;VyC$j96AuuXhvz{Q>;-D(LRCL2*Yr^c@lK}RM5Dk-AHchD z;+UE$ac9Wk?DZmwhbpnw2Myqa%sKiM>|xIj-ML z{3`~k7j(LVTDGLO9h?c--^dS%!{l#2Yo{+;l2}4x z`yQ}}sy*eSJyurw^N1rVDuex7A}0EVObI?retxffaj7dSzlHM6<#d|r$~i-N(RDE` z7cXpOfd}nMP|wQ~=Q@VMLjPSSvtlw9^f@RWX7|(ZQnfC+yi=Wtjg=LiVbxOVl^bFu zmPS8$qRv!!R76Gg;$Kxb&Q8xLNl3d9VQdo<8<*q4&ID5`>T|SV#6RDxF0vX;P}5H8 zJ~QX@;N3&FaK3DWH~mkB50WLug*)v=Dkjx6spnqh|8ZgO-$(1G0s3F+gv^p3WvIIQ zzX0{^;+9;-EK8CLurJp zjPUCB+do;K+4JtHz+q0lxk-~W!zaZOUrdZ1Jr^Few(Pp=>g%p|yGFCK+Y}=4y=h7{ zof6{W5)wG8oIEx8{HXTz*xENbMvpICt6%!OKtv(x&V~4EJ_>a;!1n2o0~%XRzabeQs}fnMJ+f<#?zw{_sJf_mJp%X-Fdf*v4~{8tsYOOOsNIvpHLnZS{j%nqFIKEGH>2P&J2a{>86(B$yS{BL2G%U{RF{AZD zKr78ZHu1pLEwUYt$vGcQj9!XD<2{Si`qkcX)u+ll>p$El=%ny4vfT3Ccw65-;fkmV zkAUtD?UF$@m-eAK7e27d8rd z@jNiI+M2XC+~oWd-gvLtno~ig=BM(O`c$Q2iFH0Ny&!X)_KN2E!NMp$rnS^RH#aBC z#$C+m4RKkAuJLMaI<9s2MMxrbkLQ~!^KS$=ta-f8wes#!=Gc~^ZDGY1reSb8Hr{~bu+L5pR) z4W!x7Bd`>qPXl2A`UjM0pUx-%g7JnTKP>>Fgyo7-6bCAhu zBOG1~ZZNm{8+lQkn^Lz_=1txW=il@cy!_8&sGe*V5CEaF5y?~I$B#b{audB9lJE6V z>-XJ8$%Q~vs7GHNYbPb_7ldSP34kEj`0RM&fGc`@5#qSN=b5traSXEHk>H5fy|m}- z2bl=f_VZN1=e@1 z7q+m(2-}R!yifE9*kXqx8%Vl~xHemY&s1bJIJbVX#{g6Zs=VIUNpfz8XzlTew6w=~ z8P~`;J4|yUQLQi$W1=gRH-`cNB6R&}9zbUAWu}7?;?Peip>Nf6q3oC$cipG@sizl) zPGx?}Oy7E{?{QMu_D?mgJJa6T#w@=!ROdxh^l@dkExyF$>NEE4-f$k8JkFd)(b3Tyd>%lE zC&7Ba7uSE?N>2Q#tE(G8LaA%n3xVt%3Cnw9E9UYYyuf$3LZQcbhI#tl# zz81koS@^d83U~MDpje6i$g#S5FO!cSAMi0VonY@d#AfSq%4sSZqz%k9$HRg_K*LhW zE*}xdN199LniN4PQ@>AQk#g(1 zGl!0^@BGUCuz-O^GEe!^4$c}m`2~i{XUmrVD_XS)=G_yT^iFk^!^c9^JA0EJr$x&_ z#u?9cz%0iwDo~?%A7@fscvn-vW*V=vpUqNVu+Au?KRS8u0%kY(d7-Whhm_f!K8bI; z8I_t>d{|`=!Qqvbk?}Sud`fuQeK_e`ZirOi|3$d1$UO;ohEevMQ715Sav~$?J8~u? z#1&ABaL%xX*?JOsuOim-;=CO~Hy#AUD2b&XVZMA#tk_mX;Q{yI2keF>k1k0^osYc8 z%WFv8%gB?uscOeaWUnemk7(U`i!Cz6Z>|+^Rh>RzEPZWEX!}x4JR!6QXOT7%1WI!4 z=vA6k%*=y1(!=5jnMu!{#b&K*AVYWbWp`H>PO*2f=aag41gx!0F2ovTB_%5dpOAlF z-G?X{@RbM9+O^&5F0sG5B}-o9HwId_j~{DJ9sP1raxFVf_e?MW3k5R3WXm~kMa{_TA#zTUJ8(&^ z=Hw@kX2Tud-iQX=IvM<<^|q#k)o7 zlXVpT?PUT%yzks1_U*lA@MOLe7o3xV`kM?LXYl#FawuagM=$PFpjn`dgNyO?-?Q(F zYVM)wzAo+LZgKl{pvE@0)z3Gbk18y@aewlJQJC7cjF1^o!NVoTJ0jUzw{`Z5ZD7*4 z^_pd$qP~rb>!Cx|)>{dVv)bdC&NLfCe~8t{XHG_ii$a`S9+!5nNr?X{H?viSH&TP) zQR?3JX5t5x#e|pw7DgDYF*vSx_yKGDa_^99j-LAOza4F3UVk%TYr?VNZ)9CBuMfCR zItoUspW%^>nUdRiw$d{`F|pKai}4Cpb82JX+6Ftm_-E_9f(*9Sf1B=cUHQSziE%=R znS*iR-qi~EFIIjHKQA=yCp53<@0##J+&@PR{jQm%U(rtp22Evo@*%6-+?(XF@i zPB7{=?NzN*dEe(rTeewmSB;YFma4SJH}|dgU`&-OuwfUs+12SD6+ftMV|b;3NIURj zb+%}CPNC%%U6rV#FWq*kwT>wA@M^T(JF3#ad1Fy(L)zvYHyey^zVKhTXz%{=?2_Zn z50=xOw_>Gji)tFWyYBq6l8r*1Wsd@;0_gKw%3pn^R(qtbrFsV8q6p{6w}54@PRuKz z^Nxuz(Xk$qW@qx)b&vDLo+FYX$)R@~-Nl;^hCWDGFl@8s`VyO1$8Rf_Thz?>wJ|Q9 z1le&x_3aox`g^-8&5U(d)vFo@bqs&jsjptOMXk9@d}PE&K)}DJzn0~%oI#p9;nAa~ zs{3kerOTZZZ}95gcCz=u`;~8&38$8cIP1S5EFXZy)SpMxr|Ffl{-=?o^5%PX- z=@3~{#nkT+U>!iedTr~dP^8wcmV5c z`pvX?vjuZuby*_K4NY0s?N(TJ7kL!u_MEzxcE2FDU39Z=uX${1#0qH_xv*WlpLrc} z^#;%Ee{oH=Z{bBIly6mv&!hZA4*6^@v zhA!*Y8Wx3H#M1ICoo6+VF@IiscJ_2Fvw*XY3rZi2BGw(|mtKB8nqn_8`6Slhu#uaa zl2W1(+tEpr6?>w(9yr@(%01on-rCV$GH07j8C!$Z(YfX4NAp63eK2UyPVB|I(lv(s za!*E1c{yKW$uy=Z&0W2VKg+*JL3_cX%5!h%*+o4M+UYMj`KtR%Xi9uW!u>Cbr7;Xw zuf>(0txh-0LWyca+~v=6`2tsrsUBc#M8Kh=b^clA)QE5TEbgIM&owkoVMCYLH);Bf z?jGlkZUVmhS02{?+V{ntnk_Bgy)Im6ygnLrF>F~vlZw)t1|eY3ROQzuu1cJUPK+#F zlODLGK;(I4&_{}8dN5y?TFgM(B?ZQyBptPk$@tp63KuzkaPq_j#g47+HB;GcQ~FK2 z-bK$_F8bZR!p#G&vSJqo?+rXY*RI{(G!+GaX*?Wx2zQn_2s-W0lke*$!{mBezoV(faitl5{SG zi&+2M(f5@ncDE(%9_{@0l`VWQd#3L;(?j~UPmH|JLZ9z;-}_CIf!0UH$Ua$$_w|}( z74Lkdw;qs`+QYVH&pXfV(Lm99myX^MNAF3YTbx`2y?vrRf_KIpk8>S5$GS@QqSVmp z4S|XqzXaD0XP2Kna3;sj^y#~fZBLD^7WTwM?KD*w{M$;}wSBb?8?s|vN%wGXYj0yz z?@(AM@Yz86Q_FwmS|=hb>D68J*Ny6mp~>o&2h_nQ^b zf8QQZW#Q%4%o4D$bACo6UHjtp7$$zsMJkmGF3i*2(_r(mqe){PchX=>L9w&)T~CeU zKdO^VHI0m)OXHe8xB-aYMz26wxux_}{psiSca!wPGsNpNWs>H}d5^IrQ7?k+fy{6;q4^jccMno0Aak2CM-RX&^%OK(}eLn2hI@%zJw zYANcRcdCXLLJwYD$TYjRkVQRNNBhyLmo>%$pgPnfSQk18KZx=0GztKEMZFgzx5q<&P zWo>poCWB9+-z*IBHhEFd>U4}e@Jp(v1+D5CyAI|QetMqwUTvFYr*oE!MAcMgj{k*~ z6&z`${WVYbKV@BXsn*$AKkP=WB5RmfX^3BP;^yO_IgG`MImb+5b&=wQO%#NT7U-Vj zqphJ0z*$b^!W)&`^?HJi7p^F-UR__H~0Viv7?c1+4Gc|b(x`^#qYu=6>k znv%5NGza(TsovA{`Pf@Cq~i1SgnD?)IvLT1q?V3|3<y>@*({LAI(U^= zefUR?v_V8IR|loYgUX2Xb#F^)VTO^N z;ka+=rkKT->CcRinDymFt2=xT;?=8c)6>Nl*f=ZS9Q0p$^<4(F$j`e`)t0O*3_^9` zc%t>t5@+&fj^FkpV*R zcxMMxCBbiOMna?d8vpUm4#APn4wTaX!upiQ_P_rIzh~haSLVFGe|xxyRivIU>N*7O zDp1IB&DdqB2e*=4wU*e)xNr@3z|Kf0C2)4iAlBz^fM;$T9=!_b2AtX zg!uQW1wyo(EkM-;o^$|RJYv_nu*(xNirHn23|@g__PT@;fjjQ;dVxvTl$snCyN4Q$ z#P$iE-s0ja*c?v^Ok9p8cPC|yJmteC4REm(SsM>wVt&tw9vSxx#D5g|%8m*33}%c{ zgkZa~GjNHWdMdf+T<;LeUPoC)(T1UXCfxLi1Pe=093^T%ZP{QX=SP?D*e9XlOOU(q z9VNky?2rF!Tao$x-HJ@Tk?19nzs$3NklEhLTQSP7AWXBW_Pyeas_rskv`+c<-+C|S zcbm(%Gv&gM?Q)gn7};Ow@c7f5IO+bhc3)p4k!#XlP(pOdNIkL)5%Jo~oZ4Tu=1ChI z9em*`GiBF3b+uzscjjojajq|=9Hv1NCj#0~VVgm!(AVoesJYw4)aBQL~kEg0Yd~H8_8|@}rHq zH?I7FFZOPh37O=>qm$jtmY;&aS(uM}}~(dHDn81u=l#8l`a zi5e*i*`_0_)=Fk+bMc5!sjA>}cV{~4iM%h=BO}6YAqapUs*$zqUanZBCjPX={daX{ zoN4!V)*c;Q-<3_~RQUGL(M*y$9@L{X#sLA_(9mG8Qe0?#adAPjWOE8fO*`{J20w9< zu-e^@7FX7Q-IogwP$yuG>!3Q9`{3sR$>!a=GhFEW*%%A1#sBQm$+eyxzDXY6*dgrx zG`)zOfF!xQ`-!c~4#m}=L39=C79L#@q(UsdwDsnB-oN#1S(?(xAQP{~p?OhoNwQgh8D=+%O)gu%|LxqtfKQ#&aIbuQA`){r0X?@4LSf6MZ6A0D_sj2NW=tp!L~JoHC4 z-&WI?UzjCy3|TpAOmj7BV#?++Ul`zE#|tc`p)alY#H>*V;=xzm4+b;93^28fFT_@i zd03u8uIw;1kLOxTTez1T$KAO9;7)sPaEOpdK7g4n$d823*PAXs)_ri-a8}7wjOs$f z?V9*p4nd|sN^^F4#va9> zkZ7smjH`kaZdvkIT`hNv*43v2q^lkwy!Om}?`*+|O+S`?-T%FA;rmn@2iR_4jB#N8 zed@5wY)XiM>i#!CS8zYWN=;7I_c`eWtEDVUzV!m=1_L@pO+|$r;7b5U@ce6g2RKG? zaj^=%IlxzejMCoDE}FF-DD4uJUuml*<;4it04hy-jr;Fc31OopbBCh^6!HOZ00EJ% z6!RreIs>)-n|~1wE5N}3MU+2CnE?A95O)a!$`&wClTX|HfKD33MLL0tW)2i>z%Qu> zv?c&q_`3-jY?}dh4qX3x@WmZ)e>ba7{P_Ts2rtL)YN5rIFs|#eym~=-?asY#WE)sG zU2OANP>>n{lRcWpL0)x??>?%e8ck_s_HZ(MIZ8*bmLv0yOL6LlkjcsEhab8mo!@2E z8=p$abAcC6x{{_kIYlq&srKO+KiRY{^d@K7q;#yEQ;oFR1xh|o>a=sS_hVNE8&`>C z*V6t#?RFC9@tVybDB%Grk^1r;07Rg50`I1QLTY1Ooe+R1LAO#6aODu~A1N#)6&1b! zv4!%jM*&6*9_U%729b>$pri2ty=Sl2f8it0d;nCsv;-hb;mwCSD;!+00iC=N59jU0 zx=E9pBi^NUzWt+~bC`m=R;`<_lacF0$(Tpsg8ks_nypb5`U7W)ypbxK8J+v1%eknh zs&bsBHnstibgWyu5*~-#b;a>~SJt(E7K^NN>5F_N3MBO3RADzb$oq|DY~Q8K*9O_o z{O3bRJ6eqLa3yxuBP&;c%2@Y6`Hj2Z`s~~=ue##!u%IS_r0wpn6b0&=-L{~H20g3oS=8*uY{jsEvQq8#8{cOY0`RfAYtH%OJRgp zP58t!-`6tqTV!n2PmV4!6GV2?4ut0z5~|d%tXb#o5(y1J8d;ig;$1kx&9oIhZwn~e zsUhPv8vLPrh+6_{!UOgJ_JT?B!QbC6;Qlgfh!P5}=0^0-Te7A~B= zmekSJ%^SC3#E)1>0nMSSK8o}gLywm~pWptTYar9m)Kwi`{;W6c966x<@xyWYq;zZV zmY$}#oCu~nH`)`Tw=zZ%*^h!>@C->>LiBJB^CSE#=s8b=+VISE3J5;u$@HRR88tYs zyWKX+5R`bB)ecs|idHmAuay+CR2g?k;k&ZKX$R7^S|fTshVT4O1&X?R;zq1rgAs{u z5|n~<-R`xP}Vs&f;bTegR}`~R_e9Ay}HPO(eQG0-f7szT|xX)UIG_9odcSZ|}y#EYV{ zqt#uG?Ph_=9nFkGDj!LLj`8AL&R}@ELUK)5U{|T1?$AIr9??X^@dd7J_`8~(*VHhy zT`~$LwMC{#PG%fyK2^y#Fgv#+rTuOhrlPSIxz6a}vN`CDGvO{u{BfZT0y{k`kd61ab@NUmEC;@b*TI^ zM>LCd^=r)Wkab!jYw7N8V=N|XrQ{YOFd;F?Hs_+N9_swFj`Neh=!9>+w}lIAYk#MO zq=2*ZdnxCWi?Kyxm&xGoVM=`0C;NHtiq3tiAZ?~U^iqDEw2&~+>8F@k?tOGK0JVd& zV+DgEqT6J{0TPwOX&#W^s_HPPC|}%MezI^e*L5~ceieM&ybj%n?33c1dfyKTW^z9T zeD40Lw;C^{k~BDs-E&iA0`?Q0_XDva(4g>&1pwF6knzREXYXhi0mJ2^Yu8*>SXc=7 zQxIlM2LehE!UA0_(_Wc&NdVg6rK5xoe5Y!MGizWR05>4KzJ1GoB_JJUoeugv0wCRF z&R^ND9BT()t*tuiSVH_~haQ3r3<9>^6KD+2&Zg8o{n{U|ymMg4m6cEZtf4a2{n&2m z!uoLrMh6Qsoqk>HZj_z5t%6&1Ilr^oKd6Nlf?)G>-Jx_{CJE3IdfM+K#gcW+^v zb|}Y9J0orDbiXs|JodS}Nf`M~KR+!?I4ZZqbw286SaO}kgoQ7At822CVd3o_&+u07 zIZY3G?DOv34qskMXL%oi=WXG~I}F76u2q=^AS$(9NqfWIE<#di<^&zQt1-kd?%U3c zSXq?nyzidN(tlwyt^noN&MNoH31;8ToHT}IN#ykhiCv^5s~15;e`6&4rdbj{yvvLX zD!5A_48q`eV$RC=Xd5e|wb&`XOC1_lay$Y1Gx2+o0upPuqAysG>T`(S`iNs`WvJko zmC8OxHPn=()UA_4@*Z?<`=MEMdkY_#kTZozn%|3R ziYV|&<~M&n=#?KaYj!7?D!3jbx>Xb#;0Kv=D1h!d!7c>6v0m~lcH;n+?{HuB`R-)+ z4%nH%rwD)vIf=7hGYegch!}AcGx<&c*&GoJW3_Z zfB>IwL)`*2YZSnO1{lI^cv1iab#4LS4f5{4WI83_JJ_A723p0EHEXUB9=6x}!gnn1 zUYo)ed$!mV6_1Zrj)lozj<~~OcwQbUjg8HjU6{n!@bL4xUvk3=Meg!_Pe_8Rzt1NY z+9|4XlJc>4K<7-^Bkk6s(q7$-^<4iRUMA>DVh&rjU1Gb=Yx0vlfWZoPw5yV*1%2Zrk@1>ecL1> zMtm=T003ICZ2uO3!(dzM4(LY&B4=k zQ0hssuIH}nML)fuW?j=8YCN>%ggB?9h13*=p(m^EH@rz4)_BZx`#F%UwyEhYD^uFa zl!UCJ^1r>D>7cPKABPVoA9T+Xb}F}I%AFuC&O8^){Pi5+mu(jDQ;|>IJGiPEWOE^C z4<9b6Y^0$g$>7peQ6N|fIlOM|t)hJ366t9%*U6Kw3$4Q&DI`1;>RE(rZ(Z4?q*}=d zy7zpxZ7NW4aIlj3OvtTRtcCiwf`m22aR7G0r&FBGC8f97&sR_2iFjt^4iLJ5A%3iG*ZSZZX*_IW zkD4hyoJ+>0OVfd^BDe14AjQu)V71!1^5wfya)4y}Wkb(Q2|gWk$cXD~;OWemdch2J zPFpVZ`yahJcdT3P#|lObpMFg*ok<#-X#qu`x0K`ZpCYMf+$H*sN4bo0PTa3w&(wY2 z+dr-=vB;0GUqOzw{NosrS7OgtXwKb+UI68h$azgDN7x{O^ueg%^C;B=#+uAcaA z`ojYRd zlyeY}QIqyE1pXHm^Wxl;yL{e`Czt4+87@o|+euI{VwlH%Yn6d_Qc{xB z{lX-j$o9TY_NOeWUEkBkiS2usSuQ%#TDtal3se)KZz)rl{x z3Wl!al&uxqrBTKC{YXPZ1Eo4%hNM&PYS?o#w0~MaUswO{R>7}ZpDk%g3&)DI>8fgG zB@9~LhnHT(wfA2jC>UyW6aq*xo$1~)9(kWA=~F+dmZ@r;G|Wg+a`&!zGAUtqcvJx# zp~mx7GXDHMDn)HS_B_QvW%>I4mswzxzR6pEEaaFc10V6}gb|SWRS8drR8X<7Q1prs z&vW8L`Y&PBFQgwa_kT5_BpRgg<5-TlZEPZ_PwOZU#Pu@1shT&NvPA|OgBZ2aFsJA8-r z#u5+898XlG$t35||AM4Xi}94j4F|j;#1hYZneh~GYtm=NGm>7Kqz^`d4oni| z!CcF9BTp1wQvTk_`W+WT`QMg=_LOVzIcU*KX)g}#<;+oBhoy0Cv;0fSnn(#RaCVlY z{C-1tWconFfh3NXgVfGXvv!6#VfK@wbSPE7B9jHDy@V|PITwrVO3La`yL~Y@p(pl9 zkzpb|vJBc}t+nj^Z1NAbqN>zF&b>6{3RsrGoZ;}?w>;&x*-Ao>eW~`D(Ax)*#cQ$| z=P|biJR#bRVPOKTPWKOBIa~W}hgys-4uS>?cctTQY8+ZqwO^4Gy zBi=In=Oyo$Dz=t){Qeygv5-G$k{(xOzoa4W_I&^6Vm~6nPUpx6CC{fB*RKWSlX)s$ zn;mf!eT!D=4ri{liF@Z#_4GRzDN{bCTP43uf5I?SB^2V!)Tz?Om6*e?_5H!_PMgr5 zPKi!`?*xCEIKTo}(SJ4g$#%@)Qd`Q!XJe7+#j?C>+@D8PZ6Y37(zjsEvX57wldi4ey zJs&~t>qAVQE-{lrk)A+fQ6~QP7C$>;kK7A!ho4dftug=DSM=%ZkxZk#68P4>Lvz*P zBgG&wNTLL#(~e6(#_03|7_JZ$npLKogmz`%yvmW+`h=%EvmN zPvQVv0Iry=U!#N+MA%9B-h0*5$D*n-l^e_dzyY8caHKcc! zjmSG01d`N~Gv*s^ZL`jqZaKeKWWk?cvrIK1;kcthQ_ml%Mq$O0CXDX0GVPoxB?I#A zVF~oi7~B~MEg&3G7ARTbe$}J7eYv$}BCAqxE`O1! z8;01sle2;m{;gVc^{1kFd@fRM_=&p`Y?1tSUtxIwH;ahK8Cm1|VvOe5f`!0J`DD42 z;0dp=;y~o`w5>h`mc~L|bA{rrh3418ka67TO6^*Z@~HIJfAnO4gabv2r_-3FF+IyvzW>LCHnNa{w4Z`MqI;jw3BVJ1xh$1d)#&bROwyS;nH1sI{df zkimU6h@*<%zqQTqj@V?3Z$O!EygkHH{#L#vICi7eUZWgO4>F-KX-s?KTM&LvXq;gQGl@kyLV0^Hgm)dT~JBsz0KWQ^{>trY#X6&-W?;v{Iy!G$r6L~N4|J$fF!g> zQOFRKG$&rqoohDsSbMi!){657$M>No__WXw?p2Q&f}*3N&CNqGCFVd*Gh5&tz<$pK zm}t{HCjziwWAmTiyt6WS-@!;*bzU{l}!&7Ji zFkdscB=Yj`-Me?+?MJ}lfjSp7k)){O4bX1Dyk>7M(gL0daWDGOR5c>QyM28 z9@=&kP+6f@>^x`bX<&5D)uPv^WU5}>@uXb@#OsTNPNAT^^Iu^4sjWMeA>sBNKD{kX z4tHKV?jtH})N39LjDNw>4}LkyL+>@Uw16Td&$rqFe7CwC*i+AUjxsOEE5iNT6w2Ba zMxH-qK{Kwk<3)4-`An3_*`NmcX`r|5r6*Djq9t<-Tj`#Ai#Dz_y<+>P@Dch9*f40n zmL<~b48KTf!FVaZ63o{p%R|Diu1rrCB(VLs;UVC6C>2qGcL<~zz?g7S?+yRo+y2C+ z@XP4ss|&uB51(*;A{?J`);!P9Wb5B9r`UkQ2yU^YH1RLZn{tEjt0Jo?(V(w8^}avH z&9JC%#q!bgqM7>kzHH=bj!Pr=y02T9hc~R85Iuh>O=%*iZ>;z#7M+)NetrDsV1MMsoXdSqmzBL{T&%R{XT;{90O zIM=nBR^wV-=-l65B)=}vcs{*htkZH-u0HEFpEQm*c^uK>{$?s154@ESt=E_FgwLB% z>^;PJiY(G>;{o95H4vr%UD6h9(YmDCoT3-B-llrp>T69iD#0j{z}Op0zIo(50ZKP< znrGHtxsc*4lp5huZSpqd7*qRFQM4CTaB(p88S+AN-HiRz*r~i1X5>-)6`%WB|;`S$~QVZzH~V;ODtk|8H4*nr@NhF-$q*5 z?ZZHAW-X&vVG@j~nFPyN^a|OB4mngdU`_!_g-ak*tE#NLtm)bZ(`w2L?`{4*hL9_Q zWQjOBzd)7J-`THN(NFT{JMFk)<)e!Ia>W|H=LzGVr|QT2CMSmQP#ioz;KnteDFKBs zb#3k4MY@VA`0Rq;>#u+3&GLfits^nlLff*lm-URU0zpEA3wy_iYwkW*+4zwHjGAzk zzcHODPP5;kw)bXX;agrVXQ6zGUDwkOn;hwxZVe6W>O18y<0I~7YZzdAp=HC4pKbRE zXVqhlPv;0dNWDG@I+x4K65TA8JYVzMlmTD$+p<@?9JgR_diDS$>_(X}&l4oUc zrm#s8NjQV6NazZV-=*>W^#3oFlwVC^owDZ)k*Mp)%j<2JE!S4p(%RM)efb7e^)IGW zrTo>L`rObisxbneFMj8-+9=h<82YnPDM@+0XTTL021nS)P~E zubTaJupW@P#IqMuR_pN|6*>K~tj44|Z?@{N{}xYcSYmK@M|mh9MF;fggh-OTMM1Jc z^IHLS=+wQXg3f(`&SU%|&|^=EKZUUvW1Mu~nqDQW+O@_h2|zG5b4tPjv&S(!X+sNB%a{#nZsc+{!5lf z2JHFLwhRDb%b;wP$+$(9cA2C|ksX>v*e3~A1lJ6!NBJn|19&`wUs3!ntSpJzq?vxD_)pU9_FE;Pzfp0c7k(M)Gk z+w9VgS94)ATC1|-(dBA{_-Ttw%XW6m2Xp8-)=AVHa3Ruashmf|dIw{>eLN&$WQ zB-LjTG8_0cG!ske7Hbk@!-wXrS%ShOYg>8Z%HAMGt$+#~EeSs#f2Aa1$ND0NS?h_YXvjKlvnv&6@8DC!5{TiKbSoOQ zS4)|wB_fI#!d5XuP3JwPUnOagOS#U@cC{B4N`$oPtT1veO>p#X=!U&cZX!U>Y=VBm zZrn~695+ERjl!sw-FvcIdYBx>|3zj&R|C{VY9G=(hR|gait%@Z+K}pSmKmCAW)iAI z_9}=;fnGh22Sz@Kd2yF&5T`=8UoK?L->o0f%c@Z}Z+}#$lwR+a4@F+Hz@M`x#t*k; zBO_Itt{@{LxvV?>4+q=&I6K5!$W?z9>5AC81^UGO_m$Uz>B2*V0i^atycMny@I(ZX zl4?NWdCX!4%Jpz%*!{_2b8E48TAl&+RI-(F;!MHk^UH-OPkwvOP(zKH8z6S{%58#B z_vWQs>bpE4FGsq+c)okeh2X{wRMU9qoA0vgnNoW41qK4b>wmd%lor~)YLZ#l@Nlb5 z|68yHhoD*HDFzsx5L9sw^A24l+&`0@lp$V-wxiI?xf6S|9=E{0%w!X5j+XMpbbn@} za$&eaGH+ie?Ch<$cB!t$$rJKV+DZ|}Iq4y7urvo6A&xjLdJ9~Rt24--nxnCBr&nCD zM>tG8ow+U_>g>-8JW%~ixt3hY>byOi1AM`>ut68M_c^eqq+YM0LkDkOC8NBvjg{b>7#u$e51d!7&} zr7+7eis;bFI7J4{-``saUvkAmZDle;_W^OS7e7^!xwebE3W6En^#AELDF54SSeUGs z%XF6!Tx)&leD$qtbvNX#Q}Cy3eA-;d=rPwpV5<4z*56LUXIBDa$2A-H=UQM;NJ1r` zgJ`DkB0>6>SsU2}zxPgb%XQC82HhUmvD%|ptK%}QLGi0@6}c!fq+ju;(Nd(G z?caK>G@5bxUX#IV<>NS$Sl{9`$n0C7)~rL-u1mbJ)NDx4Cp4n zlj3USZ=@_MDhq;=4)&NJwt24u>fa+R063=rm{QdSrHBVN%stTvWfUig`p;{k8`XFc zVH^AL}TvD~eKg z9pkFREka_CQ5NRexRRf>e116K1V1m`7#dshTDH%M>NvlvY~t+2u-=X*YQf=XUY3vx zS9X{XXDIaGh!9Ud$c*&nq?M)G{TdkRJ`LSW49R30xcS{WONE}SWO!TYvAiqwooOcg zJ}$2Jfbl5>R_Ge8&=$RZe^58W79AFjGTz<`&B={7FKNSV4w{+*j;hrqRKw&^!>iwB zEuXgqh;-Qb8nEqbShKfRLZcChMsssA5rZY1Mn2#+)9_!ZoarzN1#dJ>G`+Nl#AE%u zfw#${eW;X1*9D=SB&qatWa`*{+Yh7}znM;ZOfN66&k1?V{ zollnE|Ki+&U1z>Qy;lAhQ?9 zsL0<}!8ESKEJQ^nH`03FnTC|xNBTuR$%ikg>XCA% zX|xLxWitGe)@ql;6|@~k_~kSFBQWL8;iA2!-w78yOLF<>NjBtk`jkbwH6kdtjTWSe zm}FMT?!UPr?PX}E8&|3%xY}Imf{rtjPms!d-AiHx=Mgb2+S336cmym~0Qn*faRT5Y ze70wfN-@#w6ZW`+FL-j{?#smXCT+rYyt#Hq0ic}tiL30bdyd99p_HnU;L;d#^lzrq z57wR!^7zxE+rs*+SRjsawe+j|-K+UR zJBH{lQBPiOuZ4XwPBbnuWOf;JN%j1+BBDZUge23x>_O2?QM6I%AzZ?-u&y%1oM+cy zM_vpuol`=Q*qT{(jT~~tqA-h!q;_G}YrZg9gJrRETNz^7{3ILC9#HC@|Kt+TGCQ2g z<(%{V0csbniM^oSmrqkU5EucieWV6c;+DN*zJlgSc!K1E$w6e_GvRIVwO22S-i!Hg zt-5(BMvBHy$w~04A!}&60vWblb7k>LhgiF3F;6)u?u6)p}I{l{_Tp%0N_ zjRFI;ro8>-x9xtL?P=p@Tz_x9PDFfAq?g?n-KpD=CBg^f$0ry=0ru`w7k8(}aZnwtuiE+vSv;(62m29|! z|714^w9QI6ze@fS+c2-2-thRk)dqum!=o9C;TLO4OhO&+<4? z?6~+Q0;Psxhz^UELKI#X>;)J{H7+;>9=tl1eq&uJx*iaM^EsDgwo7zNk-FI*2*~b2`p)4^?rJJzN}t)ZMja@<3KwR?x*A`tm^!- zzNK8OW1LK)5w9e;hjsf7$5<`miQ@9wsdy@Ok~!`pUy8^M2joqK$O8r;rX8M3Br{w@ z+7c5VG||C|a>kN`jdM-s3B{MRvi5Fg;$qrP%y{mgpWmZJAJnD(VX912XKPCpUgtjw zoC?*H;zTb1AE!rldI2LEsdlcQ;)jf5enW_oCuAj`*$gPK#>&ug%(X+OY?I6NVAKW}Ik^e^m#550V0Nkpu%`X%YX@_8ixe|1fdWUsRA{CGG`8>H z&Uc`k1Yf>=aPUf^wFaJZCCv~2D0$$37Vt8|XGQy6cT>a=zcc~j`u1x%s(!N137or6 zpG7Pv6y7}1lr!QY8Rs5{`Fq|03Ti^g4wNRZfZXpT{+?0P-oA2KxzI}{x0|9ubDYy? zd#)%I7x503CZa-%4wh{}aapyFEG21r-gHOf1^wmZ=eGplgpP3D31aN8O#3i5MM9q| zPF8|!z}zsNbs^*}7-D^JS0JAXN={(R?-4Ln+gn?E0vlv1tFAj(c5%nSKwV(;Sph{_ zP(fb@!n#;iHJ}#1ggLwhl?Vf|YcN{|sDGS*;+6tudIoNwaR*uq8PpuMd}~LQ@0@m4 z6V#*?MPL>qgKs;07LE`w9(EfKvRaX2g+?ZLi3Bg%M=w3Tk?KyTuZu{aZJ~LfD4WnD zZaD*L(m)!L&5QT#7t)L zUl2dex!XZCx$_@MOb+_geJFlUbGlBFo6J0AK6NPAD~724h>r1@Pc<^XH*U7buRxT~ z$7Yf>lnkL>F_DWJ3b2Mriley)HH$^Pou<~y!wO>B6i9zk@r+8Dozo76TcYSY6pDO` z`|y)JA0n-{L@g+dla639H;@`dBszE-;)x}ZMOI_iw%pt_@;^z}r)Yfz`WYwSrh!kY z@RYU>n=*c7INwmgTuM!TdIuBNbA9#m=)DomYG4n5#&aq8J5fbtReud(%qKvY7uMs> zo?|CvD&<)#IiYoW412Od4425q^^%)#DSMZoT`hk)%*hjZQl-)p?NYZ_KSKog){`6~ z297-V@0(w0A1o3NUz2OAsF@o2{=xL5cwHIhKEY^pyk7KZpoAvlr!|_RV2|h5k`twT zPDx`YeMqyU%?A^drR`uo?xgeVxf>FBJOT~__Im+A4;EN#)-lDA{XL0rK?8fnfX77oXT;EKsb(40_LiU1sBlIY4;fSu*KWBj zt+LhrFp5O5tjzSuvJ0i_5=B*p)5OTM6V)ELzFeE1>+CvWDl=3C@>*D&nA&Bk09Rd8 z!!d)foG}!pl&x5)fE9NvxHb49=|WXzw+w3TMrLjr+R7m4=N_6~*9;xw=Is~DTKa8N zs^Z?@?jLWcBGq4c%!jhmvJbqa9rnHpcXu~?pLN?~EsvRKyo%3=sBQx52E4Nj+w8ZP zJo1IMe+|A~*w0DoOqT8R$XYsk`%8WYLp!U$`+h3^;@J7tC9mq>m5MivZPwktGfkWr-_XR$Rh{IgY z*q92gS%uGU2lH+z8Wuu;Lo$;exPg(7q^~5Qi3{F`hZ0=YyAz4%=mJ*~vqjvtFRp8> zNR?Iw{xZ!nzp@*SYt({Uq6E;$O?640s_R!Y^)d^lE^HqRPWZ}We1mx7;^7Cllx@GT z(KGug9?^M)?wh&{z=Q4I*NdQ*3K@Jry1IN3?%zMrmiCgYL3lR^FUE7PM5yyJ`XDCY z&v$E+5&vm_n#s9x9aL@)>LxH;olA`{S=`~zyL6Yg(k~2DHXE@0-0uQSw?}c^Sg9oD zt3NIEl=f?uE#3Tbn7T+iJdAxc+grV_4uVCWT@L6KfmuBfdGN*tG>9fUI4g|2K613p zD!sXV(SEZ!;<6agg+`G-s^G5J`Xcivi2S}^(G%w57bxHkE6Ekc3~q=pQ)hoKlOcP` z1ifp&3*Nz}cOzAp!v1ry{;lo#Bi22r*U+&U{HzFMd2|KF0s|tv%Gs?wJ(~dlHZoEz^$k1=lEDlJLU^RDsMdpw<1LR~m-dzY#Y z2bueLtf3SG9_i_q5_ynmbD2*_3`XPY29U#Rj<5cI9zwX`Vi$-${t_#quR&myh9z$t$czN{~sg0`hYkM>b+Ah~u6A8Ksb6?yBFXxNn1s1yF zCPNpf6Fw1Zy<<}8dB>*yP*UokaU$XU(^-2#N9niRyR#B5uv}=Q^FH};efXclAGhsk zUFt-_JRCljX{}i>gI(;znkFu)KZgr#e0!M}6~hgO`Q;B18QL*FGE&Nwnwwv@W^UE( zK6kgrKR9|^#$!A3<;icSags=mLKpoX0aqt@O^kFEwP)*=I4+}$Cs~9`YdT379L)rd zvQusj)FV(N)(HjY+r!&GNc30bvdEK=qe1IDu|AAKLrW<%tHfNocRq%Fs8lo6~KWT6Tvn&0|>o{?tgYa zf$wYK`vP#{k^Z&tAJea&UcHT`Ee_xCzw(UCl1<$CD37`f^y5r5A5mXl+Yr>q$qpgs ztu+_CZxE+MHiqHv2T$cFHoXV@V)CtNF$+TMV7OvXwTp{yUEWO)v5(kflCZtK+&3nb z#LC!eP}?I3I^cbHpLvXs9V($M!hfn=kAdQdK-rIh8A zknXhu$yigkR?DMhvVWHNm?Nn$?sP|Gr+B#UG`z&&tMQr&!iV3f|9{

    )E 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

    tPHzHt1Oso)27NedD|V)^Gz%9*%YNj{`0 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
  • A3gXXLl&$*=3w9H<7%vWBhTRu;3uT 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ØOqAkqPt&DRJ_{3sGMIGUNr~WM6VvOGev%cF^U-ES@BL%T+n9Bq(7F9wRNTD`TnRX2C=%vcOI3 zZ1j@!O~eWVT2V*!YvOf2Y^SSX5<&5_5cK@y>4jw?{+X)~>Fca9vG6^O@j%vlVp?7F z$YP~7ZcqkxewS<}F}++#R#)19n;4m6I3wQ+yx#q%ztWc+RTEC0O;qsKwh?`VrCP3t zG;fq2Br8PN5>LUQxGT}HD+^rEDZy6(PQ{Hazy6`2p+`4>f&`FP0#yf96RK{8pdjaD zJWo8~(RRr{5+QlK0=AA0J!hYKs&IXL)`FPCl0uQUN zvxE|+KvHqH=00ue8xe659udy+<0XQ#Um$w4EE5(6@>y?PD5N=sP9V%T?(zLTS;}>& z+WC6yL#+g>ZPil8I61o^aiEZwp{k0C)5+d~n}@&`!R#>(o6Ip>^j1E*-|})9m{ln6 zo=}aO7o>Q$Kj3x9Qeu{QhUX5b8=V?Is^kKx$Qh+!R}Q?`Z9a2GD=($K*p0L0d7{Cj zRU`C&A4!nAcX8ypx+YYE;4&4IO^!4-=eCPVK??oxY(L6wls4Zg=FwFqKY?z||KuF# zUAY#q{{#JM%0Jszoe|Gf zE~h12|JbEl$ZMS zx`uJMM3NstQ>K#(%q;yL*gH*KR(S4KepI`oQILnNJMm#3LubP(3@Rkq1s5vWG5;Hh zD_oWRH)D>Yb3#Or0(Xc0xibJQ|4*NlqvMsxj|>hoGy~4+sbW8UJLdn0rex5Il%6ApO}CC@r!PYOUoul2rMz zP_KY%fAwExf)IO<_%^=`aVzdqX^{{m9qIKj4%=x#*L)W808x2_%#?^IXCw!T zme}O}9j)doffWUWoTmWcz31)}^iuz#7@t@D)enYdZx)!;Z3(+_bOZBW$VEucLsEAV zp{X>SNhy*uo3pB=1AIXbXNLPUP>jMGeMQAsx{te+hF35ulBf>>bx+Oki;8lX z?U&YP@?;80?4qD1=BitE(z*Itb=!1V`+cpI&$TiO>`etq>G7@-AVlO3HPDpDH?VoV7D6Q)vJ-MOM zh18dilo%Che%eJ;yTC-?DFgAr34Gq4Z`Ny8IQ%D+Nz()LGC5OjE=zcsUDo=O6oAWCWWz#e0o8MU?|C1rU zo{~>F>~h_DVyIG;E~38#z09J`vO0)X`iEbvr+UDA27ZH>T2c|Vp;V_l{hP`}8YjAO z;^2}%krVm^kdmkXFf&Q<#-@h@1r%hzmU@=^p-cEii4O;+%LcmaMv1jk}} z!?Xv*Y$n#!wv!A=`kO|t9e85)b)>Qll``mo3NA{7%H@=`a zIo70w;~?b3+;6ABclf90$Dxx?$%0aT@8Jy0u8*+yTBpU$b;l5sE7O1ZZZsqDSw88&YW z>NSxomss{=LZAXZv}SMm_y4Z@k~B)L6T1a1yt|T_rM~LPWG&$Wr-(=TA8bi=K)EEW zI4k+X2YoFqj{(XQz^S3Gj?JS1uqZq>6Dg3&0qj0dF-MGYyDj+!lq$qC3;_Y!u^Sl} zJ$yg7%xd~{`T{2bC=B;S>%iJZ!88uf!`0Ym7mk0TThzCIx@#LyHMR8jx?|9HS}cZJ zJGU=mXSC@2FA=PWCEr8B#cbF2dXICjmY5?9)wVFS^v+3(>^YxusMLmzaphm$*No5Q zt0g&lUHHjmrJijN?_e#*ZmVQgD4d?{ya@uo$AHG5e;a>z_v@xmzcl?w)&|4z^Z&{h z|9_ki(Twjv+Xws_{sK1Q>&^x+*@I0L!H24yfV1}(uzcVa0kA`dH`>{?vH6MgWY9 zkqo)e6<;05#vAGO|H#Htww}Y6A~;gm70H6Rl_8JZWX2qy@J;M?u#YMmEuHL7D}sk?dU-n9?wQq=2(gG)nh|!-yNx~<-E6GWFRg0-+YUrq{PG2%YF3^~l zjU5BF?TwdTL9U%=2y2KoBU2X~ybO9PT}DTqn|*xWR9`l4-dp$PUD1FX>Csewv*04j z|3ltehGp4q-NG0Mf(odJC@D&ZG?IdpG}0|44bmL~3QDO+OLrq74H8NtodVL`-Fsd< z&$FJj*Sps7zWdwX@%{Pu;cei3UtHID&U4N&#~fn?t-OxZh>1>d_y^e!MtmcTrokO- z+e;F>qo%A%L%CA+Z`tlNMaOk}GwIAGb&Xc$@bllasN7MdxUjW<%vX7O0@`eb?{u)b z>D;v2?o1&V`LPr@9^wD9$CIj~z{9!C{RxI&K3K#sir$@j|MnHIpyGAInXU2mmibdr z5l@+IfvWwhla(J#;yUh3hedzl8m#d`Bm25*9jW`^szas^LR)f(fiKVF!+(Ns7zC!b4l=-rpb5axpSVcyE()fPJbYKP># zfYzgco1%u!8`q-gIMPPh1asDWFMViOEGql@buc~xbBBFQF;XdFix;FYJnw!co*`=% zcBrJkn)Q*=X^6;xSL$gkoG?l=Kp*8Z@Uo#qFNWc5;*&>%&L3vG9IR!r>_ zY0zT6QNlbPw^&J|tqQwj0a`oJ@h%H1$=^Om|J5;c>6IBBsJnu0lE1qin7M=VA5T9B zy)GKYS(kkVqo>=#Gx0f?gJ2K1_ot>|Q?gs{Yq}Ni86VfW)gIww0HAS7yv1<*YfSfw zxtOWsk39Qpt2%tEEyfgBO9T9vctjk=jsOiEr-v5VCF-klh)zGWFE?BO>fShi>0L(Q~w9(2m7dv^r@z z<~9{He9ZULN+6f;10kl-c-BXikmQi)cPUzHhExwYsk(QQ)V8|2dmg|3hY2iCA_x-3 zJ@5uvn(O{_*cgl`gSFf2hx~jd$!^e2%KGpUd`m@^GQddu79W24ruD`%5WL$2soH-Q zC-n3@zd%)%ldD#|ab!T?y6p4&nC}hoKAE#TYd7@HI#e#ErnEj(}(*_i;rrJIvmS4s_rdB_A=Uh zKlIyN2y~f|e?ohNx81LKXSOLNTcI;+SFh(nvErU!Nbpiv_NxH1zoh_0jT;qiE)q4T z>HE=QQ(aKri5}<`&KoKbsD22G?N2v6Kn=QXTRn7?I)iuma%xxaVQk8!`~PGOEJe|9 z?jyEU`)pg(E;2!Te6YP<$@3q3&Z%0%U>;>rxvi+tAB{BuD-@w*O`Y@pi?NVvTIl1r zglQSn5PT%o?d>Gw&Q0)##$a~Uo42G23ZK&0MQ&oK&k(NLj<29?s!#=U|5^*nH@|E< zz}R#k-$-_~HGj`@*Gq&JOt|UJgS?;mK}Z9fKK@Y5R1cYa{m%Avx`S8A-{2_`4s(3gYz#-V5DO5^+k`p8N3;ltFSsOl*q!;!mvz-%|V5 z`hH0KoU;U!(G-g=Vyy!Q$WAt%rL`et3v%J-P!3QZ)bnYk%WJLtq*_iibG18Z0=KBl z=A(u~rlF>P%%+p`YMJTH4EJHRV2G}%yvDaRsrRHr7s#$z?NEsecloZ;meT#r zuzUD>$2s3lvV3zsrj31Woo51RR+TS&IwWIzyI2uh{I5Y4^M_G~7Il(96XbswKVl%}QVi8E z;>V30wJjG+97@3&|Jy6$*cj`!aD6&$r)+l4Sg$&R5Gs|AKSOYX_{4bqMG3!+W4$YH zom|XFD_`GW=Kfq^*BwF=6piK--eL_ywpkM4B~; zbzWU=z~BK1jd z60*qGnP->;e|GTy=#62qm=XT1w4P#W7Okr<0)62itLH|Vw{39chZpmGQn6PTug06@ zKW$IDFBU8GR9dW+fK)1WfUlxouqJ7C=_#RD!gpzp(gwE!XSD6-&&u$K#h72cqePD- zPmrC_3omD;Z zcrsz;Ar`WyRzIsz{~#HNbJ3+-M@8{CfhNwkZ}NXhfcOr*Rtq1eyCxT5C= z*c2aBmc7k6mIrT)DY2FM(KuukP%}4m9vvOQz;!9TZ@M5r7S#aDK71H*W`ZV}aq#=< z)vF&wlZM&BpW{po%5lTRA4b=!$KTu~QqSKC*9~kkpZ;uJ_b^7~#MG)>amlGNC1qx2 zu%KaPO5*)+`L5&rrXm}MnHy;YjCE^$%=gYZmW8hCo{U6t)2+Xa$-*#EJG-lfjmfx< z*v)RGKApBBMKg)DM5Wg9DB1Lgm~fFgVXZ}Z&CbU41n2@>uPwIK9d zVFNhiQWh8=r_JU%6`KwU2!e!11c#-Lok@r7F<8WdO@QjbQv2fip8g|Ow9c6EHr$F* z0dby8m25?=6=_jcHNp5Ea~!%|jF6|x9vQe3Iq~6pr98uUpR#%if32o(J$PZcO!}df zl1qnO^-LkueFz*fn_OeS^@0N_zv>1gbAPA0yn%Dn1=zrz;8OQ@g(JR(a@MAY-~EL`#ZHCe!bMBCh0IaF2or8 zzONB~Qa#U&P11abubx>lhWaL$29=~U@*7H*NsJ7APLGoK?b)HNZLUme{*XLH(`fe( z5t8r4t}KPlioTAp?*0J39x7k7J@(XyeRC0RkzNHq@Df#WB8D@w)GW}S36mlbKx#6A zh?JE+(K_k!gAP$LQlpypIT(L9&_qNp=9B*rlD+;Q=u=^?>)ja~RPYbG1G=8yp5w5! zy?=htjx!|?MxOsGt+9~ykeymvvApKCV_AdN{TJ7}?x_zaIlrY88&&_9Tz`yc#*I8- z{47ebvV8!kZf-kemh&bzkAu=K+GsCCnO zhgDqhe7Ya6Y)2zS%Q^SMmW^RL?~_0*-+R=rjDv}S8aF`<@L8| z8IeuGA-+0SOZ^46e%NqPA?@{(U2%a)Sc>0HEmoy|N2P6^2Dt~bJynaNGiZ^$#!o+u zEw9S|IO(R4(#3u?Y*~0u65kR}2Qv+~GD@P~sA)9rcsFHnUU?GSo5t>+R^*RUH!B@_ z<}?*~nn)PHX!c|%CBlL!ch*aUSi35?mEDy+!et|RUrIp+`~2e$u6dc0P_@q%H^1gj zETd+Q=v^PDz{(T}=KL(C{i;owO{2X)BuJ5WZjZuF==0m_m!clZ%Qp+X3A-jv)J{dO zZi;!A{L1u;K-p%DvS7RN8u~zk7YBQSpX8GHqzQP8De11z=u_IinIe|d);43P3XgHK$uJknb#T)Dk)3%7u^QP!tIv^WETTbNNWk`KC^jY zzoSxBUbstpD^V3Yl&H*zg@r0AukdwKM_)0ifS1PQV(J%OdGdv2WgSO{KQ|URT0+B{ zBd;W%o+u|$N)u>gsoP}Mbk)mrR^BYAd7geWbo*TbdTQQnHyZm>7k2}dN{9}fT#YYi&pFSE9-S(Q2I73^j-`OeJJ5;r_Y`>YQp7JgTEqwO=^q z)l}n>QTKJaP+NgQ_Nc^W;)A)nldHjIoZ@1&(nM@gSKGTp@*~@3(8X_~LLe<6flnf} zZ8mhlXBfeLwOxnBhfWFr+@zbw7KpHnzV$a%&(##+)42XH!E~an%X*<%tR;V6G40Yh zly9$L387zCr)1r$u9y7ScgukSC32O zvG5i|rrdapH3m%oOXUPr9DPouxgN=cEt9I}-c5*=xb**Y=1>4vB z*RQKj`LMLB$bl!i6i=rl~Q;f^*cFP zG3tmHY_zogi;!Uce&vbHG_fWS=j2cRM84GT@U_YnHa~~*ysaHfJ8e6fL;|VgB+=U~ z8M(!nVhnfZbd&_mKRx7lT_aob=3Yx5x5ADL1&ykR<;m#O&D!jC+99s^}$kdz(^*g&07ABCx?7&peHtpz~}V9`1v**)CR)Ts(fKB-9Xd5 zhNklm9Hl0W7q_piYknzV5CdsR%Un~Ra9!*l+@$UA)(o}xHdpQ?ELAh2Cdl{>SSPrA z(C4C%3S)g8CB`6enwsL7pK@NCDXd&+TGCxc%;#=h9d(58c5!mdc2eb*;{fL3O;y^^ z4SVWG3hQzAP*6yN;7X=G>K9CNQr`)=F_F|}*RE1i^GPJD?_R1L$ET0^EkueW0?Lb_ zY$}V?Kf?L?zWDfk6s_yZf5JEG*JXlV#&Koh^AnCf%w*-;_q<7$ev)~A5I9o!+(udH zI-~Yev0r)2Lh_AR6t@^>(Y&b;)?RAw=X+UORk*x^Vm`O73hT&=0CmG}qjRPRRY2_{mVlcSf$%L78b7Bt4V0#gcBB1&?*W0C&m zx~}cq-}kfY92~{J9Cz8!1N7Jw~dONGg(6!TAnkVf2dy2VGdsk}J z_j@`YT(Xq+O}V7KuAG`fNkwgDe2b3uYV$~o`cO|rMBY*9$NWzLzgf+wuPOGZIyD4W zk97W0=F!^aq*!>J$mTlJEEx zy!(!o0J8|KT&O6I+mO&5_x;BY;htQ+MZ-{35G*9e0Zs^J@~3zf4MW^ zSGu*Gkhc&<@V(X$>GpIYi94E|oV|w6XrzO&>x`l2VU2jSG_ z`xM;{5Uz_QCx_gj$Qz!~dAh&DkSPx+?!hE$GXviraYj{G_$#w>d&xwhs$^+H8@bna z>%CR1Yr%5pQGxcp!Bp#R4d{NIx{CNBM*D`WQEj)xji{8@e?5e@ z90{BTk1wq2Q=4Wii8i_(?o{5uSAo&la4QknJ{o$qsk?QxVy6mUzvn&l!v31~>_;R! zew|nlKI?69cc*GNRD!>lzWO4eUkMles-_)gQ&CWC-oeEquVM?H59#QZ!GS9c#&H2O zd2@~Mpj(=+H1eIFpPZZ=Xm2WmgcEq(7#J9oM=~)p`&_}lj*Ht13^^EQ7+$th>IQ@j z=%?CWl!uB;iecc{gYPT}eec_YI*#BSa&qA3{y8SbykPLs)jKvPM~+2CwceKzmyn6? zelR8N4nrhRWu&(dUTXm7oh-#g=#L?CR$$y95zDJ##`%XOPY!rF5W63(L+1?o2!~2J z>gglF7m%ML;3-df>pNT;^`si4=TWF^VbD%bM1 z7k4>c#trqrDIQ9v_Cik&os@}*smx~nIv!ps8@$=n?Ck1jrJ9-5h>+Q{)$=G$&sp#j zB5wzfr(@Q}%|S;wUT^^iL?*lU=MsZ0F(EiF}4RE&c& z@5qN`V$zrbu*X16{m$RtW=!!Z{71$^mwy@9F|>Su2+WNzUYTiED-XC-bDQ z1!@O;qPJJOch@^a!@ah@t(5YTK~jwoqjKw|pA?z5aihM^yyWm)35pNBI4@2nkK@DL zC_r70BdT!BgC@cs9vN8%!iNx2EZXi#xNeE!(1ne%@Ob38~hiUuN z#igRxxUH?t_UiQ)1_qg74uL^IV`a9Pi&YCti85++r_WN%G^<6Vs8lfWOkhrlih5E(J}MIeHihMb_dHE>Re5ke1s%Q76O7! zc6Idavqops#Xh&!Nf~5*HKW6ck^XwWJn470=Yvztt}0jOG4?yPo?FQ{8NN@5^hj|h z(C=@PG+JmIAy2r^`28gP0_r`RK2G+-zn4Hn?UdjH4*X8hWlp{@VhLB!!yr^+& zd_38rV0?U>b=6K;IlQQZqg9UypBt<83Jnz%Jw4N4z$Fn|41w})m7Rk6g}nVy`7$qi z)yhIeU2FOWQU)KoRT4hkzWI|vZGx7Hp6VJV&9UTORp)y=8-{=mVS)`3%yev#=knX2 zUVOH4UXIuPYobU{3>4*Fm#!uxCN>1z4Fju}@Ni1++bo7M zkQA=Mu7=5@7y9}zX)l+ao^JeVx8n&`C8#t6@ty3s?vCuj>@2Nn;ap~JRo4O4`NzEk zN5}UK?5jgR4d70z=OiX&^<`vC6eRC*+V`0=-*Gj~_YMo(i2i9UZzsa=St|Lv?f3&J zpJn;v$|CA_1*Q*W9Ij!%`zVKd1To?9wx|YndjzuxdMB74^?%&ooE-yUTmfHr2KWI# zAgsdWCM6|R?9W6kV8GxQC>q~oejx!PW6_+p!hr<)pqQ5-2}W1@;6p<$5xxd5Uky7a zM(oF?0oV2vH8nLAJU-}dkHPKhvV3IE<};b4!O^FfdWSZbyxxDI|&P>fKd9@q=2Ac{ayWL_9Eln z=Hm_-d$46v`Z;^fBkl$$LN>j_EiEm@{TjpVxB)@3*Le#5If$6=WV%oV+Jc*3p32@V zA2~VlFN7J=!dk9Abr|fr!)~swEoW+) z^Ehp-eQA18K&Mru&U2%@mg_uW3qM@|e|juH)6ZGzyC69Wrke4`ZT@<~=A`Ymih^hDwYV1x4VlkNj;$oq0k z@!xs|I|vC&f9=^K2U$#fEg5Vl>y=-RNCgE1Jo^Ztm_k9(isrJXCnx_A#(K4?Kag|E zh7)eKX09fWR}FSvz|8C{#r^vPkF4%B%}GOaY616{ElG!ZT~m=!PKTT(C8&dEQaR zfLy@KbMF#9bJ^#>o)b>A@NyS>>2xrkIua}7bB(ZP8jc=Bp#|c{LQgs~czI@J(e`VA zcb^LgUWf<_gJ7{kSJG3qsAW&JM^;n5($#{_JDp0O7;HihUnquRcLEDFEZr3i@>53{pa`}a!umn%4c`04aqaOzRD9UL6s z7(4t3R#qS*Wiej+`og6v*aEGweARGb0Wn8PLP8yOa}19&s4)=Y;q_NK@4^hKIY?zN zzi53J)uzc7PegS`L-^vmwikY|uL1*SP{}S#{L?b}^Aufk;hU!Or3ir@pjITSiCw1< z-iU3#Mnpt}fG_ONVbia#E}&)5*enfv0bg@`e0%|4e}8{^jk5ah-_s?jsHk966y#$1 zw(ya==n?8^>zxOgC+00$Xt>qET>)8_2nfYa{W%(t*}N!t1f@rjs=B(mqGBlaJ+LlU zxSG+@`+AzVG|3-1hqaEy>RuGQ{X4<=d*%Om$?r1`oUiqHuECs^oP`an=cGI2Y*uVr~hiQvp-J5m33#X#@c9Tv)Ov)C!A zsT33x*8W9T{>{dF{0z&gM~PoqMh3E+S3sdkg(Q_c*a)_7oevhCz|mH>G~Df{PoE0- z!pQ;F2&5DgsbCbpuzLfN5hPli8iq2hh)d|7-}7b}rlfxIUpMJRVFmZ58dYqmNS65@ zcP&hNGkQT-22uUZ%gcjqIT<nbSlfz|i z4c-n;YG6&sY4Fj~nnD8^e94}QiDk&8wl{ttL!_3nW6uJIA(b*_EgaS*wbM8_I2NC% z#(FXoGN)U@`rZ1GMMT1JaorXWGx%cV=Lhr(CTsz}`rlr0vx1wEzv$@j$FIsUVtHpi zBB&bql2gc#ulspD90l+-cM}19{wJ?t(I|0b@jPaQys=bp8eJAX`}D`D2yTZ&zW=|x z))uWGH|)1G^9%GuS(`=jt}gFxDuH2teAQhP{y;dD;j4oRP_+NaYq|_2x|YkjkXOwb zR67}`boBI6l9FZvdDjg1XZ=c@z*>ua|k zK1K&Cy(6h;PVifO#K>sbo1p+2OK4G38&rK z97-Q=@dd`x}og(69%P7%{EyiMkgS!(&u(qo~kEHI+RYd3u zv=y=yP0Y=6Ox{1_;^N}v)kMc3Ca$(!RO}~9D+tPvT!GPiPRj|wvuamBpf--*3rc|t zD&47PaW?ADQ#25}MhyIVUiYUmG zYO<t6A&v4DH$!+RDpEEjzB>S;T z>iF_G@x7+hrN6d=SC=GL=>V6tF!mhMNFJ=JH|wL_AJ#++4lG;u{!91c^5k z6FNEx*g6o&;mWJv+y}?ch>#GdhoqBJQk;6+&K4IjyqnX%jn724ZheIS4TjhEA3W$y zmotDd@t?ehS$)v}DWRaWd5iLwn2&JwFZ=rXvNwOy%7%)*#cT1i4DzpOtWJ@_XPOAV z-~0(WQ43zfhyVG0%pX65tu*@N`n`kQ{xUQamv4Us;33`wtAZXJpkDa+ zI8XOKecqop>K$^~9&RDA)5+xh0}rFb8MrL>@+hg&H~bk!Qv<#XyDoc$HN5p*+vZ1^ zL;Jt2V${QlP&|G!>;AA{_y5sF6Q7!VIkg}qXnxvrX*ze5NHkl`q|_D#-R!T&06^>6 zUb7-JGt+kCn(OXXEBJ^^c>VFmU+%%X5Dsd~Sr$Nby0LQ$Ac9(piC*|G~*#;19LtLQ7lr zwj=@P)T~q)-}C(wXQP0CY$Iuu$83N7$bYQ7i;-dRtJGI3`WLXBLRRL4)YWkhy-{@j z!^5P8>;;&2ka)6|L1Ew3ujQUi&+u=~wleV-FJ=J$1oc}OV_ZIBL|Llg1$pDRofL63*4SHYpJKV z@RWw8Dtjx_uP5{0zVdYgE0ZaLy3#;7ym;wzJEnP=r?VqER<2b2sAFkjST!X>^j6E^ zyUw}TO5yAk{-f>u3_H6Jv-VxIt;*P2er?-w!y4Axqeo`^Mdg_bql0mj@6e^daY;f< z4EXsuK>P*OP~;GU)FJQ=YqLW8Wzrn*rvk#|45GyfCg=`;#lf&dMhhk;=3-BJ0nAH) zG->;!wn1w+;yPc#pi=Tu8@NS}V{Rb#S6)k7dmN@fBErJ(2nh)%$h-+TZT7&dV{>DJ z7X%2QEX~oX9%aDd0tFtZr!tB+H#cuwzYfs*)TBi>!{1nCOR;YUOJE^OJh5ErL7}SI zkrbQxQMbD!`LGvOO7*c_ew*TP7+_RxbIO^DwW|kPo#Y%m)pDqZn1kErOMi>k?N-wV z;YA1KMlW0)RCp>OA;~_wqw!@H#aASFw+}P$v!LLBrYq}lyw68JKbpY0mQQxm4JckZ z-W@!IV`FrcM=A%?%QSS^Hl}&vVO!B$!O>E3ZCd9~hP+BPHyYGWes=jS=+92;Pd|{u zs;VZ6V)+6pnFobNO%EQVpe!jISJg$Uwm2)CLcz49fsN-4nG|q81$?2(H3#L#UL~!{ z<*&n8NbX<`&{LU|ot+(&$=LUJc@f#7oWl$xdmy6K{}mSA?E9@tFL90W+SqP0>9+>H zx}m*j2s5;WgA$4++gf)NhQ2GN>#|PmYCV5G%IA3yO+BF1NaXILsd=Z0PmaNTSW}aW zmq18GZp9~A!NQto*NTrb?#)OWXtn7PS?_OS=))sy*&69)*Zo=w{^b(@6 zd6s=mY$tc;-4>$y=rFz+>f>l71}+8$nlY@4+m*2k7P(3F@>L{R0hJkJV@HzwMY)*^ zIgc8poAgu*UIdh_rN+87x3VftaWVZ(3EDg0eXqUFV>P83x7L-W^sU_nZ(*~{VncbH3J3-SFJvsMmqvJMdir>h__U);3%LW>6NL=u zh)+1&r7F<2%-MhGw7YT)tO3K3Gaw4xawzEWDb(-K#Ix0cVmf#+tgi4J3hVD_38KU= zTT`D43rVURyc)EPjt@=xZlJjFrRSC?-@cN}4t4R%#~)qOz<>pKBPn=N3*B@YHw~>0lq77*t)Cr!h@yF4eAoV-TZ1M z^W+Pj)g&&zU!nZ~G!c|8ylP%T6Aq9X01{x_NOI8)Zjtjh^LfP>gJG1E*&lH(r|I^cby36BminqxPph= z8*h$fOaUnDV3f@j9M}<|K}yOwKqaBHD_Xe;-|_p#*v}L@;-qb>XF4J6N?TT%I@>GL z`X%9CCf+Bx@~1(a1KDd|8N3~d^1hn_`zmpq>rtHgIE966e7B0x>)(eTVih#-Q9O%C zXzA(Qz}UVoMGbX&Yx`yU9r03bjYP`byMW}JcuxA0j~n& zxx#*RRMq|rc-Z=$W{V~WeE7xQ%v9U6NBGzto-xw7gbELqvof%9kpEp}=-xO7h?u6j zx(gs;fGI{ukoRwZGMwSiUymNo8-YXs#zqi7K*Jc*0lJ2LlScBZ&`3^LSQwsQ;mR3o zG3U24iwy>LU((V<7d6j5VFm6oD1Q2Z*E=FmA{EOUy()b6lu#b~cAvcOgs~?~(i|AH z>c1`|d*zZ>-FQdg-^&vAVx}$fB(}cKLyTXxv!KC)lkiiN+Pv|KB+)g(3>#Jk$*SFE z^V4PgboSb!({GrK;)nerkWLh?Ad3lQ?!yl1_?xSDsntiJQ1jS5%l&Nx4?Xih6LRI$ zR^#1!Bu&m&DV7qgwN;M({_J3LO6<#dm1Q@gIH+L0pMG9eJw)dcwfd9$@YFX9bQbT zl9tZUq%2BG^4t`tY*kTMrpnK-cXDyBjET!p;pYGxjUoGz7tnW5JY=S)y>vrT=+@T@ z(pM!}OA}4v6ON3UZ+XRc@m}z7!xY$+Lpw+Ea12v%)kM_YYy`6^57u|&LkuHI{lb;A zi=BIY6LlQ)Wji1tYh;3B^caF@(F!u9h~mu)PwW_k&RL-k1?w03&}!(&PXx1^b8wK{ zAeZPUGePknnVEk4Ys2TnNvky9*{IR>h&jyoJjz9T{ym5bZP0|P_r+OoKivqcR<~+; z0O?*F$wh%TLBvIs?i*i~#oUQ_)j35}ilk9#`ASt-9R{6Dvxtd^;V2OC@rM@QL`G(g zm6jE_WGqEn~--ou(c99K#%M)SyyHF`DpNwAvqIehY6^TTKMcAHyhLY8<9yTCw^Nk23g0kK_xGs>tZt+R_M z;125$Y&mEXW@$GdH{>x^Apxm6>bQ1tc~vja36swU5j|!fAL3iwNd=Z6p;@I$35Sd;@ z*3#r&#wx{wgLd)Ud-ufLXQq#L1UWcTL%}U&n5j?`cyYp z@B_%V7^`Y*Y|P9lTY!W;b?!`y%f2#8WDrw(aUySW-0 zF94UNySv+rZ5Z;k_E^4LHp%dZ}~ z!QQpLz8==e@?e1hxQ+t!I8tu!4qD$pkZ02Uaiw4|YhLc0=bJF?2jU5t+`S*?T(e=X}bMfkO?x8Z{BTr(enfSF03~;D!vVQSxwCt>;&k6 z{c~3d=@ui60yrymbadd?FnSGjpP-baB;f44fG`}UVHc4yf`;PlY1}`>T2UYCRA-)R zqfZ=kl-0FeQyR*S;_VM0akSJd_=yfd;1_48lt=#%5~9x*r8`ok9O&oQ(%k$kO1(F( zOkHDc-Q$6N&oDHs1klwY9`nR^wUxRllG9~#22~gZzX##as+_?L1y=U)Tr3*l#J273 zWHGO1*44LPbq7|Cce`%*eINEp^K!0w=}r*jEF?If&X?&*{!vR9y^>pn;duA=`c31L z@G8Ez)rzB-k;%2n)7}%^v{AnVG51j3lOM)p=NYOEv@mKLMWYsHQBT7&<+01Ek6bM_ z)(L8Q$RZY`w!H?*6EhK5W@aP+kuVdvsfgF7GoZ<#i)vgTp22L}gBk_WqspdTx-_V3mZYTnq=En+VKP*_2ar7J=?z=-|B5HKrUp2<*Jb$kQr{mx zOx-u$Ep@6+XeMr((!^FwS3=fiP3i8KxO9cV!Xd%Km4-L62l?W)`RArLf1w^~ zshG48cLTuTCPM74VJyf0>gh-k9`63ZUX{VDz9jM36Ylnj&G6(Olk2YBp$akR+@osm z-nq3TaAVXyzU7VkgP%X`DgRsyDwv(3#t$`NjHPENL5WM{=qSFsq5VT;--6+H^5Xzx z-SwTVJE%UPYH~z6;F~Cr{oNxYgI~eDf(P{Xpz0J95eWi!PN=*X8D-HK4Ljn%9c~QV zo*})41_+2vq&}0A<1yw#LRm-9b2{|d)(APfrd7V2eI7UgA%rRY-FST2|9ZX`7Xm-j zzHDGx0Xm6En)vl2!2N(XT}-Jjr%PeUWL02Pz_%~^ zcoP^bDCqcra#4o_-4GEJtdLD{k;_!f4n^yK6pymi(9(55S@u(hsv?TuXP-;F{JWwghl>0S5VAqTC9?tz0t>Mj|#tHp!^aBgLu z`~^R*ZzFt+ty*18fn73@44V*91{$>drbD?kw{uS(L(j9+L0zkvKci??Iq}D4rQM4LxAq*ZH zVl$}imV_N>l~-=Xh5?KxVc&!c$v+DB!?O;-e{BQ*Yg_nV|NI^L$Z-eU^r3UpobQNS zsz2$pMOA3UbWRTW!{br{;F`*zG_QPB$#z%sy+gHK1;g%!(z@R4RFknKPr`7qH<{{j9Y7<>+OU$7tLyY&X6%IcFYL{baSchlO1Z#LCQ zu2Vk!RJh6<9>IGe=#oFi=sm=!+ih|liJ~7^m`rgU`&{me9{Uye*C=a*K(+d3%pG}h z9@rJ1oy^p|k3A)Eb7Yd`YR-{-`->m+2XG$G=cX3WcFyS^J)r;8jE6=(X|mI78&`Bl zj$$SG*y>!3`K}QweB>S~s&<-6aZXpt6CdyUR@O9T)X;8e8&Iy^K@jf_;wXP;ArTQE z>jx6?l*Pq8POL%-JC7aD5)y9r6BnrCM;#`w22DeJ`po0J11JZK4?Y9xC=ebd#we&u z0pPV;9gU8Ose*I{ns(gaH==4o0B?elgk4|Yuc`DyH$H(f7m#Aa*u7hl{W2*pd{0S9 z3Djq!ZimYtudne%=Q{{1&{rQ>k=C2!R@wnysd}qR9Ec*_bAPdGN=ULg02wIA&%bny zAnk;moIC~CFF?yF9&>Ys3<_{j)vJK*T_Z4LxdT^e1<7nVpTHl~;VSG}Me^s;{3D^e zba!Zo2U(+N%<`4J@87#eZN_xlWw~HCb@Ie{Eq?~p`8tla^>Nmks^heyI?qoY+Oa5? z3b(lGlG7m`Hl;rvQp@UnrmmR-mC7-_BIgNG?ustHOAL}l>-H16a%M-bN*iR8OEP!S zW_E4p2UPLLZtQM&5Lt+6#-xW;-&0BBycKR7XXN*G!$VSVZu)j4V4L1A|j&EIQ|PoO&Y4IL(D(9 zC#&?Jc@I>AdwE^m-IaxQi;B_Y@^JW%PCO>5+`OhDsyE6#@g9}oYWi9i!vC4B-1TG) zoNf`qrlO_ovE^5`{hzoL|!>1@{#($ULI6 ze`69cNKSvRmp8DUt_~0KFRa{@I=Fy!9}hR;{64O;N3|=~JDgfh+ml95907b`^w~D? z>eZ?-%{%_seR|$&o)&_5XK4sur6i+38fj42B^JS3&)&YHc1^v*Q|8HGtn1xzY#ryL zm`!cA(4E?qk}fBNEeqr#3;x^0#0=hz?d|46h3RGYxwy( z{ht(~E>|t~1^poNBE_MpX=V|RW8RjZucLnP88{eixY4GqMrAHpE6aX(>nXG8DP#7m zAdV#KncOmA@RE~}p)&TtqW#1JOXAh(!wa`?6-pP%f6x3HOQA$(o&D19@upGW`a+cO zYfDhW*@7!wB@T%WseW>);%3^13`Kf=?iRz>kPrdswE9Kco$YE!#G!Wt@bMYGJv}pH zK31h+b}$oV@mb0M1|nFN&!9F#a$ga2ObiUD5pzd*VR8VdLkOA;=RNPiTq012kvjMn zj2M8N7N7v8Ks*!hMY`ui+6xkOAMY4zkdDVbv?*Z{&H_(S9>yu_rMVFJH+_-4ENq!8Z2OSg-R2D z-_1MwFj6y;+kt>gwXQ9l{c}5?s_SY}*re4t6i$TA2X$e{yKBU3x3ByR1+EiZI&_aN zCD|hvLQ*cn^+(V1H`%|?YSKw~eXu`53v<5rl)G=MYsz)8$|C28Puu;N|(j&Jq$nvMBfAfxAvbo zvjj{S%M5ID?YkG&D!6@jF>gB!s_%PU9&tyGZBnH5f8>&&`&zQMO1CX)4^AHx`8UY< zh@?Sq68tvXOLKx~5S~+K-;!Imrqqb}EzM|qCL?>4xL`Nt_LVAgLKKh4e{{@o1mxX^ zZo9V;Oy&$}?KlsXtwv4yIbNJhGh%guPmKFVHx{7=OTPY=Mx~p9g5vs*zy7Pk{@1HD zy5*~M!OB*$gGF#GfMF^XLPCg-7_PTqEwTd z9pLfud;cGDq5eD0RQk(oE|eY&q08!WzuD2?;`UJgZ`=R>N`5Y*K}S62p)UkE?$$!D z3ABh*?UBzyVM)yOTtn2_paw=rgT!uo@ld@%h7JuNReKENdkW*>d$dju`Y&K{KLoA} z>UxodLyB9mTMO;{evWZ#`L5O?c$&f?UqV4Ah`6zmbcGI zNm<#byE8F_&1^u%s5@BNY513J(B*W5OuV%D^(S!&?g)q7QaH8_BndeWf+?h{HkxU8 z6rG`BGhx4n+=VnrkwAj=FJfJt=-P?G0Z?}27ZhlS!!N)Rekl@jEXz}JD6rn%K)n2qo0)I|MkWjs|g0>!%iTfp0ffxb>gTD$4 zenLRILdYpkw*#^{%yvu4LA|v4>Zjl|h^y*LpV*WlOJv#j_nZ7Vp7Rix%2l~piJmg( zj8Jny3t1Cd9H7cSO_N(;1sI}iqOj2jP#qzOdQ*i_J8WLQ3^TXgsnS22n-@ka4`KA` z*K9blnNc)4mH1)$LQPn-Rp$%$@mBYWPqx65|9bsCtydJn-y@wL6l?(-8*L}#cOG2- z64d@_ADG?5#Vs{w&JCKmM!*3jFd0IqR^1g^1!-+qT(dTuudx@T4I9miO-4|UUi^&V zao=yzg5{fPE3$@WH^wvoq-Q{|fTUZrg3ir1cF$J^`;sa@e+>+Q*dHzz2i;*^0P{tf z==oltj?0zpjQbF40-Ovi*qZ|0uU{LD5FS%gQr-p@I82ivcxrL=arV}7Q{&xFFEB7L zpp|wCqb0yggs~dA#g(}sXat&>4<8G#6LmjQ1*VWyai3T><0@0u&6cmKfBHK0wa^ z!0p?YJNqCL1ZoE?fEd8#7)8@U0Fl$O{EiD7(xPgA2DTMwH9|s4kj<5>1?Lq%sE)bA zI)&yT=r@tDvTpkjyTMP*$qF>w9|3n`fyDsL3-~N7YCUK)eQY3K*)7n7q7I_rU}+ zlHH=pX1?p>_)t2AyHv>UmhEC+FI;pH^zPuuodb_(bx4b0(&`irZ`d81(C$;+6}P`B znpJITX;A~6QLtf(foKM8Mp*q}1e1yJfV)6L zfEQLVv_#q(8~4DM2-+Ve1%s5BtY3ih=J!1x%r$#@dbSt)QLn>V}+pz89!qr#6<$><$teQn-vRjLK?{hH5?mX=QTr8{O`3IvEIW(+ zxv+4A6W1Y6+}rNg0sy+%!^~s%P86HjvoHX~5$qgj$Fo0UwP4jl8Ht#p!FAFp=Xp@` zd~?1^DhQkCE{oxBPTPm1q~nOGxwQ0Hg(GvUg_oD-&^mxnFuRO|UuX^)j#VAQ5qDEa zrQFU8w*GLD2|EM@=tn?Jw>nq=kftR}t*Gv@*H>=$sR89v6o>-w!$As(Ovlpm!3h8- zr_*5#8gZdAEv&!ca{Juw`JTe+cvILOz#MjkumM35cwf*;NTn3Bv|NWjg4SL?tTfnG zaLRyN0kpgC-@k7-GKRei%{=ID10}@m^mupS`gYLR_{+3Y2sakcGyu>p!-##mq~8Hn zB)6h6SlU8Y9cFxUWzlRa`<1`wygn#>P@v+(u- zZ{IpXEYL8K3V#?68!ysM(cby0t-%+#kwCdc4q3Z$4UJ{k+f7YP5U)DRs@E=Sne>K2 zReK07a}e8xp{tA-&Ow{f6>3@_NVr3kUoBt#U&MWRJeTeEHBBT%lFTI)MTStwER-^q zM42)a37JENC{a-onKP7`5-Ayqq>@Ingv?{gJiqH|IOqI+Pv`yfefyl#^VGxb{@(X> z?Y;KeYp+Wty`}(L7NV>I6mNJ@wzU}%wR0==4yTK4-+mgOl}LQS#gbi*=!mZ2{<-OU zj~=-`^`>00P5>*o9pPKpu2n8?kuWpu8-aEg=O=RzV0m@k)cpdhNLy&9UWIH1_8){K zCyh6-{P^Rqfqc00S{PGcIg7`<#rTNl+;j}s0k4IbxLOW6J&aYjbzE10wB`nMaiD<5 zTGu;`zH<7ig3(gUsX&)e{RDKv;eNw@^K4--mssg(YJD?0pe!Iz7k{UBqv%DGZONdc z`xilag zE~lgGj_#Hl602VQ1HqRJMPnAcImi5RfdzVcSCzTH={`Gu{@&q%FGcQj3|-VMAl^ntV!RA%M2|nU;lO^w|99kxKY^c{PJqD4gcywnX7;R#4`y@sY8*%3G+a-i>#X- zsu{>vnfHFYgKV`c;s8hyJPutRWo6@WRs`t7vW;okm-Y)hPC^?BbMUR=R%+v{SqGO_ zi{nCPFdu*cfGMPt;(?sXp^^p9%-vbxMK4I3SlJGt6XV^pB?}V^qz)a*!PvTr(-njM zp#D?Y5D>+y2SkU5Pe8jAC*h!6v>z=r^iA`I#68-Zlf$t(laM0BbOaN(=qS%co zTUc6#_1A|0j-dE7L)A)*pV23)HCSbi=a%TED1EODL8%01Egn;uBS;=5)SfXj!h2a?UF1{(ABU%ibN3+T&^38B;Z%}f|FMHIYGMK^0m z#^(YP-bC#Z6c&b?sGujdm<>W5Le&#>W$zAN>bX}=wQ4xV59!_$JXz{Oo_=Ovg4FDA zS@<#gfC4DhxgnW3;^^pTZ~p`0h1~uefv>}p-&XGWEaW-ssw*JSH}9*VPx&$dI~*fV zSSrL~pg+6B6K^=rrdeOj46zB&u^5jP?g(x@@3{sG*r(5=crB2{hNZu5yMB^qpCpEw zP^)9EsagyIgWY2zHjoH-&W-6}A#QwKx3+jd>=21V=vPeMJKA*S(8D@AL3L>HErpop zp^C7(c$y-Ix1{dmr@L1R)S>c38ipp|99{;8l&j|Dp#IIP1l_MOOXg6-~LK}x|#b@j+Gd`~bxZdrY%xxDRMc0BKE&@Dv1 zMB#k6L=PYQNS>9B`O-~Rf~&r{uhhZd^KCbpg;w^`z9$aVUfq8H z9j7N2=J*)4hYp1nYyyUsmPQM&L>$R-xUFnvv==F*Z=Jv1*rXI%Z}`Oy^X_zE7uaK{7%C z2jBqF-C+HFMT1+{uGt~4=AZnapcRTljG_cHi9N8et;dc7K*TtV`&i!{!{!x~mlMHY z4V}Ugs{``8gsh1zk6j&m^X45+#(1rYv0E1;bplRps~i{@(2$veD)a(hv*pZ3%@P(A zF)zsgBgW%@WTpflAc{i3f*Kl?0)SusDGB$L%iE2!xsEd7uAy00Rh!A02)|fi2Q@wp)RP^sZ;?-W5uTAIZiIx0N9&h~S0~;> z)$|#<42Zw677Hxi%C$ZahiwWB8Rq9FN&s$7f(XEPqyFfw=Tn?2*x1Om5Ep8Q+I*hG z0O#&AU;UVntid{@J~N(#9dPRW1nLw-tE^fa=~H)loK?I0nW17DfBmVwYpL9?(jRow zq)B^yQnah1V-|KESU?Y-83TxvLkl!LKG^RlS!MB{AgIbhB;vrYlAs;VCfGafC<0D3 zpP74MlHXKTR`xDV*67$Vb`FlY*L>M_DZvl*5c;}EY=fi%b)!4Nk7e_jqKY#>RFI+K zbliF9w7FKvY71I5BL1SA3zRvHm=EAx_2v!ayIS2VPPY^nl^@sAwaDhuVIL4Pt2|$H z@z9xjb<|?|x=Hf4lalt#ZG1f!+KEt@8h#mG+7&2M=BMjQpk~U1npO8G!jGs`HSgHY zPtW$PtpM~9?Q^A0Gi1UjaJC!P>L*qwDbX6Cpy+7!tCF0r^&V}>&<8HV!bi)M^K8d; zER8+V_eY?lkp?<0V0B+^#;0f%U?Dd1qElhl%$O_#wB$v+A5-}3d^&J|-fY5@)m zaat~}SZ}>kEC$02C8$y`0<8J1+)%Mpy#Cb78%u2udaAJ7ooIdD^ZH0;Eyi5iP}K!r zxdIrA&{F_laV!%nb_zNpDmqTUde^8b+!2PHd;t@&9+q>#Fn-8RoPmKs^xQJ8-_!7` zUOmtZF4y*ILcxZsIc~T7{OCKW7g5V!<+ob=n;qc|)>Gz#DkKUc&e)EaoOs%1$8S&| z%EMD3R*_X>g(7jt07HTm94_pr!~y@_y?yJ6V!V20=c(E&x|h9vd!KNfWm@JdAH!RM z@$in;wUeJ*x#r(EEpJ7NO+*#{t#~FYy%&HOVbn=Y z{IIt64hTXqsjitA+qdZVUCLj-aQRd3EOI`n@c|S-LVHhWsr()*_NH3JG8O(}LwP?P3a*4L%78~-^tuBlVN$tC63 zbM2Lxwk;7QVm=h07Zh6daQbz;J_`_b$a*y)oA>MI+hi(vDYE~Qsq;zus3m{o$PuXE z&eTml`qT@>wkYe>KCvf$^uH^144i00i<^kDN*jtmaIAuQ4)giRS`&&Z|8l*^Py30M zGz0!Hh3Fk-1=N9q1-pgJlkf7)(1{2k$uT3?Ek>x_`U9f{*wqJB{z>Oi&2AiBQ3`Dw zDn$>Br{ep+KxgZwpD8&vjffAy7Ab9znX){97rQ$;4vBAnQqfOU^Oy1Tr@;y(8$_e3 z5JeFx2|b757+FX-KYu=!_#s8TcmhM~8TxsBu-M6;Uiu2!QdH>(L%BmvFaPrJTQve# zfwWaG`tG$b;YBpZ2-_+1x-nLk5Tm1XMW+shM=%ve9DwvN=X$EKgKbMsG)Mx9Ki z&!0b!SdOB0Vg15nh0;0$vj+_awqVBN0|=Lev1~7#GXYl)5W2}I^7JPTt^4Pk|ElUx zhQMRGdS}A4Y~iA%r1ew0>fB%s;FeSH9$ z1m;$Fd3pd$Xi)b=TJ4iQ_wdmp@r@fx+w8ztF6V+KFBbKgTAYmZu3au@4GR{HhSWCG ziT&jbF50u)lVD{tvkstRyYjWVx2n2uMiXz~S3B`)TTL9(G)WjwoH>$bhpHajpf#jR zM~>8^?#mtWO!*&{Cco~KUg((teXOk4Ji2s4P5IyOfYvHWAXoz$!`>$Kp(h{1Xv$t6LbEc0!9*kpqa+%4yGbn<_@RsKsW6vkS6$?5XY>7LmRjVl|ZVKq(QG29@n ztyWAoz!ArK2P`;BB}g5=``b;FgvyN=kZuQgmCO zJwO3uqcBLq6SW430FX2B*+Ik8vv}rQjqd*UYoG4;%bUI}yxEl$Wk@%MFz^5^K}Zek zP7<554o{??25edoW4($Pm#!>bv-F>q9g8FRV)71q_MM#Ut4V+2*c(Cya(e2rTi_uy z2P-vHcg6T02m!>(tTA}CeTJET@~2eGY(=Jjh78JmODeb$@rH=_StGWvBV@lH{VIP& z>hCYPgQ>Yd!gAM{)TZHv1q=%(@fuGxJ;l)DggOBRr zMN(u!4!zU?Y)oJXg-cLIL)waB^xHSMwLNhjghvQVraMQ@U$)g=g%{`V&1ya>FvBw@ zY(jUOmkmxfb$&vB9K|61#*|1)ORe(e!E2s9dlqlwY=34xKhtI9zi*33P<^z=g&s=2|E;Sb74g3hKi-B-!1O-{JW@|L0 zKBVgku8dRQ{aZ-z$W7aWcpjsk?AFv~M`(&=zFeC(-vPg%=)Vdz-f0Z+<5;-r#i@CH zNuKoo!(HfS?}}Qvk#B+sN7}XacJMiq86hy7-?XZ1GNevOtfh{*AJ8b}+ zod+B57(V*ce&)5Hyx8CF(u#6B^}A?^k%jq|g(tXGWDMEk&o2RPcVL#GG2hlmOY8cF zlLMHc0B?G%uG6|Pw--?K&5FeFzg^FnGUgD(&K;Qdht&>dtj>tDGhN;+1-7HD45U(4 zT|gzsJ`#U0-n1mgzu8|3VR#nb<8Ao^U>c2DNPK|hJ062cALEbZ+{?6fWDg(&`j z)7#B;dJjl95p+|lCj*XUDgmU>MZbiMij7a-{Y!h0N~I3b zBrM)s2>LlidRl-bEg%~T=D~*}ub@1KuZC5&ZoyxSsWyyOzfRf_n1D7S%GFfVQ-n5f zB*P&Kvm;yuoYRTo-Y_m>*=(_-j3?JKf;zn!6FeBKFXD^L$T|C-=t5=&r zM1X2oKa=S2m$;!2XY_(4eEZQ_q%y)sVvAr6CAn>Xi=Nj@>z(PQJ$-rN;etkAfJ=dy z(v9wetjEDCP^@|2gL(EYJM@>!IwstOrK;8kREWrJKcNx$7DBN>0f&m5QHg{efhPkw zM{OP}5m&dYtQG_)i2nHkLt+}i0K3n&BK35XMQ_N*7}j`dLJ|q zU)Cc9>g!=)wZL0~#gnDIj?<^s40HT*KT=Ak^d{{P0Ii0(dvxZo_Q)w*C=x9dzjuwXDpR zw7-BNxsxLfznqxf_wxT#Qh6KyH;bnKt;PM@pS`_4L(P402i~uMfPjR=S!hYrlRwQA zG4UUv$H{{!GK(mNd5Dr_vI+|Yh0qx!J(5Tv++vaSoCUBo&Tq;iL#b;MH!PueYRk{G z-^0TL=?-nw?`ZFOVnrj}jo~aWKYGYlN_u|7*kGXd*c0}ZMzezI0;iF*p#KI0eNCZSj)n~ z0+_dYGb&)1;-cL$|tr*#~%#)`9g70iU+4upJ5z%=J;+W*TgMl8*%rU`NQB7gtzD;4mtB^1U&F zIKat6{mjl4r6{G~IEIV+U%2p?3AlDwD+d)t&mtoJ&FjR&X@G{pZ~2;swk<=BlGvi= zn3EouLu2`It#DKow%u3@>{Z{i*#WYXLX~xl72aGwR{%^U_Q5o+tPSk7;r-)E5PcHX z9~l_oy}|k+Y0#mLoE>`dt?O+}f5Co)N_4eRPkq9MNl8foKiY!Y858ZUh=g#a$N}bn zjo@9xd32RNj7CsWD6Ao(uhw0BhcgIKflGjmDg-n@lq6vudk_uZ8N9tQ9HBLW)IEpy zfZ4KRE|1YrzyxJH)HIoBQ$n1UlYiMY-&0S3F%>*6oO)PEJp4p`PG<==PIc{GIvr@st z+Qi1x{P(v=(Y#U64(GM~zkZ9ZrH!_UuBir*qgYR*}B*W+L_y%n%g+84VJ$po2=hT^?(0K z_U2}mrjC}jHV14S9M(RSm6PWE;$X@9`zI~fF{%FNPhz8Cp<&Sc*Z0VqnmXB=n4Vp` zB%(rLDUG;j%gUc>EefOe>eb7?W$vmVuV>rGs3kOS@&EPsJmwCLMtDJHmNqAh%uF0j z1Z_`Rn>rhro;0y{+?X1*g!=X}`g_Zn7jKM-S`whCuCkJbl?eYYf=iMZtvfJNO3ooyY%Nj zFfQ}^`4!Y$)fy)M|NpvL(E3YZgvl*HITf!`RPFKW3unP`1u+Y65L?<;&Q6>~~ zzw6bqo^Xaqlb%cS9@O*-(lq2_Fs2io@~)DpDp(0Ek!J?xf)mQz+(ZkNtO+LWY0GAD zr0@zoJ1}36PAs35L_j27G+H~!U?+w`ySus?2ggxLL6+qT$|&I6c0S##*?yyi#_M9Y z1b1%W;pqnNI^XI`w;{fGZv5y)6Ch{@ijyZ#K0=XRafRhZbhH%giPor#w}lZ#X~^l1$_e;WYUB~ zE7KEQT?m4zZV9*lZjOI79E9j{&aztP!qc9&WG`=x}ce zQrFb)(v!HsMpcbtV3?3yu)2dP#BFkSL-&+NF%ntCgqURUL)@V>2u|S_egV^=%9zC1 zp+G$vrHJLqCA47=b^ODdVPW&*`6ckzAP#^KF;-F8LRKm_ z#^*1Y?G%Ir=+#K!R4aPp^LXb+wL*h3BFy#t%P0e!pDkS%4Z&U4J9L+uQQ@H0y}D$X zAD;e`*7GZvFP;VI3an9iE#(O0M`2v?+xYm1vmvVfBJeamR0J9w*41_C+a2%~I=5z< z6Ai0Yy3lxhpjSxoD&ss19^7HFY(oy1^AAka3U#!{WdyiW9MCErv%pR;lRg>$lc{gCa!*7M;B~J2_Xp_1wvD zRJmHJiaX7M0mtVY@#*0Sv4qMHoCR&u@S(*AaNt zvqbh|@oBIyAUdHrL7`H??(hb6(aL}gl|MjsLk96^baWJehP+%%D({HGO1JgwLZi>j zQ-4v6yVjS}N?LFaAZWjYBzde_)vc^@XRL3V!rfO{D*V3H@lC(asf2usVh(^B z)a|%738E4w8@z$i>oXn-Bx>k6j|+N!zf7LvAjkVtHYXv%Kq+<>){Ierg;U*_Saqn? zJAsIA3%;XdvRn{HZNRw8H*QU*fkB?t&3D~1W$WjK@Tx%&&5|2^U0Deu8}q3}$^aUMUGZ&EmSZjK0#QO>`O6sznXE5>eyScR}08scq!kOY7lou~7fEF(ed z+_WQwIOx(QkNour#PDt(#pjlVM`VA0KRJOOoa9L1$lE6fs(jnFflizxR`ic`wPfx< zKzzH|rUYhNoA%{24T7L`L-YV$_5<+#_3PK?*SFRL!n)hb7$(+6Q<+$VK5dZ$?a<1T!~-^y3Cf7mP0$c{6_z4As5J(u6~ zjzD?^-fh7Ziz&ccrJAR+xM5)(R0WyB*=yzw!=9x~EHWOGX!0-?r(q+}QJ~q$I#V2R zZXIG}VyGu}7=<0mgE;3#OP_PQp;f4gLtR3cnc1;~%L1%uz7D6o;lUEz8)7E&1E!l1 zmInO0IOdNpm4^&L=_SqLqe-D?j=URS6ZI-WDTarVVHr8q4^_MG(XDsL=|9*X-3Dx|{cXM4#`?)*y@Yh6R@T!JRESaqrd@{=l0LHMxbN@K(te9KqsK zQf+bUkb!~P8k3M`vwAu;PlvQrn{6hLGKksGh^|A%0IyR_5j9J!^UG zHP>&{l}$?Dckd?LityzsXF}hF>c+bVK#=&aKL@n>UrtdbXAmni=P4i~~NbcUPz;l0`&9A<-fH zg^OeiaZtyj&oC_ehTvRc$QB$i8;-F{(%fdGV!0~km^Yrp|P`etZoG`31u{}h6a3t$YA@6u(j4N>Oe zh2Aeo2lX)<5B(Dk)x-|C9eVLfl9;)f8O2isqVQo_UiONJCo0sbnVC8|W1u#6wma-U zUEGAE1L9#0F8)hm+FeR!3|h~LeA{#D6SbJyZnx1CiP)X@7O=J}D=TL@1-&fiBSS+S z%U15%W3&J$)c;hTR>lyHzu*}Lv9{LqWJN>tj0M>Axs9mJbaZrfH9H<`H5G!+6KU)b zo%}G53S)U>B&$ff)~FJ_!b=8%Q>&MWD2SAm9w{v+Bd)5a+E$<6>>zn8X{Fv*aT}Pt zba^D93Xer@ApSz4gAd-xK>n$DEd7z=8D+Z-hz2h8-g{1&EnD zp#sMq3GKerP;^*FrzXqg=>awoG!#GyL+MY_>AGWf&%g$`qDSf{I|3q_!gyRf0@jL? zS8{m2^?~HY=r1gGZ-N$yiIKMaxXEFI&E!K*Ebch?+e522M>Y_8HUuYVn;kiNwBO3& zahe_JA7ZG`)#0^~v-3D2W+H!m*OMaG@5h5HL_oDc{zJxpEn1uwtz~3fvY<+>2Yw3u zbs&9lJ7atgfZ&??1?*omFn73axYJO>u9Vci*7H%BSDu-GIOO9`xuxFunO3wuI^!XJR3hL~1fJEc)mzT+2?*?@TJ!K! zDzO~J(@fxvq%=`hegOpVkaf`<+x>QNfsWOxmRBls_}wuwvR=ae`2Z_TTxF7_{>z7O z(McoeDuLG%EG<^ivk|&FkUl6ukezpWC_;)`g58Fsego15IjQ9o`OVHp_qGh6acuh7 zFxU)%0>aK$09ISnB6D%B{78<>s_S2L)IPn%t^qKd@73@k=?5t4WRQ5?mCnMY9H99$RF&_*@hY_afrK_!{y_da0~jkZ8-=0-3>riXqF5;qE$a!??2F(z zq$9@nlB(eF8@T6;YH+Zp{Yx0X&5*OK67mtOZf@#5($1?8A>7t z_l9;q;CIhz6T}=Acd(TGJLw6+&9@0oVd{Z)RPKd#(iyb=ktCpDSnjdy%~0{)^*4`v z8ASeWVFL~$f&*xPjsbQJ&b5|Lc7Tc`Mk%Bb*SZ=T0vh}g7z_IoX@BU)r;VNvSzp@U zYDXo@ynlxh7V3c$`fj7xn z6+)42AR(UFD!9|hzZ|L3j`&{0>qlSu>)|7g5g90vK>-1f+=(jxjit4im>AxOGQ_^_ zx{pxd!FY~$@;chg-vO|uv6AQT+GNlMB0U_O%q#&ZHYjHJ;CkXsgS^N+rUUC7i2vaO zC-Q(gzCp46{t z52cVKIlV&c8fTP#_<%8Drw)T3HaG7C(~NYhsQNK4wXkp&5K$V(P`||r!LPKmG}4L2 zi!27jT^yrMiE)!(bLvA9-O(fIMsrrE89+eu;^epcr_$jP0mU#8(0EMRf%GPEh4)zp z&e|jD2a)d<$Z05#!sFuBe>CTaBcKo)@GGgu;ga?Kf(UEZ*9xVi(k;Wkcb;lg4(6azeB8mJ+TELzksLqc;B8pnP3)gqg zZ<>P@GF-m43>zwyj?603NjsuUh;?`?L5fIB4d%l)xi#iWJN*IFk)Rg>6KGj>m|>>E z!t;#yVN#Z&%d$gIFt~dP510IV(k5TMfHsg_)OvPkb90&Vl)ifbTEw7r zImWsQ5a%%>hTM+i3VrJ=0#}gQ&mD#SC)10(-?(PHD-> zXGRzXz*aFC=EmbiWNQIA!RdOGyd3DAgeE2K+_{5Cre})b#09i^{T->`64;aMZ09+&$CRc;DPEj)5h;X^$ydA#C6IlSQnB8c8`^K?%8W5or zR2SIrAZm!eq{wZW+-2c0Lb7XpspuXy4dQn)dWBQu6xV1upQk4;>6Ty{#MvI$2#R0g zfG8coYgn+pk^An;`)!=OCHx?WF){H3X&?~OkudWI`*dp1)WKnUQNj+RF;_YdT7|{H znOq*aoKL+#VImm%LsiIo2b#7=*hAQtxFc62>RX=%6GCH9i}ReXTd)124de!_UQzUt zkn?R}t^_i6#&zo|e#FWmxZ)I#^BYLsLiRsHMJIpu>=Y{9uV$w?%{uhs9%MS6ndpfEs4bDAi=on>4b z6f85fhRe@wN3J(<^TpG;7F?xk(JBvw@y4qTtooC?Mc7gPy zFnQtfP4}A+c0YiMpDZflVL%kccL%`)qDCMiyujC>JV;dvNM~{PW}j2`QZBy(%=8mU~>jGwNoU7Naf59V?7dngd`z0wXe4( zr=$^JNx%ju4pnvaW!|#0ZFG25u;Nj2bDKs8JQ6mCLhH>P=8Jm89#eRJw)2tKueaHW zQy2q)fNy`?dp9Zz{b+PXn<3!GHz)J^vahn#T|Pz_4QdD*D7fNUkE{#7~B2C zI+2$_id~wD^D^gBI+b@m6$vWO%04)>-tW;GwsX8QJv|M!!%Zp{>B&&m%n`yHpE%u& zBiC=-cz`4W3;5canj(-t$b(WyD-^~kG{OB5B!w4mBO?LnEauJ3PGh)E0o5nE#>*-2 z1x*m86gXOrdcSAi8foF3mB6ct;DFonG;v$>-*2d>KDlr#GHD0sH;QYpRhATh;9;5|Y(6`BM{97_ey|7pyq1rKr2Zt(kzCq+^L ziVTXUo%Wa%Mse_T4Y9PhfBYs6q`k*miEfOy;IN=J>@!nE#WJj4YXLEs#kDH+_4kA9 z|I|zSCCp67D=RyDm#rm4YdYCFEyr4ost1SdM%i8Y-5CG*nQk`D$V>!z+o7F~i9V=w znvS3S0ouB1y}H!*=PzEoAPhGxwdp9rgn)i7Knc`ixDWZd#z$vN*V(RC^6^jXeroz5 zv9+y7V))1?udBG*Dk&yu8qT1swvnl6eK~PdibM#2_5e;i*tPyuRn<-NhW77EB$s3D zmhr4y^wcsrW*p5H)sRip3h=T=R=Ay-le1&{_U%dT^b|lzSr`qcdiOF~(#dMwJ1&Ia zb^sQC(+v0j_L>U5+ntQOn`Wi)Hj!ohMHB0tY!zqP)VelQ$S}}rt3m-YgK7#*sK>W& zZy27$^;~1gp>;^W6s;(x&{JwfUMZ_1ttE2{3!3v36c9~g|Z1Otb-qOLzLH`z`H=VC<66L4T( zV!WMKXE*~b8~RmE*mQ$K;lI0os!}4XZ(hBEtx%wJr-iNj*0CuMa2OQV!o%yX>x}hy z4`UZod4u<*;v{<-RU)M^hDP}--`)~d3`xR*B}l$&jccqI>RkkVm8~2olSmc^zKKvn z8X~(Kx>~@xn}A!W8a^Oi#(J?-cDS#*gmo=r|I@F}Q-#B=lJ^ zu!ElB%l2-zjoV4*1MqW4{LJrL?+b|7`9wz8Y@LYF?F3$q<<#zK93a+zUN_L7g>7pi ziy-~tKYwG@raSxI)>!V+@vkFO&O@IYzNBsW)%6?`SigSK^=Sy@Q9A1j^OTDf7;gan z!gJ9Ek+ivp``1@FCAiBJR%B0qn;MSYlW7Na^??Vt?P$=~EgmB)N11;`czp3So00jd zrd2kJy)&uuZN8MSFm!-)mOYL^sT)-mGk`0rq?Zv6=;ysA9i9B35cEOB*`C&=MP)+% zJoWi&r$A7z8A6?oIIN?qi_{lk!W>*-D$@BpLl*@gKan8-w1XB0^BWbWIw{&Qmge);=Vv;{wc_V(95g3xZ}o}sBP^osMKJgt(25We339~*sRaV~VS_tagf%!+IEz^DaNVi)2uk36 zc9|5*C|N=$|6h+}ISCk7>~IsXVKL4OB{Dm>pb%mcej((9)rA!Swi5-e z?z~*b1i~xYdtYxS{hiresrwoDmcq;d?k&!pOg~qdX32D1gu)<`X1P zz_SAcb;q4>Lo3W`o;=A65n-#PXGuwJE@J_fUQuvm=XB>(_hlOwU7Kp2N{V}SZ=*Lo zDdNlTfBEKEk*D;FUm-Sy&4R(6BT||fD!J$rM;_S`lK?aTCWz$kO=V>h28)M3;b8jP zr%dGPXI!N?KMZ=lw-KcG6KLw0@LUk2rTK#foODasOtrZ5OPU;gAV-iuQ*`jP ztd^9wJrM&DFv66!`7G|R%+BQ-$`b4jRYxAK@LNOAz~B%vmXN9_wc{cqe|Bq8+avJx zqEaP(OK4ah$KMdLCneE`Y)lln_RAr z?^Lv1?+|Xi-};&J{M@FR3%{~!@5oeRjo-AcnnLD53%YT+-%BihzWl(FduTB@i^Y3Z z@1uVItkJiK`cD|)svcZq%gkMpO%)T6tLVc}5W##wJ8~Fk$?p5_WZB^ZS zWAEO_{M}81t9Cw{Sohjo?-2N<9hHYO^n!oh0)y?>Jt?U^0vUO=MM4_}&f(3nM?|b> z9vTjz4ZO>dn)Y=!*M`uoH5G?+57o15DNMb1&4-`uOZ6Gr$}bLOE7>b9>@ulx`y3zRxx%&zQYU(93POHRPV8pH`$~ zkf~m5x4XfwOO(ItwAVAN>1mHmOD{6C^+><-qG$jhS?KVt44{j2x^s;Wt2*t=@#E3n z2OAxxCO(=fa!tKwORqc7OR3@3I^%}tP1fb9smle|Yg|bgxK&-fCM4vzZC}1vKiNWz zE5a+C<~MggVf);s7MV7+>hN;?=(;DXl1H+$i+6Uv=G#*uTc{&kT3$ZV{oSPPc<5c+ z;ZC02RQ@tfluw%9=2*ke250p)+vFDtzE9UuHP?gwz(TL~%l)hkzjJ}+#IUQ>(6an< zfd z(xg`~;$L-6RXofb@=~N*ZHVrhXFdk}(#*ba=D$w$dj+KIUcPv#N>+L6mh}}KE38e9 z`9yTxyGh9?ewy9%%wxVYOXR9t>H`OUUR)<(>LstdoqkY9X}m^&MSc@G^DQmSqIT_o zgLn|ca2(%epa0ne)l|Z?Wo!lRDsH*JIKvqGl7^58w%MSzAWSeKnj)VqT8v~E4%{(n zX;3ML4j;bA4_WjFB<_nQ=aaVrhfO8jP-j?T0=R=^-%}d?r&NFV$6BM}3~ zsS#$7;vP6bJY(F>06@vExLKf3cd1xJ@NcBkm(d1V1co%Oh!>O?v^PV+3$+NT$6X3{ z{96B&0|$FM1FTlw0GxH%`>-U~;RB zFyEW!`u!`^ZtJ5|SP4vx6B`4kMg;K|#% z99}>>F8iy75b*{%S_w2JYQYtT0hOJsq9-+nH=?!eS<=$$xJ*`U$1T~qy1M?(leF)3 z-kdJaS5o^lu*!c6wQ9nOPwC2Cd^Hv;j2uGmzD?A!(q&ZpBsuebj|6*KTI7OrXGNlH z|4ZG)o7p*oViyN11)uj%ED}|7pkC#(cHlsd&Jy#~vbKy?X4d!tKb6F*%2jgvY4bW4 zd8nQa)!)P@v3D%@#_rV2i}uSc1DD@Tvpp zf0ogW9$nC#ft3Fd)iS$f=(IGPS<#W9@g$V(K7(WS97HDmefwnc=KbS~2GmC9L&L&K z&o6DVcq^rSh|wJ<)~$JJsOZA6YVN{fSosVBfEwJROYt>YS9I<;fcZ2a`_*xMwjB z86%?=#7ceyTs{zJ1xBN~xF0`$jK-!^tQ-$``#X9SBRJlR96<(G<2&qG7&qa@#P?u)E>f6uxq5&+7ju5A*{>#=n* zCZ(`at52QrmYlDVTkiia%Hd=-E_Yy|YBZE(Yw3o|``6_e*38zf?MPyMHPIC>d*<4@ z_=Rhd?8DDnTF2Q~v}kS3&Ccb$37KKp9e(ZZ5zU()l_SHWPE37oJyL5iHc7e9ZLd~A zYh?1lHr+(N2w(P@y>ffE5+ek3ULOFaLGAOj9j~qZENQzy7J)--@Zd0r0dj!Ko8Tj? zT8~CDWrG=AV7t7Rk1mUN&Q79eT6#F=OuMqfb^7yMlhpOKi%hK*DTlPssZ|cns{bY0s?>|ayVH!3PQh83BGqzO!2hVc6;!HGefK(fc zl~ZpB&4F!-W*ZCksAT!B%wp7#(|*pyfAr;%6VKl>7YUu?O0>UHJ}eROVTQwhN8jFd z|Davv=XdP6@rpM#U*N!cN~-ra>!f06N>~jNi)`%?=*R#EybIBc6~xKs(Hn2Y#-eM8 z0c3Kh9>^GU0zuM~1IwUfun5!=85gOkuD-QgsVe9>I>5a+ZvJt5&~7Mb8p#MV>LWuq zyyX|m{E9luK5U*J9;Vwo5xQw*f8SOq>M<&5$qgQ8AW#~kIPy^m6EuWy=UW1jWkz4QPjDHah@7x^aPO2};?XVM%72Bid zfeUh-x`mUpCBCir9i23@QwgI@;%=XtOq?wUp}{JH0Jjyi)LI7s;5asKE+33oeDzl- z^Zp-XLCQg6Pz)i@b9g`@-knDnnJKTcy!r?_1ZU+~0b zNqq70-$X^V;@QpFDSbCP=h9mE&OUK>q3`o`a}3k+JKk;oSc)^){GgLlUL9L^9KDFv zAVyA@x8xcRVJ?-@7~$LE`Wxc}-mvg+q6d{UsYO+91(kVHE%-uod;Dw}$wy-HFY;e3 ztLw@av^r?H&DyQan{O;)Yd6d6YvlGj?oG+nx8j&U-Bft=Hybxv5xe zcl6tm;_1d{zHIur`DR?`hq37~ z<~2aZeTxf2cDeQ$`+jV_S(vI|)q36j=G*k^hdU*M@=WC}X-0#IKj%}?erDIB!Gi;( za$HIK(!yS*+pVuy)%JDjpgafrQrB(1rtI;QM^Y8K&b};4wO;-1#g}UNLy5VR7k9_3 z;u^iV=&8&;{T^p`DbAmOW$gaYv%N8X)bXnTgU2{Z<(^$XCA{ZTh49p(qs+S2cO|UN zDVD0URrq=8Z3?1DnOb%9dd$_LRNoX;(e*5wso(DP)iRg3f0PuflD0uFz%S2w%DT$i zt8%HyRIQ8E%aykj*LL3&us@_|2iJ4vjKz^}C%006$i3@zb-lvL7w@?$mo8TGdw*>? zcW9qlXk?RlY4VK?)og#jbis+Bi>j8Ha<_b+R{M*sq`0@(@A)ytZGC*!Dn4!-_AjmR zxSQ}Y-h_i*xrB!gCDVnAk<%Nkp5vMfHKxU_Tl7A}ZQq}>huK(;p52FMa(Q#Ic68Mx zH*PFXo*%1ojxt{6SjBHlR`3|*^0-8;tdBEmzji#eIh7Y0oV=FFf&0p&rZ+oJec^`1 zw^lSzlqS{9E;t-Nf75tK`Ja>cRbK-N6%@)?EPA$Q8rrzy|&4EnI+sf9afo> z!VAi_D;vM1C8&lhnJ(@T4{ARvbDxb67@EhsPYTi8Pfd$i8t?SkS^UB>rK6cz!<)*C z!?e632dz64tgc7azs!6^d!=pc>SD2@N1aP219liY%51FGHI}PSMmZ_ILu6e+bK9C% zjB2~Jb;?~7tcH#9EoochN(~0 zUx&u{%>B07lfDvd*<#_Un^k?h*>kVGJm?iF+e$k*pvkA{J`zSPH!1o|Spfx<1GU;i zeU;FqzP(T0=l>T*&+RW8YE402{pfrgK!C0ExoLgn;7kqfwPvpI{ zU^B_*aZZ%I^i`*`Q-hB47(?w!<~ynF;$bVFyPJoIR#t2gzG8eu?Iv%gP*(u92VSDn z%D1n!?)!W^Zdse9KK0GQK;zYP=T)DzFHv5s9K0!N{Q)}8E0z}&1}R=%ysMV#_AL2* z@_&l%r}6`H?5qEX!w;Us6-yqF)?xX~n~j1vSTR7OOk#G|^lm9C_(OQt%cX zedQYurFc@-a3762o|!gCkz7%m_re>8LnzDM`AA`3zcH}r@vAhsYzgh^V?uqk`WNif6qSoM zP^t0LT52;FnO?6S-FVUBM%>4_&>&-Go-#ZB6A${n^)1H_?{UQwxDeBxQFP@(_!_F; z>4EWJVLV;U>M}Fmq;G1sg!WX%2TiPzUU9f7mwm!Z8 zWqdVXV`G{b&tk)y8r>J}(Z78AV}t6rqv5?k!?PE>RoV`o-YHA_ip@HBdzpeSufo~0 z^YoWTd!MQCS2S2}ud6qjp3@Dzc~1L?`0L(W6DG&%5u`UwQBQ6aJmQ>_eRr!v6+FQrm zL|=(_zYgsy;ryZMyf5o|fGTx5-JW36MDxHxoaeUdhj!44sPnhCPCpb?61kySQP0SI zj^Rm7$AI4fSvlM%q?dlkZXCw~?dN^sK4(^3TXNFxa3#%@P|s=_|HoxdMb*s0S+0GJ zG}_LlxYsOrdfKarmCl>XV*zrG~i!+n8SbF zvJ_MDECa5+70<~~%xKk`+Q=p5mlUK5wazsA;@y=r{OfeBnar0d&^)cD-X9^dhCf;K zdFj)bUwuFP%a^A7oIm+{07Je(Hq#jHdGS6U8iyTy2J@7@zXo`;aIv8~?=YYkr^R zY5nDulLP!}@4GbL`TXu$^xZtNJ4%#4;OeOtp6tJ&tF-0C1(EjC_suv@P^58J`_R@W z_i;;2C~ddXiCMj4hv0qHmcFv!{Fd@ zG0|5Z``GUNj}zlZcM4OqY;sUp`xS{>YqfBQZ{U}Aj}#B3i|us#WX$89YTdl`6~%1D zv%`}$*X}Tk>ms*dwGK=6D?{GYHC&_2kE4DXHgKe4Yl|PhyD(q%9S;jXFes>kxaAoyRitZP^ z`|XPXT(v`Q?`WVdzw~mCV?b}jES1-ESe?F;?%)z;s^ReNN_DHEOQpg$7TnHP&zCZ& z9Fn9qE>U1MZ9OiRe*MOEs?8Wb*IMHJ6E7aO4J_l*8(*`C_2!jbns-Arx9$7LQ+9#l z!rQpP2`Yv+Df}J=*G2~?DJ^c&{^A9X+*`NdHyK#^<@Dt(JfhS4wBJ9~dN6LRTp(R$ zwYAEGZ!xc3qxhEE9^bS*BR8~CQ{RgBdAt;!P~7-4m&eaX*jj+S;)!9jAH1sB&0z4A zj&4EIUgMR^(tWagr>!5nkT7X&I^Qv_>>GXKV928ivFUZ*M>lU&-7bGw`6NDr7Cyse z>m?C%hY5>3es`~^DtG5fovoP;+Tt_^G#$_0b6zj>CT6Lb>H7>xHlHUnNr`tDoXPkF_)jFOPtkELNQugM)46+-9e_LUqIn z@@jlp6IJxqQ(BvwNPWoursJ)lSO3VMT}E~Zt>#q=F@^}rt@a13)Ta)9R-JU=s_C4Er0t1OW)0>|Lb*B~YozRR z6nz=Wt^^N@3*Rl^xDn~5VC|dhayg;Lr(<9AH5-m1^U2eD9uD=m$6t&d3y{fsw`_R8 zGWs0Fjoq&Inr*_Hb7l=M#GF`i^!dNl`;;w!^Hcsrp+E#4w~t^X3j!t~3l3 zUovNBMw4+P*Glbv!yb$0@7tW^z0RjT`{tjM6F*g^oSd{LlJ^n=^`EETF1h^lrdY(X z3YC{OTKvx9A^I-cX?m}4S4z5GW+5%S51VKVlR6;J(NA(rl6 z`$1$>%-4Xtc03f^Tsu6Uc$fM$zFKFC*#)Y#oWi&QisH}9Pek{N=Zdp=>oP@YBFjk5 zAMz|FPqWX8RG}k)-Knho*Z|_z85{Kvd8=!?-!PwogzD zwo2SbErqd+dcHSPJ~*DM+AXZyJvx!m6(;5f$8jBW9FQy2V&rIiI)-iJ8_iiwW8~ zKk~4#WoNmGx2n}&oKVKWDa$#Sza7_%SuKK^TnrfKDb zO{_Vod7lN_#r*z*-w!HY$hfP!fx;U}Bq)#`d}VBACa76``)EG|h?V5JUAI$ONk0 z-~fd2o9bY{@*}V_5xVE-~)QOU!_^?e=^1>F;DH!_M3Zwisai6z{w3Jg&Aa$eHs5~rBP>zVtcwP9_w?sPJ z_^ywqx8JHrjCkbapBqt*2#OBPo(9pHP;&zvfr`aCz&1-&D-KI}E>h^m6pQ39ac_RR zFnak5CSdjrp`^rYoBV!|FXn%ChOc~gQmFW8j+^FtSH#v_9zH9eI+AK-4Dv7-l4TPr90m-8v1IFwv2hD~fzdIdJ_9f$1?0qiDqwY45eO9W7ZGsoD)#u98?+Zy!LyrHM6) zm`;GHoZ;-NH)-m7kJ{OIGsUv(v9^96g?g-2sFa zfT0ceuSZl3u+o4n6!?r_IDu#eoYnO&+L*<}0st-_#Eu@J9?@=FsE!Rh(rI~lJs{Ko zfHA;q3%Y4E3yuJg5hPAMfqf0CgF#*B;0NG=0u5gJo51Zc#cyjD*oi&x!Vsuqzf>$x?g+;!w!7r_MluhV7=xTH-k}8WhD;fCy zLI#0~A86`)-R5 zF}b<9AUX$(`Azlpph4Lb%0UCkg%Sb`fLa4QI}q&?0eC(h9-hbVkrHoX(J935p{NKD z@G$>#2U1C(I7SpC!eG=jHJd>?3She|B%_K8NE12l){mnUQ<&_}#eQFJy>+?Rd#&Vi zt95%zvpW$O!5|mrOV3es#ri#UV2d}SEZhkBG_o-%{C*6vK#A||=fcPD+RU8YGK)P- z>bUK%{Z;A+$B&0ZaF`GggTAhR|6-%zo@(K%i2x&kxq5zcPL$!49QBk=zRitIt6n1* zHY>!K3cbX1`O{}g0atA<`a8Ct z)z;Pqh6NiCQ8;MW=y1Veg@XYyOBYZOhXiPerV2n%`wFWJ_I*reU6_l;B5&7F5lTqP z;jwUavbt*9`rs;QSyd0OA{l0dndKQ*saZL?8@IF>g2>aCU1`g!3W&OBN)NBJOFC|( zIfm3rM7}Y_Tgxwc@G4qMJblRTktT%k3Lit^Ch^l!su@HPom|rHa9)`GlDMpm=5~dh z-El_I^UyBOFnSuiUb{ceMYBuscwZqz+vVrApa=f}8A}eLvPc^8+>A|CL_?L&mqm`0 zIVTNKO7^frt69U8d%EM@2 zK6HhUnA?GqZkDpcL5>W#RneF~6{f9CA$cc8_S*I$r#*H_Lh z^@mpRjXNZ~Hjp1hS9Xl7*t23Dx7j^JUKMkACvtwfrQFFjH2QK#SCm`W; z3k*=V4}U;t$IGcm{XFkvcD&b!0pFAmYhvhxIe80iBF7GSc!^&1V4IrBj| z(Cm=7m%o9oAq>8^L(sgd!8I+JI8S7Xfh!O zrzJNvnNLtBgly(CiQJG{pH|$`t^eZ5&En(7kSvDwb86aRdzIBE7X;#@`_y|y;bc7v z5F^=4`jgSiWDPc!JyT~Pt@StpXTKX9aVL-5`C+m9D7M-oN&6!*G<@id#O<6GaqaW! ztdw{`0~S&kVDm#Qq`=UHzk2~HouIic(602gzUvz_8V0gb1i#y-Wd2@ZU~vVI*h`Wx zve^q6CqU41R^(h%{B%V|4mjFvS1ykxL14~sGy4ouP_9BKa{abrOA+yDg6n>X3mcrXp%)2k8JLc5&MwxmKhH5A_=CW%^BVU)vC!gb?rauAF^|H^Ds)JWv zfdH=NxZ_0k)IUjL&9gz~r}}5%yVc5Hr!ofT(W z93+&c0*8=UetfYou7a1B}_)b|13xSH2?N4;>E+D znao*C+7eKvzgXIyUNnDYt21F@x4z;HBKlz5%@stnio=7Z*Twj5V)B1^AP zuI79K%QccJi%LceaX2p9Wk^wxWRG4) zD8JsFoA;XM)?TD@HLyN>zk4+N%sZyYOaBz}b`pLlz-cUtY68&;u7U0Mu>m9-S?Ibd z2$X;`LA=8AFRoKaPDjd%=s}3vBv7Gi? zupAK*YiXNG$y9=MWmEJq;$U&ve$NuY9}6jbxil|3lf81|>W4EQtY4^9tSnfgWx8(} zP)PaHv~!7td5OOHGeA0ddk3;DsG267|9z(-kFg?qy9L9}9BstEef|yh0~M^fKSS~1 z*UIf6&OK7R&sFqE?6Il)`QGhE9j5V&6bA`f&-yskpJ8Av6!Ut8Dev3CQYA}Q9fhv? z=qb*Jo3bL-`@}h7t4Gs1o)N<8AK(V0o$i)_+VfKQ>L%HAdFjyaEM?!HV?SKtffeFe zi<9M-bRW1T*teNqr@yAoBJ+P6qpWy;DWA?WX#C)`8=1uOJPmCO!Nl>~hQ(zUQq7RXWSEQkcZS(-NECIEYE6 zM~!0^3he_0ie$xS96E^o;+TaLEF*eTF+|r_DN+9DerEkp>1KMSOC;uoR=4jEN`u^~ z32LdIb(sFxaPp0#Tpg39LuR6ixx##h@)F%w=?}Nca%!yXAO02u^1H0=ZH9n-WSsz8 z@2D5)Bg6UDt)VFLC5)NY8XBw~=U2C+en8R(eO}j~(B(5&yDlwhd&HRe`o3R00?wH} zkm>-T@&b?s&dA^g2L?3mHf`#p*YUA#gc_Q2PH^9GrDiP5)zXfZ&!36l{A6gDfL745yF+*oeX)jR&P@ zJAqbCsQ0tm=OW+t7}^{OR@Nwvs!*Mx@{N0^5qToR{SRuB`gZAmU%Av`hm{gv=5 zO0P)qROJVbKCFA;AG025+6-$pbHcTk8IL zKI#T7B{S(C$!U=ddMm{EtxGNHP$RjTb_byf*Xzr-ArxHcOM3#5wXFT>gs)LfzPEd> zAvUN}Tx<%Lr-&`J>5#of)hn3U!z6bSFsb@jnR3uML6s&P9;n}zWF6sp=le}qt*T`1 zK+-Z|@cTtL!D<_=ua!Xtk1#EK;QvgnYL|3@jd7RSU-i!4I2VLw7RJi9NHIrSB9ca- zem4+?;a$*##>Ig{=;`}J$dz57;;$-S*_dtW7H}%u3H@K5NgX}iRDq{L{M0tak?)HOtk-f$PZm6~n6iR%ac!Q&$g}LdZ2z*f^abGq6{g1C z$@-GAE*9jO%492@btGonrA{*Q91{9|s=HK9l$4Bsmld~@dR6ZxQ?UU}D+*#0c7(u3 zOM{~IV>rH-kgp^Vpqi1r?9rU3doLj-tZatnvtnB!vCq_`EK-KCi z+IqCKJRdvbtAwJ~*OaHC)=hFp^I%$C8G2pi+L=>7VWsGMhG1VX3oX6`nNxAjaS{;G zgd~pcI=gOEtc3^T6Y-_?j7y)U1*z9Qnf%O7;lE=hr)t;u441mg+OIq>UZ}|06Rx7K zbw>~V*UIbkvx!(GQ&v{i)4NV{c9|bx)|-o6q;v{pODFSD$-FZsy6KHst;IRgPQr>4 z66zNmjY3Gge7D)QSjRFjjxb1YYgbuea>VM<&wV^$TPw z?{J~BfVM-#W`9nqo6x(uo+XVcg(2Y{zfo3&0&gQ?QrL4<7mzS_bK~-4%Ph`)v&|r2 ziG%I%SM(E$txZw>^Nhk4sbU?Zipn$MN$I#4`zW}!|0^thOpGm;Z^oo(`5XU#{p@rY$r1eN44s%Yp;H=NX7GsWvpbqOBGzCe%i zqW+H+VFb4do4Cjs@6aX|ktvu}f-x}4U1F2au{`x8=*p0n$t3o}t|RI|m`vz226__? z@sfa1?D>=l>Y3Y%x7|5%_J5+poR3UCxcBOgZN555XF(A4Rg|St zGBa!#cKWjDL**o^>#qWvC6vCG zroNEvrCiGVek58z{-YGz{_l%W%FR#Iz=9YsjJD>NR^+M;-pFS>+(Dd}4KT3nQY(ps%y`d+22KflrlQ#$ zV!MgcgViDjGvI<^8u?L?5rs@+s#2li3USpTWYo<#X}4}|XH7#hr82C(QiTxvn&V6? z*=x>3qk*XvYO}}Z3zwFfuon94{7S#<{qY!68$<3Swp4(==~+?rid|>ED%^z56U~~D zy7`EHR=M;i@fp57QchmS#rJFwUKCctufJS?*SWUVK7SqzVWF(XihN%OV4N;eI@_$_ zXnUD6xgT?$4upRYg_mHKdcPe?3}5F&*9w}ZT#2@_a|`Is|KDw8g&v)$mm>$CP0&`UW9M=i>9;Fo(MHES5fr)VNd-x~2N{2cW=w7mT2Xxs^A6#P zv9uLz?j&nALlIv^mElfwsxa28aq?=1_^m^nMB=Y!kpbKk+GwgY+Sj3TciyBPhh}k( z{9ozV**UOssFoM3EHBeUe$8f)y^gUs9shEBans1-^Y7^PrE$9IIY7*Sd`dt=Z})Q) zf-gbG-}%LKm9QNai4sT6@N(fn`PyKPusk2T zf$b*uF_J+lR^sVAJsp9Rv=@sHyvLlZhaikau}Vp2HE&u z+Kx*~wOz1SRizna$BbeDRAR7p>M4E;FoOh*Nx@Xl7|a6Z*9Mz3G4OA8oEdQ4aB@%$ z#3+zP;TO9XH1Y6x`!`j~8Cl6d;$VgK5tHy%-MBO|I9uCR@9H-(We9Qo#nys4ZoeicT;&dZXKPLAC4v`I&q_oT;}SNT4?2r_eXe9Kgjj@p>hd>KR(4Mlhi0GGJ86x<6LDD&Pe<5VmHvOyv3vb7G**d*UqFfn=5Wr^Sx}K}~+?B2SSM zLMc(tqR`;BFpXmldD>KEKOM;C+VpX0Z;_hadKot^+UQAqi(5%*3iTEd2){+BcWiK_ z{dVURxrU$|(P|UjIB;t5ND9`QJT8BhpO9pCY85##H0E|oJ5uLeYr3rV-n~;9v&u?H zFJ-9iwBZ+Za|8<;>i#Fx=ufDvP11}0zIf?}JZrZ`No&rnDDr?ST*4=Q){TtCt2f++ zS67Zje7(H8aH@-yEBUEDbDGMp-5Sf|kI!MGD$g&TyqJZPAQHsehIdtllhbt-N!_ck z;Ct6DHN#}4=3=i-9Q23aHRfqBW3udFK+B*bE^&|=5*6bgbo*wHIJmU0XTi(-`ywi_ zxv0z4Oq9L~ydStUBY%q6kuKphod?^LDAa?VGbKEw=7LSjwQDYc_OMLEv6RCB?Mp)Y2TtEbnz zl&J8MXH{`Y>&MEpR@}8)SCXke32oKM{l`^EgsRuJ*NwhVS_-} z2SFHHT7#8?19T0$w7hnl`>Dy93tvD~! zT0x?)%Ge|H{>K{I?lVzGKXk~R-=VWOc-*lpYpdXzYs`U+v0BCF*>U$9v{%Bs zH;8Es%l8&WTFw@)y^OC1hpfx30Aoe6AsnoO8R^LrM>n_I)tb=YpPwiGH>hO(G|WN+ zYKCxkVK%hFvqXM@rgio7UW%55XZpyv=_#=346-Z&# zFUZ=dYmOv?SKun@&NpTRqI{-umus6-EOqhW3yvk`WrXaNA=9Ofv^}?B zrq8m$_$Nv{cL&F_Gi7qEDn_sB_tum6lhjLD5#+CB))*Wuuj8e^ffmW=&s*UH-~3P5 zZjM<1I&$&6o2L|75dy<$J{ZP+!zu0KMWqr`Tx;0j3<^ESroJwvH`G7=lWaXU4O3>k z$D`37<-^w(8N<|HseHU|MD4~|LHzbpU}AgGV<@Z`mlQV_#%7mUBFq#ig0HGb#f0yR zrmhNGU3~VI!<3k_K!kzlE9XfT^px!47NapzWpT59n8VMTLDKX`k^ET(9(Z=7g4p8^%=9NeXe&Vhh5?Po^J;m%@#0wZ zYfYc7<|NqYL4S!)1Vx-Z>)K;SO@-4d+%)gB%PxA31FHCI1}|}P;Ofw{oDiwW((<0l zy+W95Hd05eHzOVWp{o)+u$M=SeI4U0`M+Zeof?j&W`Rh)-x*-9sEx^hFSr}Di~-!r zwo@c@7I8d&V>ObGI{kt9GDsa;pNBF|x|Ys4M>q~S`8eD;Lila6xiy1TIKRM=Tgmn| z9QbuskRDmK6A97EJZ@Q4+42B>6(=)G&B=u7wwXKdU@m#}+=>@KgV_L#BMfFBnB<}m z7|_QO0Jm!Y>aC^E$T~{8r7wqv(IFs#clpTyl8wyjW||)ezJ3P0 z5`Ya8OL}?zZa0AiP?np?pax9eJPw(kQE~>tbK=cj_@*7QB#dH}yy>@h!ws5E@$R$i z>56G^utM${yz79UZ+<=p9FOX4}kczk@Eo2%=w2KrEb+$VsyZSW;GH)Xg-zrl9eU!UHF%pp~_ za!&^VHCPxkae1P+FJ8!r88PuGAqHWIQz#veT}`{Ms#2=PLzcbc1gQ>XYKT-ecVsp0 zUi+O;dZE|xA{wlfLIwmL9TEcHK!hy?t`ZQaK1{P9f6!k=41)^y09*;K5y!1V_#iNf zu?Ha-<8~;+U7cgF;=)HD(Sh-0<*lK?$Mm7x(7a&!suvcfVy+a()I}GfzWrC88F@G* zm;FZ*I=+3yfC^=NEd4FkE3o*^*I(~OkC2=x@PM;L3&fOD};PmETdqc)4#k|vBkB} z(h(tHxMzndio7B&7+N;4fn-WaV`7qZZz+N}JC-j{euItE?qi zsrlmhSgoNAD3)jSF&oFrG*Kprdmn#RL1<|Ok|?X1Atjb78QO}Dh=ZgE<>KW%7K9@< zEe2a~W`gy0ON?~`_H`s>t--3jzvJe-s zBAWo1e_aC@HEi2{N>)WUx*&srMkFA)dYbOkDP2g4VE_#3rEa;ee?;Z<1EoSBZ z4QI76*RG~It{_J_-wi1??J>(~s`f!3DpJC`W89cTuo>9qNtA+Dye^p(UTW!t;%F?_0q*$h%J*sSheMv`LBkCZ8kR79_6!N* z{5KxGG@o&}4U|$Y@f1^rV^~#Jj%6@U418D@If4 zC>fB%go9Uf$rE?oIC@C^vp4CO`?`C?d}%=Cl;gyDwDH zA-@~{v3j_9>?5zd`weC zW?dMPHC(X^Xi~+X@Y~p;j}M7NwpgrrqmDx;HyNkgGlL9kXG$L#<)xC)pIlgX{P<3{ zGicE^#GREu)GLknTmeiMm5p}oODu`_85kmW1uyhu)Xi9V?^~W_>`kRj#l@i?QgEK3 z9(Tg-K#@M+=8YtwX=LQIWhE1!^JFrAsqU80m+Y?@xKgq88zwlRgg`E=Yv5&pg}`DB zLTWYLPv%dfAA}58V*dF6`Dj>-P7w0z=pAnj7~u(>L_<>Bd}BZ5#Q4YeejkMgADq8M zyjtda&P{ytVl$EKsqW@>1xX#(2NEO|I6vJ<>TC*mrykD(QmL7hpF8x#IwbuW#TA$q z*)5|vR#;vybv)FXxQ<+LDPMgz>)Ir@qeD&JY!+Lb8R5(42V*6cjdX&{Ui~$H7Ollr zaObJ_d5JOV1}MxROB%gN4bsfuu6cBH1R^q^Y6v3Q49p;aw#mK$3+C57datvmx2ojy^0vgJKf}hO^hIKV{l(K9zz#SV)yfTDx4UR&|6z_Hi-ebb(XERD-egFc)ouhtx&hNmm1a% zK%~q_Jl=!RD@ct85I*<0g#!Bl5vOy~8wNc0V`SQ7Cv^f2On|4PPDJ|{Qpdn68XT!q z_N1&D*@-q^RkTd?v7# z`YP=h!4EY@Ld?s*eWSR1Sn=yjMff6`PaZXu1;fFxMlKVR2slgB01WsBJlI9@W}qz` zUxuTN+r7fxE4Rt^;M7All-XDR^+TIk5%8YjT}?S{fH=Vu;jhnWON}xv0A*TV>N}&7 zj6G`Wx69jO-j|^05`0=a3b^o{*mMfT!V7mFxH9PCaE^DX`Fu;{L>>IIDXz!;PdZJ+ zv+mN$lXKqGYrz+|1;~?Oeb?wV9LBe$r2s-XFShnw?ow7C$ zzTTsZxTs4g+VIs3{c*6C_ohKaF4eLt*yYQuTw&@2L)yia9V=8;gf`VhECMm=db%(? z9CRmjx+Q-tKkl7oP-73#9)4z~A$_I@Dklu3=2oY?l8ggtYwxzZ8~P^+TYk%QX|5!+ zjGwPk zDm|QiNh~|{2Q)qrvu!uu49vNHn-(H1B(LVo_r2;KqaWW|Rl*8$GRU1%)oL9^>WI!_ zTAR}`xZd7gdy25|dNHqHAGZlFYddJeFR#L&k{Br!(v{dpCCOP!AgWvU#oNyjB#~tE z+dkR!-8=TGQM|}w>I87U=#?}_twp=)R>DZy6W6;LS=@&JKd(B!CzOZX=hV`D+^lUIXv!CmBA0&dapGR!TCOLYn6LA# z3F&F0i?cjurotJyfSphTUg`ofwLIww$C$cH8L|z`wYKaS`YrlN-(3yZSu-WN(N{vc z`eIg23+-j%Xh;TIUcKv8=aJ(pI~*fU-**)R7vG;tMux^JQIQdy}(&gM6tSk=KSrOb~h!ToM)36Y)l-5m1Si$ zy8E^#ci3PJE4mv?%6ue|QQ1&snzLs$zh(gXa}Pu~s1}Hi4T?RX_BwAtQoudHaIq#t zf|pwQwYErkO08MZ=*fr`{xaZfN`B&y!p|% zueLa&vCDmCWlAQB^%nI9u@&LHjtxibb9mr#3Mls5abdumrqsu*sy7TtbQal{rsSzu zsei2Sjdl)AXndItbkm~wAxIkbUi~bnweWCCrI4##V02AoThLHm?m%EfsRHa&_~!7_ zWPc{HhE94hIum!5nWcz@DqL@(h|78Azg4u!w`FRebW2=wjB5l>WUm z>zW1mME??T)?laZO1Von z1m($joDHrpaSOF_q2sn{X3_V7-PO#Eo!jNaQb>Rst>wp*wjvBE3BrNN_N$~I>tI8P z7zkd_>|43id+xIHu2`c)n1enp4e2OJQM)kS%a=^*A>p~0&P%rkl!ejLkTFNr=hX4o zm=NA3^rwH2J9hOm+WZ;HvZb97ivr7H53reIz*GDluoN;upTIP}hRdF2+6C7Ao((IU zRQ#NS0Tl(k84Gdv(5Id4$h?lmJY<{1c z#H1eSHG^~!!m$#Cjr@Wd7hXJXw#z5&VD(E4jPrQy{&dqeH}eOPTGVOe=i7p`-RBeCRom_?M*~$OTh-#s_n>irU$_a^ap4F9X#| zg$Mu0^(KZ>am5{$YEyVlT=?G@$yIAENJj2q9E2(sJW|H!rDsZry>?a5zwKgFIcrnP zu=Qik6{R_BqwzYJ$BBcn7o1dVJ#vd)Kvh{)08l?(d15Xkls8M4$dwK}`k24s@k*qL zsGQbu{~omnP%^bsiv(}`cc??_ZV9=<{8^ZJ|37c zMs{YLisGe_4SfD$hsV$Um!x?}2PdRBvBfx$Lu0GGv zF1{VFT++5x50Z;}ck-9tBUKSDXYarf$@ufC7EHYdMiDQwmVMP&C%LC#sj#0A&XFjk z9Lv+GeInkZbELXboq9I2j84Y@=L9c^Mpu=~SpH;WKQjO%)P9J@+b%R69w{XxDahNB8sHPSlJ(>{ zVxv@1(RyiD(;OZLOH`UtgFGRI8Z!;Wk_b{NTI$(QHk`azW@w%@Vn)mR2`fA#?R4`i z2{0@gNslw>so8f9^iZNUA(E=xybt@EadB&BcpXckQMrdi)e-;#)Dk%Inss(70Rhbv zQ&n{wzDwI`N#bKdD3o#(m8UZ>^n27SI**a4cc68|3@O4nb0w&Ki*)akjn-tPvBSNB zr>!Ht(mqTk#y9loPfrE34STmF^BrQ#$7q~n{$1q_yQ4wq)K@>)K)aoQ&jyN|1w>)6 z_UzvUfTyG80LlMs0g)Oiv8Bjb)yguvhIKjBdi*X0?rx~E0_L7-r=0eO73tx=FeRdf-@W} zr&+k_;a@Cc#8SU2)lbv4h)Z91Oy@$iBO@H{4 zF(nyX1*%eua>O2YmLSlPgDCzr7g@I+q$!`)Rl&$!Vz%(rmp zh5XCtatS}Luobx*G<~^#wVkM@ZKUKt$CWs&l>TxgxQ3_LLYyv99BIM(LGvC&$8SnV zqVsbp2`zC6OAwHveA}9ms4aar8wuZT=s8@aSR5#_z1URLYJVV(zEUbu`LRU`X)wd@ zZz9#@JQ>1c0$aXg`SoZ_0U1^i^8{Ka-`;XlzNaPR@b)td&mqYXZhV-`Fg81< z&bAjE(9(Jc1h67^00_|xOw@q!A3%ozUklnZ{obq#a>ZCnW`)d(Z)lu{#J)gm{XKl8 zdrkut6LscbVy5OETReh3ScO^AI3+nl5`GQR+Y*FA9=eC6%1uxTyZvT_vuF*D@j(XJ z*z{1~Gf9vFzZNlPcOF*n(`g`WqZW*yRo&4NQfZmx(Y99Q89Z0Mds~MjY;ow?Wv1L< zKONyUbmuG+BdHNnPGsO^&eJTc>0KPEqA{V0K(}0hYNe?jMec-MQi`EoO{g^Ppv7DH zh;=#omNVK~?bvnZ?K|7{jd*D$`=OW3HfRN1G zlpjM2Ljbc@e1rk^3#ldOC)Eq5A% zom+r?6&ZsYT#U=Z6wqp7{MMNT^}Xf)AAUzZ{LAg}|P05JK%tX8?QIU%%@NkXD;8u4EWnU<=MjLve`d9NQB%ma5A_tS+b zkQf1DJJ4IFsHRo`3U@*EIkZ16U~e{o4Ag5t0q6kD1hxx{B+l=Gci(}Yt;2Enf8b;Q z+fxp>i2-1U1pNU}@ql9~{D>iG%&XDpSWeKsezvU}?3`e)lLj-YL4UkVylfYN-dTto z29v}xFxN=1D*tq)RAW20UyHMg)Cm{C!jo11lm?zvFz!bNsT{4WH4#J&3meUnXyWaw zew^c!7+f2T7*d+F34nYH`NrgFvL3ybZNV%u;2u{w%LK1WVP@z3{=}m#q*r|hB_5ht zaz=&d=)6q-Qt%b;gZr96CFrq14m1I9a#htCP_O{{RP^=qegQ{VgHh*CP%r@-v_F{% zmSg?^TntJn@1TTS{nExpSHNQf4*)LsLC`}`R9LtTBESei0Hp@P7i`Awap9%X)|`=H z;WO3@hN>wS%?_=%C%7$pZ&w4Rn{7;lR8FL{d=dLEK9 z)U?4Am!z=f?Z)v0n?ttED?#38>LCtouV9zoek=ay6ny58CQPb2Fv9GM?=nAvdSDf2 z#$7Wqk1I*^#VV>F;yps1@_QJmeH%Hapy9L0S0eFuFPPY1_N;lU;A zsOhS`I5sdLejnYb^O4IbE24nt%WwS1$IWQ=?|S1~@9+F^y=QQ41n$ohZU;)>YQm>M zSLEvujLWcRI|WZkmUFdd3HQ>Y+}fQC)Da^w;N(8tg&$s6(}`?c!p1HQ54UNT#*h43 zZ@K5$T$s?5iMm4nbVZ=eh$>2IT-9^#0nUZK-<#(lZyu&y0vEUVu%(=Pu2y(vMLj^< z!`&y}%t_}CTdP*16f9z10GSMDy#fywXhjMLTk*Z|>NGkK9qRvwlqW&Ee*}6o-`mX> zZ_9yI&fJxrF`!$YPE0@8kEis&_;tCb!hpC#quD@v7EdBB9wNEX!l%~lHbfq^?gqw6 z6ydq0k^I+61pOgd20XFuQUqxWWj`4vK|v$@E8Zvc$Y!jke8cXZte@-4AJpu$aw7Xb z(%q$d5e@G)HZerHyje4Et1DkI{KjMWOX9|-h8v34X#R=V5Er^%%*4)=%z{6aq0GoD)osV&mSk@-y- zy3mDR$?LP@O;Rn|Y~6E<3#ZoRPTdF%lY($V+F0)cuB)){v-up8rCWTFm+} zbT&a>FeiODseJIYAB0bUiJ8&8^=oRMT#5}JFRS6=Nbrd^=ol&sJf&BL772DaQoR4E z+y-!PM}1lO+%z(TX^kFf+RzL~o?~eQ>Mi6*d=#_ zIww(z-BZ&?jR1y%P5-_N!}^{&sx)8bH?{Zap*S}5xs{d4cOd4ZOa#%avJo(0VM@|M$haSJZrReTMJ&kGvM=vzflge)7NMO%{+NaWmEU#u2 zH<(K48$0?j)u#$zwh){}rusRDXPVx-9b51@ueBh4VOXD!Ew($&TB}wptWM(V{G)Qm zuYXP@MsO<8c_dk?u_{w^fahm7sM~}Vuux)w!kT*4N#MnvQ_wds$jZqf(YFF2NoZ3D zn9jKZ-aiug)ISM~`xoF3WMtr*;An6nNDPt`I(qH@&0lD!H5JU=ngJi~+YhIM+AJ}d zNj=4XMt|~jbd8+5WOFb~I-8a-a@iP|bbPs(EPBH%U4rl92OP-O0&TY3)fmK(s;Y*j zST;)y>4shg=Z1}Q`;VzG!FZG;4#y6(Pttyfp^v)p=UjC}$Ex>8Ql~IRC%+g&45t~MqFT?taN)hJpP2`=$w-!I@fKP%dxmAJ*PwA2wL>JS%Bw#N&3J;NYL-Bv&Sl~WfOc5EBSgCyBjg6m3 zHWXPa#VXW=6&zeBcL{dzCwbl*$1K;QZDjQc&YST&L6DD0-=CPcC0#kb!bf|9P6JX= zcLx@sk&bji5g*so#I~3(#T^mOdL=}G56TTA?Jvcw+L(AxtvO-%GdwCC;=tX-R!J#X zi~6Z{6*qn}{ltsKEJf;JwJ2%22<`*q#3ELL_Q7(jeAHn)N9r+ldptV5t`WpV0j(JGTLPUR zJesxuI)ZwE#s!va?2L>MQE>o?&i@KZ&Uh_H&|z+%@HCb>* zMC*Uf{W})>ei?}!lSq@w)H$&;=H%tOlbY2%Nt#_+Ad8q2_>^bY;+X^c>w<3;!68Qj zI`g|qFYy|I!ea;)>*I2n00+$7t%LjFr+Yw9fGcq)|Dtt#+)H)}lG}2U40IVl@Pp=y z!KM+Ec|${g02Gz2g#bvCd8)Rca>i@bSOBc`0aYC^M!^vS@tCbC#tUFU$OBtUuvEaK@egf}F78lS_rA{=olgqSSo53iGR6QsZK@(J1sclb``* ztqB50BBI>d7)_I<3f!vy5O@0*GhY?XAahb0nfj`V*?0ys+x73}dQZymvg?se8gNBO zML@Gg69R>l7|A40Mw#c0RfO6Kg}_A~B#W&_f8g`+cJ(2ZBepU1X&At~;}H;yHZuU^ zBxpzjz5=oWy*}XMw^p?UAV=YR02{9C`hO}pIt^3;|5M08qyBcwfADy@27H1l=;ZDiNE;`)*je!BLS1h){{QE+*Ip?wv&0Yy=Z1&KH&iB(Dfmj0BDI?>Qz|yyIKa{?$G~D z--F{)@E>vx_-!WA7^v@~Einltyw4(R>f099k_ee@{N7R>*M-IPMRo%poe$u(Af33+WD=rPGqn&gy`O6Bik(9XRI#(bt;e8#qRBpa>)l1eXnOfC zR3}87Y92)vuGUv2mA8&=ut=NRq;`-wCDmY$#-`Kwp~Wh#nJ@P8y-s0HF!7|$OIUiw zm12Yx=^kz^L8+pddJe*Ha!Xk40CeL-Ycke( zVavkOA9PIEFVd7gZ{E`j%`ksE1iGJJ!5(UVWP}GaA7pwAeGviA8`l=ym+$|J+Cw(Y zJs-2zv6X+R9qsgxFZl4Hl>X^*<;TL0noe;VMgng&E0&z<6eQR~PZ|1pzI50e*=Whg zd;oc6!INwfBrI~$<}}txFu4FlwV-rkehZ_-yVY9D-Q8VRH^W*BT<6}ln*fgK$^UbWOAx*PSE+i6lG+KPMnRs%Kz^7Xq3uxDmN9^385 zX?>S1eS)a}ZShT@5&VNicb07bbIFaON23R~8k21Ox0@mdA0L0xQ%^pVR^{Y(bH#x9?%${n+?{}+27RXHF_dLMS0xsT)B#Z&8aidFnt z$LDr26gd+i-EWg&vPBF}H6JHTUt|zL_0fsoBVx2;^cGaz`)S%0sGs!=+~xYYvN4 zufA_@*QZNXU{ALE&-R|nIa#y1`uJq>a~v-^pW+)O0q^!bV(PY^{Dy804sPmB8H~F$ zqN;J?@1Ztx2x=f{@z`pMYJ!(*6H=JBYG3&Fo*-uNrV{1I-Jl3_7rCQtY6M+0djRLl zsDJO3BHpM}OJx8d1MYhiKgQ#X&ufaHQmT`eF*~qC=g)@H?{m#~W5!?W5usrs+0xTM zNJ*BS{vYz*GAzod{TCfUB}8ciB&0her36O0I|USw7Lb%i9U4KpMY=(dP*M@31(ZfW z5RjA*lxE+fzVYAt{hzbsjmW`}b?tCj@L}Y-34{jnivlK>%|j z7PJ!jWHE(xZnTOqfuaD_|Zd>a%H z&KYO9CX^6V^Hdmqm)!|t8bi){3JRk_{UY^^E^f9F5&uUl@r&tH zUdZL3$2Y4YJ<`__|Jmk-=hVKIfxT<|hp@ur;X+C-l^ml?1(kKeSWeo{3lE=uAkf{2 zBK~Lyo2jt>%$sFF{ox_H+T8S7Or%(WnPJ|=x~^0%rQs0+=6L2K2D*BgKTT+B{5pil zW9i0S8A4@C_C;alAeR>1I32S*6H$-?NQ-P7CqcU z4pw^_?o{qQykzaKVuW^0NQA7^_~ng3FRzkMJdNgzSD zk;%Fsb;0*$E-hxo?Cki2gp?M&-w;(Or~6P>bZ~77P5V((SMwNZ>|efo$(8m(g<^&B zU%D#`=AtSl6`DU9hA%6aDn08MNT;{zroCw>VT!XUj?k}|NfXC?I(zQMTDQVhZBEyn zBi=Wd*%Qs@j4RIwES>fsYPJqqvLZ04^1?%YoxRM9ciV7;Pb1#0^fdk|^uGdDvo394)T`qnv_+t5%W`yzORm{yu8r)P`X`dhUUgybe4)7oOV<&Fr zlV4s-xhyANT>JoO$)M%^BD-~Z_JJN$DL1bxMkV z4eJO9bQDtNnFgl3wB8mn)fOz8D;zk`Wtsn!P2S-KkXVhw*PcvINOSfqT7Gk;vewm? z_yang{UPxW@G`oZk#d>47XZAUnZ9yv{3IgEDOapBOd&|>PIy3iMdyjbJ<8I#XlPDLHI_FO&#f@`j<4~Iz5g|Kpq42&%j-GjVwiZx)upth9eSrID3Z6~gaT)0;XR}% zu~wn*n-0Exagqt-DgCwIR&(HOQVX{CnUbzg95l)&pYhW3Thb=e_}&3Fk-x}X(n6E| zhBSBT#Kxl*FHZkemvne*SWKDUGLTE6$Kp7)TG}>cH@#G{6HQQ*XU6e0-``ImZ8Y6l z_B@;IT)0W{#-gTbDe3WLUnoN~<5kkWkkgYa=6gNyDg`qlZe;s*Q(qr1UQy1n?#fiz zM%bpuj}LMo@&6)c@i7*AWEU^=#<}1V9X6fnzhE9^Os)dm3`tSp0Tgv7iDUpL&9b!Y zw5q&JuF44s}AS4K|?0IIXU4;9C^7b8E64@Jcnz-TjpZr1>O4mGpr2v_e3(*nT0yU-D ze=#hD%{2FMaPZ609?hSL9Pl-k*-#OxUt|mxaM2j>RY#FOEd26?JU{1t>fiF&s+a5c z*0GBrFC&NZh<`2C=<7oJXtWIYQT#D{7`N}x659p&}Zjj=@g11VXvj2n5T zEus~eT)u6#CLyUqi_FZW!`9Wnd!ZLup^$UMm;D9aIlm}l@?!iGLbQX?!O*3XX~?3h zbaiLzHI*;lI~MshvWTHLhu9s@gvB2!n)Bbqafh6&FJb;B$+73>4rj9b_?T9bA|aI$ z+u!5BS3eQb4$8>PVC0RY~pU--eQ zMYJy7ZR0=ptr?rcR4rOr=7@tj9Vy74-iV=T{Ph;((D_u>yyD{Kt(8f@aEqC%|DKvp z%XG%p`O-)3PCm+}u3qWlr-=vjbiJRm-=0%Y5j;!z$TKrXC{W@eeWL}&SSa;resY^&ELFv#7!S)! z<8$jdHs5ZVf1Y)@N5?5I_Ho|LX7d88S;@XESN9|8(Tdua}{eDyM$dgtPf_ZI2V?w`GD-~ z$U#o)m09BcYH#EdIVZxb8#Wg%T};IIT#n2+TSfk?R;RL)Z>3UA%ILz=yAGNyg`#e} zmPHW2daHac+zv@2NDbhn{D#kuZbvhgv^0xBQVKS1EkOi;UD(}i;Oewz2#OYe%>8+F2H0XDHUi5VI zvemAmBC}HSCn-(UmlXxN?tLS&f?U5C$rc|u3}nAQ)sVxFJtVx5@$FMt!yNVNs6Blj z4KwSN!Xb2tscm@B644zNROEH3V^yF-hNSE!e;~mMS}Qc+_3$f-kYDr=#cKq+^6`BW zEiIy-7wJ*nH_(PG8SkbXHXZSMckHa@GP8^FXvqaJ9=ainzhJD;QdRKVRTx?&Oxe41 z5K3jutc99;Y-<6TRm6F;iR>-$r$fuzQ5{w9>wQN{OT5Si?iKP+CPs)I{SGPZVq9na z&6R?O_5&uclu5E3A3jE+9j6b0?l7G7$4t0{NI(4i5b1w93xzH3R(@b-`CkZ$q(^DY z%(A#8sT`p^(0JBhrhB4qGDIq)wEs; z5Jap{=3jq9f6sNgyZyOD#)WSL*(V9)+UM6qmT89NDg#}fh#Gy%xldf*6H4UCS}khx zJVzN52f^Ce7tQt_{~`%xkv|DeAeon|l`Tfkx3j6ev^zJH^KGxBZfy+&p68K`#46e{ z+r+=UtFZYsk@t$aQ`i9-E*!7q2?H$Wp|>0UEaVNn(Re%g`HS=OM{}23(4l8c)ofNY zO)-$Mv$3%O|4t#mMhQ$oT`}aph|dCfts1uBEL3f{ju={tP(^{<<2J0yykHRxxL*NxWepQrzSjuX{)pC=bM(>&l~8>Y|p&B_=QeG_Bqo2U?a3L znBo0n%0Q)Ef@>cGtkiRH?+KpijPK4}mUMldr$o0Is#0h!g94bRO@{SH!i?S|{3{mg z5(nyN=GLJApMMau{m&&4zd6hyCRzqfO~b{y(1YL#2%13H3O!sz2AgOQA!wF41S;*b z6=luM{!mB($#*Z{P5Vuw3`Dg+iWz*xaVbhaSVOXvh2JYlgp$2FwZ>&)+~ZqdVuVvs z)Qi&?Ypn-ESQoUPvo4`@%HJN7q;rnF&X+%H@%j$u1H-3h9-Lo`!93Cwdcco~>p<3j zP1qbWCk*2q??Xqi=_U4g3WBl3_6Lc4a{bTtHNIf2eZPs;*|Y;Wn63YZ^$ns3aj5J# z*sESyc^bG0{QyaK_W?_{y!FP`zAMss2Fh6sZpNXG=A?Mgw zCM?tRfkFA zg`#Vdyh~UXZ|FKPI1^L9F`OU7?xe@wiXsqXQE47~?x{~%p;l>Aru_~}THZE1j4;k6 z1m9SQ?>D?uGU4;7*}YG(OfU1*lVk^z^V41fEe&+U!8({0c%DU}oh}k6@jwas1f`{=H|ZB2)1Ars!y!M)^Wrz-p8EnB79RQL;^9Ubo#!j) zm+?l!Fryi%;DRHPlG{l!4D!I%gr>K|JdgLn0ZNZ(fys3g8u+ z|5D2^&1~G+Nli&}?2sytjZ7!6I%aWUajQ`li=(5ecCjOD%JlqZT`8wtBEG`MoBpT3 zPRHQ)65}6af|2bVe4>W5Y~&rme;2grCuT@?R;p|J7VG&m-s&JAI5zBG^}o z_ubyXuE~P%;$$3}9|bY-s(~zb?Soh!?TO{*j`4=N_2|i1tT|v(T;Vc7T(Gk0;fb%d`IpPT3>2RsegKbOJq#vG1NY*ew{WoeQx+vq4bmrI?XY_z@NZw`f(--`u4EiLy zKCDorace1bb*G%DPc5Sv!J(C98~vej1w~cc-_IaShfVP4<()qJdo3)-`vSu(v$IPgn+7|q53bk8igZ>+ zqifOrm4v=Tvo7-Aq@eeferKG4O*)4)d|&!AMDw6_llaC%jeis`^vE?N_q`&h8+Vwk z5Kz*tTY3`m`0I5;5)o5cd-4fJMZji^Ghptc-w18O^pp%W!B0U+7c+z~<`xY{-9IQm zl9wtqetxcy{_N5a9yVK+_ahBvR!iLHQUYO&XRfEsgjjwJu?$wcOYX;hXKcuDwNCkN zUsniwjAhw+40)`QjHbE3mpNQ)5eDXOjA2Y~v~E8<+fq-`^aDq#cI@JZP$Ln;xt(6I zbva$+aT~MZEbSHL#-r282I4*D?xU@*{fvEsNPGetk?x{f-E@T-_)-g6Zo1A*q=fEw zFR)|NmtQqCPHN$v{&KF6L-Mk?24PHiAib>NEq!i$0#<$Fa?@%N>yrvgf#B+kwzm9n zz2A=KhV_%JqgeK>`1TjQ7QJqfCH1Vi9ZWk|%}jC~9YF2Fteb(Q*(*C^;pl+(1kn{a zl_h$4v%(Hn)y9{d<#tlZ_bu3?2rnI9C96kX&(5jksVXOKU0YiVx^NjPjY9x-dxh%} z$lI{6F!I+DoWq8aZIY2(2ymID8Lzgo%=r2=T?_rf|g@3GfIbJFMfy{F($xVkKO*2F({v?bhN-S;L(=_2L5jJD<{@I#(Q? zG^rPJzr3hT>HqF_fQq7_iD8XOY!Qg?mCh16@)~jk0kK;K!9g>{&>P3PmL>ffo86UR z!F$87(7*s(e8P^6xKU+%pGtR4l~MbimCx8RVZe=IPDgt83hiGM?Toqxs*2qEs1O}g z;foY@)Yx*Y7^8yjhIpyo!$}F>Up(@8c0|aE(#~m=2r_bJza*zhYpcIuYje+`OE@OW zrHwh_46-x_pXU#x;5kRaman?yrA*uITm8gYBhTXYMG6kWv|NM`9zcy}hq9UOOCH(cALNoX8-7|SK-=4TzYc0BRx z%Qy+0p&v1Sy`Lv%GNaV(>|Dd>@4&Kkj)Ky8G7viGlhOE+UZTDFH^P;-T+F{S&sYL33KD zVXl&y`DpKi?JpnB(a8Q}7whhJsA;iPt?5`Oj=wt#oFn5GG#7X4k4*?3i}(_g)9BA{ zcUJ{`Jmhs{@;=`Eh1-55Um?b~D7-XTWjOMcYp<24N48w+Oe)s8)hw-3eyu}MY?G~E z&aTdZ+4oC&afU){$SwRJyF|vg`9xxIni9pa6@i4j(-c-c#o~Iem*?;E=pNE(&eP z&(dJhjJI2M9&m46d`m2;jzHX2_jQkbIZM%VpI8#`~YrNp7W5yjjl%(uw8r%|qy zr}03oNae+e>3q2cYE4lCmA5$3a5jJ@`Kta)wd8Ds88c@*U&M8*nAp$5>R-Ru(^MfuGwm2+13L0X)-U*!!+N*f z)Y^T&zss3w_gA|3%6=+qGxSE|@IeiT?D}srb-jxGkr~aK&c-o_tJOmF z{CwMsA1WlTrs_t-1C=T#IVx~p?mA`Mz%T!)(1I^i)R}FYH>S(>`Q$^UF12o(`U%z* zC0XeN_n$+zbb?l`>B`HqREXxZ>#8aSehH0zo%s~}?mGtCX9PR5;)MH}!J~jRjhc$m zmr9on)gR4O?VHXvOohKI!)_ntA1UpO&3$lpp-`SxFlyZ$V}--8TJEfAmqNIj0p(!U z-8(}1nE}eo+IPM4dTyyIbE2ngP7PDe1WRyDHC08@yLzQ<)v@ANq5K2=VOOE0p5~*J zn{O${b?#p8;FS%}W@JpkZQ0HvzT@%C=2tjJ`?Pvv!X+ownb9e=Iv15h4%O-BV&8k2 zU6JlDF=Va>hC7iRD#fkg>I=(PHhMlO7#6|#Sv^Cf8GVzj&sEa!opY+G?5m7sif?`| zm$5b7ZL~c5WQXl?LSGj9KKDV5U2WT&`SpCHy-q#gakApi8e%!ej)EuW9y=t!T#j_%=j>HgPY_Wm2KDE$epGtcKoXmIcuEe|VcFj7k zO*Pa(^OtUi#b@yKz>4|d_F+w1U82TOOrNCv>sF)0X-4t7(Zh{Z&}OUEV&83&;@wi$ zqrdy%Sh?0{hsfUu?8f28Q;y+8vAlLiYDGv2soSP~ac8fRzn{ojtJ4*~DPNPpv|ZV6 zQpZkTfK+kf6xH2loSr2l?kVBH-Scx$k6=`+QdVQ#(mD3k*CIBpInm3bcJwl@wDvYa z$}5KFURhU5;%ImfkS$xae+BdASgdb_a{-x9L4XvsqRtGKU@t+&aMk=FeS)u%i`Har zXM~!8H?p~FwS^e!ODr2T5P^dr|L$|VtC+}M3Rpb`w09K2x6AL;=*I(gIs%N$z8 zT)5aYliG~o76~p|1J|=xzGT}LjYxUQ6^tj<)K;>%@!>e-`L;S%dxX5xvQrXBTU!LR zRMIjiI4I2EGd7|hymS^JHPbp(iHQg$#rhQ0Lrrmu1c8uwgd#x9Ne4~&_7+bkF4@zF z=YNpEMj!~taOerckdzN+V#(+Syk-?X3q-2F= ze7CU5vR=N=@lPqu&#hHt=C~|~K-h)YvmgZGtIk%uTT8>q=96YqejY=BKrCH?Q3=HR zd3b)=@}H!QK7&BGp(j8oWBBNo!6T|Yr`NLizdv{p{Xv5t&np_1Hb^W4iMk#0vK11i z-txd#2B;T{F>YTy=jd5kmugjSmZ27%9Z%|$u}yo=JI0l2_nxlD&{v`3pB%=r*}k0X zdnSs_a;=yhw-ghY^~30U!spU%nm%X>A3eRAJX$iOL-Ks@gv~UGQ!#+i#I$bXxoMq# zB8j4?qec5y4lVI2hhndS-Htz+dP}s#Mo&`Al1dYSpu~V7=CC?9glwEF6zZrVml6^l zbJrcoQvWL5^L!mpBY)s`BDvv??9>&#(`nwac8!NHoHJDqw`Qx?ggITBB7Hwveo9SINkIYo1J2!ma*m|#@GeWC6yn}R11fo)RU>#-P72s($Ym=>eRQ^su#{?t z>{2@^byF?%sSkxk!xx(D#mhb@z9`t&dK3PB`$TBCkN*x4y>_ly%u{D6mxb3{&9m}B zc`+|iZmwEvv1d0PWFus;>ohpY?43uf@AqVn-Lp-9`sL|_b?r;&bIIQBR@z#vNVzxh zEHOFxwvaJr^H)p+;xPl=+1s3ONT;h)Ckxc`S+esK$Xeq*i_#SZIrU>viuo=Z)fA=E zD^2#S_m1S?(3t7>E8VG8uu@(swwmb+R;rPe_R$g#x2#QLT#hcV_{sFtF>aXgHEP&O zx%zagdhLV^dAN1q3?lID?|pZPo3cBAW%ioSF}|?(KuLU8x9RDVM~C87x`~zr{7?6( z-5O4fHR(_W#(H{RqHG+}B)IkSI4@Mp?aU02w=(;xXN}FWiOtsv#i-~K>4%K!$Ke|O z?9MJN?Ok@0bJ37bdH0JlG2yjxtL{e!Ar?lRfMdQ-dpHQGdvN}xF!8u4tv-{0Srv zn6M`$f3Z*eY%*VHuqG5uqLmP1K@x!U9QYa|ZXV$8k5ZQrnLqToy=H6h zD{JLi@JWq<=IqReR&D@ z#Ln$+b9%D#I-wzy5o$4hn;W~~A*3-jL?bJ5nU(tuMOF%P`gBIAsHSewOL1eXJXNWF z`^L^I%nhXal`rzc>?TP2!ksu?zF-;ptgp9qvEM>41y&4MkiGWn0M-IQKu3hM$%kGU zbR!J(#Ep=i$sQ9g)RGzZLUI;=%Q4nQttFx~IN4f9WU9th?2t>V^|rA_dsv+JEMi1u zM`T#N;?E|TC!osehlhhkW={1?Kap1~bsnsftwJh;+ z#FN!TaXNf-TK>K@*>mDc2y!kQMUbkfq_py>AbO-mifY2}-MSr%$oLnWZ*-hoKdJb8 zSU#LTeu64bY&HBLj=C4LtrosfQCI&~>G2}nPEBo!N>xCVv|09!F`tauSp*B=vrs*7-Srgs<@#hsL-2vZBXYIzfY2)@Rvax8}^B$mLH?tUv z%4}DV6|qLy$x-_>KHaF2Zp+73bZWbj&O!a_jEZVcNfl%7${L_H_fGe#RLnjYu5)=H z5Qw*Me%qoUs_L1k~}t7cBOgx#wl$S51hEjFQLusHC0p*p^-a{bk$U4rGzvs-#4!;buM@T>xf z>FLfA=+{MB?FAJDhn8oR5pp*#(Cvg$um#pv3dht>-L4ZZ%Fl9ARHyR@J!c)tKT4HEOp}mMcB12)V=TgY zs;TpZw0Y2obhg;>)|I+|JM9|*61pRrb;UX;d9ql=3<+M1d7oQZdmVBYr;6WaOYWW5 z)=jVC)J?h5n#Wp|echhiYQ#Z^Uy=@ipi{ukl6T`dyYk*LCbn4RyLGK%hbTMK30bRI zT7>Z@(#h$Wk*)6Vms-h3Sm6_H&Zb z+@=$o-a=+>BxZ|h)GTL=YGwoXZultmTrFda?TJMRvLcxQM>~u_UKSbtG^*v+*zu_< z*JV;Kb;-2NztoyK0kN?KCo! zj-6;8capY;gD4@V;6a>tvrnf4PHPG)*OupTI*+d_#rX$Jnv0~#^4moAL_><`VSdz+_ z?`qfA0@AO>&m!4K==G^2)D={tCN+vk=AIIGA=BApR<^`+T{~!yzPctw1lhU47cpg< z0yy~2)$DdLg&!r1x+RXsvnw(e-7Ohek%@SFOWq{Go}Jcbsj|0MMe_;-cly!}#Xjh< zaB*?Zv5jtg?T-xslM$5c@*8 z)hMsi7&4x+H{LT&Q|-$;4*$4RE%%dM zTTm32YEJB$^B1Z285oE!^XUCm4Lyc`B~u|EU-;yz#0uf`6Q$wu=x}{S*HAaQ37yyO zA9Ao=vtO{nNF|p~GJB=B_hF$?DtxSJ7d>c;s)$vf}D-H5})?HBN^{)wvsP# z;-#?OySOf--C4+IYId+xWmG1V#zR`_??4Wg4JnwM&mZEo*hSc_;OqnFR{GVs6| z>Qlp2tjsbsyXFtC z_}|n{ppOf9*i|uMjf+5J2S;2(v=vmH-KaeK`oLjeM!~=_riZAQ_5;kA{4DI$wgNwo zfFHNX!^h0-g=m3WPhPKv?dsz40f;dG+=7hD=$6+)0(5z6KkuA%wzRg+bm?Y$az&U% z&`t+1K%TQoN(Qur5-KVxav4=80~H&P29cDRHr1RFGfYwNe4i(7~v#1?Gr|xAQ(?+Yl)Z@cn(NrQ@ zCf|3xwU0wsL%dhuWoHz|$+eHe$=@S%8HLV;g!LZra>&w=oa~F)NZ7T17eGfEZ@$vDE;HLqjQR7l}1d8CtxBiWh zvdM$p)x%#KEkMUtW?bhFx&yMkPDkZ~c1|FbQL1#&kp%CRn=Y;_Q z1t20n?XY1;9sj`1YrU1{^&*A9^WgM+TwCQ?!zfnI$n!qLMUxjje2Ba9(%8=+2xcI% zcbT2j(zOTcMkVDP40;L9_C=Pk*!qCd)1=r9%7aiZRx@;taJ8(wUGBLQP z3FSwC;bv}bzFC>>zw-6tN39w0L4SIqAq&|bq1ca|m*gYgBb%O#f89#=?Q1fv7lhu zYSQrY%|lFijCS znjkx5?7Mza-&dX949cx1&P!O81Ej5l)TE@OTZshFP=;=X>NhPmd zT^~>YveiPht@N0fE!dvtYjx#mFOrTG{JxT0LU4|Bb^zZzivz`wI;0kLKNjGr z_yExv|Hj^J2t)%SEH>xHWL-tOxgn5M7Ha082+;Dv-`^klQwZoeI99`0p0TpC+YM$1 z9f-*&DJcP|>2UVlp2Tw=Kr~k3NYuJ`xv_1IC0jY}aW?axhlGRE96gRgq2elP#~nOG zsH`H|>4Q941;jEg$>+6O#5TGsVoOx5ovylhO~qW^=iaR1P_d=HboopCf|8*JyP6`7 zUllq7A_~HjgK%H^tLcAzVl{p-?imEYCc$&-6_7tks;H^yZD6XXs;a7}z`y8lFg%S^ zp?j&ZvFOP{vEa$^;RQONQbHr*ra3ixjg%TfMg(7CN5jLTHucLCq!)P_H(QT^V|DUg zo!?gb^-3^Zk5Za4QF_&=U*Y?SdJ@^6!so*W&Ld~Vb^18Kl3tM;#hFbPaYYdThaoO! z3efHWh66h)S;D8b%aT&iF8DFfvMQQjA-ckH$@^FyT)Aqk47SyUzPjq>c*b zT0;!bQjeZfsoJMKA$y4fhAj8xY?{KKSR&PdWe@?_LpU`0cwlc>BMVst{Y_p>uJat| za@oNFbsinK4FlKO_;w~RISx+5_w5B}UmQ-P5r6Ok2I=TC{a-?Bg01wjn&LG5U-@0X zgOsxq7WevX*9ceCvT|{$Hi=NdZCoLlfSow2e-AA+R~skMRzLNAJ}4nVve#4JVXqZ= zn(H@!(Hx57PT>z)H>=#F0aj(pvI?R#fx%$JBLtuYklNkz=HI{xIK(PB zK?Dem4(^KT0B{CZ!IMD<(l1~lt~L+eB|$_+#W*1lyqreZXWlH?oIi_r^TLJ>90Ld# zfGhI<%B#{qJw|;#YdAr6b+te$mV3h#NE{FpWD!iM9kMkb6bLSu&`}*obGilnLnx`* zZD%v{#ayMsD<~~h!H!8uDRP%ZkLIct$a2W_#gwwiJ`~3k=1+ z-d?~XP=|9mbSXTQ;BV@1=dr;O?my)Ki7Xojhy8GILKn&4`on61U<>`u{SPEZR1tKDPXj%$QK2xdsJ#5WK8lZvB0o0@`8E>(<*Mx*D@H&&CeVXIu84WYf{Pi9i@rkSL#r+2bj5pWN^B63gUqNoftGzi8lLF}OszCn!wZ6AyJ zvo((f^#}1lYbUcqj{(;Vbc8wsmew}*U}J1F4rjmQ=`FwXr<;?+DcA4ML7iFEgDqeY z8v=eiFp9QUD_Y2q51OV48RRT2Edf>kJ1Dfe&n^+|=KG)@Xif;w$=#Ba*jW1P_H~a6 zgGzHKdVnoshb61}pSR2(-D5{j97e8&O-w|@$H(^wFmL`J8%dOl1a|6!B$9+&j&)*C z{l~-jl*C zJ$i&uGMoyS2?kse5>3yaOJQrm1L{0Kys*+*?Bj7z6b*c@!07V< zrwuJI{L?*Z7_}Lz%&keg0}s!v#UC(}jH_)l&CTb!HbhuhzQxGX;Fwl{DG9QL&;($N zHE;YkS91f>Vsd&qyu`%B5vZkrL^VDIU)zEU^m$`Z;#|0JVfYY_pN|h+PWXm7C@2U$ zRPx>PAXA1oA?bn0EM9Dv&8l*-3|OJ2>za+KN4av*TY3X4{2a(+6>kKpn#YHp&>|`IHKp)!ev-jos6leX*7+*$4{Szv!OZ=2vZ%$t7LQP zA-jPHd~g0LXcOGQeMtF%{YcRG;`u*Z!bI>qFO!fI%06_^Fe&H88wbt~zgtE|>?r5M zFdNNi(mn=yyjDW%O5XOL(YI>`1~v@UE*^)faYnj+PoH0YSCmD}9LJmDtEqANUijjS zV@v>FoA>q4*L1fg{Li-AA))FPjrYeQEIjI1H@fi*A`moQ^D$qTIP^*tl$3}D6958d z;rBg+E0>0q$=j;#4qnGC2=*6nL*HYl2Yrv%Z^UZlqxYg^-EM5IF2vD!ysK1cxcvGO zJ3BjG3;|esl_1Q(CR_<Fw z>mXg_`h%ENO|__sYsK=>pHJ6+NPR0MY-40)U;4DdSy)=lR{HN-^T2OuAS+u$@& z&9*sn&Emb=`UI3!6@feWza^q8JpYJj{PCB4JP*R!d5rp1de9yfgQGcJPwUm}AHfSl z1JS`zLH9poc#HV0kXxDLJWxi z!*zzu8Sou4AoQ~mTWQe&-8x0KpYq{u&?nN_-Muo?(n5eXE@TKS_oeD;XlxGL z#J_889WoE*Hdt&_m8k^5|Di-n(ZumT`zXWpRp>81Pr0s$tzThE{lKAa(rl-s-Ut8+ z6Wd25ve54i+>R886hQxW6&u1?@I$VX?nVKEW1uC4-<}h<{+LM(k22T&B0?sR?61lB zTXgI=j&c*awpM!u+p=BMKKq>RpK=yl0TA{W^-Wzbrzdr6a|J2??_>?R&UyGs=&+&O zieGhFCssn((STkF?9);cj$7pe+0u{gv_%9E|J`L?q4i7pm-lp2YF#FEVpS7$PKAcA zRheg=Xo-j*6YY9_Fis?P^W5w-+t-{(NG#QJa64|^T$|ACPr#eLGkg%jrm8G9o{9*Z{;#`^;NG3o zX8YmI>F26TH50s%J3B@rIGQs5&AoKMa)Bb=J@bwAU*#I?obCu-``l3eR!VhrH3 zG&|3>MsU|FU|)l}O?2SYtfe{N^aKR`7+ebqO`bh_HVr5QXv9_!et8PKtyb%BDXr@MRNpT2?75U_WHnp<30*xi_sIh#X)SPrqHm|wc#4X^<65RNKIZkY|?t|MQu|`u%5v8c}{Y^#E zRTh^oeGZkcFay-LQ-VdL9cn2f);tCW9z~mKX(dT0e7t|^e%+1}*NpO(4yM^v#x4{0 zI`)XX_gsC8&XsWs#5DD(Wk^QGA*Qz3pmE+_F?JQE)dkmf%i_!uxyPo`E34JTu4{Ip zx8}tn8=ncKiEZjnD!WeIIGVcV{<>s+*ief^whfIt4Zb@xNdb#HI&k$-naAXn^K9}p z3ykG-f;oUGeZARw;dCoH;Ir4a3|PdIwU_-v3lJ=LLMdoe>oCrgbc?8J5>P{L{0@+k zaoT< zLX_LH8@T|zE@^3EmYoF3$!3IEw%1);Q1?~R$Oi2$Zl#u*_Q6dnOz2olP~X(1QrGO51a~d*FYg%N zx4~3U(A@h-T$?_&{@psWuW7ZM?vniOEH;0x$*|CyWE(oXD7E>_#5>c8yW3j{abNAP ztPL`Fe#)n-auC_qe%@Su^=)foN=Y-n#+^?wO`ggo} zgdQa>*Etgst|bzTyzVeaR(pJBTJz2`wI<)fvp;!y5<7`oH)%I^UC!ZKiCt5`p0W9g5qi5t&LFqM3=;t^4JOJ(*3+H9F&y+? zW4ZQF8ZIjM^efO?5O6Et zxQf|+%!Mrs#*<1iFC7O*2^@Q5D40{g*L}R0=JZU^UQb&3?M-}%_>2tdk3_$<7uw;w z0|Z!H5ZUc!bE_XA+Z^e6YE@m)$O15n2Q2O|4Pkv_9bIpcZz# zrKhKd4!}gy953ZW+Z{8)I3pc*SH7Nzxmq2seX=8M^4@p65ZNd{S8g(^6cMqSW!^F~ ze0C|6o2V5^t5?v@E7&^#j64alsczc41mg1FLYfwSKu27K$LlG_fWZnoO|(J6Wvmxa z16F|46E^MSBlhb!c!pezl6VZgClL_=4TRrAXzlK28t)0-{CA9PB)r6 z&(;L0)WGm?ov4#K1=k&#rm#(8Q&Wv@@k~{pL9o#EW{5M#Z7f1Ik^EUBU9R!ObLrIK zvr+ZN99_)m0GJlRTvbsyHv7kIZ-|v9RNPd9UR*e0* zF_W2;B%0nrs5A4I$3D(T|;@F7|phf%iquz z2~5uML+-u7#P6&Ey#34iIy!jdyg;0z`b^vl;O_oyVX_z%0}dx=@>No*0N{9gdmF$g zAUkHT`g^Q|VMmTDU*slug_%ZH{M&hdF^$|S;q7a$ChcHaCq^a=+pSMGHH_52v?|%R z4X0WI9!70OxYW!v4hL1;vIr*d>hGT@$3uYa3JxQ>3KDuhVgI`fbg=NNqt{+4odpG< z6lf@DABKkmSoI1kO=IYH5Dbhc*oP({cHwaq{0Y9kF;IbkVzuLxsECLmy08rvWY#8= z;0ELop&x0g$)^sgi_rgVG1%O*1bk4yb|dPs24dQ>(g33e0)N@IP3ZTpez46XFbz1~ zh31Syi1&fo{D3y-z|?+@at065%gd|Dd-r2K{qO(doS3;e2G6m(TdBrV{~=R&wnFUuuD4*>W%R|`MAnI0bxZVY zP0$~=@WwbdBx;((M-XHxC z6U*-R_Yl1Fa2c=?swNg-hps)Q#s#+Zz3;H^aX5Q$aKHtPf45SU01gV{^A0BsT zZfWqmQ1HWYmFlyuI`&}mahDDOg5XLu?cE)lr_i?sfV`Q0KgYqA7^pWzUya~fwG$oW zb1t52Jf*u?s<#TkGH{CvP4eK)z_>i9jb6~M%PxL|br!e93S}Hbafj9NYUWcxibfW> zpKj27e(h@grLxP?Zo2Vx25kU(l5ena z?tloYE=QZp2=W*!oLSd?iOc>$Ah*Pf+|du4fc*%O8-uT2tQNoGrsryAlYFgYMO;P? zh_z`ghpr3>Dr18OPMxn4%ZRpj=X8^KqG~8>8Cy5T)P#gZ(49E>Cd`JZB<)2RjhW&h(u2LWaWToQ51)$R+C3>-V!qbTJWaFLiE{7i4ZR`ma z6p+uaWXnc8N;-mbbz{ByQ+3Jjag#qvG?9alqwjkPYjKDmj^1+ZgD^tT^i4El8UV%f zG0Ms`C5vd2hh#nDgsTzwaG_x8Yoir2pyrzQ<|3e`folsLFshsJ_ZimJw>7wizAY~X zmod5|f*)++t~i#SDsj7^LNM#`$$6#T9U!EJP?0LcR%_k$Py7w*9{RR!yv)Dm-)cY8 zOk)QReU6u|@y*8mw@kBYn?Z;;aYGss(${FpO0d}=4Na+sj*9Pgel5D+`wd<3O?kDa zIp87Ioe{ioc0Adl`wLI$6^TSiyp9<-Meo@13ZA9u$1$gTz4`SC|B`2 zO3vMQeyxcS1%aA{Mz0@G+aVFx<<=)S8c8jtw@P{DjUvuW8dGkFN^$~&gV~d#{I<@Z zqJ*jMhsIjllf+rBYM400kKPz7^xed$EM(v7)A&|*H~EH%d(S~}KGjyd#u+KR!RvIN zA#{h)0@3zN*a-cgxCBRUeJa#sxM%-+AIm+zi+lh!jW3je^rZ?mz?O4tSg(cDppC(w zOco^A^c>$=WioogM(vDVUXbDKtjBuJ(@`~ldy?aLP)o@X5!8ET?L0u(%gc*Cxi^EeMP zNlKQ|U*4BEzLfo-y!gBp#eDzM%*~Q)(>e|up8S({1fH(pGUE@tW>Q4=HA)U=zP@Bp zsgVOWO4B5ZJsj%{3oRIdk}eHir{mL ziFX5EE9M6*7tnc)%>>QR5;hSqtY5HIj1aUS$mH<|k#~2?v}$~tV$_6bShi8?WMd8y zGpMVp_crFjE0^5@1Pt+tUXqq-Bn^XD(dLTUg!O#>BCV~9tLzvGZmjheNm|K0^#1JX zftY(`MuQ?nd6gCi)bD6+7%&%OkGe!pq14_IDjcZYucG3^5Czyu!5hz#)7bO$;^IVQ zsCMA2S^^dY*g7~c;5^jM*e)maN61+FXqsTGjcMI$XkL^&9bqjKo%M6pi#P|FUF~K29@wpuAqGVN2KNaj$rv zSFBe27OjRn7e<)Vu+o=ICJlz~8h)d|_O0AA-rf6Ztj)lLzl+y3+CizsUTX)&>&IU0 z%M6OrvaX;qO7*1L9#StE=pnMHde!LJqOEpGOhun-mu!P|NcPlWRzAAxu5S` zXBz3yK%?NzDQhe4!aK|?AzS<9{qf>(cJH)oJ8Cb(yzvdGudkgMr1CNZ!R^zio?u#` zL>C_yC$dig^{hwl?+J!&2nNxr5eyDAOFtR)7`Cm2FwGbR7xac^#Wv{Cd2qRBmmS#H zAU@UoT){VQ9y@jn+O5sJyu6{3u2xn(@C^i5_e?!zcx&|5CGB*tRUd27VAb;BqNBDW z?bmY6YZ!DN*LL5K84ESz$RZP=G8!_T>#&nYJfkG3>-0!^)wfS}RSaIm17|lD^ypC) z*UBrE9grAv-BD0ncIixb_vw+3+1ZYbUuk!K8BQ6zeb*|IF2nhdr=)&JQU~t>W5YJ8 zLsUo@9l0XyiP~@Ob$2d_yb$zADU3MVU|D(z;9HU&RoklxLDokM7M~Q}#a)}I(@vbZ zXW`9Slw+{HGG$B}5Y8IUxbT&&^4w@g3LlwRUKDqhwr^+9`IKpGBl@Gxw#$tFZu6hPMe{c zNbBHVz#S=g<3{20s0~a-W_%uXo)@_ShDCQjW;IHbTfeUN7G8t1nP zfBnJ4<--R*->cnX=Tqk)A}xIufhXE18H2BP<~oe}xM18ZEWjw6@T-Q_qA&*l4r*q; zqo$?+ij1f>L3)Uwp$Qdf(vQ8`ux_1G`(3ZJ^mIjAd1A>#t^goIaoN_$fr$Xg!nUeN zcX%>1+{daSEJbet7GD+;VrcO6TeE_>S{gNuz z(X+RC#Tmva!FiM?Dp3%#;1`{5WH1iu!z|pbOp8WV#@7j4GuFCtOk*^b!R;@_ZD1Q+ zsc-GdsT31Zl6YTCJ(8k!F#GJtDQ07@gK3pshdD`fZU)U{zwqAOr;BPUtwyE<*Gu-u zC6_H8TI%jiRnw^VHPYNXWA>C>v{QkqHoYwNqMt~OpY8ODm?ZI|OCQ;kT+LD4;#4%f z$9JINqKGuLqU)r=8(&lU5xOjfQfq!)eptf%AMd$m|=$-#6CbuBHB zTzt*B?ftn@=XNzLTPy6Fw{=%YwAab|)AgUKcs$MtdE9y@i;%OJpQpL)O2E;?@!f8F?N#w) zuNN1PnZXnOhJsV}MJibBru#0kvS71Lh+CQQxcu_v^;vp0)zo{|$~k6$ingW znq7u-XplCAF_7a3A;B5+&4N}a?WoG(?5K4pdS&)L4f@#@@Urgs#I|Y_y0HR13`>M& z1b~=s1_z%w=!kEpyf&oc_W)YfS(jK3Pn#{x1wupOmm=~b7fiRNyiONpYoArvUde_+IW1O~}D@hYIIS`>cz5?&c8*?gww7wWg(^K|%5d(_6*G zGa$ME#DJPA2JoJs84RVT;l_VFDSE2_kC~X9v%zVpn*8u7bMttHqVDAxv3EE(PBN;B zXLji&iL<^xslea$gWZp3{TnGScd4f-iXr0aI?TC^t40rX>z~oQ^fF@k$_HhBYr^Co z7Az?2;`T~Br16ErlWH)Ohc9Qod*_ecZ?pNhnV2kG#5~qpc#o)fDAV^ZqFu5xsmLI6 zt4{vTHjn#=DO!wAvkly3`35L;`NAXYOn!@`wp%!ibLiIDY}@#3jaCt3^G@fag2kTe z=?696AGA}A3ZbdJ_~Dok1ih>*EL7a!%IEJPg!v_?Jt1Vf@%k0CWcs&+@x%558 zyUz|M>|yLU+4Iq+dE4gvf4eX?7VU(wh9`4oYFLN9G|hC4C(-;!am$<`?I$*y2aab! z;3p<#2QC%tsz&0uhVIH=EOWehcvu+wR-@deh(kw9nXJktJ7t{(xe! z$HM}{AQ8p@o5V6l^uy_V(CgtvI~}ryyH>wUb3XeTR;jygW(PU0tlFPIeI1VCS9{V_{JaJX{9#G1MB!NUJNAcI+Vyd5Pc(Bol=5BS7|hX>6PfOs8p zeAea5Bi*ORDuRVGXFi>rgb*QsOMV&;_fy&A+>_n5*%fw5);G_~vMEmR-5o?CO4l5o47=&f!Eo;`yNJ%Z~db9glLyvH$c^Zt}O; z+-UsyZ%ySUm!;hH$yuXEkI&HRitW`Hjo#^&l~63QVA^xVjq~S;O<;)rWp@8b<4S~{ zdNeEU^1u8n`*i-KQh{dD6~h|2Vt-|pG`)~DO~N*l3n1yT_e|j@Px0@&+poCvBZz*H zU*3GfkZ_O4Cn7JK6HfEdO%p79mbHy*<5-m_m@w$cZ}cpH9k0SSOZY=?iz8rL*0<=K zW#Z4|<~KSfCMynVfAmvGG;b_PNNTt(>7ojA6Fr||Gw|!_afJidmY9MaSE#kxxF(8M z$_^Cw7t0(;t$VaY9Ouuzf05`oPd*=gzCCfhWdbnIe>qXVT$5jao~1f<;jU7#|5`mG zMITR%wubXXbm}kmMd9Jk`Tn1h=sO@_Se;O`G*CaY`o^;RC2ypb*6X*?&!cSe_&@!M zU$piA@MqkDq>Yr#RLVYv8beEo!mgI~pHvFJ&h-Dkf6@gr5abI8OJ+m&)Hv|!2J4LE zCAb&GtVD;pnJ^t_XG7W%p?jJ^ieWxZBdvo6?>XEjpV`JyvYQH|wEL%1rK?Oz{J($7 zpTJQV6c~tvkJw+IS+twVK&T$H=wfm_)gKk5N5>;!Vf9XD;zXR=!sKBLg=AUha7=9M zVxnf6L6Q-7qU2Oa)Y?Z^Dl}Wa#e~{TdW1$> zX87jxJ6Q+>er5Lq7fX}dxO_?O)WfJ+wk1llX&}D|EmPmSG(UX5q{7xrf+t?c=tOa1 zTwJPI?eh-~YD}%%3s4NH`A?#`$ zCrUJV($8X#o9_{!a0u^;xJwUp(~liX&j#oC5Dh3nJgz;O0bD~hbhC=9K*a!D3pL5F zEbCudFCR|&d7L1HmK-P2>ns!`eiw58N}}1%avy3>Ao`5S)^|K!TV&v29H9x-Hav4b zv@1zJ+jerapF8pWp0)J6s8(Mp`q+!FEAgM7!YogI0z($1KtNt zh#34D4pa?%dxJPq6ic9lc|Sg!Al<1jvllL0fU;BAs6fWa|0lG@V#4d8;N9=0Pz-EaeS(%Ne8({9YLiGoY>W8gw5_!xG)+?Sx%%~>a{Rj)4n)~Ik z^tW}Jl0jAh(=$SATQDs%6-Lu76HcQ2^X}ime*iexmYmxYDs#rx&8+~Regw67A~;EZ zu}YmB`|qIT9wlF?CNf$O4*HKz-g>+2yzodC;7K@g53r@&5iV~O7UqKU31UhX&qIzK zJ?+IA#Un{^<5lj{H4q4ZGc$l22>Kug1q36VJJ#zdJjwtDNgP2GV+NIS=i0uFhaR7l zL}@QSUtdG#@ArY60qnMgtV2)xMHX==fi?qyR|nK=T`+bG$ynf&us7)}P$LyEknqNh z4d5*x-X1}U9Iv7xz=`eH=$ybPkS;TWCP#tKJ{ssbe?Gq$Npyp#qDoc^R{XtJT8el~ zIrJ<8OY92Q)NP_WlTeIEZ+YgWNyp9YpYYsod8ETzT|)f;T%19E3j+I@r;E8JaYma{ zSEGf2rk>sh$idM7bqcL7WAI8`u0tAl!C(PhQM1=~)*pz$@fZW02wv$9abN+^Pv9%` z;T;38oyHgvJwN&}=+#%)uqbEaz($hdBw#<>_BdqU5TlnuI&3aezgtD6oHSZP{Vy*r zHz#aOboJZh>azKIWMrX5T>^ec1ds5Zk*CrFcjBYfR`a`jS}BH>>F=RD1^t~5q5!j? zdP|g7UcTw5DC3ooC(69LXY(!^^3K>50y(IKbj($5VdbOqHh*vSU zhmFKa_%hkeo*cD{27z(wB)x^*K4GxE_!^HnKqah$6`PKDC;MK5E6P3(Dr3RXX5Ra(>@6@j|ZPmbo^^OYD$5L+e7fsYl5%smbgXiz1MBQ!rC^-30ZIG2tk)=h9U7 zCBazq)}kdV-z6JJgVI1r-ATye_uLe?`*h0-?aL7S#_xe<0*M4feg%3NmdCj~kQXxG zNiZR-0y^7na(+$pWQf9o1-C-~Q7Yutt+CG+mwx;9E!n6rqBk>j`}X2d`~aF&Vi4fA z+V^}sgDvYD^*}Ep0ZL-RazQ!7#LVoql&b*u1lg#5dy8u4cu6)w*lcVEU|Bd-R%|wV zjX{eMY66Uibc^v(Fcpv9pG0~I!p9&}-J0=|bj$#9N5kQ`f^@ck)C4lE_6 zZgY!fE4ClKt}%jWp!Ejn$1d+!ws}a?WNhGT#~H>fDbnH|IkTwHK_4dWU8!jT4Yh9+ z;S%6BtEsBG_B~xZ|AZQH-H?!6_bAOX*CKAYA4(!Sc7GVYbv&ZqNv6XBuqRR{%D}Wd zN)}#IRHa9cw(Ex3-H#g}hJJ_)j@wo_WDgjD5x=wjB2fS}SmmNK3xdLS7?y5i4kMD+ z%doib;M#h#;_Hj@@-r~wNrY^S9w&BxJew{PDL33&&!*C7Zccr6T0MC*&gamuu) z+mNwqDi8KaQ$>Y(MDm1fofAgjs4n7;K%V$!HhDJ})L{?g-J>rQ+|UhSjMv*`TVH6J zK#Z3r;Mn=r5+#6H%&!L?%w(oBbZK-aEt?Dhe0})8()x5 zRie&zg?FnFJ*I&q#POy_RgIKuNJW;S86ledLEC_5?}ce52~`H**A%?5-fsj4Cr({> z&G4dv2qJ7rNos6Jt;Asny1Sr`2jo!kbw6_vc;z+(Vp&~j70|LwzcUGlH`vE!5W~&G z!$Y@Hq7R9wS;+ss#6Xx*Cz)Ay=X_aOmu)sOKiRXMxD3~6lLTqlm1KwKtyjk{pN6_0 zxpT-ZX~40BX4WJp5&V?ZyNBBiwqLHm=m4NGP1V5}j_Q>6miYU(>x)C366KbmS>=so zl8=1_Mw53cPCVOUffet*;_6uS$UQ>YN8uYI4XzLC@eIzm69%U+G08a{8^jk7r{bY; z@pSLZv^9pLgLeYQi+01ijN~jB8JLxht7ULwQ}PC0!27FJMXSX1v0+gT&lzu(u`_8% zBfk<4jdaxgEYH8&C#bejQ&VFh+TO7)ha3YZt{qwGSYY@PJ#EPdS1iAd`57j~w8D8d zSi*~(NAqwb60c(ZMpEMwc+^URbL`#?-AiN&(3KWOq)NIs5C5}+W8@o^2L=qiCsDKO^HwByLkMYb2tp$70caIq4b_py9M7R7RXo2Pg`0<$NK zsG1uX6&r|us|@EDmDsR;{R-$*jAq8`x5WyW+161B7-d-8_~HmL)Cq0fi-zJ`tUo>Q zJPeBr0qhG*PcqunqoxCLmCtQ-8cJcu_+E@!hg_k~rotKX*zg~ago4Ev$EsWM(Vr5& zmivMF`CKbsUtgR*IUAF+6sA(Jlvuu|xKDMGWgrArz6u*F7y+q10WXc4P+Iy)MnP0y$UlO*!y+NM!^tH4d+EcrYix_8ie7A#}RWpShS=#&RL7c(hmw*T%sVT6p z78<9bJ=VU|j0Tq1VF8Ha;7+T;7T=9o-lYsoML{IR5ZP#p+-;|jWYuvI`r;hqi(&K& z{|deeo0e%-eFQ#Khf2ng=QP8|?3K7zb};GQMD`rMEAMD|;AeW3zoJ*r4%fl4cl?}4 z{y=qfsbd$NPXjfwIC!e~lH!yZP0zhP6wlAaI}?8-Y8|{zD!SX}o%`X=c}-F|6(yq0 zZo^-x8#ivOiEHts-8q`*Iom5_0=m8^9o^QFsF=hO-(?#ucCW6sX{K_o+oyT(pi*K? z9M?xh9Y+iYl*BdZRdO6z(TB0kkd0PVUe2iCzfv*{sw?c9-5MGia3vUyV0)pM1qvQ0 zQ29M4GmO5v>Ye`hm2y9pw&E<#85E#7S2oIpM zsH!AxQM;@0^sdi$LXNfu>yvdDXBKiUehT`~=zdFUncGebY)MzSB z-P_O0$7iA8Si7oCeO0!8@{Nt!klwjN21ZtVj)<7pAi{1)urEiggGYy`V6Um^R}3#) zm2q%^RdN##$Rg-6^wyJrQg}t)H_Y}2Y)mLFv8~hLFd#Ith^4x`!Rnb#oZ^iIo@oLC z0xsBjUi2I#dmTSSuy+Wrh1lgiPEa`T`WYcNc;pFm2{2*r=t&+88fR=k_UQFP@krv**w()}}Xjej(8_x#+3p+R9O>`*$AixGX6sE(~vocjfS|@Y+Y%j!?LcV|%8+ zULm7xa?&NXCjQEDxWvbAzluqIsi~;_bG&WpUTaEZSv=!N5_`k;*q{G(9GX&qGMf{eRwf)0u*x6S8t#W%FP`A! zB2{j~vTT|8!G5PJ%7>qTpT7wgfR~>iP);MFn`CE`HVA6c-Dlh!#4(2S7{ga4sQeL$ zhhkLUMWuciJ}Ja5SnLNHUd^xnj_q^w*s+8FGK{&6pCBE1;#8_GH+B?qu#?OX);_`37FSX=H0L1zYn3mN=8 zxBU&hY}51?)mxib_aQ+uvBA2~_34F$$Y_9f4_)c`O{W240p2188rIj1gv?Fu?g-sb zW%RyPLxSeU%A4cLzfhbr0z4}F7r(GZCcYF)?)a)soST_?N#{?Ec`N6y{X1v*4tr_F z@)oD_>(3D%639UTFqiXD@X)~MY!&$&f_f1EsZm4wzJ@CO`CkPDm{X~)nvNkgF~1`r zkw9|jt~xBmPW5*Yfcf0*qU?;Q+ykW=3U!cF;X|2L=a1Rn5UAh_QdxCcrN)AN;ol!t zY)i#=;RGCoCyOvj28NaRwbu`*Rp-R~YiQ2-3PsDI>;2w%60&_2b|0%i?(j_k-KZ_m ziH)hXg%C5Fev#I4{Z%C3nZ1AvX8`JUBf)p~?iVDq!wm*kB^LauTfo2_oyounT_%1G zVL1E_sQ%P(A{0Gvf!|1qK93K5H%u7;yySu%7^QPS@mI3GkKq%OGam)^f z0L5Q*Yeu~^_`C!JW8Iaeiv^W*o}w(08L8vi^q zRXF1aY^ZSf?V%3$y1O?K2E0Mkz^&*BotQNAb={4*BM5!PldQvjZPuS9h5lY?9e$~N zF~R`xP;Cof>h$zTp<~y(>h9Br1a9I~Lg+X>7&#*_TeBlf?6?{}^C&r<``6n49qOIW zzsG0id0nle^24d6tr{#}vBX9YYK#H4OGGk?AQ*>6A6Rao_XRg1k3)uQ=o&Rh^@bk&G zU0;_<5U@Ra_vRr)L(Q?1iFM=f9oG4_3_I5u?ZavqLZ6}gX=$Pl`#{-!$8Lr1j)eX% zNFuN*U3Gd6txaDPPkwN(C?z|4P?n;l9JiP-&ubT z>!%4#dyp3ns|e&L)}XPKVXk$@UD(#R8K7{qO7S+PZSi?{Q6aT-precj+prT8t&)MQZNao>~QODA@619PlwX)?bz1 zJLgZK(CeruZ9j;E1YsEPN9Me{z3)ZGj=9dcUN*CsFxSjx-%$k6|%^bD08&#a>s-Fz1)N8rzXnC!Zk>S4F-TP$@Kb9tKJVH^H>kXUW4Q#iK_F?P z<<2uqVQ7I6msKGTRWi<7y-fgEAZVC3if!Fp8y^&taplll3-O%VvmFZSDr{kd;4u!s zH5}W}EiX$*7=nZ2LEv++C_vZmh`^0Vx8XLc$qv`<<|7H2lEWF1b9^dW-54Nnh_R{AS6(rf)9e5pv($z^sVrE(ohE{ZoJ=f&X*QeR)1{O z=={MvHXnfGQ*7MK@jGd0wq5U15#p^A64DATOZy1C4V7k8rmPXi)F!T+dsf41_9(R5 zOQH3Wmfv$*$-gq@%`x@?# zX{LU!j!7dxf>K^TV+ae!4B7Lj9u5d5dEE(@_WbKq-9{Tm(?-zb9aTtw85 zv@)W0T+Hco2TO`w?vm474A_!qoJpe9zP>cNH|t8_3%~?j=P`fx(3oHp@a)muet8EtgOHDu=^wH6;a_$W49C&NM$5^3^{hpe)dHLfE_><1FTssMz8 z^wT3tKi8r27|wid$Dp7f4EqDMk1Nt56ZY&|JlAU9w%5->!RbrcwV8>+nOsn_NIbBs z5X{U20|Z~E2W$sK7BCsed3y^B@+2<|m307EL`rUAUoxjj>x`0$^RM|X)9Np_h>q=W z`g`oeSI743+J%nYj*wq|mZ8>x7%EmRJQ-c-NgbARJNq0|}t()_8_06*ynBC#y z!^A{l)De0k6R~`mw*Ixq$doJDELkUhAa(W(w%Zi~)2)bigHX92s-fNH+pt9pBmeG5dhVbK{V?mo zsmFB|nhme(vL%8A51mGfNMH?yQ$D<6Vg~~6rGuY99F!DnvF%@R&F@Yv+p}^$4>TSk zDmw5AGZXGJ*1&KeYV+q&L4uto3vdxPNucGRM=eOLxPTltmR3Qrm$E!cKFsshA_y-r8s%6tzw$xD#-rwt|Af=Lf**wXuYO+UszM z?-ZYF3C~lMe1C=t-{k~h9CSc34?&g1BW&!*f2^&4>N$ZfF`NVlcOS2b#KC9j_dM{% z4Tm?Y3^ZitGAmDXIyPn7XY2b$K`GRVO}Nxh&h*7~GHQ=%)H;#A_~9wL#;@S=XQ9Tw z!+~eA<@J`2rn^3755nOjx(lepqmSJVAZ&uH9#4T!23f$_LyM}KYuK+1Q4#*1S*Cd zsFbeEb+n0G2wHWJ@5#w6xs5#toZ*!ffX`Xt)e80%C2f>kySXyvwB2k9vY!I7EE~3{ z1csuS6OyZ(KMHotd3<`G9hQlEN!Y&AT{^jqh5-{w;lFxg{oyS4Cq*zT5Dme(?K?>^ z5h#yn{s$$^Zw2kh=l`sX(NRiDG>+*C+=TQJ{{KrP_1*m1cSum@;cArJ({orr`7FT$ z8F%e%;3{xb4`cU}qYkI16To(TFdv)&JBgZQpDcNhj?1r(Rg{&P0pP>QN_cca9e`dy zx!v;&Es-;m$H4}XVvyhk>kFqd^78blQejkq|3Y*cr|O5o3M>l9H-h!V@sfkY0Bov5 z`OX<{)oCdVnMCDdwho0LG{Dn;a-VT+T2_CQXwN{_44?upkc8zxCJGr^KH62eB5>Zn zfB%wEGs;2`b9otm*@&te0?rP-D5)d!AU5T1?Sz~CTu7HYyZ0S0j>M_^qA4~^)DG+Z`N zDABu6CJ{3wrmVrE!lXblw!q5*Q8ob|RN4wI5`_=|?s9jc!cKYTFzlS^BXEvt zq)1SnFwDO6Hn@A8h*N<)2<3LA!JC&wCqOuo$Q9}aj%gsIUFY#IFYn{YEzk{CpWL#T z6)B|>9m^I|*hohV3jJ5Cuy;U<5LO@+d0oW-=EYKUtmhN*^E3{xO04S`cAh^Y3yYO+ zXbt!fW$Er{B+a8NQb5I)ZTY99!V$e1rer>RXaj~5??9*pB*3Sg89bKRK(KfW=2x%) z!$6AW-zFenUY-lK8xRSgWF6S=pjw=8q?7W*pp(9V_t#F=C)5S11)7b&q)_^OG@#jz z+X|VXHE319-h>4P`A0ke%){o}ukdZ-AZ5n_+$V9aS2}@|LS3f6Zj+2jXh!M*PC|+> z2;QEW`y0|CaKDexeE^)zhR=jT39lh8R*ht(thUut8uA1Da$=O7qFx}8Tv{~vemldm4a;blY3TNw zIvU#^6}GoEHn&=~iaOiMF}beq;Mzmry8W+wY#fW;rX?#GU4y?fUWiU07(CXlVCY?G-k)F}JfmYPyVG z|Czkd{O1YK^3VQK*mzF$_Y0QOETdUME--PhbU0~jZ+_ZznbEV8#XVPL+xh;!#!kJJ z^7}O_XqMA3DA^i29<_F~61Fk5H8HiaU&bjLBHyRxo$;UVWNUiV+{E78+G?-0o!v4~ zioEO*+cfjp1%bQG*s$*Y{Z1S-D`=SZ{p*_TCMFKH#wKT$&G#u)$O0_qF+J~S$`wN222cFQOaANh>{7UMVcyIi)AQS1{@e5f zKcz495~jEMW6*xPV6N#Ilsj3RRbMUm$MpPm&D_&7JD0vFM)UWi&Mt)CuKIbWe+~8Q z^a!1omAx-_ruC2M`R$s2nw|mQQiYeN);|4XdSqQs{G6WUb4<@0zN=4EtgN>DG1k9b zF~{`eWL79dCRmjI$4ma}^pq*|W-pNZV|sqO%YU1mD?Q!vcV)NT{A195yI`*AVKuQR z&L1~<^vCr4cFjLekCKSSpVRZ(RdY>Gp0BiQ(LVF8Kc?rmYyN3^8vIHXHn2Rr^2hXi zdRF>#df4Wep3hd^Pb&4Je*7`kzg;oM^z>;~C>Uw4{Qe&=`EzdV|sqO z%YU1muCsOWG~(;L|CpZNE|_b2IJ3-(*PLEs`N#D9cFo+=^Z6B`k&;R*Of9{@z zdu3z|%H0zFn4aJ6^iR_>5?QK1^R&D&e(L8|-OVU?h`Qgl`{(qm*bq7~pXMh1&-%BG zHxd;Wwl+Iya@xqm%-Gg`&G`6ysymAq9#XT-U(+)_-)EoNPI?-4lqxJIAnE-^Z+_dZ%*IK^BW; zkK{NnS;*?$-%!UIcOhS<@5u(vfcrWD_-U+`Ok#k#^7?}dl~dhmA8Ro(Uf4!OJMVN5 zeXiZK+f4mSp4+c_y3!=e#?Hvg*{3&!n>cO>8msIbr3temj{)EM{LZfLt7iX7ITvyM zr-Ghx_#E+q$S;v?+}sOh|HgKQv|%E@==S}TpQEfDlIUiCM48X>(>14@n@96g@k@C^ zx%9vKy4T`BHwCGR08)ve=SHwm%)GuI$5Gh~@>wC>I%5ZjHfSzv%MVyh1^4!NaLQw` z(uI^eM&yxS`;l6b1Xf2!3hs&laEB>bExusZ1^O2vPF=R3nQLZr=bH;b{OWQ)-kG$@ zUx7|jer8Z!>?G;v3YjSM4TEDYAW(@IfWTuJy{2%^3a7fQrPCL+y(&S$PPf6^Bvo~5 z{GKUPr(j*sJTp}|vr`F`>xn8hwUiV3E@>!QiD(rv$GF7A&JTi2j3!;gjYA|bj36Gs z?^@JD24xM={nA_)MH>kh5aMtT<-UcOAfF6%;~c=}K;IzQzYu}+B|I zDOY{?O(3<-slpT5zBdiNas4`x&>)(eLQ&HQL@kKN#}KK`R5}*aT;j-Sy&?_Cq6o^% zbtdOpA&dnWPn4;s&rYgC8N!)eW!Q}_6pVh)UF0GMTR}gQf;f;3r3RhNJ^b_nKwjHQ zs6x|G%-I_Cen1QwiN@x3r-5&W!V#qhT++{l%FJiYj?bekxf>i|0Vh5b#QpT=#qvmlaw6&o zx)m)lX8^B;VPND(pDvXf`w|35Q0V>Z3gN;$yj-u_NG_3+JLgvh!QHL`L{Qj~^XZnj zUsU_ZM0{d6{B8bl`@q4`&=bikkZ*+QF7=nFn=w465RlPa=mTs~2#N8j{aWZP9AjR4 zA4upR)NZfBBnP2!^OhfLXqtXpP%!<_Ezot3_4ERyPLLAEP9@X%y{^4ktyd6mO<-{3 zpBuIII~5?J8u=*q7v(4|N$hmKw3y39g#EG{-o5|iRc|EuO*YL;H9^hb0#-7|LXjxp z*RLNd=9*@xTC@tpoWrX$pvI?LeE3V;Wl*eT;r3BHqkLN_3Dz#GmS~h<-dRA3IU&A* zV8d~|g7?aYBmRweGw6EV3TF;AjlTsEkk&K?Qe@j|25X7kt4@r7Z=k;L5Hiv=NUii) zO-0_hg&h(+LzO`2E51&$E%A~E=md5R`W~Nl03>@{@|$|m&BS{q3&J}x)BxRagL^@0 zzV1u9(|{XPo_XULCYSpCQ#~@a^)xgXsTLrC;yU!2)@g$M&#?fGszOAQG98&KK^?8eAQcZ9;cKinfW zne0HWq^jyGXcS3X4@6vtpZ-;u-N{z8i^mo_0v2J%&97L|&?=pU$gp3#01`UXdtbWX zFQ`Wd0mvnvbp?YzgF3(_Q*JZZ@Dtc|eBIn8U70Wx=%(H}GJ$M2XGCb16z(b(q*%MO za`<#-LSZ3|-A!ue+zY-H^Zwntkm1;cl-FX!whqydErpgkc0iN)W!+KXhKOo0JwEDN zHgE1av9Y2gpGY#W!3ZdT?jAR#Pvf&QfX8f;Pe`_b-zZq;OBAZiuJ~O^WA6(~@AkKc ztYuN<7)xc+U+|PjGx(dO}xqrL$iw|c4jXz{)NOyDGqL}yT=CT$5RuKZ;4 zQj!S~e<1d8X8gzRRWeR}pP%tZSDT^HItpVTH{pS9I;`V|3^in77bDR=RfY9s@qtJ^hpuKLPz z@^9h;XF^bxJd8yqbiNYG8ev>3OqxbZwnEU{mLrCvK=Vz5`j>l0!R9xORXR?07EX6! zb*N9>3Db;EkTQF{`nY#Av%?4Z)?C*zb#eB~e90~t-V3WwHWf6ERhK^vD}`)!P1N|f z^C$CbyY9usnL*RmfBeGJ!x+oSTS#;E^~O(HC(GFIx`QrqMlPL|hqc>IL9&B!-k%v| zt_KMQwkfPd*l`qWb6ArDax$C?=kq8?hD*i9ZKaUwNtM=*RcEL4W1W|1XOV^h$J6?u zPGzVDdbG;@n|9%N9TCJ}qM9KawfpoP@>N#(3lvH|4N2K^HsoRAjdw|{ z)h2N0z=5FV;r^`?u}GJ>-8A_PP|xitk2naVO$`jfgG42lkDuRm7>l}k*8`gMP zg4IUqedCyydgWYKS4SpPzkU!diwW{E09E=sUeAXR&ezW`edgf&^XCRX1N{SNHBqv) z;Hji~he{`sxYk6~8=k$qX-9ZEa4fhq@J*g`r1Gkala(pYdIk8G^wI^}Nu!(?b9fO= z`i@Ph3$hzu^>$l0c!061`=1-Z zloS;e!Cpxh1i?O6RaETxQ2r8W7MlS;qq>NMPoxPJ5|Q+v=&CIY57KFdfUTW@Pcd=g z=`u=t=d9tC;a9YKQ*`ppbJU{$`rz??u?5z9->rWmw(2e$&R$3kB%vk20PWT0sTq4;7{B~u>4iPmJRO4ZW(f+9f)q^^?-GyOs(wEVavlbhMfnU4I;bJv!bd@=svmF>IM9Y8PjaB|{QvUuaioSyN69jQ4B9|OXNXyh2SLnT%5 zkKH5jp)qI3N`>A9>KRjv32Gbx&c<{!hkjr9*Lk3{sKomT9r4B>=zu}FM2;|=FYy~A zv4laRgq6Z}-l*{tzm`4?067K<^!~9cnt?>Yt_F4w&*p&7gJJ)S$DctYK~UjUI+}0P zpcv=7EXo`8%qLvb%*>2b*(+}D1K|~%EuylTfenw0qywqULJGxeAtJYPhRq}hBBKF8 z6Owc`^^cJyk93fno}A8{qZ={tUtsmg=>su`1O!nP_wf++sx?^E*?{FGzc-N{c03+r zi3G96?0)q&$HSOSZQ+>H0Ueh`*PNpFMd1h^xa-9^jy%f&r~;O(5arnvPHJBeuZgZ< z1A5XvctHA}_>`Gf3^?Z_Y4xqK(;@peD*QTMK^y|R|7V)N{WJ8Jq~ zWt4<`aHwb6+^6~FuDygmD4J);^4$783DrIlCEzFLP8<$F<2SjS+wVHj-a8?5P*+z) z34z`UIiV6ARn^NiBD<8-EJtcf)Jw5t-Hu?_^}=%}+z%PpO0Pl4(89oe_iMX>d8r(% zEL1yWdIZaQ=0|2>_~{Sk{e~Iu53qa%InV@99;)Z9^=D~(!mLVkzulrx8tHy|@*sxV z&Tspi)0vF41oz2uY&m`K2$GVLl}{cEoq{icY`hr^w1a437CDueZSN8D*)!}6UuPPz zBNlOq3L|mc#813EYQ~9t|=Mo#FPwn0s8ZE5YvKpx3fw1bxYq4Q>qQ96_| z2Vg`aNjj4gZ5=B3BBko;JEI{&heE%>6x@j4Vb;RcJTWK;kV&cwD!@7N7w{R%h@5?T z*aq&aPnB8d4|tS5Q6V4RIbmYx**CY79m%I-r-VN(;)t{@(cI7c7P*G% zN|g*RcwnFd9JNoYdZB%z-oAY{*tUGH-rX8HC5tlH{j1J?xwbRUus5?{IO(3|t(aS* z%FuPLl5@#Q*GAm6AICRNiHT7)k`{`IFYQdi+ ziba^LH)V;c4xVkA_yo$7xWuYKCOkRGM3xgFJsciOEoN`R0Mc9PUQJNPaIdO5_uyn@ELF?#Z9= zwGkwXL?3bTy=c8AIwBIs6SR)KFN2hz$70JBOhqWXSqKdg^mNjQNKyL^{RCY)u0kAV z2PeOBUp@()VI<*qq=YSbgtP~uJb^bXy`2Hs)1aRm>Z^_55`2aCDz;{Khj7QpMC&Un zwZ}Gie&p~hM22C)fi=DGQ!geY^jkQQ&>L=X05Y=R+7f*!PGm5c85tQQ=KU~y#p1*X zb%b89MuUg|wRCmgBV&XVW+WazC@quy-~U=OFy=zIMa1}|0VXo1zL3l@C=ZaheUttn z%pKGM@)Pf?5E7C;6yUHV6-BcVX~XW--{M44O+Hzfknrvga=1xDL&J%9fNS#eVr;k; zl#rIfX@!h12vH|-PWkblcPn&%?z@Zt3j{zRBZR;RQlmWxG3$tT4ef)6a$P zB#s4MG}?>Pxy<}wKJtX&r*ola#`m-ep$1?qI1Nf+<{f+VkH1GjjtIOAIZ+TS;8gF+ zZJO!{F}dQSeJ*6P`5UmJnTQ0)=0TEgzjHoe{*e0o2#se*V6x&L7X%MNgyYt2OC>%IY11GO%um1PFL%n&QF}l08dDqyzr!H(FK^T1C zR{zw|6CItMP#Q%91s%}WcR}PT*(e>Pm34N+N+s|L8h1V8M=03qhLKfsiHV8%2FHVd zFRfe^kgbg1U;G8fAORx&DWtdcovY9T$9=lZov5a|1*NOsz01OYAtXYbrL+0y88wOh zD1&9+KXOA)trfZ&BxXDks32KmP=G)UKWbMg$>0Bcgl*r(6_hLnJAz87}L03pf2v~MVm1X7AZtSaYZ3a5#A~BsD65Ma zI6d%TR&~&_D68b1oxp_mBU2R?zNZ?!p3k}cWrEn{PLngpWpL%QS_g#dJ~i5KBT9BI z`r$?#UeMeGh9e5PcMqEZs}TH@{3PO2%JhTsZ|v+yDfbM#NTIkcAy{yGCh$gRxVge` zFp`xMS4D)3KyApk;mm^sg7h_pC626W>-;{|Q8gPGBInPR9#N>Efh8T~Tmcn%HVWlK zTxzx_ARf$Uu4@2=vSj(ck!QXe1mgtcHUAx4#IrcK02R<<>%b%b_{jW#42$1$Hw-YI3abR&6$IJnN)%PB``}~ydBN0$ zlb{+$tCm(w;>9pCKu=y@*ZsW1$}Je-m!fSQbtY8gOo43}LPWlWt`&u9iD(m}8gl#g z9wiKXKro7H06|6I0>kSUMUpY3_W)6Yhz`rWbPWBG%2rI~V+4ph3pH;cd~~9BCQu_x z9+16P59ia<(<4;{w-s2o?oLls=Q#QV#O}QX$#$+~^wlLxcJ`h(sZRWCGsG#unosku zf7-{El$0Pn)w8%64d0q14^{-@jfrDrz`*&@8$r z7ny=`Sko6E(OYzJdmHILO-`+_urPR6(_i@I%`Gg(k*e7tAP#-iGi7!T4wF=!)eO5n z-n6je+`46pROV)TgWlv33rnGC;US5CKmC7s8MW@Iu!$WC5(qybzeDS&jQ4p?P%Bqn z#Nug2vt098g3>Nv3CLxzSuG6%36&Gqm^TbX*$xYFVEYDQNa(}j?c;s`d) zMhggN0sCLW-NP9h7`oV}opgEFYHir!{SpN?><8IM75Q+0RqZB?9RF>>{8~T!w_?oM zcC?(lb78fU45v!qexojX+b(`;?lu=BdXPR1ple8F8F!fNe#m#BwF;GUm0~1%VImk3 zF;?hcp9U@gu~9|ZUL|y`Ld%-1Eq8JEY@sy`Op*N`;?542?ciSZkHbr;JR`ye7%o}k z_=Z>a#!Nm;aF29&*q}BapnE8N>tVXXxi7#=I=}7C!-su<>TlsqAvZ!x3%DwLdqY0& z-84?(F$@Y>%}u??U9N*cm`IPDda2t$N|&HY?qtjI!Yud#q;3KnF0$=pr&xb3vX7GQ z4@1(8rG2EOR5D;kG-?*`l16SC{6ifceeierqYw<1M(U;=Er*NYZ3eI|Y8^V87--hv z^dn}ok`}HmfNm6I(61cBkw7BUV}P*K%pf9%94Hby8!id}B9w!Pef1uFqm5Wqod7hJ#1J&KAOToRO zq0pGR`g%|+gJV+Z%YIq%{448xL13Z(f+GN~PFh=ATjXW%`i6H5`~1x$-q{Mr6Bz=c zbj6!r-Mh-8!Wj@dc%SNLjZO+>Xg`*xrI-0s$ZRt(h>reW5}D-f{};TdjBNh=*NjgO zi>zGY*v6WPZc3B4gMw}yR3|QcF`_b%;VvzF0oQe;cl*LL2BAZOO7c4)(N5NMpP|d@K@vG zYRd#Ec@`S4;(Re~{~ghgQ70rMbbQl-a|(_)`GUv86!wi3nr`lymO?LdMyzX(WbXYz zS`e|rO&cHXRF~<07V&AeF~zwnPwvgOz?kdh=>)3H?BV5Bn>{k%KIcaLbM4RxR4P%3 zbX%M1Cyh()DzeS^W_5wZ?SvdTqm)j@vpZfVXDDlUn_2QO)ehggTBMT{b7R8AE!D4A zxYi;xs#9ECJXxdm0jZxxY3CvDtD$kNFw4np-F3ad?OR_po*i*ss;CfmN=?bJzHV#* zxA>!g)TdD)>>V=OS*)k315nh4{_e5as#V+gxw*T}BD>4bFm=t!C9$3;U~Cm3IVcox z+`pMP6$r0uz(BOsp8@V({28N2-T-;a3iYx9ZHk-Eo%8)$F;$?40kUAe?7RG}cB zU3=FHoE|^-qjR8)&X3@1dn@1F3fTf$_Ukr@O+~OrrOpfB$p1u;=G8~&w~sH7U10jRNm~?W7|tMsK3Z^?Dyyo51qJg_l!btiPP;U&1M~sD zuufRm8aOvnR#fy(1B-^|c40Nok^?BnGYp>_;!c>*R5(>uE~Gg-e&wsBsLl3rz)1{I zt_|v`npw}sY{Ik=NC5arZCxG7P%?jyT0`GX7)|K4h(Ucyhy(&Mk>oyv zZ5#w{B{5v%s1>=vouz)83N%bM9eX7;|F!i{$0iTdOYoLAL<9_|0z0BgqSfEi(-RP> zGt>is@Aw!6b<^(U7)R1KFBFZikQctWX7JVe#XWtM zm0BvrdjdoXGB+m|B2sej^-4%^2AEIs31EN|;^S5HRYcfG%j1?cmoHyV)e&Hz;wjjh zAsN8I!I5OUc}s^-fNVRLej;|8PQ$gOCdHO2t)AFslGl zW)?m&v1Zc3KK6%OrR!SmFw8%uh;(OFEFh3%a&j^uc$=Cn1+gX(i|lqe28>m*QQtP) z46A6>p}ydyG7m4A?a}V7LcJ6u&b_S+NzF|Yop^0LyeCTVafH;$w;cSWK_+zlxyD>~ zf(qGfB>wGK<;vK!&F?wCKdSV>jH>pnf+y3$>1m5+8ivQ>T!%$Rmpjt$$#(v(6KC*1 z`i12UrbeqK)1C<0+YuLxF845A-Z61VK>`~ADdAI~H3Wr)9V5^NzGkx^>dkOagNkdd z?RP;SN9x27y!(d%TW3r)mOXOJ-l9A~B2eU0qHmCc%)-LLBfeB>J?ZNaR*ES^T5Xu9 z>F(`Mxz!~McGM65?H3xRRM02AL{S$Rl<(&s9JsP~z0(I3uC3yX)z9wlQAZ1KIs4I* zT6MQnRnfz--3A<4>c{eE7p`ii{ft;HkKNNdLYA(*G$``8byIvc2M>la9XO?20iUHG$ zMO!80%e-#T+f6y|ifTV~)-5+-TCYC0IkfFzQOXWSTPevOK^|A_3jnw{ah-=6J` zFK+JFDMU8?;@HPMwQCClev8bGst58YYv#S&Xp^}o*oA3eVaz7pxY3HqBS-E#?MO)W zXLwHY)O82lfrm6T+EkuAS@w}N3lbYo-8;O}Siaq59f$tmn39q+`8}7u*If0^8T|R? zBWAr`9}}62U^jtNc7Za)5##7d#mdUM=&$n#`C#LYp=t;87m&B3Fx4#);|pTXD(>M)}$JHAf3f)~D95m0CY$N7!oBTt_O#rbX)gV6BalsCDe4WHMtpOsesl(OacE6C%ZMNajJxPk&XCLjBg8I?*Ih}Bp;zFf#g0Y2_1&?HjI zqRi`k_a8b$A~AWoXraOXkFU3m%5rP_c2PpQ8>GDHF6j8$^-r zPBG|iq;${QwVwBR_xSd=|5;-=#`5;M>A=~mdOzxt}{i(dk$5p z@#T^C+-uw3eARc9t1Wlw*)R)+uyfCO71E`l)2Bj){lcT8jSTCbLXlcjxMqa>PG!G} zv4AEFBudd|l$0UADgH0d_*=EUM{HVMeF)O;O*p%%iS4ju`&*L|tuf&_*|p8CNa<%! z{rPTlv8P{Z+9Ez;h-LYoZ2oXTm*n?mGm=59^;( z%5Ek*F~ZI>Gnzw+0`?=@U&03)>&?wUNvCERa;O|RskqZBy=7=BAbKxQ9UNbBuGF@p_8Ir$47Ok)sBXVd3B`YKlGaqA=DHh?z+n>4{yv+&E zV=b&FJJ*Q~Od<3zJj5AdOvoj1wuyA){Pjf)zKE!RRa|@t!``J6$HHxM>I(7T+ZqFr zol5n+o9&Cl_qAnV4&^ll`iB0JTFNatRn}3pi*s|lA`5eKgdGKy49#l-DG+FG<_K#0 ze{VZzg~)$F7^V#2^ZT5YyW*5j(c~2?!|$|X$?iwl>`KY*$EEe&v|F?C)mmhW!<>IV zd;A7ce79*t3Q6OdvmBh zad7DL<1eAw5ssU1Nop-NS3GB}OQ`jt<1h&$sgItNq7TwH0$FzwuvCw5Rp;&vSQ zfGkYS+AOsL5{I+o@>@j)t@73ccAfSPJApMm2M-4+c{4c2y_STAOIkLpmQ%MYqeRF8 z9@WclD-jOpnf$%u-Mrz>D#~XZP zQ>nLMoYF5;3F^bFi-&SwrqHu6`w3RxZ!8HI;Yt@@qSSET8myg0ZyFbe59>)5^4xM) zTE$c1$|@1&mPhJO@`g?6#A>}oGAEPB_^@$Z%z?yux>6HrSkNA9oAw#yUhZfMmEXvR zPr`U7Zr)J(`xeW;yLI$jM_&3@k9pqLzW1u=4(Cb13Iuds4Np3oW1m&4zg}1N(Nfu4 z-egqjDXHRadSGk`yOgdPw7j4YZ`>05A$h^ggL81h%jAUmvq78j8$j;?MYg5oV{HoEFcz*3F$~2{Vw-o)uHF7FYqJ51~Lc9S+<&ptWpx9b1!z30$E+e#I;vWA)bJBOdQiA)M4zU+$l z{-^fgOjgznBf|jvQ?juj^ll7n@jwNWYf|&igp&t*Lg4n@?d%FQbS&VJ2-{mXmbw_+ z+KCyl`TB&qJjAz9;}4~Hl2MXsRvBCa@eeqiq%{kn)M};Fj$It7*z@y?_0{*Po2%{m zpwewTvWZ9}?(Y-l5zvvw5||ejf_WG7zBXL(COewD(&jB0Qg)@^#5`}S{~D2sUuBE3 zDS~O?JXSX>NzHUK5NhtV8+#2Fql&S)+3J-#@F%~vBpONLj##&U>zywh zy-tI}23cTRr6rBef42@W37Fy=m@mf@-rUh3IT!fErIO%eF06T%vXgCg*|l*)J`$OJ zyFhLzdjVTrgN4XGul0@N>35lle4bz0@f2mn_Tw*bkoCj3%!F$2$vK^ySj}~r57P1f zzPR0$`(UPS@a^hvdi2Z(mns4JM|o}xwzAzfBm##$f+XrKi^VmG5r>*mFXr*3>POC` zsKg9Tl3u^G;Z~f!0yJL#2)X7mhHVW#5&^;#A9zr+CZfOxMEXRfE-@Mz+mV~z{ycy5 z@8uj2O_8dQXx9nDLiCaxEYTSu%KXM(OnGnJ>`Q0|?(l>#=(@8PDb4t$E2l4)!DL>U* z{fuS}ojU1WzN}MBC?0Y8>20h;XzH8ocOaOc8i4KnZ{2Ka5d1zr`}5aY+s^jq^U2Y^*MR+PUVRkzXgN=(jfO};u#=5991HH*{e;1PNA-$i~hh(6r^Yzn4s zwC8CKO(H9#I0}>4`j3k__0t&ESvX7S`i&Euc0nzEV?wMJ6xBPnffh>TPU1^94LFs0gyyQ2x)pvSs-h zPX>|c&+`k|=j9g#=IiK4f1m6K+rFGY!zTi0cpq=0H*ZveMs{v|4gGB0CdzX@ue+T4 zC;tiCl}@E+kY9D-FfHqMpFV_K9Cz^NQ<#y<4Q{TP>Hy~F#YsuGAJIpz(apDyN*J%LX~c*dY3=tQY-enl`M`^mRQ&adS;r~g^ffN9O&-< zTRuG0?YJfysP=QiniitQB_u#g?p@rLReQS^KHSdTI;Lbzi`1`Z=$v5vv|`Ui)p97G zY(~v!_7)RGn>@Nh8P9Y)+?2D7oXuOh*hcKsQ!tY6yXFAPe9Vqto~e+ba+XTaROr7y zzTO|qmv?ZCgUR6|PaTshAlEsE>Sg`7I5UEihf3M6wsy$#4QP)PqY6XlJ(3^<9hQz# z>=?7?2EB5oftd}-i z^=V0X;CyiF{?Y&MLy#_7^^QFxY2Kz%-d|RZ2yF?TvUh%p76BrgfL&CmjLUUC>};ZR zY^gc3n{I9vybg;*iHi8VcDQj?Sl|y>`#)5VZo4+=D_6zEIZf)PJ>&KQ-;Z~;Vid>k zi^)YTt^5ety!YYY+2&uH%pSG-j?wUQ{fD|Ymaw=Ee+4zLbwNQc$hKL&zr&t1FH z!sarS_YVC&D{}X%5AHcB0-Ck7wVbAFv#DERie!PGL8CeBv+?3<0E9xY`AA7LaLqw; z85GI&0Czdlybfr$>Z-B7CF2=YB5|FO{}hdLvEE~>)3j`_nN@QUU)f|iWOd#gUy+4{ zuw5_}RjA}%!1~kdLR?$$!%{DgR(cFD;qZUlcJz$DHwdyFvsN zMeu`m4}D)JDvtP=-#T@`?0ORHKa?e?(vYQ#XwpMZIWz!I%=DGCo z6_mcV8R8n-jq7e$zS7E^2>t1wEOa>~(c5`}4n4+VP5&)L6ZnEF$Cj#hm7(W&#b+1o;cTC^dJ}c z@V%(g2_*mV<8ed(Q97wEcu=(5D>O60`9T>*n7|3pz$hq9IAO{crFrwhf>~>s<2LwXv;qPt# z9*}!sbFuix_FUgwtsr|s`es87@Hjqrvr8_wwKP6$5x0a3Y^i+seKkM-e26o1A{Fz7 z0L7#<@)-<23eP`93G{UE_+qD}t*DfInS%MpH?uH=pSv0LBjtaic;0U5(*Rq7CKEv4 z1R3rrl(#FRm| z5((6~xvsqUz|Dk zE1_96ccxVG(tqq*)bwpoIq{BIaJm=V;vOc34x?LHDR;jKD84&^r<<{Zs)90LdeuN_ zrwwReL2)V{kJN+yyv^-^<|IfzATzn+E+@P~UDY+n^S$vPbCU zE$`x8TJ+s{A(m3F7^S*(a{2q7rhc}T*q|L~s?_v7hzmH#m&|_j zjJ05HJAZ%XsDbG=c_vvW=~~K_uD52d5nQanet{D#he3KujXS<#j3M>gh3;~?FL>Ee z#gxg4(41`Y$!xV&3dk1pUHK+uXX~k|{^$sMh~cT>*gd#ugnoD+k?`v$@BsrZ2TU0F z4TKN??uELiph_R$|In5CoX%7MO4uM#2qHLhU=k~cI}T1j(<8r!mHp4bFamy&zX_)Q z1Ka?Gl_6i}HD+zv!F7but?KTZ!&M(sVY2o24c#=<>wX)BbUbqlEG(=dg%XYVZogXm zj6?>XTsmV7kVu^?(HOZHrD^KIMmo;=CXTG*(2Z&)Z*%Kl;O``Vb3YCIvV_cyL)OVlN(r#IW&JuvbFNMX4%NP&>uqK2*|QLt;jK zw#xmS!LlC@`(Zq}oW=8-(qcN2WZ|apUL!?RaCm9Ab*h+?;aSw5gU^3I*o^Xmf_D)) zA;80Y)lmzbV*-G%N+4B*PA3rn%^DnnimEE8B^=lgHy_#nMD~kHk_%YcpjLG^iOO-W zwWTGib(Uro52u#-Ej=#9*`1s0hH4Ktx96XGqD?&oD{Ln)ZCI0CdPOLFB#rRZ*j(Ph z!_lBLO!5yF2V`2+B##zma$IfrCvRYCPz8NF+HU(&O7~%VF(b#8o$^A+ClyI@KvgP< zoBjT^t$Mmy9o=D-BT2(V+|5x{y1<$w?(P2cQt0AMs0K68F0*zj*gCQ$H;x27T@0C0*Dz8`w$Ac< zl%L1&=jQOu6i|L~@adyO-dw6BqFYR3o`fONZo{$f8Tv-5szn8X{FyD;`rT}ur{prN z+jW$|*j8-lk3U>Gj1R2SC&_TZLoYnx#n`0$Ke9SUD&(rDYxp%xJ2(7@iQ;?AvGNq) z(Hh+ABjt#<=-g0yrI7YWU3iG3ZCQEo)JA^8eG8__V474>S5P8?NZ)p|=c(8wVrIJB z;;0zKxn~Ve-euQ>mypWz5Y_S#Y3jQUqu81_uqpgvy3gmw-AjcCY4j0RWDYPAM{f9SMEYT-tZ{3LDdVE?uRI&@Ha6olCTT4q7M&&Yp` z&;O8ld4hoh)1g18M9e!cs@&&MXDO15ZWQ8rvHkXLzu1b)8&JVKTwMLMs(TpBA;6^z zwejWJv5|nN6g2D$`Zdsm@?2{*rCCjLs7ruGNh|Z$-%s_QmJY+>&9M%McDN| zV`RyFKw3*v*Q0{7%PyYS-}k`L+zDh4@9SLMC6co)?6J`f+}CH&JbXO3Hf&Ws3*I68 zu^;fcjKV&jbp6=DrtSU4+R)$d8XQfLdfFwnSt^Z+ z&zhRq=Y?!$^Ro?aldrxA_-e^zmKZX9sq=EZzj4|dL^n&-UvZ_Abm0uMxC`qL`TypEG~TkghN1-x}zgC)VU=^8%n!b#d_ zr04H{+-Kem2;h%|Wv$PfZaZRKp)1i29$vlszk*&Y3=GbBfE-jdXi$*!%)F9=Vbs3)0fPlys;=0ntdUb|^U-sPSiq zVB@IP&b0M;#(1f7Uv*MeR9-bFR#OR9u<6AmfPX^qA^8^@5eF3txwE#r` zo%RIy8d}bftOk420AcO3}vzkhvY!~4}&*j()+e3|1q z`OVh046rsF?K9^w7U`>z>>LqQF-S;7OSrS%PW@b0X#^e|DQK}S171H8nk2g!HV&M- z`Tusw!L|!JZ3j@>Z`iE3rSbm%`iVtjP-_6l_5vpWA4oew6UBi1^9ROMAhQpPfCg`& zc_IS9NJCq#fPm-)tysXlo$R&#-2)2&U~|YwUr+>>s?|ZU!}|DZ=i;gxQo-=8KgQ3z zZ6fXy`3#k07h7*-@6L8(`wamES%c>JmyBzQooYpW=|P*6vMDkY6P^=d?ys^gqjZSK z+uiH9B0lj!*syh15MbS<+q2KK8@?`Eou`0fvE9`%5%dOoA>CVFy-4 zbg?bN9x8RYwmom>iw>8wJcDvmGnGwXMR_kbqXQqNfBPeo{kPixf=LPl z<6<3(vlgKTg2@p?O$UmmOFTl(vf?M>gqFnCXuc;t7JI`@~U zd?yKg8|Jj>Qqahc8#gMPrrt1{rY7&A@dx;v_^J>ls`eKwYe9K6hoWpOWUb(JT1d)de}S{1rEUV|bs#F|`@6^Auk2+f z13(Jv0XhkbncM4p6Qpk2R7dMv`F)lKV^ncts{4n zDQo!qYlK%mDLZG3YE>Cy#jgoThzT-Lo=Di_qUlIKqIQ{*aa6LFyMoVUq&#NDmvj^m zu0>^ZEfnKGmX?|BOA%q&$Se_o1@#BvB@sD%M%B`sMAvO=4)aK}dn;$9hTNMiK)_N) zAAZ)A!;n!`vZ=3+3+0bwKM=Y!0{04Bpwf!P)ECO%s`aneEgh|;il#wz5vuC{ zU&i|1#%wxSKzpKoDQQ~B>*cDs9&Le#)z6P5!@~&wHX-VBadb;x$S>%T`0ecu^+fb2 z1(;0Z0DoQuD@+;JK+B58PGU9JJ2K%m%BF)mtc}M30!GTnT?}G zusZ3~Z^QSS+ z%~m@X*?@J-GrstE$}!RZsex6a>7a!w`i>1v3+q@^?pJIaUm!V;z7<{$#t}XF+wuCw zmh^9dck?Aq$FS!RMbC=4*hD!*+B>G{@@DU-#{$3RU4MqWOne*D*ZSAkl++}4NQh&f zJwNrM>JfFSbLQQ6#a(#{IRv-C-0`%(K22|Pop$9Y_RZaiKW&RcxI8wOl>UvVyr0k; z7urz3))HTDH;8#Bse(`4na&C-r{=;s=u7g*K@=-F1f5C?PrKnj6RMVHL4p-u=Z|=& zG}87a={1=o%=)C>?(^$eCkrO~Xgy;|kLPu%t~cv`Tl_^IxT%ZusiN(*euRK#6`#4J z=AgLK+9uN{X;c?SQB3OLiZ}R+xX~(#<3r~vueP_`hTpu&;d(EE)h(_>pG3VY+hzj4 z>;2?i+yETi5jnLd(2-nU_P~(he-*E5Wjm6kT=%Rg?mVf5_-G0pWN}c)+P{M5qa0?H z?MXp`5x|XVERBv(HT3tV=-k79bQe+YWol(48B4hOUi_rH#?G%J>q>x|+2ZQswoSNP z3C7ah;ct_IJLleBLN8|?F>&4xO*fJYvU<2xrBf?1kn+wsTvfuV`6lQ5$&;7!8kR~G z-QV>QU>>yt>`HWklQ;t(upHi#pKmgg%*Pg^O-lBDV>@%0)l zfagci#cDK-#G%a?*dAVyI!T_Z>a}Rg*BFqXA_!b7{Raf`ZY#?T@z-n-mKgW`ryMs| zuet}@A}pY**a_l)?+Q(684W!gXkXvbY?ns;Mx>5YnOtowD!%IppY%kji-WYm^By{piHCYxkTFF0ayT-3O>y%4-yB((y68;A}^71uQ0`dL>(L z%=)_8zou|{fgYTs3e)o+hN%+{xpe-ZtG*eMKqs+$hsu4ByMOV-@nDVNDCq8RN+*Q#`N8wj}*&}4XiwOpV_K}jmg z|CZ_iVnJ&FtyP~aR57?TMJrd-=zVENg+ZVzL;Iitu{2Y$;e0a$X_@vWU70Ek%H-at zkdufU5tySOs8{YNL5{_o3Cmg}<@_mY;X-FqYB0i_LT8B0%nk7>e&OOg^OZQ4d9HZoe`MzGS?Hp0H&GrcB1P7}{Ad_M*^bsDb9-zSYQZ9y(Li#d|YF zr#|XBiV{>R1;oTY_+eJ$pd}5pf&uwL^TuSDZcLihkYgYWL#Q45(w8&x#!jTltJY$v z{YAf+$#rTU2XE5F4w~@7iy;S|#cW5P9UnnkNKh->{d2urFu>EZuw zlMhyi^QH3p7RQ#8weZV8ul(LHD*9wPd#1SxSJ)4md#4L z8-VpsW+`0RvQXHYO340tIiQBOgGYder;-nSCN*HAhf63@Zs-Vmy*+&LLwxja9Q_Yw65Ns>dzJ2-M5{>9gSlK9l)v3L{ZkP=xfDRKN197!$e1 zym)&p!9LJRTWaZuOHet#!vi{7wyY>q4XTQQS&V+`Miwi#^f_6_K4L z&^~**4__=}h`6VIU%yiCrQE+a2nP)+Q2|goFFWFr{o4;Ll!(my7bkNiLC1}cL-VwW z7(ftA`ZjFQH}O`QJXU_uH;M@K=Mf`5P50D}A>6Fo+<9a|c;YGTdY)~3^fb*{JwuBz z$#GvjdcuhJ+tD(|H7F#3dwaQvWX`$1ZIukR8(O0Upp6+K-!$!ufiZpSaE`i1U_gN@n@5>6$(QnDsqGaX!t*E~qpnoYr!!C7|ooMvdUv5jTZ zm4=+l3KQ+nLi9hxsMba$Y~W`&DCP3;Bb9fksI`FM$v7TDuJSZRYm|mU%egGa(9T8V z^%&YMGLJ?&jX3kCX16=vcj`(PCaykNpDvZk#T%T(;>+A5Pc?%lqX}DgeAbX>%h0|Q zU0ev7;t9LTSU<~pA*qsrUHVN9be|WQaZeQdwQ)WPPotK@rB0sQcHJ%P=csh^*un?q zDIjty0)$=<1et%>g@aShRJNB3ypeD-Zq)~DaUJ~J5Vq%AFeqLzDu$|U8oL(7M!Zxd zhasgGX$h%3BmVS;?&7nAQZb3`c`sCnvp7O@i~Q?n-aAoKuWPwK%^iO7-f_QY;Q`dZ zKtO+UbCc9%j2)D-DGI^NF{u1_y#-2tPF2NRP04@xq`gL^gc&OhRLJ1JKHjfj-n`%K z2{{F<_iw1p1L(Majfp@-6Cmb0WiJ5zn>%zlj&s^EZjVg+-D0Acao5Q2KELKGJ#oGZ zg*LzeN(zGzb=*mR19iT!cAb6#04s66{WXY;FL$`vwjO~O5zW7-|8$IY5RGsjXC)Br z2sRWsCsWy@zTM=UZO#$SlVZVDIXEwv{ZzQdYafWVlnVA-Dc|8}5#bzK&eV>W#Z=o& zC{42`dxq_s=HSqp#6+81gdK@bE%aVXhbSp&0GdW9A9G=GF+Ht?=(GRnH?f=zaG=ze zeIh%Vm}k{wG2R75Pf*9r^ka89$~>Qk-=kZ}9b%d;p(=fcL83u&Uq;YUn$bMD&RR$? zc+}yYOW>pJ6qzb_JJMvN!GFZ(U>JVUN zm;tsMPz3q8w)>(GBdWS@YA?+eqct98Di}Y|#9}Yo9^ROX@W1{$(sv7W*X{AecW5>sVdFO1*Uyrn;$? zZ(n%9Cw-AHbB#1E3oBIqfZyaI@%81`i=Ym&m)Rm0#2Ol|-KC`iP5C-tdV`vp+Ms5q z`6xaW!13+b2oIAIsz8rvz=S<2f%tW!S2sj950$gdy|#f=^ctkiyf2tK{nWwxf~rqI z?zhwFr}Sqwd{)CQARq_P%{O4Y;lFRL>RWc}6eC7j&B!|d#p+})a}*`LW{F;a%X3Fr zTMB%Ijef>sFqJvT=4(>gAESeHj1w}q2nnesKa`c`9G9e!3la}o5;S;1Ad9)0JiW}i z71XTmh&y-X(h@*~orNPFeBl=}-eqiIX!sS@L-_4p=*|UAr-SMJo;&$6{Ka-l+P7W( zq13+HCz(hBGFD?Yb#T!3e{CxaoNOg24>}*E=*GMs(sy8bfV!Z*g1Z77;MPD$7@E`q zBSpX;oc?($j}_na9Lsgc2VHAJ+IqDy)okQ1<&9@ikxCttC&;FIdPK++B?0np?E3_EY$8A^ zIDfR6#)A~-r!X{(jwhA>6DS%W#xj~70zLjwiyurNlN8ZvF&*q~1G;zX8#W*+G?2Kux&lhE(bfzv zNllxk?iUS7bj@-{pPRQtm~YbWlM!qyDx1YMG^C{Z-_!`3rE@dJkGj@QTz(+JceRK! zs3W{8UAlb@`;*%s}lHUwM2mMTYOVGD zh9(4BM@kx*a+wIYsxkuMw84K`$QsP4wBHj3yhGAQ9!zt3yM=6$3u8btBAt=J+nom{ z$L=%-WdeyiR8^wXSlZ(-b^KBTm!IJxqI%BC=am`t_xtJqkHrOKx$`&7EsNeBZUXKR zQ4xK*exU$M;{BLiHcOelXUxfL`zqgxP4)h33y+yIvQMN}^**^iW#0xr)okTOU&IPe zvcyUUO{cZTC(W9GAXa$U2I(NV!W3TDl+}FM^=LQo@Vi+H8e|hN0staA5#Lcg>oj+{ zL!&q!brA)IwOhUU*u*&HgYyZPqM%cGfL@}qa-@A2`B5W|E^n#mg8h>3i3;xu?c3l? zpZ{q2(xN?L`AT@ z!ZTmglE#o$%a2#a$o@`Z8_*eZ8=A)j3%`oxyq$WbK;`iIw2sRa`&LeufZepe!M4O@ z08=h+ft81|eOfY4&~~4q!2H@X9Dlp-CZ-`-NSyMBmVrcgZRg@kk%FbJ%mv81NL0$0S|;P&xpVssXj_<_|_n zjenb{Uz(JpJlTDbyV16r5nkaz^mzP)jd~89>HE2Zrsrz$R_xBA2+RbHm zEqstZo+lpLXb~%UcP2fcMth1#tiQE}m>lj_jHT@O;kUirH}+}b<*lo%AWrPjeMHL| zHr$5oizy-(i<7CF1AQLFciGJLVWl>2xsNdGwigN4Yz~aCzt!6{`JJpCk2pMzvVX^g z5&bh=V;~KckAmnDNWuRBV1&{A%Hjmb;yJAHi?&wqctOVTzEjes+giM}I0rDO-6YHI zQlU0yV@<4NkoS28MrggRBIC{N13gZVr8a{E9oaf&?8}U8U>^V(P*qx$n90!cN`}@C zEsjcWnT=7WM(491IzBXP{C>HCGv8%D=q<%fHlOX|@LMYw>rb4X!G4$IiK}asdsvI3 zV%N{OJY3`+Q{IC0AR(V;MSaM7W&=iLN3;DI+?}Qf{Ip~g4%n?UAIE~;{4vT&b|k*8 zrWDUMHielQXG^8KoaYY-qEM)J+mU|K(fBmOg?@Rrg*e%XSvr$8T^@3{mdGEx7PO+f zIJ|X@gGMFCbE4l-G86h^dgEDek|>l~Xj3dC%tuKK_3Wv&m8{JC!1B&)IbL3R*M%yE zCu)-~Z&&DCnJVBDgjBQ7DHK^_hM4Xb8Csr9&!>fi3QPe>90OhNkn5VVzCrCq*8~u~ z9wg(inx+!`m8jyL^J=KXum4$knl5t)w0K;%$QXxfoe7cO+UgO{r{m#aI5rjh;a<6H z>YN;7g|la3!u)Q5NHG~ARP}{7vEYlKcye>#!dw?$ICcZaqRh~g-m!u;S`Pcf*mnC% z#bnw%N_1=7vmKP`07Z#!{fe*BWirLy`mvWo5N9i!DXKOSHo@k_Bodr~lk zfg4NYZaV(KA3B)w@Gc0d9S-*)hv88B->4u9+s|#G*84US-3na$QQDIg*|aUfcgX zrTPxsvffOT`b}2TVD8rUn|si`NFm09dxAuHDbn*)u05h@mx_F^Bue6Og)cK@U3jVk z`(8XM-6wP;1;3jGgIcm?CZfRz8;;!?TgrB({g-|OmDJH8_t#DZ$z{}C6ugfHd__;B zeEd|7n_g1S9?o}2XF9|~n5d?k&xB$_@N{d88BE1T^BCPzzeHF^DZI%UJeX^}o^_Xo zYv~gHY)?-`Njsn;Kd5Spl-yNcdU#>{oQZU7>D>?ZIXD(~2BA=_`K* znV|{s7<7x9?@OJsNt?1ZLl6D_2m0S79~Jztosjy ziuOLsk4;@e1O6U{zH&tG{y{z|B$DOHn{PBB;LsxP4U-`DdhxSGwu4OEzlDVP_N!GD z;++L=cWHH_gM1rmtJw7D!?;~RFRtgSruN5gPT#}~W-Wezg7qc``sntCjs|2Mlgl5E z-h~PoIg`C7PkfrB@kDTChOs^ud`d()pWbc5HGYNk*|+7+5^oc4-4FYQ7F$D59R^$U zw5)ou#B86V?dGHfb+A}1*v}cPw$fhBT3mkv8uGYn4JB!TxQ?-7W1Wi( zb_pV%l69>=a#xaXc8ahctH?HP%ynyuJT17|r90Xc&u^ig-Mi}WaI|sv`}4K?Y@9mm zn*F6VuA0PAiHrZoNx0lYxT$4{gWV88KCY-1$8}=P>_0ZzSkTSn@#$8`Ua8oMHCynn zK7=at0=L0}M3Ox8N2G?k!=xYFQtwI*C`k!0B7+j{p0!>`s<=Kv=KT!X@dBTeWDj8O zcNl`^2k_VcTaw2legP};{vF?HFDeoXXy(XQ~RSCXl~ zJxs24?&vgHugM%=v|QVyewIm-uP2cIt24z9kab!MddNqM&~l6=tH$=$)Zw_fE&)$72& zEOiOz(IUKl-do{paTCYFYS_?aXoIh$?od@D=TjW|>;uVmALmB1sPS8P?}8 z9~`;-fd7?5y6r?QxLzr>Zv5o-q>e(b`33XDbm9@5brW4>*R5CT1^=vb2KFb^S&GcD zW5|Qj1^N5#s^R8N#}+st2@HUK?vt-g;K0{6HK{uvpz7yn=>sG(l?0ZMu!ElR(z`oK z$eL0V;eYnz9S>JSv5^V~b_ZDlo(UHXK!Am$g)w4Sa{XoH`vw`vvGhp3xz`zY;r?8T zj`OV9H3<1X+^+s{;yo(OZU;qTf-^In%=HBAHLU$HL6#D0#|PNm=D%^2dpGw%n+1XH zBI@b8&}POjC`1QCD9hmuEDDa)cr`Wd3s>D_3B{!J-(#Eh%GP}*@xJQ!W!oMZDp@Y@tLu44h(GVJj2EowAlGuxy?@&WD=Ap?|z8-VUG)&w5u%0 zVisH7qH7|hVkL_hS??MC)sCh@N$VV9b{?CRseaPGx2ezi*8Sy{TjTYRF*WRNt zj#SK@9;}ROuHxJ|g6sAURRXg{#7&m+UT&cB>%2ElFZB%G2`bDA^T4l{!SPp!@2(+^ z&j(y<-HcrI}DSjlYAC&s&<>SAwv^u~sesM-(=H@&>$hR0~r}$ zc8mX^DAl(`Ru-S{;BZTFvz|xEhlt9#5M5>`9yJV(WD(zxR2mn@8BDSvclW)CrMk%x zOA@=(I?q>f7T3#Pkoh6tidS}TdVM&BRO8i5vo5=NlUT=l)cIPf;SLfFk$;ZH=VH_v zl9HAn(!5hD$<^c*5@IX0((hH7%;TNmv-DI{nI;5$Q9!_b(lRa@OWWs!%VdZ$u2}X)wO>qXIAOnp&zKX29;1rgY`@fMyxdHh zbXc=J>Za%S!jC;|%B|6*h@UP!Rc5e!U$J<^y&Q(!(C0~aA+3iko<3`r4KBMi%N|1y zW>+2wh~a?=4a|gXEVTwMh;6`u5h22L7qD+d+hi#6g-_qn}3!89}aGf6sExBasD`Tngh#L39 z%=?ym{68|#Z&%Mz6VGH@u5Oe?v2*jyO=rVa;Enx&sEETi`s*iBf%D%)O75;Jo&7RW z8Ljcff#N}B=JFMx_NXsMjFXDl0@vX6mHQ7Vw~m>MN7dAg-ky$*%GucgS39%L!)AW9 zxV%j@H%_-h?=Y3!8i}dgvu*pq!qzx($KQO$!?gk}EZjV+alX$2{VN2pKLK&%4ghoo z52_oVzWWF^WBNu$f5Jr`3P@T|rm7-@XC9hFtzF!Rdu0U5Rk+%>LqlE8U67m9-TmpM zEBvfF*vv4wHL#;2X;-Q^kq^E;t;=yl3rdVOXaATaag@W|Z+x|E^W$$e;rcYIMX;P?A%Ib}KU$S5 ze#l0KC~-cs0VfyLoK7H-twMOQA|rXC+AMgP+CIW%-B6A*t5NJAz=~o!gs;%kq--Z< z?{vsLUr0r+&nn)+TXnG3k}&iuKiqnr@zB0?CR-D?FtQN01PR?B9?YGqI8a;vJ_8^g zFfbfM>_W$9K&6Rbf~dLLl@+joK|SDLS_AlmczVuaf&TDMc~P9RcvRsU81xQI`dyWk z&{^xi%Mpg&?5+9$4mTZOT*LxUga9`w7$^ue$nvbcmGBMy|KzyCFZ?7tFmMkizK8B* zJx{vVXxS3U{Xt!jD=#|y(@FaEW`*Ej4c|EL&==*g+o$xBB5J!YMKnqu_U+6K@GH%m zL@5FaG@2^YtURCG%H=#TZ@p+1cYC!m>dyx6E+$-i4Z5spYy~#UWwA?X4D~)>ZLP7DLftt9y&vt z5cr|dVQc5pw@I1nAHFrjKaJdMz1Ne&R)d$orE~KRv|Ac|+t&_@KE;ejpHqli;?AIP ze4|dYrpD`QPTPQDuHi180{4YjO}cQtZ_3)Wb-;%DLA*rC3Ki6@C6Ee?3GGXN-FUmL zH?Qh6;4y0Uld~FhG&ME30*u2l$4Od3;xo|McLM?yI9`(@(wKBq4Gf@jZS#O@464iU zh2k5aNZ1YH1xn(-fVR>fz-<^pmzY?Gg;*qx5&m+p&3OT>{jj2*G7k^pk zKkhj?26{mY&t;JHC(jcJP^Z8&kFl{GeU(C-eeLKz#_NitG)jz*n(3`KUheWyy(w4B=T^+&Jp<~vu~Vpo^pCQWlae9XqFZGR z+ERS7A&!;Je&y@9N`$5`Qk^+?={X7?mxmsSeCoFF+efOKq)e&UJ@ry6T^!3Hj*G|` zoQu)O*w9k$4=U__9LY8P^S3nzR526wb`Z1xxK}*h10uGMI9J= zvgNubT4Cr@%Aq*RdT(AoUT071G|j)d^t`vZxDGQtV*?X@m>=a9qT`;eHhBX_UaykN0zBHe51oJi`bGq|q2^WOxX}k!$^r@bl2xn09-rEPQoSOo#VxzZkLv+q@I>F< z{+0BsCt@0cA=Hr~{(tT_98ZY=zfKU6iARg^&rsJTHv0;>O2%$zPj*va9Fj8`}(#M=W+k|)odug zh0i^~Ew#DZH+1rYU9i>zndaQrI`0i3HKDg<7hewfOC;mD|KJzzYPm(nQDHNj1(zbR+q!tEzT5&kX18&>UssWJC3^t$RluGe$$cxGXrr-i_LmO6RF zbS9mdVQ%P33YH6S)7xK1`+}?qbod2mAFzV~$nN$B|JWq+F52qroxnJA5a*%)*GLK+ z>=R(Ibjbex7Wl0>%M^V$SWkvnCcQZB+A1O=Xuy;eae0(^3yoaOR_>G4!de{zmURCv ziaM5C#+9bQT~RtEb2|akB1T5@fP-v%{x?U%GqCa(=gHaAzCn%-TWeBR(Oh{N@S%q~ z%pm~|-doCbqz$1{eEgpevxOqbwZfD+SZuPOrt5M7!y#Gg#J2_v*%IH*4aJ!r2(DTU ziDwJ&#lPg;1@s5EYW|W;O!1y9xfSZOJ(5num1fodT9Ha%EU%z>JoFXx0^cQS3jo1N_uVRrP+6KootP}wKr ze)zS(cRlx7)~Mhw56|Gcjx2N=ujk_4#?>i#leJfviwfToZI(2-xZ?c7+rq_v&!1lR zV(M)`;Gb=4a-*x6Zs9Ngqj89gjAPs!k9e z^lTitBEJp+3BraP*FYu`?F)y=sKblf{<->e%`YB#kKm`#SW@+iUWLWs70UNDN5PKW zV4bXr;@|5|J)XU(U)brHLna7VcUH|-$~KBmB8j)Bd47>rl_LJ7^h5AJ*(0o5z5Yg; zH0xmydEAWe`{U1g(nV?pC8RAhPoX!(mTndQQ_IH1SU~COeOY4}OF0ElzaDP_S7>bL zo`Btd?WH97;b5SF!fex9UQ$QM8UWfsR@yfah@SlqfOdR3-rsfAzV%B!AYFm4Tlrz| zAELcjQ!?d0JiE(Zp4~*Texu}PA7}u&M=h6>FJ2*<>fs*5Z-p03^=Manb>)%!2RHU{Kc2tPT_idrbWU0)s zsh%)D2KkILp-`x2^4>8yrPTY~h`N-~wxT@Z@e{dTp5=u%*cSwVP zgmibebV_$Boq}{qcXxx*-JQ}c(j_qW=I8I6=YO7aW}g4deCEyUH`{={)?Vvg*L}q| zx|K!Bjj*B>6!l4LPy(ys4aS>UBbXHxilkK((0iJ9BoRah1es_3aYDM{gcavb2VxZ_ zIEc8^qFOJ@ojJea-BrwT83E-fG{r;4l3~tW4~$Ze2ho@_+Lf6l;i>9NMm=9y#F!L& z>}GOfxMzF9CqB&*M8tI`dcq@I*D!3yj)Xh;P&>}le7xbf@iVp{F>E4sH7&RyJ8Y>c zo~L~N)x(tfbzfNY%-g!vqTH>R4uj8RmQ!nj47(DR`ZXV@4NkW>*FV4t;K?502*tE? zU=79;ujB|2rpXzwGRu$jZ!ksos)R5^7d*sBqWk(ykkY_+K%3J$&b?ad>TB*3W!(Y% zkH#sl)iIbwMtXM25*^In&X9|b#+jZZVb@kag%ys6o$AQ6JpQ=2_8M+d&z zh7Sux?GYOL&-aOs(Ic|I&`)2LS#*8Q%&mI=0rZ%7Y81brrV<+qOG@^O45Fhx1=xDq0Fye-N~;m5OgOe8T2}Ss&ifR$(0Rg~J`SRWGB@3;L<5;tjxL`TC3`2)5< zbIudcmVn-uwubxZgk{Uk8Mu&`_*$@_wIiGFy$XKB|U0+&-KX{U~- zSnY;rCRy(-|Bi%AP4Jgr;F|QdbEX|FiTLX`G!@j(4JRHGW0O8Jy-IMIoOTl8mX+9d z$bv${U6xOQ#1gcqgd@FxxV#ymu8kQ5muFF9*V(8UwXU`bo%*nbqm0UB6gw)F565^k zQxuGsX7)sxv6I=Xb-|xEyC#6B*LKf40v?_gq#Od^T{-#R6v(7lF8|gaJ8{x+*@S_5 zr@6b|q?ivfK?#w7w-NB~^mZx7li23(+dZQLWT2y^MNLSuvaXd@o)suVUn{)I{hhMM zAX+&_zSxTc-^N9nG}{L&$eVpg&@Y&W9xt^}Nmw<5Dmj)kOR zOy*>z7z?g>YK$B)ZRHc!WJG9b(vxh6_`8(we3`{-D^Y>4!;KwWcViAd%tnBe=lHb<=@ z#L63h?q-Fb9S+4(PQ+eonq@rDNBVCXu40`LSV{Qd@ul8AouAF44*rB1w&foBXiNno zZLNcV?XNz2?_)(d$Oi@`UigV(%qg=A!RKhwGmyY>mazz#nVXnGbTNq$kY1pw@d(YY_P`yv*W?SE*HYHG{c;2s1&XoicKhhn;^dI zXb&H}e87Whhf;o<`w)+se>N|VfmjC%%7tmL#rP<_{FG(o$z~`CTKHC^&}Y2;@%+~z zTM{~dTF;xY*Wz>ISd7oHC2a2`9x^a#c7K<&V8;5&8TKAyN;31!*7f3?vXcbzb0|T!qDXkILH#f-K97I{^YQH7qjrJhAB2h@YkLBJDF2^D>fRTzT;OuRi>&R+u!{+M=tqLV&g|iltONc>Le$XO{ zA-iwGlwFHq)HA#|Dj)h9z}o0aRK64!)dClcjd-SmBd1P%304k*&S~WY*3M1%%&5@+ zq7dw3Q}Pcj1NJ#Tde!pgIdpE-Xf-D0?_$r?pPMu{k-Mr6B&uDWH$H`{a}1cWv>ewq zyxCpQamT+Gh1&Tn$1kDBKUi8`;$8A8iObaigg{QTP@xjgP69=6(gW2K*!MqxbORum zh~d$^#b_2yhr*H27uTpQd5u7t5=at^D+;?m9(4Vf(At_^`j_Un3|=Wqx%Z5h;9KysO@Ci>~z%gE20dxx%xGS(eV>NUo=FdFB_t+OwmbGQzje z^~`h~mmJQ4p+m(y(dImTh*2zON->V9-&qWvxjAJ;R6;rXZGBY;^-|iL3IjYJ4Bvu5-tO=ABnP@Dg8?A=_`&<`!5T~$>c+B zV?dp;ev$3lUNYnn*1Z%AW~x`c$KV+qzgHfXk{_$X0`5My;`dnmr<9-J@=4 zm z<;8_?LaxkXk!hx8tdGPRep9FYjX60ZR(SB9V9S_G7Wj|R+>1TQ(KbAQ)FX{K+tKN9 z49Qd}K3f)e3~9m!mvhU%8teB;YWcu7drZhHA(2Z+D*pY7A2#?4W6SUc=(L<5WAcNi zVAw#Q1c`!lFpv=)YHq#t8hXV}IDlR#X!wDLhn+pn`0=+a^Hj53ttnzv3}pst)qJsZ;#@#YKwx-wO;_ z$}g~O-U=UMCGoM7Yz@4wZ?M-CnJJXV=kAmFMyprLFR$n4(hakV$WNaO(o|ML?@W`* zhCHQdzI)?_sTS_PlG7w42nP@g)mJQ=VlidJ`!K3`cZHqweA-i2^A0Y?YE;$Mk;*%A zk`X=A!pO&;h0xq%nDyA!W5ohXN0-m|=E2Xjq~X(6im&08vW0U!P@yLaZCyLQE{hm) z(#w5=S^tiDmTxdp?U)z~#b*g&^3qE$^JEnTrvQp334eEYm-vfFtfe&oM@=$lHn3tM zRKJ-Oy}Z2S_d~EoOq0N}3;V~GRk@ZQQg32m)DQG{$XCheR_x$MU~BCC*aR28F7cnR zeHk}iNSv2eKqIv5jsAjXBHV4sgNa7gVZ7w^!6_i2@D4q|wQ;hgCm3~q(`6b*isn5g zc~H7pdhSo#JNbu@N3VeHMZRu{##RJu9%9H%s0D_JPt>b?mhIZ7R29xqhrb)RlWp}D(8TMt`M&6^Q|Wr3MW>gLOu3+`yt!-FoDUtRue|B=-nKL+ z_p6oaNNQ#jk(S>eY^O-zPMkBzQM;2d2|G>}iM)YJpby%*iTfVCQKtIVZa3WuDlFD> ztY-jQ#mL5VISJh8Dg?V8wAH$6Ys!m%HnqVcOkgncn_6W-lrNg2t8t&wJo+%QuU8Lb zVoT;2243xx$fAk+M~MM;f^yTvIy!YYYU{F+lF}J)0$8@1W=Z%-+yAF8%ST|PFZQ{z ziyow`W+G$7)B16HO&fz$Y3Cv$mp^N$(O{7@`L31ZXkt#i{4cm1TE>iQW=Z#LG?mcW zN9E3!R#qBU(upLTA45I>`6T{Gc;8IECTm$)igP(%@=Lmi_f}z@?hkt`*kdg2E^Q|% z$olQ)a9s4s_PvLL=|cV~r=Qz(9Gx9{c==G*XcKYq&jkJ39b7ujgx-4pEpOi^n)bI70_bn!M9paMZwKZ7 zv(%tZ>u%7iNoV#G{Yp}|INu-a9M>65U!bXna97`@9rfF6qBwl7YII~I(mmh8!900p z81sdV7OR_+DSXwrpdl z?mLuyAv!JsQFgiBjvx{ee>jR?xIGFBw%k>paDOLm%tq`@n-0&DC8P*PZ%d0LMOtXD za%rrfqA?NDF>YYE$Q`F6q)pmm{{btg7w77RWMxkdh#nE}TGYMPWg(lBw9WtaT#UJT z{VQw*s_YEiGd`nZW<^~Ap}HmcZPYoOeFO`7rrypT8-n$S*@#gI#Nihf7930V2U@#R zRM6nge95v8cS*7DjpMIBE>XVDk?9lYo@5AK+@L~1A7G1lNLGf{`!$(-K4CO(6!4NfV} z4O9o@P(+}-WZT_Hkr>q@=Amm2WHLD~XOKd*wB#$A>#r_+>bO=#%XwJdyrdLUGTmZ+ z7DU^o4B(d#7ocr8tlCgGnXtC|BRM;I4A-3C^*Y>4$d{G024*ujETXF_sl^x%KeC!9 ziDfJU-qdG}i4OCE7=9}wO%}3d%-xPAQ*dU?0bF?@b1PCq{DE~ZWY9XMhvUdh9_i3L z9jilGxz*+EpT9r~3{vz>6;@ajRv1dpyl_Vw1uZ)-tnuIfY_SPnV9Od^#hc{THet{?J z(G#h2RLIs7@UW~l*0q)%T#SXjq7Jc+ndOdS%=Bo_GZCJP^~~7i*ZmaEft0c>0dGPQ ze%0)9{=qTq6+0u|N)nFW;XD)FOEk31zFim7I1j&PBB+}L`+llIO#VsiBKDJN+9ZKY zHO9IRP`bEgcGt(M2tPAOGG#pGV|}2qeST`ICe6mlA_7g z3Xbsx%zNAqwt+O2Yw)Dt#2~Jy_-jA{)u7T+h&+q93{s?5!%WgpU}A`#c*}7traPH4 z(~u5`9EFF0<$DL`>}gPeQXq_6dG)!*fDsSOEPwt;NWAtb5uJ-~Y)Uh)>EjrUe5HK6 zpixL<0d{FHS#INp$AG#ECqHAaK~B*;Y9xTgdb!6Lg#ZKfhe1m9lzNxI_H!+z3!cN^Rwk!{f?%-oV0>0@gksX6F3s@5oB4dVt)I1F4X5W4?FeAv&r85`QgP8 zkAXk5<^HBsD;)tNvFn6})u<-1{oty$A-eO}s|J!N#QVWygv%>^TgtG4%fYR8WkI#T zavNy`kRzbQ=b#UYC9$Cj5+wB;qXz$U}^Vj506Dq=P(w;S(d zE4SjvS2YLU$E6TIT8{HV(W%H+us~I=n|{fpF*kc`axA;va4tQe*fj#th?hY}_S&=d zJ!#J)K!pKD*kd^{T%PvO{gxEn4>VhWP zXfr=_{M&ILsgcf_Qc}-npFBuChiakHhC4liu!T=Ocz4H|T2Bm(Twr!eO#+qV2Cu(d zhqjL6I@8~#OYHuT$b{f}o9O+WF}r_7QQ&Ubv^BGk{%C=(6&E@7CC?bRmp}WL-+wer zi3WlEu!5%9``#$N!^D6815n^M#*d8anDK=9B?s;Vq*a`K8tbOPT~rQ^ zCz5i30g;nONftcDD|X@P!e5Z%x8H0=ky*J*a;|Zf&eHg9e26=nY9skti&l}ccIFxQ zqI*BSeN$71^=os)X&^U)5n6ueBY-2H0(L0SQ6ZqM06Rwj4A26Gh){(m&P=5$4cO{;u9bnUA!m$0?C5UpLy1n! zO{S>66}6zmdCC}y$#5E<0QM%f+3nD_v58d>PX9H zThe}`d0p-M8~0DVMHow_k5KQj2Yyu2iya^5GA{cln2q8lJtVr!+%VF2t&=4Z6c`O? ze0VuZezD4V;)Wc0THDw;6X3sxM9zz}GT@-qkT*;nPE$?0fnN8%W{+LE13$G6sv&*# z2`KLrtCSJlI&F^v|FbNp5bSCQ6E-&XSC6Z0K&D6r9?b%kz)%tRZvyw9UjSx9n(mM9 zF};(bq@4o5;n#Z=3E4NxFFb!;x&a%`ejY%Q0v6$KL||8|^OT-8k^GU(rn0S{vL_|g zFJeMrw3F@Uj(VWi_*)~aSHfL;wrPURNC29PtcBMPt)qUVT^>MR%0+iw4+fA2N;aKk!1YA4jNvwZ-dxnCCT7PF{Ip^}}LYwfJ3^%YtL4s+hTRQ}PwC z!=jBKAS>*5X5{BnF{(H6BQ!j<2(?`pngkcc{Da-RPG`f2+Us~Ni-_T?qQx}zuqkSx zrug6R5rk3b-b|5}p#p1BsC-4)l=WKj@~gj%6DDab78_L~3Zt6t!HtE)>R@4f#G3%k zasl8WDWD)Hr>nVJ2pqQl1yaF5PACEO1qOf-zoAWAk0gMo050Re6Cx-$*yKGBAUVRo z7<%C=G8VyCZ{l}PQ8pj$1;y^{o4-iPQNH{%L;?3L(TF7)+l_;L1T$+ouMGiC%9MO3%R4EuCnO>E>vZdq+C!dNAo-aE39 zNM^&B_BpjbCL@+4tjpjMNPZA0&8#{Qebz9hnT{xAO1_1VRyfU`S7{b&CWF+W?s-B? z{s;g*TEJ5nKbCD0r2As*^jZ@jMNwEI)EQ4*WJ~wRBy5=aHjeqvSwxO2;DFNamI7u zI+6G@8_~7QCTL#1z-I1dQBYBVy7#reXt{nNtjzF7C9r1xu_!3Tu=iemCDBH9)^G7B zty?Z^8V{(FVp&06#pPo1LkN}sT1sMAHOo!VYs2SVDw+w~eyhEU{qPpz9{arTxj=>j zUnWkbew-p%n^eN&hJvKh9&2U$dEN|R5$W16d(VTTKz+3jcKOQT?tHf6vEt3gJ$7|9 z?_7LBUTk3yAr9Soqlp+hA1Wme%#|#%iWL6}c=Dxdx2nFndOAP;_>6f$DM2~@h}{U* zz#AtCf32<8&$)>fu@Hzwt9>=%)_DdOQo3N=YUO9y4^o<drC(8aDm)HL-6V)sVJ2a=jp6Y^od32&Vo{T*zU?g1ayKkFPFdpGnI z-E*szXz5BK)f>=U13Yj%;prCa7V=d0bJi0a4%BylXPrqMssGIC-S`q6_#t#)M0>tN z{)~j5Lj2(f;m=~y+)Lop{j{a>U=2K}D~tzpK@vr8yYZ&(0)+653l3qY$nmH>{**(QMYwkT2ybhY>$ z6u~zVPYM}#PO2Xtc(cR_+?h75_4HOjHx}5yf~nuT1;KwfI2Ai?T}J}Zr8p>Q9g0-Y z$KNq@KesXmPCy%#Cej=0xbfk0%>D}YY70sS0=%?VCQYMyN$fYz=jdLRGhPZW)e_6l z*o#tp**jgjZMxI?)oL%97I$`c0)-h^bgl_Ng)3sG{a$uS7W9}YT#9J-ZOZ7TkOIZg zo>f~L644`<=hoPE+{KNS!S#mr2%1-iUXAtqDeMzS@OOeYMX{Yu9HW!@#*;>jE8o?r z-O_tS&-y06b-rxF^z=|zp6)t$mdU(E6=eUypnU}f{q}kCBBG(6%KEgJXYUkQ;Lqct zgtzB=g29am)vAg{tSnrYz0^QpOn)N_Dr&fYJ$976*~9;$>{dbYY2mhUES^e2Y|2!z z@dnHbRQs^mlg(`9Tf40xeS(ziE7Dhgn^bK{0WCg{i2p_9jian)6F6WtX&nF%APX=y zBDz`$rURpB2Ax))ezQb+omPOR&fl#+76en~30Yy>XpWCE)ui03RkG(hUqT(2!rTde z9y-Y_nfS?sZ3X-DN03O$l9WtL(X(gf2caBq1n_<8Yb0)#n!kC^O>Ge2k9{jQNt(v` zmP~aC&bcDjicBvSQ2ANn(sR8;Shp8m2SEM=8 z506JiC6CTh@YfY&_~#YG+rJ5SwZAvS1^Y74KThNG9rw>e|$*`2%=B~EiiVyT&MHA1j2{F zLdprC5ux_1sSS#kH@gJ|1;1&ly3@oTdw;iL+rtJ$Zw8I6qtxr;+Rs?gxFbzRat+OD~PIWrhL}1Rb zK!#70-sI4?)7vS;tLSK|#!piXw2{FJSYyxM?#?AD6vP@*8J1d6^rwi=k;mIwNX}5r zo)Sj#o!ON%Xibxf{B-vo6J(-`%dH~GQtywZ2mrazV1I!qy%_^&gg*lSfy!cp(O=g$ zVY71l02M4%Gd|UPRt3oICA$ttkZ-Mj7~ga9`#Ood82%SPEn#F~)Sc`PDH%hwR&eX->LMwUv!5I5)eu*>ETs8anGK3=Z5B zw23T_!Uu>sgSK7kSMv2()PHypK=*s%Qz)3OoPeIjgH-8R0~U=L($zq-BsUJ*;x&FU zOR+tT_kVFm=WltYqfdsChd{E+(}#BL_d~X(60cM&*mZofAFb;Z#ot-Cb{OGA&;DRc*X;$Cw=SMG zP&>2H_4ALMvZ%LNFFSts!q!>RPbMk)8R{DtCI&)g``y=Z_1l#UWMT-zY?9y&HwI9VxDhtDQ!eS*s!VJJuH8<0Q4S3&QxC8L5Jq0i92eU zWO&3RX{~dORAg4Pht`*upF-@(yz04$Zyr@yZo8s1q!P%)`-5zi(A#OYuIc&rOOo^AvG1i1}kn zUNk*^y@a(1H=*O#!1feHyZaXT(3D21<%B-8K)=3xeDw z^wqN6<^Q3Fm&=aKg0@&I)j~I5mq13YSw%IdK4BLimqRu&=Fe!$YWzBmy1`U0 z)LTcgvuMeEB5}N<6a)9n>!EBFaTi+WZml$e4$eUIA7hdu+hTtt4}aTu=J8w)6K42l z`c_USOfS?dZ~^)GabpjUTL4bdz-U)U2a9nEEXJ)AK%mzGj=Y-gzpk#XL`X*0fmuRU zb#--PBd0xgCvZFjZ7ReUuQlx2k%jHd*OP49=)Y`b;^d zH=ir*^ZOyo$g6S$dAs_fpQWD_?qw5!KiG3DE|LPLn{KpUuYe^o9FgxbK#hQiVoQ^L$E_ zsgPjWxCQd-bGT^A{g3(RE5&KG?R8x07*U1el~9vDQX}gk!Y}=pZ}s1(wWK@YbO5O} zQV`>f-qb%S4BEp|*JcnT2OXt@7?butWd9Sre}^i%pL2tX@&TA-fS>^ch#-H=zW(;! zcK`aPl~cIc7Ycsh`8Kfw5 zJ?6v{#ALFml#W?V%T@uyHKCX=Yz$Z@;1gI?4egjfXPi(eDky`I(XF0|3%SV^>&q8F z8J4FqM3sA98s1e}@6su91Q+p!eK*pMdes)O!+PZj21yGAY>`<^;bS=r_w>{+(lL*2 zCu`Pg)M0Nvq(J)!51xa&{?1dz@(6ad>g?Tj%_qkUpYlvOj|-+w!!l%v)NleH+fy%a zX8z5+euN#_t$*r^NG+tF@{{^ydsMq3LlIXXqah>kg3Ql1tdJ#5SK+56Ms6Y;lLB+h z!`i!>h~W$14LXbmU4B=ME|J<8O4x#<`)m7n1HW8)+UQJ_wtS|qPHw*o-fSBw_&<}eIfpO}W0!RXl zUbT~b(t_3x-n?r%I`<-?B9aLg%%oX4EiWLDc|2QQm1Wn%dY6M6%J6}IHakAD|N8XT z$unEB_(+cgiDq^tBcjk&jgdX3nDRD-Rm2r#!USwVfjax3(3P5UGFugsn+>gc_76cU z%5i#vFsng2V%trv0s>C!UA5#K#02SGZhGhU+n4d7o0VYZm!o;2^Bo!>YrruWpT|Ja0JPMT+@cjTJgr zZiW!^Qmh4oe_Q|rn>T1a5I$jZb8~^4E8x|HtYmhnl-Oq7N&Cv|MguYCvv_oJU2N5& z34*+viQFqObJ=ZCm#mzfWb{cJZ~)YF%^Adk^Vz}oR(@~My}xfO_=v)~&a{kD$p^GN z?|lG)C13%k?r2m%@{y-IA>EA5~-ziD0o<{C>L*F^wgio9ODRqAEt1svx|xHNntZ*#YxHv(`QK>K#rk@ z1MAI73;I=dqDC$lwdx5U?t*qD5+A@ccilj?!Ch%W#hR(rYWnO^Px4-1raduhb38ga z#^AU}2Js=}<8cPTVLXtDFbO$%G!nOB&%C?f5{mBsKLp6 zSTn)n+3DVwFK-X!lL@+#T}p@qr;}UXE0o}EnNl@r=0**K?l_l-CEhA<#OKSc*kSi- z>a^xlNC{Hr=_kyTmeLnX!$Lkjg#*WKga5R{kboe&PWuzXkYSo;WxsWFZfM4LrYOXQ zEjofoho+!;k(Q##JT+JoxlXqA2ig;17@Qy)^<(`R{^VR^+>T4(NO{;AjtcXLiE=XG z?X2fq2a3*-Px%E=dtz8HKjU$0EK^4Lm6ldxXo-OD{P8WgzOdHW9DdnvgwS5uCjIWk zc8_K+Urr&1k6L37Ehw7eXm{;c`AYEx>1?y999Q= zq3%%7kzmYzA)DePngvx8{f%}4TyFxLPmjh=t>`y5qLjE62rmlsu_u;dT_z*XMmKfn z3gwNf9c)qMc7p1EcfaF)&@)=18?hu$% zXPlgETXLyu>bbYP!J_(bM6o@d&4kYNLtDu=)%8TusRZPfN!7 z&{Otfw9T65t64gonBL!wjb{t%T+##`Cz&SGPX&iK4<-2cymEtp5+4gNsxP0Mo>rm5 zpm_ixP>@A>_>uLw67zXa2`MSLkLGr<&(t9&-l%Mx-@`5J9r90*b&xiC zb3W5D1T6U&n7dNFU8M9BCa*op0*Tk{n2U)~8KPDLwujFrpJN8vLP8O{(6R=7?TLCd^UK%@ zRDKg&o$huu%0nRIuR!#CtoG0Nvu-F<#{SA^ueD5*(sL_gMMgJRFbU~(Z!(9GvVck^ zJ!PxLYn;6z--U0O3cdrO(TvdWcjG2EM z=*mGLGU61l4+w@=R#$mc%ZT2*scD@=C6@v~(CXhuV8Yb@m9@w~U;k~zW(c)Z!9cCSQ z6go#T6rRM%dY7H#oWI5HW5McsiP@(x3Cxp`F!w@02!*`M0VjX|o=FQkHabe%uvZSf z*CwO-Tf=EQHz$z=d9}4{EG$*Pzyc~w$L;3i;80ya$;4#a9Zm>#2FV2Gc;EoOVByG8 zq+U}j9ESHYI13Qc;9t_fUZ8?41Of>JkQ!i##LdED5BOKx+uN*(AAqR~FjA9Ggz`St zW3{23BB+r0XI#MBjjNwuwnD&SY&Wd}l8)P8vY}o2{yT`b6WQKRUp&WRT+1&gz5>%c ze2@bM@LXEEnv&_9FzVX zECX=l0OngC78}_a7_5QWgX`IzDzJ{#(9k&lxsU=zRA8tET1;)`tV79fYXJ5S7+*yo zr30Eb&Krv)7BeL=v7l^eWXMC3^yaj&ePrZQMBWimv$_Hca1sllNcDYveW-lQ#xgDw zYx{FGbLQ2b9zD&M1f*!d>@^S)@69X01&xM8wvMJ4RvQt_} z>QkXe!u-GyJ3lsgxnt7r z(9pEO<;eDGBLLRFLzmhSm(M?4KtMpPHFTqw?(MSggfT`s+q^M@zwh<5{&VW46W<<{ z*+{qp%t?`Ln;g<|UX__sa<_$~U|lOA?4+089p=B>%7bLfRL!6J6K~yOnu>-uGxMQa zcYD)h^1b?`FtKE7h31o&m)GF1KMTyoAl1<^F=t>3SVyM{s6Pq{QLu$4Cnpd~WGy6r zPA}SE&~k$%WVM)g`h9Vjz%v^a&vXu7){>qb&*C%<{*UwMK=@~~z6)sexm%*}&5!Jt z;R|FHO-v_AC%}#f?$OC7H~8nKx|;Z~u7p2T74c7hp-({{&RY9aEc>5azdU-*Rxw>N&~4G5~w2KveSl z8lWbQih=@0&S@aP=d!`h-(#&^(bg|usdhue*lTN{* zYv;pYR{J*Ro?W%++$75KrM`H%I2`wDm7@bvu*lBcGYDx!w6W8I*w%Po$`O8kC-=ez z;ft4yY!r~lbU&Lh0`yt4vFuPY=b^7$l4N5*H_h(_KCRCMXw@<@F-1m1_#lajiVks| zYe-2+MUqL59}uQzWW06!S;+btFm_J~z_Yuf$*Iy?OUDq6{3)wPNET})TzJ?38Bgnq z6$cMb>)68I*H<+-xJ`mA^7}DCe`!R-$_i2Bg0YoC4ngJHWCI@Y!sm$xl38z^awf#h zSXehfLh_P5nN%#0_t34JbTDEiVx_cnbjjxc2ho}Ld=&OWJK>A+a5(G7LW-U}av0E+ z1CK%b`}gtC?nFV(*Qc1MsHj+2Sg5E>E+<>ymarNR6L4_2%-33juM!v-$QJ;nfc8J< zFN+&~Ca~KYDk)6@WXYF=g#4FIFF1dFgL=~eUBgA&A+9B0%9Jh`+w8xq;(nTijv`w*8$0=;!c+$G9pr(PUwPH6d zr8KKvkj~ckV2@!|2_&gAnOw9UwA5|7q_A(ukXW; zfX=?eLDi7)V$c@Ddqf3ISs(G(t(-65%6_+Dh#G)C_$mk#qQrP;K_F<9&32P7P%4^# zfoMO~;^}$nh6jP=I6OQ|DOC9ajPP`J!9@oE1@$K3#TL&yFn`e&OPnaye2brmCRjGN zKQt)fda>+J-KaM(0s7ovC8D!-bav*G`#*wwl%WN?&(D=Uh3RqdG@A14f#{Yx=r)!i z`~pAGoOKT9*G@2%Q8xnLUsyO^TOAh&tPqHy^B|~8=Cgo8aJCJW5Hg;gn@b@y1pZoy z3F<-xc`zQvyn75G$YlV{>f8;&k`PZ2LHD3rU3B`|BM3pIbvFfM3zumLfacXhKq9lq zfB=$F3+T^-7l$D4|2yyK#r97#vnhg*hY(R5uJ~Ogv59O8G2H`CO~PUr>pCxI`+eLKbK!B=NQl_!T!&L ziSS?!wB$Va_*#L!19)N|Rm&>){S^eBJBRx!{5cLRiJ&aFQ*(u?Oc^6NV~?;1Pdbg6 ztBptaA|-`mNA$-i!v4)KVd8f^QG~X1{?`jbfg9X$1XMhL!&=c>FS$QY>0eR)hyXqh z$-h5N0W2lJg$P0hH5AyJDWSF0{|E1RRz+_KSaQakfiMP0X0Q;R6kXpZBAaOxz2G7y zvX~h%U$I`~Jk9|in$a6opiaQ6simNB0$gxF{740<0oWD#dV6ga)_*OxO=-D)(AU>r z?F=QCOwg~G8El9KiQUDCIB2s#ASS>}sJ*L|DnJ;Pu6`>WEb@Yywl+^sA}}ty05nD* zQTz%-CoqNtDU|#9f+HWSe;b2-cR1KyKw^Q*hGv1cYoi#)VeQ-0^nPJ{rYur;dD;w?CgBd zbiUZ?3;z@WlfWmA$I~N6DjCdMlj7oPfv+3@Mipu`anRBhyPp3X;ymt;qLer6kJDjI zY%=HLl4FME35f$QLF*b9cK}}K$$!7Q!apuOdexDnsgC>TTA0ly_q^a~Yk?yj*hhSk z08gxD#vE+U3d&nxjRMF86C%^5!SacK{CaeJ?0B$Pw9N#)h>+JXyRbSX zT1_u$REE>|{Q-3t>cgb0<-875bjr)i`weZ)%?r({YHMo?3u*2%p8{-!*aG-I9ve}t zQwI-^=BsGG0YlVJ=@!)C>OL6%=9CE(PtRW!!Ys2)X=E&J%~qL#;{lC{D&rB5Cv_+A z*r=(^0IyyG?s8P^~_upK2AswAGS~xz(va&L;_X3+jPaB)^3Dbdr z0eeIgLnEVtO{~tYF3W}b3H#W+J#%}VOW{N?qXf9dg`w_OAT#_pL?|IGEiEOrfoX;X zQk{R^)IX_GCf-_ZiC1ZA>W^=q9yu=9EB}voZSuc%ZH?Oz8iV=RxZcOVo|*iIkPwo8 z8{u6=kOWv)r&HQXKoQTU@26SZyAQb?nv-!{*2lNYb$V6W(7+T44uK%3VFqT1d@}r4C`G0-?&XETu z$`A6fRq-18+vmAM!GbThKuoZy+`X~iz+yBwK^~^H}2g>Z2(C%?OX!Rt# zhguCoBOa*K{{Qq&rLlWIiMVCf^P|TWtg#?^Ey%0J{e;Y?&-lcf9zuJTo&>%)-RP1RRG^(9tI{MI(D6$>;VR z_Fe9m0XF=V7j*Owln0amMoClrf2+u>+GT^DtT9b3orJcGj1|ykZ#*7+3$&#Q>q&rN z9*C>z0P^(l!6P4}RrkqNb|(dOcqe8u-L3p&3exE=RU9|nu&q}7?dROU%n9ffRMB`nkBBG zku)0x=mIGzEw1Mlp;!0U85@2DxfOthE}+24>JN$6tsp2?%)A0^BQ=!&r4k%o)e-N_ zg_bG4NY#u)GUFd$Y=VDzvGLKs>sfg|Q-Z0wdDAD(kN2sEkEbLVyV=djM5NUiO-RoK zZf9sXdpRZX-~iz}p8xAy4y}or)c3Dpq1*tE-xr`p3kZO{o(K7*HC%M61R@Z0y?Ck8I z=`3@%YsJQDKK%>GAe3m-jha>gbZq^TXB8C{tE;QNNFWb|DqwSYaa`xlu2}%ZFVK5Y zfL6QYBqRvf%oH3P9N{ePE-o%0I``RZRn?8xFR-;Q*4gIlwqyu}?o5}h zf-MvU1x4b2QdU_W{1u@04!dI*e~L>OJUs2MoQH1kgps~uly*e)o~4b0uO03a)NZ3t@DcTuy00Q(($-7p%xq z9e(?s|LwrNe;>H7kPBhbF#cV9UI&{3*vxU53?;w@4uZPS=U0~iOKrBG3VmdTB?8cV zK#gg;@HrsBDMR9N0=m0$)($=cLp8`pwTv8-OlY$SV)1v=iEk|&U;rSO197q@k#pO0 zgz281MXr!y!5(?=U# z_+qG-UO*1)D^uV6y`cWDc6Nq73J3(q!py5JwWslW{LH+56m!rL3;Ny(XOAKJ&~o$s ztKP4?cd5=;SH+{>T#KHkDQ|z)YVS}ilZGYuPd5`}FG);BQeaEU=mUkl`_1Xp&e6Zy z+Zyx@4MCfego-L(G?FZmT)KL0f7Tu!dgMwB@Th~jALxAfg1plc=p#OQf>68chvRUt z2-*n%;~1;$QRj5H0`-Cc?Z)X+ot>-a{(7KWt5jeQ7}kJAaO(vFpDmqId>RS;NNDa& zlQE_3*|d8Gx*%_WBn?o>t1%u~`MfGscy59!iOo+7B*o!t$%V;XgU%zxO0;xQ&w}OWZX= zOv#JI2bp{^$h=WkKVRp* z!EMfiZ0g!r|6jj$1oo0+-@04|AB~E(G?rk7-p-hf@8Gp-(-oK+DbH-UdA?h^HYuCd z;Hg?*Q9c-0da2ORkpD9oF(^IYN2TrNAjo6E9R^@$T8-LYvt}ilAa%%<&Cpm+LRvWj zrPEG+!R={@=K{Eq{x9&g>TI&=8%s+|K?MpNcUyo|5GS4k&|8$|I*q!H0PSlbK|z?c zdw1G*r+^u<=yAOdioKDM5khXhX;3%;7hDFAqyTeYEFhH$W+696rJ!pKqs8P-n9OsSJ~(m3@f=RB93~+V4p8tFwuDcYTcIKQ~Ko#o}O28mgIBh6P_lo zxcB@&R{=H4Vrl#jUSr2^6-!&fHR-~So0;A2c8{D!E-z;D7Q;28+uO(OY%P}1U7vq+ zVs^IVI_MS^@Y$bG9>aGcsH?4AVQZ8yQT9Nfrx1c&7(2XK80|~R(q3#H9Tn?((qJdL zRL3;4%{=j&^hXI-z*{=c{`EVWrd%xtEiEN2#?v3yyJe!Nb4){-(upw|a=LKev?dPT z&gWG%DxcDw5(qEBSo0dQCeBrvk^5}TRBTp%n9~A;7;^sAKavShO~ z&7(P#_&x4mo^0F@=Pu=W-T3YuI&Q6JEnhR89@XrxSFN_mMzO4WsHmN?Zd%iwXJqv9 zq{b@YzbK%hWkpAaQRP+HC+=)~#k{pn*V{LC*q0czdzdU0c>t4kUgOxZ$2;$QsaHI@ zdu+UBcV%KD* zd>wQ~0IjMPD0W6uD|fcHhv0F!0BjQ?Hgmw|&vTvZagmWsy6pj=jPGi1w*$cojA(j#diVlVD-5whJD1!1 zW22(Lv(b3Dk+^g9pVEpO5^$O);DlO!J9Z-6ac0lZ)Z0^Yy&gU%MtOmIG?|dN>;L)2 zS_zc^nG&uQDvbs3-5gdwzCqhMjn2o=>H)M^+#A0hU4rqCVl5{T(Ml-edLlG0al5p+ zJB7-cM#o5K?NFZ+4ePOlT@Az2g{353Uk6&fbx>I5d~;ytl61Gd?jwQkDX7J|8T;V@ zukG{YoD`3QhzJxctjndlTjeHQ0bm7nJj7FC-vYg`1nnl;_dF)>{JU=^J8B#+pZr|7 z2D$ohy*Bg*kX9=3Kiz`D_UdeZx0!^DjBJX|-{cX*^jlv%r;y%u54(v8uiN31u(r{w z^Ql5|$ZrohZR;|6Ofk!-D23&4Svm|DO3%872h^_HDh6TStkZ^r&OBW}GJJi009p=J zW<5Ysm#+55L&>+$)axBSwsoQhGn@8`rk1@(*&unbi+G=77iTLfe* z$jQ65&(3}jWte*A0+xvZgeBauhXSL|Q?(4eF;TZOP zKaNv7xjo{ZMfya4!Q%F`59Dtsl8jymaSs7h0Lzx#J%a`s~3{dDIJwx{W-lWS@y_-AksfmdFcaJxNU+0U~zc(j{Pb@lBCR!Ie+`o_YZq z%Z#q4XmTb69tiy3-`MI#n(gK_H?CbPi957CPMmBd%2?>6s22clzKt78)0xR{?u%pm z$gy^7d?gY|bKOYAri_xG%SzhNuJ`kE>ID=D)+FyzVLbEvvz3TY*UY6}B3+Aelg+A3 z>&TjLw-%f3*UzY{eVdneb6Zohdiq^gzw^GcV4L$?vSs$r<<5^IrqB3sTbt`st zfJ-2Utc-{F427gzIlNpYA7 zIxAhhz9j`9VX(*8UNTekrV@0tL&{liII`XiwhHJqKeo#^R-;7C@2cl>?EKJ>9>?<* z(ja|=Q{Z3CYBo@41UXtR0vwvow=>>$*`n^{EAL!Wrc=XJw#Bn1&gOrIv$ z&Qun#RX^x@>0x^yN4kdJ+S_&%VORR^3$KWm1Y$h%FPXm?dp=x)`H z;_>3n*A6$4qf61qEzAa=KD? z4rT5ZfdyY~Ne@S zpZWzq)C|q+P&=9N(~qD!KxAyA-%pGSx(t`c6Fn;B{vvG-!F02#c=SyqRA)AP4o;lB zAGC7>6kHstLc(@=>A$in&}q5~!hte^r?{9Ct7%A-mEKv`z? z$t@P2VK!XuH_J+-mjC!IlAg zbIx=oE(1%w^58MlJ_4wk>81s5i24_d1GOW5mTGT-vXXhQw^sO~Z0G04mtsw3(^CDx z%S%p;Gy=^cox0I;Jlr02?>oGmIG;s-YII5q)1SX1#(lTwg0nIC<2^5j?Iu1Q2$!Be zq!qP2^Px$($1C?828oPbM98t-@)KO8sSt}L1|0_1tZoe@ilJwBk`o(OqmdD3zJ|N> zh7w0T7bXUkv8@6F4;aQ-CFDQH9Py<*FkAlL4;_aSG_ z1m4;3s@EcXp$+9tq6af(L>JAy0UUa%JfJ zWaZ@atn-+r$EtF4b_XnHW|qc*YzVjs)BK&fUCGQGxy|U z?yAcjvz4AS7QEY{7h$799DjPEukDKiLpD|ww?)sPW55pTbFqqUtUsKkiIENn3L@Fn zVivpZkD|#Y;E2gy{gQXNDnZ{9=@v|ObOAeEK9u_p)jPl>e?roMb+mCk zEBhX!D}Abkfaat7$UVX2^x*#pZ=jw@v1-VjHD^8zS95W2eY9F6vPACn>*Enjftdie z>vQ>X2NE|luHOm`Jci(Q;W33^T6&?(zX}eR@Vr_iFwmHx-|}pn=RC8XoT$WW=fRUb zJNIT!7iIPKyQ-ge(Fs${*54MkO%ASjNAlj$Ymt}w`}@7<5rWcFPt<4E9ZOowCZcQ( zxa|k2v=q#mpkTUP+ZQo6p>^wwpxMcA?8%1CLa0lMvWoFQ#`=VYbyMZ64zA(6<4#|V zZ^kbvO3s|M%5bi`Oskz3Q4oE~az*!mJnDt-7;4A2JR9hMAg!tS8Z*D5sh#S(fNw+C zr=sFwX6lExbK4i*v?v-%5;QTXaQ>=r&ugs@=dgXDdR$D}LQi+iEiC5o!TbkV4#Ybv zJz;<00PG-0lkXG9F7}TDXU7|zKJu>4Z64F=+Inq5klNbx#-%N1fp4VpK>pz5EcceC z;ZBb8J(CIFICl=|F&-RC8tmJy&dT64Dmku7FDF-{BV9b6uM-YK-qhpj=i5TB-j+M) zQ6JDF8QpH6zT*6F;k@hm9^4!;!;Y$5IsEn0D?TPgjq3a7Og%IG^q_0e%P{Wj;j#kp zgF|$0`ldJzWl3Im++TcR7T>&y`!P4=-_OV^z6*20ayT|`+SG;9b8Yk!K^cN#XV8TH zLr*)yKDNj}y+@CpYS(r>zQIy8=(Az#o7e;wSCduGnv2%aX=M)3Y3(umB=P0yJgq(J zoa&=*2{6k%c=Skl_dF6^`lA>GixJg(QSwN^;?&J7EaJ_sZic)@N=nbXCfz=^BO4e$ zMn0dEwu3XPs0C}jaN$Cbp_hDo=nNHtgMxwr0!|3tnGmP8=ES5$&~e5OG2}|Qd+D$6 ze#);~>e#*CK}?}yT%j_PyJmjNCr<&%z95t8BXv?2FGdgQF)%#U&{yD;mP$+gFqqGi zZMVitZ>;Be%EJrg(f;#fawQcz0fWOEJu5wc^t52ErNr%0Z2N-h2>`(M$ zs`ZHm15+kn`d1+NB$JZ5O^Fl&-z>A^zK{0$xRfGa-RsYYF?k`R$9hyEg zdWUIQzi!<^E|Txz?3RFl07U6gJFSraBP09fWGKIKcwL0xDVJkX=H=t8>P8RMxfa$- z7iwe_SBx_qoI1XK`1GTFSut3fi;GYz?D9oYt-j@?wKPXUt}7Gsy|+^f7cZg;1h*8` zPQTSQo4TDXeScVdY@|c=9xd(u_V}!**H!t$lHvkpV{!6wNz4dgR zB{0wQ0oL84<^S)=dfHXSi77kjf$(1hP*$S6$Fy@{&*(r4lAO9<63`6({R#h7Y2#2# zQ5ETFiUZKNtYw?UM8WXhgXxJ5H{*}$yE6ALr#`Xh3eLxUcD$ykJgpq<79jFVW;ug+ z-!h0IidA76CK$XdZ9+?DlYQwvMOEO0yxS zxpE?B_6+fFbNbZi&)77~s>kutpp3(;(ygCki5vH9%8r|xztgO(Gc^o9z+v3>`M#i0 z#jGbWEsI0~nF5Y}Zu&TjKZSM0#NAU@o2+ToZ?2Dw?#+}Duzlv@X;rUuX3*w{qkVVh z_3NcgI>G1``Ah)7F1`j7Yfr_j5wZAISHGU!XPm0j^RvpQYr4XxGv6I(GfJ0_{{Yzc z^Qr$-p3to%`GxZ3as@sU z_AT&t9gQ8?VsjkP-$}L+otYr=ei`qy9AN(&^s@izpPJ{FBb7KlGLoI5ioQEtz#YiQ z|5L_O#5LDY`f>j7fUTQ!OQefh$${u;xoiu(~9MB`xXe1_BiBSILqZH z5%f0$@t=SCy`^x4yR;OF2i}ZV&styK)B4VUZyyyJBRQ^d?(|$Q^1$7Yca(8fKf6adZl2*5XN%oGEy9?m;HEY%^ zpko^Ww3~WYF<6Qm?Y(RF?)+D;d^jZ2@891MmQBF%liyCKu99%<)&c&AZX}C+o3_GM zL6(EQKPe}wRe{(73I8I!eq$O$HGuX5gMzXl2}EzKkBHi|?bz@oln3-LldkBgy)uCF zAcs^z*l3L&^)y^kIA#|~aJanxCzp;mXnb^$Vgm~0&l*(adWn?70Y@Zdk9@g|L(|Jz zSCa37xFU7c!}rh6EJ#XBBoO`7_Vw!{(90iKP|7D4GdVdq2ynC)L-#?)c3g-BPifQW zy**u;`a^z0pR2z9u#!yOt>H~9yqwj-_jt_{HNDoZUcJ#=aD`h}(r{$slxuHdv$N|` zh9kC<4|}zpo1AqdizWH$@401q+|Nm!u94iP@qLmCde#b-B2LPxH%xZ@!X=SeDm`C7 zA-T^H0!H(RQ)&4s;i<913z~=RifXl2)-N0GKgnUaPcJCiKWDW@1cz36>7obw1Uw~q zITt*kE`PpscVT^3LF}gmdy>+`BsYwI(z`p9)urs8TMx7H5YT!+_PFBp)^8T&X{*(dA_`w^Oh|Y)jFdB&1=?}_hkBc)Vsft zm5tcpk;n1bvi{6bFAxUOB+NL+kn229+LP8Y>_2~vm+(q1i5}Jx=iM~*t~~;lYFFq@ zUpI!&T6|6R(MyKU4Af!Y3mn?XF;AkEI4$qp6Fay^R`Rt<&b%XTZkhC}#lxQLp(x9~K=4~1mM{fQmnAxC6d6Y4Jxzc^)@E$S#MdoX^i zC_{8O1uDTp=T71KT!~kueQJ1UvN8pnMRi|mk47Hvu?(6ez*rQ9kb%BfP&;Isc@0$C z30g^Vla>(B1GYn8G^1foOG`uAqHzytCu?L`b*zSf!Z;iPg>rWxloO{EQg#dtx3D`{#q6SHbpNP4$VSH(98zYMRQ<|_-L)ew zMKBL!A@u$*3B5QLj*vO!we4D-PzUOuVj;{|%BA~b8vaHaWg$wzQoQO9FN_$R7{On# zh&yxwB{dgf0qrB@`t5{5@GQy>xoplO9oZ57>z8okU#PUQZC@NYP^?}r-qy5d6J$wq ztz|wyXciti$7}KY7iC6ow+kPCe;6m!&1xf^lqs+I%VCSje~q9vj{NykiL~)TF_+g@ z8(TA%A!%RXEFtIm^qzaX(u>b@MEYy3ynUO*Ofvslq2~IVv+l3+UFnj!{}WDH@a-9n zDXrvn-7jFv;QX*TJbI8-B>ObX+x3P(uefi_-@tDG~xpzD&+Or?*XG>M(UU z7@yj4A!OBDiga+R<`K2z9?gOE+2#1{&7bZDbgC1pRE(aQxkN-qZ(V=K<_V_$*_%zZ zv(ijshx0qLxaXfqIJAIrzxfv@Q4zfDmHyWJ)YxzSlX_3P$D2ovay%C?)%Fg;cSrs5 zL5i{(*JjhVw>Kj7|NGbfsZ;vGMh!6Ds3I_MVayDF#JG!H^>5pIXCH|~l>bjP!+Csg z?{jYq@4X(oJtHynK#g`++ud0A-IN{lNB)lM{$tYqZ)IdNa;#*k%Iqq}kwP-F9?$>g zt^dRw7_nb>#6csHj>VYZHH@rx!&31r?qvkR2;>zv>{@nj`faA=JbZk7;^MW*YiAPQPX@`rR1^b5RIvK0Ox94wbpQMuN!ZD8zpH`KB4O+-~4Vy{2Q z&&%7N512G|lZ9>=u1jJ#mRV6MX z%n{>BJkBiv{doJ`%G$1109B&v<0Od1-7-;WxC8b_9ZtOi20ex|kCVIUV$KyGnl*&7 zH~{dI5P6ZO1@+J2(i(!(2CrSCHwTOyhZRJs+LBF~&Uk58XSoi8V!7q#H-JOo=-5Q8 zupn?=Q%Sno*bw0UC+4-^fYe?>F*P*ss%mPUBMl4i)@oaiy*vIfwGV3?&Jx&7K78Aw zg7@!nfD`s~NGI~@LHdwYe?{e8X4ZFU3+L5{&+K|yOXAX(FJF?cM&;fWuj5qr;J3xa zJr%K4vdp@m+yu7liMk04JJflg86|Y+Xg3X<{?L=-DmY-0JTxSfqp0cO@SNxam?;5J z1;yZ9V7@)aySB%Thl^hdl^AOcyUZ*w1@)RnyiPTA&-}XSU}vs9w~hPS)U-(}(GbcR z(km2~p|h2|PhW}hv183pjT6im^uRGgL;MFff@_p@+&FtzGsPk>@2D1@!ql{#fU>Hp z>p_a#xnm;4a&ZmMBejL}GvyZ#; zX?YaNlBBk79l#_rQ;`WAuM@6&Q&c2n{lzQqC6q2Y)Zw&6;7hew2f%;J*TK}H@-Hgt!sOZY?G>?( zkhP+zm*Tx`aaeAog(%LoeYfI*Ivt0E6I7L;>cx992cFhixT1~>0V^Qq=+Zgsw{Nc+ za&E)Am^W{pH;eF6su0W?szvdRSo|j|-MtccXw0tFSp50}cwKpVs^WSW&ho{xUAuP8 z?Nfze!Vw{saY(FU4)TVT5dM4;3RNsdqi5Tmxq5?UiIzWl^eEcK2%`5KbO6{Z7U+nY zfHrG*PEl}S3I9y~JR)J!-uU_p%G#VKhY56JhPI1a}8JVsTz=1~%3{ZSp z3bgczWxWUJvrC~5bu*q~-GO0%DL!Cm_!Wop40l%h-M%ei-+mx&ob?My`@jT{@-e&| zVM#RN5BPIRx(M;}D`vSvHFk*a7S>-^T}D-#ooP+I@-`gv^x?w?DYVVQ21Vlpcw#li z@YGZ%{D}WHtIwWHG%8?}6@}UOu62FVZF#{Ji6rVwfy3uaPr2G(9Lw*q5-FdC7f1nP zfZ|6TIaO^mQDl)K4f8@Wau~VMu9SLyt;Da;3lnR@B>PyC&tKP}8gv*;77BsrBgyyU#4sb08pNS5}fD? zQ`js-Q}5FoU8>Fa^fEuR**RdFV_1N*w=+n#^Jic&BMS}~V0)c)PK^2q{0=6SNQ+=y zRjSaQGOgtJ*U62V%Jh|&;7cvxCE(qbQtjHyO^`bwUkXA|3EmQ3NEAdQS{B#ibk{)o zqi}gJ7wy(EQH${>v=Jn+vOuLsQng#fL5*bd+HKO(^`^-&^BQKH07@KD{sL)>Cyop( z->H0CH)5OD`SZgaRY-J$prxqwqG#5zI#p-EiEK^#lt>^7?Q8DK%&DSl#zw~)ABN+2 zV4uJ9>exjG2qCv@*|K571}x6nRO?0#_;qkqCu*N6=*kotVUwaLW&54|*y}Kz8r*Vn zhrh8vgQ+fE6O(Y^GJkp$3Q9q4eikuR_{I{iwy<0Tm8aHdmWVMKMKkA2uut7t!+LSz z@%~w_aME#iC1U$h+FUT1*8&Lmp5muJvPa>xS9UG_R*wjofLcl=gO7U zAkL7gdZGaSQYg`7AzaBsQ%IaNYXcDLWnNy^^wjv>Z`%ixE$gMYxI)n76(AT1K*Ui% zhq@kNI$0G0dBOFQ1>c>~qh5TkG(9K1*6dxNc-4>tY0C}z8HWJBw^v>+RBe`e3kOzL zDmO#&P#T{kR%g~(lPvFjUq8nKKo=X#0lH!@#ipw^4t~5~$%GzOF#DxYG^G^SvZW6U zzZ-64fgB%}AVX2^p@_*?a=>ZA6-DAQ@gP*^B>Wq^1tka-OM zrzS?>Mzb-j=jhm7THkYZrL&D$M|n=e0+|B>ggtrS(N3Zs)Jy@9C>PEd?-m~#u*mV4 z^q3sdh!f{n{kDoJyHof8R+#6Pi`*lR4%J#8cv@v8pa@Bw$>tSP-%@g{&zVyad2*_b zLv4|+c;rX}@)t!iuEr9X=B3}LQ2EF9F0 zxi4OvrH6&^#o_4Q-b~cn`y+5V8SZN~xt1#Jb7!k@`mGgzokJnsy+Vg-Bmae5a3tY+ zbFY`pn-eTcrBa=oQe6~t0g=MpqJSdoQ=Oq;TEu1<^ZXD!FGY-Q`Wg zEC{{ghtfuNKl>7OA|WJOEgG#Ll3T@Ne5;g%wc;uv;e;X(jW0~F*xPfxyu1kY4u^ax z6wA-0JW2)K-BFrXi$#wbC=$H_-WqDxqtRqT++nXjfW_L4tPiDo2p{XQQ~`1h-KX&u zi_hmPkKU)FriJ=MPsFY;f;w%Awf^VE3b8MCL!Rvc3w_g4Rsl{l3_=!EE5l2qqWnp> zpxSKDiUqEVs}u3m)<_1;Y8AXZoFx16;8_t=YL}I6x?Uq)P4mlA9E;{87onnj#mUM(l{!Zng#8hOn6}5mtN~0P> zqR&}lgB&mKQ!dICK2m`~djl-|irC@zJD0d)X|!Jqgra5u314}|2eUn_nEApaJdQD2 zr!aNlyas3NOKyIC3oMlO)HE~cEbK)uuen3tu+ljh7)l=OT~_6m51}H}&hE*0Mb~|2 zHUP3!@r_(j>$NaOOKR*Tgc#00(TWOw0uW~uAymAu!O$>_)>jF(z zuz3MuoQm&O{MpwGX!cJ=E0wyiW9eiR7r2|DY-cWbN`4Qf2_ZDxCsB?Y5dhUY{h zr=be#kJ9-a&hG@ZHzZYmL=$1saR$w0P*Z_efuQ1|4sq%oh#Y%R09|X5(S^O|D>Zi9 z!GWCA8}%s#8!1zJ;_{E$`Zr0aYi!>&ia1j(@~DQi!6c&oV@cJ*0-RbS>_7UXL_O1g zwWv=cUY#dw070|Od+uXf+ zA?za~sHv%mo(A{NbLq37_SruMjq7S2V2N#rH!0tK zj>(Rjtu9`h(QF4XJYriS2S<`grV55OHCw?kGU)g?)}yhJ(IlKBC(1D^Ob-@6E05~o zy6}C#&m6 zzPo7%m2pBuLRvG6cRHu(AHJ_VK#w*T>owV=tQqdvP9f6*u zVS;cAs~Mijz6sMP$ju#@Yf>$#CmqG{Yd?(d-#f>H5dxX&6F4rz8Q=;q<3pO7BM1tc zn(-!b_WfDFq74wpOivBxR0!-r5Xz45oq-|5K4Itbe-8dEPgT3m014Z@r^j=q(ekQ5 z3M$v3oc06q2=u$*=Mfwt^^gEDgro;$RQt=O&WZft!KOkJ7L_qGGD4w~=`lG5&}3pB zvkqvz{p;0KR7&7Ghz1Y6m|%&JIF~2r>v#Omg8g+p+*PGs>)6O!B-n1AQ5Vni)^lng zSe`$PK(DIIH7B-dm?5;6n_O)D&&CD|O!r>6LJtR$jrQR%D`vG%yO2%ms%?snEXEY< z-nC1F%?C}7xL%S(s{iX7aCj}v&GA}EWRlC%$3y%^ZW?7WLhx{E7PCSWdiU5+OgAeC;fj3er{lf&Cz z{sH)=$^0ySzLz*QrJxhYq9G^sqHk{~r(S^23h@zKL^dD^yd=Cgks5#O(HuLGHWHEZ zhcA1td{y`M6qLxuq!JzQ6sl<+L`I_QWrepK@+8#Vyk6srI2Ftz#MIjW_Mt-&a8AdZ zgfY{F>9aMD{bBrsBIf$y-Lf!*=*goESOPY=8sVnnC+GZ%c8}yjvIXSA`tYHOsL1pk z|3un%*oG%nzExshtdE9g{`|Vv{rt|-BR0u^u^_MoNEGP$feIl+FHfFAl!=7D%}z|X z%l`Er_W7!dpG6GI4{r_tz=stFL!gge-(SDos0(t%3F_VM4(Xd zq>Afrclb+xnv-i!hpn;`3j|mIrS1!0*(x<{iT?S(j!B3O`$LKVX!?-T7Y0jDLz3Es zVtY(zkW2f9I9K+>KNz$<)K{k;O(>_P8$tn#thliy*wbS33eW=dN0AKTHwJ_&$~8@% zLQ5%>(&1&DLGAJ_zbyCXCHyt~wIMPoW>jF3Ks)Ja&%ftdZpvNk}; zeWaJu)OL_JpOKOOVKUcp%gX@qwSj9#zc9R2-H?mb27dk^Gz~xm3`bgya08)S*T*z9 zl^bxyV-U=bVK{`^|2P-)j1PEdKnj>Y)+CMmpohO{NxU7|UD!%UHUX-^k^{Xa4b=b{ zEWd1oiiG$C&Ch>mn6lusY-+P#7cCc>uK)o=$EkL}AIAYZBJC%=@=zfIXM4xrKLyhZ zuK}5L?%~Zmmr8+UpnT#^EtkL?dfQ;~;p3-#ICK|9Zlhaf6 z(;0YF=(43zBu7YwOT6)c) zW+s*fG0Y@JY7IGG-qfzK1|gHbj?KmKF%sqwqXiQSro^uF!Csihm@bZX+JE}jQ&&}8 zBe}ajJPw16$2PV`-UbU}i8AGP@Alglt*g>XLh3aNAn3El(k`rgf*Ije0PrV#8;jWa zhs{D&+O*sYP0;L6&A=p!xkU2?W5nwD-mIwO*-~ZJ43`H$zCOb-A$eIs)T2 zP0&b}{ihvVHCX=kf#9W3_%HLCC(-a;R2siGc71uw(jbh0kc`71=$=;-(9h1qP9kl` zFhkJ!1JnUP!76mz>iIn8a=8S%KbW!|QT@g;sR-*(yF4_~hBl07N7Y`wfy=ATf|*Jr zTp$Ec?c0P0tr$Wm+k&wtRTrc|lDBsq0BdwY%UqF3b7L02Eik-MbHZ* z)n!u=g67vJw#6E>wkM0=__$Axj=X?KKUV)S+K2)EKmtp^eUG;J2mbK2cA*jTjv#13 z77Jjy&vSa%^WJt#56lciZZpt7vVMJpB-cS=?p0w#m=a$P0|jo7_tN#iz)AQsH@wM| z)AFBr%r6nnEZt}m87K5I0=KtL{#NQSRTfl5!F@&ZT&gggL$%=$ynm9ARWL9d6=C;Td?4_$dM5Wp242AR16^CMs%I7m0-M$>@N+y_f`qu<(w z4biU_q=z2;!;25*`R0Wq=x2mpj-Nyels{ZZ4GI~2q%tk) z)O#4F5YD(JRCZBv4ZwD~^Dit?NG<`x=<#uR(Vv#c@qqz*Qu0^+#6)eV!Uka(HlFBA zpmsSgH+Eg`AKaPOwj3rey7N0}9^*Wk0{)EsG}mt3sszUjIyAS_1@82opuR|{x z)%HM;A7!>^DF#XnYY&^#z}mVGyHFGigr}rbjMqPVzn$bC>2rGtzsvI1IiNI!0itET zOD?zn$%yw)NJPIQryl?dM_(9esr515|NO!o#|Lb`x7K^#M&vM%L>!j+f6#01q~}Kf zE$0L=zx@3CAb*e`AeS8{ZN%tVSy`i`W>b2ZiCTB05DNvT|9HUZ5f_0DvMkab6Mzkj zQ)-jDQ6R}g#0JkS`IgJOxw*mJxem7WAu}g?6Yg#ZEfc)x1#%{A5Hf)&@dH~2rW|ME z(r|$Y-ww)_9CUHq8cYoJ0{@Ik6|~Wuil4j_l&YO zx3+NqE3ZnEh5@*L)y_Y$O`MIc%2Oci>r$XRetxzXKGSkD%1Ivxu_>Ro13E*KGIXUC z7k35mXkualu(R$0!x}hlqois*P?-eoKz4}&=J$+9?hg<3V04!n3@zzPhjsv zpn)(T9V`!2FJvDgoI(PQZ6d)+R0{nR|L<7hhCIQ5wJ1Qho zU9h85RXJ1ka5kPWPk5C03>}n~k=X&|Q3_fLkToqSv?37#j!S!hPze7cjsa1Xu)8+p zOe~o0(N;aXe!DMl&G!o^ zkAfX{{(8l7T1MK%)FUU3SQr@nxFl+20o7pA@94i?qG4j8dc^MUODL2*)Z`5=MO;7b zGRw8|+pl+Fq+Lq8NZDe)fRUAnt)-z6Q@_b8>A|fEJ!^klK;=ED@aqN4v`n;g`WYtnD+4+zgTvcdUySgYiyMoDZgH`l9rj4eiup{3@sfk1gwl~42&%7n5bKB zOFt+w9{Be=*%%p`7}%LuTI{#9wPiZCS4>jA^-S-K9u;?+wpzaL*E_M&uB2V6{PP+a z0|R@TBL>b)3-9Jr&Bghuf194E(d*x*hvg5`Q=NC_nflI+WxtK}FIW6wdIA*RQ9ny0 ztN!aH|2aLcsi$=+UjH^dzue^?({r|L;SNFH4f?+g+AkOUX?iB+7`>>`K0o=}^!#$o zpQne+rN7n5$bY}n&!L`~p73T-N#_eGAAXyjU+(nZrl+H0!K0W-sYz2x`l z*?aw~jKT)i_}`}Im%IF9di1m!#Wii#s{J--zg+OA>7nKyeQ`thhWT&P^UF1Vo}Rt( z7o`Qy_Rs(KJN-UAFFJ)K-{?7R_-%TAxzm4}o+{sb>O{Wi*59Vbx$eRD>0$rF^sqdb z``k+PEaz`y{mT`9n4WCjeCoGVho%4ZlHaEXE?cJkZbJBP)AP$+{xLmn1I*8C7~W+5 zHfXIY<$Zj!|KIQQ`}C|%+a}2vb7|Rc)AP%n z{@e64-Os01*Q&0ZGyUB?mP*$qEu8!C_4n!F*f=;jhqf30U;e`d>u=pGV0rw6frGxm z@gp{NtIH?n(A=L-|7hWgIjdh!&bg?pxO*`z3oX8E@!mbVa5Bf-M>t+<70qn?CiC=P z2Pu>(-@UtJ4mbsL)-7~n9I6)SZP}h=d!l*|AMUTbry^$CY=g3`wW}#FXF8piGlB!zqlRtilay(4E@b_OZ zuJ@Yx1PzzajwAmc_;q?daAg{z6_KAh4UT)>{AabnATe%lF-SK$c)kL`vnude=l;gY8 z0PUo{eK1%fjgAS;uJz-3*B2vZwg9?@Xg!n%{i>D+V^Fod~@ z31QhGG@m-dIdK?b?DugNK;$5%=!BFi6HSmLIf}s>Od@Bz>F*!x(jMIx{Ph_l-FeBN zzq0mKC!1+(UI9%bFZ4hhv}cJ57d^i}D|wEUK_c0ac|RiJ82W_)F$AEkFE3w!XR0NG zt&ffw6zK?>kassiBDKBfS&k#aoAL{uc#xSnfgXdbf`%6czCtMH1a;x`R}3uF95_HF z!)PbbP-2`&V|C2_qSK!xMlb76e1S+ZBfdjdYiquBBHvC&ai{^5#M;)j^r56m5@Iyq zHX*Fba)BTRg5>tPIt@AfB%0M9O*|^ABBXG};-H4cFp~S?yTTn%>|K!<1-dC!dcp3t z)SK*ee$uCUYF0}_k6;XNJZHSFXZ6Ac(zzWXe?TPWY#5zpx*`n$4LmLd<@U{AVo|&rd1ZH zB;EIN*&68}taUsrI7wTNi5BVUy)@S8)^fgX_avPAak#o;S54F4w<{dUvKugJuJZEo zMp{xG50fDAxHVP;7Sbu})1DV96Pg);;*LwHSQ_&wK(y9*k>yZgmI{@nQxL&N2Mkux zkAU+o7VnYZ=3a2JOi_H(*ia&0OH-4q$45YYkV_soaA0jg|6cAu#!)sgBP`S_k8dv) zbw9c+D}l&wGBZDR3jBI|q#L{G;u{Hq2|J*v zb&FU7tZd0+OE!cC*nOjuQ$^VdK`py|*jCcaU0s}sZC*eAX*l2n zJtboQ9hlvckkkRaCE?56evuty@!yi*!m+RQ3Fuv12*qP@5pJakUNG80=5^dh)qbCe!)5Q zzO=Nzk#kz)rescQ=;dR88~|YlTjegi#!bv9a35bVG^2gkKH^-4K(Q#BT?UU+oFM6k z9^RqKS)EWLSPkYlkpR{-0d1DayyElYW=Hu0jw3Eft6UD%KNUO`qh9#a+(a~u7b+&_b;?r>UaGa&P z87BDpTEM8vw1Y0&mh}FAVp7K8^!XGv6j}`KzrDEu6+{<5vTs%x2!J6*T`orA zIXJ+2=a#^8NBDG7H+vi;7K|tgpe{h2C9$gz>ym>Q0>&9J8RKnAo-WuA0@_ca;^Qq) zyh6SMHCn35$`lHCkUKEJIMF-{Dk>0W(}R)H-lHEu&59W>-u}_*1+X^`K+1%)!J}SC z)BVzpCD&k;8XesRQTa4k(VUa5yNd>((2q+<@D(x>C&mJ{D17qBYOnW4Uc%uIZHqK- zfYr707K_%fwcToP0$QSrMJ@Skw)+jQL6;f~578G(WIU9^eP8mTdupLa=p2kSyyA{U zM6n{s(RgjWPiO5y?tsq{9rF^B!(alzsI9?-KA-rX`>70`LbBCSuZJh5N4Y7<9r0zX7TokRPJlip^@X z^eK#?)WEx~_V)HA_=m z!Jy?Q)P)py`T0py@uK0;z&r4N3n_Tk^8<}2B9KNu+#RbvPo$C);zz`!v!OLBl05yI z76l*d1N)Z}f%-u5SCMWIt!N~N{N-oT}vf4|zXVLsK zl&et{Mb6o2X`=n_KyyBQ8fNLsQX!HsymteQ3fT8du6Fcb!nwhg2=07@lX@U_^32M;n)P-)X!B;GU8dtUml z`DeVJVl6A(+t!8QxY!nU`x2-QDUkg}Mn(h;Cx#^^CMKy!tiWE9#8~LdD2=_aXLmJf z7}1b+^N>DxQu*jZ7FJg0 zAVR*di!S#;$SAUehKp3233YK!kDTxDnH&h7z7pI$M1nwf_sL?9Z%MCDzChTPkeFC% zqEe5u?TG$`Y-3acTnvI94?+SvLsHK5wWWpV^R5L#A5PAxdZ)PF2J|L+Jbn}K94$aa zfZ5$+h7Y65)@WRR(8?_Cdiy~VKX%;mPQgp`)U4t+?*pD}zG>HYLrw8w+f{Xd*JT&W zZ*FDdFFB{vCjm~tDRNU2>@8u4x%b~be77057D7+~C92&vt}A~%v~ggiT=%WHo1;RDe$Rn>^{7Me-tzR>@}!&O7;VmSMr*e1wNJrdlL*2WuI-Rzmi?P`{vyG) zPe4n~dd9Gujlua~9CA z*$fdjq#6wQX&=RtohQ(!r~Fv~|`UwtQKon|5%3VqrTPw-1Bx zfKk2)a*b&79T6F!`C6{l`%$X^hq?+LFn?e1UZTyn4ZiFiyA!c8DGt#mfv7Bw?GzwC0-ng+#I#_SrMb4?-^N2Z6YnGD@=7H3Fo?5`+gd(gW_)H;n zrX)XvMR;DfcLOEM#KRE=@TWt)^^_>bRd!>3-kAhn@pzu?J`Tys(YuQos65MNa?q6x zNWVVe_#1N4-~`FNP@cge zXt>8tEXAhjZR?j=ePGmiH*Q2nR9lMG-3N1JZbJie#OaV#>0a(Q3<$~`w=4`9Xhf)6 zB+~d-%gPs<9lAf>Im+FDfj)s06+2%)K;^Qcanag@7LjhgTI56-L@-K97U3Kl>-%wU zHWN#`O{JPDDzhjUroB@9`%LWZlgl>KP>^)aJ2~=7DIb)%$1%iHB(foAeGryv)GB*w ztfMvJHEd;#^QX}&lh`Xhay?(Ar}}&mEyZ;#c2v|?j;yms*n}fJMhTZac^W%SpVTig zr<|szo}c6MJ#a+&lG`z)_r0LWSHc-|8zxhVm$zW$hssUeC`yB+*0(JbRy@W8a*4&5 z>f=<8a*%o8&QC4Cr1>Cr<(8d5zFL`}AN;@>ZPRL#^^a<_rej60s4&LH#02nq1hoYA zdHWCzAr~1Vw$`utA&e%dZjfcD=Uk!|NMc zoe??={RvB&8xlUnJJ?@b*FM z%SqXd{QMkJZmCHc+<|tg;HTj(@?R@vBUixF-?Y^{znIkldv>}>!1E$sHY{kX($snB zi4c>!Bn2F7{_Dks?7Yt#Bb1`!JBYcc>hN}Bgwu2auZjxE#)%PFTy#htLME)3ja;;y z=>vgURvrPnO4blRYJJghr~9|$y$mi7!J0_drocqRsPz-g+e?ZA;M~#N`I9fqD{j?^ zO-)ivwAdj3gUiJW(sY+uEx!qH^~9IM4+*O+WLf^Gji zn>V892+Xw!gv2#|PftT51(g&? zH;C5{blEK|EF2kN^A<lA@W3oJunL4oT~g@)f+KPWofu%iOnj&yW%5E{F*wDk7+ z4o0jCNo+PmoJxukeJ>$;#o=gNs753D7?a4r<$GrvX+aY@go^UfE`SO!9@_XTVngb6 zar)h@TetM=N@S;drYCcdIFj^_d_DGir_cw|oR$PxIJ(Uae6g4jHyHY@mY*byt5H)! z#t8$Giq0)0V8T*rxNYELeb+zmj&=gx5g(Z(X%?hTt7zcN3L$!iBHN}!mU*4CBcerJ zTiXH19(P|^(J(MdwgLbb=&xQ}Qy(Ud8a%UcfHf%s{D9mHwG||6CXZ7#vX+6``lzEs zRDpp?vu+5oG{h3&DEeDAHw2n4EDP@qZ$2M5Is%x&U^&j`Qr%yDab(#P5Ds?d=R`7v zt^vTuTqT0IcAg8sok?Tb>+H67c{pJyUT;-AR0%2Pn&Ow`x�$T{F5Z{WqLKxUBB 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�P`I!+xg~@eqxuvzq19i)|UCTH!X}m-kQ76QSDivM^ z=87!3>!hU>_U#XS+s1xeq2Z&#=R4BJkB|D7ra*jaa?-)@4R~8%y-vnZ`(Vp}ikN@~ zH}bme_4w83497LM*rAgXCGwt4tc6;8zmq5lIohf6ko}W~4)xvv0TW4;og4LNq*T@D zx`L0cWMYbwY*n-l6Wt552jdwGQ4uuq4>V`;(A3t{4B}P7AD5;QfD#8j1amE|%C^Ja zl)ia01$qo@%H#4u&lJySl>YM1xq%ptLx~tO8%NrCwC8$gXrj$kh4@cSexAEjeC#>P zP&r*8I%|PYz1${lFg|j2mlb}Gd>e}E>(?ApT!(7B8LWh{ac{osj9I~)-H=rh3j|5k z=pMg{N=Ph5KA2$AI_73Fsl6AplOi2m4>@m5ma!wfclaR^LwF;s0t#6fhazby?+0=i zBdmaz7=R)-$V{M?_Q*Zf7r3FL4nJ`YHU#zs8Efw5vuv|Z1dvT$UBg3|etW^8L9&8= z7?ZmFrAs#YW2r%Z>jw?PtS07-s+zWK|NEVL`_^T^J8!;R_!Txzd&(L>HgqdaYMwap z*%hZu`QwL#$ar;&`YIKHXC@MB<>OYX+^RMzudG}E98P@X<-!!ebHK|VAR-Uq(BNe> zTpw3!yf2iH17NcdQ^1Xo1o%YGr)jz?7&74FgF>_4+cT)75+Z(YU$hx7jQ1EuqMIXv zMg*P>15}svtgXlrCKi?hIx_P}EIC-&V~(3N!M-X+OM+sfMmm>}F@SR0Z=H~q^&u|LyZK=&l1kkW!oe>y?0aIuR z0^(8FpJQ;ci3iUJ2*`RGz_oF!9;B}4Wh6HF+axkm{P{rrF4n23Dg5rP!N>I}Cb$sd z-iXTyXhRs_UBwmnKthEnHPPC;XWjB7mV}Z^iC+7P3RO4X4Wz$UgxEw`NvSwsV{&?^ zb8;;?Jm^i{pzA!4fgT<_@tD8;Y>Rc}maSW-E6kSG7ZLjY821KGlU2SXzs$QTwe3Y@ zqdI4MIssLIy@Kb}-fP2M4R>x2!p;+iVSPiMfA-zL%S!?Afty*s8h$A5Nf2Q5M{CsQ zT6xiHzP>-mqB)=Mp399zVmpPT4*q|i

    S*p<)AenHt0v-;mn#A_sw4#W^_x2VIvG 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�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 z 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 z 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�EqQ$jE8U1cSZ3rg_qKGB2U1N=C`S{^>W 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 aSvU7zsq;yYeot3Fmvv4FO_yN>#Q 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�^w+ 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

    TdpUMUZFP9g~d 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

    Dfa7LnR^?GhN|XoD-fXX#F`!ET1fGZ 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%0DfmZT?tdy}laB`#-#$1yq!4+wTVi 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 z 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 %+k%~96 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 p;{k#HbkO-f|Ncz2a+HZ)qwl17j%4-UTEf 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

    Fe3L_Zm>%Bl}4e<6gC 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

    C{`kk}==z$P-CbQ>PedY7 zgnM>YmP_w!W8;1r<-&!jPg>(IJ-{LVG&eiDp2zc{GZ+o+?Y8`4*;T7nJuEC-H$OlB zg^rG#zP|n>wuAgbDHMw8jvcNH%KhYRy+hN}JHMN|diAOSSts{}p+|p&BI_O#IVI>+ zm6bJfM@B}@`}(deC@2t=*45P|X)WwGH#b*RSLbSUJb(UNPDzPDi7F~8(lIt>*o64{ zYUP^uQY1PQKarI!XsGxj*L5ny%}rT(%N9*rZ@@7dx6QV+w3JjKku4|3VZiQsIav=2 z)h&A!>|cxZiCbD)o~Kfinit)nXOdPgtpGFLEne1P)a#4aT6BV>MlUb3|MA!5aqteZ z5O7vl)S=ao&+reIS70{4yO1x$RB)%{)8xJ7Mdp8Tl8?eB^iL)YSCzZe`jB%RFtakv J`SSS1zXL+)4zvIO diff --git a/crypto/gogo2/visualizations/training_episode_30.png b/crypto/gogo2/visualizations/training_episode_30.png index d0ed5d0a39b17c3ebdc9814ae971ed1c4759a8d7..45e15943dce64c9bae48017956968618f30054d4 100644 GIT binary patch literal 88226 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 `T_I2%1EMo0 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 AQvd(} literal 84555 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 p?hqXZsZ4K@Hp@ zxOK-trR!Ax9|p+^kZG9A-0F(}0aNkt@U9eF2sY%_>__Jov)qhjgY;GK($b?0wNziw zEO&8cPH?ib%L4>p0rD>R!-q>VU@$*_`C?>l0Ud)CNGH55PF;Mw0pM1l!g0QN_76oj zvGe`U5CHiLfs{X;xH;}gDuAd>%nZSlAcVj4#FtCExZzh%CbNLR-Ezly^Kbbu?-T%} zvG`GN@$S%z*vladN@uGgPZd*u_(r7IO2Y+2QN9gRFa=QS|DLr2J|GKM_n+B0DvmqU z(Et*@iyZ1%mjon3Y1f=rTZB>p@ot-2z}Se&zrtU7m{7$4Mjg*C84gC0U+FjBHcKF~ zN#F=$66C?OAsA<6Yb+p!K^}C0v{q(pLy z>)%(2l01e+)bO?~0(}h#%I4xy21svSeE_O!I4+JGTr>ZZAW)*p=73PyW%&zbi<*YQW)IqzK+-b${0b;@Vo(at zkDt-`9TXdDN!Lon^!NU?0f73y(MO9X)&+npy%Es~=L_;Tw8OZj3j%TR$K=f%aa0daz%ts=q8_xd%}mCIkx{k*Al!VoN9KHSK?O2wN# znt7#(BR5in-n{N9z8a8vnkCk66}bW{kt`{aIpn5dz`KfEa(wdsGf;TI7OG@Th<1l+ zAhmM)8Ko!Bfe?(k|BO2zOdqKk`9tbr-O)Vt=XTD2he+@Bs>-)re>|rY(aY5-%ZEZE zc}vTzWLl2^zMZlm|ANuc`>V(;up2WI3dUPNgI$|=gjt1==48<>p46JSmXb$fFmpcW zRx?1xfSD~%QHKg4ptEndZZ23AfBF15vi61UBi)GR{F1>sGF@B_2?;$A<{QM#RwIMB zk-TFgwD%OGWgn#drk9c@(bhwhD(#v8trGOA4AW0@F5f6`WBLAE4 z`5Z3in=9mMrl#-ahAK1wme1zHocD@gQI2i^-?#F;7nEE^`@7ru_A_c^uRoX#5sCX# z^BTTv6p4aB1mcoN^sCOK*%N`REGpi158T6(idS+zj9|4i(Fx@uSa$T)~i!@$JH7-bfoEvMaW zN6A3+Fb;(`|)~yp2|`GfA`HK_HR&TdqiA})gS}E zojI1|$IXkm{nu=wwhU3y_;`4cPk;V~+W>`RDR(-EisMkxm0-y62sI96a+mQxT?e{# zQ@9K&*^awn;lh$IlFNFAoVApPY6xY&Jq{#+5DxL4M0ztZE(5Yd!IlAWAn4QhQX7jS z@e`ZKkH|*uSLG%HoJvx%_z;P91?JrTp-&Otl)-)vDL4bbKwkM z%^FWeqI158!h&_F9wi480x*7Ax)4fi@=eSKkQkDgi>rmU1&7TTvSHuH$=9x|9Mt_qQEZO|q++2K!6_ev*4tq0Qb7!> zmZKva(I@$P`hpV;ffUJ0E}qW38oBq{p69Sn0#E1k2oq{zXqd9LFf>T3jI$)w5-`s2 z58OaiUPAFg)a}IoFL$v`jo_QK4Ozq>f^EUt0GKS_yZBHt)oVSi7a4ahK+pWS!%{w~ zfv-*M0#fPr?D=zfs3tLj*`CHAf?7Q7X?B)MCyKNjM{E^yEL;IO|7PZJXB#^yjZ%n~M7MW}SzjNQUs(u|P?E^xi!>H9Cp-f&8*3Ke?ycJ>#Nhzdq*IKKj}H}=<_~u8YrRiN z`|{Ipca}t?yTJr&YduAgU*5GwYaox2AJKxSZ zp9MO=<+vxj8MW=ue@_N)n$hs&KUywZ{G`?@-u7mJa-q;hZy3fcng(*h?s-q2GTm<^ z4Kl{NroanH;lK+mzvV9OEv}+4A%8p3mNGE&L>NUf@-%Un|{ z7@7Zv-DZ!uXsf^Za}Hnx+UETqX0lcelntyc#VMdmPDttOu8BPR%0D0?vdf2Ag896P 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%0D9m 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∨nG+gfbEoXKz2iUmI3AJZ2F>yUAijWjL zc0RtoJEJ!dasy_&7P7kZcYIu6zjM+zdy2}j=Khoga7T3CnZVtGj*)KncY)%@L1y~? z;a=%s{B*{hw^SqfoYEi~Yc5-s?vB+@kF3lTqXUB0vxadESwjLj<0VjA6ChMd>;v!v z6-~|Yx~3U^zm@5c=-T3EQ1WnZ3)mUCnQ^RmRT?)u?5xG?6n=+=(zWgmuT^Uub_>LS z=}=#$q!@NT;d=WSScT5<%lk-p~SjM<#2Z(5g3>1R6@7X zgQ7Tk-m~tZyFdt#C-UEzRg6n9x- z(?tDn3Bq|Zkn$ZkkOyS@_U+r`#GzBK7nY`VY|Pc*v@Y3KjWk$Z$vY+{hPPBu5BP1N z1B#%Csu<@yfNyM?`H|u!QawVZ9#gE(NF#_60F>|KCv)k$Pk*J$5&U{%$HG5e0fmT9 z{d(&N^T&oLHkps8a0)9wH|T>Nf-@YtY;f&Qnknjd=UW)yzA791spG{*h z4WRo{z2t@2`hGy5V+Rd1gnx2b&m$rX0D(uRw0=$<#no{Tsd>uoUVc?d$mBCw=Fm^S zc=^)D$H%;sU=~WW{c4RrH>tgNh_9$KeR-+U4t&b$d^M257| z)a%vGA3lCGhfz6+k{*}Ix~9a7mnZdwI?%{9XR3|6uC_LNy3e#Du?@DnA1n&z%-{}1DCmMSbQ1 zp@bU2sAOkswQpE<0{U{G7V4-WYMUk|AHYLt0rMa% z4!ZhHp#RlYj{vcc$Ma$NxvV_NDyw{hPDlZHVMWJ!hg4bk!)>{3z|+-;+@xD!sk@<3~tIMqP;G zA%AA1m_lh39nDtrtZ!lp#tl!_I(=p#MeEH)IDWYKC0Bq&sZfxTz{q)HhR^ znd|_YD*@+FoLDc>a5h5U+hT@TWbfnhms~swTCQ)ke(0Y7(5?rPgeEk>>i!X6U2AlB zs}(k4f3W*=Vn$J!_O1RQ5n`f+1KjKF8&5(*ztT62y(Jz2gDyC9)m%Nos1|HkJ=0y2 zPsX#yOssw5&xZKBaN)v*L7!#Y9L@4) z$eL~&+~0rH+?0Vi6nii-JiHYEy=C2^3+K=8#^3FU(zI5WSp^IcGrFQ zaIbBqkahAp?j(y~XEb{>tDZVk$Flq&&{3P?EThsA8&|+VRp8B`=;2Ap*|lcLmDh;7 zO#5$6BGB567z8ytC#@<~A4RSy2U4ixGCgAIJmmjeof4x_UYZ_fJi}2MWuBnX6Y5lQD6KVn&h6_ zx>MUbL}OWFi;Yzsx*~ix>V4uxFSHwn!idF~JOTSG>lx1N_=URA=?h9H?@r!kq$J#u z)ik%u`0b8scy5=w3<^mXB4sr-YkbcvU=HgKg_se2jo*d1w6jpjF&afnYPy zDuNEt>Z1&+oF7kq;xj~yHmCrBx~j`W>fsiRHWU6e2HRddn9wKUP|WjLObsz==4_vB z@n|@Na%15XOyh*gGmY9iLusn{v-IO<&eZmbe& zz1PZxgTF0UvN+?rq3Sn5@hAx^WS!8x?*vauH*t&GP>eO;G~hsPX%rR6kJuZbsyeM$ z9QOcLyWi~ME3ft6J|Oh`+HySpBWs85%g2;xkIU}d3Rt>-*N6AlGvH&$q@X%b;SpaK ziAE37X}9j~%oa4sFj01Ln#S7pD#u}$;fGd>^d_{9<>CF4BO-PRS@J^rdedBSz${+m zm_L8tQ{Cwpk?^XLR}DRsGBGicEFC1QLNarC=JB&K!DIbqKmIjZZs_N7en_`msX|i%x7-){SeE!KxgfpSm6`zskE943(N$x%lSB7d9y!+uZarG=5NVy3)#@pm z{r!$9QVnsm(vX<$QfN4ov~8++8FrIGhQ;}pRoX~A#vkcH(gB*YHq$OiBsU>L*g=)6 zSh&TV7ZqniE!$>O!QH2(+9D8x#BA{5q7_T8Knl}NZ<_fWdKZwN(^wj!xC06qgVF|} zeu2ukXnGn3&)VU6qDbz)sdfPpKw;}%g5ZEK1MrvAIGZm3p|RaF zcHvuNp%{2~2eg;Au>#*X{N^A~3l21;* zRnH!L0AYnCoF@iZCTki)Ispgo8TP=w^8<>>dK2<=?7JdBhDp5mAZyJUXz3Z(LzXz` z>H6UTJf`)!T>RcAIci?JDuXVe3ciL-tzL4cqbs*I9D1xmr)^md1;S_)#uBLqsYEz0 zoPt64RJe#o6(K}rr4#D?q+9uA3KL1cpKX_;4kFsGhk6LP(|sSBbQcp4bFh-04!4aS zAq3UD8|X&pJQOj^!lGIn=1LC~N~+hT&9B%(HaQ99!Eb$mlYHk`1QC~RVph3@=iBsj z;q8bgiw4d2zJ*4-{+i_W6FJUeYYh0E({bR&cZs{$e|jiffWMdMd6ra9*MXo<#`qRt z>FVnmf=#px&huIAm>u-Z2|!t+m}#oTq-%O#9QgFjD0L_I{v4+BwEEZT4kJLbIgwHa9gYhM@=ZM6U|3K>G=pSM=EAs) zJj25bGr=jexQ}QI?U}d`pT%S5flQ#%U z-)kbu|5dn^lO;~?>Ka}ZB=-#4hMS8k3k6soyPG1jP9ma;_oV*;TX58;twLUe%UIRN zAR_xd9^la3EnOy+xCb2iNRRHUaN2zmV?pTO+h0Z6QDW~Bd+&KWUgP=pkq5JQS|iOW z2IJ_L!4B((aO?c?}{UUH@bDuFv@&9y+fS%?K7 z-Fa~vU1jA#c;^R$gD9*+E>S8*jXLh{$V%*S-e~&PbBK0ux?U!Usa+YdW3rHu2ZiO3 z0E5^jY40jsJ{n49|AzXDUm*7!udU9u&Rx!$dc1Y|M@mj5AD0k)BP3I#@ICCVaCc(y z?x(S_r0+OBwBqyUF{JPrT4hh3KmU$cU<$6lzSby8Rb5?R-##(adtp3t;?vq6p>0HD zL(RbGY%8loT6fG-d9)iM5eG>N5t4Lwcbi|l919)V)2EZjViKTn!;#2{5X5D9klncg z4XEH+UH9n|fSJ{m$Q|}+c05T=9!6iT89*);z0V7rd$gL!UV=~a*{yAlz=g%@)qchV zME{65$AInR!W*K6@5i3_9Py-#vz!~AMn?;wck^sd&dgJUUx+t~C1$>RK(SwDoREb- z$f5}{FJdF1ib&rZpc4?a^z3#(Tjd};IdLv9`^0h+_jY5)T{C~*hNH3SCoknAS{+9g z4MDU~A}5X|j6yz>hCb#<&gwbK`fqW>oijETgOrS%^tS3c$;6;8!>P+DhWV`U@n)Z~9}9GZ!@_DV@L z)+F40qbL7>6!4lQbSIlP#92~LXV{RIvxZ61`oY%QX(-9QLe1qKJx;se_V#v^Sppq{ zWyb5THyJHWUJtp-0nc#Qc)pRh1na^mnRj!oT)7hSIkcQL;GUyqDajvoUBpJjamP&L z1Tjya8ffCA*-ym5Acly`sE|*7`LYpa8zvz>I{LnW5G|D)Iv&8v$ce|l@8Uzv&mU-_ z!G3FyU@!2{LFhB%XBgyX-+>^9I4O+3uebLKfG$|U78TX{d{(u~N3{vsmD7Z@<{cS9 zNF*|sHR4<}l%wH9@+AxZNKa1(sxytHeJooXb`y^nfR-1~9{?MeOF|YiMOVn5d-Ma? z)3=B#a|EueVy$7SMnD1L;y`WQHMh&0JGk^*V$cV}RfAv3Q6OGL*z2yTZ0 zpkt^JQ5V1>oLJxv0Q#~dDJ+>q_GFSX{evJ#(QO=vE>|1edWL#nFr?lQH&;

    ?Ro&>^}z!REa!h9dP$) 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%0A+c@U~12? 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

  • +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
    !qyXqZ{_G{(=E;jHXz`1=X- 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
    Y$6@y>Q9je&*yV^ZSB5Dh#8xi5D);SPK{BY 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%0D5Q%=lxupy-A73uC)lX`{vj+-GNr7b4b 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

    T5Ntw~BAv%GJTCF>(?K2%n)jq7TuA>cM7DYc{| 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%0D2$-uT?u*Gfo!G}sSr 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°9P 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 g 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

  • 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[y4#GY;4!H4nO@A(U5zu`?Kc1 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�Ic1uYI}pS@u`FTE? zQy;>4D`Ty+UJq37@S4yLf6ZgouhqF{0kz>o%p2!RIl84o{r76=d{tjBxHV|8S7+Ev zv+)Y;yORq0wG?+z2^{Pg5xd1gzp}{IW!%{CZlI}hN!qP#4p+7X@+ChAxyJQ>&J|ee zy=%{&z<>bjmi)Xu(Tgc!4(M#6(Yj>yNUpBxeV|Wui-k>heED9*&6?B{F{QhLXyfDK z1@#|v3{}bn`uUYtR0y8v^It+k6Nu^yeBHB)t9onhu3EE32JRPd+OubhoX?P60O$4s zBMAz-ZBkNGWxUZ~lsFt;zHqwENW+M6rS?{u)_C>)0tc7bMKuB$8(oj*Jo@xHFN4gt z9yd}DM}6k4#e=yBUbm`PC1i%tv_}9;?~FTz-uM+4Ki4vx{TEc*4J2qdMK5HmB0D9i zmn{q5mt>`taqP8T$^qTix(g^C3w(%sTReN+x=BiA;HLgvx3We*wt)GYKW^Hn7wlNB zj6}`gb%hsV4|pp|Ik(9zeQt%q*8Ojpe!msV@uj#}ZPxJdT0g(s%_etx(*~k!5@muU zsk%#S6`R&0IN!nA{!w7u*D}-1K47v|%2Rq;SE%5RB z_qtJDmBsaQv$k_Rx5G(Xd1Q|lRbmZiC=;y4b{eGX(RUjP<&y5-zgjRc(chOB71*BU zK}EC8uySY*r=peBdObX-?bK^I7Y@g2?=5r*{p=FuWjRnSuqoAA>Q>NR-r~M#)5W|> z6LxE8+yt{z;+yWOv~PUlTsbsFMX`P5a(;5RKj8X*fc7OwINS^S9wn<%YqXb-`TuVD@z2+jDgo^aE77s_$1?Qp1{Z6!dN%q!RFm1r@06wC zr)`Wcc}x$ec=qh^*^fKdMZRec{BQxFfNZSKR84BaLG~lJyAa&Gq0S#CH~x2to)iya zl�s=ZvzwjKlXo>4t^*h%pDb7 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

  • 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